diff --git a/server/dist/server.js b/server/dist/server.js index 01d5e7e..a27a2d4 100644 --- a/server/dist/server.js +++ b/server/dist/server.js @@ -20,7 +20,7 @@ /******/ /******/ /******/ var hotApplyOnUpdate = true; -/******/ var hotCurrentHash = "ae1021282c37272eafc7"; // eslint-disable-line no-unused-vars +/******/ var hotCurrentHash = "43bdd4d92634f91732ce"; // eslint-disable-line no-unused-vars /******/ var hotRequestTimeout = 10000; /******/ var hotCurrentModuleData = {}; /******/ var hotCurrentChildModule; // eslint-disable-line no-unused-vars @@ -694,6 +694,12 @@ module.exports = require("path"); /* 1 */ /***/ (function(module, exports) { +module.exports = require("stream"); + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self @@ -703,18 +709,18 @@ if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef /***/ }), -/* 2 */ +/* 3 */ /***/ (function(module, exports) { module.exports = require("buffer"); /***/ }), -/* 3 */ +/* 4 */ /***/ (function(module, exports, __webpack_require__) { -var store = __webpack_require__(102)('wks'); +var store = __webpack_require__(103)('wks'); var uid = __webpack_require__(62); -var Symbol = __webpack_require__(1).Symbol; +var Symbol = __webpack_require__(2).Symbol; var USE_SYMBOL = typeof Symbol == 'function'; var $exports = module.exports = function (name) { @@ -726,7 +732,7 @@ $exports.store = store; /***/ }), -/* 4 */ +/* 5 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -741,12 +747,6 @@ if (typeof process !== 'undefined' && process.type === 'renderer') { } -/***/ }), -/* 5 */ -/***/ (function(module, exports) { - -module.exports = require("stream"); - /***/ }), /* 6 */ /***/ (function(module, exports) { @@ -769,8 +769,8 @@ if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef * Module dependencies. */ -var callSiteToString = __webpack_require__(72).callSiteToString -var eventListenerCount = __webpack_require__(72).eventListenerCount +var callSiteToString = __webpack_require__(73).callSiteToString +var eventListenerCount = __webpack_require__(73).eventListenerCount var relative = __webpack_require__(0).relative /** @@ -1302,11 +1302,11 @@ module.exports = function (it) { /* 10 */ /***/ (function(module, exports, __webpack_require__) { -var global = __webpack_require__(1); +var global = __webpack_require__(2); var core = __webpack_require__(6); var ctx = __webpack_require__(13); var hide = __webpack_require__(14); -var has = __webpack_require__(26); +var has = __webpack_require__(27); var PROTOTYPE = 'prototype'; var $export = function (type, name, source) { @@ -1396,16 +1396,16 @@ module.exports = function (it) { * @api private */ -var Buffer = __webpack_require__(92).Buffer -var contentDisposition = __webpack_require__(93); +var Buffer = __webpack_require__(93).Buffer +var contentDisposition = __webpack_require__(94); var contentType = __webpack_require__(33); var deprecate = __webpack_require__(7)('express'); -var flatten = __webpack_require__(40); +var flatten = __webpack_require__(41); var mime = __webpack_require__(52).mime; -var etag = __webpack_require__(94); -var proxyaddr = __webpack_require__(97); +var etag = __webpack_require__(95); +var proxyaddr = __webpack_require__(98); var qs = __webpack_require__(50); -var querystring = __webpack_require__(86); +var querystring = __webpack_require__(88); /** * Return strong ETag for `body`. @@ -1695,7 +1695,7 @@ function newObject() { /***/ (function(module, exports, __webpack_require__) { // optional / simple context binding -var aFunction = __webpack_require__(25); +var aFunction = __webpack_require__(26); module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; @@ -1721,7 +1721,7 @@ module.exports = function (fn, that, length) { /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(15); -var createDesc = __webpack_require__(99); +var createDesc = __webpack_require__(100); module.exports = __webpack_require__(16) ? function (object, key, value) { return dP.f(object, key, createDesc(1, value)); } : function (object, key, value) { @@ -1735,8 +1735,8 @@ module.exports = __webpack_require__(16) ? function (object, key, value) { /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(11); -var IE8_DOM_DEFINE = __webpack_require__(192); -var toPrimitive = __webpack_require__(193); +var IE8_DOM_DEFINE = __webpack_require__(191); +var toPrimitive = __webpack_require__(192); var dP = Object.defineProperty; exports.f = __webpack_require__(16) ? Object.defineProperty : function defineProperty(O, P, Attributes) { @@ -1764,6 +1764,18 @@ module.exports = !__webpack_require__(44)(function () { /***/ }), /* 17 */ +/***/ (function(module, exports) { + +module.exports = require("http"); + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(186), __esModule: true }; + +/***/ }), +/* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1771,19 +1783,102 @@ module.exports = !__webpack_require__(44)(function () { Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(0); -var DATA_PATH = path.join(__dirname, '../data'); -exports.DATA_PATH = DATA_PATH; -var ANALYTICS_PATH = path.join(__dirname, '../../src'); -exports.ANALYTICS_PATH = ANALYTICS_PATH; -var ANOMALIES_PATH = path.join(ANALYTICS_PATH, 'anomalies'); -exports.ANOMALIES_PATH = ANOMALIES_PATH; -var SEGMENTS_PATH = path.join(ANALYTICS_PATH, 'segments'); -exports.SEGMENTS_PATH = SEGMENTS_PATH; -var METRICS_PATH = path.join(ANALYTICS_PATH, 'metrics'); -exports.METRICS_PATH = METRICS_PATH; +var json_1 = __webpack_require__(46); +var config_1 = __webpack_require__(31); +var fs = __webpack_require__(8); +var crypto = __webpack_require__(43); +var anomaliesNameToIdMap = {}; +function loadAnomaliesMap() { + var filename = path.join(config_1.ANOMALIES_PATH, "all_anomalies.json"); + anomaliesNameToIdMap = json_1.getJsonDataSync(filename); +} +function saveAnomaliesMap() { + var filename = path.join(config_1.ANOMALIES_PATH, "all_anomalies.json"); + json_1.writeJsonDataSync(filename, anomaliesNameToIdMap); +} +function getAnomalyIdByName(anomalyName) { + loadAnomaliesMap(); + anomalyName = anomalyName.toLowerCase(); + if (anomalyName in anomaliesNameToIdMap) { + return anomaliesNameToIdMap[anomalyName]; + } + return anomalyName; +} +exports.getAnomalyIdByName = getAnomalyIdByName; +function insertAnomaly(anomaly) { + var hashString = anomaly.name + new Date().toString(); + var anomalyId = crypto.createHash('md5').update(hashString).digest('hex'); + anomaliesNameToIdMap[anomaly.name] = anomalyId; + saveAnomaliesMap(); + // return anomalyId + // const anomalyId:AnomalyId = anomaly.name; + var filename = path.join(config_1.ANOMALIES_PATH, anomalyId + ".json"); + if (fs.existsSync(filename)) { + return null; + } + saveAnomaly(anomalyId, anomaly); + return anomalyId; +} +exports.insertAnomaly = insertAnomaly; +function removeAnomaly(anomalyId) { + var filename = path.join(config_1.ANOMALIES_PATH, anomalyId + ".json"); + fs.unlinkSync(filename); +} +exports.removeAnomaly = removeAnomaly; +function saveAnomaly(anomalyId, anomaly) { + var filename = path.join(config_1.ANOMALIES_PATH, anomalyId + ".json"); + return json_1.writeJsonDataSync(filename, anomaly); +} +exports.saveAnomaly = saveAnomaly; +function loadAnomalyById(anomalyId) { + var filename = path.join(config_1.ANOMALIES_PATH, anomalyId + ".json"); + if (!fs.existsSync(filename)) { + return null; + } + return json_1.getJsonDataSync(filename); +} +exports.loadAnomalyById = loadAnomalyById; +function loadAnomalyByName(anomalyName) { + var anomalyId = getAnomalyIdByName(anomalyName); + return loadAnomalyById(anomalyId); +} +exports.loadAnomalyByName = loadAnomalyByName; +function saveAnomalyTypeInfo(info) { + console.log('Saving'); + var filename = path.join(config_1.ANOMALIES_PATH, info.name + ".json"); + if (info.next_id === undefined) { + info.next_id = 0; + } + if (info.last_prediction_time === undefined) { + info.last_prediction_time = 0; + } + return json_1.writeJsonDataSync(filename, info); +} +exports.saveAnomalyTypeInfo = saveAnomalyTypeInfo; +function getAnomalyTypeInfo(name) { + return json_1.getJsonDataSync(path.join(config_1.ANOMALIES_PATH, name + ".json")); +} +exports.getAnomalyTypeInfo = getAnomalyTypeInfo; +function setAnomalyStatus(anomalyId, status, error) { + var info = loadAnomalyById(anomalyId); + info.status = status; + if (error !== undefined) { + info.error = error; + } else { + info.error = ''; + } + saveAnomaly(anomalyId, info); +} +exports.setAnomalyStatus = setAnomalyStatus; +function setAnomalyPredictionTime(anomalyId, lastPredictionTime) { + var info = loadAnomalyById(anomalyId); + info.last_prediction_time = lastPredictionTime; + saveAnomaly(anomalyId, info); +} +exports.setAnomalyPredictionTime = setAnomalyPredictionTime; /***/ }), -/* 18 */ +/* 20 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1949,7 +2044,7 @@ function parse(val) { /***/ }), -/* 19 */ +/* 21 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2069,7 +2164,7 @@ function status (code) { /***/ }), -/* 20 */ +/* 22 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2087,8 +2182,8 @@ function status (code) { * @private */ -var typer = __webpack_require__(153) -var mime = __webpack_require__(83) +var typer = __webpack_require__(152) +var mime = __webpack_require__(85) /** * Module exports. @@ -2338,7 +2433,7 @@ function tryNormalizeType (value) { /***/ }), -/* 21 */ +/* 23 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2356,7 +2451,7 @@ function tryNormalizeType (value) { * @private */ -var url = __webpack_require__(87) +var url = __webpack_require__(40) var parse = url.parse var Url = url.Url @@ -2499,26 +2594,20 @@ function fresh (url, parsedUrl) { /***/ }), -/* 22 */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { "default": __webpack_require__(187), __esModule: true }; - -/***/ }), -/* 23 */ +/* 24 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(188); +module.exports = __webpack_require__(187); /***/ }), -/* 24 */ +/* 25 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = { "default": __webpack_require__(190), __esModule: true }; +module.exports = { "default": __webpack_require__(189), __esModule: true }; /***/ }), -/* 25 */ +/* 26 */ /***/ (function(module, exports) { module.exports = function (it) { @@ -2528,7 +2617,7 @@ module.exports = function (it) { /***/ }), -/* 26 */ +/* 27 */ /***/ (function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; @@ -2538,14 +2627,14 @@ module.exports = function (it, key) { /***/ }), -/* 27 */ +/* 28 */ /***/ (function(module, exports) { module.exports = {}; /***/ }), -/* 28 */ +/* 29 */ /***/ (function(module, exports) { var toString = {}.toString; @@ -2556,15 +2645,15 @@ module.exports = function (it) { /***/ }), -/* 29 */ +/* 30 */ /***/ (function(module, exports, __webpack_require__) { var ctx = __webpack_require__(13); -var call = __webpack_require__(205); -var isArrayIter = __webpack_require__(206); +var call = __webpack_require__(204); +var isArrayIter = __webpack_require__(205); var anObject = __webpack_require__(11); var toLength = __webpack_require__(60); -var getIterFn = __webpack_require__(107); +var getIterFn = __webpack_require__(108); var BREAK = {}; var RETURN = {}; var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { @@ -2587,7 +2676,7 @@ exports.RETURN = RETURN; /***/ }), -/* 30 */ +/* 31 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2595,214 +2684,16 @@ exports.RETURN = RETURN; Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(0); -var json_1 = __webpack_require__(31); -var config_1 = __webpack_require__(17); -var fs = __webpack_require__(8); -var crypto = __webpack_require__(43); -var anomaliesNameToIdMap = {}; -function loadAnomaliesMap() { - var filename = path.join(config_1.ANOMALIES_PATH, "all_anomalies.json"); - anomaliesNameToIdMap = json_1.getJsonDataSync(filename); -} -function saveAnomaliesMap() { - var filename = path.join(config_1.ANOMALIES_PATH, "all_anomalies.json"); - json_1.writeJsonDataSync(filename, anomaliesNameToIdMap); -} -function getAnomalyIdByName(anomalyName) { - loadAnomaliesMap(); - anomalyName = anomalyName.toLowerCase(); - if (anomalyName in anomaliesNameToIdMap) { - return anomaliesNameToIdMap[anomalyName]; - } - return anomalyName; -} -exports.getAnomalyIdByName = getAnomalyIdByName; -function insertAnomaly(anomaly) { - var hashString = anomaly.name + new Date().toString(); - var anomalyId = crypto.createHash('md5').update(hashString).digest('hex'); - anomaliesNameToIdMap[anomaly.name] = anomalyId; - saveAnomaliesMap(); - // return anomalyId - // const anomalyId:AnomalyId = anomaly.name; - var filename = path.join(config_1.ANOMALIES_PATH, anomalyId + ".json"); - if (fs.existsSync(filename)) { - return null; - } - saveAnomaly(anomalyId, anomaly); - return anomalyId; -} -exports.insertAnomaly = insertAnomaly; -function removeAnomaly(anomalyId) { - var filename = path.join(config_1.ANOMALIES_PATH, anomalyId + ".json"); - fs.unlinkSync(filename); -} -exports.removeAnomaly = removeAnomaly; -function saveAnomaly(anomalyId, anomaly) { - var filename = path.join(config_1.ANOMALIES_PATH, anomalyId + ".json"); - return json_1.writeJsonDataSync(filename, anomaly); -} -exports.saveAnomaly = saveAnomaly; -function loadAnomalyById(anomalyId) { - var filename = path.join(config_1.ANOMALIES_PATH, anomalyId + ".json"); - if (!fs.existsSync(filename)) { - return null; - } - return json_1.getJsonDataSync(filename); -} -exports.loadAnomalyById = loadAnomalyById; -function loadAnomalyByName(anomalyName) { - var anomalyId = getAnomalyIdByName(anomalyName); - return loadAnomalyById(anomalyId); -} -exports.loadAnomalyByName = loadAnomalyByName; -function saveAnomalyTypeInfo(info) { - console.log('Saving'); - var filename = path.join(config_1.ANOMALIES_PATH, info.name + ".json"); - if (info.next_id === undefined) { - info.next_id = 0; - } - if (info.last_prediction_time === undefined) { - info.last_prediction_time = 0; - } - return json_1.writeJsonDataSync(filename, info); -} -exports.saveAnomalyTypeInfo = saveAnomalyTypeInfo; -function getAnomalyTypeInfo(name) { - return json_1.getJsonDataSync(path.join(config_1.ANOMALIES_PATH, name + ".json")); -} -exports.getAnomalyTypeInfo = getAnomalyTypeInfo; -function setAnomalyStatus(anomalyId, status, error) { - var info = loadAnomalyById(anomalyId); - info.status = status; - if (error !== undefined) { - info.error = error; - } else { - info.error = ''; - } - saveAnomaly(anomalyId, info); -} -exports.setAnomalyStatus = setAnomalyStatus; -function setAnomalyPredictionTime(anomalyId, lastPredictionTime) { - var info = loadAnomalyById(anomalyId); - info.last_prediction_time = lastPredictionTime; - saveAnomaly(anomalyId, info); -} -exports.setAnomalyPredictionTime = setAnomalyPredictionTime; - -/***/ }), -/* 31 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _stringify = __webpack_require__(22); - -var _stringify2 = _interopRequireDefault(_stringify); - -var _regenerator = __webpack_require__(23); - -var _regenerator2 = _interopRequireDefault(_regenerator); - -var _promise = __webpack_require__(24); - -var _promise2 = _interopRequireDefault(_promise); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { - return new (P || (P = _promise2.default))(function (resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : new P(function (resolve) { - resolve(result.value); - }).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var fs = __webpack_require__(8); -function getJsonData(filename) { - return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee() { - var data; - return _regenerator2.default.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return new _promise2.default(function (resolve, reject) { - fs.readFile(filename, 'utf8', function (err, data) { - if (err) { - console.error(err); - reject('Can`t read file'); - } else { - resolve(data); - } - }); - }); - - case 2: - data = _context.sent; - _context.prev = 3; - return _context.abrupt("return", JSON.parse(data)); - - case 7: - _context.prev = 7; - _context.t0 = _context["catch"](3); - - console.error(_context.t0); - throw new Error('Wrong file format'); - - case 11: - case "end": - return _context.stop(); - } - } - }, _callee, this, [[3, 7]]); - })); -} -exports.getJsonData = getJsonData; -function writeJsonData(filename, data) { - return new _promise2.default(function (resolve, reject) { - fs.writeFile(filename, (0, _stringify2.default)(data), 'utf8', function (err) { - if (err) { - console.error(err); - reject('Cat`t write file'); - } else { - resolve(); - } - }); - }); -} -exports.writeJsonData = writeJsonData; -function getJsonDataSync(filename) { - var data = fs.readFileSync(filename, 'utf8'); - try { - return JSON.parse(data); - } catch (e) { - console.error(e); - throw new Error('Wrong file format'); - } -} -exports.getJsonDataSync = getJsonDataSync; -function writeJsonDataSync(filename, data) { - fs.writeFileSync(filename, (0, _stringify2.default)(data)); -} -exports.writeJsonDataSync = writeJsonDataSync; +var DATA_PATH = path.join(__dirname, '../data'); +exports.DATA_PATH = DATA_PATH; +var ANALYTICS_PATH = path.join(__dirname, '../../src'); +exports.ANALYTICS_PATH = ANALYTICS_PATH; +var ANOMALIES_PATH = path.join(ANALYTICS_PATH, 'anomalies'); +exports.ANOMALIES_PATH = ANOMALIES_PATH; +var SEGMENTS_PATH = path.join(ANALYTICS_PATH, 'segments'); +exports.SEGMENTS_PATH = SEGMENTS_PATH; +var METRICS_PATH = path.join(ANALYTICS_PATH, 'metrics'); +exports.METRICS_PATH = METRICS_PATH; /***/ }), /* 32 */ @@ -3072,8 +2963,8 @@ function ContentType (type) { var deprecate = __webpack_require__(7)('http-errors') var setPrototypeOf = __webpack_require__(35) -var statuses = __webpack_require__(19) -var inherits = __webpack_require__(73) +var statuses = __webpack_require__(21) +var inherits = __webpack_require__(74) /** * Module exports. @@ -3359,9 +3250,9 @@ function mixinProperties(obj, proto) { var createError = __webpack_require__(34) var getBody = __webpack_require__(128) -var iconv = __webpack_require__(78) +var iconv = __webpack_require__(79) var onFinished = __webpack_require__(37) -var zlib = __webpack_require__(152) +var zlib = __webpack_require__(84) /** * Module exports. @@ -3884,6 +3775,12 @@ function escapeHtml(string) { /***/ }), /* 40 */ +/***/ (function(module, exports) { + +module.exports = require("url"); + +/***/ }), +/* 41 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -3953,12 +3850,6 @@ function arrayFlatten (array, depth) { } -/***/ }), -/* 41 */ -/***/ (function(module, exports) { - -module.exports = require("http"); - /***/ }), /* 42 */ /***/ (function(module, exports) { @@ -4012,8 +3903,8 @@ module.exports = function (exec) { /***/ (function(module, exports, __webpack_require__) { var def = __webpack_require__(15).f; -var has = __webpack_require__(26); -var TAG = __webpack_require__(3)('toStringTag'); +var has = __webpack_require__(27); +var TAG = __webpack_require__(4)('toStringTag'); module.exports = function (it, tag, stat) { if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); @@ -4024,7 +3915,116 @@ module.exports = function (it, tag, stat) { /* 46 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = { "default": __webpack_require__(214), __esModule: true }; +"use strict"; + + +var _stringify = __webpack_require__(18); + +var _stringify2 = _interopRequireDefault(_stringify); + +var _regenerator = __webpack_require__(24); + +var _regenerator2 = _interopRequireDefault(_regenerator); + +var _promise = __webpack_require__(25); + +var _promise2 = _interopRequireDefault(_promise); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) { + return new (P || (P = _promise2.default))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : new P(function (resolve) { + resolve(result.value); + }).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var fs = __webpack_require__(8); +function getJsonData(filename) { + return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee() { + var data; + return _regenerator2.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return new _promise2.default(function (resolve, reject) { + fs.readFile(filename, 'utf8', function (err, data) { + if (err) { + console.error(err); + reject('Can`t read file'); + } else { + resolve(data); + } + }); + }); + + case 2: + data = _context.sent; + _context.prev = 3; + return _context.abrupt("return", JSON.parse(data)); + + case 7: + _context.prev = 7; + _context.t0 = _context["catch"](3); + + console.error(_context.t0); + throw new Error('Wrong file format'); + + case 11: + case "end": + return _context.stop(); + } + } + }, _callee, this, [[3, 7]]); + })); +} +exports.getJsonData = getJsonData; +function writeJsonData(filename, data) { + return new _promise2.default(function (resolve, reject) { + fs.writeFile(filename, (0, _stringify2.default)(data), 'utf8', function (err) { + if (err) { + console.error(err); + reject('Cat`t write file'); + } else { + resolve(); + } + }); + }); +} +exports.writeJsonData = writeJsonData; +function getJsonDataSync(filename) { + var data = fs.readFileSync(filename, 'utf8'); + try { + return JSON.parse(data); + } catch (e) { + console.error(e); + throw new Error('Wrong file format'); + } +} +exports.getJsonDataSync = getJsonDataSync; +function writeJsonDataSync(filename, data) { + fs.writeFileSync(filename, (0, _stringify2.default)(data)); +} +exports.writeJsonDataSync = writeJsonDataSync; /***/ }), /* 47 */ @@ -4051,9 +4051,9 @@ module.exports = [["0","\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠 "use strict"; -var stringify = __webpack_require__(159); -var parse = __webpack_require__(160); -var formats = __webpack_require__(85); +var stringify = __webpack_require__(158); +var parse = __webpack_require__(159); +var formats = __webpack_require__(87); module.exports = { formats: formats, @@ -4081,7 +4081,7 @@ module.exports = { * @private */ -var http = __webpack_require__(41); +var http = __webpack_require__(17); /** * Module exports. @@ -4158,21 +4158,21 @@ function getBasicNodeMethods() { */ var createError = __webpack_require__(34) -var debug = __webpack_require__(4)('send') +var debug = __webpack_require__(5)('send') var deprecate = __webpack_require__(7)('send') -var destroy = __webpack_require__(168) +var destroy = __webpack_require__(167) var encodeUrl = __webpack_require__(38) var escapeHtml = __webpack_require__(39) -var etag = __webpack_require__(94) -var fresh = __webpack_require__(95) +var etag = __webpack_require__(95) +var fresh = __webpack_require__(96) var fs = __webpack_require__(8) -var mime = __webpack_require__(169) -var ms = __webpack_require__(75) +var mime = __webpack_require__(168) +var ms = __webpack_require__(76) var onFinished = __webpack_require__(37) -var parseRange = __webpack_require__(96) +var parseRange = __webpack_require__(97) var path = __webpack_require__(0) -var statuses = __webpack_require__(19) -var Stream = __webpack_require__(5) +var statuses = __webpack_require__(21) +var Stream = __webpack_require__(1) var util = __webpack_require__(48) /** @@ -5281,7 +5281,7 @@ function setHeaders (res, headers) { "use strict"; -var $at = __webpack_require__(191)(true); +var $at = __webpack_require__(190)(true); // 21.1.3.27 String.prototype[@@iterator]() __webpack_require__(56)(String, 'String', function (iterated) { @@ -5330,13 +5330,13 @@ module.exports = function (it) { var LIBRARY = __webpack_require__(57); var $export = __webpack_require__(10); -var redefine = __webpack_require__(194); +var redefine = __webpack_require__(193); var hide = __webpack_require__(14); -var Iterators = __webpack_require__(27); -var $iterCreate = __webpack_require__(195); +var Iterators = __webpack_require__(28); +var $iterCreate = __webpack_require__(194); var setToStringTag = __webpack_require__(45); -var getPrototypeOf = __webpack_require__(201); -var ITERATOR = __webpack_require__(3)('iterator'); +var getPrototypeOf = __webpack_require__(200); +var ITERATOR = __webpack_require__(4)('iterator'); var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` var FF_ITERATOR = '@@iterator'; var KEYS = 'keys'; @@ -5410,7 +5410,7 @@ module.exports = true; /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(9); -var document = __webpack_require__(1).document; +var document = __webpack_require__(2).document; // typeof document.createElement is 'object' in old IE var is = isObject(document) && isObject(document.createElement); module.exports = function (it) { @@ -5423,7 +5423,7 @@ module.exports = function (it) { /***/ (function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject = __webpack_require__(101); +var IObject = __webpack_require__(102); var defined = __webpack_require__(55); module.exports = function (it) { return IObject(defined(it)); @@ -5446,7 +5446,7 @@ module.exports = function (it) { /* 61 */ /***/ (function(module, exports, __webpack_require__) { -var shared = __webpack_require__(102)('keys'); +var shared = __webpack_require__(103)('keys'); var uid = __webpack_require__(62); module.exports = function (key) { return shared[key] || (shared[key] = uid(key)); @@ -5468,11 +5468,11 @@ module.exports = function (key) { /* 63 */ /***/ (function(module, exports, __webpack_require__) { -__webpack_require__(202); -var global = __webpack_require__(1); +__webpack_require__(201); +var global = __webpack_require__(2); var hide = __webpack_require__(14); -var Iterators = __webpack_require__(27); -var TO_STRING_TAG = __webpack_require__(3)('toStringTag'); +var Iterators = __webpack_require__(28); +var TO_STRING_TAG = __webpack_require__(4)('toStringTag'); var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + @@ -5494,8 +5494,8 @@ for (var i = 0; i < DOMIterables.length; i++) { /***/ (function(module, exports, __webpack_require__) { // getting tag from 19.1.3.6 Object.prototype.toString() -var cof = __webpack_require__(28); -var TAG = __webpack_require__(3)('toStringTag'); +var cof = __webpack_require__(29); +var TAG = __webpack_require__(4)('toStringTag'); // ES3 wrong here var ARG = cof(function () { return arguments; }()) == 'Arguments'; @@ -5536,7 +5536,7 @@ module.exports = function (it, Constructor, name, forbiddenField) { "use strict"; // 25.4.1.5 NewPromiseCapability(C) -var aFunction = __webpack_require__(25); +var aFunction = __webpack_require__(26); function PromiseCapability(C) { var resolve, reject; @@ -5574,15 +5574,15 @@ module.exports = function (target, src, safe) { "use strict"; -var _regenerator = __webpack_require__(23); +var _regenerator = __webpack_require__(24); var _regenerator2 = _interopRequireDefault(_regenerator); -var _stringify = __webpack_require__(22); +var _stringify = __webpack_require__(18); var _stringify2 = _interopRequireDefault(_stringify); -var _promise = __webpack_require__(24); +var _promise = __webpack_require__(25); var _promise2 = _interopRequireDefault(_promise); @@ -5613,12 +5613,12 @@ var __awaiter = undefined && undefined.__awaiter || function (thisArg, _argument }); }; Object.defineProperty(exports, "__esModule", { value: true }); -var child_process_1 = __webpack_require__(213); -var config_1 = __webpack_require__(17); -var anomalyType_1 = __webpack_require__(30); -var metrics_1 = __webpack_require__(113); -var segments_1 = __webpack_require__(69); -var event_stream_1 = __webpack_require__(216); +var child_process_1 = __webpack_require__(212); +var config_1 = __webpack_require__(31); +var anomalyType_1 = __webpack_require__(19); +var metrics_1 = __webpack_require__(114); +var segments_1 = __webpack_require__(70); +var event_stream_1 = __webpack_require__(215); var learnWorker = child_process_1.spawn('python3', ['worker.py'], { cwd: config_1.ANALYTICS_PATH }); learnWorker.stdout.pipe(event_stream_1.split()).pipe(event_stream_1.mapSync(function (line) { onMessage(line); @@ -5788,10 +5788,16 @@ exports.runPredict = runPredict; /* 69 */ /***/ (function(module, exports, __webpack_require__) { +module.exports = { "default": __webpack_require__(213), __esModule: true }; + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + "use strict"; -var _getIterator2 = __webpack_require__(46); +var _getIterator2 = __webpack_require__(69); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -5799,9 +5805,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(0); -var json_1 = __webpack_require__(31); -var config_1 = __webpack_require__(17); -var anomalyType_1 = __webpack_require__(30); +var json_1 = __webpack_require__(46); +var config_1 = __webpack_require__(31); +var anomalyType_1 = __webpack_require__(19); function getLabeledSegments(anomalyId) { var filename = path.join(config_1.SEGMENTS_PATH, anomalyId + "_labeled.json"); var segments = []; @@ -5940,10 +5946,10 @@ function removeSegments(anomalyId, removedSegments) { exports.removeSegments = removeSegments; /***/ }), -/* 70 */ +/* 71 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(5) +var Stream = __webpack_require__(1) // through // @@ -6054,7 +6060,7 @@ function through (write, end, opts) { /***/ }), -/* 71 */ +/* 72 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6202,13 +6208,13 @@ function loadParser (parserName) { parser = __webpack_require__(122) break case 'raw': - parser = __webpack_require__(156) + parser = __webpack_require__(155) break case 'text': - parser = __webpack_require__(157) + parser = __webpack_require__(156) break case 'urlencoded': - parser = __webpack_require__(158) + parser = __webpack_require__(157) break } @@ -6218,7 +6224,7 @@ function loadParser (parserName) { /***/ }), -/* 72 */ +/* 73 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6304,7 +6310,7 @@ function toString (obj) { /***/ }), -/* 73 */ +/* 74 */ /***/ (function(module, exports, __webpack_require__) { try { @@ -6317,7 +6323,7 @@ try { /***/ }), -/* 74 */ +/* 75 */ /***/ (function(module, exports, __webpack_require__) { @@ -6333,7 +6339,7 @@ exports.coerce = coerce; exports.disable = disable; exports.enable = enable; exports.enabled = enabled; -exports.humanize = __webpack_require__(75); +exports.humanize = __webpack_require__(76); /** * The currently active debug mode names, and names to skip. @@ -6525,7 +6531,7 @@ function coerce(val) { /***/ }), -/* 75 */ +/* 76 */ /***/ (function(module, exports) { /** @@ -6683,13 +6689,13 @@ function plural(ms, n, name) { /***/ }), -/* 76 */ +/* 77 */ /***/ (function(module, exports) { module.exports = require("net"); /***/ }), -/* 77 */ +/* 78 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6775,7 +6781,7 @@ function toString (obj) { /***/ }), -/* 78 */ +/* 79 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6783,7 +6789,7 @@ function toString (obj) { // Some environments don't have global Buffer (e.g. React Native). // Solution would be installing npm modules "buffer" and "stream" explicitly. -var Buffer = __webpack_require__(2).Buffer; +var Buffer = __webpack_require__(3).Buffer; var bomHandling = __webpack_require__(134), iconv = module.exports; @@ -6930,25 +6936,25 @@ if (false) { /***/ }), -/* 79 */ +/* 80 */ /***/ (function(module, exports) { module.exports = require("string_decoder"); /***/ }), -/* 80 */ +/* 81 */ /***/ (function(module, exports) { module.exports = [["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]] /***/ }), -/* 81 */ +/* 82 */ /***/ (function(module, exports) { module.exports = [["0","\u0000",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]] /***/ }), -/* 82 */ +/* 83 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7024,7 +7030,13 @@ function unpipe(stream) { /***/ }), -/* 83 */ +/* 84 */ +/***/ (function(module, exports) { + +module.exports = require("zlib"); + +/***/ }), +/* 85 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7042,7 +7054,7 @@ function unpipe(stream) { * @private */ -var db = __webpack_require__(154) +var db = __webpack_require__(153) var extname = __webpack_require__(0).extname /** @@ -7219,7 +7231,7 @@ function populateMaps (extensions, types) { /***/ }), -/* 84 */ +/* 86 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7428,7 +7440,7 @@ exports.isBuffer = function isBuffer(obj) { /***/ }), -/* 85 */ +/* 87 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7453,19 +7465,13 @@ module.exports = { /***/ }), -/* 86 */ +/* 88 */ /***/ (function(module, exports) { module.exports = require("querystring"); /***/ }), -/* 87 */ -/***/ (function(module, exports) { - -module.exports = require("url"); - -/***/ }), -/* 88 */ +/* 89 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7484,14 +7490,14 @@ module.exports = require("url"); * @private */ -var Route = __webpack_require__(89); -var Layer = __webpack_require__(90); +var Route = __webpack_require__(90); +var Layer = __webpack_require__(91); var methods = __webpack_require__(51); var mixin = __webpack_require__(42); -var debug = __webpack_require__(4)('express:router'); +var debug = __webpack_require__(5)('express:router'); var deprecate = __webpack_require__(7)('express'); -var flatten = __webpack_require__(40); -var parseUrl = __webpack_require__(21); +var flatten = __webpack_require__(41); +var parseUrl = __webpack_require__(23); var setPrototypeOf = __webpack_require__(35) /** @@ -8134,7 +8140,7 @@ function wrap(old, fn) { /***/ }), -/* 89 */ +/* 90 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8153,9 +8159,9 @@ function wrap(old, fn) { * @private */ -var debug = __webpack_require__(4)('express:router:route'); -var flatten = __webpack_require__(40); -var Layer = __webpack_require__(90); +var debug = __webpack_require__(5)('express:router:route'); +var flatten = __webpack_require__(41); +var Layer = __webpack_require__(91); var methods = __webpack_require__(51); /** @@ -8357,7 +8363,7 @@ methods.forEach(function(method){ /***/ }), -/* 90 */ +/* 91 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8376,8 +8382,8 @@ methods.forEach(function(method){ * @private */ -var pathRegexp = __webpack_require__(164); -var debug = __webpack_require__(4)('express:router:layer'); +var pathRegexp = __webpack_require__(163); +var debug = __webpack_require__(5)('express:router:layer'); /** * Module variables. @@ -8545,7 +8551,7 @@ function decode_param(val) { /***/ }), -/* 91 */ +/* 92 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8564,7 +8570,7 @@ function decode_param(val) { */ var merge = __webpack_require__(42) -var parseUrl = __webpack_require__(21); +var parseUrl = __webpack_require__(23); var qs = __webpack_require__(50); /** @@ -8599,11 +8605,11 @@ module.exports = function query(options) { /***/ }), -/* 92 */ +/* 93 */ /***/ (function(module, exports, __webpack_require__) { /* eslint-disable node/no-deprecated-api */ -var buffer = __webpack_require__(2) +var buffer = __webpack_require__(3) var Buffer = buffer.Buffer // alternative to using Object.keys for old browsers @@ -8667,7 +8673,7 @@ SafeBuffer.allocUnsafeSlow = function (size) { /***/ }), -/* 93 */ +/* 94 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9119,7 +9125,7 @@ function ContentDisposition (type, parameters) { /***/ }), -/* 94 */ +/* 95 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9257,7 +9263,7 @@ function stattag (stat) { /***/ }), -/* 95 */ +/* 96 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9401,7 +9407,7 @@ function parseTokenList (str) { /***/ }), -/* 96 */ +/* 97 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9566,7 +9572,7 @@ function sortByRangeStart (a, b) { /***/ }), -/* 97 */ +/* 98 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9592,8 +9598,8 @@ module.exports.compile = compile * @private */ -var forwarded = __webpack_require__(171) -var ipaddr = __webpack_require__(172) +var forwarded = __webpack_require__(170) +var ipaddr = __webpack_require__(171) /** * Variables. @@ -9900,13 +9906,13 @@ function trustSingle (subnet) { /***/ }), -/* 98 */ +/* 99 */ /***/ (function(module, exports) { /***/ }), -/* 99 */ +/* 100 */ /***/ (function(module, exports) { module.exports = function (bitmap, value) { @@ -9920,13 +9926,13 @@ module.exports = function (bitmap, value) { /***/ }), -/* 100 */ +/* 101 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) var anObject = __webpack_require__(11); -var dPs = __webpack_require__(196); -var enumBugKeys = __webpack_require__(103); +var dPs = __webpack_require__(195); +var enumBugKeys = __webpack_require__(104); var IE_PROTO = __webpack_require__(61)('IE_PROTO'); var Empty = function () { /* empty */ }; var PROTOTYPE = 'prototype'; @@ -9940,7 +9946,7 @@ var createDict = function () { var gt = '>'; var iframeDocument; iframe.style.display = 'none'; - __webpack_require__(104).appendChild(iframe); + __webpack_require__(105).appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); @@ -9967,11 +9973,11 @@ module.exports = Object.create || function create(O, Properties) { /***/ }), -/* 101 */ +/* 102 */ /***/ (function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = __webpack_require__(28); +var cof = __webpack_require__(29); // eslint-disable-next-line no-prototype-builtins module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return cof(it) == 'String' ? it.split('') : Object(it); @@ -9979,11 +9985,11 @@ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { /***/ }), -/* 102 */ +/* 103 */ /***/ (function(module, exports, __webpack_require__) { var core = __webpack_require__(6); -var global = __webpack_require__(1); +var global = __webpack_require__(2); var SHARED = '__core-js_shared__'; var store = global[SHARED] || (global[SHARED] = {}); @@ -9997,7 +10003,7 @@ var store = global[SHARED] || (global[SHARED] = {}); /***/ }), -/* 103 */ +/* 104 */ /***/ (function(module, exports) { // IE 8- don't enum bug keys @@ -10007,15 +10013,15 @@ module.exports = ( /***/ }), -/* 104 */ +/* 105 */ /***/ (function(module, exports, __webpack_require__) { -var document = __webpack_require__(1).document; +var document = __webpack_require__(2).document; module.exports = document && document.documentElement; /***/ }), -/* 105 */ +/* 106 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) @@ -10026,7 +10032,7 @@ module.exports = function (it) { /***/ }), -/* 106 */ +/* 107 */ /***/ (function(module, exports) { module.exports = function (done, value) { @@ -10035,12 +10041,12 @@ module.exports = function (done, value) { /***/ }), -/* 107 */ +/* 108 */ /***/ (function(module, exports, __webpack_require__) { var classof = __webpack_require__(64); -var ITERATOR = __webpack_require__(3)('iterator'); -var Iterators = __webpack_require__(27); +var ITERATOR = __webpack_require__(4)('iterator'); +var Iterators = __webpack_require__(28); module.exports = __webpack_require__(6).getIteratorMethod = function (it) { if (it != undefined) return it[ITERATOR] || it['@@iterator'] @@ -10049,13 +10055,13 @@ module.exports = __webpack_require__(6).getIteratorMethod = function (it) { /***/ }), -/* 108 */ +/* 109 */ /***/ (function(module, exports, __webpack_require__) { // 7.3.20 SpeciesConstructor(O, defaultConstructor) var anObject = __webpack_require__(11); -var aFunction = __webpack_require__(25); -var SPECIES = __webpack_require__(3)('species'); +var aFunction = __webpack_require__(26); +var SPECIES = __webpack_require__(4)('species'); module.exports = function (O, D) { var C = anObject(O).constructor; var S; @@ -10064,14 +10070,14 @@ module.exports = function (O, D) { /***/ }), -/* 109 */ +/* 110 */ /***/ (function(module, exports, __webpack_require__) { var ctx = __webpack_require__(13); -var invoke = __webpack_require__(207); -var html = __webpack_require__(104); +var invoke = __webpack_require__(206); +var html = __webpack_require__(105); var cel = __webpack_require__(58); -var global = __webpack_require__(1); +var global = __webpack_require__(2); var process = global.process; var setTask = global.setImmediate; var clearTask = global.clearImmediate; @@ -10110,7 +10116,7 @@ if (!setTask || !clearTask) { delete queue[id]; }; // Node.js 0.8- - if (__webpack_require__(28)(process) == 'process') { + if (__webpack_require__(29)(process) == 'process') { defer = function (id) { process.nextTick(ctx(run, id, 1)); }; @@ -10154,7 +10160,7 @@ module.exports = { /***/ }), -/* 110 */ +/* 111 */ /***/ (function(module, exports) { module.exports = function (exec) { @@ -10167,7 +10173,7 @@ module.exports = function (exec) { /***/ }), -/* 111 */ +/* 112 */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(11); @@ -10185,16 +10191,16 @@ module.exports = function (C, x) { /***/ }), -/* 112 */ +/* 113 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var global = __webpack_require__(1); +var global = __webpack_require__(2); var core = __webpack_require__(6); var dP = __webpack_require__(15); var DESCRIPTORS = __webpack_require__(16); -var SPECIES = __webpack_require__(3)('species'); +var SPECIES = __webpack_require__(4)('species'); module.exports = function (KEY) { var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY]; @@ -10206,17 +10212,17 @@ module.exports = function (KEY) { /***/ }), -/* 113 */ +/* 114 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var _stringify = __webpack_require__(22); +var _stringify = __webpack_require__(18); var _stringify2 = _interopRequireDefault(_stringify); -var _getIterator2 = __webpack_require__(46); +var _getIterator2 = __webpack_require__(69); var _getIterator3 = _interopRequireDefault(_getIterator2); @@ -10224,8 +10230,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de Object.defineProperty(exports, "__esModule", { value: true }); var path = __webpack_require__(0); -var json_1 = __webpack_require__(31); -var config_1 = __webpack_require__(17); +var json_1 = __webpack_require__(46); +var config_1 = __webpack_require__(31); var crypto = __webpack_require__(43); function saveTargets(targets) { var metrics = []; @@ -10271,10 +10277,10 @@ function getTarget(targetId) { exports.getTarget = getTarget; /***/ }), -/* 114 */ +/* 115 */ /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__(5) +var Stream = __webpack_require__(1) var writeMethods = ["write", "end", "destroy"] var readMethods = ["resume", "pause"] var readEvents = ["data", "close"] @@ -10364,12 +10370,12 @@ function duplex(writer, reader) { /***/ }), -/* 115 */ +/* 116 */ /***/ (function(module, exports, __webpack_require__) { var META = __webpack_require__(62)('meta'); var isObject = __webpack_require__(9); -var has = __webpack_require__(26); +var has = __webpack_require__(27); var setDesc = __webpack_require__(15).f; var id = 0; var isExtensible = Object.isExtensible || function () { @@ -10423,7 +10429,7 @@ var meta = module.exports = { /***/ }), -/* 116 */ +/* 117 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(9); @@ -10433,204 +10439,6 @@ module.exports = function (it, TYPE) { }; -/***/ }), -/* 117 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _getIterator2 = __webpack_require__(46); - -var _getIterator3 = _interopRequireDefault(_getIterator2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -Object.defineProperty(exports, "__esModule", { value: true }); -//import * as Telegraf from 'telegraf' -var path = __webpack_require__(0); -var config_1 = __webpack_require__(17); -var json_1 = __webpack_require__(31); -function sendNotification(anomalyName, active) { - console.log('Notification ' + anomalyName); - if (anomalyName in botConfig.subscriptions) { - var notificationMessage = void 0; - if (active) { - notificationMessage = 'Alert! Anomaly type ' + anomalyName; - } else { - notificationMessage = 'Ok! Anomaly type ' + anomalyName; - } - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = (0, _getIterator3.default)(botConfig.subscriptions[anomalyName]), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var SubscriberId = _step.value; - - bot.telegram.sendMessage(SubscriberId, notificationMessage); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - } -} -exports.sendNotification = sendNotification; -function loadBotConfig() { - var filename = path.join(config_1.DATA_PATH, "bot_config.json"); - var jsonData = void 0; - try { - jsonData = json_1.getJsonDataSync(filename); - } catch (e) { - console.error(e.message); - jsonData = []; - } - return jsonData; -} -function saveBotConfig(botConfig) { - var filename = path.join(config_1.DATA_PATH, "bot_config.json"); - try { - json_1.writeJsonDataSync(filename, botConfig); - } catch (e) { - console.error(e.message); - } -} -var commandArgs = function commandArgs(ctx, next) { - try { - if (ctx.updateType === 'message') { - var text = ctx.update.message.text; - if (text !== undefined && text.startsWith('/')) { - var match = text.match(/^\/([^\s]+)\s?(.+)?/); - var args = []; - var command = void 0; - if (match !== null) { - if (match[1]) { - command = match[1]; - } - if (match[2]) { - args = match[2].split(' '); - } - } - ctx.state.command = { - raw: text, - command: command, - args: args - }; - } - } - return next(ctx); - } catch (e) {} -}; -function addNotification(ctx) { - console.log('addNotification'); - var command = ctx.state.command; - var chatId = ctx.chat.id; - if (command.args.length > 0) { - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = (0, _getIterator3.default)(command.args), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var anomalyName = _step2.value; - - if (!(anomalyName in botConfig.subscriptions)) { - botConfig.subscriptions[anomalyName] = []; - } - if (botConfig.subscriptions[anomalyName].includes(chatId)) { - return ctx.reply('You are already subscribed on alerts from anomaly ' + command.args); - } else { - botConfig.subscriptions[anomalyName].push(chatId); - saveBotConfig(botConfig); - } - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - return ctx.reply('You have been successfully subscribed on alerts from anomaly ' + command.args); - } else { - return ctx.reply('You should use syntax: \/addNotification '); - } -} -function removeNotification(ctx) { - var command = ctx.state.command; - var chatId = ctx.chat.id; - if (command.args.length > 0) { - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = (0, _getIterator3.default)(command.args), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var anomalyName = _step3.value; - - if (anomalyName in botConfig.subscriptions) { - botConfig.subscriptions[anomalyName] = botConfig.subscriptions[anomalyName].filter(function (el) { - return el !== chatId; - }); - saveBotConfig(botConfig); - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3.return) { - _iterator3.return(); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - return ctx.reply('You have been successfully unsubscribed from alerts from ' + command.args); - } else { - return ctx.reply('You should use syntax: \/removeNotification '); - } -} -// const Telegraf = require('telegraf'); -var botConfig = void 0; -var bot = void 0; -function tgBotInit() { - try { - // botConfig = loadBotConfig(); - // bot = new Telegraf(botConfig.token); - // bot.use(commandArgs); - // bot.command('addNotification', addNotification); - // bot.command('removeNotification', removeNotification); - // bot.startPolling(); - } catch (e) { - // TODO: handle exception - } -} -exports.tgBotInit = tgBotInit; - /***/ }), /* 118 */ /***/ (function(module, exports, __webpack_require__) { @@ -10640,11 +10448,10 @@ exports.tgBotInit = tgBotInit; Object.defineProperty(exports, "__esModule", { value: true }); var express = __webpack_require__(32); -var bodyParser = __webpack_require__(71); -var anomalies_1 = __webpack_require__(186); -var segments_1 = __webpack_require__(222); -var alerts_1 = __webpack_require__(223); -var notification_1 = __webpack_require__(117); +var bodyParser = __webpack_require__(72); +var anomalies_1 = __webpack_require__(185); +var segments_1 = __webpack_require__(221); +var alerts_1 = __webpack_require__(222); var app = express(); var PORT = process.env.HASTIC_PORT || 8000; app.use(bodyParser.json()); @@ -10664,7 +10471,6 @@ app.use('/', function (req, res) { app.listen(PORT, function () { console.log("Server is running on :" + PORT); }); -notification_1.tgBotInit(); /***/ }), /* 119 */ @@ -10685,14 +10491,14 @@ notification_1.tgBotInit(); * Module dependencies. */ -var bodyParser = __webpack_require__(71) +var bodyParser = __webpack_require__(72) var EventEmitter = __webpack_require__(47).EventEmitter; -var mixin = __webpack_require__(161); -var proto = __webpack_require__(162); -var Route = __webpack_require__(89); -var Router = __webpack_require__(88); -var req = __webpack_require__(174); -var res = __webpack_require__(181); +var mixin = __webpack_require__(160); +var proto = __webpack_require__(161); +var Route = __webpack_require__(90); +var Router = __webpack_require__(89); +var req = __webpack_require__(173); +var res = __webpack_require__(180); /** * Expose `createApplication()`. @@ -10749,8 +10555,8 @@ exports.Router = Router; */ exports.json = bodyParser.json -exports.query = __webpack_require__(91); -exports.static = __webpack_require__(185); +exports.query = __webpack_require__(92); +exports.static = __webpack_require__(184); exports.urlencoded = bodyParser.urlencoded /** @@ -10943,12 +10749,12 @@ function eventListenerCount (emitter, type) { * @private */ -var bytes = __webpack_require__(18) +var bytes = __webpack_require__(20) var contentType = __webpack_require__(33) var createError = __webpack_require__(34) -var debug = __webpack_require__(4)('body-parser:json') +var debug = __webpack_require__(5)('body-parser:json') var read = __webpack_require__(36) -var typeis = __webpack_require__(20) +var typeis = __webpack_require__(22) /** * Module exports. @@ -11208,7 +11014,7 @@ if (typeof Object.create === 'function') { * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(74); +exports = module.exports = __webpack_require__(75); exports.log = log; exports.formatArgs = formatArgs; exports.save = save; @@ -11406,7 +11212,7 @@ var util = __webpack_require__(48); * Expose `debug()` as the module. */ -exports = module.exports = __webpack_require__(74); +exports = module.exports = __webpack_require__(75); exports.init = init; exports.log = log; exports.formatArgs = formatArgs; @@ -11585,7 +11391,7 @@ function createWritableStdioStream (fd) { case 'PIPE': case 'TCP': - var net = __webpack_require__(76); + var net = __webpack_require__(77); stream = new net.Socket({ fd: fd, readable: false, @@ -11668,10 +11474,10 @@ module.exports = require("tty"); * @private */ -var bytes = __webpack_require__(18) +var bytes = __webpack_require__(20) var createError = __webpack_require__(129) -var iconv = __webpack_require__(78) -var unpipe = __webpack_require__(82) +var iconv = __webpack_require__(79) +var unpipe = __webpack_require__(83) /** * Module exports. @@ -11963,8 +11769,8 @@ function readStream (stream, encoding, length, limit, callback) { var deprecate = __webpack_require__(130)('http-errors') var setPrototypeOf = __webpack_require__(133) -var statuses = __webpack_require__(19) -var inherits = __webpack_require__(73) +var statuses = __webpack_require__(21) +var inherits = __webpack_require__(74) /** * Module exports. @@ -12223,8 +12029,8 @@ function toIdentifier (str) { * Module dependencies. */ -var callSiteToString = __webpack_require__(77).callSiteToString -var eventListenerCount = __webpack_require__(77).eventListenerCount +var callSiteToString = __webpack_require__(78).callSiteToString +var eventListenerCount = __webpack_require__(78).eventListenerCount var relative = __webpack_require__(0).relative /** @@ -12989,7 +12795,7 @@ for (var i = 0; i < modules.length; i++) { "use strict"; -var Buffer = __webpack_require__(2).Buffer; +var Buffer = __webpack_require__(3).Buffer; // Export Node.js internal encodings. @@ -13036,7 +12842,7 @@ InternalCodec.prototype.decoder = InternalDecoder; //------------------------------------------------------------------------------ // We use node.js internal decoder. Its signature is the same as ours. -var StringDecoder = __webpack_require__(79).StringDecoder; +var StringDecoder = __webpack_require__(80).StringDecoder; if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method. StringDecoder.prototype.end = function() {}; @@ -13184,7 +12990,7 @@ InternalDecoderCesu8.prototype.end = function() { "use strict"; -var Buffer = __webpack_require__(2).Buffer; +var Buffer = __webpack_require__(3).Buffer; // Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js @@ -13368,7 +13174,7 @@ function detectEncoding(buf, defaultEncoding) { "use strict"; -var Buffer = __webpack_require__(2).Buffer; +var Buffer = __webpack_require__(3).Buffer; // UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 // See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 @@ -13665,7 +13471,7 @@ Utf7IMAPDecoder.prototype.end = function() { "use strict"; -var Buffer = __webpack_require__(2).Buffer; +var Buffer = __webpack_require__(3).Buffer; // Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that // correspond to encoded bytes (if 128 - then lower half is ASCII). @@ -14378,7 +14184,7 @@ module.exports = { "use strict"; -var Buffer = __webpack_require__(2).Buffer; +var Buffer = __webpack_require__(3).Buffer; // Multibyte codec. In this scheme, a character is represented by 1 or more bytes. // Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. @@ -15031,7 +14837,7 @@ module.exports = { // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. 'gbk': { type: '_dbcs', - table: function() { return __webpack_require__(49).concat(__webpack_require__(80)) }, + table: function() { return __webpack_require__(49).concat(__webpack_require__(81)) }, }, 'xgbk': 'gbk', 'isoir58': 'gbk', @@ -15043,7 +14849,7 @@ module.exports = { // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 'gb18030': { type: '_dbcs', - table: function() { return __webpack_require__(49).concat(__webpack_require__(80)) }, + table: function() { return __webpack_require__(49).concat(__webpack_require__(81)) }, gb18030: function() { return __webpack_require__(146) }, encodeSkipVals: [0x80], encodeAdd: {'€': 0xA2E3}, @@ -15100,14 +14906,14 @@ module.exports = { '950': 'cp950', 'cp950': { type: '_dbcs', - table: function() { return __webpack_require__(81) }, + table: function() { return __webpack_require__(82) }, }, // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. 'big5': 'big5hkscs', 'big5hkscs': { type: '_dbcs', - table: function() { return __webpack_require__(81).concat(__webpack_require__(148)) }, + table: function() { return __webpack_require__(82).concat(__webpack_require__(148)) }, encodeSkipVals: [0xa2cc], }, @@ -15154,8 +14960,8 @@ module.exports = [["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀 "use strict"; -var Buffer = __webpack_require__(2).Buffer, - Transform = __webpack_require__(5).Transform; +var Buffer = __webpack_require__(3).Buffer, + Transform = __webpack_require__(1).Transform; // == Exports ================================================================== @@ -15281,7 +15087,7 @@ IconvLiteDecoderStream.prototype.collect = function(cb) { "use strict"; -var Buffer = __webpack_require__(2).Buffer; +var Buffer = __webpack_require__(3).Buffer; // == Extend Node primitives to use iconv-lite ================================= @@ -15312,7 +15118,7 @@ module.exports = function (iconv) { } // -- SlowBuffer ----------------------------------------------------------- - var SlowBuffer = __webpack_require__(2).SlowBuffer; + var SlowBuffer = __webpack_require__(3).SlowBuffer; original.SlowBufferToString = SlowBuffer.prototype.toString; SlowBuffer.prototype.toString = function(encoding, start, end) { @@ -15452,7 +15258,7 @@ module.exports = function (iconv) { // -- Readable ------------------------------------------------------------- if (iconv.supportsStreams) { - var Readable = __webpack_require__(5).Readable; + var Readable = __webpack_require__(1).Readable; original.ReadableSetEncoding = Readable.prototype.setEncoding; Readable.prototype.setEncoding = function setEncoding(enc, options) { @@ -15475,7 +15281,7 @@ module.exports = function (iconv) { delete Buffer.isNativeEncoding; - var SlowBuffer = __webpack_require__(2).SlowBuffer; + var SlowBuffer = __webpack_require__(3).SlowBuffer; SlowBuffer.prototype.toString = original.SlowBufferToString; SlowBuffer.prototype.write = original.SlowBufferWrite; @@ -15486,7 +15292,7 @@ module.exports = function (iconv) { Buffer.prototype.write = original.BufferWrite; if (iconv.supportsStreams) { - var Readable = __webpack_require__(5).Readable; + var Readable = __webpack_require__(1).Readable; Readable.prototype.setEncoding = original.ReadableSetEncoding; delete Readable.prototype.collect; @@ -15603,12 +15409,6 @@ function listener(event, done) { /* 152 */ /***/ (function(module, exports) { -module.exports = require("zlib"); - -/***/ }), -/* 153 */ -/***/ (function(module, exports) { - /*! * media-typer * Copyright(c) 2014 Douglas Christopher Wilson @@ -15882,7 +15682,7 @@ function splitType(string) { /***/ }), -/* 154 */ +/* 153 */ /***/ (function(module, exports, __webpack_require__) { /*! @@ -15895,17 +15695,17 @@ function splitType(string) { * Module exports. */ -module.exports = __webpack_require__(155) +module.exports = __webpack_require__(154) /***/ }), -/* 155 */ +/* 154 */ /***/ (function(module, exports) { module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"application/3gpdash-qoe-report+xml":{"source":"iana"},"application/3gpp-ims+xml":{"source":"iana"},"application/a2l":{"source":"iana"},"application/activemessage":{"source":"iana"},"application/alto-costmap+json":{"source":"iana","compressible":true},"application/alto-costmapfilter+json":{"source":"iana","compressible":true},"application/alto-directory+json":{"source":"iana","compressible":true},"application/alto-endpointcost+json":{"source":"iana","compressible":true},"application/alto-endpointcostparams+json":{"source":"iana","compressible":true},"application/alto-endpointprop+json":{"source":"iana","compressible":true},"application/alto-endpointpropparams+json":{"source":"iana","compressible":true},"application/alto-error+json":{"source":"iana","compressible":true},"application/alto-networkmap+json":{"source":"iana","compressible":true},"application/alto-networkmapfilter+json":{"source":"iana","compressible":true},"application/aml":{"source":"iana"},"application/andrew-inset":{"source":"iana","extensions":["ez"]},"application/applefile":{"source":"iana"},"application/applixware":{"source":"apache","extensions":["aw"]},"application/atf":{"source":"iana"},"application/atfx":{"source":"iana"},"application/atom+xml":{"source":"iana","compressible":true,"extensions":["atom"]},"application/atomcat+xml":{"source":"iana","extensions":["atomcat"]},"application/atomdeleted+xml":{"source":"iana"},"application/atomicmail":{"source":"iana"},"application/atomsvc+xml":{"source":"iana","extensions":["atomsvc"]},"application/atxml":{"source":"iana"},"application/auth-policy+xml":{"source":"iana"},"application/bacnet-xdd+zip":{"source":"iana"},"application/batch-smtp":{"source":"iana"},"application/bdoc":{"compressible":false,"extensions":["bdoc"]},"application/beep+xml":{"source":"iana"},"application/calendar+json":{"source":"iana","compressible":true},"application/calendar+xml":{"source":"iana"},"application/call-completion":{"source":"iana"},"application/cals-1840":{"source":"iana"},"application/cbor":{"source":"iana"},"application/cccex":{"source":"iana"},"application/ccmp+xml":{"source":"iana"},"application/ccxml+xml":{"source":"iana","extensions":["ccxml"]},"application/cdfx+xml":{"source":"iana"},"application/cdmi-capability":{"source":"iana","extensions":["cdmia"]},"application/cdmi-container":{"source":"iana","extensions":["cdmic"]},"application/cdmi-domain":{"source":"iana","extensions":["cdmid"]},"application/cdmi-object":{"source":"iana","extensions":["cdmio"]},"application/cdmi-queue":{"source":"iana","extensions":["cdmiq"]},"application/cdni":{"source":"iana"},"application/cea":{"source":"iana"},"application/cea-2018+xml":{"source":"iana"},"application/cellml+xml":{"source":"iana"},"application/cfw":{"source":"iana"},"application/clue_info+xml":{"source":"iana"},"application/cms":{"source":"iana"},"application/cnrp+xml":{"source":"iana"},"application/coap-group+json":{"source":"iana","compressible":true},"application/coap-payload":{"source":"iana"},"application/commonground":{"source":"iana"},"application/conference-info+xml":{"source":"iana"},"application/cose":{"source":"iana"},"application/cose-key":{"source":"iana"},"application/cose-key-set":{"source":"iana"},"application/cpl+xml":{"source":"iana"},"application/csrattrs":{"source":"iana"},"application/csta+xml":{"source":"iana"},"application/cstadata+xml":{"source":"iana"},"application/csvm+json":{"source":"iana","compressible":true},"application/cu-seeme":{"source":"apache","extensions":["cu"]},"application/cybercash":{"source":"iana"},"application/dart":{"compressible":true},"application/dash+xml":{"source":"iana","extensions":["mpd"]},"application/dashdelta":{"source":"iana"},"application/davmount+xml":{"source":"iana","extensions":["davmount"]},"application/dca-rft":{"source":"iana"},"application/dcd":{"source":"iana"},"application/dec-dx":{"source":"iana"},"application/dialog-info+xml":{"source":"iana"},"application/dicom":{"source":"iana"},"application/dicom+json":{"source":"iana","compressible":true},"application/dicom+xml":{"source":"iana"},"application/dii":{"source":"iana"},"application/dit":{"source":"iana"},"application/dns":{"source":"iana"},"application/docbook+xml":{"source":"apache","extensions":["dbk"]},"application/dskpp+xml":{"source":"iana"},"application/dssc+der":{"source":"iana","extensions":["dssc"]},"application/dssc+xml":{"source":"iana","extensions":["xdssc"]},"application/dvcs":{"source":"iana"},"application/ecmascript":{"source":"iana","compressible":true,"extensions":["ecma"]},"application/edi-consent":{"source":"iana"},"application/edi-x12":{"source":"iana","compressible":false},"application/edifact":{"source":"iana","compressible":false},"application/efi":{"source":"iana"},"application/emergencycalldata.comment+xml":{"source":"iana"},"application/emergencycalldata.control+xml":{"source":"iana"},"application/emergencycalldata.deviceinfo+xml":{"source":"iana"},"application/emergencycalldata.ecall.msd":{"source":"iana"},"application/emergencycalldata.providerinfo+xml":{"source":"iana"},"application/emergencycalldata.serviceinfo+xml":{"source":"iana"},"application/emergencycalldata.subscriberinfo+xml":{"source":"iana"},"application/emergencycalldata.veds+xml":{"source":"iana"},"application/emma+xml":{"source":"iana","extensions":["emma"]},"application/emotionml+xml":{"source":"iana"},"application/encaprtp":{"source":"iana"},"application/epp+xml":{"source":"iana"},"application/epub+zip":{"source":"iana","extensions":["epub"]},"application/eshop":{"source":"iana"},"application/exi":{"source":"iana","extensions":["exi"]},"application/fastinfoset":{"source":"iana"},"application/fastsoap":{"source":"iana"},"application/fdt+xml":{"source":"iana"},"application/fhir+xml":{"source":"iana"},"application/fido.trusted-apps+json":{"compressible":true},"application/fits":{"source":"iana"},"application/font-sfnt":{"source":"iana"},"application/font-tdpfr":{"source":"iana","extensions":["pfr"]},"application/font-woff":{"source":"iana","compressible":false,"extensions":["woff"]},"application/framework-attributes+xml":{"source":"iana"},"application/geo+json":{"source":"iana","compressible":true,"extensions":["geojson"]},"application/geo+json-seq":{"source":"iana"},"application/geoxacml+xml":{"source":"iana"},"application/gml+xml":{"source":"iana","extensions":["gml"]},"application/gpx+xml":{"source":"apache","extensions":["gpx"]},"application/gxf":{"source":"apache","extensions":["gxf"]},"application/gzip":{"source":"iana","compressible":false,"extensions":["gz"]},"application/h224":{"source":"iana"},"application/held+xml":{"source":"iana"},"application/hjson":{"extensions":["hjson"]},"application/http":{"source":"iana"},"application/hyperstudio":{"source":"iana","extensions":["stk"]},"application/ibe-key-request+xml":{"source":"iana"},"application/ibe-pkg-reply+xml":{"source":"iana"},"application/ibe-pp-data":{"source":"iana"},"application/iges":{"source":"iana"},"application/im-iscomposing+xml":{"source":"iana"},"application/index":{"source":"iana"},"application/index.cmd":{"source":"iana"},"application/index.obj":{"source":"iana"},"application/index.response":{"source":"iana"},"application/index.vnd":{"source":"iana"},"application/inkml+xml":{"source":"iana","extensions":["ink","inkml"]},"application/iotp":{"source":"iana"},"application/ipfix":{"source":"iana","extensions":["ipfix"]},"application/ipp":{"source":"iana"},"application/isup":{"source":"iana"},"application/its+xml":{"source":"iana"},"application/java-archive":{"source":"apache","compressible":false,"extensions":["jar","war","ear"]},"application/java-serialized-object":{"source":"apache","compressible":false,"extensions":["ser"]},"application/java-vm":{"source":"apache","compressible":false,"extensions":["class"]},"application/javascript":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["js","mjs"]},"application/jf2feed+json":{"source":"iana","compressible":true},"application/jose":{"source":"iana"},"application/jose+json":{"source":"iana","compressible":true},"application/jrd+json":{"source":"iana","compressible":true},"application/json":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["json","map"]},"application/json-patch+json":{"source":"iana","compressible":true},"application/json-seq":{"source":"iana"},"application/json5":{"extensions":["json5"]},"application/jsonml+json":{"source":"apache","compressible":true,"extensions":["jsonml"]},"application/jwk+json":{"source":"iana","compressible":true},"application/jwk-set+json":{"source":"iana","compressible":true},"application/jwt":{"source":"iana"},"application/kpml-request+xml":{"source":"iana"},"application/kpml-response+xml":{"source":"iana"},"application/ld+json":{"source":"iana","compressible":true,"extensions":["jsonld"]},"application/lgr+xml":{"source":"iana"},"application/link-format":{"source":"iana"},"application/load-control+xml":{"source":"iana"},"application/lost+xml":{"source":"iana","extensions":["lostxml"]},"application/lostsync+xml":{"source":"iana"},"application/lxf":{"source":"iana"},"application/mac-binhex40":{"source":"iana","extensions":["hqx"]},"application/mac-compactpro":{"source":"apache","extensions":["cpt"]},"application/macwriteii":{"source":"iana"},"application/mads+xml":{"source":"iana","extensions":["mads"]},"application/manifest+json":{"charset":"UTF-8","compressible":true,"extensions":["webmanifest"]},"application/marc":{"source":"iana","extensions":["mrc"]},"application/marcxml+xml":{"source":"iana","extensions":["mrcx"]},"application/mathematica":{"source":"iana","extensions":["ma","nb","mb"]},"application/mathml+xml":{"source":"iana","extensions":["mathml"]},"application/mathml-content+xml":{"source":"iana"},"application/mathml-presentation+xml":{"source":"iana"},"application/mbms-associated-procedure-description+xml":{"source":"iana"},"application/mbms-deregister+xml":{"source":"iana"},"application/mbms-envelope+xml":{"source":"iana"},"application/mbms-msk+xml":{"source":"iana"},"application/mbms-msk-response+xml":{"source":"iana"},"application/mbms-protection-description+xml":{"source":"iana"},"application/mbms-reception-report+xml":{"source":"iana"},"application/mbms-register+xml":{"source":"iana"},"application/mbms-register-response+xml":{"source":"iana"},"application/mbms-schedule+xml":{"source":"iana"},"application/mbms-user-service-description+xml":{"source":"iana"},"application/mbox":{"source":"iana","extensions":["mbox"]},"application/media-policy-dataset+xml":{"source":"iana"},"application/media_control+xml":{"source":"iana"},"application/mediaservercontrol+xml":{"source":"iana","extensions":["mscml"]},"application/merge-patch+json":{"source":"iana","compressible":true},"application/metalink+xml":{"source":"apache","extensions":["metalink"]},"application/metalink4+xml":{"source":"iana","extensions":["meta4"]},"application/mets+xml":{"source":"iana","extensions":["mets"]},"application/mf4":{"source":"iana"},"application/mikey":{"source":"iana"},"application/mmt-usd+xml":{"source":"iana"},"application/mods+xml":{"source":"iana","extensions":["mods"]},"application/moss-keys":{"source":"iana"},"application/moss-signature":{"source":"iana"},"application/mosskey-data":{"source":"iana"},"application/mosskey-request":{"source":"iana"},"application/mp21":{"source":"iana","extensions":["m21","mp21"]},"application/mp4":{"source":"iana","extensions":["mp4s","m4p"]},"application/mpeg4-generic":{"source":"iana"},"application/mpeg4-iod":{"source":"iana"},"application/mpeg4-iod-xmt":{"source":"iana"},"application/mrb-consumer+xml":{"source":"iana"},"application/mrb-publish+xml":{"source":"iana"},"application/msc-ivr+xml":{"source":"iana"},"application/msc-mixer+xml":{"source":"iana"},"application/msword":{"source":"iana","compressible":false,"extensions":["doc","dot"]},"application/mud+json":{"source":"iana","compressible":true},"application/mxf":{"source":"iana","extensions":["mxf"]},"application/n-quads":{"source":"iana"},"application/n-triples":{"source":"iana"},"application/nasdata":{"source":"iana"},"application/news-checkgroups":{"source":"iana"},"application/news-groupinfo":{"source":"iana"},"application/news-transmission":{"source":"iana"},"application/nlsml+xml":{"source":"iana"},"application/node":{"source":"iana"},"application/nss":{"source":"iana"},"application/ocsp-request":{"source":"iana"},"application/ocsp-response":{"source":"iana"},"application/octet-stream":{"source":"iana","compressible":false,"extensions":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{"source":"iana","extensions":["oda"]},"application/odx":{"source":"iana"},"application/oebps-package+xml":{"source":"iana","extensions":["opf"]},"application/ogg":{"source":"iana","compressible":false,"extensions":["ogx"]},"application/omdoc+xml":{"source":"apache","extensions":["omdoc"]},"application/onenote":{"source":"apache","extensions":["onetoc","onetoc2","onetmp","onepkg"]},"application/oxps":{"source":"iana","extensions":["oxps"]},"application/p2p-overlay+xml":{"source":"iana"},"application/parityfec":{"source":"iana"},"application/passport":{"source":"iana"},"application/patch-ops-error+xml":{"source":"iana","extensions":["xer"]},"application/pdf":{"source":"iana","compressible":false,"extensions":["pdf"]},"application/pdx":{"source":"iana"},"application/pgp-encrypted":{"source":"iana","compressible":false,"extensions":["pgp"]},"application/pgp-keys":{"source":"iana"},"application/pgp-signature":{"source":"iana","extensions":["asc","sig"]},"application/pics-rules":{"source":"apache","extensions":["prf"]},"application/pidf+xml":{"source":"iana"},"application/pidf-diff+xml":{"source":"iana"},"application/pkcs10":{"source":"iana","extensions":["p10"]},"application/pkcs12":{"source":"iana"},"application/pkcs7-mime":{"source":"iana","extensions":["p7m","p7c"]},"application/pkcs7-signature":{"source":"iana","extensions":["p7s"]},"application/pkcs8":{"source":"iana","extensions":["p8"]},"application/pkcs8-encrypted":{"source":"iana"},"application/pkix-attr-cert":{"source":"iana","extensions":["ac"]},"application/pkix-cert":{"source":"iana","extensions":["cer"]},"application/pkix-crl":{"source":"iana","extensions":["crl"]},"application/pkix-pkipath":{"source":"iana","extensions":["pkipath"]},"application/pkixcmp":{"source":"iana","extensions":["pki"]},"application/pls+xml":{"source":"iana","extensions":["pls"]},"application/poc-settings+xml":{"source":"iana"},"application/postscript":{"source":"iana","compressible":true,"extensions":["ai","eps","ps"]},"application/ppsp-tracker+json":{"source":"iana","compressible":true},"application/problem+json":{"source":"iana","compressible":true},"application/problem+xml":{"source":"iana"},"application/provenance+xml":{"source":"iana"},"application/prs.alvestrand.titrax-sheet":{"source":"iana"},"application/prs.cww":{"source":"iana","extensions":["cww"]},"application/prs.hpub+zip":{"source":"iana"},"application/prs.nprend":{"source":"iana"},"application/prs.plucker":{"source":"iana"},"application/prs.rdf-xml-crypt":{"source":"iana"},"application/prs.xsf+xml":{"source":"iana"},"application/pskc+xml":{"source":"iana","extensions":["pskcxml"]},"application/qsig":{"source":"iana"},"application/raml+yaml":{"compressible":true,"extensions":["raml"]},"application/raptorfec":{"source":"iana"},"application/rdap+json":{"source":"iana","compressible":true},"application/rdf+xml":{"source":"iana","compressible":true,"extensions":["rdf"]},"application/reginfo+xml":{"source":"iana","extensions":["rif"]},"application/relax-ng-compact-syntax":{"source":"iana","extensions":["rnc"]},"application/remote-printing":{"source":"iana"},"application/reputon+json":{"source":"iana","compressible":true},"application/resource-lists+xml":{"source":"iana","extensions":["rl"]},"application/resource-lists-diff+xml":{"source":"iana","extensions":["rld"]},"application/rfc+xml":{"source":"iana"},"application/riscos":{"source":"iana"},"application/rlmi+xml":{"source":"iana"},"application/rls-services+xml":{"source":"iana","extensions":["rs"]},"application/route-apd+xml":{"source":"iana"},"application/route-s-tsid+xml":{"source":"iana"},"application/route-usd+xml":{"source":"iana"},"application/rpki-ghostbusters":{"source":"iana","extensions":["gbr"]},"application/rpki-manifest":{"source":"iana","extensions":["mft"]},"application/rpki-publication":{"source":"iana"},"application/rpki-roa":{"source":"iana","extensions":["roa"]},"application/rpki-updown":{"source":"iana"},"application/rsd+xml":{"source":"apache","extensions":["rsd"]},"application/rss+xml":{"source":"apache","compressible":true,"extensions":["rss"]},"application/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"application/rtploopback":{"source":"iana"},"application/rtx":{"source":"iana"},"application/samlassertion+xml":{"source":"iana"},"application/samlmetadata+xml":{"source":"iana"},"application/sbml+xml":{"source":"iana","extensions":["sbml"]},"application/scaip+xml":{"source":"iana"},"application/scim+json":{"source":"iana","compressible":true},"application/scvp-cv-request":{"source":"iana","extensions":["scq"]},"application/scvp-cv-response":{"source":"iana","extensions":["scs"]},"application/scvp-vp-request":{"source":"iana","extensions":["spq"]},"application/scvp-vp-response":{"source":"iana","extensions":["spp"]},"application/sdp":{"source":"iana","extensions":["sdp"]},"application/sep+xml":{"source":"iana"},"application/sep-exi":{"source":"iana"},"application/session-info":{"source":"iana"},"application/set-payment":{"source":"iana"},"application/set-payment-initiation":{"source":"iana","extensions":["setpay"]},"application/set-registration":{"source":"iana"},"application/set-registration-initiation":{"source":"iana","extensions":["setreg"]},"application/sgml":{"source":"iana"},"application/sgml-open-catalog":{"source":"iana"},"application/shf+xml":{"source":"iana","extensions":["shf"]},"application/sieve":{"source":"iana"},"application/simple-filter+xml":{"source":"iana"},"application/simple-message-summary":{"source":"iana"},"application/simplesymbolcontainer":{"source":"iana"},"application/slate":{"source":"iana"},"application/smil":{"source":"iana"},"application/smil+xml":{"source":"iana","extensions":["smi","smil"]},"application/smpte336m":{"source":"iana"},"application/soap+fastinfoset":{"source":"iana"},"application/soap+xml":{"source":"iana","compressible":true},"application/sparql-query":{"source":"iana","extensions":["rq"]},"application/sparql-results+xml":{"source":"iana","extensions":["srx"]},"application/spirits-event+xml":{"source":"iana"},"application/sql":{"source":"iana"},"application/srgs":{"source":"iana","extensions":["gram"]},"application/srgs+xml":{"source":"iana","extensions":["grxml"]},"application/sru+xml":{"source":"iana","extensions":["sru"]},"application/ssdl+xml":{"source":"apache","extensions":["ssdl"]},"application/ssml+xml":{"source":"iana","extensions":["ssml"]},"application/tamp-apex-update":{"source":"iana"},"application/tamp-apex-update-confirm":{"source":"iana"},"application/tamp-community-update":{"source":"iana"},"application/tamp-community-update-confirm":{"source":"iana"},"application/tamp-error":{"source":"iana"},"application/tamp-sequence-adjust":{"source":"iana"},"application/tamp-sequence-adjust-confirm":{"source":"iana"},"application/tamp-status-query":{"source":"iana"},"application/tamp-status-response":{"source":"iana"},"application/tamp-update":{"source":"iana"},"application/tamp-update-confirm":{"source":"iana"},"application/tar":{"compressible":true},"application/tei+xml":{"source":"iana","extensions":["tei","teicorpus"]},"application/thraud+xml":{"source":"iana","extensions":["tfi"]},"application/timestamp-query":{"source":"iana"},"application/timestamp-reply":{"source":"iana"},"application/timestamped-data":{"source":"iana","extensions":["tsd"]},"application/tnauthlist":{"source":"iana"},"application/trig":{"source":"iana"},"application/ttml+xml":{"source":"iana"},"application/tve-trigger":{"source":"iana"},"application/ulpfec":{"source":"iana"},"application/urc-grpsheet+xml":{"source":"iana"},"application/urc-ressheet+xml":{"source":"iana"},"application/urc-targetdesc+xml":{"source":"iana"},"application/urc-uisocketdesc+xml":{"source":"iana"},"application/vcard+json":{"source":"iana","compressible":true},"application/vcard+xml":{"source":"iana"},"application/vemmi":{"source":"iana"},"application/vividence.scriptfile":{"source":"apache"},"application/vnd.1000minds.decision-model+xml":{"source":"iana"},"application/vnd.3gpp-prose+xml":{"source":"iana"},"application/vnd.3gpp-prose-pc3ch+xml":{"source":"iana"},"application/vnd.3gpp-v2x-local-service-information":{"source":"iana"},"application/vnd.3gpp.access-transfer-events+xml":{"source":"iana"},"application/vnd.3gpp.bsf+xml":{"source":"iana"},"application/vnd.3gpp.gmop+xml":{"source":"iana"},"application/vnd.3gpp.mcptt-affiliation-command+xml":{"source":"iana"},"application/vnd.3gpp.mcptt-floor-request+xml":{"source":"iana"},"application/vnd.3gpp.mcptt-info+xml":{"source":"iana"},"application/vnd.3gpp.mcptt-location-info+xml":{"source":"iana"},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{"source":"iana"},"application/vnd.3gpp.mcptt-signed+xml":{"source":"iana"},"application/vnd.3gpp.mid-call+xml":{"source":"iana"},"application/vnd.3gpp.pic-bw-large":{"source":"iana","extensions":["plb"]},"application/vnd.3gpp.pic-bw-small":{"source":"iana","extensions":["psb"]},"application/vnd.3gpp.pic-bw-var":{"source":"iana","extensions":["pvb"]},"application/vnd.3gpp.sms":{"source":"iana"},"application/vnd.3gpp.sms+xml":{"source":"iana"},"application/vnd.3gpp.srvcc-ext+xml":{"source":"iana"},"application/vnd.3gpp.srvcc-info+xml":{"source":"iana"},"application/vnd.3gpp.state-and-event-info+xml":{"source":"iana"},"application/vnd.3gpp.ussd+xml":{"source":"iana"},"application/vnd.3gpp2.bcmcsinfo+xml":{"source":"iana"},"application/vnd.3gpp2.sms":{"source":"iana"},"application/vnd.3gpp2.tcap":{"source":"iana","extensions":["tcap"]},"application/vnd.3lightssoftware.imagescal":{"source":"iana"},"application/vnd.3m.post-it-notes":{"source":"iana","extensions":["pwn"]},"application/vnd.accpac.simply.aso":{"source":"iana","extensions":["aso"]},"application/vnd.accpac.simply.imp":{"source":"iana","extensions":["imp"]},"application/vnd.acucobol":{"source":"iana","extensions":["acu"]},"application/vnd.acucorp":{"source":"iana","extensions":["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{"source":"apache","extensions":["air"]},"application/vnd.adobe.flash.movie":{"source":"iana"},"application/vnd.adobe.formscentral.fcdt":{"source":"iana","extensions":["fcdt"]},"application/vnd.adobe.fxp":{"source":"iana","extensions":["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{"source":"iana"},"application/vnd.adobe.xdp+xml":{"source":"iana","extensions":["xdp"]},"application/vnd.adobe.xfdf":{"source":"iana","extensions":["xfdf"]},"application/vnd.aether.imp":{"source":"iana"},"application/vnd.ah-barcode":{"source":"iana"},"application/vnd.ahead.space":{"source":"iana","extensions":["ahead"]},"application/vnd.airzip.filesecure.azf":{"source":"iana","extensions":["azf"]},"application/vnd.airzip.filesecure.azs":{"source":"iana","extensions":["azs"]},"application/vnd.amadeus+json":{"source":"iana","compressible":true},"application/vnd.amazon.ebook":{"source":"apache","extensions":["azw"]},"application/vnd.amazon.mobi8-ebook":{"source":"iana"},"application/vnd.americandynamics.acc":{"source":"iana","extensions":["acc"]},"application/vnd.amiga.ami":{"source":"iana","extensions":["ami"]},"application/vnd.amundsen.maze+xml":{"source":"iana"},"application/vnd.android.package-archive":{"source":"apache","compressible":false,"extensions":["apk"]},"application/vnd.anki":{"source":"iana"},"application/vnd.anser-web-certificate-issue-initiation":{"source":"iana","extensions":["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{"source":"apache","extensions":["fti"]},"application/vnd.antix.game-component":{"source":"iana","extensions":["atx"]},"application/vnd.apache.thrift.binary":{"source":"iana"},"application/vnd.apache.thrift.compact":{"source":"iana"},"application/vnd.apache.thrift.json":{"source":"iana"},"application/vnd.api+json":{"source":"iana","compressible":true},"application/vnd.apothekende.reservation+json":{"source":"iana","compressible":true},"application/vnd.apple.installer+xml":{"source":"iana","extensions":["mpkg"]},"application/vnd.apple.mpegurl":{"source":"iana","extensions":["m3u8"]},"application/vnd.apple.pkpass":{"compressible":false,"extensions":["pkpass"]},"application/vnd.arastra.swi":{"source":"iana"},"application/vnd.aristanetworks.swi":{"source":"iana","extensions":["swi"]},"application/vnd.artsquare":{"source":"iana"},"application/vnd.astraea-software.iota":{"source":"iana","extensions":["iota"]},"application/vnd.audiograph":{"source":"iana","extensions":["aep"]},"application/vnd.autopackage":{"source":"iana"},"application/vnd.avalon+json":{"source":"iana","compressible":true},"application/vnd.avistar+xml":{"source":"iana"},"application/vnd.balsamiq.bmml+xml":{"source":"iana"},"application/vnd.balsamiq.bmpr":{"source":"iana"},"application/vnd.bbf.usp.msg":{"source":"iana"},"application/vnd.bbf.usp.msg+json":{"source":"iana","compressible":true},"application/vnd.bekitzur-stech+json":{"source":"iana","compressible":true},"application/vnd.bint.med-content":{"source":"iana"},"application/vnd.biopax.rdf+xml":{"source":"iana"},"application/vnd.blink-idb-value-wrapper":{"source":"iana"},"application/vnd.blueice.multipass":{"source":"iana","extensions":["mpm"]},"application/vnd.bluetooth.ep.oob":{"source":"iana"},"application/vnd.bluetooth.le.oob":{"source":"iana"},"application/vnd.bmi":{"source":"iana","extensions":["bmi"]},"application/vnd.businessobjects":{"source":"iana","extensions":["rep"]},"application/vnd.cab-jscript":{"source":"iana"},"application/vnd.canon-cpdl":{"source":"iana"},"application/vnd.canon-lips":{"source":"iana"},"application/vnd.capasystems-pg+json":{"source":"iana","compressible":true},"application/vnd.cendio.thinlinc.clientconf":{"source":"iana"},"application/vnd.century-systems.tcp_stream":{"source":"iana"},"application/vnd.chemdraw+xml":{"source":"iana","extensions":["cdxml"]},"application/vnd.chess-pgn":{"source":"iana"},"application/vnd.chipnuts.karaoke-mmd":{"source":"iana","extensions":["mmd"]},"application/vnd.cinderella":{"source":"iana","extensions":["cdy"]},"application/vnd.cirpack.isdn-ext":{"source":"iana"},"application/vnd.citationstyles.style+xml":{"source":"iana"},"application/vnd.claymore":{"source":"iana","extensions":["cla"]},"application/vnd.cloanto.rp9":{"source":"iana","extensions":["rp9"]},"application/vnd.clonk.c4group":{"source":"iana","extensions":["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{"source":"iana","extensions":["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{"source":"iana","extensions":["c11amz"]},"application/vnd.coffeescript":{"source":"iana"},"application/vnd.collabio.xodocuments.document":{"source":"iana"},"application/vnd.collabio.xodocuments.document-template":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation":{"source":"iana"},"application/vnd.collabio.xodocuments.presentation-template":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{"source":"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{"source":"iana"},"application/vnd.collection+json":{"source":"iana","compressible":true},"application/vnd.collection.doc+json":{"source":"iana","compressible":true},"application/vnd.collection.next+json":{"source":"iana","compressible":true},"application/vnd.comicbook+zip":{"source":"iana"},"application/vnd.comicbook-rar":{"source":"iana"},"application/vnd.commerce-battelle":{"source":"iana"},"application/vnd.commonspace":{"source":"iana","extensions":["csp"]},"application/vnd.contact.cmsg":{"source":"iana","extensions":["cdbcmsg"]},"application/vnd.coreos.ignition+json":{"source":"iana","compressible":true},"application/vnd.cosmocaller":{"source":"iana","extensions":["cmc"]},"application/vnd.crick.clicker":{"source":"iana","extensions":["clkx"]},"application/vnd.crick.clicker.keyboard":{"source":"iana","extensions":["clkk"]},"application/vnd.crick.clicker.palette":{"source":"iana","extensions":["clkp"]},"application/vnd.crick.clicker.template":{"source":"iana","extensions":["clkt"]},"application/vnd.crick.clicker.wordbank":{"source":"iana","extensions":["clkw"]},"application/vnd.criticaltools.wbs+xml":{"source":"iana","extensions":["wbs"]},"application/vnd.ctc-posml":{"source":"iana","extensions":["pml"]},"application/vnd.ctct.ws+xml":{"source":"iana"},"application/vnd.cups-pdf":{"source":"iana"},"application/vnd.cups-postscript":{"source":"iana"},"application/vnd.cups-ppd":{"source":"iana","extensions":["ppd"]},"application/vnd.cups-raster":{"source":"iana"},"application/vnd.cups-raw":{"source":"iana"},"application/vnd.curl":{"source":"iana"},"application/vnd.curl.car":{"source":"apache","extensions":["car"]},"application/vnd.curl.pcurl":{"source":"apache","extensions":["pcurl"]},"application/vnd.cyan.dean.root+xml":{"source":"iana"},"application/vnd.cybank":{"source":"iana"},"application/vnd.d2l.coursepackage1p0+zip":{"source":"iana"},"application/vnd.dart":{"source":"iana","compressible":true,"extensions":["dart"]},"application/vnd.data-vision.rdz":{"source":"iana","extensions":["rdz"]},"application/vnd.datapackage+json":{"source":"iana","compressible":true},"application/vnd.dataresource+json":{"source":"iana","compressible":true},"application/vnd.debian.binary-package":{"source":"iana"},"application/vnd.dece.data":{"source":"iana","extensions":["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{"source":"iana","extensions":["uvt","uvvt"]},"application/vnd.dece.unspecified":{"source":"iana","extensions":["uvx","uvvx"]},"application/vnd.dece.zip":{"source":"iana","extensions":["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{"source":"iana","extensions":["fe_launch"]},"application/vnd.desmume-movie":{"source":"iana"},"application/vnd.desmume.movie":{"source":"apache"},"application/vnd.dir-bi.plate-dl-nosuffix":{"source":"iana"},"application/vnd.dm.delegation+xml":{"source":"iana"},"application/vnd.dna":{"source":"iana","extensions":["dna"]},"application/vnd.document+json":{"source":"iana","compressible":true},"application/vnd.dolby.mlp":{"source":"apache","extensions":["mlp"]},"application/vnd.dolby.mobile.1":{"source":"iana"},"application/vnd.dolby.mobile.2":{"source":"iana"},"application/vnd.doremir.scorecloud-binary-document":{"source":"iana"},"application/vnd.dpgraph":{"source":"iana","extensions":["dpg"]},"application/vnd.dreamfactory":{"source":"iana","extensions":["dfac"]},"application/vnd.drive+json":{"source":"iana","compressible":true},"application/vnd.ds-keypoint":{"source":"apache","extensions":["kpxx"]},"application/vnd.dtg.local":{"source":"iana"},"application/vnd.dtg.local.flash":{"source":"iana"},"application/vnd.dtg.local.html":{"source":"iana"},"application/vnd.dvb.ait":{"source":"iana","extensions":["ait"]},"application/vnd.dvb.dvbj":{"source":"iana"},"application/vnd.dvb.esgcontainer":{"source":"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess":{"source":"iana"},"application/vnd.dvb.ipdcesgaccess2":{"source":"iana"},"application/vnd.dvb.ipdcesgpdd":{"source":"iana"},"application/vnd.dvb.ipdcroaming":{"source":"iana"},"application/vnd.dvb.iptv.alfec-base":{"source":"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{"source":"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{"source":"iana"},"application/vnd.dvb.notif-container+xml":{"source":"iana"},"application/vnd.dvb.notif-generic+xml":{"source":"iana"},"application/vnd.dvb.notif-ia-msglist+xml":{"source":"iana"},"application/vnd.dvb.notif-ia-registration-request+xml":{"source":"iana"},"application/vnd.dvb.notif-ia-registration-response+xml":{"source":"iana"},"application/vnd.dvb.notif-init+xml":{"source":"iana"},"application/vnd.dvb.pfr":{"source":"iana"},"application/vnd.dvb.service":{"source":"iana","extensions":["svc"]},"application/vnd.dxr":{"source":"iana"},"application/vnd.dynageo":{"source":"iana","extensions":["geo"]},"application/vnd.dzr":{"source":"iana"},"application/vnd.easykaraoke.cdgdownload":{"source":"iana"},"application/vnd.ecdis-update":{"source":"iana"},"application/vnd.ecip.rlp":{"source":"iana"},"application/vnd.ecowin.chart":{"source":"iana","extensions":["mag"]},"application/vnd.ecowin.filerequest":{"source":"iana"},"application/vnd.ecowin.fileupdate":{"source":"iana"},"application/vnd.ecowin.series":{"source":"iana"},"application/vnd.ecowin.seriesrequest":{"source":"iana"},"application/vnd.ecowin.seriesupdate":{"source":"iana"},"application/vnd.efi.img":{"source":"iana"},"application/vnd.efi.iso":{"source":"iana"},"application/vnd.emclient.accessrequest+xml":{"source":"iana"},"application/vnd.enliven":{"source":"iana","extensions":["nml"]},"application/vnd.enphase.envoy":{"source":"iana"},"application/vnd.eprints.data+xml":{"source":"iana"},"application/vnd.epson.esf":{"source":"iana","extensions":["esf"]},"application/vnd.epson.msf":{"source":"iana","extensions":["msf"]},"application/vnd.epson.quickanime":{"source":"iana","extensions":["qam"]},"application/vnd.epson.salt":{"source":"iana","extensions":["slt"]},"application/vnd.epson.ssf":{"source":"iana","extensions":["ssf"]},"application/vnd.ericsson.quickcall":{"source":"iana"},"application/vnd.espass-espass+zip":{"source":"iana"},"application/vnd.eszigno3+xml":{"source":"iana","extensions":["es3","et3"]},"application/vnd.etsi.aoc+xml":{"source":"iana"},"application/vnd.etsi.asic-e+zip":{"source":"iana"},"application/vnd.etsi.asic-s+zip":{"source":"iana"},"application/vnd.etsi.cug+xml":{"source":"iana"},"application/vnd.etsi.iptvcommand+xml":{"source":"iana"},"application/vnd.etsi.iptvdiscovery+xml":{"source":"iana"},"application/vnd.etsi.iptvprofile+xml":{"source":"iana"},"application/vnd.etsi.iptvsad-bc+xml":{"source":"iana"},"application/vnd.etsi.iptvsad-cod+xml":{"source":"iana"},"application/vnd.etsi.iptvsad-npvr+xml":{"source":"iana"},"application/vnd.etsi.iptvservice+xml":{"source":"iana"},"application/vnd.etsi.iptvsync+xml":{"source":"iana"},"application/vnd.etsi.iptvueprofile+xml":{"source":"iana"},"application/vnd.etsi.mcid+xml":{"source":"iana"},"application/vnd.etsi.mheg5":{"source":"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{"source":"iana"},"application/vnd.etsi.pstn+xml":{"source":"iana"},"application/vnd.etsi.sci+xml":{"source":"iana"},"application/vnd.etsi.simservs+xml":{"source":"iana"},"application/vnd.etsi.timestamp-token":{"source":"iana"},"application/vnd.etsi.tsl+xml":{"source":"iana"},"application/vnd.etsi.tsl.der":{"source":"iana"},"application/vnd.eudora.data":{"source":"iana"},"application/vnd.evolv.ecig.profile":{"source":"iana"},"application/vnd.evolv.ecig.settings":{"source":"iana"},"application/vnd.evolv.ecig.theme":{"source":"iana"},"application/vnd.ezpix-album":{"source":"iana","extensions":["ez2"]},"application/vnd.ezpix-package":{"source":"iana","extensions":["ez3"]},"application/vnd.f-secure.mobile":{"source":"iana"},"application/vnd.fastcopy-disk-image":{"source":"iana"},"application/vnd.fdf":{"source":"iana","extensions":["fdf"]},"application/vnd.fdsn.mseed":{"source":"iana","extensions":["mseed"]},"application/vnd.fdsn.seed":{"source":"iana","extensions":["seed","dataless"]},"application/vnd.ffsns":{"source":"iana"},"application/vnd.filmit.zfc":{"source":"iana"},"application/vnd.fints":{"source":"iana"},"application/vnd.firemonkeys.cloudcell":{"source":"iana"},"application/vnd.flographit":{"source":"iana","extensions":["gph"]},"application/vnd.fluxtime.clip":{"source":"iana","extensions":["ftc"]},"application/vnd.font-fontforge-sfd":{"source":"iana"},"application/vnd.framemaker":{"source":"iana","extensions":["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{"source":"iana","extensions":["fnc"]},"application/vnd.frogans.ltf":{"source":"iana","extensions":["ltf"]},"application/vnd.fsc.weblaunch":{"source":"iana","extensions":["fsc"]},"application/vnd.fujitsu.oasys":{"source":"iana","extensions":["oas"]},"application/vnd.fujitsu.oasys2":{"source":"iana","extensions":["oa2"]},"application/vnd.fujitsu.oasys3":{"source":"iana","extensions":["oa3"]},"application/vnd.fujitsu.oasysgp":{"source":"iana","extensions":["fg5"]},"application/vnd.fujitsu.oasysprs":{"source":"iana","extensions":["bh2"]},"application/vnd.fujixerox.art-ex":{"source":"iana"},"application/vnd.fujixerox.art4":{"source":"iana"},"application/vnd.fujixerox.ddd":{"source":"iana","extensions":["ddd"]},"application/vnd.fujixerox.docuworks":{"source":"iana","extensions":["xdw"]},"application/vnd.fujixerox.docuworks.binder":{"source":"iana","extensions":["xbd"]},"application/vnd.fujixerox.docuworks.container":{"source":"iana"},"application/vnd.fujixerox.hbpl":{"source":"iana"},"application/vnd.fut-misnet":{"source":"iana"},"application/vnd.fuzzysheet":{"source":"iana","extensions":["fzs"]},"application/vnd.genomatix.tuxedo":{"source":"iana","extensions":["txd"]},"application/vnd.geo+json":{"source":"iana","compressible":true},"application/vnd.geocube+xml":{"source":"iana"},"application/vnd.geogebra.file":{"source":"iana","extensions":["ggb"]},"application/vnd.geogebra.tool":{"source":"iana","extensions":["ggt"]},"application/vnd.geometry-explorer":{"source":"iana","extensions":["gex","gre"]},"application/vnd.geonext":{"source":"iana","extensions":["gxt"]},"application/vnd.geoplan":{"source":"iana","extensions":["g2w"]},"application/vnd.geospace":{"source":"iana","extensions":["g3w"]},"application/vnd.gerber":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt":{"source":"iana"},"application/vnd.globalplatform.card-content-mgt-response":{"source":"iana"},"application/vnd.gmx":{"source":"iana","extensions":["gmx"]},"application/vnd.google-apps.document":{"compressible":false,"extensions":["gdoc"]},"application/vnd.google-apps.presentation":{"compressible":false,"extensions":["gslides"]},"application/vnd.google-apps.spreadsheet":{"compressible":false,"extensions":["gsheet"]},"application/vnd.google-earth.kml+xml":{"source":"iana","compressible":true,"extensions":["kml"]},"application/vnd.google-earth.kmz":{"source":"iana","compressible":false,"extensions":["kmz"]},"application/vnd.gov.sk.e-form+xml":{"source":"iana"},"application/vnd.gov.sk.e-form+zip":{"source":"iana"},"application/vnd.gov.sk.xmldatacontainer+xml":{"source":"iana"},"application/vnd.grafeq":{"source":"iana","extensions":["gqf","gqs"]},"application/vnd.gridmp":{"source":"iana"},"application/vnd.groove-account":{"source":"iana","extensions":["gac"]},"application/vnd.groove-help":{"source":"iana","extensions":["ghf"]},"application/vnd.groove-identity-message":{"source":"iana","extensions":["gim"]},"application/vnd.groove-injector":{"source":"iana","extensions":["grv"]},"application/vnd.groove-tool-message":{"source":"iana","extensions":["gtm"]},"application/vnd.groove-tool-template":{"source":"iana","extensions":["tpl"]},"application/vnd.groove-vcard":{"source":"iana","extensions":["vcg"]},"application/vnd.hal+json":{"source":"iana","compressible":true},"application/vnd.hal+xml":{"source":"iana","extensions":["hal"]},"application/vnd.handheld-entertainment+xml":{"source":"iana","extensions":["zmm"]},"application/vnd.hbci":{"source":"iana","extensions":["hbci"]},"application/vnd.hc+json":{"source":"iana","compressible":true},"application/vnd.hcl-bireports":{"source":"iana"},"application/vnd.hdt":{"source":"iana"},"application/vnd.heroku+json":{"source":"iana","compressible":true},"application/vnd.hhe.lesson-player":{"source":"iana","extensions":["les"]},"application/vnd.hp-hpgl":{"source":"iana","extensions":["hpgl"]},"application/vnd.hp-hpid":{"source":"iana","extensions":["hpid"]},"application/vnd.hp-hps":{"source":"iana","extensions":["hps"]},"application/vnd.hp-jlyt":{"source":"iana","extensions":["jlt"]},"application/vnd.hp-pcl":{"source":"iana","extensions":["pcl"]},"application/vnd.hp-pclxl":{"source":"iana","extensions":["pclxl"]},"application/vnd.httphone":{"source":"iana"},"application/vnd.hydrostatix.sof-data":{"source":"iana","extensions":["sfd-hdstx"]},"application/vnd.hyper-item+json":{"source":"iana","compressible":true},"application/vnd.hyperdrive+json":{"source":"iana","compressible":true},"application/vnd.hzn-3d-crossword":{"source":"iana"},"application/vnd.ibm.afplinedata":{"source":"iana"},"application/vnd.ibm.electronic-media":{"source":"iana"},"application/vnd.ibm.minipay":{"source":"iana","extensions":["mpy"]},"application/vnd.ibm.modcap":{"source":"iana","extensions":["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{"source":"iana","extensions":["irm"]},"application/vnd.ibm.secure-container":{"source":"iana","extensions":["sc"]},"application/vnd.iccprofile":{"source":"iana","extensions":["icc","icm"]},"application/vnd.ieee.1905":{"source":"iana"},"application/vnd.igloader":{"source":"iana","extensions":["igl"]},"application/vnd.imagemeter.folder+zip":{"source":"iana"},"application/vnd.imagemeter.image+zip":{"source":"iana"},"application/vnd.immervision-ivp":{"source":"iana","extensions":["ivp"]},"application/vnd.immervision-ivu":{"source":"iana","extensions":["ivu"]},"application/vnd.ims.imsccv1p1":{"source":"iana"},"application/vnd.ims.imsccv1p2":{"source":"iana"},"application/vnd.ims.imsccv1p3":{"source":"iana"},"application/vnd.ims.lis.v2.result+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolproxy.id+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings+json":{"source":"iana","compressible":true},"application/vnd.ims.lti.v2.toolsettings.simple+json":{"source":"iana","compressible":true},"application/vnd.informedcontrol.rms+xml":{"source":"iana"},"application/vnd.informix-visionary":{"source":"iana"},"application/vnd.infotech.project":{"source":"iana"},"application/vnd.infotech.project+xml":{"source":"iana"},"application/vnd.innopath.wamp.notification":{"source":"iana"},"application/vnd.insors.igm":{"source":"iana","extensions":["igm"]},"application/vnd.intercon.formnet":{"source":"iana","extensions":["xpw","xpx"]},"application/vnd.intergeo":{"source":"iana","extensions":["i2g"]},"application/vnd.intertrust.digibox":{"source":"iana"},"application/vnd.intertrust.nncp":{"source":"iana"},"application/vnd.intu.qbo":{"source":"iana","extensions":["qbo"]},"application/vnd.intu.qfx":{"source":"iana","extensions":["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{"source":"iana"},"application/vnd.iptc.g2.conceptitem+xml":{"source":"iana"},"application/vnd.iptc.g2.knowledgeitem+xml":{"source":"iana"},"application/vnd.iptc.g2.newsitem+xml":{"source":"iana"},"application/vnd.iptc.g2.newsmessage+xml":{"source":"iana"},"application/vnd.iptc.g2.packageitem+xml":{"source":"iana"},"application/vnd.iptc.g2.planningitem+xml":{"source":"iana"},"application/vnd.ipunplugged.rcprofile":{"source":"iana","extensions":["rcprofile"]},"application/vnd.irepository.package+xml":{"source":"iana","extensions":["irp"]},"application/vnd.is-xpr":{"source":"iana","extensions":["xpr"]},"application/vnd.isac.fcs":{"source":"iana","extensions":["fcs"]},"application/vnd.jam":{"source":"iana","extensions":["jam"]},"application/vnd.japannet-directory-service":{"source":"iana"},"application/vnd.japannet-jpnstore-wakeup":{"source":"iana"},"application/vnd.japannet-payment-wakeup":{"source":"iana"},"application/vnd.japannet-registration":{"source":"iana"},"application/vnd.japannet-registration-wakeup":{"source":"iana"},"application/vnd.japannet-setstore-wakeup":{"source":"iana"},"application/vnd.japannet-verification":{"source":"iana"},"application/vnd.japannet-verification-wakeup":{"source":"iana"},"application/vnd.jcp.javame.midlet-rms":{"source":"iana","extensions":["rms"]},"application/vnd.jisp":{"source":"iana","extensions":["jisp"]},"application/vnd.joost.joda-archive":{"source":"iana","extensions":["joda"]},"application/vnd.jsk.isdn-ngn":{"source":"iana"},"application/vnd.kahootz":{"source":"iana","extensions":["ktz","ktr"]},"application/vnd.kde.karbon":{"source":"iana","extensions":["karbon"]},"application/vnd.kde.kchart":{"source":"iana","extensions":["chrt"]},"application/vnd.kde.kformula":{"source":"iana","extensions":["kfo"]},"application/vnd.kde.kivio":{"source":"iana","extensions":["flw"]},"application/vnd.kde.kontour":{"source":"iana","extensions":["kon"]},"application/vnd.kde.kpresenter":{"source":"iana","extensions":["kpr","kpt"]},"application/vnd.kde.kspread":{"source":"iana","extensions":["ksp"]},"application/vnd.kde.kword":{"source":"iana","extensions":["kwd","kwt"]},"application/vnd.kenameaapp":{"source":"iana","extensions":["htke"]},"application/vnd.kidspiration":{"source":"iana","extensions":["kia"]},"application/vnd.kinar":{"source":"iana","extensions":["kne","knp"]},"application/vnd.koan":{"source":"iana","extensions":["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{"source":"iana","extensions":["sse"]},"application/vnd.las.las+json":{"source":"iana","compressible":true},"application/vnd.las.las+xml":{"source":"iana","extensions":["lasxml"]},"application/vnd.liberty-request+xml":{"source":"iana"},"application/vnd.llamagraphics.life-balance.desktop":{"source":"iana","extensions":["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{"source":"iana","extensions":["lbe"]},"application/vnd.lotus-1-2-3":{"source":"iana","extensions":["123"]},"application/vnd.lotus-approach":{"source":"iana","extensions":["apr"]},"application/vnd.lotus-freelance":{"source":"iana","extensions":["pre"]},"application/vnd.lotus-notes":{"source":"iana","extensions":["nsf"]},"application/vnd.lotus-organizer":{"source":"iana","extensions":["org"]},"application/vnd.lotus-screencam":{"source":"iana","extensions":["scm"]},"application/vnd.lotus-wordpro":{"source":"iana","extensions":["lwp"]},"application/vnd.macports.portpkg":{"source":"iana","extensions":["portpkg"]},"application/vnd.mapbox-vector-tile":{"source":"iana"},"application/vnd.marlin.drm.actiontoken+xml":{"source":"iana"},"application/vnd.marlin.drm.conftoken+xml":{"source":"iana"},"application/vnd.marlin.drm.license+xml":{"source":"iana"},"application/vnd.marlin.drm.mdcf":{"source":"iana"},"application/vnd.mason+json":{"source":"iana","compressible":true},"application/vnd.maxmind.maxmind-db":{"source":"iana"},"application/vnd.mcd":{"source":"iana","extensions":["mcd"]},"application/vnd.medcalcdata":{"source":"iana","extensions":["mc1"]},"application/vnd.mediastation.cdkey":{"source":"iana","extensions":["cdkey"]},"application/vnd.meridian-slingshot":{"source":"iana"},"application/vnd.mfer":{"source":"iana","extensions":["mwf"]},"application/vnd.mfmp":{"source":"iana","extensions":["mfm"]},"application/vnd.micro+json":{"source":"iana","compressible":true},"application/vnd.micrografx.flo":{"source":"iana","extensions":["flo"]},"application/vnd.micrografx.igx":{"source":"iana","extensions":["igx"]},"application/vnd.microsoft.portable-executable":{"source":"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{"source":"iana"},"application/vnd.miele+json":{"source":"iana","compressible":true},"application/vnd.mif":{"source":"iana","extensions":["mif"]},"application/vnd.minisoft-hp3000-save":{"source":"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{"source":"iana"},"application/vnd.mobius.daf":{"source":"iana","extensions":["daf"]},"application/vnd.mobius.dis":{"source":"iana","extensions":["dis"]},"application/vnd.mobius.mbk":{"source":"iana","extensions":["mbk"]},"application/vnd.mobius.mqy":{"source":"iana","extensions":["mqy"]},"application/vnd.mobius.msl":{"source":"iana","extensions":["msl"]},"application/vnd.mobius.plc":{"source":"iana","extensions":["plc"]},"application/vnd.mobius.txf":{"source":"iana","extensions":["txf"]},"application/vnd.mophun.application":{"source":"iana","extensions":["mpn"]},"application/vnd.mophun.certificate":{"source":"iana","extensions":["mpc"]},"application/vnd.motorola.flexsuite":{"source":"iana"},"application/vnd.motorola.flexsuite.adsi":{"source":"iana"},"application/vnd.motorola.flexsuite.fis":{"source":"iana"},"application/vnd.motorola.flexsuite.gotap":{"source":"iana"},"application/vnd.motorola.flexsuite.kmr":{"source":"iana"},"application/vnd.motorola.flexsuite.ttc":{"source":"iana"},"application/vnd.motorola.flexsuite.wem":{"source":"iana"},"application/vnd.motorola.iprm":{"source":"iana"},"application/vnd.mozilla.xul+xml":{"source":"iana","compressible":true,"extensions":["xul"]},"application/vnd.ms-3mfdocument":{"source":"iana"},"application/vnd.ms-artgalry":{"source":"iana","extensions":["cil"]},"application/vnd.ms-asf":{"source":"iana"},"application/vnd.ms-cab-compressed":{"source":"iana","extensions":["cab"]},"application/vnd.ms-color.iccprofile":{"source":"apache"},"application/vnd.ms-excel":{"source":"iana","compressible":false,"extensions":["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{"source":"iana","extensions":["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{"source":"iana","extensions":["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{"source":"iana","extensions":["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{"source":"iana","extensions":["xltm"]},"application/vnd.ms-fontobject":{"source":"iana","compressible":true,"extensions":["eot"]},"application/vnd.ms-htmlhelp":{"source":"iana","extensions":["chm"]},"application/vnd.ms-ims":{"source":"iana","extensions":["ims"]},"application/vnd.ms-lrm":{"source":"iana","extensions":["lrm"]},"application/vnd.ms-office.activex+xml":{"source":"iana"},"application/vnd.ms-officetheme":{"source":"iana","extensions":["thmx"]},"application/vnd.ms-opentype":{"source":"apache","compressible":true},"application/vnd.ms-outlook":{"compressible":false,"extensions":["msg"]},"application/vnd.ms-package.obfuscated-opentype":{"source":"apache"},"application/vnd.ms-pki.seccat":{"source":"apache","extensions":["cat"]},"application/vnd.ms-pki.stl":{"source":"apache","extensions":["stl"]},"application/vnd.ms-playready.initiator+xml":{"source":"iana"},"application/vnd.ms-powerpoint":{"source":"iana","compressible":false,"extensions":["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{"source":"iana","extensions":["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{"source":"iana","extensions":["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{"source":"iana","extensions":["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{"source":"iana","extensions":["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{"source":"iana","extensions":["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{"source":"iana"},"application/vnd.ms-printing.printticket+xml":{"source":"apache"},"application/vnd.ms-printschematicket+xml":{"source":"iana"},"application/vnd.ms-project":{"source":"iana","extensions":["mpp","mpt"]},"application/vnd.ms-tnef":{"source":"iana"},"application/vnd.ms-windows.devicepairing":{"source":"iana"},"application/vnd.ms-windows.nwprinting.oob":{"source":"iana"},"application/vnd.ms-windows.printerpairing":{"source":"iana"},"application/vnd.ms-windows.wsd.oob":{"source":"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.lic-resp":{"source":"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{"source":"iana"},"application/vnd.ms-wmdrm.meter-resp":{"source":"iana"},"application/vnd.ms-word.document.macroenabled.12":{"source":"iana","extensions":["docm"]},"application/vnd.ms-word.template.macroenabled.12":{"source":"iana","extensions":["dotm"]},"application/vnd.ms-works":{"source":"iana","extensions":["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{"source":"iana","extensions":["wpl"]},"application/vnd.ms-xpsdocument":{"source":"iana","compressible":false,"extensions":["xps"]},"application/vnd.msa-disk-image":{"source":"iana"},"application/vnd.mseq":{"source":"iana","extensions":["mseq"]},"application/vnd.msign":{"source":"iana"},"application/vnd.multiad.creator":{"source":"iana"},"application/vnd.multiad.creator.cif":{"source":"iana"},"application/vnd.music-niff":{"source":"iana"},"application/vnd.musician":{"source":"iana","extensions":["mus"]},"application/vnd.muvee.style":{"source":"iana","extensions":["msty"]},"application/vnd.mynfc":{"source":"iana","extensions":["taglet"]},"application/vnd.ncd.control":{"source":"iana"},"application/vnd.ncd.reference":{"source":"iana"},"application/vnd.nearst.inv+json":{"source":"iana","compressible":true},"application/vnd.nervana":{"source":"iana"},"application/vnd.netfpx":{"source":"iana"},"application/vnd.neurolanguage.nlu":{"source":"iana","extensions":["nlu"]},"application/vnd.nintendo.nitro.rom":{"source":"iana"},"application/vnd.nintendo.snes.rom":{"source":"iana"},"application/vnd.nitf":{"source":"iana","extensions":["ntf","nitf"]},"application/vnd.noblenet-directory":{"source":"iana","extensions":["nnd"]},"application/vnd.noblenet-sealer":{"source":"iana","extensions":["nns"]},"application/vnd.noblenet-web":{"source":"iana","extensions":["nnw"]},"application/vnd.nokia.catalogs":{"source":"iana"},"application/vnd.nokia.conml+wbxml":{"source":"iana"},"application/vnd.nokia.conml+xml":{"source":"iana"},"application/vnd.nokia.iptv.config+xml":{"source":"iana"},"application/vnd.nokia.isds-radio-presets":{"source":"iana"},"application/vnd.nokia.landmark+wbxml":{"source":"iana"},"application/vnd.nokia.landmark+xml":{"source":"iana"},"application/vnd.nokia.landmarkcollection+xml":{"source":"iana"},"application/vnd.nokia.n-gage.ac+xml":{"source":"iana"},"application/vnd.nokia.n-gage.data":{"source":"iana","extensions":["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{"source":"iana","extensions":["n-gage"]},"application/vnd.nokia.ncd":{"source":"iana"},"application/vnd.nokia.pcd+wbxml":{"source":"iana"},"application/vnd.nokia.pcd+xml":{"source":"iana"},"application/vnd.nokia.radio-preset":{"source":"iana","extensions":["rpst"]},"application/vnd.nokia.radio-presets":{"source":"iana","extensions":["rpss"]},"application/vnd.novadigm.edm":{"source":"iana","extensions":["edm"]},"application/vnd.novadigm.edx":{"source":"iana","extensions":["edx"]},"application/vnd.novadigm.ext":{"source":"iana","extensions":["ext"]},"application/vnd.ntt-local.content-share":{"source":"iana"},"application/vnd.ntt-local.file-transfer":{"source":"iana"},"application/vnd.ntt-local.ogw_remote-access":{"source":"iana"},"application/vnd.ntt-local.sip-ta_remote":{"source":"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{"source":"iana"},"application/vnd.oasis.opendocument.chart":{"source":"iana","extensions":["odc"]},"application/vnd.oasis.opendocument.chart-template":{"source":"iana","extensions":["otc"]},"application/vnd.oasis.opendocument.database":{"source":"iana","extensions":["odb"]},"application/vnd.oasis.opendocument.formula":{"source":"iana","extensions":["odf"]},"application/vnd.oasis.opendocument.formula-template":{"source":"iana","extensions":["odft"]},"application/vnd.oasis.opendocument.graphics":{"source":"iana","compressible":false,"extensions":["odg"]},"application/vnd.oasis.opendocument.graphics-template":{"source":"iana","extensions":["otg"]},"application/vnd.oasis.opendocument.image":{"source":"iana","extensions":["odi"]},"application/vnd.oasis.opendocument.image-template":{"source":"iana","extensions":["oti"]},"application/vnd.oasis.opendocument.presentation":{"source":"iana","compressible":false,"extensions":["odp"]},"application/vnd.oasis.opendocument.presentation-template":{"source":"iana","extensions":["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{"source":"iana","compressible":false,"extensions":["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{"source":"iana","extensions":["ots"]},"application/vnd.oasis.opendocument.text":{"source":"iana","compressible":false,"extensions":["odt"]},"application/vnd.oasis.opendocument.text-master":{"source":"iana","extensions":["odm"]},"application/vnd.oasis.opendocument.text-template":{"source":"iana","extensions":["ott"]},"application/vnd.oasis.opendocument.text-web":{"source":"iana","extensions":["oth"]},"application/vnd.obn":{"source":"iana"},"application/vnd.ocf+cbor":{"source":"iana"},"application/vnd.oftn.l10n+json":{"source":"iana","compressible":true},"application/vnd.oipf.contentaccessdownload+xml":{"source":"iana"},"application/vnd.oipf.contentaccessstreaming+xml":{"source":"iana"},"application/vnd.oipf.cspg-hexbinary":{"source":"iana"},"application/vnd.oipf.dae.svg+xml":{"source":"iana"},"application/vnd.oipf.dae.xhtml+xml":{"source":"iana"},"application/vnd.oipf.mippvcontrolmessage+xml":{"source":"iana"},"application/vnd.oipf.pae.gem":{"source":"iana"},"application/vnd.oipf.spdiscovery+xml":{"source":"iana"},"application/vnd.oipf.spdlist+xml":{"source":"iana"},"application/vnd.oipf.ueprofile+xml":{"source":"iana"},"application/vnd.oipf.userprofile+xml":{"source":"iana"},"application/vnd.olpc-sugar":{"source":"iana","extensions":["xo"]},"application/vnd.oma-scws-config":{"source":"iana"},"application/vnd.oma-scws-http-request":{"source":"iana"},"application/vnd.oma-scws-http-response":{"source":"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{"source":"iana"},"application/vnd.oma.bcast.drm-trigger+xml":{"source":"iana"},"application/vnd.oma.bcast.imd+xml":{"source":"iana"},"application/vnd.oma.bcast.ltkm":{"source":"iana"},"application/vnd.oma.bcast.notification+xml":{"source":"iana"},"application/vnd.oma.bcast.provisioningtrigger":{"source":"iana"},"application/vnd.oma.bcast.sgboot":{"source":"iana"},"application/vnd.oma.bcast.sgdd+xml":{"source":"iana"},"application/vnd.oma.bcast.sgdu":{"source":"iana"},"application/vnd.oma.bcast.simple-symbol-container":{"source":"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{"source":"iana"},"application/vnd.oma.bcast.sprov+xml":{"source":"iana"},"application/vnd.oma.bcast.stkm":{"source":"iana"},"application/vnd.oma.cab-address-book+xml":{"source":"iana"},"application/vnd.oma.cab-feature-handler+xml":{"source":"iana"},"application/vnd.oma.cab-pcc+xml":{"source":"iana"},"application/vnd.oma.cab-subs-invite+xml":{"source":"iana"},"application/vnd.oma.cab-user-prefs+xml":{"source":"iana"},"application/vnd.oma.dcd":{"source":"iana"},"application/vnd.oma.dcdc":{"source":"iana"},"application/vnd.oma.dd2+xml":{"source":"iana","extensions":["dd2"]},"application/vnd.oma.drm.risd+xml":{"source":"iana"},"application/vnd.oma.group-usage-list+xml":{"source":"iana"},"application/vnd.oma.lwm2m+json":{"source":"iana","compressible":true},"application/vnd.oma.lwm2m+tlv":{"source":"iana"},"application/vnd.oma.pal+xml":{"source":"iana"},"application/vnd.oma.poc.detailed-progress-report+xml":{"source":"iana"},"application/vnd.oma.poc.final-report+xml":{"source":"iana"},"application/vnd.oma.poc.groups+xml":{"source":"iana"},"application/vnd.oma.poc.invocation-descriptor+xml":{"source":"iana"},"application/vnd.oma.poc.optimized-progress-report+xml":{"source":"iana"},"application/vnd.oma.push":{"source":"iana"},"application/vnd.oma.scidm.messages+xml":{"source":"iana"},"application/vnd.oma.xcap-directory+xml":{"source":"iana"},"application/vnd.omads-email+xml":{"source":"iana"},"application/vnd.omads-file+xml":{"source":"iana"},"application/vnd.omads-folder+xml":{"source":"iana"},"application/vnd.omaloc-supl-init":{"source":"iana"},"application/vnd.onepager":{"source":"iana"},"application/vnd.onepagertamp":{"source":"iana"},"application/vnd.onepagertamx":{"source":"iana"},"application/vnd.onepagertat":{"source":"iana"},"application/vnd.onepagertatp":{"source":"iana"},"application/vnd.onepagertatx":{"source":"iana"},"application/vnd.openblox.game+xml":{"source":"iana"},"application/vnd.openblox.game-binary":{"source":"iana"},"application/vnd.openeye.oeb":{"source":"iana"},"application/vnd.openofficeorg.extension":{"source":"apache","extensions":["oxt"]},"application/vnd.openstreetmap.data+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.drawing+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{"source":"iana","compressible":false,"extensions":["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slide":{"source":"iana","extensions":["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{"source":"iana","extensions":["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.template":{"source":"iana","extensions":["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"source":"iana","compressible":false,"extensions":["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{"source":"iana","extensions":["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.theme+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.vmldrawing":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{"source":"iana","compressible":false,"extensions":["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{"source":"iana","extensions":["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{"source":"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{"source":"iana"},"application/vnd.openxmlformats-package.core-properties+xml":{"source":"iana"},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{"source":"iana"},"application/vnd.openxmlformats-package.relationships+xml":{"source":"iana"},"application/vnd.oracle.resource+json":{"source":"iana","compressible":true},"application/vnd.orange.indata":{"source":"iana"},"application/vnd.osa.netdeploy":{"source":"iana"},"application/vnd.osgeo.mapguide.package":{"source":"iana","extensions":["mgp"]},"application/vnd.osgi.bundle":{"source":"iana"},"application/vnd.osgi.dp":{"source":"iana","extensions":["dp"]},"application/vnd.osgi.subsystem":{"source":"iana","extensions":["esa"]},"application/vnd.otps.ct-kip+xml":{"source":"iana"},"application/vnd.oxli.countgraph":{"source":"iana"},"application/vnd.pagerduty+json":{"source":"iana","compressible":true},"application/vnd.palm":{"source":"iana","extensions":["pdb","pqa","oprc"]},"application/vnd.panoply":{"source":"iana"},"application/vnd.paos+xml":{"source":"iana"},"application/vnd.paos.xml":{"source":"apache"},"application/vnd.patentdive":{"source":"iana"},"application/vnd.pawaafile":{"source":"iana","extensions":["paw"]},"application/vnd.pcos":{"source":"iana"},"application/vnd.pg.format":{"source":"iana","extensions":["str"]},"application/vnd.pg.osasli":{"source":"iana","extensions":["ei6"]},"application/vnd.piaccess.application-licence":{"source":"iana"},"application/vnd.picsel":{"source":"iana","extensions":["efif"]},"application/vnd.pmi.widget":{"source":"iana","extensions":["wg"]},"application/vnd.poc.group-advertisement+xml":{"source":"iana"},"application/vnd.pocketlearn":{"source":"iana","extensions":["plf"]},"application/vnd.powerbuilder6":{"source":"iana","extensions":["pbd"]},"application/vnd.powerbuilder6-s":{"source":"iana"},"application/vnd.powerbuilder7":{"source":"iana"},"application/vnd.powerbuilder7-s":{"source":"iana"},"application/vnd.powerbuilder75":{"source":"iana"},"application/vnd.powerbuilder75-s":{"source":"iana"},"application/vnd.preminet":{"source":"iana"},"application/vnd.previewsystems.box":{"source":"iana","extensions":["box"]},"application/vnd.proteus.magazine":{"source":"iana","extensions":["mgz"]},"application/vnd.publishare-delta-tree":{"source":"iana","extensions":["qps"]},"application/vnd.pvi.ptid1":{"source":"iana","extensions":["ptid"]},"application/vnd.pwg-multiplexed":{"source":"iana"},"application/vnd.pwg-xhtml-print+xml":{"source":"iana"},"application/vnd.qualcomm.brew-app-res":{"source":"iana"},"application/vnd.quarantainenet":{"source":"iana"},"application/vnd.quark.quarkxpress":{"source":"iana","extensions":["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{"source":"iana"},"application/vnd.radisys.moml+xml":{"source":"iana"},"application/vnd.radisys.msml+xml":{"source":"iana"},"application/vnd.radisys.msml-audit+xml":{"source":"iana"},"application/vnd.radisys.msml-audit-conf+xml":{"source":"iana"},"application/vnd.radisys.msml-audit-conn+xml":{"source":"iana"},"application/vnd.radisys.msml-audit-dialog+xml":{"source":"iana"},"application/vnd.radisys.msml-audit-stream+xml":{"source":"iana"},"application/vnd.radisys.msml-conf+xml":{"source":"iana"},"application/vnd.radisys.msml-dialog+xml":{"source":"iana"},"application/vnd.radisys.msml-dialog-base+xml":{"source":"iana"},"application/vnd.radisys.msml-dialog-fax-detect+xml":{"source":"iana"},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{"source":"iana"},"application/vnd.radisys.msml-dialog-group+xml":{"source":"iana"},"application/vnd.radisys.msml-dialog-speech+xml":{"source":"iana"},"application/vnd.radisys.msml-dialog-transform+xml":{"source":"iana"},"application/vnd.rainstor.data":{"source":"iana"},"application/vnd.rapid":{"source":"iana"},"application/vnd.rar":{"source":"iana"},"application/vnd.realvnc.bed":{"source":"iana","extensions":["bed"]},"application/vnd.recordare.musicxml":{"source":"iana","extensions":["mxl"]},"application/vnd.recordare.musicxml+xml":{"source":"iana","extensions":["musicxml"]},"application/vnd.renlearn.rlprint":{"source":"iana"},"application/vnd.restful+json":{"source":"iana","compressible":true},"application/vnd.rig.cryptonote":{"source":"iana","extensions":["cryptonote"]},"application/vnd.rim.cod":{"source":"apache","extensions":["cod"]},"application/vnd.rn-realmedia":{"source":"apache","extensions":["rm"]},"application/vnd.rn-realmedia-vbr":{"source":"apache","extensions":["rmvb"]},"application/vnd.route66.link66+xml":{"source":"iana","extensions":["link66"]},"application/vnd.rs-274x":{"source":"iana"},"application/vnd.ruckus.download":{"source":"iana"},"application/vnd.s3sms":{"source":"iana"},"application/vnd.sailingtracker.track":{"source":"iana","extensions":["st"]},"application/vnd.sbm.cid":{"source":"iana"},"application/vnd.sbm.mid2":{"source":"iana"},"application/vnd.scribus":{"source":"iana"},"application/vnd.sealed.3df":{"source":"iana"},"application/vnd.sealed.csf":{"source":"iana"},"application/vnd.sealed.doc":{"source":"iana"},"application/vnd.sealed.eml":{"source":"iana"},"application/vnd.sealed.mht":{"source":"iana"},"application/vnd.sealed.net":{"source":"iana"},"application/vnd.sealed.ppt":{"source":"iana"},"application/vnd.sealed.tiff":{"source":"iana"},"application/vnd.sealed.xls":{"source":"iana"},"application/vnd.sealedmedia.softseal.html":{"source":"iana"},"application/vnd.sealedmedia.softseal.pdf":{"source":"iana"},"application/vnd.seemail":{"source":"iana","extensions":["see"]},"application/vnd.sema":{"source":"iana","extensions":["sema"]},"application/vnd.semd":{"source":"iana","extensions":["semd"]},"application/vnd.semf":{"source":"iana","extensions":["semf"]},"application/vnd.shana.informed.formdata":{"source":"iana","extensions":["ifm"]},"application/vnd.shana.informed.formtemplate":{"source":"iana","extensions":["itp"]},"application/vnd.shana.informed.interchange":{"source":"iana","extensions":["iif"]},"application/vnd.shana.informed.package":{"source":"iana","extensions":["ipk"]},"application/vnd.sigrok.session":{"source":"iana"},"application/vnd.simtech-mindmapper":{"source":"iana","extensions":["twd","twds"]},"application/vnd.siren+json":{"source":"iana","compressible":true},"application/vnd.smaf":{"source":"iana","extensions":["mmf"]},"application/vnd.smart.notebook":{"source":"iana"},"application/vnd.smart.teacher":{"source":"iana","extensions":["teacher"]},"application/vnd.software602.filler.form+xml":{"source":"iana"},"application/vnd.software602.filler.form-xml-zip":{"source":"iana"},"application/vnd.solent.sdkm+xml":{"source":"iana","extensions":["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{"source":"iana","extensions":["dxp"]},"application/vnd.spotfire.sfs":{"source":"iana","extensions":["sfs"]},"application/vnd.sqlite3":{"source":"iana"},"application/vnd.sss-cod":{"source":"iana"},"application/vnd.sss-dtf":{"source":"iana"},"application/vnd.sss-ntf":{"source":"iana"},"application/vnd.stardivision.calc":{"source":"apache","extensions":["sdc"]},"application/vnd.stardivision.draw":{"source":"apache","extensions":["sda"]},"application/vnd.stardivision.impress":{"source":"apache","extensions":["sdd"]},"application/vnd.stardivision.math":{"source":"apache","extensions":["smf"]},"application/vnd.stardivision.writer":{"source":"apache","extensions":["sdw","vor"]},"application/vnd.stardivision.writer-global":{"source":"apache","extensions":["sgl"]},"application/vnd.stepmania.package":{"source":"iana","extensions":["smzip"]},"application/vnd.stepmania.stepchart":{"source":"iana","extensions":["sm"]},"application/vnd.street-stream":{"source":"iana"},"application/vnd.sun.wadl+xml":{"source":"iana","compressible":true,"extensions":["wadl"]},"application/vnd.sun.xml.calc":{"source":"apache","extensions":["sxc"]},"application/vnd.sun.xml.calc.template":{"source":"apache","extensions":["stc"]},"application/vnd.sun.xml.draw":{"source":"apache","extensions":["sxd"]},"application/vnd.sun.xml.draw.template":{"source":"apache","extensions":["std"]},"application/vnd.sun.xml.impress":{"source":"apache","extensions":["sxi"]},"application/vnd.sun.xml.impress.template":{"source":"apache","extensions":["sti"]},"application/vnd.sun.xml.math":{"source":"apache","extensions":["sxm"]},"application/vnd.sun.xml.writer":{"source":"apache","extensions":["sxw"]},"application/vnd.sun.xml.writer.global":{"source":"apache","extensions":["sxg"]},"application/vnd.sun.xml.writer.template":{"source":"apache","extensions":["stw"]},"application/vnd.sus-calendar":{"source":"iana","extensions":["sus","susp"]},"application/vnd.svd":{"source":"iana","extensions":["svd"]},"application/vnd.swiftview-ics":{"source":"iana"},"application/vnd.symbian.install":{"source":"apache","extensions":["sis","sisx"]},"application/vnd.syncml+xml":{"source":"iana","extensions":["xsm"]},"application/vnd.syncml.dm+wbxml":{"source":"iana","extensions":["bdm"]},"application/vnd.syncml.dm+xml":{"source":"iana","extensions":["xdm"]},"application/vnd.syncml.dm.notification":{"source":"iana"},"application/vnd.syncml.dmddf+wbxml":{"source":"iana"},"application/vnd.syncml.dmddf+xml":{"source":"iana"},"application/vnd.syncml.dmtnds+wbxml":{"source":"iana"},"application/vnd.syncml.dmtnds+xml":{"source":"iana"},"application/vnd.syncml.ds.notification":{"source":"iana"},"application/vnd.tableschema+json":{"source":"iana","compressible":true},"application/vnd.tao.intent-module-archive":{"source":"iana","extensions":["tao"]},"application/vnd.tcpdump.pcap":{"source":"iana","extensions":["pcap","cap","dmp"]},"application/vnd.tmd.mediaflex.api+xml":{"source":"iana"},"application/vnd.tml":{"source":"iana"},"application/vnd.tmobile-livetv":{"source":"iana","extensions":["tmo"]},"application/vnd.tri.onesource":{"source":"iana"},"application/vnd.trid.tpt":{"source":"iana","extensions":["tpt"]},"application/vnd.triscape.mxs":{"source":"iana","extensions":["mxs"]},"application/vnd.trueapp":{"source":"iana","extensions":["tra"]},"application/vnd.truedoc":{"source":"iana"},"application/vnd.ubisoft.webplayer":{"source":"iana"},"application/vnd.ufdl":{"source":"iana","extensions":["ufd","ufdl"]},"application/vnd.uiq.theme":{"source":"iana","extensions":["utz"]},"application/vnd.umajin":{"source":"iana","extensions":["umj"]},"application/vnd.unity":{"source":"iana","extensions":["unityweb"]},"application/vnd.uoml+xml":{"source":"iana","extensions":["uoml"]},"application/vnd.uplanet.alert":{"source":"iana"},"application/vnd.uplanet.alert-wbxml":{"source":"iana"},"application/vnd.uplanet.bearer-choice":{"source":"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{"source":"iana"},"application/vnd.uplanet.cacheop":{"source":"iana"},"application/vnd.uplanet.cacheop-wbxml":{"source":"iana"},"application/vnd.uplanet.channel":{"source":"iana"},"application/vnd.uplanet.channel-wbxml":{"source":"iana"},"application/vnd.uplanet.list":{"source":"iana"},"application/vnd.uplanet.list-wbxml":{"source":"iana"},"application/vnd.uplanet.listcmd":{"source":"iana"},"application/vnd.uplanet.listcmd-wbxml":{"source":"iana"},"application/vnd.uplanet.signal":{"source":"iana"},"application/vnd.uri-map":{"source":"iana"},"application/vnd.valve.source.material":{"source":"iana"},"application/vnd.vcx":{"source":"iana","extensions":["vcx"]},"application/vnd.vd-study":{"source":"iana"},"application/vnd.vectorworks":{"source":"iana"},"application/vnd.vel+json":{"source":"iana","compressible":true},"application/vnd.verimatrix.vcas":{"source":"iana"},"application/vnd.vidsoft.vidconference":{"source":"iana"},"application/vnd.visio":{"source":"iana","extensions":["vsd","vst","vss","vsw"]},"application/vnd.visionary":{"source":"iana","extensions":["vis"]},"application/vnd.vividence.scriptfile":{"source":"iana"},"application/vnd.vsf":{"source":"iana","extensions":["vsf"]},"application/vnd.wap.sic":{"source":"iana"},"application/vnd.wap.slc":{"source":"iana"},"application/vnd.wap.wbxml":{"source":"iana","extensions":["wbxml"]},"application/vnd.wap.wmlc":{"source":"iana","extensions":["wmlc"]},"application/vnd.wap.wmlscriptc":{"source":"iana","extensions":["wmlsc"]},"application/vnd.webturbo":{"source":"iana","extensions":["wtb"]},"application/vnd.wfa.p2p":{"source":"iana"},"application/vnd.wfa.wsc":{"source":"iana"},"application/vnd.windows.devicepairing":{"source":"iana"},"application/vnd.wmc":{"source":"iana"},"application/vnd.wmf.bootstrap":{"source":"iana"},"application/vnd.wolfram.mathematica":{"source":"iana"},"application/vnd.wolfram.mathematica.package":{"source":"iana"},"application/vnd.wolfram.player":{"source":"iana","extensions":["nbp"]},"application/vnd.wordperfect":{"source":"iana","extensions":["wpd"]},"application/vnd.wqd":{"source":"iana","extensions":["wqd"]},"application/vnd.wrq-hp3000-labelled":{"source":"iana"},"application/vnd.wt.stf":{"source":"iana","extensions":["stf"]},"application/vnd.wv.csp+wbxml":{"source":"iana"},"application/vnd.wv.csp+xml":{"source":"iana"},"application/vnd.wv.ssp+xml":{"source":"iana"},"application/vnd.xacml+json":{"source":"iana","compressible":true},"application/vnd.xara":{"source":"iana","extensions":["xar"]},"application/vnd.xfdl":{"source":"iana","extensions":["xfdl"]},"application/vnd.xfdl.webform":{"source":"iana"},"application/vnd.xmi+xml":{"source":"iana"},"application/vnd.xmpie.cpkg":{"source":"iana"},"application/vnd.xmpie.dpkg":{"source":"iana"},"application/vnd.xmpie.plan":{"source":"iana"},"application/vnd.xmpie.ppkg":{"source":"iana"},"application/vnd.xmpie.xlim":{"source":"iana"},"application/vnd.yamaha.hv-dic":{"source":"iana","extensions":["hvd"]},"application/vnd.yamaha.hv-script":{"source":"iana","extensions":["hvs"]},"application/vnd.yamaha.hv-voice":{"source":"iana","extensions":["hvp"]},"application/vnd.yamaha.openscoreformat":{"source":"iana","extensions":["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{"source":"iana","extensions":["osfpvg"]},"application/vnd.yamaha.remote-setup":{"source":"iana"},"application/vnd.yamaha.smaf-audio":{"source":"iana","extensions":["saf"]},"application/vnd.yamaha.smaf-phrase":{"source":"iana","extensions":["spf"]},"application/vnd.yamaha.through-ngn":{"source":"iana"},"application/vnd.yamaha.tunnel-udpencap":{"source":"iana"},"application/vnd.yaoweme":{"source":"iana"},"application/vnd.yellowriver-custom-menu":{"source":"iana","extensions":["cmp"]},"application/vnd.youtube.yt":{"source":"iana"},"application/vnd.zul":{"source":"iana","extensions":["zir","zirz"]},"application/vnd.zzazz.deck+xml":{"source":"iana","extensions":["zaz"]},"application/voicexml+xml":{"source":"iana","extensions":["vxml"]},"application/voucher-cms+json":{"source":"iana","compressible":true},"application/vq-rtcpxr":{"source":"iana"},"application/wasm":{"compressible":true,"extensions":["wasm"]},"application/watcherinfo+xml":{"source":"iana"},"application/webpush-options+json":{"source":"iana","compressible":true},"application/whoispp-query":{"source":"iana"},"application/whoispp-response":{"source":"iana"},"application/widget":{"source":"iana","extensions":["wgt"]},"application/winhlp":{"source":"apache","extensions":["hlp"]},"application/wita":{"source":"iana"},"application/wordperfect5.1":{"source":"iana"},"application/wsdl+xml":{"source":"iana","extensions":["wsdl"]},"application/wspolicy+xml":{"source":"iana","extensions":["wspolicy"]},"application/x-7z-compressed":{"source":"apache","compressible":false,"extensions":["7z"]},"application/x-abiword":{"source":"apache","extensions":["abw"]},"application/x-ace-compressed":{"source":"apache","extensions":["ace"]},"application/x-amf":{"source":"apache"},"application/x-apple-diskimage":{"source":"apache","extensions":["dmg"]},"application/x-arj":{"compressible":false,"extensions":["arj"]},"application/x-authorware-bin":{"source":"apache","extensions":["aab","x32","u32","vox"]},"application/x-authorware-map":{"source":"apache","extensions":["aam"]},"application/x-authorware-seg":{"source":"apache","extensions":["aas"]},"application/x-bcpio":{"source":"apache","extensions":["bcpio"]},"application/x-bdoc":{"compressible":false,"extensions":["bdoc"]},"application/x-bittorrent":{"source":"apache","extensions":["torrent"]},"application/x-blorb":{"source":"apache","extensions":["blb","blorb"]},"application/x-bzip":{"source":"apache","compressible":false,"extensions":["bz"]},"application/x-bzip2":{"source":"apache","compressible":false,"extensions":["bz2","boz"]},"application/x-cbr":{"source":"apache","extensions":["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{"source":"apache","extensions":["vcd"]},"application/x-cfs-compressed":{"source":"apache","extensions":["cfs"]},"application/x-chat":{"source":"apache","extensions":["chat"]},"application/x-chess-pgn":{"source":"apache","extensions":["pgn"]},"application/x-chrome-extension":{"extensions":["crx"]},"application/x-cocoa":{"source":"nginx","extensions":["cco"]},"application/x-compress":{"source":"apache"},"application/x-conference":{"source":"apache","extensions":["nsc"]},"application/x-cpio":{"source":"apache","extensions":["cpio"]},"application/x-csh":{"source":"apache","extensions":["csh"]},"application/x-deb":{"compressible":false},"application/x-debian-package":{"source":"apache","extensions":["deb","udeb"]},"application/x-dgc-compressed":{"source":"apache","extensions":["dgc"]},"application/x-director":{"source":"apache","extensions":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{"source":"apache","extensions":["wad"]},"application/x-dtbncx+xml":{"source":"apache","extensions":["ncx"]},"application/x-dtbook+xml":{"source":"apache","extensions":["dtb"]},"application/x-dtbresource+xml":{"source":"apache","extensions":["res"]},"application/x-dvi":{"source":"apache","compressible":false,"extensions":["dvi"]},"application/x-envoy":{"source":"apache","extensions":["evy"]},"application/x-eva":{"source":"apache","extensions":["eva"]},"application/x-font-bdf":{"source":"apache","extensions":["bdf"]},"application/x-font-dos":{"source":"apache"},"application/x-font-framemaker":{"source":"apache"},"application/x-font-ghostscript":{"source":"apache","extensions":["gsf"]},"application/x-font-libgrx":{"source":"apache"},"application/x-font-linux-psf":{"source":"apache","extensions":["psf"]},"application/x-font-pcf":{"source":"apache","extensions":["pcf"]},"application/x-font-snf":{"source":"apache","extensions":["snf"]},"application/x-font-speedo":{"source":"apache"},"application/x-font-sunos-news":{"source":"apache"},"application/x-font-type1":{"source":"apache","extensions":["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{"source":"apache"},"application/x-freearc":{"source":"apache","extensions":["arc"]},"application/x-futuresplash":{"source":"apache","extensions":["spl"]},"application/x-gca-compressed":{"source":"apache","extensions":["gca"]},"application/x-glulx":{"source":"apache","extensions":["ulx"]},"application/x-gnumeric":{"source":"apache","extensions":["gnumeric"]},"application/x-gramps-xml":{"source":"apache","extensions":["gramps"]},"application/x-gtar":{"source":"apache","extensions":["gtar"]},"application/x-gzip":{"source":"apache"},"application/x-hdf":{"source":"apache","extensions":["hdf"]},"application/x-httpd-php":{"compressible":true,"extensions":["php"]},"application/x-install-instructions":{"source":"apache","extensions":["install"]},"application/x-iso9660-image":{"source":"apache","extensions":["iso"]},"application/x-java-archive-diff":{"source":"nginx","extensions":["jardiff"]},"application/x-java-jnlp-file":{"source":"apache","compressible":false,"extensions":["jnlp"]},"application/x-javascript":{"compressible":true},"application/x-latex":{"source":"apache","compressible":false,"extensions":["latex"]},"application/x-lua-bytecode":{"extensions":["luac"]},"application/x-lzh-compressed":{"source":"apache","extensions":["lzh","lha"]},"application/x-makeself":{"source":"nginx","extensions":["run"]},"application/x-mie":{"source":"apache","extensions":["mie"]},"application/x-mobipocket-ebook":{"source":"apache","extensions":["prc","mobi"]},"application/x-mpegurl":{"compressible":false},"application/x-ms-application":{"source":"apache","extensions":["application"]},"application/x-ms-shortcut":{"source":"apache","extensions":["lnk"]},"application/x-ms-wmd":{"source":"apache","extensions":["wmd"]},"application/x-ms-wmz":{"source":"apache","extensions":["wmz"]},"application/x-ms-xbap":{"source":"apache","extensions":["xbap"]},"application/x-msaccess":{"source":"apache","extensions":["mdb"]},"application/x-msbinder":{"source":"apache","extensions":["obd"]},"application/x-mscardfile":{"source":"apache","extensions":["crd"]},"application/x-msclip":{"source":"apache","extensions":["clp"]},"application/x-msdos-program":{"extensions":["exe"]},"application/x-msdownload":{"source":"apache","extensions":["exe","dll","com","bat","msi"]},"application/x-msmediaview":{"source":"apache","extensions":["mvb","m13","m14"]},"application/x-msmetafile":{"source":"apache","extensions":["wmf","wmz","emf","emz"]},"application/x-msmoney":{"source":"apache","extensions":["mny"]},"application/x-mspublisher":{"source":"apache","extensions":["pub"]},"application/x-msschedule":{"source":"apache","extensions":["scd"]},"application/x-msterminal":{"source":"apache","extensions":["trm"]},"application/x-mswrite":{"source":"apache","extensions":["wri"]},"application/x-netcdf":{"source":"apache","extensions":["nc","cdf"]},"application/x-ns-proxy-autoconfig":{"compressible":true,"extensions":["pac"]},"application/x-nzb":{"source":"apache","extensions":["nzb"]},"application/x-perl":{"source":"nginx","extensions":["pl","pm"]},"application/x-pilot":{"source":"nginx","extensions":["prc","pdb"]},"application/x-pkcs12":{"source":"apache","compressible":false,"extensions":["p12","pfx"]},"application/x-pkcs7-certificates":{"source":"apache","extensions":["p7b","spc"]},"application/x-pkcs7-certreqresp":{"source":"apache","extensions":["p7r"]},"application/x-rar-compressed":{"source":"apache","compressible":false,"extensions":["rar"]},"application/x-redhat-package-manager":{"source":"nginx","extensions":["rpm"]},"application/x-research-info-systems":{"source":"apache","extensions":["ris"]},"application/x-sea":{"source":"nginx","extensions":["sea"]},"application/x-sh":{"source":"apache","compressible":true,"extensions":["sh"]},"application/x-shar":{"source":"apache","extensions":["shar"]},"application/x-shockwave-flash":{"source":"apache","compressible":false,"extensions":["swf"]},"application/x-silverlight-app":{"source":"apache","extensions":["xap"]},"application/x-sql":{"source":"apache","extensions":["sql"]},"application/x-stuffit":{"source":"apache","compressible":false,"extensions":["sit"]},"application/x-stuffitx":{"source":"apache","extensions":["sitx"]},"application/x-subrip":{"source":"apache","extensions":["srt"]},"application/x-sv4cpio":{"source":"apache","extensions":["sv4cpio"]},"application/x-sv4crc":{"source":"apache","extensions":["sv4crc"]},"application/x-t3vm-image":{"source":"apache","extensions":["t3"]},"application/x-tads":{"source":"apache","extensions":["gam"]},"application/x-tar":{"source":"apache","compressible":true,"extensions":["tar"]},"application/x-tcl":{"source":"apache","extensions":["tcl","tk"]},"application/x-tex":{"source":"apache","extensions":["tex"]},"application/x-tex-tfm":{"source":"apache","extensions":["tfm"]},"application/x-texinfo":{"source":"apache","extensions":["texinfo","texi"]},"application/x-tgif":{"source":"apache","extensions":["obj"]},"application/x-ustar":{"source":"apache","extensions":["ustar"]},"application/x-virtualbox-hdd":{"compressible":true,"extensions":["hdd"]},"application/x-virtualbox-ova":{"compressible":true,"extensions":["ova"]},"application/x-virtualbox-ovf":{"compressible":true,"extensions":["ovf"]},"application/x-virtualbox-vbox":{"compressible":true,"extensions":["vbox"]},"application/x-virtualbox-vbox-extpack":{"compressible":false,"extensions":["vbox-extpack"]},"application/x-virtualbox-vdi":{"compressible":true,"extensions":["vdi"]},"application/x-virtualbox-vhd":{"compressible":true,"extensions":["vhd"]},"application/x-virtualbox-vmdk":{"compressible":true,"extensions":["vmdk"]},"application/x-wais-source":{"source":"apache","extensions":["src"]},"application/x-web-app-manifest+json":{"compressible":true,"extensions":["webapp"]},"application/x-www-form-urlencoded":{"source":"iana","compressible":true},"application/x-x509-ca-cert":{"source":"apache","extensions":["der","crt","pem"]},"application/x-xfig":{"source":"apache","extensions":["fig"]},"application/x-xliff+xml":{"source":"apache","extensions":["xlf"]},"application/x-xpinstall":{"source":"apache","compressible":false,"extensions":["xpi"]},"application/x-xz":{"source":"apache","extensions":["xz"]},"application/x-zmachine":{"source":"apache","extensions":["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{"source":"iana"},"application/xacml+xml":{"source":"iana"},"application/xaml+xml":{"source":"apache","extensions":["xaml"]},"application/xcap-att+xml":{"source":"iana"},"application/xcap-caps+xml":{"source":"iana"},"application/xcap-diff+xml":{"source":"iana","extensions":["xdf"]},"application/xcap-el+xml":{"source":"iana"},"application/xcap-error+xml":{"source":"iana"},"application/xcap-ns+xml":{"source":"iana"},"application/xcon-conference-info+xml":{"source":"iana"},"application/xcon-conference-info-diff+xml":{"source":"iana"},"application/xenc+xml":{"source":"iana","extensions":["xenc"]},"application/xhtml+xml":{"source":"iana","compressible":true,"extensions":["xhtml","xht"]},"application/xhtml-voice+xml":{"source":"apache"},"application/xml":{"source":"iana","compressible":true,"extensions":["xml","xsl","xsd","rng"]},"application/xml-dtd":{"source":"iana","compressible":true,"extensions":["dtd"]},"application/xml-external-parsed-entity":{"source":"iana"},"application/xml-patch+xml":{"source":"iana"},"application/xmpp+xml":{"source":"iana"},"application/xop+xml":{"source":"iana","compressible":true,"extensions":["xop"]},"application/xproc+xml":{"source":"apache","extensions":["xpl"]},"application/xslt+xml":{"source":"iana","extensions":["xslt"]},"application/xspf+xml":{"source":"apache","extensions":["xspf"]},"application/xv+xml":{"source":"iana","extensions":["mxml","xhvml","xvml","xvm"]},"application/yang":{"source":"iana","extensions":["yang"]},"application/yang-data+json":{"source":"iana","compressible":true},"application/yang-data+xml":{"source":"iana"},"application/yang-patch+json":{"source":"iana","compressible":true},"application/yang-patch+xml":{"source":"iana"},"application/yin+xml":{"source":"iana","extensions":["yin"]},"application/zip":{"source":"iana","compressible":false,"extensions":["zip"]},"application/zlib":{"source":"iana"},"audio/1d-interleaved-parityfec":{"source":"iana"},"audio/32kadpcm":{"source":"iana"},"audio/3gpp":{"source":"iana","compressible":false,"extensions":["3gpp"]},"audio/3gpp2":{"source":"iana"},"audio/ac3":{"source":"iana"},"audio/adpcm":{"source":"apache","extensions":["adp"]},"audio/amr":{"source":"iana"},"audio/amr-wb":{"source":"iana"},"audio/amr-wb+":{"source":"iana"},"audio/aptx":{"source":"iana"},"audio/asc":{"source":"iana"},"audio/atrac-advanced-lossless":{"source":"iana"},"audio/atrac-x":{"source":"iana"},"audio/atrac3":{"source":"iana"},"audio/basic":{"source":"iana","compressible":false,"extensions":["au","snd"]},"audio/bv16":{"source":"iana"},"audio/bv32":{"source":"iana"},"audio/clearmode":{"source":"iana"},"audio/cn":{"source":"iana"},"audio/dat12":{"source":"iana"},"audio/dls":{"source":"iana"},"audio/dsr-es201108":{"source":"iana"},"audio/dsr-es202050":{"source":"iana"},"audio/dsr-es202211":{"source":"iana"},"audio/dsr-es202212":{"source":"iana"},"audio/dv":{"source":"iana"},"audio/dvi4":{"source":"iana"},"audio/eac3":{"source":"iana"},"audio/encaprtp":{"source":"iana"},"audio/evrc":{"source":"iana"},"audio/evrc-qcp":{"source":"iana"},"audio/evrc0":{"source":"iana"},"audio/evrc1":{"source":"iana"},"audio/evrcb":{"source":"iana"},"audio/evrcb0":{"source":"iana"},"audio/evrcb1":{"source":"iana"},"audio/evrcnw":{"source":"iana"},"audio/evrcnw0":{"source":"iana"},"audio/evrcnw1":{"source":"iana"},"audio/evrcwb":{"source":"iana"},"audio/evrcwb0":{"source":"iana"},"audio/evrcwb1":{"source":"iana"},"audio/evs":{"source":"iana"},"audio/fwdred":{"source":"iana"},"audio/g711-0":{"source":"iana"},"audio/g719":{"source":"iana"},"audio/g722":{"source":"iana"},"audio/g7221":{"source":"iana"},"audio/g723":{"source":"iana"},"audio/g726-16":{"source":"iana"},"audio/g726-24":{"source":"iana"},"audio/g726-32":{"source":"iana"},"audio/g726-40":{"source":"iana"},"audio/g728":{"source":"iana"},"audio/g729":{"source":"iana"},"audio/g7291":{"source":"iana"},"audio/g729d":{"source":"iana"},"audio/g729e":{"source":"iana"},"audio/gsm":{"source":"iana"},"audio/gsm-efr":{"source":"iana"},"audio/gsm-hr-08":{"source":"iana"},"audio/ilbc":{"source":"iana"},"audio/ip-mr_v2.5":{"source":"iana"},"audio/isac":{"source":"apache"},"audio/l16":{"source":"iana"},"audio/l20":{"source":"iana"},"audio/l24":{"source":"iana","compressible":false},"audio/l8":{"source":"iana"},"audio/lpc":{"source":"iana"},"audio/melp":{"source":"iana"},"audio/melp1200":{"source":"iana"},"audio/melp2400":{"source":"iana"},"audio/melp600":{"source":"iana"},"audio/midi":{"source":"apache","extensions":["mid","midi","kar","rmi"]},"audio/mobile-xmf":{"source":"iana"},"audio/mp3":{"compressible":false,"extensions":["mp3"]},"audio/mp4":{"source":"iana","compressible":false,"extensions":["m4a","mp4a"]},"audio/mp4a-latm":{"source":"iana"},"audio/mpa":{"source":"iana"},"audio/mpa-robust":{"source":"iana"},"audio/mpeg":{"source":"iana","compressible":false,"extensions":["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{"source":"iana"},"audio/musepack":{"source":"apache"},"audio/ogg":{"source":"iana","compressible":false,"extensions":["oga","ogg","spx"]},"audio/opus":{"source":"iana"},"audio/parityfec":{"source":"iana"},"audio/pcma":{"source":"iana"},"audio/pcma-wb":{"source":"iana"},"audio/pcmu":{"source":"iana"},"audio/pcmu-wb":{"source":"iana"},"audio/prs.sid":{"source":"iana"},"audio/qcelp":{"source":"iana"},"audio/raptorfec":{"source":"iana"},"audio/red":{"source":"iana"},"audio/rtp-enc-aescm128":{"source":"iana"},"audio/rtp-midi":{"source":"iana"},"audio/rtploopback":{"source":"iana"},"audio/rtx":{"source":"iana"},"audio/s3m":{"source":"apache","extensions":["s3m"]},"audio/silk":{"source":"apache","extensions":["sil"]},"audio/smv":{"source":"iana"},"audio/smv-qcp":{"source":"iana"},"audio/smv0":{"source":"iana"},"audio/sp-midi":{"source":"iana"},"audio/speex":{"source":"iana"},"audio/t140c":{"source":"iana"},"audio/t38":{"source":"iana"},"audio/telephone-event":{"source":"iana"},"audio/tone":{"source":"iana"},"audio/uemclip":{"source":"iana"},"audio/ulpfec":{"source":"iana"},"audio/vdvi":{"source":"iana"},"audio/vmr-wb":{"source":"iana"},"audio/vnd.3gpp.iufp":{"source":"iana"},"audio/vnd.4sb":{"source":"iana"},"audio/vnd.audiokoz":{"source":"iana"},"audio/vnd.celp":{"source":"iana"},"audio/vnd.cisco.nse":{"source":"iana"},"audio/vnd.cmles.radio-events":{"source":"iana"},"audio/vnd.cns.anp1":{"source":"iana"},"audio/vnd.cns.inf1":{"source":"iana"},"audio/vnd.dece.audio":{"source":"iana","extensions":["uva","uvva"]},"audio/vnd.digital-winds":{"source":"iana","extensions":["eol"]},"audio/vnd.dlna.adts":{"source":"iana"},"audio/vnd.dolby.heaac.1":{"source":"iana"},"audio/vnd.dolby.heaac.2":{"source":"iana"},"audio/vnd.dolby.mlp":{"source":"iana"},"audio/vnd.dolby.mps":{"source":"iana"},"audio/vnd.dolby.pl2":{"source":"iana"},"audio/vnd.dolby.pl2x":{"source":"iana"},"audio/vnd.dolby.pl2z":{"source":"iana"},"audio/vnd.dolby.pulse.1":{"source":"iana"},"audio/vnd.dra":{"source":"iana","extensions":["dra"]},"audio/vnd.dts":{"source":"iana","extensions":["dts"]},"audio/vnd.dts.hd":{"source":"iana","extensions":["dtshd"]},"audio/vnd.dvb.file":{"source":"iana"},"audio/vnd.everad.plj":{"source":"iana"},"audio/vnd.hns.audio":{"source":"iana"},"audio/vnd.lucent.voice":{"source":"iana","extensions":["lvp"]},"audio/vnd.ms-playready.media.pya":{"source":"iana","extensions":["pya"]},"audio/vnd.nokia.mobile-xmf":{"source":"iana"},"audio/vnd.nortel.vbk":{"source":"iana"},"audio/vnd.nuera.ecelp4800":{"source":"iana","extensions":["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{"source":"iana","extensions":["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{"source":"iana","extensions":["ecelp9600"]},"audio/vnd.octel.sbc":{"source":"iana"},"audio/vnd.presonus.multitrack":{"source":"iana"},"audio/vnd.qcelp":{"source":"iana"},"audio/vnd.rhetorex.32kadpcm":{"source":"iana"},"audio/vnd.rip":{"source":"iana","extensions":["rip"]},"audio/vnd.rn-realaudio":{"compressible":false},"audio/vnd.sealedmedia.softseal.mpeg":{"source":"iana"},"audio/vnd.vmx.cvsd":{"source":"iana"},"audio/vnd.wave":{"compressible":false},"audio/vorbis":{"source":"iana","compressible":false},"audio/vorbis-config":{"source":"iana"},"audio/wav":{"compressible":false,"extensions":["wav"]},"audio/wave":{"compressible":false,"extensions":["wav"]},"audio/webm":{"source":"apache","compressible":false,"extensions":["weba"]},"audio/x-aac":{"source":"apache","compressible":false,"extensions":["aac"]},"audio/x-aiff":{"source":"apache","extensions":["aif","aiff","aifc"]},"audio/x-caf":{"source":"apache","compressible":false,"extensions":["caf"]},"audio/x-flac":{"source":"apache","extensions":["flac"]},"audio/x-m4a":{"source":"nginx","extensions":["m4a"]},"audio/x-matroska":{"source":"apache","extensions":["mka"]},"audio/x-mpegurl":{"source":"apache","extensions":["m3u"]},"audio/x-ms-wax":{"source":"apache","extensions":["wax"]},"audio/x-ms-wma":{"source":"apache","extensions":["wma"]},"audio/x-pn-realaudio":{"source":"apache","extensions":["ram","ra"]},"audio/x-pn-realaudio-plugin":{"source":"apache","extensions":["rmp"]},"audio/x-realaudio":{"source":"nginx","extensions":["ra"]},"audio/x-tta":{"source":"apache"},"audio/x-wav":{"source":"apache","extensions":["wav"]},"audio/xm":{"source":"apache","extensions":["xm"]},"chemical/x-cdx":{"source":"apache","extensions":["cdx"]},"chemical/x-cif":{"source":"apache","extensions":["cif"]},"chemical/x-cmdf":{"source":"apache","extensions":["cmdf"]},"chemical/x-cml":{"source":"apache","extensions":["cml"]},"chemical/x-csml":{"source":"apache","extensions":["csml"]},"chemical/x-pdb":{"source":"apache"},"chemical/x-xyz":{"source":"apache","extensions":["xyz"]},"font/collection":{"source":"iana","extensions":["ttc"]},"font/otf":{"source":"iana","compressible":true,"extensions":["otf"]},"font/sfnt":{"source":"iana"},"font/ttf":{"source":"iana","extensions":["ttf"]},"font/woff":{"source":"iana","extensions":["woff"]},"font/woff2":{"source":"iana","extensions":["woff2"]},"image/aces":{"source":"iana"},"image/apng":{"compressible":false,"extensions":["apng"]},"image/bmp":{"source":"iana","compressible":true,"extensions":["bmp"]},"image/cgm":{"source":"iana","extensions":["cgm"]},"image/dicom-rle":{"source":"iana"},"image/emf":{"source":"iana"},"image/fits":{"source":"iana"},"image/g3fax":{"source":"iana","extensions":["g3"]},"image/gif":{"source":"iana","compressible":false,"extensions":["gif"]},"image/ief":{"source":"iana","extensions":["ief"]},"image/jls":{"source":"iana"},"image/jp2":{"source":"iana","compressible":false,"extensions":["jp2","jpg2"]},"image/jpeg":{"source":"iana","compressible":false,"extensions":["jpeg","jpg","jpe"]},"image/jpm":{"source":"iana","compressible":false,"extensions":["jpm"]},"image/jpx":{"source":"iana","compressible":false,"extensions":["jpx","jpf"]},"image/ktx":{"source":"iana","extensions":["ktx"]},"image/naplps":{"source":"iana"},"image/pjpeg":{"compressible":false},"image/png":{"source":"iana","compressible":false,"extensions":["png"]},"image/prs.btif":{"source":"iana","extensions":["btif"]},"image/prs.pti":{"source":"iana"},"image/pwg-raster":{"source":"iana"},"image/sgi":{"source":"apache","extensions":["sgi"]},"image/svg+xml":{"source":"iana","compressible":true,"extensions":["svg","svgz"]},"image/t38":{"source":"iana"},"image/tiff":{"source":"iana","compressible":false,"extensions":["tiff","tif"]},"image/tiff-fx":{"source":"iana"},"image/vnd.adobe.photoshop":{"source":"iana","compressible":true,"extensions":["psd"]},"image/vnd.airzip.accelerator.azv":{"source":"iana"},"image/vnd.cns.inf2":{"source":"iana"},"image/vnd.dece.graphic":{"source":"iana","extensions":["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{"source":"iana","extensions":["djvu","djv"]},"image/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"image/vnd.dwg":{"source":"iana","extensions":["dwg"]},"image/vnd.dxf":{"source":"iana","extensions":["dxf"]},"image/vnd.fastbidsheet":{"source":"iana","extensions":["fbs"]},"image/vnd.fpx":{"source":"iana","extensions":["fpx"]},"image/vnd.fst":{"source":"iana","extensions":["fst"]},"image/vnd.fujixerox.edmics-mmr":{"source":"iana","extensions":["mmr"]},"image/vnd.fujixerox.edmics-rlc":{"source":"iana","extensions":["rlc"]},"image/vnd.globalgraphics.pgb":{"source":"iana"},"image/vnd.microsoft.icon":{"source":"iana"},"image/vnd.mix":{"source":"iana"},"image/vnd.mozilla.apng":{"source":"iana"},"image/vnd.ms-modi":{"source":"iana","extensions":["mdi"]},"image/vnd.ms-photo":{"source":"apache","extensions":["wdp"]},"image/vnd.net-fpx":{"source":"iana","extensions":["npx"]},"image/vnd.radiance":{"source":"iana"},"image/vnd.sealed.png":{"source":"iana"},"image/vnd.sealedmedia.softseal.gif":{"source":"iana"},"image/vnd.sealedmedia.softseal.jpg":{"source":"iana"},"image/vnd.svf":{"source":"iana"},"image/vnd.tencent.tap":{"source":"iana"},"image/vnd.valve.source.texture":{"source":"iana"},"image/vnd.wap.wbmp":{"source":"iana","extensions":["wbmp"]},"image/vnd.xiff":{"source":"iana","extensions":["xif"]},"image/vnd.zbrush.pcx":{"source":"iana"},"image/webp":{"source":"apache","extensions":["webp"]},"image/wmf":{"source":"iana"},"image/x-3ds":{"source":"apache","extensions":["3ds"]},"image/x-cmu-raster":{"source":"apache","extensions":["ras"]},"image/x-cmx":{"source":"apache","extensions":["cmx"]},"image/x-freehand":{"source":"apache","extensions":["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{"source":"apache","compressible":true,"extensions":["ico"]},"image/x-jng":{"source":"nginx","extensions":["jng"]},"image/x-mrsid-image":{"source":"apache","extensions":["sid"]},"image/x-ms-bmp":{"source":"nginx","compressible":true,"extensions":["bmp"]},"image/x-pcx":{"source":"apache","extensions":["pcx"]},"image/x-pict":{"source":"apache","extensions":["pic","pct"]},"image/x-portable-anymap":{"source":"apache","extensions":["pnm"]},"image/x-portable-bitmap":{"source":"apache","extensions":["pbm"]},"image/x-portable-graymap":{"source":"apache","extensions":["pgm"]},"image/x-portable-pixmap":{"source":"apache","extensions":["ppm"]},"image/x-rgb":{"source":"apache","extensions":["rgb"]},"image/x-tga":{"source":"apache","extensions":["tga"]},"image/x-xbitmap":{"source":"apache","extensions":["xbm"]},"image/x-xcf":{"compressible":false},"image/x-xpixmap":{"source":"apache","extensions":["xpm"]},"image/x-xwindowdump":{"source":"apache","extensions":["xwd"]},"message/cpim":{"source":"iana"},"message/delivery-status":{"source":"iana"},"message/disposition-notification":{"source":"iana","extensions":["disposition-notification"]},"message/external-body":{"source":"iana"},"message/feedback-report":{"source":"iana"},"message/global":{"source":"iana","extensions":["u8msg"]},"message/global-delivery-status":{"source":"iana","extensions":["u8dsn"]},"message/global-disposition-notification":{"source":"iana","extensions":["u8mdn"]},"message/global-headers":{"source":"iana","extensions":["u8hdr"]},"message/http":{"source":"iana","compressible":false},"message/imdn+xml":{"source":"iana","compressible":true},"message/news":{"source":"iana"},"message/partial":{"source":"iana","compressible":false},"message/rfc822":{"source":"iana","compressible":true,"extensions":["eml","mime"]},"message/s-http":{"source":"iana"},"message/sip":{"source":"iana"},"message/sipfrag":{"source":"iana"},"message/tracking-status":{"source":"iana"},"message/vnd.si.simp":{"source":"iana"},"message/vnd.wfa.wsc":{"source":"iana","extensions":["wsc"]},"model/3mf":{"source":"iana"},"model/gltf+json":{"source":"iana","compressible":true,"extensions":["gltf"]},"model/gltf-binary":{"source":"iana","compressible":true,"extensions":["glb"]},"model/iges":{"source":"iana","compressible":false,"extensions":["igs","iges"]},"model/mesh":{"source":"iana","compressible":false,"extensions":["msh","mesh","silo"]},"model/vnd.collada+xml":{"source":"iana","extensions":["dae"]},"model/vnd.dwf":{"source":"iana","extensions":["dwf"]},"model/vnd.flatland.3dml":{"source":"iana"},"model/vnd.gdl":{"source":"iana","extensions":["gdl"]},"model/vnd.gs-gdl":{"source":"apache"},"model/vnd.gs.gdl":{"source":"iana"},"model/vnd.gtw":{"source":"iana","extensions":["gtw"]},"model/vnd.moml+xml":{"source":"iana"},"model/vnd.mts":{"source":"iana","extensions":["mts"]},"model/vnd.opengex":{"source":"iana"},"model/vnd.parasolid.transmit.binary":{"source":"iana"},"model/vnd.parasolid.transmit.text":{"source":"iana"},"model/vnd.rosette.annotated-data-model":{"source":"iana"},"model/vnd.valve.source.compiled-map":{"source":"iana"},"model/vnd.vtu":{"source":"iana","extensions":["vtu"]},"model/vrml":{"source":"iana","compressible":false,"extensions":["wrl","vrml"]},"model/x3d+binary":{"source":"apache","compressible":false,"extensions":["x3db","x3dbz"]},"model/x3d+fastinfoset":{"source":"iana"},"model/x3d+vrml":{"source":"apache","compressible":false,"extensions":["x3dv","x3dvz"]},"model/x3d+xml":{"source":"iana","compressible":true,"extensions":["x3d","x3dz"]},"model/x3d-vrml":{"source":"iana"},"multipart/alternative":{"source":"iana","compressible":false},"multipart/appledouble":{"source":"iana"},"multipart/byteranges":{"source":"iana"},"multipart/digest":{"source":"iana"},"multipart/encrypted":{"source":"iana","compressible":false},"multipart/form-data":{"source":"iana","compressible":false},"multipart/header-set":{"source":"iana"},"multipart/mixed":{"source":"iana","compressible":false},"multipart/multilingual":{"source":"iana"},"multipart/parallel":{"source":"iana"},"multipart/related":{"source":"iana","compressible":false},"multipart/report":{"source":"iana"},"multipart/signed":{"source":"iana","compressible":false},"multipart/vnd.bint.med-plus":{"source":"iana"},"multipart/voice-message":{"source":"iana"},"multipart/x-mixed-replace":{"source":"iana"},"text/1d-interleaved-parityfec":{"source":"iana"},"text/cache-manifest":{"source":"iana","compressible":true,"extensions":["appcache","manifest"]},"text/calendar":{"source":"iana","extensions":["ics","ifb"]},"text/calender":{"compressible":true},"text/cmd":{"compressible":true},"text/coffeescript":{"extensions":["coffee","litcoffee"]},"text/css":{"source":"iana","charset":"UTF-8","compressible":true,"extensions":["css"]},"text/csv":{"source":"iana","compressible":true,"extensions":["csv"]},"text/csv-schema":{"source":"iana"},"text/directory":{"source":"iana"},"text/dns":{"source":"iana"},"text/ecmascript":{"source":"iana"},"text/encaprtp":{"source":"iana"},"text/enriched":{"source":"iana"},"text/fwdred":{"source":"iana"},"text/grammar-ref-list":{"source":"iana"},"text/html":{"source":"iana","compressible":true,"extensions":["html","htm","shtml"]},"text/jade":{"extensions":["jade"]},"text/javascript":{"source":"iana","compressible":true},"text/jcr-cnd":{"source":"iana"},"text/jsx":{"compressible":true,"extensions":["jsx"]},"text/less":{"extensions":["less"]},"text/markdown":{"source":"iana","compressible":true,"extensions":["markdown","md"]},"text/mathml":{"source":"nginx","extensions":["mml"]},"text/mizar":{"source":"iana"},"text/n3":{"source":"iana","compressible":true,"extensions":["n3"]},"text/parameters":{"source":"iana"},"text/parityfec":{"source":"iana"},"text/plain":{"source":"iana","compressible":true,"extensions":["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{"source":"iana"},"text/prs.fallenstein.rst":{"source":"iana"},"text/prs.lines.tag":{"source":"iana","extensions":["dsc"]},"text/prs.prop.logic":{"source":"iana"},"text/raptorfec":{"source":"iana"},"text/red":{"source":"iana"},"text/rfc822-headers":{"source":"iana"},"text/richtext":{"source":"iana","compressible":true,"extensions":["rtx"]},"text/rtf":{"source":"iana","compressible":true,"extensions":["rtf"]},"text/rtp-enc-aescm128":{"source":"iana"},"text/rtploopback":{"source":"iana"},"text/rtx":{"source":"iana"},"text/sgml":{"source":"iana","extensions":["sgml","sgm"]},"text/shex":{"extensions":["shex"]},"text/slim":{"extensions":["slim","slm"]},"text/strings":{"source":"iana"},"text/stylus":{"extensions":["stylus","styl"]},"text/t140":{"source":"iana"},"text/tab-separated-values":{"source":"iana","compressible":true,"extensions":["tsv"]},"text/troff":{"source":"iana","extensions":["t","tr","roff","man","me","ms"]},"text/turtle":{"source":"iana","extensions":["ttl"]},"text/ulpfec":{"source":"iana"},"text/uri-list":{"source":"iana","compressible":true,"extensions":["uri","uris","urls"]},"text/vcard":{"source":"iana","compressible":true,"extensions":["vcard"]},"text/vnd.a":{"source":"iana"},"text/vnd.abc":{"source":"iana"},"text/vnd.ascii-art":{"source":"iana"},"text/vnd.curl":{"source":"iana","extensions":["curl"]},"text/vnd.curl.dcurl":{"source":"apache","extensions":["dcurl"]},"text/vnd.curl.mcurl":{"source":"apache","extensions":["mcurl"]},"text/vnd.curl.scurl":{"source":"apache","extensions":["scurl"]},"text/vnd.debian.copyright":{"source":"iana"},"text/vnd.dmclientscript":{"source":"iana"},"text/vnd.dvb.subtitle":{"source":"iana","extensions":["sub"]},"text/vnd.esmertec.theme-descriptor":{"source":"iana"},"text/vnd.fly":{"source":"iana","extensions":["fly"]},"text/vnd.fmi.flexstor":{"source":"iana","extensions":["flx"]},"text/vnd.graphviz":{"source":"iana","extensions":["gv"]},"text/vnd.in3d.3dml":{"source":"iana","extensions":["3dml"]},"text/vnd.in3d.spot":{"source":"iana","extensions":["spot"]},"text/vnd.iptc.newsml":{"source":"iana"},"text/vnd.iptc.nitf":{"source":"iana"},"text/vnd.latex-z":{"source":"iana"},"text/vnd.motorola.reflex":{"source":"iana"},"text/vnd.ms-mediapackage":{"source":"iana"},"text/vnd.net2phone.commcenter.command":{"source":"iana"},"text/vnd.radisys.msml-basic-layout":{"source":"iana"},"text/vnd.si.uricatalogue":{"source":"iana"},"text/vnd.sun.j2me.app-descriptor":{"source":"iana","extensions":["jad"]},"text/vnd.trolltech.linguist":{"source":"iana"},"text/vnd.wap.si":{"source":"iana"},"text/vnd.wap.sl":{"source":"iana"},"text/vnd.wap.wml":{"source":"iana","extensions":["wml"]},"text/vnd.wap.wmlscript":{"source":"iana","extensions":["wmls"]},"text/vtt":{"charset":"UTF-8","compressible":true,"extensions":["vtt"]},"text/x-asm":{"source":"apache","extensions":["s","asm"]},"text/x-c":{"source":"apache","extensions":["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{"source":"nginx","extensions":["htc"]},"text/x-fortran":{"source":"apache","extensions":["f","for","f77","f90"]},"text/x-gwt-rpc":{"compressible":true},"text/x-handlebars-template":{"extensions":["hbs"]},"text/x-java-source":{"source":"apache","extensions":["java"]},"text/x-jquery-tmpl":{"compressible":true},"text/x-lua":{"extensions":["lua"]},"text/x-markdown":{"compressible":true,"extensions":["mkd"]},"text/x-nfo":{"source":"apache","extensions":["nfo"]},"text/x-opml":{"source":"apache","extensions":["opml"]},"text/x-org":{"compressible":true,"extensions":["org"]},"text/x-pascal":{"source":"apache","extensions":["p","pas"]},"text/x-processing":{"compressible":true,"extensions":["pde"]},"text/x-sass":{"extensions":["sass"]},"text/x-scss":{"extensions":["scss"]},"text/x-setext":{"source":"apache","extensions":["etx"]},"text/x-sfv":{"source":"apache","extensions":["sfv"]},"text/x-suse-ymp":{"compressible":true,"extensions":["ymp"]},"text/x-uuencode":{"source":"apache","extensions":["uu"]},"text/x-vcalendar":{"source":"apache","extensions":["vcs"]},"text/x-vcard":{"source":"apache","extensions":["vcf"]},"text/xml":{"source":"iana","compressible":true,"extensions":["xml"]},"text/xml-external-parsed-entity":{"source":"iana"},"text/yaml":{"extensions":["yaml","yml"]},"video/1d-interleaved-parityfec":{"source":"iana"},"video/3gpp":{"source":"iana","extensions":["3gp","3gpp"]},"video/3gpp-tt":{"source":"iana"},"video/3gpp2":{"source":"iana","extensions":["3g2"]},"video/bmpeg":{"source":"iana"},"video/bt656":{"source":"iana"},"video/celb":{"source":"iana"},"video/dv":{"source":"iana"},"video/encaprtp":{"source":"iana"},"video/h261":{"source":"iana","extensions":["h261"]},"video/h263":{"source":"iana","extensions":["h263"]},"video/h263-1998":{"source":"iana"},"video/h263-2000":{"source":"iana"},"video/h264":{"source":"iana","extensions":["h264"]},"video/h264-rcdo":{"source":"iana"},"video/h264-svc":{"source":"iana"},"video/h265":{"source":"iana"},"video/iso.segment":{"source":"iana"},"video/jpeg":{"source":"iana","extensions":["jpgv"]},"video/jpeg2000":{"source":"iana"},"video/jpm":{"source":"apache","extensions":["jpm","jpgm"]},"video/mj2":{"source":"iana","extensions":["mj2","mjp2"]},"video/mp1s":{"source":"iana"},"video/mp2p":{"source":"iana"},"video/mp2t":{"source":"iana","extensions":["ts"]},"video/mp4":{"source":"iana","compressible":false,"extensions":["mp4","mp4v","mpg4"]},"video/mp4v-es":{"source":"iana"},"video/mpeg":{"source":"iana","compressible":false,"extensions":["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{"source":"iana"},"video/mpv":{"source":"iana"},"video/nv":{"source":"iana"},"video/ogg":{"source":"iana","compressible":false,"extensions":["ogv"]},"video/parityfec":{"source":"iana"},"video/pointer":{"source":"iana"},"video/quicktime":{"source":"iana","compressible":false,"extensions":["qt","mov"]},"video/raptorfec":{"source":"iana"},"video/raw":{"source":"iana"},"video/rtp-enc-aescm128":{"source":"iana"},"video/rtploopback":{"source":"iana"},"video/rtx":{"source":"iana"},"video/smpte291":{"source":"iana"},"video/smpte292m":{"source":"iana"},"video/ulpfec":{"source":"iana"},"video/vc1":{"source":"iana"},"video/vnd.cctv":{"source":"iana"},"video/vnd.dece.hd":{"source":"iana","extensions":["uvh","uvvh"]},"video/vnd.dece.mobile":{"source":"iana","extensions":["uvm","uvvm"]},"video/vnd.dece.mp4":{"source":"iana"},"video/vnd.dece.pd":{"source":"iana","extensions":["uvp","uvvp"]},"video/vnd.dece.sd":{"source":"iana","extensions":["uvs","uvvs"]},"video/vnd.dece.video":{"source":"iana","extensions":["uvv","uvvv"]},"video/vnd.directv.mpeg":{"source":"iana"},"video/vnd.directv.mpeg-tts":{"source":"iana"},"video/vnd.dlna.mpeg-tts":{"source":"iana"},"video/vnd.dvb.file":{"source":"iana","extensions":["dvb"]},"video/vnd.fvt":{"source":"iana","extensions":["fvt"]},"video/vnd.hns.video":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.1dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-1010":{"source":"iana"},"video/vnd.iptvforum.2dparityfec-2005":{"source":"iana"},"video/vnd.iptvforum.ttsavc":{"source":"iana"},"video/vnd.iptvforum.ttsmpeg2":{"source":"iana"},"video/vnd.motorola.video":{"source":"iana"},"video/vnd.motorola.videop":{"source":"iana"},"video/vnd.mpegurl":{"source":"iana","extensions":["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{"source":"iana","extensions":["pyv"]},"video/vnd.nokia.interleaved-multimedia":{"source":"iana"},"video/vnd.nokia.mp4vr":{"source":"iana"},"video/vnd.nokia.videovoip":{"source":"iana"},"video/vnd.objectvideo":{"source":"iana"},"video/vnd.radgamettools.bink":{"source":"iana"},"video/vnd.radgamettools.smacker":{"source":"iana"},"video/vnd.sealed.mpeg1":{"source":"iana"},"video/vnd.sealed.mpeg4":{"source":"iana"},"video/vnd.sealed.swf":{"source":"iana"},"video/vnd.sealedmedia.softseal.mov":{"source":"iana"},"video/vnd.uvvu.mp4":{"source":"iana","extensions":["uvu","uvvu"]},"video/vnd.vivo":{"source":"iana","extensions":["viv"]},"video/vp8":{"source":"iana"},"video/webm":{"source":"apache","compressible":false,"extensions":["webm"]},"video/x-f4v":{"source":"apache","extensions":["f4v"]},"video/x-fli":{"source":"apache","extensions":["fli"]},"video/x-flv":{"source":"apache","compressible":false,"extensions":["flv"]},"video/x-m4v":{"source":"apache","extensions":["m4v"]},"video/x-matroska":{"source":"apache","compressible":false,"extensions":["mkv","mk3d","mks"]},"video/x-mng":{"source":"apache","extensions":["mng"]},"video/x-ms-asf":{"source":"apache","extensions":["asf","asx"]},"video/x-ms-vob":{"source":"apache","extensions":["vob"]},"video/x-ms-wm":{"source":"apache","extensions":["wm"]},"video/x-ms-wmv":{"source":"apache","compressible":false,"extensions":["wmv"]},"video/x-ms-wmx":{"source":"apache","extensions":["wmx"]},"video/x-ms-wvx":{"source":"apache","extensions":["wvx"]},"video/x-msvideo":{"source":"apache","extensions":["avi"]},"video/x-sgi-movie":{"source":"apache","extensions":["movie"]},"video/x-smv":{"source":"apache","extensions":["smv"]},"x-conference/x-cooltalk":{"source":"apache","extensions":["ice"]},"x-shader/x-fragment":{"compressible":true},"x-shader/x-vertex":{"compressible":true}} /***/ }), -/* 156 */ +/* 155 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -15921,10 +15721,10 @@ module.exports = {"application/1d-interleaved-parityfec":{"source":"iana"},"appl * Module dependencies. */ -var bytes = __webpack_require__(18) -var debug = __webpack_require__(4)('body-parser:raw') +var bytes = __webpack_require__(20) +var debug = __webpack_require__(5)('body-parser:raw') var read = __webpack_require__(36) -var typeis = __webpack_require__(20) +var typeis = __webpack_require__(22) /** * Module exports. @@ -16013,7 +15813,7 @@ function typeChecker (type) { /***/ }), -/* 157 */ +/* 156 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16029,11 +15829,11 @@ function typeChecker (type) { * Module dependencies. */ -var bytes = __webpack_require__(18) +var bytes = __webpack_require__(20) var contentType = __webpack_require__(33) -var debug = __webpack_require__(4)('body-parser:text') +var debug = __webpack_require__(5)('body-parser:text') var read = __webpack_require__(36) -var typeis = __webpack_require__(20) +var typeis = __webpack_require__(22) /** * Module exports. @@ -16141,7 +15941,7 @@ function typeChecker (type) { /***/ }), -/* 158 */ +/* 157 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16159,13 +15959,13 @@ function typeChecker (type) { * @private */ -var bytes = __webpack_require__(18) +var bytes = __webpack_require__(20) var contentType = __webpack_require__(33) var createError = __webpack_require__(34) -var debug = __webpack_require__(4)('body-parser:urlencoded') +var debug = __webpack_require__(5)('body-parser:urlencoded') var deprecate = __webpack_require__(7)('body-parser') var read = __webpack_require__(36) -var typeis = __webpack_require__(20) +var typeis = __webpack_require__(22) /** * Module exports. @@ -16372,7 +16172,7 @@ function parser (name) { mod = __webpack_require__(50) break case 'querystring': - mod = __webpack_require__(86) + mod = __webpack_require__(88) break } @@ -16432,14 +16232,14 @@ function typeChecker (type) { /***/ }), -/* 159 */ +/* 158 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(84); -var formats = __webpack_require__(85); +var utils = __webpack_require__(86); +var formats = __webpack_require__(87); var arrayPrefixGenerators = { brackets: function brackets(prefix) { // eslint-disable-line func-name-matching @@ -16649,13 +16449,13 @@ module.exports = function (object, opts) { /***/ }), -/* 160 */ +/* 159 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = __webpack_require__(84); +var utils = __webpack_require__(86); var has = Object.prototype.hasOwnProperty; @@ -16830,7 +16630,7 @@ module.exports = function (str, opts) { /***/ }), -/* 161 */ +/* 160 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16897,7 +16697,7 @@ function merge(dest, src, redefine) { /***/ }), -/* 162 */ +/* 161 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -16916,19 +16716,19 @@ function merge(dest, src, redefine) { * @private */ -var finalhandler = __webpack_require__(163); -var Router = __webpack_require__(88); +var finalhandler = __webpack_require__(162); +var Router = __webpack_require__(89); var methods = __webpack_require__(51); -var middleware = __webpack_require__(165); -var query = __webpack_require__(91); -var debug = __webpack_require__(4)('express:application'); -var View = __webpack_require__(166); -var http = __webpack_require__(41); +var middleware = __webpack_require__(164); +var query = __webpack_require__(92); +var debug = __webpack_require__(5)('express:application'); +var View = __webpack_require__(165); +var http = __webpack_require__(17); var compileETag = __webpack_require__(12).compileETag; var compileQueryParser = __webpack_require__(12).compileQueryParser; var compileTrust = __webpack_require__(12).compileTrust; var deprecate = __webpack_require__(7)('express'); -var flatten = __webpack_require__(40); +var flatten = __webpack_require__(41); var merge = __webpack_require__(42); var resolve = __webpack_require__(0).resolve; var setPrototypeOf = __webpack_require__(35) @@ -17548,7 +17348,7 @@ function tryRender(view, options, callback) { /***/ }), -/* 163 */ +/* 162 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -17565,13 +17365,13 @@ function tryRender(view, options, callback) { * @private */ -var debug = __webpack_require__(4)('finalhandler') +var debug = __webpack_require__(5)('finalhandler') var encodeUrl = __webpack_require__(38) var escapeHtml = __webpack_require__(39) var onFinished = __webpack_require__(37) -var parseUrl = __webpack_require__(21) -var statuses = __webpack_require__(19) -var unpipe = __webpack_require__(82) +var parseUrl = __webpack_require__(23) +var statuses = __webpack_require__(21) +var unpipe = __webpack_require__(83) /** * Module variables. @@ -17886,7 +17686,7 @@ function setHeaders (res, headers) { /***/ }), -/* 164 */ +/* 163 */ /***/ (function(module, exports) { /** @@ -18021,7 +17821,7 @@ function pathtoRegexp(path, keys, options) { /***/ }), -/* 165 */ +/* 164 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18071,7 +17871,7 @@ exports.init = function(app){ /***/ }), -/* 166 */ +/* 165 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18090,7 +17890,7 @@ exports.init = function(app){ * @private */ -var debug = __webpack_require__(4)('express:view'); +var debug = __webpack_require__(5)('express:view'); var path = __webpack_require__(0); var fs = __webpack_require__(8); @@ -18260,7 +18060,7 @@ function tryStat(path) { /***/ }), -/* 167 */ +/* 166 */ /***/ (function(module, exports) { function webpackEmptyContext(req) { @@ -18269,10 +18069,10 @@ function webpackEmptyContext(req) { webpackEmptyContext.keys = function() { return []; }; webpackEmptyContext.resolve = webpackEmptyContext; module.exports = webpackEmptyContext; -webpackEmptyContext.id = 167; +webpackEmptyContext.id = 166; /***/ }), -/* 168 */ +/* 167 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18290,7 +18090,7 @@ webpackEmptyContext.id = 167; */ var ReadStream = __webpack_require__(8).ReadStream -var Stream = __webpack_require__(5) +var Stream = __webpack_require__(1) /** * Module exports. @@ -18354,7 +18154,7 @@ function onOpenClose() { /***/ }), -/* 169 */ +/* 168 */ /***/ (function(module, exports, __webpack_require__) { var path = __webpack_require__(0); @@ -18443,7 +18243,7 @@ Mime.prototype.extension = function(mimeType) { var mime = new Mime(); // Define built-in types -mime.define(__webpack_require__(170)); +mime.define(__webpack_require__(169)); // Default type mime.default_type = mime.lookup('bin'); @@ -18468,13 +18268,13 @@ module.exports = mime; /***/ }), -/* 170 */ +/* 169 */ /***/ (function(module, exports) { module.exports = {"application/andrew-inset":["ez"],"application/applixware":["aw"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomsvc+xml":["atomsvc"],"application/bdoc":["bdoc"],"application/ccxml+xml":["ccxml"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cu-seeme":["cu"],"application/dash+xml":["mpd"],"application/davmount+xml":["davmount"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/font-tdpfr":["pfr"],"application/font-woff":["woff"],"application/font-woff2":["woff2"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["js","mjs"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["mp4s","m4p"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg"],"application/oxps":["oxps"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-signature":["asc","sig"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/prs.cww":["cww"],"application/pskc+xml":["pskcxml"],"application/rdf+xml":["rdf"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["xfdf"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["mpp","mpt"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/voicexml+xml":["vxml"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["dmg"],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["bdoc"],"application/x-bittorrent":["torrent"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-otf":["otf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-ttf":["ttf","ttc"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-iso9660-image":["iso"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["exe"],"application/x-msdownload":["exe","dll","com","bat","msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["wmf","wmz","emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["prc","pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"application/xaml+xml":["xaml"],"application/xcap-diff+xml":["xdf"],"application/xenc+xml":["xenc"],"application/xhtml+xml":["xhtml","xht"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"audio/3gpp":["3gpp"],"audio/adpcm":["adp"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mp3":["mp3"],"audio/mp4":["m4a","mp4a"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/wav":["wav"],"audio/wave":["wav"],"audio/webm":["weba"],"audio/x-aac":["aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["ra"],"audio/x-wav":["wav"],"audio/xm":["xm"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"font/otf":["otf"],"image/apng":["apng"],"image/bmp":["bmp"],"image/cgm":["cgm"],"image/g3fax":["g3"],"image/gif":["gif"],"image/ief":["ief"],"image/jpeg":["jpeg","jpg","jpe"],"image/ktx":["ktx"],"image/png":["png"],"image/prs.btif":["btif"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/tiff":["tiff","tif"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/webp":["webp"],"image/x-3ds":["3ds"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["bmp"],"image/x-pcx":["pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/rfc822":["eml","mime"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/mesh":["msh","mesh","silo"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["mts"],"model/vnd.vtu":["vtu"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["x3db","x3dbz"],"model/x3d+vrml":["x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/hjson":["hjson"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["markdown","md"],"text/mathml":["mml"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/prs.lines.tag":["dsc"],"text/richtext":["rtx"],"text/rtf":["rtf"],"text/sgml":["sgml","sgm"],"text/slim":["slim","slm"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/vtt":["vtt"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":["org"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"text/xml":["xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/jpeg":["jpgv"],"video/jpm":["jpm","jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/webm":["webm"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]} /***/ }), -/* 171 */ +/* 170 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -18557,7 +18357,7 @@ function parse (header) { /***/ }), -/* 172 */ +/* 171 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module) {(function() { @@ -19185,10 +18985,10 @@ function parse (header) { }).call(this); -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(173)(module))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(172)(module))) /***/ }), -/* 173 */ +/* 172 */ /***/ (function(module, exports) { module.exports = function(module) { @@ -19216,7 +19016,7 @@ module.exports = function(module) { /***/ }), -/* 174 */ +/* 173 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19235,15 +19035,15 @@ module.exports = function(module) { * @private */ -var accepts = __webpack_require__(175); +var accepts = __webpack_require__(174); var deprecate = __webpack_require__(7)('express'); -var isIP = __webpack_require__(76).isIP; -var typeis = __webpack_require__(20); -var http = __webpack_require__(41); -var fresh = __webpack_require__(95); -var parseRange = __webpack_require__(96); -var parse = __webpack_require__(21); -var proxyaddr = __webpack_require__(97); +var isIP = __webpack_require__(77).isIP; +var typeis = __webpack_require__(22); +var http = __webpack_require__(17); +var fresh = __webpack_require__(96); +var parseRange = __webpack_require__(97); +var parse = __webpack_require__(23); +var proxyaddr = __webpack_require__(98); /** * Request prototype. @@ -19744,7 +19544,7 @@ function defineGetter(obj, name, getter) { /***/ }), -/* 175 */ +/* 174 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -19762,8 +19562,8 @@ function defineGetter(obj, name, getter) { * @private */ -var Negotiator = __webpack_require__(176) -var mime = __webpack_require__(83) +var Negotiator = __webpack_require__(175) +var mime = __webpack_require__(85) /** * Module exports. @@ -19989,7 +19789,7 @@ function validMime (type) { /***/ }), -/* 176 */ +/* 175 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20097,16 +19897,16 @@ function loadModule(moduleName) { // This uses a switch for static require analysis switch (moduleName) { case 'charset': - module = __webpack_require__(177); + module = __webpack_require__(176); break; case 'encoding': - module = __webpack_require__(178); + module = __webpack_require__(177); break; case 'language': - module = __webpack_require__(179); + module = __webpack_require__(178); break; case 'mediaType': - module = __webpack_require__(180); + module = __webpack_require__(179); break; default: throw new Error('Cannot find module \'' + moduleName + '\''); @@ -20120,7 +19920,7 @@ function loadModule(moduleName) { /***/ }), -/* 177 */ +/* 176 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20296,7 +20096,7 @@ function isQuality(spec) { /***/ }), -/* 178 */ +/* 177 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20487,7 +20287,7 @@ function isQuality(spec) { /***/ }), -/* 179 */ +/* 178 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20673,7 +20473,7 @@ function isQuality(spec) { /***/ }), -/* 180 */ +/* 179 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20974,7 +20774,7 @@ function splitParameters(str) { /***/ }), -/* 181 */ +/* 180 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -20992,27 +20792,27 @@ function splitParameters(str) { * @private */ -var Buffer = __webpack_require__(92).Buffer -var contentDisposition = __webpack_require__(93); +var Buffer = __webpack_require__(93).Buffer +var contentDisposition = __webpack_require__(94); var deprecate = __webpack_require__(7)('express'); var encodeUrl = __webpack_require__(38); var escapeHtml = __webpack_require__(39); -var http = __webpack_require__(41); +var http = __webpack_require__(17); var isAbsolute = __webpack_require__(12).isAbsolute; var onFinished = __webpack_require__(37); var path = __webpack_require__(0); -var statuses = __webpack_require__(19) +var statuses = __webpack_require__(21) var merge = __webpack_require__(42); -var sign = __webpack_require__(182).sign; +var sign = __webpack_require__(181).sign; var normalizeType = __webpack_require__(12).normalizeType; var normalizeTypes = __webpack_require__(12).normalizeTypes; var setCharset = __webpack_require__(12).setCharset; -var cookie = __webpack_require__(183); +var cookie = __webpack_require__(182); var send = __webpack_require__(52); var extname = path.extname; var mime = send.mime; var resolve = path.resolve; -var vary = __webpack_require__(184); +var vary = __webpack_require__(183); /** * Response prototype. @@ -22118,7 +21918,7 @@ function stringify (value, replacer, spaces, escape) { /***/ }), -/* 182 */ +/* 181 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -22175,7 +21975,7 @@ function sha1(str){ /***/ }), -/* 183 */ +/* 182 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22377,7 +22177,7 @@ function tryDecode(str, decode) { /***/ }), -/* 184 */ +/* 183 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22533,7 +22333,7 @@ function vary (res, field) { /***/ }), -/* 185 */ +/* 184 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -22554,10 +22354,10 @@ function vary (res, field) { var encodeUrl = __webpack_require__(38) var escapeHtml = __webpack_require__(39) -var parseUrl = __webpack_require__(21) +var parseUrl = __webpack_require__(23) var resolve = __webpack_require__(0).resolve var send = __webpack_require__(52) -var url = __webpack_require__(87) +var url = __webpack_require__(40) /** * Module exports. @@ -22750,21 +22550,21 @@ function createRedirectDirectoryListener () { /***/ }), -/* 186 */ +/* 185 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var _stringify = __webpack_require__(22); +var _stringify = __webpack_require__(18); var _stringify2 = _interopRequireDefault(_stringify); -var _regenerator = __webpack_require__(23); +var _regenerator = __webpack_require__(24); var _regenerator2 = _interopRequireDefault(_regenerator); -var _promise = __webpack_require__(24); +var _promise = __webpack_require__(25); var _promise2 = _interopRequireDefault(_promise); @@ -22796,9 +22596,9 @@ var __awaiter = undefined && undefined.__awaiter || function (thisArg, _argument }; Object.defineProperty(exports, "__esModule", { value: true }); var express = __webpack_require__(32); -var anomalyType_1 = __webpack_require__(30); +var anomalyType_1 = __webpack_require__(19); var analytics_1 = __webpack_require__(68); -var metrics_1 = __webpack_require__(113); +var metrics_1 = __webpack_require__(114); function sendAnomalyTypeStatus(req, res) { return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee() { var id, name, anomaly; @@ -22988,7 +22788,7 @@ exports.router.post('/', createAnomaly); exports.router.delete('/', deleteAnomaly); /***/ }), -/* 187 */ +/* 186 */ /***/ (function(module, exports, __webpack_require__) { var core = __webpack_require__(6); @@ -22999,7 +22799,7 @@ module.exports = function stringify(it) { // eslint-disable-line no-unused-vars /***/ }), -/* 188 */ +/* 187 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -23024,7 +22824,7 @@ var oldRuntime = hadRuntime && g.regeneratorRuntime; // Force reevalutation of runtime.js. g.regeneratorRuntime = undefined; -module.exports = __webpack_require__(189); +module.exports = __webpack_require__(188); if (hadRuntime) { // Restore the original runtime. @@ -23040,7 +22840,7 @@ if (hadRuntime) { /***/ }), -/* 189 */ +/* 188 */ /***/ (function(module, exports) { /** @@ -23773,20 +23573,20 @@ if (hadRuntime) { /***/ }), -/* 190 */ +/* 189 */ /***/ (function(module, exports, __webpack_require__) { -__webpack_require__(98); +__webpack_require__(99); __webpack_require__(53); __webpack_require__(63); -__webpack_require__(204); +__webpack_require__(203); +__webpack_require__(210); __webpack_require__(211); -__webpack_require__(212); module.exports = __webpack_require__(6).Promise; /***/ }), -/* 191 */ +/* 190 */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(54); @@ -23809,7 +23609,7 @@ module.exports = function (TO_STRING) { /***/ }), -/* 192 */ +/* 191 */ /***/ (function(module, exports, __webpack_require__) { module.exports = !__webpack_require__(16) && !__webpack_require__(44)(function () { @@ -23818,7 +23618,7 @@ module.exports = !__webpack_require__(16) && !__webpack_require__(44)(function ( /***/ }), -/* 193 */ +/* 192 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) @@ -23836,25 +23636,25 @@ module.exports = function (it, S) { /***/ }), -/* 194 */ +/* 193 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(14); /***/ }), -/* 195 */ +/* 194 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var create = __webpack_require__(100); -var descriptor = __webpack_require__(99); +var create = __webpack_require__(101); +var descriptor = __webpack_require__(100); var setToStringTag = __webpack_require__(45); var IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -__webpack_require__(14)(IteratorPrototype, __webpack_require__(3)('iterator'), function () { return this; }); +__webpack_require__(14)(IteratorPrototype, __webpack_require__(4)('iterator'), function () { return this; }); module.exports = function (Constructor, NAME, next) { Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); @@ -23863,12 +23663,12 @@ module.exports = function (Constructor, NAME, next) { /***/ }), -/* 196 */ +/* 195 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(15); var anObject = __webpack_require__(11); -var getKeys = __webpack_require__(197); +var getKeys = __webpack_require__(196); module.exports = __webpack_require__(16) ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); @@ -23882,12 +23682,12 @@ module.exports = __webpack_require__(16) ? Object.defineProperties : function de /***/ }), -/* 197 */ +/* 196 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = __webpack_require__(198); -var enumBugKeys = __webpack_require__(103); +var $keys = __webpack_require__(197); +var enumBugKeys = __webpack_require__(104); module.exports = Object.keys || function keys(O) { return $keys(O, enumBugKeys); @@ -23895,12 +23695,12 @@ module.exports = Object.keys || function keys(O) { /***/ }), -/* 198 */ +/* 197 */ /***/ (function(module, exports, __webpack_require__) { -var has = __webpack_require__(26); +var has = __webpack_require__(27); var toIObject = __webpack_require__(59); -var arrayIndexOf = __webpack_require__(199)(false); +var arrayIndexOf = __webpack_require__(198)(false); var IE_PROTO = __webpack_require__(61)('IE_PROTO'); module.exports = function (object, names) { @@ -23918,14 +23718,14 @@ module.exports = function (object, names) { /***/ }), -/* 199 */ +/* 198 */ /***/ (function(module, exports, __webpack_require__) { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(59); var toLength = __webpack_require__(60); -var toAbsoluteIndex = __webpack_require__(200); +var toAbsoluteIndex = __webpack_require__(199); module.exports = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIObject($this); @@ -23947,7 +23747,7 @@ module.exports = function (IS_INCLUDES) { /***/ }), -/* 200 */ +/* 199 */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(54); @@ -23960,12 +23760,12 @@ module.exports = function (index, length) { /***/ }), -/* 201 */ +/* 200 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has = __webpack_require__(26); -var toObject = __webpack_require__(105); +var has = __webpack_require__(27); +var toObject = __webpack_require__(106); var IE_PROTO = __webpack_require__(61)('IE_PROTO'); var ObjectProto = Object.prototype; @@ -23979,14 +23779,14 @@ module.exports = Object.getPrototypeOf || function (O) { /***/ }), -/* 202 */ +/* 201 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var addToUnscopables = __webpack_require__(203); -var step = __webpack_require__(106); -var Iterators = __webpack_require__(27); +var addToUnscopables = __webpack_require__(202); +var step = __webpack_require__(107); +var Iterators = __webpack_require__(28); var toIObject = __webpack_require__(59); // 22.1.3.4 Array.prototype.entries() @@ -24020,34 +23820,34 @@ addToUnscopables('entries'); /***/ }), -/* 203 */ +/* 202 */ /***/ (function(module, exports) { module.exports = function () { /* empty */ }; /***/ }), -/* 204 */ +/* 203 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var LIBRARY = __webpack_require__(57); -var global = __webpack_require__(1); +var global = __webpack_require__(2); var ctx = __webpack_require__(13); var classof = __webpack_require__(64); var $export = __webpack_require__(10); var isObject = __webpack_require__(9); -var aFunction = __webpack_require__(25); +var aFunction = __webpack_require__(26); var anInstance = __webpack_require__(65); -var forOf = __webpack_require__(29); -var speciesConstructor = __webpack_require__(108); -var task = __webpack_require__(109).set; -var microtask = __webpack_require__(208)(); +var forOf = __webpack_require__(30); +var speciesConstructor = __webpack_require__(109); +var task = __webpack_require__(110).set; +var microtask = __webpack_require__(207)(); var newPromiseCapabilityModule = __webpack_require__(66); -var perform = __webpack_require__(110); -var userAgent = __webpack_require__(209); -var promiseResolve = __webpack_require__(111); +var perform = __webpack_require__(111); +var userAgent = __webpack_require__(208); +var promiseResolve = __webpack_require__(112); var PROMISE = 'Promise'; var TypeError = global.TypeError; var process = global.process; @@ -24063,7 +23863,7 @@ var USE_NATIVE = !!function () { try { // correct subclassing with @@species support var promise = $Promise.resolve(1); - var FakePromise = (promise.constructor = {})[__webpack_require__(3)('species')] = function (exec) { + var FakePromise = (promise.constructor = {})[__webpack_require__(4)('species')] = function (exec) { exec(empty, empty); }; // unhandled rejections tracking support, NodeJS Promise without it fails @@species test @@ -24254,7 +24054,7 @@ if (!USE_NATIVE) { $export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); __webpack_require__(45)($Promise, PROMISE); -__webpack_require__(112)(PROMISE); +__webpack_require__(113)(PROMISE); Wrapper = __webpack_require__(6)[PROMISE]; // statics @@ -24273,7 +24073,7 @@ $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); } }); -$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(210)(function (iter) { +$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(209)(function (iter) { $Promise.all(iter)['catch'](empty); })), PROMISE, { // 25.4.4.1 Promise.all(iterable) @@ -24320,7 +24120,7 @@ $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(210)(functio /***/ }), -/* 205 */ +/* 204 */ /***/ (function(module, exports, __webpack_require__) { // call something on iterator step with safe closing on error @@ -24338,12 +24138,12 @@ module.exports = function (iterator, fn, value, entries) { /***/ }), -/* 206 */ +/* 205 */ /***/ (function(module, exports, __webpack_require__) { // check on default Array iterator -var Iterators = __webpack_require__(27); -var ITERATOR = __webpack_require__(3)('iterator'); +var Iterators = __webpack_require__(28); +var ITERATOR = __webpack_require__(4)('iterator'); var ArrayProto = Array.prototype; module.exports = function (it) { @@ -24352,7 +24152,7 @@ module.exports = function (it) { /***/ }), -/* 207 */ +/* 206 */ /***/ (function(module, exports) { // fast apply, http://jsperf.lnkit.com/fast-apply/5 @@ -24374,15 +24174,15 @@ module.exports = function (fn, args, that) { /***/ }), -/* 208 */ +/* 207 */ /***/ (function(module, exports, __webpack_require__) { -var global = __webpack_require__(1); -var macrotask = __webpack_require__(109).set; +var global = __webpack_require__(2); +var macrotask = __webpack_require__(110).set; var Observer = global.MutationObserver || global.WebKitMutationObserver; var process = global.process; var Promise = global.Promise; -var isNode = __webpack_require__(28)(process) == 'process'; +var isNode = __webpack_require__(29)(process) == 'process'; module.exports = function () { var head, last, notify; @@ -24449,20 +24249,20 @@ module.exports = function () { /***/ }), -/* 209 */ +/* 208 */ /***/ (function(module, exports, __webpack_require__) { -var global = __webpack_require__(1); +var global = __webpack_require__(2); var navigator = global.navigator; module.exports = navigator && navigator.userAgent || ''; /***/ }), -/* 210 */ +/* 209 */ /***/ (function(module, exports, __webpack_require__) { -var ITERATOR = __webpack_require__(3)('iterator'); +var ITERATOR = __webpack_require__(4)('iterator'); var SAFE_CLOSING = false; try { @@ -24487,7 +24287,7 @@ module.exports = function (exec, skipClosing) { /***/ }), -/* 211 */ +/* 210 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24495,9 +24295,9 @@ module.exports = function (exec, skipClosing) { var $export = __webpack_require__(10); var core = __webpack_require__(6); -var global = __webpack_require__(1); -var speciesConstructor = __webpack_require__(108); -var promiseResolve = __webpack_require__(111); +var global = __webpack_require__(2); +var speciesConstructor = __webpack_require__(109); +var promiseResolve = __webpack_require__(112); $export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { var C = speciesConstructor(this, core.Promise || global.Promise); @@ -24514,7 +24314,7 @@ $export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { /***/ }), -/* 212 */ +/* 211 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -24522,7 +24322,7 @@ $export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { // https://github.com/tc39/proposal-promise-try var $export = __webpack_require__(10); var newPromiseCapability = __webpack_require__(66); -var perform = __webpack_require__(110); +var perform = __webpack_require__(111); $export($export.S, 'Promise', { 'try': function (callbackfn) { var promiseCapability = newPromiseCapability.f(this); @@ -24533,26 +24333,26 @@ $export($export.S, 'Promise', { 'try': function (callbackfn) { /***/ }), -/* 213 */ +/* 212 */ /***/ (function(module, exports) { module.exports = require("child_process"); /***/ }), -/* 214 */ +/* 213 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(63); __webpack_require__(53); -module.exports = __webpack_require__(215); +module.exports = __webpack_require__(214); /***/ }), -/* 215 */ +/* 214 */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(11); -var get = __webpack_require__(107); +var get = __webpack_require__(108); module.exports = __webpack_require__(6).getIterator = function (it) { var iterFn = get(it); if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!'); @@ -24561,7 +24361,7 @@ module.exports = __webpack_require__(6).getIterator = function (it) { /***/ }), -/* 216 */ +/* 215 */ /***/ (function(module, exports, __webpack_require__) { //filter will reemit the data if cb(err,pass) pass is truthy @@ -24570,15 +24370,15 @@ module.exports = __webpack_require__(6).getIterator = function (it) { // maybe we want to group the reductions or emit progress updates occasionally // the most basic reduce just emits one 'data' event after it has recieved 'end' -var Stream = __webpack_require__(5).Stream +var Stream = __webpack_require__(1).Stream , es = exports - , through = __webpack_require__(70) - , from = __webpack_require__(217) - , duplex = __webpack_require__(114) - , map = __webpack_require__(218) - , pause = __webpack_require__(219) - , split = __webpack_require__(220) - , pipeline = __webpack_require__(221) + , through = __webpack_require__(71) + , from = __webpack_require__(216) + , duplex = __webpack_require__(115) + , map = __webpack_require__(217) + , pause = __webpack_require__(218) + , split = __webpack_require__(219) + , pipeline = __webpack_require__(220) , immediately = global.setImmediate || process.nextTick; es.Stream = Stream //re-export Stream from core @@ -24828,7 +24628,7 @@ es.parse = function (options) { // es.stringify = function () { - var Buffer = __webpack_require__(2).Buffer + var Buffer = __webpack_require__(3).Buffer return es.mapSync(function (e){ return JSON.stringify(Buffer.isBuffer(e) ? e.toString() : e) + '\n' }) @@ -24891,14 +24691,14 @@ es.pipeable = function () { /***/ }), -/* 217 */ +/* 216 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var Stream = __webpack_require__(5) +var Stream = __webpack_require__(1) // from // @@ -24966,7 +24766,7 @@ function from (source) { /***/ }), -/* 218 */ +/* 217 */ /***/ (function(module, exports, __webpack_require__) { //filter will reemit the data if cb(err,pass) pass is truthy @@ -24976,7 +24776,7 @@ function from (source) { // the most basic reduce just emits one 'data' event after it has recieved 'end' -var Stream = __webpack_require__(5).Stream +var Stream = __webpack_require__(1).Stream //create an event stream and apply function to each .write @@ -25117,16 +24917,16 @@ module.exports = function (mapper, opts) { /***/ }), -/* 219 */ +/* 218 */ /***/ (function(module, exports, __webpack_require__) { //through@2 handles this by default! -module.exports = __webpack_require__(70) +module.exports = __webpack_require__(71) /***/ }), -/* 220 */ +/* 219 */ /***/ (function(module, exports, __webpack_require__) { //filter will reemit the data if cb(err,pass) pass is truthy @@ -25136,8 +24936,8 @@ module.exports = __webpack_require__(70) // the most basic reduce just emits one 'data' event after it has recieved 'end' -var through = __webpack_require__(70) -var Decoder = __webpack_require__(79).StringDecoder +var through = __webpack_require__(71) +var Decoder = __webpack_require__(80).StringDecoder module.exports = split @@ -25195,10 +24995,10 @@ function split (matcher, mapper, options) { /***/ }), -/* 221 */ +/* 220 */ /***/ (function(module, exports, __webpack_require__) { -var duplexer = __webpack_require__(114) +var duplexer = __webpack_require__(115) module.exports = function () { @@ -25240,21 +25040,21 @@ module.exports = function () { /***/ }), -/* 222 */ +/* 221 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var _regenerator = __webpack_require__(23); +var _regenerator = __webpack_require__(24); var _regenerator2 = _interopRequireDefault(_regenerator); -var _stringify = __webpack_require__(22); +var _stringify = __webpack_require__(18); var _stringify2 = _interopRequireDefault(_stringify); -var _promise = __webpack_require__(24); +var _promise = __webpack_require__(25); var _promise2 = _interopRequireDefault(_promise); @@ -25286,9 +25086,9 @@ var __awaiter = undefined && undefined.__awaiter || function (thisArg, _argument }; Object.defineProperty(exports, "__esModule", { value: true }); var express = __webpack_require__(32); -var segments_1 = __webpack_require__(69); +var segments_1 = __webpack_require__(70); var analytics_1 = __webpack_require__(68); -var anomalyType_1 = __webpack_require__(30); +var anomalyType_1 = __webpack_require__(19); function sendSegments(req, res) { return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator2.default.mark(function _callee() { var anomalyId, anomaly, lastSegmentId, timeFrom, timeTo, segments, payload; @@ -25387,7 +25187,7 @@ exports.router.get('/', sendSegments); exports.router.patch('/', updateSegments); /***/ }), -/* 223 */ +/* 222 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -25395,8 +25195,8 @@ exports.router.patch('/', updateSegments); Object.defineProperty(exports, "__esModule", { value: true }); var express = __webpack_require__(32); -var anomalyType_1 = __webpack_require__(30); -var alerts_1 = __webpack_require__(224); +var anomalyType_1 = __webpack_require__(19); +var alerts_1 = __webpack_require__(223); function getAlert(req, res) { try { var anomalyId = req.query.anomaly_id; @@ -25449,25 +25249,25 @@ exports.router.get('/', getAlert); exports.router.post('/', changeAlert); /***/ }), -/* 224 */ +/* 223 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var _set = __webpack_require__(225); +var _set = __webpack_require__(224); var _set2 = _interopRequireDefault(_set); -var _regenerator = __webpack_require__(23); +var _regenerator = __webpack_require__(24); var _regenerator2 = _interopRequireDefault(_regenerator); -var _getIterator2 = __webpack_require__(46); +var _getIterator2 = __webpack_require__(69); var _getIterator3 = _interopRequireDefault(_getIterator2); -var _promise = __webpack_require__(24); +var _promise = __webpack_require__(25); var _promise2 = _interopRequireDefault(_promise); @@ -25498,13 +25298,13 @@ var __awaiter = undefined && undefined.__awaiter || function (thisArg, _argument }); }; Object.defineProperty(exports, "__esModule", { value: true }); -var json_1 = __webpack_require__(31); +var json_1 = __webpack_require__(46); var path = __webpack_require__(0); var fs = __webpack_require__(8); -var config_1 = __webpack_require__(17); +var config_1 = __webpack_require__(31); var analytics_1 = __webpack_require__(68); -var notification_1 = __webpack_require__(117); -var segments_1 = __webpack_require__(69); +var notification_1 = __webpack_require__(240); +var segments_1 = __webpack_require__(70); function getAlertsAnomalies() { var filename = path.join(config_1.ANOMALIES_PATH, "alerts_anomalies.json"); if (!fs.existsSync(filename)) { @@ -25520,7 +25320,7 @@ exports.saveAlertsAnomalies = saveAlertsAnomalies; function processAlerts(anomalyId) { var segments = segments_1.getLabeledSegments(anomalyId); var currentTime = new Date().getTime(); - var activeAlert = activeAlerts.has(anomalyId); + var activeAlert = false; var newActiveAlert = false; if (segments.length > 0) { var lastSegment = segments[segments.length - 1]; @@ -25528,6 +25328,8 @@ function processAlerts(anomalyId) { newActiveAlert = true; } } + console.log(activeAlert); + newActiveAlert = true; if (!activeAlert && newActiveAlert) { activeAlerts.add(anomalyId); notification_1.sendNotification(anomalyId, true); @@ -25628,37 +25430,37 @@ var activeAlerts = new _set2.default(); setTimeout(alertsTick, 5000); /***/ }), -/* 225 */ +/* 224 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = { "default": __webpack_require__(226), __esModule: true }; +module.exports = { "default": __webpack_require__(225), __esModule: true }; /***/ }), -/* 226 */ +/* 225 */ /***/ (function(module, exports, __webpack_require__) { -__webpack_require__(98); +__webpack_require__(99); __webpack_require__(53); __webpack_require__(63); -__webpack_require__(227); -__webpack_require__(234); -__webpack_require__(237); -__webpack_require__(239); +__webpack_require__(226); +__webpack_require__(233); +__webpack_require__(236); +__webpack_require__(238); module.exports = __webpack_require__(6).Set; /***/ }), -/* 227 */ +/* 226 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var strong = __webpack_require__(228); -var validate = __webpack_require__(116); +var strong = __webpack_require__(227); +var validate = __webpack_require__(117); var SET = 'Set'; // 23.2 Set Objects -module.exports = __webpack_require__(229)(SET, function (get) { +module.exports = __webpack_require__(228)(SET, function (get) { return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; }, { // 23.2.3.1 Set.prototype.add(value) @@ -25669,23 +25471,23 @@ module.exports = __webpack_require__(229)(SET, function (get) { /***/ }), -/* 228 */ +/* 227 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var dP = __webpack_require__(15).f; -var create = __webpack_require__(100); +var create = __webpack_require__(101); var redefineAll = __webpack_require__(67); var ctx = __webpack_require__(13); var anInstance = __webpack_require__(65); -var forOf = __webpack_require__(29); +var forOf = __webpack_require__(30); var $iterDefine = __webpack_require__(56); -var step = __webpack_require__(106); -var setSpecies = __webpack_require__(112); +var step = __webpack_require__(107); +var setSpecies = __webpack_require__(113); var DESCRIPTORS = __webpack_require__(16); -var fastKey = __webpack_require__(115).fastKey; -var validate = __webpack_require__(116); +var fastKey = __webpack_require__(116).fastKey; +var validate = __webpack_require__(117); var SIZE = DESCRIPTORS ? '_s' : 'size'; var getEntry = function (that, key) { @@ -25820,23 +25622,23 @@ module.exports = { /***/ }), -/* 229 */ +/* 228 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var global = __webpack_require__(1); +var global = __webpack_require__(2); var $export = __webpack_require__(10); -var meta = __webpack_require__(115); +var meta = __webpack_require__(116); var fails = __webpack_require__(44); var hide = __webpack_require__(14); var redefineAll = __webpack_require__(67); -var forOf = __webpack_require__(29); +var forOf = __webpack_require__(30); var anInstance = __webpack_require__(65); var isObject = __webpack_require__(9); var setToStringTag = __webpack_require__(45); var dP = __webpack_require__(15).f; -var each = __webpack_require__(230)(0); +var each = __webpack_require__(229)(0); var DESCRIPTORS = __webpack_require__(16); module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { @@ -25886,7 +25688,7 @@ module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { /***/ }), -/* 230 */ +/* 229 */ /***/ (function(module, exports, __webpack_require__) { // 0 -> Array#forEach @@ -25897,10 +25699,10 @@ module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { // 5 -> Array#find // 6 -> Array#findIndex var ctx = __webpack_require__(13); -var IObject = __webpack_require__(101); -var toObject = __webpack_require__(105); +var IObject = __webpack_require__(102); +var toObject = __webpack_require__(106); var toLength = __webpack_require__(60); -var asc = __webpack_require__(231); +var asc = __webpack_require__(230); module.exports = function (TYPE, $create) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; @@ -25936,11 +25738,11 @@ module.exports = function (TYPE, $create) { /***/ }), -/* 231 */ +/* 230 */ /***/ (function(module, exports, __webpack_require__) { // 9.4.2.3 ArraySpeciesCreate(originalArray, length) -var speciesConstructor = __webpack_require__(232); +var speciesConstructor = __webpack_require__(231); module.exports = function (original, length) { return new (speciesConstructor(original))(length); @@ -25948,12 +25750,12 @@ module.exports = function (original, length) { /***/ }), -/* 232 */ +/* 231 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(9); -var isArray = __webpack_require__(233); -var SPECIES = __webpack_require__(3)('species'); +var isArray = __webpack_require__(232); +var SPECIES = __webpack_require__(4)('species'); module.exports = function (original) { var C; @@ -25970,33 +25772,33 @@ module.exports = function (original) { /***/ }), -/* 233 */ +/* 232 */ /***/ (function(module, exports, __webpack_require__) { // 7.2.2 IsArray(argument) -var cof = __webpack_require__(28); +var cof = __webpack_require__(29); module.exports = Array.isArray || function isArray(arg) { return cof(arg) == 'Array'; }; /***/ }), -/* 234 */ +/* 233 */ /***/ (function(module, exports, __webpack_require__) { // https://github.com/DavidBruant/Map-Set.prototype.toJSON var $export = __webpack_require__(10); -$export($export.P + $export.R, 'Set', { toJSON: __webpack_require__(235)('Set') }); +$export($export.P + $export.R, 'Set', { toJSON: __webpack_require__(234)('Set') }); /***/ }), -/* 235 */ +/* 234 */ /***/ (function(module, exports, __webpack_require__) { // https://github.com/DavidBruant/Map-Set.prototype.toJSON var classof = __webpack_require__(64); -var from = __webpack_require__(236); +var from = __webpack_require__(235); module.exports = function (NAME) { return function toJSON() { if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic"); @@ -26006,10 +25808,10 @@ module.exports = function (NAME) { /***/ }), -/* 236 */ +/* 235 */ /***/ (function(module, exports, __webpack_require__) { -var forOf = __webpack_require__(29); +var forOf = __webpack_require__(30); module.exports = function (iter, ITERATOR) { var result = []; @@ -26019,15 +25821,15 @@ module.exports = function (iter, ITERATOR) { /***/ }), -/* 237 */ +/* 236 */ /***/ (function(module, exports, __webpack_require__) { // https://tc39.github.io/proposal-setmap-offrom/#sec-set.of -__webpack_require__(238)('Set'); +__webpack_require__(237)('Set'); /***/ }), -/* 238 */ +/* 237 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -26046,24 +25848,24 @@ module.exports = function (COLLECTION) { /***/ }), -/* 239 */ +/* 238 */ /***/ (function(module, exports, __webpack_require__) { // https://tc39.github.io/proposal-setmap-offrom/#sec-set.from -__webpack_require__(240)('Set'); +__webpack_require__(239)('Set'); /***/ }), -/* 240 */ +/* 239 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // https://tc39.github.io/proposal-setmap-offrom/ var $export = __webpack_require__(10); -var aFunction = __webpack_require__(25); +var aFunction = __webpack_require__(26); var ctx = __webpack_require__(13); -var forOf = __webpack_require__(29); +var forOf = __webpack_require__(30); module.exports = function (COLLECTION) { $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) { @@ -26088,6 +25890,1617 @@ module.exports = function (COLLECTION) { }; +/***/ }), +/* 240 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _stringify = __webpack_require__(18); + +var _stringify2 = _interopRequireDefault(_stringify); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +Object.defineProperty(exports, "__esModule", { value: true }); +var node_fetch_1 = __webpack_require__(241); +var anomalyType_1 = __webpack_require__(19); +function sendNotification(anomalyId, active) { + var anomalyName = anomalyType_1.loadAnomalyById(anomalyId).name; + console.log('Notification ' + anomalyName); + var notification = { + anomaly: anomalyName, + status: '' + }; + if (active) { + notification.status = 'alert'; + } else { + notification.status = 'OK'; + } + if (process.env.ALERT_ENDPOINT !== undefined) { + node_fetch_1.default(process.env.ALERT_ENDPOINT, { + method: 'POST', + body: (0, _stringify2.default)(notification) + }).then(function (data) { + return console.log(data); + }).catch(function (err) { + return console.error("Can't send alert to " + process.env.ALERT_ENDPOINT + ". Error: " + err); + }); + } else { + console.error("Can't send alert, env ALERT_ENDPOINT is undefined"); + } +} +exports.sendNotification = sendNotification; + +/***/ }), +/* 241 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Headers", function() { return Headers; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Request", function() { return Request; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Response", function() { return Response; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FetchError", function() { return FetchError; }); +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js +// (MIT licensed) + +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); + +class Blob { + constructor() { + this[TYPE] = ''; + + const blobParts = arguments[0]; + const options = arguments[1]; + + const buffers = []; + + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === 'string' ? element : String(element)); + } + buffers.push(buffer); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } +} + +Object.defineProperties(Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } +}); + +Object.defineProperty(Blob.prototype, Symbol.toStringTag, { + value: 'Blob', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ + +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); + + this.message = message; + this.type = type; + + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; + } + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; + +/** + * body.js + * + * Body interface provides common methods for Request and Response + */ + +const Stream = __webpack_require__(1); + +var _require = __webpack_require__(1); + +const PassThrough = _require.PassThrough; + + +let convert; +try { + convert = __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"encoding\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())).convert; +} catch (e) {} + +const INTERNALS = Symbol('Body internals'); + +/** + * Body mixin + * + * Ref: https://fetch.spec.whatwg.org/#body + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (typeof body === 'string') { + // body is string + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + } else if (body instanceof Blob) { + // body is blob + } else if (Buffer.isBuffer(body)) { + // body is buffer + } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is array buffer + } else if (body instanceof Stream) { + // body is stream + } else { + // none of the above + // coerce to string + body = String(body); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + + if (body instanceof Stream) { + body.on('error', function (err) { + _this[INTERNALS].error = new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); + }); + } +} + +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, + + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + + return consumeBody.call(this).then(function (buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); + } + }); + }, + + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, + + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } + +}; + +// In browsers, all properties are enumerable. +Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } +}); + +Body.mixIn = function (proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +function consumeBody() { + var _this4 = this; + + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + + this[INTERNALS].disturbed = true; + + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + + // body is null + if (this.body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is string + if (typeof this.body === 'string') { + return Body.Promise.resolve(Buffer.from(this.body)); + } + + // body is blob + if (this.body instanceof Blob) { + return Body.Promise.resolve(this.body[BUFFER]); + } + + // body is buffer + if (Buffer.isBuffer(this.body)) { + return Body.Promise.resolve(this.body); + } + + // body is buffer + if (Object.prototype.toString.call(this.body) === '[object ArrayBuffer]') { + return Body.Promise.resolve(Buffer.from(this.body)); + } + + // istanbul ignore if: should never happen + if (!(this.body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + if (_this4.timeout) { + resTimeout = setTimeout(function () { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); + }, _this4.timeout); + } + + // handle stream error, such as incorrect content-encoding + _this4.body.on('error', function (err) { + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + }); + + _this4.body.on('data', function (chunk) { + if (abort || chunk === null) { + return; + } + + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); + return; + } + + accumBytes += chunk.length; + accum.push(chunk); + }); + + _this4.body.on('end', function () { + if (abort) { + return; + } + + clearTimeout(resTimeout); + + try { + resolve(Buffer.concat(accum)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} + +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String + */ +function convertBody(buffer, headers) { + if (typeof convert !== 'function') { + throw new Error('The package `encoding` must be installed to use the textConverted() function'); + } + + const ct = headers.get('content-type'); + let charset = 'utf-8'; + let res, str; + + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); + + // html5 + if (!res && str) { + res = / 0 && arguments[0] !== undefined ? arguments[0] : undefined; + + this[MAP] = Object.create(null); + + if (init instanceof Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); + + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } + + return; + } + + // We don't worry about converting prop to ByteString here as append() + // will handle it. + if (init == null) { + // no op + } else if (typeof init === 'object') { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== 'function') { + throw new TypeError('Header pairs must be iterable'); + } + + // sequence> + // Note: per spec we have to first exhaust the lists then process them + const pairs = []; + for (const pair of init) { + if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { + throw new TypeError('Each header pair must be iterable'); + } + pairs.push(Array.from(pair)); + } + + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError('Each header pair must be a name/value tuple'); + } + this.append(pair[0], pair[1]); + } + } else { + // record + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } + + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } + + return this[MAP][key].join(', '); + } + + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], + value = _pairs$i[1]; + + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } + + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } + + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } + + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } + + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +Headers.prototype.entries = Headers.prototype[Symbol.iterator]; + +Object.defineProperty(Headers.prototype, Symbol.toStringTag, { + value: 'Headers', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Headers.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } +}); + +function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; + + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === 'key' ? function (k) { + return k.toLowerCase(); + } : kind === 'value' ? function (k) { + return headers[MAP][k].join(', '); + } : function (k) { + return [k.toLowerCase(), headers[MAP][k].join(', ')]; + }); +} + +const INTERNAL = Symbol('internal'); + +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} + +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError('Value of `this` is not a HeadersIterator'); + } + + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, + kind = _INTERNAL.kind, + index = _INTERNAL.index; + + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: undefined, + done: true + }; + } + + this[INTERNAL].index = index + 1; + + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + + return obj; +} + +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +function createHeadersLenient(obj) { + const headers = new Headers(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val of obj[name]) { + if (invalidHeaderCharRegex.test(val)) { + continue; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} + +/** + * response.js + * + * Response class provides content decoding + */ + +var _require$1 = __webpack_require__(17); + +const STATUS_CODES = _require$1.STATUS_CODES; + + +const INTERNALS$1 = Symbol('Response internals'); + +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + Body.call(this, body, opts); + + const status = opts.status || 200; + + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers: new Headers(opts.headers) + }; + } + + get url() { + return this[INTERNALS$1].url; + } + + get status() { + return this[INTERNALS$1].status; + } + + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } + + get statusText() { + return this[INTERNALS$1].statusText; + } + + get headers() { + return this[INTERNALS$1].headers; + } + + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok + }); + } +} + +Body.mixIn(Response.prototype); + +Object.defineProperties(Response.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } +}); + +Object.defineProperty(Response.prototype, Symbol.toStringTag, { + value: 'Response', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * request.js + * + * Request class contains server only options + * + * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/. + */ + +var _require$2 = __webpack_require__(40); + +const format_url = _require$2.format; +const parse_url = _require$2.parse; + + +const INTERNALS$2 = Symbol('Request internals'); + +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; +} + +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parse_url(input.href); + } else { + // coerce input to a string before attempting to parse + parsedURL = parse_url(`${input}`); + } + input = {}; + } else { + parsedURL = parse_url(input.url); + } + + let method = init.method || input.method || 'GET'; + method = method.toUpperCase(); + + if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body'); + } + + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + + const headers = new Headers(init.headers || input.headers || {}); + + if (init.body != null) { + const contentType = extractContentType(this); + if (contentType !== null && !headers.has('Content-Type')) { + headers.append('Content-Type', contentType); + } + } + + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || 'follow', + headers, + parsedURL + }; + + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } + + get method() { + return this[INTERNALS$2].method; + } + + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } + + get headers() { + return this[INTERNALS$2].headers; + } + + get redirect() { + return this[INTERNALS$2].redirect; + } + + /** + * Clone this request + * + * @return Request + */ + clone() { + return new Request(this); + } +} + +Body.mixIn(Request.prototype); + +Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: 'Request', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true } +}); + +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); + + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError('Only absolute URLs are supported'); + } + + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError('Only HTTP(S) protocols are supported'); + } + + // HTTP-network-or-cache fetch steps 2.4-2.7 + let contentLengthValue = null; + if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { + contentLengthValue = '0'; + } + if (request.body != null) { + const totalBytes = getTotalBytes(request); + if (typeof totalBytes === 'number') { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set('Content-Length', contentLengthValue); + } + + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } + + // HTTP-network-or-cache fetch step 2.15 + if (request.compress) { + headers.set('Accept-Encoding', 'gzip,deflate'); + } + if (!headers.has('Connection') && !request.agent) { + headers.set('Connection', 'close'); + } + + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent: request.agent + }); +} + +/** + * index.js + * + * a request API compatible with window.fetch + * + * All spec algorithm step numbers are based on https://fetch.spec.whatwg.org/commit-snapshots/ae716822cb3a61843226cd090eefc6589446c1d2/. + */ + +const http = __webpack_require__(17); +const https = __webpack_require__(242); + +var _require$3 = __webpack_require__(1); + +const PassThrough$1 = _require$3.PassThrough; + +var _require2 = __webpack_require__(40); + +const resolve_url = _require2.resolve; + +const zlib = __webpack_require__(84); + +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { + + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } + + Body.Promise = fetch.Promise; + + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + const request = new Request(url, opts); + const options = getNodeRequestOptions(request); + + const send = (options.protocol === 'https:' ? https : http).request; + + // send request + const req = send(options); + let reqTimeout; + + function finalize() { + req.abort(); + clearTimeout(reqTimeout); + } + + if (request.timeout) { + req.once('socket', function (socket) { + reqTimeout = setTimeout(function () { + reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); + finalize(); + }, request.timeout); + }); + } + + req.on('error', function (err) { + reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); + finalize(); + }); + + req.on('response', function (res) { + clearTimeout(reqTimeout); + + const headers = createHeadersLenient(res.headers); + + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); + + // HTTP fetch step 5.3 + const locationURL = location === null ? null : resolve_url(request.url, location); + + // HTTP fetch step 5.5 + switch (request.redirect) { + case 'error': + reject(new FetchError(`redirect mode is set to error: ${request.url}`, 'no-redirect')); + finalize(); + return; + case 'manual': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + headers.set('Location', locationURL); + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } + + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + const requestOpts = { + headers: new Headers(request.headers), + follow: request.follow, + counter: request.counter + 1, + agent: request.agent, + compress: request.compress, + method: request.method, + body: request.body + }; + + // HTTP-redirect fetch step 9 + if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { + reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } + + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + + // prepare response + let body = res.pipe(new PassThrough$1()); + const response_options = { + url: request.url, + status: res.statusCode, + statusText: res.statusMessage, + headers: headers, + size: request.size, + timeout: request.timeout + }; + + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); + + // HTTP-network fetch step 12.1.1.4: handle content codings + + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + resolve(new Response(body, response_options)); + return; + } + + // For Node v6+ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib.createGunzip(zlibOptions)); + resolve(new Response(body, response_options)); + return; + } + + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + resolve(new Response(body, response_options)); + }); + return; + } + + // otherwise, use response as-is + resolve(new Response(body, response_options)); + }); + + writeToStream(req, request); + }); +} + +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; + +// Needed for TypeScript. +fetch.default = fetch; + +// expose Promise +fetch.Promise = global.Promise; + +/* harmony default export */ __webpack_exports__["default"] = (fetch); + + + +/***/ }), +/* 242 */ +/***/ (function(module, exports) { + +module.exports = require("https"); + /***/ }) /******/ ]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgYWUxMDIxMjgyYzM3MjcyZWFmYzciLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicGF0aFwiIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic3RyZWFtXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2RlcGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiZnNcIiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3V0aWxzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9jb25maWcudHMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9ieXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0YXR1c2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvdHlwZS1pcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3BhcnNldXJsL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2pzb24vc3RyaW5naWZ5LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9yZWdlbmVyYXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzIiwid2VicGFjazovLy8uL3NlcnZpY2VzL2Fub21hbHlUeXBlLnRzIiwid2VicGFjazovLy8uL3NlcnZpY2VzL2pzb24udHMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9leHByZXNzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29udGVudC10eXBlL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaHR0cC1lcnJvcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zZXRwcm90b3R5cGVvZi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2JvZHktcGFyc2VyL2xpYi9yZWFkLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvb24tZmluaXNoZWQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9lbmNvZGV1cmwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9lc2NhcGUtaHRtbC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2FycmF5LWZsYXR0ZW4vYXJyYXktZmxhdHRlbi5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJodHRwXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy91dGlscy1tZXJnZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJjcnlwdG9cIiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiZXZlbnRzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidXRpbFwiIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdGFibGVzL2NwOTM2Lmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9xcy9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9tZXRob2RzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc2VuZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGVmaW5lLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pb2JqZWN0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VpZC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcyIsIndlYnBhY2s6Ly8vLi9zZXJ2aWNlcy9hbmFseXRpY3MudHMiLCJ3ZWJwYWNrOi8vLy4vc2VydmljZXMvc2VnbWVudHMudHMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy90aHJvdWdoL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYm9keS1wYXJzZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9kZWJ1Zy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL21zL2luZGV4LmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcIm5ldFwiIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2RlcGQvbGliL2NvbXBhdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvbGliL2luZGV4LmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcInN0cmluZ19kZWNvZGVyXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvZ2JrLWFkZGVkLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvY3A5NTAuanNvbiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3VucGlwZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL21pbWUtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9xcy9saWIvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9xcy9saWIvZm9ybWF0cy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJxdWVyeXN0cmluZ1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcInVybFwiIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvcm91dGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvcm91dGVyL3JvdXRlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvcm91dGVyL2xheWVyLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvbWlkZGxld2FyZS9xdWVyeS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29udGVudC1kaXNwb3NpdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V0YWcvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9mcmVzaC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3JhbmdlLXBhcnNlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3Byb3h5LWFkZHIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NwZWNpZXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdGFzay5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wZXJmb3JtLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtc3BlY2llcy5qcyIsIndlYnBhY2s6Ly8vLi9zZXJ2aWNlcy9tZXRyaWNzLnRzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZHVwbGV4ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL192YWxpZGF0ZS1jb2xsZWN0aW9uLmpzIiwid2VicGFjazovLy8uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi50cyIsIndlYnBhY2s6Ly8vLi9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL2V4cHJlc3MuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvY2FsbHNpdGUtdG9zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvZXZlbnQtbGlzdGVuZXItY291bnQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9saWIvdHlwZXMvanNvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0YXR1c2VzL2NvZGVzLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvbm9kZS5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ0dHlcIiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3Jhdy1ib2R5L2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2h0dHAtZXJyb3JzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2RlcGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9yYXctYm9keS9ub2RlX21vZHVsZXMvZGVwZC9saWIvY29tcGF0L2NhbGxzaXRlLXRvc3RyaW5nLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2RlcGQvbGliL2NvbXBhdC9ldmVudC1saXN0ZW5lci1jb3VudC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3Jhdy1ib2R5L25vZGVfbW9kdWxlcy9zZXRwcm90b3R5cGVvZi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvbGliL2JvbS1oYW5kbGluZy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy91dGYxNi5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3V0ZjcuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9zYmNzLWNvZGVjLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3Mvc2Jjcy1kYXRhLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3Mvc2Jjcy1kYXRhLWdlbmVyYXRlZC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2RiY3MtY29kZWMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9kYmNzLWRhdGEuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvc2hpZnRqaXMuanNvbiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9ldWNqcC5qc29uIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdGFibGVzL2diMTgwMzAtcmFuZ2VzLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvY3A5NDkuanNvbiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9iaWc1LWFkZGVkLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2xpYi9zdHJlYW1zLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9saWIvZXh0ZW5kLW5vZGUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9lZS1maXJzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ6bGliXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9tZWRpYS10eXBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL21pbWUtZGIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9taW1lLWRiL2RiLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9saWIvdHlwZXMvcmF3LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYm9keS1wYXJzZXIvbGliL3R5cGVzL3RleHQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9saWIvdHlwZXMvdXJsZW5jb2RlZC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9zdHJpbmdpZnkuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9xcy9saWIvcGFyc2UuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9tZXJnZS1kZXNjcmlwdG9ycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL2FwcGxpY2F0aW9uLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZmluYWxoYW5kbGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcGF0aC10by1yZWdleHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi9taWRkbGV3YXJlL2luaXQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi92aWV3LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZXN0cm95L2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbWltZS9taW1lLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbWltZS90eXBlcy5qc29uIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZm9yd2FyZGVkL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaXBhZGRyLmpzL2xpYi9pcGFkZHIuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy93ZWJwYWNrL2J1aWxkaW4vbW9kdWxlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvcmVxdWVzdC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2FjY2VwdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZWdvdGlhdG9yL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbmVnb3RpYXRvci9saWIvY2hhcnNldC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL25lZ290aWF0b3IvbGliL2VuY29kaW5nLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbmVnb3RpYXRvci9saWIvbGFuZ3VhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZWdvdGlhdG9yL2xpYi9tZWRpYVR5cGUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi9yZXNwb25zZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2Nvb2tpZS1zaWduYXR1cmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb29raWUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy92YXJ5L2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc2VydmUtc3RhdGljL2luZGV4LmpzIiwid2VicGFjazovLy8uL3JvdXRlcy9hbm9tYWxpZXMudHMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vanNvbi9zdHJpbmdpZnkuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUtbW9kdWxlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3Byb21pc2UuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHBzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYWRkLXRvLXVuc2NvcGFibGVzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jYWxsLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW52b2tlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191c2VyLWFnZW50LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeS5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJjaGlsZF9wcm9jZXNzXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vZ2V0LWl0ZXJhdG9yLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9ldmVudC1zdHJlYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9mcm9tL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbWFwLXN0cmVhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3BhdXNlLXN0cmVhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3NwbGl0L2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3RyZWFtLWNvbWJpbmVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL3JvdXRlcy9zZWdtZW50cy50cyIsIndlYnBhY2s6Ly8vLi9yb3V0ZXMvYWxlcnRzLnRzIiwid2VicGFjazovLy8uL3NlcnZpY2VzL2FsZXJ0cy50cyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zZXQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vc2V0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnNldC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLXN0cm9uZy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LW1ldGhvZHMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zZXQudG8tanNvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLXRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktZnJvbS1pdGVyYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zZXQub2YuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tb2YuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc2V0LmZyb20uanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tZnJvbS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0RBQTRDO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQSwwQ0FBa0M7QUFDbEM7QUFDQTtBQUNBLFlBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2Q0FBcUM7QUFDckM7QUFDQTs7OztBQUlBO0FBQ0Esc0RBQThDO0FBQzlDO0FBQ0E7QUFDQSxvQ0FBNEI7QUFDNUIscUNBQTZCO0FBQzdCLHlDQUFpQzs7QUFFakMsK0NBQXVDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhDQUFzQztBQUN0QztBQUNBO0FBQ0EscUNBQTZCO0FBQzdCLHFDQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQW9CLGdCQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBb0IsZ0JBQWdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxhQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5QkFBaUIsOEJBQThCO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQUk7QUFDSjs7QUFFQSw0REFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBLGNBQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQW1CLDJCQUEyQjtBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwwQkFBa0IsY0FBYztBQUNoQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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QjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7O0FBRXZDO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsV0FBVztBQUM1QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsa0JBQWtCO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsaUNBQWlDO0FBQzVELGNBQWMsb0JBQW9CO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFD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QTtBQUNBLHFDQUFxQztBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7OztBQ25RQSw0Q0FBNEMsYUFBYTs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7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QTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUNwRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7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WSxPQUFPO0FBQ25CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLG9EQUFvRDtBQUNwRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FB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RUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVixjQUFjLFNBQVM7QUFDdkIsY0FBYyxTQUFTO0FBQ3ZCLGNBQWMsU0FBUztBQUN2QixjQUFjLFNBQVM7QUFDdkI7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUM1SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FB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O0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUN2SkEsZ0M7Ozs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDOUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJCQUEyQjs7QUFFM0I7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxREFBcUQ7QUFDckQ7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtREFBa0Q7O0FBRWxEO0FBQ0EsaUVBQWlFLEVBQUU7O0FBRW5FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEseUVBQXlFO0FBQ3pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDbkpBLDJDOzs7Ozs7QUNBQSxvNUI7Ozs7OztBQ0FBLDJxZTs7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsc0JBQXNCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixzQkFBc0I7QUFDdkM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsU0FBUztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7QUMzTEE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLGdCQUFnQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7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QTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHNCQUFzQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsaUJBQWlCLHFCQUFxQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQkFBb0I7O0FBRXBCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxRQUFRO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTJDLFNBQVM7QUFDcEQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDcnBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZLE1BQU07QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFlBQVksTUFBTTtBQUNsQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLG9CQUFvQjtBQUNyQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZCQUE2QjtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLG9CQUFvQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLCtCQUErQjtBQUMvQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7O0FDdk5EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDcExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQSxxQkFBcUI7QUFDckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUM5Q0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0RBQXNELFlBQVk7O0FBRWxFO0FBQ0E7QUFDQTs7QUFFQSxzQ0FBc0MsRUFBRTtBQUN4QywrQ0FBK0MsRUFBRTs7QUFFakQ7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0EscUJBQXFCLE1BQU07QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUI7QUFDckI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsTUFBTTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpREFBaUQsaUJBQWlCLElBQUksYUFBYSxFQUFFLEVBQUUsSUFBSSxVQUFVLElBQUksb0JBQW9CLEVBQUU7O0FBRS9IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4RUFBOEU7O0FBRTlFO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsZUFBZTtBQUMxQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsZUFBZTtBQUMxQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLG1CQUFtQjtBQUN0Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsa0JBQWtCO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2REFBNkQ7QUFDN0Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDNWJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFF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Q0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxzQkFBc0I7QUFDakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUN0VUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7Ozs7O0FDeENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ0xBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDs7QUFFbEQ7QUFDQSxxRUFBcUU7QUFDckUsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7QUNYRDtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ0hBO0FBQ0E7Ozs7Ozs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDSkE7QUFDQSxVQUFVO0FBQ1Y7Ozs7Ozs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Es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QUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxVQUFVO0FBQ1YsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsVUFBVTtBQUNWLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNILENBQUM7Ozs7Ozs7O0FDL0dEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFD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Q0EsNkJBQTZCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNDQUFzQzs7QUFFdEM7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTztBQUNuQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDLG1CQUFtQjtBQUM5RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsaUJBQWlCLGlCQUFpQjtBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDdlBBLGdDOzs7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsdUJBQXVCO0FBQ2xDLFdBQVcsU0FBUztBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDN1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUM7QUFDckM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7QUNuUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUEsaUJBQWlCLGdCQUFnQjtBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUM7O0FBRXZDO0FBQ0EsNENBQTRDO0FBQzVDOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsV0FBVztBQUM1QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixrQkFBa0I7QUFDbkM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSxrQkFBa0I7QUFDMUI7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkIsaUNBQWlDO0FBQzVELGNBQWMsb0JBQW9CO0FBQ2xDOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsa0JBQWtCO0FBQ3JDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7Ozs7Ozs7QUN2Z0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDckJBLDRDQUE0QyxhQUFhOztBQUV6RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ2RBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FDbERBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsb0JBQW9CO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDckJBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGFBQWEsbUNBQW1DO0FBQ2hELGFBQWEsbUNBQW1DO0FBQ2hEOztBQUVBLGFBQWEsbUNBQW1DO0FBQ2hEOztBQUVBLGFBQWEsb0JBQW9CO0FBQ2pDLGFBQWEsb0JBQW9CO0FBQ2pDLGFBQWEsb0JBQW9COztBQUVqQztBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQ3ZLQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1TkFBdU4saUVBQWlFLEVBQUU7QUFDMVIsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNB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QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEZBQThGOztBQUU5Rjs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUN0TkE7QUFDQTtBQUNB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OztBQUVBO0FBQ0E7Ozs7Ozs7O0FDN0tBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7O0FDM0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixZQUFZLElBQUk7QUFDaEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztB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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7QUMzRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsU0FBUztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsU0FBUztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLFNBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFNBQVM7QUFDcEM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixTQUFTO0FBQ2hDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLFNBQVM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsU0FBUztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLFNBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxHQUFHOztBQUVIOztBQUVBLHlCQUF5QixHQUFHOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLFNBQVM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxTQUFTO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlFQUFpRSxFQUFFO0FBQ25FO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSxDQUFDOzs7Ozs7OztBQy9tQkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ3JCQTtBQUNB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OEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsc0JBQXNCO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDN09BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7OztBQzNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Q0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCOztBQUVsQixpQkFBaUIscUJBQXFCO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNB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Q0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRGQUE0RjtBQUM1Rjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQVU7QUFDVixRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVTtB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QSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQSx3Q0FBd0MsV0FBVztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxjQUFjO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsa0JBQWtCO0FBQ25EO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUEsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwREFBMEQsb0JBQW9CO0FBQzlFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7OztBQzdSRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ1hBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1Q0FBdUMsc0JBQXNCLEVBQUU7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7Ozs7Ozs7QUNwRUE7QUFDQTs7QUFFQTs7Ozs7OztBQ0hBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlDQUFpQyxxQkFBcUI7QUFDdEQ7QUFDQSxpQ0FBaUMsU0FBUyxFQUFFO0FBQzVDLENBQUMsWUFBWTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsU0FBUyxxQkFBcUI7QUFDM0QsaUNBQWlDLGFBQWE7QUFDOUM7QUFDQSxHQUFHLFlBQVk7QUFDZjtBQUNBOzs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsVUFBVSxFQUFFO0FBQzFFLEtBQUs7QUFDTDtBQUNBLDhEQUE4RCxTQUFTLEVBQUU7QUFDekUsS0FBSztBQUNMO0FBQ0EsQ0FBQyxFQUFFOzs7Ozs7OztBQ25CSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTs7Ozs7OztBQ1hILDBDOzs7Ozs7QUNBQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ05BOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQixXQUFXO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGdDQUFnQyxlQUFlOztBQUUvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQ0FBcUMsaUJBQWlCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQ2xVQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7Ozs7O0FDbkVBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyw4QkFBOEI7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7O0FDNUlBO0FBQ0E7Ozs7Ozs7O0FDREE7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7OztBQzdEQTs7QUFFQTs7QUFFQTtBQUNBO0FB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REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFO0FBQ0wiLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0ZnVuY3Rpb24gaG90RG93bmxvYWRVcGRhdGVDaHVuayhjaHVua0lkKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuIFx0XHR2YXIgY2h1bmsgPSByZXF1aXJlKFwiLi9cIiArIFwiXCIgKyBjaHVua0lkICsgXCIuXCIgKyBob3RDdXJyZW50SGFzaCArIFwiLmhvdC11cGRhdGUuanNcIik7XHJcbiBcdFx0aG90QWRkVXBkYXRlQ2h1bmsoY2h1bmsuaWQsIGNodW5rLm1vZHVsZXMpO1xyXG4gXHR9XHJcbiBcdFxyXG4gXHRmdW5jdGlvbiBob3REb3dubG9hZE1hbmlmZXN0KCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXHJcbiBcdFx0dHJ5IHtcclxuIFx0XHRcdHZhciB1cGRhdGUgPSByZXF1aXJlKFwiLi9cIiArIFwiXCIgKyBob3RDdXJyZW50SGFzaCArIFwiLmhvdC11cGRhdGUuanNvblwiKTtcclxuIFx0XHR9IGNhdGNoKGUpIHtcclxuIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuIFx0XHR9XHJcbiBcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSh1cGRhdGUpO1xyXG4gXHR9XHJcbiBcdFxyXG4gXHRmdW5jdGlvbiBob3REaXNwb3NlQ2h1bmsoY2h1bmtJZCkgeyAvL2VzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuIFx0XHRkZWxldGUgaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdO1xyXG4gXHR9XHJcblxuIFx0XHJcbiBcdFxyXG4gXHR2YXIgaG90QXBwbHlPblVwZGF0ZSA9IHRydWU7XHJcbiBcdHZhciBob3RDdXJyZW50SGFzaCA9IFwiYWUxMDIxMjgyYzM3MjcyZWFmYzdcIjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gXHR2YXIgaG90UmVxdWVzdFRpbWVvdXQgPSAxMDAwMDtcclxuIFx0dmFyIGhvdEN1cnJlbnRNb2R1bGVEYXRhID0ge307XHJcbiBcdHZhciBob3RDdXJyZW50Q2hpbGRNb2R1bGU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuIFx0dmFyIGhvdEN1cnJlbnRQYXJlbnRzID0gW107IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuIFx0dmFyIGhvdEN1cnJlbnRQYXJlbnRzVGVtcCA9IFtdOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXHJcbiBcdFxyXG4gXHRmdW5jdGlvbiBob3RDcmVhdGVSZXF1aXJlKG1vZHVsZUlkKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuIFx0XHR2YXIgbWUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXTtcclxuIFx0XHRpZighbWUpIHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fO1xyXG4gXHRcdHZhciBmbiA9IGZ1bmN0aW9uKHJlcXVlc3QpIHtcclxuIFx0XHRcdGlmKG1lLmhvdC5hY3RpdmUpIHtcclxuIFx0XHRcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XSkge1xyXG4gXHRcdFx0XHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbcmVxdWVzdF0ucGFyZW50cy5pbmRleE9mKG1vZHVsZUlkKSA8IDApXHJcbiBcdFx0XHRcdFx0XHRpbnN0YWxsZWRNb2R1bGVzW3JlcXVlc3RdLnBhcmVudHMucHVzaChtb2R1bGVJZCk7XHJcbiBcdFx0XHRcdH0gZWxzZSB7XHJcbiBcdFx0XHRcdFx0aG90Q3VycmVudFBhcmVudHMgPSBbbW9kdWxlSWRdO1xyXG4gXHRcdFx0XHRcdGhvdEN1cnJlbnRDaGlsZE1vZHVsZSA9IHJlcXVlc3Q7XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdFx0aWYobWUuY2hpbGRyZW4uaW5kZXhPZihyZXF1ZXN0KSA8IDApXHJcbiBcdFx0XHRcdFx0bWUuY2hpbGRyZW4ucHVzaChyZXF1ZXN0KTtcclxuIFx0XHRcdH0gZWxzZSB7XHJcbiBcdFx0XHRcdGNvbnNvbGUud2FybihcIltITVJdIHVuZXhwZWN0ZWQgcmVxdWlyZShcIiArIHJlcXVlc3QgKyBcIikgZnJvbSBkaXNwb3NlZCBtb2R1bGUgXCIgKyBtb2R1bGVJZCk7XHJcbiBcdFx0XHRcdGhvdEN1cnJlbnRQYXJlbnRzID0gW107XHJcbiBcdFx0XHR9XHJcbiBcdFx0XHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhyZXF1ZXN0KTtcclxuIFx0XHR9O1xyXG4gXHRcdHZhciBPYmplY3RGYWN0b3J5ID0gZnVuY3Rpb24gT2JqZWN0RmFjdG9yeShuYW1lKSB7XHJcbiBcdFx0XHRyZXR1cm4ge1xyXG4gXHRcdFx0XHRjb25maWd1cmFibGU6IHRydWUsXHJcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXHJcbiBcdFx0XHRcdGdldDogZnVuY3Rpb24oKSB7XHJcbiBcdFx0XHRcdFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX19bbmFtZV07XHJcbiBcdFx0XHRcdH0sXHJcbiBcdFx0XHRcdHNldDogZnVuY3Rpb24odmFsdWUpIHtcclxuIFx0XHRcdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fW25hbWVdID0gdmFsdWU7XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdH07XHJcbiBcdFx0fTtcclxuIFx0XHRmb3IodmFyIG5hbWUgaW4gX193ZWJwYWNrX3JlcXVpcmVfXykge1xyXG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKF9fd2VicGFja19yZXF1aXJlX18sIG5hbWUpICYmIG5hbWUgIT09IFwiZVwiKSB7XHJcbiBcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmbiwgbmFtZSwgT2JqZWN0RmFjdG9yeShuYW1lKSk7XHJcbiBcdFx0XHR9XHJcbiBcdFx0fVxyXG4gXHRcdGZuLmUgPSBmdW5jdGlvbihjaHVua0lkKSB7XHJcbiBcdFx0XHRpZihob3RTdGF0dXMgPT09IFwicmVhZHlcIilcclxuIFx0XHRcdFx0aG90U2V0U3RhdHVzKFwicHJlcGFyZVwiKTtcclxuIFx0XHRcdGhvdENodW5rc0xvYWRpbmcrKztcclxuIFx0XHRcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLmUoY2h1bmtJZCkudGhlbihmaW5pc2hDaHVua0xvYWRpbmcsIGZ1bmN0aW9uKGVycikge1xyXG4gXHRcdFx0XHRmaW5pc2hDaHVua0xvYWRpbmcoKTtcclxuIFx0XHRcdFx0dGhyb3cgZXJyO1xyXG4gXHRcdFx0fSk7XHJcbiBcdFxyXG4gXHRcdFx0ZnVuY3Rpb24gZmluaXNoQ2h1bmtMb2FkaW5nKCkge1xyXG4gXHRcdFx0XHRob3RDaHVua3NMb2FkaW5nLS07XHJcbiBcdFx0XHRcdGlmKGhvdFN0YXR1cyA9PT0gXCJwcmVwYXJlXCIpIHtcclxuIFx0XHRcdFx0XHRpZighaG90V2FpdGluZ0ZpbGVzTWFwW2NodW5rSWRdKSB7XHJcbiBcdFx0XHRcdFx0XHRob3RFbnN1cmVVcGRhdGVDaHVuayhjaHVua0lkKTtcclxuIFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0aWYoaG90Q2h1bmtzTG9hZGluZyA9PT0gMCAmJiBob3RXYWl0aW5nRmlsZXMgPT09IDApIHtcclxuIFx0XHRcdFx0XHRcdGhvdFVwZGF0ZURvd25sb2FkZWQoKTtcclxuIFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdH1cclxuIFx0XHR9O1xyXG4gXHRcdHJldHVybiBmbjtcclxuIFx0fVxyXG4gXHRcclxuIFx0ZnVuY3Rpb24gaG90Q3JlYXRlTW9kdWxlKG1vZHVsZUlkKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuIFx0XHR2YXIgaG90ID0ge1xyXG4gXHRcdFx0Ly8gcHJpdmF0ZSBzdHVmZlxyXG4gXHRcdFx0X2FjY2VwdGVkRGVwZW5kZW5jaWVzOiB7fSxcclxuIFx0XHRcdF9kZWNsaW5lZERlcGVuZGVuY2llczoge30sXHJcbiBcdFx0XHRfc2VsZkFjY2VwdGVkOiBmYWxzZSxcclxuIFx0XHRcdF9zZWxmRGVjbGluZWQ6IGZhbHNlLFxyXG4gXHRcdFx0X2Rpc3Bvc2VIYW5kbGVyczogW10sXHJcbiBcdFx0XHRfbWFpbjogaG90Q3VycmVudENoaWxkTW9kdWxlICE9PSBtb2R1bGVJZCxcclxuIFx0XHJcbiBcdFx0XHQvLyBNb2R1bGUgQVBJXHJcbiBcdFx0XHRhY3RpdmU6IHRydWUsXHJcbiBcdFx0XHRhY2NlcHQ6IGZ1bmN0aW9uKGRlcCwgY2FsbGJhY2spIHtcclxuIFx0XHRcdFx0aWYodHlwZW9mIGRlcCA9PT0gXCJ1bmRlZmluZWRcIilcclxuIFx0XHRcdFx0XHRob3QuX3NlbGZBY2NlcHRlZCA9IHRydWU7XHJcbiBcdFx0XHRcdGVsc2UgaWYodHlwZW9mIGRlcCA9PT0gXCJmdW5jdGlvblwiKVxyXG4gXHRcdFx0XHRcdGhvdC5fc2VsZkFjY2VwdGVkID0gZGVwO1xyXG4gXHRcdFx0XHRlbHNlIGlmKHR5cGVvZiBkZXAgPT09IFwib2JqZWN0XCIpXHJcbiBcdFx0XHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IGRlcC5sZW5ndGg7IGkrKylcclxuIFx0XHRcdFx0XHRcdGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwW2ldXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307XHJcbiBcdFx0XHRcdGVsc2VcclxuIFx0XHRcdFx0XHRob3QuX2FjY2VwdGVkRGVwZW5kZW5jaWVzW2RlcF0gPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9O1xyXG4gXHRcdFx0fSxcclxuIFx0XHRcdGRlY2xpbmU6IGZ1bmN0aW9uKGRlcCkge1xyXG4gXHRcdFx0XHRpZih0eXBlb2YgZGVwID09PSBcInVuZGVmaW5lZFwiKVxyXG4gXHRcdFx0XHRcdGhvdC5fc2VsZkRlY2xpbmVkID0gdHJ1ZTtcclxuIFx0XHRcdFx0ZWxzZSBpZih0eXBlb2YgZGVwID09PSBcIm9iamVjdFwiKVxyXG4gXHRcdFx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBkZXAubGVuZ3RoOyBpKyspXHJcbiBcdFx0XHRcdFx0XHRob3QuX2RlY2xpbmVkRGVwZW5kZW5jaWVzW2RlcFtpXV0gPSB0cnVlO1xyXG4gXHRcdFx0XHRlbHNlXHJcbiBcdFx0XHRcdFx0aG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1tkZXBdID0gdHJ1ZTtcclxuIFx0XHRcdH0sXHJcbiBcdFx0XHRkaXNwb3NlOiBmdW5jdGlvbihjYWxsYmFjaykge1xyXG4gXHRcdFx0XHRob3QuX2Rpc3Bvc2VIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTtcclxuIFx0XHRcdH0sXHJcbiBcdFx0XHRhZGREaXNwb3NlSGFuZGxlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcclxuIFx0XHRcdFx0aG90Ll9kaXNwb3NlSGFuZGxlcnMucHVzaChjYWxsYmFjayk7XHJcbiBcdFx0XHR9LFxyXG4gXHRcdFx0cmVtb3ZlRGlzcG9zZUhhbmRsZXI6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XHJcbiBcdFx0XHRcdHZhciBpZHggPSBob3QuX2Rpc3Bvc2VIYW5kbGVycy5pbmRleE9mKGNhbGxiYWNrKTtcclxuIFx0XHRcdFx0aWYoaWR4ID49IDApIGhvdC5fZGlzcG9zZUhhbmRsZXJzLnNwbGljZShpZHgsIDEpO1xyXG4gXHRcdFx0fSxcclxuIFx0XHJcbiBcdFx0XHQvLyBNYW5hZ2VtZW50IEFQSVxyXG4gXHRcdFx0Y2hlY2s6IGhvdENoZWNrLFxyXG4gXHRcdFx0YXBwbHk6IGhvdEFwcGx5LFxyXG4gXHRcdFx0c3RhdHVzOiBmdW5jdGlvbihsKSB7XHJcbiBcdFx0XHRcdGlmKCFsKSByZXR1cm4gaG90U3RhdHVzO1xyXG4gXHRcdFx0XHRob3RTdGF0dXNIYW5kbGVycy5wdXNoKGwpO1xyXG4gXHRcdFx0fSxcclxuIFx0XHRcdGFkZFN0YXR1c0hhbmRsZXI6IGZ1bmN0aW9uKGwpIHtcclxuIFx0XHRcdFx0aG90U3RhdHVzSGFuZGxlcnMucHVzaChsKTtcclxuIFx0XHRcdH0sXHJcbiBcdFx0XHRyZW1vdmVTdGF0dXNIYW5kbGVyOiBmdW5jdGlvbihsKSB7XHJcbiBcdFx0XHRcdHZhciBpZHggPSBob3RTdGF0dXNIYW5kbGVycy5pbmRleE9mKGwpO1xyXG4gXHRcdFx0XHRpZihpZHggPj0gMCkgaG90U3RhdHVzSGFuZGxlcnMuc3BsaWNlKGlkeCwgMSk7XHJcbiBcdFx0XHR9LFxyXG4gXHRcclxuIFx0XHRcdC8vaW5oZXJpdCBmcm9tIHByZXZpb3VzIGRpc3Bvc2UgY2FsbFxyXG4gXHRcdFx0ZGF0YTogaG90Q3VycmVudE1vZHVsZURhdGFbbW9kdWxlSWRdXHJcbiBcdFx0fTtcclxuIFx0XHRob3RDdXJyZW50Q2hpbGRNb2R1bGUgPSB1bmRlZmluZWQ7XHJcbiBcdFx0cmV0dXJuIGhvdDtcclxuIFx0fVxyXG4gXHRcclxuIFx0dmFyIGhvdFN0YXR1c0hhbmRsZXJzID0gW107XHJcbiBcdHZhciBob3RTdGF0dXMgPSBcImlkbGVcIjtcclxuIFx0XHJcbiBcdGZ1bmN0aW9uIGhvdFNldFN0YXR1cyhuZXdTdGF0dXMpIHtcclxuIFx0XHRob3RTdGF0dXMgPSBuZXdTdGF0dXM7XHJcbiBcdFx0Zm9yKHZhciBpID0gMDsgaSA8IGhvdFN0YXR1c0hhbmRsZXJzLmxlbmd0aDsgaSsrKVxyXG4gXHRcdFx0aG90U3RhdHVzSGFuZGxlcnNbaV0uY2FsbChudWxsLCBuZXdTdGF0dXMpO1xyXG4gXHR9XHJcbiBcdFxyXG4gXHQvLyB3aGlsZSBkb3dubG9hZGluZ1xyXG4gXHR2YXIgaG90V2FpdGluZ0ZpbGVzID0gMDtcclxuIFx0dmFyIGhvdENodW5rc0xvYWRpbmcgPSAwO1xyXG4gXHR2YXIgaG90V2FpdGluZ0ZpbGVzTWFwID0ge307XHJcbiBcdHZhciBob3RSZXF1ZXN0ZWRGaWxlc01hcCA9IHt9O1xyXG4gXHR2YXIgaG90QXZhaWxhYmxlRmlsZXNNYXAgPSB7fTtcclxuIFx0dmFyIGhvdERlZmVycmVkO1xyXG4gXHRcclxuIFx0Ly8gVGhlIHVwZGF0ZSBpbmZvXHJcbiBcdHZhciBob3RVcGRhdGUsIGhvdFVwZGF0ZU5ld0hhc2g7XHJcbiBcdFxyXG4gXHRmdW5jdGlvbiB0b01vZHVsZUlkKGlkKSB7XHJcbiBcdFx0dmFyIGlzTnVtYmVyID0gKCtpZCkgKyBcIlwiID09PSBpZDtcclxuIFx0XHRyZXR1cm4gaXNOdW1iZXIgPyAraWQgOiBpZDtcclxuIFx0fVxyXG4gXHRcclxuIFx0ZnVuY3Rpb24gaG90Q2hlY2soYXBwbHkpIHtcclxuIFx0XHRpZihob3RTdGF0dXMgIT09IFwiaWRsZVwiKSB0aHJvdyBuZXcgRXJyb3IoXCJjaGVjaygpIGlzIG9ubHkgYWxsb3dlZCBpbiBpZGxlIHN0YXR1c1wiKTtcclxuIFx0XHRob3RBcHBseU9uVXBkYXRlID0gYXBwbHk7XHJcbiBcdFx0aG90U2V0U3RhdHVzKFwiY2hlY2tcIik7XHJcbiBcdFx0cmV0dXJuIGhvdERvd25sb2FkTWFuaWZlc3QoaG90UmVxdWVzdFRpbWVvdXQpLnRoZW4oZnVuY3Rpb24odXBkYXRlKSB7XHJcbiBcdFx0XHRpZighdXBkYXRlKSB7XHJcbiBcdFx0XHRcdGhvdFNldFN0YXR1cyhcImlkbGVcIik7XHJcbiBcdFx0XHRcdHJldHVybiBudWxsO1xyXG4gXHRcdFx0fVxyXG4gXHRcdFx0aG90UmVxdWVzdGVkRmlsZXNNYXAgPSB7fTtcclxuIFx0XHRcdGhvdFdhaXRpbmdGaWxlc01hcCA9IHt9O1xyXG4gXHRcdFx0aG90QXZhaWxhYmxlRmlsZXNNYXAgPSB1cGRhdGUuYztcclxuIFx0XHRcdGhvdFVwZGF0ZU5ld0hhc2ggPSB1cGRhdGUuaDtcclxuIFx0XHJcbiBcdFx0XHRob3RTZXRTdGF0dXMoXCJwcmVwYXJlXCIpO1xyXG4gXHRcdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcclxuIFx0XHRcdFx0aG90RGVmZXJyZWQgPSB7XHJcbiBcdFx0XHRcdFx0cmVzb2x2ZTogcmVzb2x2ZSxcclxuIFx0XHRcdFx0XHRyZWplY3Q6IHJlamVjdFxyXG4gXHRcdFx0XHR9O1xyXG4gXHRcdFx0fSk7XHJcbiBcdFx0XHRob3RVcGRhdGUgPSB7fTtcclxuIFx0XHRcdHZhciBjaHVua0lkID0gMDtcclxuIFx0XHRcdHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1sb25lLWJsb2Nrc1xyXG4gXHRcdFx0XHQvKmdsb2JhbHMgY2h1bmtJZCAqL1xyXG4gXHRcdFx0XHRob3RFbnN1cmVVcGRhdGVDaHVuayhjaHVua0lkKTtcclxuIFx0XHRcdH1cclxuIFx0XHRcdGlmKGhvdFN0YXR1cyA9PT0gXCJwcmVwYXJlXCIgJiYgaG90Q2h1bmtzTG9hZGluZyA9PT0gMCAmJiBob3RXYWl0aW5nRmlsZXMgPT09IDApIHtcclxuIFx0XHRcdFx0aG90VXBkYXRlRG93bmxvYWRlZCgpO1xyXG4gXHRcdFx0fVxyXG4gXHRcdFx0cmV0dXJuIHByb21pc2U7XHJcbiBcdFx0fSk7XHJcbiBcdH1cclxuIFx0XHJcbiBcdGZ1bmN0aW9uIGhvdEFkZFVwZGF0ZUNodW5rKGNodW5rSWQsIG1vcmVNb2R1bGVzKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuIFx0XHRpZighaG90QXZhaWxhYmxlRmlsZXNNYXBbY2h1bmtJZF0gfHwgIWhvdFJlcXVlc3RlZEZpbGVzTWFwW2NodW5rSWRdKVxyXG4gXHRcdFx0cmV0dXJuO1xyXG4gXHRcdGhvdFJlcXVlc3RlZEZpbGVzTWFwW2NodW5rSWRdID0gZmFsc2U7XHJcbiBcdFx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xyXG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcclxuIFx0XHRcdFx0aG90VXBkYXRlW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcclxuIFx0XHRcdH1cclxuIFx0XHR9XHJcbiBcdFx0aWYoLS1ob3RXYWl0aW5nRmlsZXMgPT09IDAgJiYgaG90Q2h1bmtzTG9hZGluZyA9PT0gMCkge1xyXG4gXHRcdFx0aG90VXBkYXRlRG93bmxvYWRlZCgpO1xyXG4gXHRcdH1cclxuIFx0fVxyXG4gXHRcclxuIFx0ZnVuY3Rpb24gaG90RW5zdXJlVXBkYXRlQ2h1bmsoY2h1bmtJZCkge1xyXG4gXHRcdGlmKCFob3RBdmFpbGFibGVGaWxlc01hcFtjaHVua0lkXSkge1xyXG4gXHRcdFx0aG90V2FpdGluZ0ZpbGVzTWFwW2NodW5rSWRdID0gdHJ1ZTtcclxuIFx0XHR9IGVsc2Uge1xyXG4gXHRcdFx0aG90UmVxdWVzdGVkRmlsZXNNYXBbY2h1bmtJZF0gPSB0cnVlO1xyXG4gXHRcdFx0aG90V2FpdGluZ0ZpbGVzKys7XHJcbiBcdFx0XHRob3REb3dubG9hZFVwZGF0ZUNodW5rKGNodW5rSWQpO1xyXG4gXHRcdH1cclxuIFx0fVxyXG4gXHRcclxuIFx0ZnVuY3Rpb24gaG90VXBkYXRlRG93bmxvYWRlZCgpIHtcclxuIFx0XHRob3RTZXRTdGF0dXMoXCJyZWFkeVwiKTtcclxuIFx0XHR2YXIgZGVmZXJyZWQgPSBob3REZWZlcnJlZDtcclxuIFx0XHRob3REZWZlcnJlZCA9IG51bGw7XHJcbiBcdFx0aWYoIWRlZmVycmVkKSByZXR1cm47XHJcbiBcdFx0aWYoaG90QXBwbHlPblVwZGF0ZSkge1xyXG4gXHRcdFx0Ly8gV3JhcCBkZWZlcnJlZCBvYmplY3QgaW4gUHJvbWlzZSB0byBtYXJrIGl0IGFzIGEgd2VsbC1oYW5kbGVkIFByb21pc2UgdG9cclxuIFx0XHRcdC8vIGF2b2lkIHRyaWdnZXJpbmcgdW5jYXVnaHQgZXhjZXB0aW9uIHdhcm5pbmcgaW4gQ2hyb21lLlxyXG4gXHRcdFx0Ly8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ2NTY2NlxyXG4gXHRcdFx0UHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpIHtcclxuIFx0XHRcdFx0cmV0dXJuIGhvdEFwcGx5KGhvdEFwcGx5T25VcGRhdGUpO1xyXG4gXHRcdFx0fSkudGhlbihcclxuIFx0XHRcdFx0ZnVuY3Rpb24ocmVzdWx0KSB7XHJcbiBcdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZShyZXN1bHQpO1xyXG4gXHRcdFx0XHR9LFxyXG4gXHRcdFx0XHRmdW5jdGlvbihlcnIpIHtcclxuIFx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3QoZXJyKTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0KTtcclxuIFx0XHR9IGVsc2Uge1xyXG4gXHRcdFx0dmFyIG91dGRhdGVkTW9kdWxlcyA9IFtdO1xyXG4gXHRcdFx0Zm9yKHZhciBpZCBpbiBob3RVcGRhdGUpIHtcclxuIFx0XHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGhvdFVwZGF0ZSwgaWQpKSB7XHJcbiBcdFx0XHRcdFx0b3V0ZGF0ZWRNb2R1bGVzLnB1c2godG9Nb2R1bGVJZChpZCkpO1xyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHR9XHJcbiBcdFx0XHRkZWZlcnJlZC5yZXNvbHZlKG91dGRhdGVkTW9kdWxlcyk7XHJcbiBcdFx0fVxyXG4gXHR9XHJcbiBcdFxyXG4gXHRmdW5jdGlvbiBob3RBcHBseShvcHRpb25zKSB7XHJcbiBcdFx0aWYoaG90U3RhdHVzICE9PSBcInJlYWR5XCIpIHRocm93IG5ldyBFcnJvcihcImFwcGx5KCkgaXMgb25seSBhbGxvd2VkIGluIHJlYWR5IHN0YXR1c1wiKTtcclxuIFx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuIFx0XHJcbiBcdFx0dmFyIGNiO1xyXG4gXHRcdHZhciBpO1xyXG4gXHRcdHZhciBqO1xyXG4gXHRcdHZhciBtb2R1bGU7XHJcbiBcdFx0dmFyIG1vZHVsZUlkO1xyXG4gXHRcclxuIFx0XHRmdW5jdGlvbiBnZXRBZmZlY3RlZFN0dWZmKHVwZGF0ZU1vZHVsZUlkKSB7XHJcbiBcdFx0XHR2YXIgb3V0ZGF0ZWRNb2R1bGVzID0gW3VwZGF0ZU1vZHVsZUlkXTtcclxuIFx0XHRcdHZhciBvdXRkYXRlZERlcGVuZGVuY2llcyA9IHt9O1xyXG4gXHRcclxuIFx0XHRcdHZhciBxdWV1ZSA9IG91dGRhdGVkTW9kdWxlcy5zbGljZSgpLm1hcChmdW5jdGlvbihpZCkge1xyXG4gXHRcdFx0XHRyZXR1cm4ge1xyXG4gXHRcdFx0XHRcdGNoYWluOiBbaWRdLFxyXG4gXHRcdFx0XHRcdGlkOiBpZFxyXG4gXHRcdFx0XHR9O1xyXG4gXHRcdFx0fSk7XHJcbiBcdFx0XHR3aGlsZShxdWV1ZS5sZW5ndGggPiAwKSB7XHJcbiBcdFx0XHRcdHZhciBxdWV1ZUl0ZW0gPSBxdWV1ZS5wb3AoKTtcclxuIFx0XHRcdFx0dmFyIG1vZHVsZUlkID0gcXVldWVJdGVtLmlkO1xyXG4gXHRcdFx0XHR2YXIgY2hhaW4gPSBxdWV1ZUl0ZW0uY2hhaW47XHJcbiBcdFx0XHRcdG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xyXG4gXHRcdFx0XHRpZighbW9kdWxlIHx8IG1vZHVsZS5ob3QuX3NlbGZBY2NlcHRlZClcclxuIFx0XHRcdFx0XHRjb250aW51ZTtcclxuIFx0XHRcdFx0aWYobW9kdWxlLmhvdC5fc2VsZkRlY2xpbmVkKSB7XHJcbiBcdFx0XHRcdFx0cmV0dXJuIHtcclxuIFx0XHRcdFx0XHRcdHR5cGU6IFwic2VsZi1kZWNsaW5lZFwiLFxyXG4gXHRcdFx0XHRcdFx0Y2hhaW46IGNoYWluLFxyXG4gXHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkXHJcbiBcdFx0XHRcdFx0fTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRpZihtb2R1bGUuaG90Ll9tYWluKSB7XHJcbiBcdFx0XHRcdFx0cmV0dXJuIHtcclxuIFx0XHRcdFx0XHRcdHR5cGU6IFwidW5hY2NlcHRlZFwiLFxyXG4gXHRcdFx0XHRcdFx0Y2hhaW46IGNoYWluLFxyXG4gXHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkXHJcbiBcdFx0XHRcdFx0fTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgbW9kdWxlLnBhcmVudHMubGVuZ3RoOyBpKyspIHtcclxuIFx0XHRcdFx0XHR2YXIgcGFyZW50SWQgPSBtb2R1bGUucGFyZW50c1tpXTtcclxuIFx0XHRcdFx0XHR2YXIgcGFyZW50ID0gaW5zdGFsbGVkTW9kdWxlc1twYXJlbnRJZF07XHJcbiBcdFx0XHRcdFx0aWYoIXBhcmVudCkgY29udGludWU7XHJcbiBcdFx0XHRcdFx0aWYocGFyZW50LmhvdC5fZGVjbGluZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdKSB7XHJcbiBcdFx0XHRcdFx0XHRyZXR1cm4ge1xyXG4gXHRcdFx0XHRcdFx0XHR0eXBlOiBcImRlY2xpbmVkXCIsXHJcbiBcdFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbi5jb25jYXQoW3BhcmVudElkXSksXHJcbiBcdFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBtb2R1bGVJZCxcclxuIFx0XHRcdFx0XHRcdFx0cGFyZW50SWQ6IHBhcmVudElkXHJcbiBcdFx0XHRcdFx0XHR9O1xyXG4gXHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0XHRpZihvdXRkYXRlZE1vZHVsZXMuaW5kZXhPZihwYXJlbnRJZCkgPj0gMCkgY29udGludWU7XHJcbiBcdFx0XHRcdFx0aWYocGFyZW50LmhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdKSB7XHJcbiBcdFx0XHRcdFx0XHRpZighb3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdKVxyXG4gXHRcdFx0XHRcdFx0XHRvdXRkYXRlZERlcGVuZGVuY2llc1twYXJlbnRJZF0gPSBbXTtcclxuIFx0XHRcdFx0XHRcdGFkZEFsbFRvU2V0KG91dGRhdGVkRGVwZW5kZW5jaWVzW3BhcmVudElkXSwgW21vZHVsZUlkXSk7XHJcbiBcdFx0XHRcdFx0XHRjb250aW51ZTtcclxuIFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0ZGVsZXRlIG91dGRhdGVkRGVwZW5kZW5jaWVzW3BhcmVudElkXTtcclxuIFx0XHRcdFx0XHRvdXRkYXRlZE1vZHVsZXMucHVzaChwYXJlbnRJZCk7XHJcbiBcdFx0XHRcdFx0cXVldWUucHVzaCh7XHJcbiBcdFx0XHRcdFx0XHRjaGFpbjogY2hhaW4uY29uY2F0KFtwYXJlbnRJZF0pLFxyXG4gXHRcdFx0XHRcdFx0aWQ6IHBhcmVudElkXHJcbiBcdFx0XHRcdFx0fSk7XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdH1cclxuIFx0XHJcbiBcdFx0XHRyZXR1cm4ge1xyXG4gXHRcdFx0XHR0eXBlOiBcImFjY2VwdGVkXCIsXHJcbiBcdFx0XHRcdG1vZHVsZUlkOiB1cGRhdGVNb2R1bGVJZCxcclxuIFx0XHRcdFx0b3V0ZGF0ZWRNb2R1bGVzOiBvdXRkYXRlZE1vZHVsZXMsXHJcbiBcdFx0XHRcdG91dGRhdGVkRGVwZW5kZW5jaWVzOiBvdXRkYXRlZERlcGVuZGVuY2llc1xyXG4gXHRcdFx0fTtcclxuIFx0XHR9XHJcbiBcdFxyXG4gXHRcdGZ1bmN0aW9uIGFkZEFsbFRvU2V0KGEsIGIpIHtcclxuIFx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XHJcbiBcdFx0XHRcdHZhciBpdGVtID0gYltpXTtcclxuIFx0XHRcdFx0aWYoYS5pbmRleE9mKGl0ZW0pIDwgMClcclxuIFx0XHRcdFx0XHRhLnB1c2goaXRlbSk7XHJcbiBcdFx0XHR9XHJcbiBcdFx0fVxyXG4gXHRcclxuIFx0XHQvLyBhdCBiZWdpbiBhbGwgdXBkYXRlcyBtb2R1bGVzIGFyZSBvdXRkYXRlZFxyXG4gXHRcdC8vIHRoZSBcIm91dGRhdGVkXCIgc3RhdHVzIGNhbiBwcm9wYWdhdGUgdG8gcGFyZW50cyBpZiB0aGV5IGRvbid0IGFjY2VwdCB0aGUgY2hpbGRyZW5cclxuIFx0XHR2YXIgb3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSB7fTtcclxuIFx0XHR2YXIgb3V0ZGF0ZWRNb2R1bGVzID0gW107XHJcbiBcdFx0dmFyIGFwcGxpZWRVcGRhdGUgPSB7fTtcclxuIFx0XHJcbiBcdFx0dmFyIHdhcm5VbmV4cGVjdGVkUmVxdWlyZSA9IGZ1bmN0aW9uIHdhcm5VbmV4cGVjdGVkUmVxdWlyZSgpIHtcclxuIFx0XHRcdGNvbnNvbGUud2FybihcIltITVJdIHVuZXhwZWN0ZWQgcmVxdWlyZShcIiArIHJlc3VsdC5tb2R1bGVJZCArIFwiKSB0byBkaXNwb3NlZCBtb2R1bGVcIik7XHJcbiBcdFx0fTtcclxuIFx0XHJcbiBcdFx0Zm9yKHZhciBpZCBpbiBob3RVcGRhdGUpIHtcclxuIFx0XHRcdGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChob3RVcGRhdGUsIGlkKSkge1xyXG4gXHRcdFx0XHRtb2R1bGVJZCA9IHRvTW9kdWxlSWQoaWQpO1xyXG4gXHRcdFx0XHR2YXIgcmVzdWx0O1xyXG4gXHRcdFx0XHRpZihob3RVcGRhdGVbaWRdKSB7XHJcbiBcdFx0XHRcdFx0cmVzdWx0ID0gZ2V0QWZmZWN0ZWRTdHVmZihtb2R1bGVJZCk7XHJcbiBcdFx0XHRcdH0gZWxzZSB7XHJcbiBcdFx0XHRcdFx0cmVzdWx0ID0ge1xyXG4gXHRcdFx0XHRcdFx0dHlwZTogXCJkaXNwb3NlZFwiLFxyXG4gXHRcdFx0XHRcdFx0bW9kdWxlSWQ6IGlkXHJcbiBcdFx0XHRcdFx0fTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0XHR2YXIgYWJvcnRFcnJvciA9IGZhbHNlO1xyXG4gXHRcdFx0XHR2YXIgZG9BcHBseSA9IGZhbHNlO1xyXG4gXHRcdFx0XHR2YXIgZG9EaXNwb3NlID0gZmFsc2U7XHJcbiBcdFx0XHRcdHZhciBjaGFpbkluZm8gPSBcIlwiO1xyXG4gXHRcdFx0XHRpZihyZXN1bHQuY2hhaW4pIHtcclxuIFx0XHRcdFx0XHRjaGFpbkluZm8gPSBcIlxcblVwZGF0ZSBwcm9wYWdhdGlvbjogXCIgKyByZXN1bHQuY2hhaW4uam9pbihcIiAtPiBcIik7XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdFx0c3dpdGNoKHJlc3VsdC50eXBlKSB7XHJcbiBcdFx0XHRcdFx0Y2FzZSBcInNlbGYtZGVjbGluZWRcIjpcclxuIFx0XHRcdFx0XHRcdGlmKG9wdGlvbnMub25EZWNsaW5lZClcclxuIFx0XHRcdFx0XHRcdFx0b3B0aW9ucy5vbkRlY2xpbmVkKHJlc3VsdCk7XHJcbiBcdFx0XHRcdFx0XHRpZighb3B0aW9ucy5pZ25vcmVEZWNsaW5lZClcclxuIFx0XHRcdFx0XHRcdFx0YWJvcnRFcnJvciA9IG5ldyBFcnJvcihcIkFib3J0ZWQgYmVjYXVzZSBvZiBzZWxmIGRlY2xpbmU6IFwiICsgcmVzdWx0Lm1vZHVsZUlkICsgY2hhaW5JbmZvKTtcclxuIFx0XHRcdFx0XHRcdGJyZWFrO1xyXG4gXHRcdFx0XHRcdGNhc2UgXCJkZWNsaW5lZFwiOlxyXG4gXHRcdFx0XHRcdFx0aWYob3B0aW9ucy5vbkRlY2xpbmVkKVxyXG4gXHRcdFx0XHRcdFx0XHRvcHRpb25zLm9uRGVjbGluZWQocmVzdWx0KTtcclxuIFx0XHRcdFx0XHRcdGlmKCFvcHRpb25zLmlnbm9yZURlY2xpbmVkKVxyXG4gXHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFwiQWJvcnRlZCBiZWNhdXNlIG9mIGRlY2xpbmVkIGRlcGVuZGVuY3k6IFwiICsgcmVzdWx0Lm1vZHVsZUlkICsgXCIgaW4gXCIgKyByZXN1bHQucGFyZW50SWQgKyBjaGFpbkluZm8pO1xyXG4gXHRcdFx0XHRcdFx0YnJlYWs7XHJcbiBcdFx0XHRcdFx0Y2FzZSBcInVuYWNjZXB0ZWRcIjpcclxuIFx0XHRcdFx0XHRcdGlmKG9wdGlvbnMub25VbmFjY2VwdGVkKVxyXG4gXHRcdFx0XHRcdFx0XHRvcHRpb25zLm9uVW5hY2NlcHRlZChyZXN1bHQpO1xyXG4gXHRcdFx0XHRcdFx0aWYoIW9wdGlvbnMuaWdub3JlVW5hY2NlcHRlZClcclxuIFx0XHRcdFx0XHRcdFx0YWJvcnRFcnJvciA9IG5ldyBFcnJvcihcIkFib3J0ZWQgYmVjYXVzZSBcIiArIG1vZHVsZUlkICsgXCIgaXMgbm90IGFjY2VwdGVkXCIgKyBjaGFpbkluZm8pO1xyXG4gXHRcdFx0XHRcdFx0YnJlYWs7XHJcbiBcdFx0XHRcdFx0Y2FzZSBcImFjY2VwdGVkXCI6XHJcbiBcdFx0XHRcdFx0XHRpZihvcHRpb25zLm9uQWNjZXB0ZWQpXHJcbiBcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25BY2NlcHRlZChyZXN1bHQpO1xyXG4gXHRcdFx0XHRcdFx0ZG9BcHBseSA9IHRydWU7XHJcbiBcdFx0XHRcdFx0XHRicmVhaztcclxuIFx0XHRcdFx0XHRjYXNlIFwiZGlzcG9zZWRcIjpcclxuIFx0XHRcdFx0XHRcdGlmKG9wdGlvbnMub25EaXNwb3NlZClcclxuIFx0XHRcdFx0XHRcdFx0b3B0aW9ucy5vbkRpc3Bvc2VkKHJlc3VsdCk7XHJcbiBcdFx0XHRcdFx0XHRkb0Rpc3Bvc2UgPSB0cnVlO1xyXG4gXHRcdFx0XHRcdFx0YnJlYWs7XHJcbiBcdFx0XHRcdFx0ZGVmYXVsdDpcclxuIFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihcIlVuZXhjZXB0aW9uIHR5cGUgXCIgKyByZXN1bHQudHlwZSk7XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdFx0aWYoYWJvcnRFcnJvcikge1xyXG4gXHRcdFx0XHRcdGhvdFNldFN0YXR1cyhcImFib3J0XCIpO1xyXG4gXHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChhYm9ydEVycm9yKTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRpZihkb0FwcGx5KSB7XHJcbiBcdFx0XHRcdFx0YXBwbGllZFVwZGF0ZVttb2R1bGVJZF0gPSBob3RVcGRhdGVbbW9kdWxlSWRdO1xyXG4gXHRcdFx0XHRcdGFkZEFsbFRvU2V0KG91dGRhdGVkTW9kdWxlcywgcmVzdWx0Lm91dGRhdGVkTW9kdWxlcyk7XHJcbiBcdFx0XHRcdFx0Zm9yKG1vZHVsZUlkIGluIHJlc3VsdC5vdXRkYXRlZERlcGVuZGVuY2llcykge1xyXG4gXHRcdFx0XHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdC5vdXRkYXRlZERlcGVuZGVuY2llcywgbW9kdWxlSWQpKSB7XHJcbiBcdFx0XHRcdFx0XHRcdGlmKCFvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF0pXHJcbiBcdFx0XHRcdFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdID0gW107XHJcbiBcdFx0XHRcdFx0XHRcdGFkZEFsbFRvU2V0KG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSwgcmVzdWx0Lm91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSk7XHJcbiBcdFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHRcdGlmKGRvRGlzcG9zZSkge1xyXG4gXHRcdFx0XHRcdGFkZEFsbFRvU2V0KG91dGRhdGVkTW9kdWxlcywgW3Jlc3VsdC5tb2R1bGVJZF0pO1xyXG4gXHRcdFx0XHRcdGFwcGxpZWRVcGRhdGVbbW9kdWxlSWRdID0gd2FyblVuZXhwZWN0ZWRSZXF1aXJlO1xyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHR9XHJcbiBcdFx0fVxyXG4gXHRcclxuIFx0XHQvLyBTdG9yZSBzZWxmIGFjY2VwdGVkIG91dGRhdGVkIG1vZHVsZXMgdG8gcmVxdWlyZSB0aGVtIGxhdGVyIGJ5IHRoZSBtb2R1bGUgc3lzdGVtXHJcbiBcdFx0dmFyIG91dGRhdGVkU2VsZkFjY2VwdGVkTW9kdWxlcyA9IFtdO1xyXG4gXHRcdGZvcihpID0gMDsgaSA8IG91dGRhdGVkTW9kdWxlcy5sZW5ndGg7IGkrKykge1xyXG4gXHRcdFx0bW9kdWxlSWQgPSBvdXRkYXRlZE1vZHVsZXNbaV07XHJcbiBcdFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSAmJiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5ob3QuX3NlbGZBY2NlcHRlZClcclxuIFx0XHRcdFx0b3V0ZGF0ZWRTZWxmQWNjZXB0ZWRNb2R1bGVzLnB1c2goe1xyXG4gXHRcdFx0XHRcdG1vZHVsZTogbW9kdWxlSWQsXHJcbiBcdFx0XHRcdFx0ZXJyb3JIYW5kbGVyOiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5ob3QuX3NlbGZBY2NlcHRlZFxyXG4gXHRcdFx0XHR9KTtcclxuIFx0XHR9XHJcbiBcdFxyXG4gXHRcdC8vIE5vdyBpbiBcImRpc3Bvc2VcIiBwaGFzZVxyXG4gXHRcdGhvdFNldFN0YXR1cyhcImRpc3Bvc2VcIik7XHJcbiBcdFx0T2JqZWN0LmtleXMoaG90QXZhaWxhYmxlRmlsZXNNYXApLmZvckVhY2goZnVuY3Rpb24oY2h1bmtJZCkge1xyXG4gXHRcdFx0aWYoaG90QXZhaWxhYmxlRmlsZXNNYXBbY2h1bmtJZF0gPT09IGZhbHNlKSB7XHJcbiBcdFx0XHRcdGhvdERpc3Bvc2VDaHVuayhjaHVua0lkKTtcclxuIFx0XHRcdH1cclxuIFx0XHR9KTtcclxuIFx0XHJcbiBcdFx0dmFyIGlkeDtcclxuIFx0XHR2YXIgcXVldWUgPSBvdXRkYXRlZE1vZHVsZXMuc2xpY2UoKTtcclxuIFx0XHR3aGlsZShxdWV1ZS5sZW5ndGggPiAwKSB7XHJcbiBcdFx0XHRtb2R1bGVJZCA9IHF1ZXVlLnBvcCgpO1xyXG4gXHRcdFx0bW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XHJcbiBcdFx0XHRpZighbW9kdWxlKSBjb250aW51ZTtcclxuIFx0XHJcbiBcdFx0XHR2YXIgZGF0YSA9IHt9O1xyXG4gXHRcclxuIFx0XHRcdC8vIENhbGwgZGlzcG9zZSBoYW5kbGVyc1xyXG4gXHRcdFx0dmFyIGRpc3Bvc2VIYW5kbGVycyA9IG1vZHVsZS5ob3QuX2Rpc3Bvc2VIYW5kbGVycztcclxuIFx0XHRcdGZvcihqID0gMDsgaiA8IGRpc3Bvc2VIYW5kbGVycy5sZW5ndGg7IGorKykge1xyXG4gXHRcdFx0XHRjYiA9IGRpc3Bvc2VIYW5kbGVyc1tqXTtcclxuIFx0XHRcdFx0Y2IoZGF0YSk7XHJcbiBcdFx0XHR9XHJcbiBcdFx0XHRob3RDdXJyZW50TW9kdWxlRGF0YVttb2R1bGVJZF0gPSBkYXRhO1xyXG4gXHRcclxuIFx0XHRcdC8vIGRpc2FibGUgbW9kdWxlICh0aGlzIGRpc2FibGVzIHJlcXVpcmVzIGZyb20gdGhpcyBtb2R1bGUpXHJcbiBcdFx0XHRtb2R1bGUuaG90LmFjdGl2ZSA9IGZhbHNlO1xyXG4gXHRcclxuIFx0XHRcdC8vIHJlbW92ZSBtb2R1bGUgZnJvbSBjYWNoZVxyXG4gXHRcdFx0ZGVsZXRlIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xyXG4gXHRcclxuIFx0XHRcdC8vIHdoZW4gZGlzcG9zaW5nIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCBkaXNwb3NlIGhhbmRsZXJcclxuIFx0XHRcdGRlbGV0ZSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XHJcbiBcdFxyXG4gXHRcdFx0Ly8gcmVtb3ZlIFwicGFyZW50c1wiIHJlZmVyZW5jZXMgZnJvbSBhbGwgY2hpbGRyZW5cclxuIFx0XHRcdGZvcihqID0gMDsgaiA8IG1vZHVsZS5jaGlsZHJlbi5sZW5ndGg7IGorKykge1xyXG4gXHRcdFx0XHR2YXIgY2hpbGQgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZS5jaGlsZHJlbltqXV07XHJcbiBcdFx0XHRcdGlmKCFjaGlsZCkgY29udGludWU7XHJcbiBcdFx0XHRcdGlkeCA9IGNoaWxkLnBhcmVudHMuaW5kZXhPZihtb2R1bGVJZCk7XHJcbiBcdFx0XHRcdGlmKGlkeCA+PSAwKSB7XHJcbiBcdFx0XHRcdFx0Y2hpbGQucGFyZW50cy5zcGxpY2UoaWR4LCAxKTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0fVxyXG4gXHRcdH1cclxuIFx0XHJcbiBcdFx0Ly8gcmVtb3ZlIG91dGRhdGVkIGRlcGVuZGVuY3kgZnJvbSBtb2R1bGUgY2hpbGRyZW5cclxuIFx0XHR2YXIgZGVwZW5kZW5jeTtcclxuIFx0XHR2YXIgbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXM7XHJcbiBcdFx0Zm9yKG1vZHVsZUlkIGluIG91dGRhdGVkRGVwZW5kZW5jaWVzKSB7XHJcbiBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3V0ZGF0ZWREZXBlbmRlbmNpZXMsIG1vZHVsZUlkKSkge1xyXG4gXHRcdFx0XHRtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXTtcclxuIFx0XHRcdFx0aWYobW9kdWxlKSB7XHJcbiBcdFx0XHRcdFx0bW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XHJcbiBcdFx0XHRcdFx0Zm9yKGogPSAwOyBqIDwgbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMubGVuZ3RoOyBqKyspIHtcclxuIFx0XHRcdFx0XHRcdGRlcGVuZGVuY3kgPSBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llc1tqXTtcclxuIFx0XHRcdFx0XHRcdGlkeCA9IG1vZHVsZS5jaGlsZHJlbi5pbmRleE9mKGRlcGVuZGVuY3kpO1xyXG4gXHRcdFx0XHRcdFx0aWYoaWR4ID49IDApIG1vZHVsZS5jaGlsZHJlbi5zcGxpY2UoaWR4LCAxKTtcclxuIFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdH1cclxuIFx0XHR9XHJcbiBcdFxyXG4gXHRcdC8vIE5vdCBpbiBcImFwcGx5XCIgcGhhc2VcclxuIFx0XHRob3RTZXRTdGF0dXMoXCJhcHBseVwiKTtcclxuIFx0XHJcbiBcdFx0aG90Q3VycmVudEhhc2ggPSBob3RVcGRhdGVOZXdIYXNoO1xyXG4gXHRcclxuIFx0XHQvLyBpbnNlcnQgbmV3IGNvZGVcclxuIFx0XHRmb3IobW9kdWxlSWQgaW4gYXBwbGllZFVwZGF0ZSkge1xyXG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFwcGxpZWRVcGRhdGUsIG1vZHVsZUlkKSkge1xyXG4gXHRcdFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IGFwcGxpZWRVcGRhdGVbbW9kdWxlSWRdO1xyXG4gXHRcdFx0fVxyXG4gXHRcdH1cclxuIFx0XHJcbiBcdFx0Ly8gY2FsbCBhY2NlcHQgaGFuZGxlcnNcclxuIFx0XHR2YXIgZXJyb3IgPSBudWxsO1xyXG4gXHRcdGZvcihtb2R1bGVJZCBpbiBvdXRkYXRlZERlcGVuZGVuY2llcykge1xyXG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG91dGRhdGVkRGVwZW5kZW5jaWVzLCBtb2R1bGVJZCkpIHtcclxuIFx0XHRcdFx0bW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XHJcbiBcdFx0XHRcdGlmKG1vZHVsZSkge1xyXG4gXHRcdFx0XHRcdG1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzID0gb3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdO1xyXG4gXHRcdFx0XHRcdHZhciBjYWxsYmFja3MgPSBbXTtcclxuIFx0XHRcdFx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcy5sZW5ndGg7IGkrKykge1xyXG4gXHRcdFx0XHRcdFx0ZGVwZW5kZW5jeSA9IG1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzW2ldO1xyXG4gXHRcdFx0XHRcdFx0Y2IgPSBtb2R1bGUuaG90Ll9hY2NlcHRlZERlcGVuZGVuY2llc1tkZXBlbmRlbmN5XTtcclxuIFx0XHRcdFx0XHRcdGlmKGNiKSB7XHJcbiBcdFx0XHRcdFx0XHRcdGlmKGNhbGxiYWNrcy5pbmRleE9mKGNiKSA+PSAwKSBjb250aW51ZTtcclxuIFx0XHRcdFx0XHRcdFx0Y2FsbGJhY2tzLnB1c2goY2IpO1xyXG4gXHRcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0XHRmb3IoaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcclxuIFx0XHRcdFx0XHRcdGNiID0gY2FsbGJhY2tzW2ldO1xyXG4gXHRcdFx0XHRcdFx0dHJ5IHtcclxuIFx0XHRcdFx0XHRcdFx0Y2IobW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMpO1xyXG4gXHRcdFx0XHRcdFx0fSBjYXRjaChlcnIpIHtcclxuIFx0XHRcdFx0XHRcdFx0aWYob3B0aW9ucy5vbkVycm9yZWQpIHtcclxuIFx0XHRcdFx0XHRcdFx0XHRvcHRpb25zLm9uRXJyb3JlZCh7XHJcbiBcdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcImFjY2VwdC1lcnJvcmVkXCIsXHJcbiBcdFx0XHRcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWQsXHJcbiBcdFx0XHRcdFx0XHRcdFx0XHRkZXBlbmRlbmN5SWQ6IG1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzW2ldLFxyXG4gXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGVyclxyXG4gXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG4gXHRcdFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0XHRcdGlmKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcclxuIFx0XHRcdFx0XHRcdFx0XHRpZighZXJyb3IpXHJcbiBcdFx0XHRcdFx0XHRcdFx0XHRlcnJvciA9IGVycjtcclxuIFx0XHRcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0fVxyXG4gXHRcdH1cclxuIFx0XHJcbiBcdFx0Ly8gTG9hZCBzZWxmIGFjY2VwdGVkIG1vZHVsZXNcclxuIFx0XHRmb3IoaSA9IDA7IGkgPCBvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMubGVuZ3RoOyBpKyspIHtcclxuIFx0XHRcdHZhciBpdGVtID0gb3V0ZGF0ZWRTZWxmQWNjZXB0ZWRNb2R1bGVzW2ldO1xyXG4gXHRcdFx0bW9kdWxlSWQgPSBpdGVtLm1vZHVsZTtcclxuIFx0XHRcdGhvdEN1cnJlbnRQYXJlbnRzID0gW21vZHVsZUlkXTtcclxuIFx0XHRcdHRyeSB7XHJcbiBcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpO1xyXG4gXHRcdFx0fSBjYXRjaChlcnIpIHtcclxuIFx0XHRcdFx0aWYodHlwZW9mIGl0ZW0uZXJyb3JIYW5kbGVyID09PSBcImZ1bmN0aW9uXCIpIHtcclxuIFx0XHRcdFx0XHR0cnkge1xyXG4gXHRcdFx0XHRcdFx0aXRlbS5lcnJvckhhbmRsZXIoZXJyKTtcclxuIFx0XHRcdFx0XHR9IGNhdGNoKGVycjIpIHtcclxuIFx0XHRcdFx0XHRcdGlmKG9wdGlvbnMub25FcnJvcmVkKSB7XHJcbiBcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcclxuIFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcInNlbGYtYWNjZXB0LWVycm9yLWhhbmRsZXItZXJyb3JlZFwiLFxyXG4gXHRcdFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBtb2R1bGVJZCxcclxuIFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyMixcclxuIFx0XHRcdFx0XHRcdFx0XHRvcmdpbmFsRXJyb3I6IGVyciwgLy8gVE9ETyByZW1vdmUgaW4gd2VicGFjayA0XHJcbiBcdFx0XHRcdFx0XHRcdFx0b3JpZ2luYWxFcnJvcjogZXJyXHJcbiBcdFx0XHRcdFx0XHRcdH0pO1xyXG4gXHRcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRcdFx0aWYoIW9wdGlvbnMuaWdub3JlRXJyb3JlZCkge1xyXG4gXHRcdFx0XHRcdFx0XHRpZighZXJyb3IpXHJcbiBcdFx0XHRcdFx0XHRcdFx0ZXJyb3IgPSBlcnIyO1xyXG4gXHRcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRcdFx0aWYoIWVycm9yKVxyXG4gXHRcdFx0XHRcdFx0XHRlcnJvciA9IGVycjtcclxuIFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdH0gZWxzZSB7XHJcbiBcdFx0XHRcdFx0aWYob3B0aW9ucy5vbkVycm9yZWQpIHtcclxuIFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcclxuIFx0XHRcdFx0XHRcdFx0dHlwZTogXCJzZWxmLWFjY2VwdC1lcnJvcmVkXCIsXHJcbiBcdFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBtb2R1bGVJZCxcclxuIFx0XHRcdFx0XHRcdFx0ZXJyb3I6IGVyclxyXG4gXHRcdFx0XHRcdFx0fSk7XHJcbiBcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRcdGlmKCFvcHRpb25zLmlnbm9yZUVycm9yZWQpIHtcclxuIFx0XHRcdFx0XHRcdGlmKCFlcnJvcilcclxuIFx0XHRcdFx0XHRcdFx0ZXJyb3IgPSBlcnI7XHJcbiBcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHR9XHJcbiBcdFx0fVxyXG4gXHRcclxuIFx0XHQvLyBoYW5kbGUgZXJyb3JzIGluIGFjY2VwdCBoYW5kbGVycyBhbmQgc2VsZiBhY2NlcHRlZCBtb2R1bGUgbG9hZFxyXG4gXHRcdGlmKGVycm9yKSB7XHJcbiBcdFx0XHRob3RTZXRTdGF0dXMoXCJmYWlsXCIpO1xyXG4gXHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuIFx0XHR9XHJcbiBcdFxyXG4gXHRcdGhvdFNldFN0YXR1cyhcImlkbGVcIik7XHJcbiBcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcclxuIFx0XHRcdHJlc29sdmUob3V0ZGF0ZWRNb2R1bGVzKTtcclxuIFx0XHR9KTtcclxuIFx0fVxyXG5cbiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGhvdDogaG90Q3JlYXRlTW9kdWxlKG1vZHVsZUlkKSxcbiBcdFx0XHRwYXJlbnRzOiAoaG90Q3VycmVudFBhcmVudHNUZW1wID0gaG90Q3VycmVudFBhcmVudHMsIGhvdEN1cnJlbnRQYXJlbnRzID0gW10sIGhvdEN1cnJlbnRQYXJlbnRzVGVtcCksXG4gXHRcdFx0Y2hpbGRyZW46IFtdXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIGhvdENyZWF0ZVJlcXVpcmUobW9kdWxlSWQpKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gX193ZWJwYWNrX2hhc2hfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5oID0gZnVuY3Rpb24oKSB7IHJldHVybiBob3RDdXJyZW50SGFzaDsgfTtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gaG90Q3JlYXRlUmVxdWlyZSgxMTgpKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDExOCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgYWUxMDIxMjgyYzM3MjcyZWFmYzciLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwYXRoXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwicGF0aFwiXG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZ2xvYmFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJ1ZmZlclwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcImJ1ZmZlclwiXG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogRGV0ZWN0IEVsZWN0cm9uIHJlbmRlcmVyIHByb2Nlc3MsIHdoaWNoIGlzIG5vZGUsIGJ1dCB3ZSBzaG91bGRcbiAqIHRyZWF0IGFzIGEgYnJvd3Nlci5cbiAqL1xuXG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vYnJvd3Nlci5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL25vZGUuanMnKTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwic3RyZWFtXCJcbi8vIG1vZHVsZSBpZCA9IDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNS42JyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qc1xuLy8gbW9kdWxlIGlkID0gNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGRlcGRcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTcgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgY2FsbFNpdGVUb1N0cmluZyA9IHJlcXVpcmUoJy4vbGliL2NvbXBhdCcpLmNhbGxTaXRlVG9TdHJpbmdcbnZhciBldmVudExpc3RlbmVyQ291bnQgPSByZXF1aXJlKCcuL2xpYi9jb21wYXQnKS5ldmVudExpc3RlbmVyQ291bnRcbnZhciByZWxhdGl2ZSA9IHJlcXVpcmUoJ3BhdGgnKS5yZWxhdGl2ZVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZGVwZFxuXG4vKipcbiAqIEdldCB0aGUgcGF0aCB0byBiYXNlIGZpbGVzIG9uLlxuICovXG5cbnZhciBiYXNlUGF0aCA9IHByb2Nlc3MuY3dkKClcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgbmFtZXNwYWNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgc3RyaW5nLlxuICovXG5cbmZ1bmN0aW9uIGNvbnRhaW5zTmFtZXNwYWNlIChzdHIsIG5hbWVzcGFjZSkge1xuICB2YXIgdmFscyA9IHN0ci5zcGxpdCgvWyAsXSsvKVxuICB2YXIgbnMgPSBTdHJpbmcobmFtZXNwYWNlKS50b0xvd2VyQ2FzZSgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHZhbCA9IHZhbHNbaV1cblxuICAgIC8vIG5hbWVzcGFjZSBjb250YWluZWRcbiAgICBpZiAodmFsICYmICh2YWwgPT09ICcqJyB8fCB2YWwudG9Mb3dlckNhc2UoKSA9PT0gbnMpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIENvbnZlcnQgYSBkYXRhIGRlc2NyaXB0b3IgdG8gYWNjZXNzb3IgZGVzY3JpcHRvci5cbiAqL1xuXG5mdW5jdGlvbiBjb252ZXJ0RGF0YURlc2NyaXB0b3JUb0FjY2Vzc29yIChvYmosIHByb3AsIG1lc3NhZ2UpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgcHJvcClcbiAgdmFyIHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZVxuXG4gIGRlc2NyaXB0b3IuZ2V0ID0gZnVuY3Rpb24gZ2V0dGVyICgpIHsgcmV0dXJuIHZhbHVlIH1cblxuICBpZiAoZGVzY3JpcHRvci53cml0YWJsZSkge1xuICAgIGRlc2NyaXB0b3Iuc2V0ID0gZnVuY3Rpb24gc2V0dGVyICh2YWwpIHsgcmV0dXJuICh2YWx1ZSA9IHZhbCkgfVxuICB9XG5cbiAgZGVsZXRlIGRlc2NyaXB0b3IudmFsdWVcbiAgZGVsZXRlIGRlc2NyaXB0b3Iud3JpdGFibGVcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCBkZXNjcmlwdG9yKVxuXG4gIHJldHVybiBkZXNjcmlwdG9yXG59XG5cbi8qKlxuICogQ3JlYXRlIGFyZ3VtZW50cyBzdHJpbmcgdG8ga2VlcCBhcml0eS5cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVBcmd1bWVudHNTdHJpbmcgKGFyaXR5KSB7XG4gIHZhciBzdHIgPSAnJ1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJpdHk7IGkrKykge1xuICAgIHN0ciArPSAnLCBhcmcnICsgaVxuICB9XG5cbiAgcmV0dXJuIHN0ci5zdWJzdHIoMilcbn1cblxuLyoqXG4gKiBDcmVhdGUgc3RhY2sgc3RyaW5nIGZyb20gc3RhY2suXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlU3RhY2tTdHJpbmcgKHN0YWNrKSB7XG4gIHZhciBzdHIgPSB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5uYW1lc3BhY2VcblxuICBpZiAodGhpcy5tZXNzYWdlKSB7XG4gICAgc3RyICs9ICcgZGVwcmVjYXRlZCAnICsgdGhpcy5tZXNzYWdlXG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgc3RyICs9ICdcXG4gICAgYXQgJyArIGNhbGxTaXRlVG9TdHJpbmcoc3RhY2tbaV0pXG4gIH1cblxuICByZXR1cm4gc3RyXG59XG5cbi8qKlxuICogQ3JlYXRlIGRlcHJlY2F0ZSBmb3IgbmFtZXNwYWNlIGluIGNhbGxlci5cbiAqL1xuXG5mdW5jdGlvbiBkZXBkIChuYW1lc3BhY2UpIHtcbiAgaWYgKCFuYW1lc3BhY2UpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBuYW1lc3BhY2UgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgdmFyIHN0YWNrID0gZ2V0U3RhY2soKVxuICB2YXIgc2l0ZSA9IGNhbGxTaXRlTG9jYXRpb24oc3RhY2tbMV0pXG4gIHZhciBmaWxlID0gc2l0ZVswXVxuXG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZSAobWVzc2FnZSkge1xuICAgIC8vIGNhbGwgdG8gc2VsZiBhcyBsb2dcbiAgICBsb2cuY2FsbChkZXByZWNhdGUsIG1lc3NhZ2UpXG4gIH1cblxuICBkZXByZWNhdGUuX2ZpbGUgPSBmaWxlXG4gIGRlcHJlY2F0ZS5faWdub3JlZCA9IGlzaWdub3JlZChuYW1lc3BhY2UpXG4gIGRlcHJlY2F0ZS5fbmFtZXNwYWNlID0gbmFtZXNwYWNlXG4gIGRlcHJlY2F0ZS5fdHJhY2VkID0gaXN0cmFjZWQobmFtZXNwYWNlKVxuICBkZXByZWNhdGUuX3dhcm5lZCA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuICBkZXByZWNhdGUuZnVuY3Rpb24gPSB3cmFwZnVuY3Rpb25cbiAgZGVwcmVjYXRlLnByb3BlcnR5ID0gd3JhcHByb3BlcnR5XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZVxufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBuYW1lc3BhY2UgaXMgaWdub3JlZC5cbiAqL1xuXG5mdW5jdGlvbiBpc2lnbm9yZWQgKG5hbWVzcGFjZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogdGVzdGVkIGluIGEgY2hpbGQgcHJvY2Vzc3MgKi9cbiAgaWYgKHByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgIC8vIC0tbm8tZGVwcmVjYXRpb24gc3VwcG9ydFxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICB2YXIgc3RyID0gcHJvY2Vzcy5lbnYuTk9fREVQUkVDQVRJT04gfHwgJydcblxuICAvLyBuYW1lc3BhY2UgaWdub3JlZFxuICByZXR1cm4gY29udGFpbnNOYW1lc3BhY2Uoc3RyLCBuYW1lc3BhY2UpXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIG5hbWVzcGFjZSBpcyB0cmFjZWQuXG4gKi9cblxuZnVuY3Rpb24gaXN0cmFjZWQgKG5hbWVzcGFjZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogdGVzdGVkIGluIGEgY2hpbGQgcHJvY2Vzc3MgKi9cbiAgaWYgKHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikge1xuICAgIC8vIC0tdHJhY2UtZGVwcmVjYXRpb24gc3VwcG9ydFxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICB2YXIgc3RyID0gcHJvY2Vzcy5lbnYuVFJBQ0VfREVQUkVDQVRJT04gfHwgJydcblxuICAvLyBuYW1lc3BhY2UgdHJhY2VkXG4gIHJldHVybiBjb250YWluc05hbWVzcGFjZShzdHIsIG5hbWVzcGFjZSlcbn1cblxuLyoqXG4gKiBEaXNwbGF5IGRlcHJlY2F0aW9uIG1lc3NhZ2UuXG4gKi9cblxuZnVuY3Rpb24gbG9nIChtZXNzYWdlLCBzaXRlKSB7XG4gIHZhciBoYXNsaXN0ZW5lcnMgPSBldmVudExpc3RlbmVyQ291bnQocHJvY2VzcywgJ2RlcHJlY2F0aW9uJykgIT09IDBcblxuICAvLyBhYm9ydCBlYXJseSBpZiBubyBkZXN0aW5hdGlvblxuICBpZiAoIWhhc2xpc3RlbmVycyAmJiB0aGlzLl9pZ25vcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY2FsbGVyXG4gIHZhciBjYWxsRmlsZVxuICB2YXIgY2FsbFNpdGVcbiAgdmFyIGRlcFNpdGVcbiAgdmFyIGkgPSAwXG4gIHZhciBzZWVuID0gZmFsc2VcbiAgdmFyIHN0YWNrID0gZ2V0U3RhY2soKVxuICB2YXIgZmlsZSA9IHRoaXMuX2ZpbGVcblxuICBpZiAoc2l0ZSkge1xuICAgIC8vIHByb3ZpZGVkIHNpdGVcbiAgICBkZXBTaXRlID0gc2l0ZVxuICAgIGNhbGxTaXRlID0gY2FsbFNpdGVMb2NhdGlvbihzdGFja1sxXSlcbiAgICBjYWxsU2l0ZS5uYW1lID0gZGVwU2l0ZS5uYW1lXG4gICAgZmlsZSA9IGNhbGxTaXRlWzBdXG4gIH0gZWxzZSB7XG4gICAgLy8gZ2V0IGNhbGwgc2l0ZVxuICAgIGkgPSAyXG4gICAgZGVwU2l0ZSA9IGNhbGxTaXRlTG9jYXRpb24oc3RhY2tbaV0pXG4gICAgY2FsbFNpdGUgPSBkZXBTaXRlXG4gIH1cblxuICAvLyBnZXQgY2FsbGVyIG9mIGRlcHJlY2F0ZWQgdGhpbmcgaW4gcmVsYXRpb24gdG8gZmlsZVxuICBmb3IgKDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgY2FsbGVyID0gY2FsbFNpdGVMb2NhdGlvbihzdGFja1tpXSlcbiAgICBjYWxsRmlsZSA9IGNhbGxlclswXVxuXG4gICAgaWYgKGNhbGxGaWxlID09PSBmaWxlKSB7XG4gICAgICBzZWVuID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoY2FsbEZpbGUgPT09IHRoaXMuX2ZpbGUpIHtcbiAgICAgIGZpbGUgPSB0aGlzLl9maWxlXG4gICAgfSBlbHNlIGlmIChzZWVuKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHZhciBrZXkgPSBjYWxsZXJcbiAgICA/IGRlcFNpdGUuam9pbignOicpICsgJ19fJyArIGNhbGxlci5qb2luKCc6JylcbiAgICA6IHVuZGVmaW5lZFxuXG4gIGlmIChrZXkgIT09IHVuZGVmaW5lZCAmJiBrZXkgaW4gdGhpcy5fd2FybmVkKSB7XG4gICAgLy8gYWxyZWFkeSB3YXJuZWRcbiAgICByZXR1cm5cbiAgfVxuXG4gIHRoaXMuX3dhcm5lZFtrZXldID0gdHJ1ZVxuXG4gIC8vIGdlbmVyYXRlIGF1dG9tYXRpYyBtZXNzYWdlIGZyb20gY2FsbCBzaXRlXG4gIHZhciBtc2cgPSBtZXNzYWdlXG4gIGlmICghbXNnKSB7XG4gICAgbXNnID0gY2FsbFNpdGUgPT09IGRlcFNpdGUgfHwgIWNhbGxTaXRlLm5hbWVcbiAgICAgID8gZGVmYXVsdE1lc3NhZ2UoZGVwU2l0ZSlcbiAgICAgIDogZGVmYXVsdE1lc3NhZ2UoY2FsbFNpdGUpXG4gIH1cblxuICAvLyBlbWl0IGRlcHJlY2F0aW9uIGlmIGxpc3RlbmVycyBleGlzdFxuICBpZiAoaGFzbGlzdGVuZXJzKSB7XG4gICAgdmFyIGVyciA9IERlcHJlY2F0aW9uRXJyb3IodGhpcy5fbmFtZXNwYWNlLCBtc2csIHN0YWNrLnNsaWNlKGkpKVxuICAgIHByb2Nlc3MuZW1pdCgnZGVwcmVjYXRpb24nLCBlcnIpXG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBmb3JtYXQgYW5kIHdyaXRlIG1lc3NhZ2VcbiAgdmFyIGZvcm1hdCA9IHByb2Nlc3Muc3RkZXJyLmlzVFRZXG4gICAgPyBmb3JtYXRDb2xvclxuICAgIDogZm9ybWF0UGxhaW5cbiAgdmFyIG91dHB1dCA9IGZvcm1hdC5jYWxsKHRoaXMsIG1zZywgY2FsbGVyLCBzdGFjay5zbGljZShpKSlcbiAgcHJvY2Vzcy5zdGRlcnIud3JpdGUob3V0cHV0ICsgJ1xcbicsICd1dGY4Jylcbn1cblxuLyoqXG4gKiBHZXQgY2FsbCBzaXRlIGxvY2F0aW9uIGFzIGFycmF5LlxuICovXG5cbmZ1bmN0aW9uIGNhbGxTaXRlTG9jYXRpb24gKGNhbGxTaXRlKSB7XG4gIHZhciBmaWxlID0gY2FsbFNpdGUuZ2V0RmlsZU5hbWUoKSB8fCAnPGFub255bW91cz4nXG4gIHZhciBsaW5lID0gY2FsbFNpdGUuZ2V0TGluZU51bWJlcigpXG4gIHZhciBjb2xtID0gY2FsbFNpdGUuZ2V0Q29sdW1uTnVtYmVyKClcblxuICBpZiAoY2FsbFNpdGUuaXNFdmFsKCkpIHtcbiAgICBmaWxlID0gY2FsbFNpdGUuZ2V0RXZhbE9yaWdpbigpICsgJywgJyArIGZpbGVcbiAgfVxuXG4gIHZhciBzaXRlID0gW2ZpbGUsIGxpbmUsIGNvbG1dXG5cbiAgc2l0ZS5jYWxsU2l0ZSA9IGNhbGxTaXRlXG4gIHNpdGUubmFtZSA9IGNhbGxTaXRlLmdldEZ1bmN0aW9uTmFtZSgpXG5cbiAgcmV0dXJuIHNpdGVcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGRlZmF1bHQgbWVzc2FnZSBmcm9tIHRoZSBzaXRlLlxuICovXG5cbmZ1bmN0aW9uIGRlZmF1bHRNZXNzYWdlIChzaXRlKSB7XG4gIHZhciBjYWxsU2l0ZSA9IHNpdGUuY2FsbFNpdGVcbiAgdmFyIGZ1bmNOYW1lID0gc2l0ZS5uYW1lXG5cbiAgLy8gbWFrZSB1c2VmdWwgYW5vbnltb3VzIG5hbWVcbiAgaWYgKCFmdW5jTmFtZSkge1xuICAgIGZ1bmNOYW1lID0gJzxhbm9ueW1vdXNAJyArIGZvcm1hdExvY2F0aW9uKHNpdGUpICsgJz4nXG4gIH1cblxuICB2YXIgY29udGV4dCA9IGNhbGxTaXRlLmdldFRoaXMoKVxuICB2YXIgdHlwZU5hbWUgPSBjb250ZXh0ICYmIGNhbGxTaXRlLmdldFR5cGVOYW1lKClcblxuICAvLyBpZ25vcmUgdXNlbGVzcyB0eXBlIG5hbWVcbiAgaWYgKHR5cGVOYW1lID09PSAnT2JqZWN0Jykge1xuICAgIHR5cGVOYW1lID0gdW5kZWZpbmVkXG4gIH1cblxuICAvLyBtYWtlIHVzZWZ1bCB0eXBlIG5hbWVcbiAgaWYgKHR5cGVOYW1lID09PSAnRnVuY3Rpb24nKSB7XG4gICAgdHlwZU5hbWUgPSBjb250ZXh0Lm5hbWUgfHwgdHlwZU5hbWVcbiAgfVxuXG4gIHJldHVybiB0eXBlTmFtZSAmJiBjYWxsU2l0ZS5nZXRNZXRob2ROYW1lKClcbiAgICA/IHR5cGVOYW1lICsgJy4nICsgZnVuY05hbWVcbiAgICA6IGZ1bmNOYW1lXG59XG5cbi8qKlxuICogRm9ybWF0IGRlcHJlY2F0aW9uIG1lc3NhZ2Ugd2l0aG91dCBjb2xvci5cbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRQbGFpbiAobXNnLCBjYWxsZXIsIHN0YWNrKSB7XG4gIHZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKClcblxuICB2YXIgZm9ybWF0dGVkID0gdGltZXN0YW1wICtcbiAgICAnICcgKyB0aGlzLl9uYW1lc3BhY2UgK1xuICAgICcgZGVwcmVjYXRlZCAnICsgbXNnXG5cbiAgLy8gYWRkIHN0YWNrIHRyYWNlXG4gIGlmICh0aGlzLl90cmFjZWQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3JtYXR0ZWQgKz0gJ1xcbiAgICBhdCAnICsgY2FsbFNpdGVUb1N0cmluZyhzdGFja1tpXSlcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybWF0dGVkXG4gIH1cblxuICBpZiAoY2FsbGVyKSB7XG4gICAgZm9ybWF0dGVkICs9ICcgYXQgJyArIGZvcm1hdExvY2F0aW9uKGNhbGxlcilcbiAgfVxuXG4gIHJldHVybiBmb3JtYXR0ZWRcbn1cblxuLyoqXG4gKiBGb3JtYXQgZGVwcmVjYXRpb24gbWVzc2FnZSB3aXRoIGNvbG9yLlxuICovXG5cbmZ1bmN0aW9uIGZvcm1hdENvbG9yIChtc2csIGNhbGxlciwgc3RhY2spIHtcbiAgdmFyIGZvcm1hdHRlZCA9ICdcXHgxYlszNjsxbScgKyB0aGlzLl9uYW1lc3BhY2UgKyAnXFx4MWJbMjI7MzltJyArIC8vIGJvbGQgY3lhblxuICAgICcgXFx4MWJbMzM7MW1kZXByZWNhdGVkXFx4MWJbMjI7MzltJyArIC8vIGJvbGQgeWVsbG93XG4gICAgJyBcXHgxYlswbScgKyBtc2cgKyAnXFx4MWJbMzltJyAvLyByZXNldFxuXG4gIC8vIGFkZCBzdGFjayB0cmFjZVxuICBpZiAodGhpcy5fdHJhY2VkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFjay5sZW5ndGg7IGkrKykge1xuICAgICAgZm9ybWF0dGVkICs9ICdcXG4gICAgXFx4MWJbMzZtYXQgJyArIGNhbGxTaXRlVG9TdHJpbmcoc3RhY2tbaV0pICsgJ1xceDFiWzM5bScgLy8gY3lhblxuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWRcbiAgfVxuXG4gIGlmIChjYWxsZXIpIHtcbiAgICBmb3JtYXR0ZWQgKz0gJyBcXHgxYlszNm0nICsgZm9ybWF0TG9jYXRpb24oY2FsbGVyKSArICdcXHgxYlszOW0nIC8vIGN5YW5cbiAgfVxuXG4gIHJldHVybiBmb3JtYXR0ZWRcbn1cblxuLyoqXG4gKiBGb3JtYXQgY2FsbCBzaXRlIGxvY2F0aW9uLlxuICovXG5cbmZ1bmN0aW9uIGZvcm1hdExvY2F0aW9uIChjYWxsU2l0ZSkge1xuICByZXR1cm4gcmVsYXRpdmUoYmFzZVBhdGgsIGNhbGxTaXRlWzBdKSArXG4gICAgJzonICsgY2FsbFNpdGVbMV0gK1xuICAgICc6JyArIGNhbGxTaXRlWzJdXG59XG5cbi8qKlxuICogR2V0IHRoZSBzdGFjayBhcyBhcnJheSBvZiBjYWxsIHNpdGVzLlxuICovXG5cbmZ1bmN0aW9uIGdldFN0YWNrICgpIHtcbiAgdmFyIGxpbWl0ID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0XG4gIHZhciBvYmogPSB7fVxuICB2YXIgcHJlcCA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlXG5cbiAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmVwYXJlT2JqZWN0U3RhY2tUcmFjZVxuICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBNYXRoLm1heCgxMCwgbGltaXQpXG5cbiAgLy8gY2FwdHVyZSB0aGUgc3RhY2tcbiAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2Uob2JqKVxuXG4gIC8vIHNsaWNlIHRoaXMgZnVuY3Rpb24gb2ZmIHRoZSB0b3BcbiAgdmFyIHN0YWNrID0gb2JqLnN0YWNrLnNsaWNlKDEpXG5cbiAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmVwXG4gIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IGxpbWl0XG5cbiAgcmV0dXJuIHN0YWNrXG59XG5cbi8qKlxuICogQ2FwdHVyZSBjYWxsIHNpdGUgc3RhY2sgZnJvbSB2OC5cbiAqL1xuXG5mdW5jdGlvbiBwcmVwYXJlT2JqZWN0U3RhY2tUcmFjZSAob2JqLCBzdGFjaykge1xuICByZXR1cm4gc3RhY2tcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSB3cmFwcGVkIGZ1bmN0aW9uIGluIGEgZGVwcmVjYXRpb24gbWVzc2FnZS5cbiAqL1xuXG5mdW5jdGlvbiB3cmFwZnVuY3Rpb24gKGZuLCBtZXNzYWdlKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBmbiBtdXN0IGJlIGEgZnVuY3Rpb24nKVxuICB9XG5cbiAgdmFyIGFyZ3MgPSBjcmVhdGVBcmd1bWVudHNTdHJpbmcoZm4ubGVuZ3RoKVxuICB2YXIgZGVwcmVjYXRlID0gdGhpcyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBzdGFjayA9IGdldFN0YWNrKClcbiAgdmFyIHNpdGUgPSBjYWxsU2l0ZUxvY2F0aW9uKHN0YWNrWzFdKVxuXG4gIHNpdGUubmFtZSA9IGZuLm5hbWVcblxuICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWV2YWxcbiAgdmFyIGRlcHJlY2F0ZWRmbiA9IGV2YWwoJyhmdW5jdGlvbiAoJyArIGFyZ3MgKyAnKSB7XFxuJyArXG4gICAgJ1widXNlIHN0cmljdFwiXFxuJyArXG4gICAgJ2xvZy5jYWxsKGRlcHJlY2F0ZSwgbWVzc2FnZSwgc2l0ZSlcXG4nICtcbiAgICAncmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcXG4nICtcbiAgICAnfSknKVxuXG4gIHJldHVybiBkZXByZWNhdGVkZm5cbn1cblxuLyoqXG4gKiBXcmFwIHByb3BlcnR5IGluIGEgZGVwcmVjYXRpb24gbWVzc2FnZS5cbiAqL1xuXG5mdW5jdGlvbiB3cmFwcHJvcGVydHkgKG9iaiwgcHJvcCwgbWVzc2FnZSkge1xuICBpZiAoIW9iaiB8fCAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iaiAhPT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBvYmogbXVzdCBiZSBvYmplY3QnKVxuICB9XG5cbiAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgcHJvcClcblxuICBpZiAoIWRlc2NyaXB0b3IpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtdXN0IGNhbGwgcHJvcGVydHkgb24gb3duZXIgb2JqZWN0JylcbiAgfVxuXG4gIGlmICghZGVzY3JpcHRvci5jb25maWd1cmFibGUpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwcm9wZXJ0eSBtdXN0IGJlIGNvbmZpZ3VyYWJsZScpXG4gIH1cblxuICB2YXIgZGVwcmVjYXRlID0gdGhpc1xuICB2YXIgc3RhY2sgPSBnZXRTdGFjaygpXG4gIHZhciBzaXRlID0gY2FsbFNpdGVMb2NhdGlvbihzdGFja1sxXSlcblxuICAvLyBzZXQgc2l0ZSBuYW1lXG4gIHNpdGUubmFtZSA9IHByb3BcblxuICAvLyBjb252ZXJ0IGRhdGEgZGVzY3JpcHRvclxuICBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSB7XG4gICAgZGVzY3JpcHRvciA9IGNvbnZlcnREYXRhRGVzY3JpcHRvclRvQWNjZXNzb3Iob2JqLCBwcm9wLCBtZXNzYWdlKVxuICB9XG5cbiAgdmFyIGdldCA9IGRlc2NyaXB0b3IuZ2V0XG4gIHZhciBzZXQgPSBkZXNjcmlwdG9yLnNldFxuXG4gIC8vIHdyYXAgZ2V0dGVyXG4gIGlmICh0eXBlb2YgZ2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGVzY3JpcHRvci5nZXQgPSBmdW5jdGlvbiBnZXR0ZXIgKCkge1xuICAgICAgbG9nLmNhbGwoZGVwcmVjYXRlLCBtZXNzYWdlLCBzaXRlKVxuICAgICAgcmV0dXJuIGdldC5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgfVxuICB9XG5cbiAgLy8gd3JhcCBzZXR0ZXJcbiAgaWYgKHR5cGVvZiBzZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkZXNjcmlwdG9yLnNldCA9IGZ1bmN0aW9uIHNldHRlciAoKSB7XG4gICAgICBsb2cuY2FsbChkZXByZWNhdGUsIG1lc3NhZ2UsIHNpdGUpXG4gICAgICByZXR1cm4gc2V0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCBkZXNjcmlwdG9yKVxufVxuXG4vKipcbiAqIENyZWF0ZSBEZXByZWNhdGlvbkVycm9yIGZvciBkZXByZWNhdGlvblxuICovXG5cbmZ1bmN0aW9uIERlcHJlY2F0aW9uRXJyb3IgKG5hbWVzcGFjZSwgbWVzc2FnZSwgc3RhY2spIHtcbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKClcbiAgdmFyIHN0YWNrU3RyaW5nXG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnY29uc3RydWN0b3InLCB7XG4gICAgdmFsdWU6IERlcHJlY2F0aW9uRXJyb3JcbiAgfSlcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICdtZXNzYWdlJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB2YWx1ZTogbWVzc2FnZSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ25hbWUnLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlOiAnRGVwcmVjYXRpb25FcnJvcicsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSlcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICduYW1lc3BhY2UnLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIHZhbHVlOiBuYW1lc3BhY2UsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSlcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICdzdGFjaycsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoc3RhY2tTdHJpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gc3RhY2tTdHJpbmdcbiAgICAgIH1cblxuICAgICAgLy8gcHJlcGFyZSBzdGFjayB0cmFjZVxuICAgICAgcmV0dXJuIChzdGFja1N0cmluZyA9IGNyZWF0ZVN0YWNrU3RyaW5nLmNhbGwodGhpcywgc3RhY2spKVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBzZXR0ZXIgKHZhbCkge1xuICAgICAgc3RhY2tTdHJpbmcgPSB2YWxcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGVycm9yXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZGVwZC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmc1wiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcImZzXCJcbi8vIG1vZHVsZSBpZCA9IDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCBzb3VyY2UpIHtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkY7XG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xuICB2YXIgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUztcbiAgdmFyIElTX1BST1RPID0gdHlwZSAmICRleHBvcnQuUDtcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xuICB2YXIgSVNfV1JBUCA9IHR5cGUgJiAkZXhwb3J0Llc7XG4gIHZhciBleHBvcnRzID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSk7XG4gIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXTtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV07XG4gIHZhciBrZXksIG93biwgb3V0O1xuICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lO1xuICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIGlmIChvd24gJiYgaGFzKGV4cG9ydHMsIGtleSkpIGNvbnRpbnVlO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTtcbiAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcbiAgICBleHBvcnRzW2tleV0gPSBJU19HTE9CQUwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5jdGlvbicgPyBzb3VyY2Vba2V5XVxuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgOiBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbClcbiAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFyeVxuICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24gKEMpIHtcbiAgICAgIHZhciBGID0gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBDKSB7XG4gICAgICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgQygpO1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEMoYSk7XG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTtcbiAgICAgICAgICB9IHJldHVybiBuZXcgQyhhLCBiLCBjKTtcbiAgICAgICAgfSByZXR1cm4gQy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICAgIEZbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcbiAgICAgIHJldHVybiBGO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIH0pKG91dCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUubWV0aG9kcy4lTkFNRSVcbiAgICBpZiAoSVNfUFJPVE8pIHtcbiAgICAgIChleHBvcnRzLnZpcnR1YWwgfHwgKGV4cG9ydHMudmlydHVhbCA9IHt9KSlba2V5XSA9IG91dDtcbiAgICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5wcm90b3R5cGUuJU5BTUUlXG4gICAgICBpZiAodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSkgaGlkZShleHBQcm90bywga2V5LCBvdXQpO1xuICAgIH1cbiAgfVxufTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIGNvbnRlbnREaXNwb3NpdGlvbiA9IHJlcXVpcmUoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKTtcbnZhciBjb250ZW50VHlwZSA9IHJlcXVpcmUoJ2NvbnRlbnQtdHlwZScpO1xudmFyIGRlcHJlY2F0ZSA9IHJlcXVpcmUoJ2RlcGQnKSgnZXhwcmVzcycpO1xudmFyIGZsYXR0ZW4gPSByZXF1aXJlKCdhcnJheS1mbGF0dGVuJyk7XG52YXIgbWltZSA9IHJlcXVpcmUoJ3NlbmQnKS5taW1lO1xudmFyIGV0YWcgPSByZXF1aXJlKCdldGFnJyk7XG52YXIgcHJveHlhZGRyID0gcmVxdWlyZSgncHJveHktYWRkcicpO1xudmFyIHFzID0gcmVxdWlyZSgncXMnKTtcbnZhciBxdWVyeXN0cmluZyA9IHJlcXVpcmUoJ3F1ZXJ5c3RyaW5nJyk7XG5cbi8qKlxuICogUmV0dXJuIHN0cm9uZyBFVGFnIGZvciBgYm9keWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QnVmZmVyfSBib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW2VuY29kaW5nXVxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5ldGFnID0gY3JlYXRlRVRhZ0dlbmVyYXRvcih7IHdlYWs6IGZhbHNlIH0pXG5cbi8qKlxuICogUmV0dXJuIHdlYWsgRVRhZyBmb3IgYGJvZHlgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfEJ1ZmZlcn0gYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFtlbmNvZGluZ11cbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMud2V0YWcgPSBjcmVhdGVFVGFnR2VuZXJhdG9yKHsgd2VhazogdHJ1ZSB9KVxuXG4vKipcbiAqIENoZWNrIGlmIGBwYXRoYCBsb29rcyBhYnNvbHV0ZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uKHBhdGgpe1xuICBpZiAoJy8nID09PSBwYXRoWzBdKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKCc6JyA9PT0gcGF0aFsxXSAmJiAoJ1xcXFwnID09PSBwYXRoWzJdIHx8ICcvJyA9PT0gcGF0aFsyXSkpIHJldHVybiB0cnVlOyAvLyBXaW5kb3dzIGRldmljZSBwYXRoXG4gIGlmICgnXFxcXFxcXFwnID09PSBwYXRoLnN1YnN0cmluZygwLCAyKSkgcmV0dXJuIHRydWU7IC8vIE1pY3Jvc29mdCBBenVyZSBhYnNvbHV0ZSBwYXRoXG59O1xuXG4vKipcbiAqIEZsYXR0ZW4gdGhlIGdpdmVuIGBhcnJgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyclxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLmZsYXR0ZW4gPSBkZXByZWNhdGUuZnVuY3Rpb24oZmxhdHRlbixcbiAgJ3V0aWxzLmZsYXR0ZW46IHVzZSBhcnJheS1mbGF0dGVuIG5wbSBtb2R1bGUgaW5zdGVhZCcpO1xuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgZ2l2ZW4gYHR5cGVgLCBmb3IgZXhhbXBsZSBcImh0bWxcIiBiZWNvbWVzIFwidGV4dC9odG1sXCIuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMubm9ybWFsaXplVHlwZSA9IGZ1bmN0aW9uKHR5cGUpe1xuICByZXR1cm4gfnR5cGUuaW5kZXhPZignLycpXG4gICAgPyBhY2NlcHRQYXJhbXModHlwZSlcbiAgICA6IHsgdmFsdWU6IG1pbWUubG9va3VwKHR5cGUpLCBwYXJhbXM6IHt9IH07XG59O1xuXG4vKipcbiAqIE5vcm1hbGl6ZSBgdHlwZXNgLCBmb3IgZXhhbXBsZSBcImh0bWxcIiBiZWNvbWVzIFwidGV4dC9odG1sXCIuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gdHlwZXNcbiAqIEByZXR1cm4ge0FycmF5fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5ub3JtYWxpemVUeXBlcyA9IGZ1bmN0aW9uKHR5cGVzKXtcbiAgdmFyIHJldCA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyArK2kpIHtcbiAgICByZXQucHVzaChleHBvcnRzLm5vcm1hbGl6ZVR5cGUodHlwZXNbaV0pKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyIGFwcHJvcHJpYXRlIGZvciB0aGUgZmlsZW5hbWUuXG4gKiBub24tYXNjaWkgZmlsZW5hbWVzIGFyZSB1cmxlbmNvZGVkIGFuZCBhIGZpbGVuYW1lKiBwYXJhbWV0ZXIgaXMgYWRkZWRcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gZmlsZW5hbWVcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuY29udGVudERpc3Bvc2l0aW9uID0gZGVwcmVjYXRlLmZ1bmN0aW9uKGNvbnRlbnREaXNwb3NpdGlvbixcbiAgJ3V0aWxzLmNvbnRlbnREaXNwb3NpdGlvbjogdXNlIGNvbnRlbnQtZGlzcG9zaXRpb24gbnBtIG1vZHVsZSBpbnN0ZWFkJyk7XG5cbi8qKlxuICogUGFyc2UgYWNjZXB0IHBhcmFtcyBgc3RyYCByZXR1cm5pbmcgYW5cbiAqIG9iamVjdCB3aXRoIGAudmFsdWVgLCBgLnF1YWxpdHlgIGFuZCBgLnBhcmFtc2AuXG4gKiBhbHNvIGluY2x1ZGVzIGAub3JpZ2luYWxJbmRleGAgZm9yIHN0YWJsZSBzb3J0aW5nXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gYWNjZXB0UGFyYW1zKHN0ciwgaW5kZXgpIHtcbiAgdmFyIHBhcnRzID0gc3RyLnNwbGl0KC8gKjsgKi8pO1xuICB2YXIgcmV0ID0geyB2YWx1ZTogcGFydHNbMF0sIHF1YWxpdHk6IDEsIHBhcmFtczoge30sIG9yaWdpbmFsSW5kZXg6IGluZGV4IH07XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBwYXJ0cy5sZW5ndGg7ICsraSkge1xuICAgIHZhciBwbXMgPSBwYXJ0c1tpXS5zcGxpdCgvICo9ICovKTtcbiAgICBpZiAoJ3EnID09PSBwbXNbMF0pIHtcbiAgICAgIHJldC5xdWFsaXR5ID0gcGFyc2VGbG9hdChwbXNbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXQucGFyYW1zW3Btc1swXV0gPSBwbXNbMV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBDb21waWxlIFwiZXRhZ1wiIHZhbHVlIHRvIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSAge0Jvb2xlYW58U3RyaW5nfEZ1bmN0aW9ufSB2YWxcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5jb21waWxlRVRhZyA9IGZ1bmN0aW9uKHZhbCkge1xuICB2YXIgZm47XG5cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgc3dpdGNoICh2YWwpIHtcbiAgICBjYXNlIHRydWU6XG4gICAgICBmbiA9IGV4cG9ydHMud2V0YWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGZhbHNlOlxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc3Ryb25nJzpcbiAgICAgIGZuID0gZXhwb3J0cy5ldGFnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2Vhayc6XG4gICAgICBmbiA9IGV4cG9ydHMud2V0YWc7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndW5rbm93biB2YWx1ZSBmb3IgZXRhZyBmdW5jdGlvbjogJyArIHZhbCk7XG4gIH1cblxuICByZXR1cm4gZm47XG59XG5cbi8qKlxuICogQ29tcGlsZSBcInF1ZXJ5IHBhcnNlclwiIHZhbHVlIHRvIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSAge1N0cmluZ3xGdW5jdGlvbn0gdmFsXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuY29tcGlsZVF1ZXJ5UGFyc2VyID0gZnVuY3Rpb24gY29tcGlsZVF1ZXJ5UGFyc2VyKHZhbCkge1xuICB2YXIgZm47XG5cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgc3dpdGNoICh2YWwpIHtcbiAgICBjYXNlIHRydWU6XG4gICAgICBmbiA9IHF1ZXJ5c3RyaW5nLnBhcnNlO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBmYWxzZTpcbiAgICAgIGZuID0gbmV3T2JqZWN0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZXh0ZW5kZWQnOlxuICAgICAgZm4gPSBwYXJzZUV4dGVuZGVkUXVlcnlTdHJpbmc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzaW1wbGUnOlxuICAgICAgZm4gPSBxdWVyeXN0cmluZy5wYXJzZTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmtub3duIHZhbHVlIGZvciBxdWVyeSBwYXJzZXIgZnVuY3Rpb246ICcgKyB2YWwpO1xuICB9XG5cbiAgcmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIENvbXBpbGUgXCJwcm94eSB0cnVzdFwiIHZhbHVlIHRvIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSAge0Jvb2xlYW58U3RyaW5nfE51bWJlcnxBcnJheXxGdW5jdGlvbn0gdmFsXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuY29tcGlsZVRydXN0ID0gZnVuY3Rpb24odmFsKSB7XG4gIGlmICh0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSByZXR1cm4gdmFsO1xuXG4gIGlmICh2YWwgPT09IHRydWUpIHtcbiAgICAvLyBTdXBwb3J0IHBsYWluIHRydWUvZmFsc2VcbiAgICByZXR1cm4gZnVuY3Rpb24oKXsgcmV0dXJuIHRydWUgfTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIC8vIFN1cHBvcnQgdHJ1c3RpbmcgaG9wIGNvdW50XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGEsIGkpeyByZXR1cm4gaSA8IHZhbCB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gU3VwcG9ydCBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzXG4gICAgdmFsID0gdmFsLnNwbGl0KC8gKiwgKi8pO1xuICB9XG5cbiAgcmV0dXJuIHByb3h5YWRkci5jb21waWxlKHZhbCB8fCBbXSk7XG59XG5cbi8qKlxuICogU2V0IHRoZSBjaGFyc2V0IGluIGEgZ2l2ZW4gQ29udGVudC1UeXBlIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtTdHJpbmd9IGNoYXJzZXRcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuc2V0Q2hhcnNldCA9IGZ1bmN0aW9uIHNldENoYXJzZXQodHlwZSwgY2hhcnNldCkge1xuICBpZiAoIXR5cGUgfHwgIWNoYXJzZXQpIHtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIC8vIHBhcnNlIHR5cGVcbiAgdmFyIHBhcnNlZCA9IGNvbnRlbnRUeXBlLnBhcnNlKHR5cGUpO1xuXG4gIC8vIHNldCBjaGFyc2V0XG4gIHBhcnNlZC5wYXJhbWV0ZXJzLmNoYXJzZXQgPSBjaGFyc2V0O1xuXG4gIC8vIGZvcm1hdCB0eXBlXG4gIHJldHVybiBjb250ZW50VHlwZS5mb3JtYXQocGFyc2VkKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGFuIEVUYWcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBnZW5lcmF0aW5nIEVUYWdzIHdpdGhcbiAqIHRoZSBnaXZlbiBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlRVRhZ0dlbmVyYXRvciAob3B0aW9ucykge1xuICByZXR1cm4gZnVuY3Rpb24gZ2VuZXJhdGVFVGFnIChib2R5LCBlbmNvZGluZykge1xuICAgIHZhciBidWYgPSAhQnVmZmVyLmlzQnVmZmVyKGJvZHkpXG4gICAgICA/IEJ1ZmZlci5mcm9tKGJvZHksIGVuY29kaW5nKVxuICAgICAgOiBib2R5XG5cbiAgICByZXR1cm4gZXRhZyhidWYsIG9wdGlvbnMpXG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSBhbiBleHRlbmRlZCBxdWVyeSBzdHJpbmcgd2l0aCBxcy5cbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlRXh0ZW5kZWRRdWVyeVN0cmluZyhzdHIpIHtcbiAgcmV0dXJuIHFzLnBhcnNlKHN0ciwge1xuICAgIGFsbG93UHJvdG90eXBlczogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gbmV3IGVtcHR5IG9iamVjdC5cbiAqXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBuZXdPYmplY3QoKSB7XG4gIHJldHVybiB7fTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi91dGlscy5qc1xuLy8gbW9kdWxlIGlkID0gMTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jdHguanNcbi8vIG1vZHVsZSBpZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGlkZS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanNcbi8vIG1vZHVsZSBpZCA9IDE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmNvbnN0IERBVEFfUEFUSCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9kYXRhJyk7XG5jb25zdCBBTkFMWVRJQ1NfUEFUSCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9zcmMnKTtcbmNvbnN0IEFOT01BTElFU19QQVRIID0gcGF0aC5qb2luKEFOQUxZVElDU19QQVRILCAnYW5vbWFsaWVzJyk7XG5jb25zdCBTRUdNRU5UU19QQVRIID0gcGF0aC5qb2luKEFOQUxZVElDU19QQVRILCAnc2VnbWVudHMnKTtcbmNvbnN0IE1FVFJJQ1NfUEFUSCA9IHBhdGguam9pbihBTkFMWVRJQ1NfUEFUSCwgJ21ldHJpY3MnKTtcblxuZXhwb3J0IHsgREFUQV9QQVRILCBBTkFMWVRJQ1NfUEFUSCwgQU5PTUFMSUVTX1BBVEgsIFNFR01FTlRTX1BBVEgsIE1FVFJJQ1NfUEFUSCB9XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9jb25maWcudHMiLCIvKiFcbiAqIGJ5dGVzXG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDE0IFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBKZWQgV2F0c29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBieXRlcztcbm1vZHVsZS5leHBvcnRzLmZvcm1hdCA9IGZvcm1hdDtcbm1vZHVsZS5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGZvcm1hdFRob3VzYW5kc1JlZ0V4cCA9IC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nO1xuXG52YXIgZm9ybWF0RGVjaW1hbHNSZWdFeHAgPSAvKD86XFwuMCp8KFxcLlteMF0rKTArKSQvO1xuXG52YXIgbWFwID0ge1xuICBiOiAgMSxcbiAga2I6IDEgPDwgMTAsXG4gIG1iOiAxIDw8IDIwLFxuICBnYjogMSA8PCAzMCxcbiAgdGI6ICgoMSA8PCAzMCkgKiAxMDI0KVxufTtcblxudmFyIHBhcnNlUmVnRXhwID0gL14oKC18XFwrKT8oXFxkKyg/OlxcLlxcZCspPykpICooa2J8bWJ8Z2J8dGIpJC9pO1xuXG4vKipcbiAqIENvbnZlcnQgdGhlIGdpdmVuIHZhbHVlIGluIGJ5dGVzIGludG8gYSBzdHJpbmcgb3IgcGFyc2UgdG8gc3RyaW5nIHRvIGFuIGludGVnZXIgaW4gYnl0ZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHt7XG4gKiAgY2FzZTogW3N0cmluZ10sXG4gKiAgZGVjaW1hbFBsYWNlczogW251bWJlcl1cbiAqICBmaXhlZERlY2ltYWxzOiBbYm9vbGVhbl1cbiAqICB0aG91c2FuZHNTZXBhcmF0b3I6IFtzdHJpbmddXG4gKiAgdW5pdFNlcGFyYXRvcjogW3N0cmluZ11cbiAqICB9fSBbb3B0aW9uc10gYnl0ZXMgb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfG51bWJlcnxudWxsfVxuICovXG5cbmZ1bmN0aW9uIGJ5dGVzKHZhbHVlLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlKHZhbHVlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGZvcm1hdCh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBGb3JtYXQgdGhlIGdpdmVuIHZhbHVlIGluIGJ5dGVzIGludG8gYSBzdHJpbmcuXG4gKlxuICogSWYgdGhlIHZhbHVlIGlzIG5lZ2F0aXZlLCBpdCBpcyBrZXB0IGFzIHN1Y2guIElmIGl0IGlzIGEgZmxvYXQsXG4gKiBpdCBpcyByb3VuZGVkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmRlY2ltYWxQbGFjZXM9Ml1cbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5maXhlZERlY2ltYWxzPWZhbHNlXVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnRob3VzYW5kc1NlcGFyYXRvcj1dXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudW5pdD1dXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudW5pdFNlcGFyYXRvcj1dXG4gKlxuICogQHJldHVybnMge3N0cmluZ3xudWxsfVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcm1hdCh2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtYWcgPSBNYXRoLmFicyh2YWx1ZSk7XG4gIHZhciB0aG91c2FuZHNTZXBhcmF0b3IgPSAob3B0aW9ucyAmJiBvcHRpb25zLnRob3VzYW5kc1NlcGFyYXRvcikgfHwgJyc7XG4gIHZhciB1bml0U2VwYXJhdG9yID0gKG9wdGlvbnMgJiYgb3B0aW9ucy51bml0U2VwYXJhdG9yKSB8fCAnJztcbiAgdmFyIGRlY2ltYWxQbGFjZXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLmRlY2ltYWxQbGFjZXMgIT09IHVuZGVmaW5lZCkgPyBvcHRpb25zLmRlY2ltYWxQbGFjZXMgOiAyO1xuICB2YXIgZml4ZWREZWNpbWFscyA9IEJvb2xlYW4ob3B0aW9ucyAmJiBvcHRpb25zLmZpeGVkRGVjaW1hbHMpO1xuICB2YXIgdW5pdCA9IChvcHRpb25zICYmIG9wdGlvbnMudW5pdCkgfHwgJyc7XG5cbiAgaWYgKCF1bml0IHx8ICFtYXBbdW5pdC50b0xvd2VyQ2FzZSgpXSkge1xuICAgIGlmIChtYWcgPj0gbWFwLnRiKSB7XG4gICAgICB1bml0ID0gJ1RCJztcbiAgICB9IGVsc2UgaWYgKG1hZyA+PSBtYXAuZ2IpIHtcbiAgICAgIHVuaXQgPSAnR0InO1xuICAgIH0gZWxzZSBpZiAobWFnID49IG1hcC5tYikge1xuICAgICAgdW5pdCA9ICdNQic7XG4gICAgfSBlbHNlIGlmIChtYWcgPj0gbWFwLmtiKSB7XG4gICAgICB1bml0ID0gJ0tCJztcbiAgICB9IGVsc2Uge1xuICAgICAgdW5pdCA9ICdCJztcbiAgICB9XG4gIH1cblxuICB2YXIgdmFsID0gdmFsdWUgLyBtYXBbdW5pdC50b0xvd2VyQ2FzZSgpXTtcbiAgdmFyIHN0ciA9IHZhbC50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpO1xuXG4gIGlmICghZml4ZWREZWNpbWFscykge1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKGZvcm1hdERlY2ltYWxzUmVnRXhwLCAnJDEnKTtcbiAgfVxuXG4gIGlmICh0aG91c2FuZHNTZXBhcmF0b3IpIHtcbiAgICBzdHIgPSBzdHIucmVwbGFjZShmb3JtYXRUaG91c2FuZHNSZWdFeHAsIHRob3VzYW5kc1NlcGFyYXRvcik7XG4gIH1cblxuICByZXR1cm4gc3RyICsgdW5pdFNlcGFyYXRvciArIHVuaXQ7XG59XG5cbi8qKlxuICogUGFyc2UgdGhlIHN0cmluZyB2YWx1ZSBpbnRvIGFuIGludGVnZXIgaW4gYnl0ZXMuXG4gKlxuICogSWYgbm8gdW5pdCBpcyBnaXZlbiwgaXQgaXMgYXNzdW1lZCB0aGUgdmFsdWUgaXMgaW4gYnl0ZXMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB2YWxcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfG51bGx9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcGFyc2UodmFsKSB7XG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRlc3QgaWYgdGhlIHN0cmluZyBwYXNzZWQgaXMgdmFsaWRcbiAgdmFyIHJlc3VsdHMgPSBwYXJzZVJlZ0V4cC5leGVjKHZhbCk7XG4gIHZhciBmbG9hdFZhbHVlO1xuICB2YXIgdW5pdCA9ICdiJztcblxuICBpZiAoIXJlc3VsdHMpIHtcbiAgICAvLyBOb3RoaW5nIGNvdWxkIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBnaXZlbiBzdHJpbmdcbiAgICBmbG9hdFZhbHVlID0gcGFyc2VJbnQodmFsLCAxMCk7XG4gICAgdW5pdCA9ICdiJ1xuICB9IGVsc2Uge1xuICAgIC8vIFJldHJpZXZlIHRoZSB2YWx1ZSBhbmQgdGhlIHVuaXRcbiAgICBmbG9hdFZhbHVlID0gcGFyc2VGbG9hdChyZXN1bHRzWzFdKTtcbiAgICB1bml0ID0gcmVzdWx0c1s0XS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcmV0dXJuIE1hdGguZmxvb3IobWFwW3VuaXRdICogZmxvYXRWYWx1ZSk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYnl0ZXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogc3RhdHVzZXNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTYgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBjb2RlcyA9IHJlcXVpcmUoJy4vY29kZXMuanNvbicpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBzdGF0dXNcblxuLy8gc3RhdHVzIGNvZGUgdG8gbWVzc2FnZSBtYXBcbnN0YXR1cy5TVEFUVVNfQ09ERVMgPSBjb2Rlc1xuXG4vLyBhcnJheSBvZiBzdGF0dXMgY29kZXNcbnN0YXR1cy5jb2RlcyA9IHBvcHVsYXRlU3RhdHVzZXNNYXAoc3RhdHVzLCBjb2RlcylcblxuLy8gc3RhdHVzIGNvZGVzIGZvciByZWRpcmVjdHNcbnN0YXR1cy5yZWRpcmVjdCA9IHtcbiAgMzAwOiB0cnVlLFxuICAzMDE6IHRydWUsXG4gIDMwMjogdHJ1ZSxcbiAgMzAzOiB0cnVlLFxuICAzMDU6IHRydWUsXG4gIDMwNzogdHJ1ZSxcbiAgMzA4OiB0cnVlXG59XG5cbi8vIHN0YXR1cyBjb2RlcyBmb3IgZW1wdHkgYm9kaWVzXG5zdGF0dXMuZW1wdHkgPSB7XG4gIDIwNDogdHJ1ZSxcbiAgMjA1OiB0cnVlLFxuICAzMDQ6IHRydWVcbn1cblxuLy8gc3RhdHVzIGNvZGVzIGZvciB3aGVuIHlvdSBzaG91bGQgcmV0cnkgdGhlIHJlcXVlc3RcbnN0YXR1cy5yZXRyeSA9IHtcbiAgNTAyOiB0cnVlLFxuICA1MDM6IHRydWUsXG4gIDUwNDogdHJ1ZVxufVxuXG4vKipcbiAqIFBvcHVsYXRlIHRoZSBzdGF0dXNlcyBtYXAgZm9yIGdpdmVuIGNvZGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwb3B1bGF0ZVN0YXR1c2VzTWFwIChzdGF0dXNlcywgY29kZXMpIHtcbiAgdmFyIGFyciA9IFtdXG5cbiAgT2JqZWN0LmtleXMoY29kZXMpLmZvckVhY2goZnVuY3Rpb24gZm9yRWFjaENvZGUgKGNvZGUpIHtcbiAgICB2YXIgbWVzc2FnZSA9IGNvZGVzW2NvZGVdXG4gICAgdmFyIHN0YXR1cyA9IE51bWJlcihjb2RlKVxuXG4gICAgLy8gUG9wdWxhdGUgcHJvcGVydGllc1xuICAgIHN0YXR1c2VzW3N0YXR1c10gPSBtZXNzYWdlXG4gICAgc3RhdHVzZXNbbWVzc2FnZV0gPSBzdGF0dXNcbiAgICBzdGF0dXNlc1ttZXNzYWdlLnRvTG93ZXJDYXNlKCldID0gc3RhdHVzXG5cbiAgICAvLyBBZGQgdG8gYXJyYXlcbiAgICBhcnIucHVzaChzdGF0dXMpXG4gIH0pXG5cbiAgcmV0dXJuIGFyclxufVxuXG4vKipcbiAqIEdldCB0aGUgc3RhdHVzIGNvZGUuXG4gKlxuICogR2l2ZW4gYSBudW1iZXIsIHRoaXMgd2lsbCB0aHJvdyBpZiBpdCBpcyBub3QgYSBrbm93biBzdGF0dXNcbiAqIGNvZGUsIG90aGVyd2lzZSB0aGUgY29kZSB3aWxsIGJlIHJldHVybmVkLiBHaXZlbiBhIHN0cmluZyxcbiAqIHRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgZm9yIGEgbnVtYmVyIGFuZCByZXR1cm4gdGhlIGNvZGVcbiAqIGlmIHZhbGlkLCBvdGhlcndpc2Ugd2lsbCBsb29rdXAgdGhlIGNvZGUgYXNzdW1pbmcgdGhpcyBpc1xuICogdGhlIHN0YXR1cyBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gY29kZVxuICogQHJldHVybnMge251bWJlcn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBzdGF0dXMgKGNvZGUpIHtcbiAgaWYgKHR5cGVvZiBjb2RlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghc3RhdHVzW2NvZGVdKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc3RhdHVzIGNvZGU6ICcgKyBjb2RlKVxuICAgIHJldHVybiBjb2RlXG4gIH1cblxuICBpZiAodHlwZW9mIGNvZGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29kZSBtdXN0IGJlIGEgbnVtYmVyIG9yIHN0cmluZycpXG4gIH1cblxuICAvLyAnNDAzJ1xuICB2YXIgbiA9IHBhcnNlSW50KGNvZGUsIDEwKVxuICBpZiAoIWlzTmFOKG4pKSB7XG4gICAgaWYgKCFzdGF0dXNbbl0pIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0dXMgY29kZTogJyArIG4pXG4gICAgcmV0dXJuIG5cbiAgfVxuXG4gIG4gPSBzdGF0dXNbY29kZS50b0xvd2VyQ2FzZSgpXVxuICBpZiAoIW4pIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0dXMgbWVzc2FnZTogXCInICsgY29kZSArICdcIicpXG4gIHJldHVybiBuXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvc3RhdHVzZXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogdHlwZS1pc1xuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgdHlwZXIgPSByZXF1aXJlKCdtZWRpYS10eXBlcicpXG52YXIgbWltZSA9IHJlcXVpcmUoJ21pbWUtdHlwZXMnKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mcmVxdWVzdFxubW9kdWxlLmV4cG9ydHMuaXMgPSB0eXBlaXNcbm1vZHVsZS5leHBvcnRzLmhhc0JvZHkgPSBoYXNib2R5XG5tb2R1bGUuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemVcbm1vZHVsZS5leHBvcnRzLm1hdGNoID0gbWltZU1hdGNoXG5cbi8qKlxuICogQ29tcGFyZSBhIGB2YWx1ZWAgY29udGVudC10eXBlIHdpdGggYHR5cGVzYC5cbiAqIEVhY2ggYHR5cGVgIGNhbiBiZSBhbiBleHRlbnNpb24gbGlrZSBgaHRtbGAsXG4gKiBhIHNwZWNpYWwgc2hvcnRjdXQgbGlrZSBgbXVsdGlwYXJ0YCBvciBgdXJsZW5jb2RlZGAsXG4gKiBvciBhIG1pbWUgdHlwZS5cbiAqXG4gKiBJZiBubyB0eXBlcyBtYXRjaCwgYGZhbHNlYCBpcyByZXR1cm5lZC5cbiAqIE90aGVyd2lzZSwgdGhlIGZpcnN0IGB0eXBlYCB0aGF0IG1hdGNoZXMgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge0FycmF5fSB0eXBlc1xuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHR5cGVpcyAodmFsdWUsIHR5cGVzXykge1xuICB2YXIgaVxuICB2YXIgdHlwZXMgPSB0eXBlc19cblxuICAvLyByZW1vdmUgcGFyYW1ldGVycyBhbmQgbm9ybWFsaXplXG4gIHZhciB2YWwgPSB0cnlOb3JtYWxpemVUeXBlKHZhbHVlKVxuXG4gIC8vIG5vIHR5cGUgb3IgaW52YWxpZFxuICBpZiAoIXZhbCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gc3VwcG9ydCBmbGF0dGVuZWQgYXJndW1lbnRzXG4gIGlmICh0eXBlcyAmJiAhQXJyYXkuaXNBcnJheSh0eXBlcykpIHtcbiAgICB0eXBlcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSlcbiAgICBmb3IgKGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHR5cGVzW2ldID0gYXJndW1lbnRzW2kgKyAxXVxuICAgIH1cbiAgfVxuXG4gIC8vIG5vIHR5cGVzLCByZXR1cm4gdGhlIGNvbnRlbnQgdHlwZVxuICBpZiAoIXR5cGVzIHx8ICF0eXBlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdmFsXG4gIH1cblxuICB2YXIgdHlwZVxuICBmb3IgKGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobWltZU1hdGNoKG5vcm1hbGl6ZSh0eXBlID0gdHlwZXNbaV0pLCB2YWwpKSB7XG4gICAgICByZXR1cm4gdHlwZVswXSA9PT0gJysnIHx8IHR5cGUuaW5kZXhPZignKicpICE9PSAtMVxuICAgICAgICA/IHZhbFxuICAgICAgICA6IHR5cGVcbiAgICB9XG4gIH1cblxuICAvLyBubyBtYXRjaGVzXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgcmVxdWVzdCBoYXMgYSByZXF1ZXN0IGJvZHkuXG4gKiBBIHJlcXVlc3Qgd2l0aCBhIGJvZHkgX19tdXN0X18gZWl0aGVyIGhhdmUgYHRyYW5zZmVyLWVuY29kaW5nYFxuICogb3IgYGNvbnRlbnQtbGVuZ3RoYCBoZWFkZXJzIHNldC5cbiAqIGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjNC5odG1sI3NlYzQuM1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSByZXF1ZXN0XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGhhc2JvZHkgKHJlcSkge1xuICByZXR1cm4gcmVxLmhlYWRlcnNbJ3RyYW5zZmVyLWVuY29kaW5nJ10gIT09IHVuZGVmaW5lZCB8fFxuICAgICFpc05hTihyZXEuaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSlcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgaW5jb21pbmcgcmVxdWVzdCBjb250YWlucyB0aGUgXCJDb250ZW50LVR5cGVcIlxuICogaGVhZGVyIGZpZWxkLCBhbmQgaXQgY29udGFpbnMgYW55IG9mIHRoZSBnaXZlIG1pbWUgYHR5cGVgcy5cbiAqIElmIHRoZXJlIGlzIG5vIHJlcXVlc3QgYm9keSwgYG51bGxgIGlzIHJldHVybmVkLlxuICogSWYgdGhlcmUgaXMgbm8gY29udGVudCB0eXBlLCBgZmFsc2VgIGlzIHJldHVybmVkLlxuICogT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHRoZSBmaXJzdCBgdHlwZWAgdGhhdCBtYXRjaGVzLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAvLyBXaXRoIENvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XG4gKiAgICAgdGhpcy5pcygnaHRtbCcpOyAvLyA9PiAnaHRtbCdcbiAqICAgICB0aGlzLmlzKCd0ZXh0L2h0bWwnKTsgLy8gPT4gJ3RleHQvaHRtbCdcbiAqICAgICB0aGlzLmlzKCd0ZXh0LyonLCAnYXBwbGljYXRpb24vanNvbicpOyAvLyA9PiAndGV4dC9odG1sJ1xuICpcbiAqICAgICAvLyBXaGVuIENvbnRlbnQtVHlwZSBpcyBhcHBsaWNhdGlvbi9qc29uXG4gKiAgICAgdGhpcy5pcygnanNvbicsICd1cmxlbmNvZGVkJyk7IC8vID0+ICdqc29uJ1xuICogICAgIHRoaXMuaXMoJ2FwcGxpY2F0aW9uL2pzb24nKTsgLy8gPT4gJ2FwcGxpY2F0aW9uL2pzb24nXG4gKiAgICAgdGhpcy5pcygnaHRtbCcsICdhcHBsaWNhdGlvbi8qJyk7IC8vID0+ICdhcHBsaWNhdGlvbi9qc29uJ1xuICpcbiAqICAgICB0aGlzLmlzKCdodG1sJyk7IC8vID0+IGZhbHNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHR5cGVzLi4uXG4gKiBAcmV0dXJuIHtTdHJpbmd8ZmFsc2V8bnVsbH1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiB0eXBlb2ZyZXF1ZXN0IChyZXEsIHR5cGVzXykge1xuICB2YXIgdHlwZXMgPSB0eXBlc19cblxuICAvLyBubyBib2R5XG4gIGlmICghaGFzYm9keShyZXEpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIHN1cHBvcnQgZmxhdHRlbmVkIGFyZ3VtZW50c1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICB0eXBlcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0eXBlc1tpXSA9IGFyZ3VtZW50c1tpICsgMV1cbiAgICB9XG4gIH1cblxuICAvLyByZXF1ZXN0IGNvbnRlbnQgdHlwZVxuICB2YXIgdmFsdWUgPSByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ11cblxuICByZXR1cm4gdHlwZWlzKHZhbHVlLCB0eXBlcylcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSBtaW1lIHR5cGUuXG4gKiBJZiBpdCdzIGEgc2hvcnRoYW5kLCBleHBhbmQgaXQgdG8gYSB2YWxpZCBtaW1lIHR5cGUuXG4gKlxuICogSW4gZ2VuZXJhbCwgeW91IHByb2JhYmx5IHdhbnQ6XG4gKlxuICogICB2YXIgdHlwZSA9IGlzKHJlcSwgWyd1cmxlbmNvZGVkJywgJ2pzb24nLCAnbXVsdGlwYXJ0J10pO1xuICpcbiAqIFRoZW4gdXNlIHRoZSBhcHByb3ByaWF0ZSBib2R5IHBhcnNlcnMuXG4gKiBUaGVzZSB0aHJlZSBhcmUgdGhlIG1vc3QgY29tbW9uIHJlcXVlc3QgYm9keSB0eXBlc1xuICogYW5kIGFyZSB0aHVzIGVuc3VyZWQgdG8gd29yay5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBub3JtYWxpemUgKHR5cGUpIHtcbiAgaWYgKHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGludmFsaWQgdHlwZVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAndXJsZW5jb2RlZCc6XG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICBjYXNlICdtdWx0aXBhcnQnOlxuICAgICAgcmV0dXJuICdtdWx0aXBhcnQvKidcbiAgfVxuXG4gIGlmICh0eXBlWzBdID09PSAnKycpIHtcbiAgICAvLyBcIitqc29uXCIgLT4gXCIqLyoranNvblwiIGV4cGFuZG9cbiAgICByZXR1cm4gJyovKicgKyB0eXBlXG4gIH1cblxuICByZXR1cm4gdHlwZS5pbmRleE9mKCcvJykgPT09IC0xXG4gICAgPyBtaW1lLmxvb2t1cCh0eXBlKVxuICAgIDogdHlwZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGBleHBlY3RlZGAgbWltZSB0eXBlXG4gKiBtYXRjaGVzIGBhY3R1YWxgIG1pbWUgdHlwZSB3aXRoXG4gKiB3aWxkY2FyZCBhbmQgK3N1ZmZpeCBzdXBwb3J0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBleHBlY3RlZFxuICogQHBhcmFtIHtTdHJpbmd9IGFjdHVhbFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbWltZU1hdGNoIChleHBlY3RlZCwgYWN0dWFsKSB7XG4gIC8vIGludmFsaWQgdHlwZVxuICBpZiAoZXhwZWN0ZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBzcGxpdCB0eXBlc1xuICB2YXIgYWN0dWFsUGFydHMgPSBhY3R1YWwuc3BsaXQoJy8nKVxuICB2YXIgZXhwZWN0ZWRQYXJ0cyA9IGV4cGVjdGVkLnNwbGl0KCcvJylcblxuICAvLyBpbnZhbGlkIGZvcm1hdFxuICBpZiAoYWN0dWFsUGFydHMubGVuZ3RoICE9PSAyIHx8IGV4cGVjdGVkUGFydHMubGVuZ3RoICE9PSAyKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyB2YWxpZGF0ZSB0eXBlXG4gIGlmIChleHBlY3RlZFBhcnRzWzBdICE9PSAnKicgJiYgZXhwZWN0ZWRQYXJ0c1swXSAhPT0gYWN0dWFsUGFydHNbMF0pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIHZhbGlkYXRlIHN1ZmZpeCB3aWxkY2FyZFxuICBpZiAoZXhwZWN0ZWRQYXJ0c1sxXS5zdWJzdHIoMCwgMikgPT09ICcqKycpIHtcbiAgICByZXR1cm4gZXhwZWN0ZWRQYXJ0c1sxXS5sZW5ndGggPD0gYWN0dWFsUGFydHNbMV0ubGVuZ3RoICsgMSAmJlxuICAgICAgZXhwZWN0ZWRQYXJ0c1sxXS5zdWJzdHIoMSkgPT09IGFjdHVhbFBhcnRzWzFdLnN1YnN0cigxIC0gZXhwZWN0ZWRQYXJ0c1sxXS5sZW5ndGgpXG4gIH1cblxuICAvLyB2YWxpZGF0ZSBzdWJ0eXBlXG4gIGlmIChleHBlY3RlZFBhcnRzWzFdICE9PSAnKicgJiYgZXhwZWN0ZWRQYXJ0c1sxXSAhPT0gYWN0dWFsUGFydHNbMV0pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgdHlwZSBhbmQgcmVtb3ZlIHBhcmFtZXRlcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVR5cGUgKHZhbHVlKSB7XG4gIC8vIHBhcnNlIHRoZSB0eXBlXG4gIHZhciB0eXBlID0gdHlwZXIucGFyc2UodmFsdWUpXG5cbiAgLy8gcmVtb3ZlIHRoZSBwYXJhbWV0ZXJzXG4gIHR5cGUucGFyYW1ldGVycyA9IHVuZGVmaW5lZFxuXG4gIC8vIHJlZm9ybWF0IGl0XG4gIHJldHVybiB0eXBlci5mb3JtYXQodHlwZSlcbn1cblxuLyoqXG4gKiBUcnkgdG8gbm9ybWFsaXplIGEgdHlwZSBhbmQgcmVtb3ZlIHBhcmFtZXRlcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHRyeU5vcm1hbGl6ZVR5cGUgKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVR5cGUodmFsdWUpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy90eXBlLWlzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIHBhcnNldXJsXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTcgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciB1cmwgPSByZXF1aXJlKCd1cmwnKVxudmFyIHBhcnNlID0gdXJsLnBhcnNlXG52YXIgVXJsID0gdXJsLlVybFxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2V1cmxcbm1vZHVsZS5leHBvcnRzLm9yaWdpbmFsID0gb3JpZ2luYWx1cmxcblxuLyoqXG4gKiBQYXJzZSB0aGUgYHJlcWAgdXJsIHdpdGggbWVtb2l6YXRpb24uXG4gKlxuICogQHBhcmFtIHtTZXJ2ZXJSZXF1ZXN0fSByZXFcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZXVybCAocmVxKSB7XG4gIHZhciB1cmwgPSByZXEudXJsXG5cbiAgaWYgKHVybCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gVVJMIGlzIHVuZGVmaW5lZFxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHZhciBwYXJzZWQgPSByZXEuX3BhcnNlZFVybFxuXG4gIGlmIChmcmVzaCh1cmwsIHBhcnNlZCkpIHtcbiAgICAvLyBSZXR1cm4gY2FjaGVkIFVSTCBwYXJzZVxuICAgIHJldHVybiBwYXJzZWRcbiAgfVxuXG4gIC8vIFBhcnNlIHRoZSBVUkxcbiAgcGFyc2VkID0gZmFzdHBhcnNlKHVybClcbiAgcGFyc2VkLl9yYXcgPSB1cmxcblxuICByZXR1cm4gKHJlcS5fcGFyc2VkVXJsID0gcGFyc2VkKVxufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgYHJlcWAgb3JpZ2luYWwgdXJsIHdpdGggZmFsbGJhY2sgYW5kIG1lbW9pemF0aW9uLlxuICpcbiAqIEBwYXJhbSB7U2VydmVyUmVxdWVzdH0gcmVxXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gb3JpZ2luYWx1cmwgKHJlcSkge1xuICB2YXIgdXJsID0gcmVxLm9yaWdpbmFsVXJsXG5cbiAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gRmFsbGJhY2tcbiAgICByZXR1cm4gcGFyc2V1cmwocmVxKVxuICB9XG5cbiAgdmFyIHBhcnNlZCA9IHJlcS5fcGFyc2VkT3JpZ2luYWxVcmxcblxuICBpZiAoZnJlc2godXJsLCBwYXJzZWQpKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBVUkwgcGFyc2VcbiAgICByZXR1cm4gcGFyc2VkXG4gIH1cblxuICAvLyBQYXJzZSB0aGUgVVJMXG4gIHBhcnNlZCA9IGZhc3RwYXJzZSh1cmwpXG4gIHBhcnNlZC5fcmF3ID0gdXJsXG5cbiAgcmV0dXJuIChyZXEuX3BhcnNlZE9yaWdpbmFsVXJsID0gcGFyc2VkKVxufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgYHN0cmAgdXJsIHdpdGggZmFzdC1wYXRoIHNob3J0LWN1dC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZhc3RwYXJzZSAoc3RyKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCBzdHIuY2hhckNvZGVBdCgwKSAhPT0gMHgyZiAvKiAvICovKSB7XG4gICAgcmV0dXJuIHBhcnNlKHN0cilcbiAgfVxuXG4gIHZhciBwYXRobmFtZSA9IHN0clxuICB2YXIgcXVlcnkgPSBudWxsXG4gIHZhciBzZWFyY2ggPSBudWxsXG5cbiAgLy8gVGhpcyB0YWtlcyB0aGUgcmVnZXhwIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pveWVudC9ub2RlL3B1bGwvNzg3OFxuICAvLyBXaGljaCBpcyAvXihcXC9bXj8jXFxzXSopKFxcP1teI1xcc10qKT8kL1xuICAvLyBBbmQgdW5yb2xscyBpdCBpbnRvIGEgZm9yIGxvb3BcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICBjYXNlIDB4M2Y6IC8qID8gICovXG4gICAgICAgIGlmIChzZWFyY2ggPT09IG51bGwpIHtcbiAgICAgICAgICBwYXRobmFtZSA9IHN0ci5zdWJzdHJpbmcoMCwgaSlcbiAgICAgICAgICBxdWVyeSA9IHN0ci5zdWJzdHJpbmcoaSArIDEpXG4gICAgICAgICAgc2VhcmNoID0gc3RyLnN1YnN0cmluZyhpKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDB4MDk6IC8qIFxcdCAqL1xuICAgICAgY2FzZSAweDBhOiAvKiBcXG4gKi9cbiAgICAgIGNhc2UgMHgwYzogLyogXFxmICovXG4gICAgICBjYXNlIDB4MGQ6IC8qIFxcciAqL1xuICAgICAgY2FzZSAweDIwOiAvKiAgICAqL1xuICAgICAgY2FzZSAweDIzOiAvKiAjICAqL1xuICAgICAgY2FzZSAweGEwOlxuICAgICAgY2FzZSAweGZlZmY6XG4gICAgICAgIHJldHVybiBwYXJzZShzdHIpXG4gICAgfVxuICB9XG5cbiAgdmFyIHVybCA9IFVybCAhPT0gdW5kZWZpbmVkXG4gICAgPyBuZXcgVXJsKClcbiAgICA6IHt9XG4gIHVybC5wYXRoID0gc3RyXG4gIHVybC5ocmVmID0gc3RyXG4gIHVybC5wYXRobmFtZSA9IHBhdGhuYW1lXG4gIHVybC5xdWVyeSA9IHF1ZXJ5XG4gIHVybC5zZWFyY2ggPSBzZWFyY2hcblxuICByZXR1cm4gdXJsXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHBhcnNlZCBpcyBzdGlsbCBmcmVzaCBmb3IgdXJsLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJzZWRVcmxcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZyZXNoICh1cmwsIHBhcnNlZFVybCkge1xuICByZXR1cm4gdHlwZW9mIHBhcnNlZFVybCA9PT0gJ29iamVjdCcgJiZcbiAgICBwYXJzZWRVcmwgIT09IG51bGwgJiZcbiAgICAoVXJsID09PSB1bmRlZmluZWQgfHwgcGFyc2VkVXJsIGluc3RhbmNlb2YgVXJsKSAmJlxuICAgIHBhcnNlZFVybC5fcmF3ID09PSB1cmxcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9wYXJzZXVybC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5XCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qc1xuLy8gbW9kdWxlIGlkID0gMjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZVwiKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gMjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IHsgZ2V0SnNvbkRhdGFTeW5jLCB3cml0ZUpzb25EYXRhU3luYyB9IGZyb20gJy4vanNvbidcbmltcG9ydCB7IEFOT01BTElFU19QQVRIIH0gZnJvbSAnLi4vY29uZmlnJ1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnXG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuZXhwb3J0IHR5cGUgRGF0YXNvdXJjZSA9IHtcbiAgbWV0aG9kOiBzdHJpbmcsXG4gIGRhdGE6IE9iamVjdCxcbiAgcGFyYW1zOiBPYmplY3QsXG4gIHR5cGU6IHN0cmluZyxcbiAgdXJsOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTWV0cmljID0ge1xuICBkYXRhc291cmNlOiBzdHJpbmcsXG4gIHRhcmdldHM6IHN0cmluZ1tdXG59XG5cbmV4cG9ydCB0eXBlIEFub21hbHkgPSB7XG4gIG5hbWU6IHN0cmluZyxcblxuICBwYW5lbFVybDogc3RyaW5nLFxuXG4gIG1ldHJpYzogTWV0cmljLFxuICBkYXRhc291cmNlOiBEYXRhc291cmNlXG4gIHN0YXR1czogc3RyaW5nLFxuICBlcnJvcj86IHN0cmluZyxcblxuICBsYXN0X3ByZWRpY3Rpb25fdGltZTogbnVtYmVyLFxuICBuZXh0X2lkOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgQW5vbWFseUlkID0gc3RyaW5nO1xuXG5sZXQgYW5vbWFsaWVzTmFtZVRvSWRNYXAgPSB7fTtcblxuZnVuY3Rpb24gbG9hZEFub21hbGllc01hcCgpIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgYWxsX2Fub21hbGllcy5qc29uYCk7XG4gIGFub21hbGllc05hbWVUb0lkTWFwID0gZ2V0SnNvbkRhdGFTeW5jKGZpbGVuYW1lKTtcbn1cblxuZnVuY3Rpb24gc2F2ZUFub21hbGllc01hcCgpIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgYWxsX2Fub21hbGllcy5qc29uYCk7XG4gIHdyaXRlSnNvbkRhdGFTeW5jKGZpbGVuYW1lLCBhbm9tYWxpZXNOYW1lVG9JZE1hcCk7XG59XG5cbmZ1bmN0aW9uIGdldEFub21hbHlJZEJ5TmFtZShhbm9tYWx5TmFtZTpzdHJpbmcpIDogQW5vbWFseUlkIHtcbiAgbG9hZEFub21hbGllc01hcCgpO1xuICBhbm9tYWx5TmFtZSA9IGFub21hbHlOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIGlmKGFub21hbHlOYW1lIGluIGFub21hbGllc05hbWVUb0lkTWFwKSB7XG4gICAgcmV0dXJuIGFub21hbGllc05hbWVUb0lkTWFwW2Fub21hbHlOYW1lXTtcbiAgfVxuICByZXR1cm4gYW5vbWFseU5hbWU7XG59XG5cbmZ1bmN0aW9uIGluc2VydEFub21hbHkoYW5vbWFseTogQW5vbWFseSkgOiBBbm9tYWx5SWQge1xuICBjb25zdCBoYXNoU3RyaW5nID0gYW5vbWFseS5uYW1lICsgKG5ldyBEYXRlKCkpLnRvU3RyaW5nKCk7XG4gIGNvbnN0IGFub21hbHlJZDpBbm9tYWx5SWQgPSBjcnlwdG8uY3JlYXRlSGFzaCgnbWQ1JykudXBkYXRlKGhhc2hTdHJpbmcpLmRpZ2VzdCgnaGV4Jyk7XG4gIGFub21hbGllc05hbWVUb0lkTWFwW2Fub21hbHkubmFtZV0gPSBhbm9tYWx5SWQ7XG4gIHNhdmVBbm9tYWxpZXNNYXAoKTtcbiAgLy8gcmV0dXJuIGFub21hbHlJZFxuICAvLyBjb25zdCBhbm9tYWx5SWQ6QW5vbWFseUlkID0gYW5vbWFseS5uYW1lO1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oQU5PTUFMSUVTX1BBVEgsIGAke2Fub21hbHlJZH0uanNvbmApO1xuICBpZihmcy5leGlzdHNTeW5jKGZpbGVuYW1lKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHNhdmVBbm9tYWx5KGFub21hbHlJZCwgYW5vbWFseSk7XG4gIHJldHVybiBhbm9tYWx5SWQ7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUFub21hbHkoYW5vbWFseUlkOkFub21hbHlJZCkge1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oQU5PTUFMSUVTX1BBVEgsIGAke2Fub21hbHlJZH0uanNvbmApO1xuICBmcy51bmxpbmtTeW5jKGZpbGVuYW1lKTtcbn1cblxuZnVuY3Rpb24gc2F2ZUFub21hbHkoYW5vbWFseUlkOiBBbm9tYWx5SWQsIGFub21hbHk6IEFub21hbHkpIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgJHthbm9tYWx5SWR9Lmpzb25gKTtcbiAgcmV0dXJuIHdyaXRlSnNvbkRhdGFTeW5jKGZpbGVuYW1lLCBhbm9tYWx5KTtcbn1cblxuZnVuY3Rpb24gbG9hZEFub21hbHlCeUlkKGFub21hbHlJZDogQW5vbWFseUlkKSA6IEFub21hbHkge1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oQU5PTUFMSUVTX1BBVEgsIGAke2Fub21hbHlJZH0uanNvbmApO1xuICBpZighZnMuZXhpc3RzU3luYyhmaWxlbmFtZSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZ2V0SnNvbkRhdGFTeW5jKGZpbGVuYW1lKTtcbn1cblxuZnVuY3Rpb24gbG9hZEFub21hbHlCeU5hbWUoYW5vbWFseU5hbWU6IHN0cmluZykgOiBBbm9tYWx5IHtcbiAgbGV0IGFub21hbHlJZCA9IGdldEFub21hbHlJZEJ5TmFtZShhbm9tYWx5TmFtZSk7XG4gIHJldHVybiBsb2FkQW5vbWFseUJ5SWQoYW5vbWFseUlkKTtcbn1cblxuZnVuY3Rpb24gc2F2ZUFub21hbHlUeXBlSW5mbyhpbmZvKSB7XG4gIGNvbnNvbGUubG9nKCdTYXZpbmcnKTtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgJHtpbmZvLm5hbWV9Lmpzb25gKTtcbiAgaWYoaW5mby5uZXh0X2lkID09PSB1bmRlZmluZWQpIHtcbiAgICBpbmZvLm5leHRfaWQgPSAwO1xuICB9XG4gIGlmKGluZm8ubGFzdF9wcmVkaWN0aW9uX3RpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5mby5sYXN0X3ByZWRpY3Rpb25fdGltZSA9IDA7XG4gIH1cblxuICByZXR1cm4gd3JpdGVKc29uRGF0YVN5bmMoZmlsZW5hbWUsIGluZm8pO1xufVxuXG5mdW5jdGlvbiBnZXRBbm9tYWx5VHlwZUluZm8obmFtZSkge1xuICByZXR1cm4gZ2V0SnNvbkRhdGFTeW5jKHBhdGguam9pbihBTk9NQUxJRVNfUEFUSCwgYCR7bmFtZX0uanNvbmApKTtcbn1cblxuZnVuY3Rpb24gc2V0QW5vbWFseVN0YXR1cyhhbm9tYWx5SWQ6QW5vbWFseUlkLCBzdGF0dXM6c3RyaW5nLCBlcnJvcj86c3RyaW5nKSB7XG4gIGxldCBpbmZvID0gbG9hZEFub21hbHlCeUlkKGFub21hbHlJZCk7XG4gIGluZm8uc3RhdHVzID0gc3RhdHVzO1xuICBpZihlcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaW5mby5lcnJvciA9IGVycm9yO1xuICB9IGVsc2Uge1xuICAgIGluZm8uZXJyb3IgPSAnJztcbiAgfVxuICBzYXZlQW5vbWFseShhbm9tYWx5SWQsIGluZm8pO1xufVxuXG5mdW5jdGlvbiBzZXRBbm9tYWx5UHJlZGljdGlvblRpbWUoYW5vbWFseUlkOkFub21hbHlJZCwgbGFzdFByZWRpY3Rpb25UaW1lOm51bWJlcikge1xuICBsZXQgaW5mbyA9IGxvYWRBbm9tYWx5QnlJZChhbm9tYWx5SWQpO1xuICBpbmZvLmxhc3RfcHJlZGljdGlvbl90aW1lID0gbGFzdFByZWRpY3Rpb25UaW1lO1xuICBzYXZlQW5vbWFseShhbm9tYWx5SWQsIGluZm8pO1xufVxuXG5leHBvcnQge1xuICBzYXZlQW5vbWFseSwgbG9hZEFub21hbHlCeUlkLCBsb2FkQW5vbWFseUJ5TmFtZSwgaW5zZXJ0QW5vbWFseSwgcmVtb3ZlQW5vbWFseSwgc2F2ZUFub21hbHlUeXBlSW5mbyxcbiAgZ2V0QW5vbWFseVR5cGVJbmZvLCBnZXRBbm9tYWx5SWRCeU5hbWUsIHNldEFub21hbHlTdGF0dXMsIHNldEFub21hbHlQcmVkaWN0aW9uVGltZVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc2VydmljZXMvYW5vbWFseVR5cGUudHMiLCJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEpzb25EYXRhKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE9iamVjdD4ge1xuICB2YXIgZGF0YSA9IGF3YWl0IG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGZzLnJlYWRGaWxlKGZpbGVuYW1lLCAndXRmOCcsIChlcnIsIGRhdGEpID0+IHtcbiAgICAgIGlmKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHJlamVjdCgnQ2FuYHQgcmVhZCBmaWxlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICB9IGNhdGNoKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgZmlsZSBmb3JtYXQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cml0ZUpzb25EYXRhKGZpbGVuYW1lOiBzdHJpbmcsIGRhdGE6IE9iamVjdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGZzLndyaXRlRmlsZShmaWxlbmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSksICd1dGY4JywgKGVycikgPT4ge1xuICAgICAgaWYoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgcmVqZWN0KCdDYXRgdCB3cml0ZSBmaWxlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGdldEpzb25EYXRhU3luYyhmaWxlbmFtZTogc3RyaW5nKSB7XG4gIGxldCBkYXRhID0gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCAndXRmOCcpO1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xuICB9IGNhdGNoKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgZmlsZSBmb3JtYXQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3cml0ZUpzb25EYXRhU3luYyhmaWxlbmFtZTogc3RyaW5nLCBkYXRhOiBPYmplY3QpIHtcbiAgZnMud3JpdGVGaWxlU3luYyhmaWxlbmFtZSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xufVxuXG5leHBvcnQge1xuICBnZXRKc29uRGF0YSxcbiAgd3JpdGVKc29uRGF0YSxcbiAgZ2V0SnNvbkRhdGFTeW5jLFxuICB3cml0ZUpzb25EYXRhU3luY1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc2VydmljZXMvanNvbi50cyIsIi8qIVxuICogZXhwcmVzc1xuICogQ29weXJpZ2h0KGMpIDIwMDktMjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTMgUm9tYW4gU2h0eWxtYW5cbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9leHByZXNzJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBjb250ZW50LXR5cGVcbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggKiggXCI7XCIgcGFyYW1ldGVyICkgaW4gUkZDIDcyMzEgc2VjIDMuMS4xLjFcbiAqXG4gKiBwYXJhbWV0ZXIgICAgID0gdG9rZW4gXCI9XCIgKCB0b2tlbiAvIHF1b3RlZC1zdHJpbmcgKVxuICogdG9rZW4gICAgICAgICA9IDEqdGNoYXJcbiAqIHRjaGFyICAgICAgICAgPSBcIiFcIiAvIFwiI1wiIC8gXCIkXCIgLyBcIiVcIiAvIFwiJlwiIC8gXCInXCIgLyBcIipcIlxuICogICAgICAgICAgICAgICAvIFwiK1wiIC8gXCItXCIgLyBcIi5cIiAvIFwiXlwiIC8gXCJfXCIgLyBcImBcIiAvIFwifFwiIC8gXCJ+XCJcbiAqICAgICAgICAgICAgICAgLyBESUdJVCAvIEFMUEhBXG4gKiAgICAgICAgICAgICAgIDsgYW55IFZDSEFSLCBleGNlcHQgZGVsaW1pdGVyc1xuICogcXVvdGVkLXN0cmluZyA9IERRVU9URSAqKCBxZHRleHQgLyBxdW90ZWQtcGFpciApIERRVU9URVxuICogcWR0ZXh0ICAgICAgICA9IEhUQUIgLyBTUCAvICV4MjEgLyAleDIzLTVCIC8gJXg1RC03RSAvIG9icy10ZXh0XG4gKiBvYnMtdGV4dCAgICAgID0gJXg4MC1GRlxuICogcXVvdGVkLXBhaXIgICA9IFwiXFxcIiAoIEhUQUIgLyBTUCAvIFZDSEFSIC8gb2JzLXRleHQgKVxuICovXG52YXIgUEFSQU1fUkVHRVhQID0gLzsgKihbISMkJSYnKisuXl9gfH4wLTlBLVphLXotXSspICo9ICooXCIoPzpbXFx1MDAwYlxcdTAwMjBcXHUwMDIxXFx1MDAyMy1cXHUwMDViXFx1MDA1ZC1cXHUwMDdlXFx1MDA4MC1cXHUwMGZmXXxcXFxcW1xcdTAwMGJcXHUwMDIwLVxcdTAwZmZdKSpcInxbISMkJSYnKisuXl9gfH4wLTlBLVphLXotXSspICovZ1xudmFyIFRFWFRfUkVHRVhQID0gL15bXFx1MDAwYlxcdTAwMjAtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl0rJC9cbnZhciBUT0tFTl9SRUdFWFAgPSAvXlshIyQlJicqKy5eX2B8fjAtOUEtWmEtei1dKyQvXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHF1b3RlZC1wYWlyIGluIFJGQyA3MjMwIHNlYyAzLjIuNlxuICpcbiAqIHF1b3RlZC1wYWlyID0gXCJcXFwiICggSFRBQiAvIFNQIC8gVkNIQVIgLyBvYnMtdGV4dCApXG4gKiBvYnMtdGV4dCAgICA9ICV4ODAtRkZcbiAqL1xudmFyIFFFU0NfUkVHRVhQID0gL1xcXFwoW1xcdTAwMGJcXHUwMDIwLVxcdTAwZmZdKS9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGNoYXJzIHRoYXQgbXVzdCBiZSBxdW90ZWQtcGFpciBpbiBSRkMgNzIzMCBzZWMgMy4yLjZcbiAqL1xudmFyIFFVT1RFX1JFR0VYUCA9IC8oW1xcXFxcIl0pL2dcblxuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggdHlwZSBpbiBSRkMgNzIzMSBzZWMgMy4xLjEuMVxuICpcbiAqIG1lZGlhLXR5cGUgPSB0eXBlIFwiL1wiIHN1YnR5cGVcbiAqIHR5cGUgICAgICAgPSB0b2tlblxuICogc3VidHlwZSAgICA9IHRva2VuXG4gKi9cbnZhciBUWVBFX1JFR0VYUCA9IC9eWyEjJCUmJyorLl5fYHx+MC05QS1aYS16LV0rXFwvWyEjJCUmJyorLl5fYHx+MC05QS1aYS16LV0rJC9cblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5leHBvcnRzLmZvcm1hdCA9IGZvcm1hdFxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlXG5cbi8qKlxuICogRm9ybWF0IG9iamVjdCB0byBtZWRpYSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXQgKG9iaikge1xuICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IG9iaiBpcyByZXF1aXJlZCcpXG4gIH1cblxuICB2YXIgcGFyYW1ldGVycyA9IG9iai5wYXJhbWV0ZXJzXG4gIHZhciB0eXBlID0gb2JqLnR5cGVcblxuICBpZiAoIXR5cGUgfHwgIVRZUEVfUkVHRVhQLnRlc3QodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHR5cGUnKVxuICB9XG5cbiAgdmFyIHN0cmluZyA9IHR5cGVcblxuICAvLyBhcHBlbmQgcGFyYW1ldGVyc1xuICBpZiAocGFyYW1ldGVycyAmJiB0eXBlb2YgcGFyYW1ldGVycyA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcGFyYW1cbiAgICB2YXIgcGFyYW1zID0gT2JqZWN0LmtleXMocGFyYW1ldGVycykuc29ydCgpXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgcGFyYW0gPSBwYXJhbXNbaV1cblxuICAgICAgaWYgKCFUT0tFTl9SRUdFWFAudGVzdChwYXJhbSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgbmFtZScpXG4gICAgICB9XG5cbiAgICAgIHN0cmluZyArPSAnOyAnICsgcGFyYW0gKyAnPScgKyBxc3RyaW5nKHBhcmFtZXRlcnNbcGFyYW1dKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHJpbmdcbn1cblxuLyoqXG4gKiBQYXJzZSBtZWRpYSB0eXBlIHRvIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHN0cmluZ1xuICogQHJldHVybiB7T2JqZWN0fVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHBhcnNlIChzdHJpbmcpIHtcbiAgaWYgKCFzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBzdHJpbmcgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgLy8gc3VwcG9ydCByZXEvcmVzLWxpa2Ugb2JqZWN0cyBhcyBhcmd1bWVudFxuICB2YXIgaGVhZGVyID0gdHlwZW9mIHN0cmluZyA9PT0gJ29iamVjdCdcbiAgICA/IGdldGNvbnRlbnR0eXBlKHN0cmluZylcbiAgICA6IHN0cmluZ1xuXG4gIGlmICh0eXBlb2YgaGVhZGVyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHN0cmluZyBpcyByZXF1aXJlZCB0byBiZSBhIHN0cmluZycpXG4gIH1cblxuICB2YXIgaW5kZXggPSBoZWFkZXIuaW5kZXhPZignOycpXG4gIHZhciB0eXBlID0gaW5kZXggIT09IC0xXG4gICAgPyBoZWFkZXIuc3Vic3RyKDAsIGluZGV4KS50cmltKClcbiAgICA6IGhlYWRlci50cmltKClcblxuICBpZiAoIVRZUEVfUkVHRVhQLnRlc3QodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIG1lZGlhIHR5cGUnKVxuICB9XG5cbiAgdmFyIG9iaiA9IG5ldyBDb250ZW50VHlwZSh0eXBlLnRvTG93ZXJDYXNlKCkpXG5cbiAgLy8gcGFyc2UgcGFyYW1ldGVyc1xuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgdmFyIGtleVxuICAgIHZhciBtYXRjaFxuICAgIHZhciB2YWx1ZVxuXG4gICAgUEFSQU1fUkVHRVhQLmxhc3RJbmRleCA9IGluZGV4XG5cbiAgICB3aGlsZSAoKG1hdGNoID0gUEFSQU1fUkVHRVhQLmV4ZWMoaGVhZGVyKSkpIHtcbiAgICAgIGlmIChtYXRjaC5pbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgICAgIH1cblxuICAgICAgaW5kZXggKz0gbWF0Y2hbMF0ubGVuZ3RoXG4gICAgICBrZXkgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG4gICAgICB2YWx1ZSA9IG1hdGNoWzJdXG5cbiAgICAgIGlmICh2YWx1ZVswXSA9PT0gJ1wiJykge1xuICAgICAgICAvLyByZW1vdmUgcXVvdGVzIGFuZCBlc2NhcGVzXG4gICAgICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgICAuc3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpXG4gICAgICAgICAgLnJlcGxhY2UoUUVTQ19SRUdFWFAsICckMScpXG4gICAgICB9XG5cbiAgICAgIG9iai5wYXJhbWV0ZXJzW2tleV0gPSB2YWx1ZVxuICAgIH1cblxuICAgIGlmIChpbmRleCAhPT0gaGVhZGVyLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqXG59XG5cbi8qKlxuICogR2V0IGNvbnRlbnQtdHlwZSBmcm9tIHJlcS9yZXMgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH1cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0Y29udGVudHR5cGUgKG9iaikge1xuICB2YXIgaGVhZGVyXG5cbiAgaWYgKHR5cGVvZiBvYmouZ2V0SGVhZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gcmVzLWxpa2VcbiAgICBoZWFkZXIgPSBvYmouZ2V0SGVhZGVyKCdjb250ZW50LXR5cGUnKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvYmouaGVhZGVycyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyByZXEtbGlrZVxuICAgIGhlYWRlciA9IG9iai5oZWFkZXJzICYmIG9iai5oZWFkZXJzWydjb250ZW50LXR5cGUnXVxuICB9XG5cbiAgaWYgKHR5cGVvZiBoZWFkZXIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29udGVudC10eXBlIGhlYWRlciBpcyBtaXNzaW5nIGZyb20gb2JqZWN0JylcbiAgfVxuXG4gIHJldHVybiBoZWFkZXJcbn1cblxuLyoqXG4gKiBRdW90ZSBhIHN0cmluZyBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbFxuICogQHJldHVybiB7c3RyaW5nfVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBxc3RyaW5nICh2YWwpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyh2YWwpXG5cbiAgLy8gbm8gbmVlZCB0byBxdW90ZSB0b2tlbnNcbiAgaWYgKFRPS0VOX1JFR0VYUC50ZXN0KHN0cikpIHtcbiAgICByZXR1cm4gc3RyXG4gIH1cblxuICBpZiAoc3RyLmxlbmd0aCA+IDAgJiYgIVRFWFRfUkVHRVhQLnRlc3Qoc3RyKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgcGFyYW1ldGVyIHZhbHVlJylcbiAgfVxuXG4gIHJldHVybiAnXCInICsgc3RyLnJlcGxhY2UoUVVPVEVfUkVHRVhQLCAnXFxcXCQxJykgKyAnXCInXG59XG5cbi8qKlxuICogQ2xhc3MgdG8gcmVwcmVzZW50IGEgY29udGVudCB0eXBlLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gQ29udGVudFR5cGUgKHR5cGUpIHtcbiAgdGhpcy5wYXJhbWV0ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICB0aGlzLnR5cGUgPSB0eXBlXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29udGVudC10eXBlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGh0dHAtZXJyb3JzXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE2IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdodHRwLWVycm9ycycpXG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCdzZXRwcm90b3R5cGVvZicpXG52YXIgc3RhdHVzZXMgPSByZXF1aXJlKCdzdGF0dXNlcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFcnJvclxubW9kdWxlLmV4cG9ydHMuSHR0cEVycm9yID0gY3JlYXRlSHR0cEVycm9yQ29uc3RydWN0b3IoKVxuXG4vLyBQb3B1bGF0ZSBleHBvcnRzIGZvciBhbGwgY29uc3RydWN0b3JzXG5wb3B1bGF0ZUNvbnN0cnVjdG9yRXhwb3J0cyhtb2R1bGUuZXhwb3J0cywgc3RhdHVzZXMuY29kZXMsIG1vZHVsZS5leHBvcnRzLkh0dHBFcnJvcilcblxuLyoqXG4gKiBHZXQgdGhlIGNvZGUgY2xhc3Mgb2YgYSBzdGF0dXMgY29kZS5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29kZUNsYXNzIChzdGF0dXMpIHtcbiAgcmV0dXJuIE51bWJlcihTdHJpbmcoc3RhdHVzKS5jaGFyQXQoMCkgKyAnMDAnKVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBIVFRQIEVycm9yLlxuICpcbiAqIEByZXR1cm5zIHtFcnJvcn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFcnJvciAoKSB7XG4gIC8vIHNvIG11Y2ggYXJpdHkgZ29pbmcgb24gfl9+XG4gIHZhciBlcnJcbiAgdmFyIG1zZ1xuICB2YXIgc3RhdHVzID0gNTAwXG4gIHZhciBwcm9wcyA9IHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3VtZW50c1tpXVxuICAgIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgZXJyID0gYXJnXG4gICAgICBzdGF0dXMgPSBlcnIuc3RhdHVzIHx8IGVyci5zdGF0dXNDb2RlIHx8IHN0YXR1c1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBtc2cgPSBhcmdcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHN0YXR1cyA9IGFyZ1xuICAgICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICAgIGRlcHJlY2F0ZSgnbm9uLWZpcnN0LWFyZ3VtZW50IHN0YXR1cyBjb2RlOyByZXBsYWNlIHdpdGggY3JlYXRlRXJyb3IoJyArIGFyZyArICcsIC4uLiknKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBwcm9wcyA9IGFyZ1xuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RhdHVzID09PSAnbnVtYmVyJyAmJiAoc3RhdHVzIDwgNDAwIHx8IHN0YXR1cyA+PSA2MDApKSB7XG4gICAgZGVwcmVjYXRlKCdub24tZXJyb3Igc3RhdHVzIGNvZGU7IHVzZSBvbmx5IDR4eCBvciA1eHggc3RhdHVzIGNvZGVzJylcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RhdHVzICE9PSAnbnVtYmVyJyB8fFxuICAgICghc3RhdHVzZXNbc3RhdHVzXSAmJiAoc3RhdHVzIDwgNDAwIHx8IHN0YXR1cyA+PSA2MDApKSkge1xuICAgIHN0YXR1cyA9IDUwMFxuICB9XG5cbiAgLy8gY29uc3RydWN0b3JcbiAgdmFyIEh0dHBFcnJvciA9IGNyZWF0ZUVycm9yW3N0YXR1c10gfHwgY3JlYXRlRXJyb3JbY29kZUNsYXNzKHN0YXR1cyldXG5cbiAgaWYgKCFlcnIpIHtcbiAgICAvLyBjcmVhdGUgZXJyb3JcbiAgICBlcnIgPSBIdHRwRXJyb3JcbiAgICAgID8gbmV3IEh0dHBFcnJvcihtc2cpXG4gICAgICA6IG5ldyBFcnJvcihtc2cgfHwgc3RhdHVzZXNbc3RhdHVzXSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIGNyZWF0ZUVycm9yKVxuICB9XG5cbiAgaWYgKCFIdHRwRXJyb3IgfHwgIShlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3IpIHx8IGVyci5zdGF0dXMgIT09IHN0YXR1cykge1xuICAgIC8vIGFkZCBwcm9wZXJ0aWVzIHRvIGdlbmVyaWMgZXJyb3JcbiAgICBlcnIuZXhwb3NlID0gc3RhdHVzIDwgNTAwXG4gICAgZXJyLnN0YXR1cyA9IGVyci5zdGF0dXNDb2RlID0gc3RhdHVzXG4gIH1cblxuICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoa2V5ICE9PSAnc3RhdHVzJyAmJiBrZXkgIT09ICdzdGF0dXNDb2RlJykge1xuICAgICAgZXJyW2tleV0gPSBwcm9wc1trZXldXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVyclxufVxuXG4vKipcbiAqIENyZWF0ZSBIVFRQIGVycm9yIGFic3RyYWN0IGJhc2UgY2xhc3MuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUh0dHBFcnJvckNvbnN0cnVjdG9yICgpIHtcbiAgZnVuY3Rpb24gSHR0cEVycm9yICgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYW5ub3QgY29uc3RydWN0IGFic3RyYWN0IGNsYXNzJylcbiAgfVxuXG4gIGluaGVyaXRzKEh0dHBFcnJvciwgRXJyb3IpXG5cbiAgcmV0dXJuIEh0dHBFcnJvclxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNvbnN0cnVjdG9yIGZvciBhIGNsaWVudCBlcnJvci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50RXJyb3JDb25zdHJ1Y3RvciAoSHR0cEVycm9yLCBuYW1lLCBjb2RlKSB7XG4gIHZhciBjbGFzc05hbWUgPSBuYW1lLm1hdGNoKC9FcnJvciQvKSA/IG5hbWUgOiBuYW1lICsgJ0Vycm9yJ1xuXG4gIGZ1bmN0aW9uIENsaWVudEVycm9yIChtZXNzYWdlKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBlcnJvciBvYmplY3RcbiAgICB2YXIgbXNnID0gbWVzc2FnZSAhPSBudWxsID8gbWVzc2FnZSA6IHN0YXR1c2VzW2NvZGVdXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihtc2cpXG5cbiAgICAvLyBjYXB0dXJlIGEgc3RhY2sgdHJhY2UgdG8gdGhlIGNvbnN0cnVjdGlvbiBwb2ludFxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgQ2xpZW50RXJyb3IpXG5cbiAgICAvLyBhZGp1c3QgdGhlIFtbUHJvdG90eXBlXV1cbiAgICBzZXRQcm90b3R5cGVPZihlcnIsIENsaWVudEVycm9yLnByb3RvdHlwZSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBtZXNzYWdlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ21lc3NhZ2UnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IG1zZyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBuYW1lXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ25hbWUnLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBjbGFzc05hbWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pXG5cbiAgICByZXR1cm4gZXJyXG4gIH1cblxuICBpbmhlcml0cyhDbGllbnRFcnJvciwgSHR0cEVycm9yKVxuXG4gIENsaWVudEVycm9yLnByb3RvdHlwZS5zdGF0dXMgPSBjb2RlXG4gIENsaWVudEVycm9yLnByb3RvdHlwZS5zdGF0dXNDb2RlID0gY29kZVxuICBDbGllbnRFcnJvci5wcm90b3R5cGUuZXhwb3NlID0gdHJ1ZVxuXG4gIHJldHVybiBDbGllbnRFcnJvclxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNvbnN0cnVjdG9yIGZvciBhIHNlcnZlciBlcnJvci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlU2VydmVyRXJyb3JDb25zdHJ1Y3RvciAoSHR0cEVycm9yLCBuYW1lLCBjb2RlKSB7XG4gIHZhciBjbGFzc05hbWUgPSBuYW1lLm1hdGNoKC9FcnJvciQvKSA/IG5hbWUgOiBuYW1lICsgJ0Vycm9yJ1xuXG4gIGZ1bmN0aW9uIFNlcnZlckVycm9yIChtZXNzYWdlKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBlcnJvciBvYmplY3RcbiAgICB2YXIgbXNnID0gbWVzc2FnZSAhPSBudWxsID8gbWVzc2FnZSA6IHN0YXR1c2VzW2NvZGVdXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihtc2cpXG5cbiAgICAvLyBjYXB0dXJlIGEgc3RhY2sgdHJhY2UgdG8gdGhlIGNvbnN0cnVjdGlvbiBwb2ludFxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgU2VydmVyRXJyb3IpXG5cbiAgICAvLyBhZGp1c3QgdGhlIFtbUHJvdG90eXBlXV1cbiAgICBzZXRQcm90b3R5cGVPZihlcnIsIFNlcnZlckVycm9yLnByb3RvdHlwZSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBtZXNzYWdlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ21lc3NhZ2UnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IG1zZyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBuYW1lXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ25hbWUnLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBjbGFzc05hbWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pXG5cbiAgICByZXR1cm4gZXJyXG4gIH1cblxuICBpbmhlcml0cyhTZXJ2ZXJFcnJvciwgSHR0cEVycm9yKVxuXG4gIFNlcnZlckVycm9yLnByb3RvdHlwZS5zdGF0dXMgPSBjb2RlXG4gIFNlcnZlckVycm9yLnByb3RvdHlwZS5zdGF0dXNDb2RlID0gY29kZVxuICBTZXJ2ZXJFcnJvci5wcm90b3R5cGUuZXhwb3NlID0gZmFsc2VcblxuICByZXR1cm4gU2VydmVyRXJyb3Jcbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSB0aGUgZXhwb3J0cyBvYmplY3Qgd2l0aCBjb25zdHJ1Y3RvcnMgZm9yIGV2ZXJ5IGVycm9yIGNsYXNzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwb3B1bGF0ZUNvbnN0cnVjdG9yRXhwb3J0cyAoZXhwb3J0cywgY29kZXMsIEh0dHBFcnJvcikge1xuICBjb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIGZvckVhY2hDb2RlIChjb2RlKSB7XG4gICAgdmFyIENvZGVFcnJvclxuICAgIHZhciBuYW1lID0gdG9JZGVudGlmaWVyKHN0YXR1c2VzW2NvZGVdKVxuXG4gICAgc3dpdGNoIChjb2RlQ2xhc3MoY29kZSkpIHtcbiAgICAgIGNhc2UgNDAwOlxuICAgICAgICBDb2RlRXJyb3IgPSBjcmVhdGVDbGllbnRFcnJvckNvbnN0cnVjdG9yKEh0dHBFcnJvciwgbmFtZSwgY29kZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgNTAwOlxuICAgICAgICBDb2RlRXJyb3IgPSBjcmVhdGVTZXJ2ZXJFcnJvckNvbnN0cnVjdG9yKEh0dHBFcnJvciwgbmFtZSwgY29kZSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoQ29kZUVycm9yKSB7XG4gICAgICAvLyBleHBvcnQgdGhlIGNvbnN0cnVjdG9yXG4gICAgICBleHBvcnRzW2NvZGVdID0gQ29kZUVycm9yXG4gICAgICBleHBvcnRzW25hbWVdID0gQ29kZUVycm9yXG4gICAgfVxuICB9KVxuXG4gIC8vIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5XG4gIGV4cG9ydHNbXCJJJ21hdGVhcG90XCJdID0gZGVwcmVjYXRlLmZ1bmN0aW9uKGV4cG9ydHMuSW1BVGVhcG90LFxuICAgICdcIklcXCdtYXRlYXBvdFwiOyB1c2UgXCJJbUFUZWFwb3RcIiBpbnN0ZWFkJylcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIG9mIHdvcmRzIHRvIGEgSmF2YVNjcmlwdCBpZGVudGlmaWVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiB0b0lkZW50aWZpZXIgKHN0cikge1xuICByZXR1cm4gc3RyLnNwbGl0KCcgJykubWFwKGZ1bmN0aW9uICh0b2tlbikge1xuICAgIHJldHVybiB0b2tlbi5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgdG9rZW4uc2xpY2UoMSlcbiAgfSkuam9pbignJykucmVwbGFjZSgvW14gXzAtOWEtel0vZ2ksICcnKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2h0dHAtZXJyb3JzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoe19fcHJvdG9fXzpbXX0gaW5zdGFuY2VvZiBBcnJheSA/IHNldFByb3RvT2YgOiBtaXhpblByb3BlcnRpZXMpO1xuXG5mdW5jdGlvbiBzZXRQcm90b09mKG9iaiwgcHJvdG8pIHtcblx0b2JqLl9fcHJvdG9fXyA9IHByb3RvO1xuXHRyZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBtaXhpblByb3BlcnRpZXMob2JqLCBwcm90bykge1xuXHRmb3IgKHZhciBwcm9wIGluIHByb3RvKSB7XG5cdFx0aWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcblx0XHRcdG9ialtwcm9wXSA9IHByb3RvW3Byb3BdO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3NldHByb3RvdHlwZW9mL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGJvZHktcGFyc2VyXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCdodHRwLWVycm9ycycpXG52YXIgZ2V0Qm9keSA9IHJlcXVpcmUoJ3Jhdy1ib2R5JylcbnZhciBpY29udiA9IHJlcXVpcmUoJ2ljb252LWxpdGUnKVxudmFyIG9uRmluaXNoZWQgPSByZXF1aXJlKCdvbi1maW5pc2hlZCcpXG52YXIgemxpYiA9IHJlcXVpcmUoJ3psaWInKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcmVhZFxuXG4vKipcbiAqIFJlYWQgYSByZXF1ZXN0IGludG8gYSBidWZmZXIgYW5kIHBhcnNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG5leHRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHBhcnNlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBkZWJ1Z1xuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcmVhZCAocmVxLCByZXMsIG5leHQsIHBhcnNlLCBkZWJ1Zywgb3B0aW9ucykge1xuICB2YXIgbGVuZ3RoXG4gIHZhciBvcHRzID0gb3B0aW9uc1xuICB2YXIgc3RyZWFtXG5cbiAgLy8gZmxhZyBhcyBwYXJzZWRcbiAgcmVxLl9ib2R5ID0gdHJ1ZVxuXG4gIC8vIHJlYWQgb3B0aW9uc1xuICB2YXIgZW5jb2RpbmcgPSBvcHRzLmVuY29kaW5nICE9PSBudWxsXG4gICAgPyBvcHRzLmVuY29kaW5nXG4gICAgOiBudWxsXG4gIHZhciB2ZXJpZnkgPSBvcHRzLnZlcmlmeVxuXG4gIHRyeSB7XG4gICAgLy8gZ2V0IHRoZSBjb250ZW50IHN0cmVhbVxuICAgIHN0cmVhbSA9IGNvbnRlbnRzdHJlYW0ocmVxLCBkZWJ1Zywgb3B0cy5pbmZsYXRlKVxuICAgIGxlbmd0aCA9IHN0cmVhbS5sZW5ndGhcbiAgICBzdHJlYW0ubGVuZ3RoID0gdW5kZWZpbmVkXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBuZXh0KGVycilcbiAgfVxuXG4gIC8vIHNldCByYXctYm9keSBvcHRpb25zXG4gIG9wdHMubGVuZ3RoID0gbGVuZ3RoXG4gIG9wdHMuZW5jb2RpbmcgPSB2ZXJpZnlcbiAgICA/IG51bGxcbiAgICA6IGVuY29kaW5nXG5cbiAgLy8gYXNzZXJ0IGNoYXJzZXQgaXMgc3VwcG9ydGVkXG4gIGlmIChvcHRzLmVuY29kaW5nID09PSBudWxsICYmIGVuY29kaW5nICE9PSBudWxsICYmICFpY29udi5lbmNvZGluZ0V4aXN0cyhlbmNvZGluZykpIHtcbiAgICByZXR1cm4gbmV4dChjcmVhdGVFcnJvcig0MTUsICd1bnN1cHBvcnRlZCBjaGFyc2V0IFwiJyArIGVuY29kaW5nLnRvVXBwZXJDYXNlKCkgKyAnXCInLCB7XG4gICAgICBjaGFyc2V0OiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpLFxuICAgICAgdHlwZTogJ2NoYXJzZXQudW5zdXBwb3J0ZWQnXG4gICAgfSkpXG4gIH1cblxuICAvLyByZWFkIGJvZHlcbiAgZGVidWcoJ3JlYWQgYm9keScpXG4gIGdldEJvZHkoc3RyZWFtLCBvcHRzLCBmdW5jdGlvbiAoZXJyb3IsIGJvZHkpIHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHZhciBfZXJyb3JcblxuICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICdlbmNvZGluZy51bnN1cHBvcnRlZCcpIHtcbiAgICAgICAgLy8gZWNobyBiYWNrIGNoYXJzZXRcbiAgICAgICAgX2Vycm9yID0gY3JlYXRlRXJyb3IoNDE1LCAndW5zdXBwb3J0ZWQgY2hhcnNldCBcIicgKyBlbmNvZGluZy50b1VwcGVyQ2FzZSgpICsgJ1wiJywge1xuICAgICAgICAgIGNoYXJzZXQ6IGVuY29kaW5nLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgdHlwZTogJ2NoYXJzZXQudW5zdXBwb3J0ZWQnXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzZXQgc3RhdHVzIGNvZGUgb24gZXJyb3JcbiAgICAgICAgX2Vycm9yID0gY3JlYXRlRXJyb3IoNDAwLCBlcnJvcilcbiAgICAgIH1cblxuICAgICAgLy8gcmVhZCBvZmYgZW50aXJlIHJlcXVlc3RcbiAgICAgIHN0cmVhbS5yZXN1bWUoKVxuICAgICAgb25GaW5pc2hlZChyZXEsIGZ1bmN0aW9uIG9uZmluaXNoZWQgKCkge1xuICAgICAgICBuZXh0KGNyZWF0ZUVycm9yKDQwMCwgX2Vycm9yKSlcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB2ZXJpZnlcbiAgICBpZiAodmVyaWZ5KSB7XG4gICAgICB0cnkge1xuICAgICAgICBkZWJ1ZygndmVyaWZ5IGJvZHknKVxuICAgICAgICB2ZXJpZnkocmVxLCByZXMsIGJvZHksIGVuY29kaW5nKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIG5leHQoY3JlYXRlRXJyb3IoNDAzLCBlcnIsIHtcbiAgICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICAgIHR5cGU6IGVyci50eXBlIHx8ICdlbnRpdHkudmVyaWZ5LmZhaWxlZCdcbiAgICAgICAgfSkpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBhcnNlXG4gICAgdmFyIHN0ciA9IGJvZHlcbiAgICB0cnkge1xuICAgICAgZGVidWcoJ3BhcnNlIGJvZHknKVxuICAgICAgc3RyID0gdHlwZW9mIGJvZHkgIT09ICdzdHJpbmcnICYmIGVuY29kaW5nICE9PSBudWxsXG4gICAgICAgID8gaWNvbnYuZGVjb2RlKGJvZHksIGVuY29kaW5nKVxuICAgICAgICA6IGJvZHlcbiAgICAgIHJlcS5ib2R5ID0gcGFyc2Uoc3RyKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbmV4dChjcmVhdGVFcnJvcig0MDAsIGVyciwge1xuICAgICAgICBib2R5OiBzdHIsXG4gICAgICAgIHR5cGU6IGVyci50eXBlIHx8ICdlbnRpdHkucGFyc2UuZmFpbGVkJ1xuICAgICAgfSkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBuZXh0KClcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNvbnRlbnQgc3RyZWFtIG9mIHRoZSByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGRlYnVnXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbmZsYXRlPXRydWVdXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb250ZW50c3RyZWFtIChyZXEsIGRlYnVnLCBpbmZsYXRlKSB7XG4gIHZhciBlbmNvZGluZyA9IChyZXEuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddIHx8ICdpZGVudGl0eScpLnRvTG93ZXJDYXNlKClcbiAgdmFyIGxlbmd0aCA9IHJlcS5oZWFkZXJzWydjb250ZW50LWxlbmd0aCddXG4gIHZhciBzdHJlYW1cblxuICBkZWJ1ZygnY29udGVudC1lbmNvZGluZyBcIiVzXCInLCBlbmNvZGluZylcblxuICBpZiAoaW5mbGF0ZSA9PT0gZmFsc2UgJiYgZW5jb2RpbmcgIT09ICdpZGVudGl0eScpIHtcbiAgICB0aHJvdyBjcmVhdGVFcnJvcig0MTUsICdjb250ZW50IGVuY29kaW5nIHVuc3VwcG9ydGVkJywge1xuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgICAgdHlwZTogJ2VuY29kaW5nLnVuc3VwcG9ydGVkJ1xuICAgIH0pXG4gIH1cblxuICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgY2FzZSAnZGVmbGF0ZSc6XG4gICAgICBzdHJlYW0gPSB6bGliLmNyZWF0ZUluZmxhdGUoKVxuICAgICAgZGVidWcoJ2luZmxhdGUgYm9keScpXG4gICAgICByZXEucGlwZShzdHJlYW0pXG4gICAgICBicmVha1xuICAgIGNhc2UgJ2d6aXAnOlxuICAgICAgc3RyZWFtID0gemxpYi5jcmVhdGVHdW56aXAoKVxuICAgICAgZGVidWcoJ2d1bnppcCBib2R5JylcbiAgICAgIHJlcS5waXBlKHN0cmVhbSlcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnaWRlbnRpdHknOlxuICAgICAgc3RyZWFtID0gcmVxXG4gICAgICBzdHJlYW0ubGVuZ3RoID0gbGVuZ3RoXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBjcmVhdGVFcnJvcig0MTUsICd1bnN1cHBvcnRlZCBjb250ZW50IGVuY29kaW5nIFwiJyArIGVuY29kaW5nICsgJ1wiJywge1xuICAgICAgICBlbmNvZGluZzogZW5jb2RpbmcsXG4gICAgICAgIHR5cGU6ICdlbmNvZGluZy51bnN1cHBvcnRlZCdcbiAgICAgIH0pXG4gIH1cblxuICByZXR1cm4gc3RyZWFtXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYm9keS1wYXJzZXIvbGliL3JlYWQuanNcbi8vIG1vZHVsZSBpZCA9IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogb24tZmluaXNoZWRcbiAqIENvcHlyaWdodChjKSAyMDEzIEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTQgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gb25GaW5pc2hlZFxubW9kdWxlLmV4cG9ydHMuaXNGaW5pc2hlZCA9IGlzRmluaXNoZWRcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZmlyc3QgPSByZXF1aXJlKCdlZS1maXJzdCcpXG5cbi8qKlxuICogVmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudmFyIGRlZmVyID0gdHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJ1xuICA/IHNldEltbWVkaWF0ZVxuICA6IGZ1bmN0aW9uKGZuKXsgcHJvY2Vzcy5uZXh0VGljayhmbi5iaW5kLmFwcGx5KGZuLCBhcmd1bWVudHMpKSB9XG5cbi8qKlxuICogSW52b2tlIGNhbGxiYWNrIHdoZW4gdGhlIHJlc3BvbnNlIGhhcyBmaW5pc2hlZCwgdXNlZnVsIGZvclxuICogY2xlYW5pbmcgdXAgcmVzb3VyY2VzIGFmdGVyd2FyZHMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG1zZ1xuICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXJcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBvbkZpbmlzaGVkKG1zZywgbGlzdGVuZXIpIHtcbiAgaWYgKGlzRmluaXNoZWQobXNnKSAhPT0gZmFsc2UpIHtcbiAgICBkZWZlcihsaXN0ZW5lciwgbnVsbCwgbXNnKVxuICAgIHJldHVybiBtc2dcbiAgfVxuXG4gIC8vIGF0dGFjaCB0aGUgbGlzdGVuZXIgdG8gdGhlIG1lc3NhZ2VcbiAgYXR0YWNoTGlzdGVuZXIobXNnLCBsaXN0ZW5lcilcblxuICByZXR1cm4gbXNnXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIG1lc3NhZ2UgaXMgYWxyZWFkeSBmaW5pc2hlZC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gbXNnXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGlzRmluaXNoZWQobXNnKSB7XG4gIHZhciBzb2NrZXQgPSBtc2cuc29ja2V0XG5cbiAgaWYgKHR5cGVvZiBtc2cuZmluaXNoZWQgPT09ICdib29sZWFuJykge1xuICAgIC8vIE91dGdvaW5nTWVzc2FnZVxuICAgIHJldHVybiBCb29sZWFuKG1zZy5maW5pc2hlZCB8fCAoc29ja2V0ICYmICFzb2NrZXQud3JpdGFibGUpKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBtc2cuY29tcGxldGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEluY29taW5nTWVzc2FnZVxuICAgIHJldHVybiBCb29sZWFuKG1zZy51cGdyYWRlIHx8ICFzb2NrZXQgfHwgIXNvY2tldC5yZWFkYWJsZSB8fCAobXNnLmNvbXBsZXRlICYmICFtc2cucmVhZGFibGUpKVxuICB9XG5cbiAgLy8gZG9uJ3Qga25vd1xuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQXR0YWNoIGEgZmluaXNoZWQgbGlzdGVuZXIgdG8gdGhlIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG1zZ1xuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gYXR0YWNoRmluaXNoZWRMaXN0ZW5lcihtc2csIGNhbGxiYWNrKSB7XG4gIHZhciBlZU1zZ1xuICB2YXIgZWVTb2NrZXRcbiAgdmFyIGZpbmlzaGVkID0gZmFsc2VcblxuICBmdW5jdGlvbiBvbkZpbmlzaChlcnJvcikge1xuICAgIGVlTXNnLmNhbmNlbCgpXG4gICAgZWVTb2NrZXQuY2FuY2VsKClcblxuICAgIGZpbmlzaGVkID0gdHJ1ZVxuICAgIGNhbGxiYWNrKGVycm9yKVxuICB9XG5cbiAgLy8gZmluaXNoZWQgb24gZmlyc3QgbWVzc2FnZSBldmVudFxuICBlZU1zZyA9IGVlU29ja2V0ID0gZmlyc3QoW1ttc2csICdlbmQnLCAnZmluaXNoJ11dLCBvbkZpbmlzaClcblxuICBmdW5jdGlvbiBvblNvY2tldChzb2NrZXQpIHtcbiAgICAvLyByZW1vdmUgbGlzdGVuZXJcbiAgICBtc2cucmVtb3ZlTGlzdGVuZXIoJ3NvY2tldCcsIG9uU29ja2V0KVxuXG4gICAgaWYgKGZpbmlzaGVkKSByZXR1cm5cbiAgICBpZiAoZWVNc2cgIT09IGVlU29ja2V0KSByZXR1cm5cblxuICAgIC8vIGZpbmlzaGVkIG9uIGZpcnN0IHNvY2tldCBldmVudFxuICAgIGVlU29ja2V0ID0gZmlyc3QoW1tzb2NrZXQsICdlcnJvcicsICdjbG9zZSddXSwgb25GaW5pc2gpXG4gIH1cblxuICBpZiAobXNnLnNvY2tldCkge1xuICAgIC8vIHNvY2tldCBhbHJlYWR5IGFzc2lnbmVkXG4gICAgb25Tb2NrZXQobXNnLnNvY2tldClcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIHdhaXQgZm9yIHNvY2tldCB0byBiZSBhc3NpZ25lZFxuICBtc2cub24oJ3NvY2tldCcsIG9uU29ja2V0KVxuXG4gIGlmIChtc2cuc29ja2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBub2RlLmpzIDAuOCBwYXRjaFxuICAgIHBhdGNoQXNzaWduU29ja2V0KG1zZywgb25Tb2NrZXQpXG4gIH1cbn1cblxuLyoqXG4gKiBBdHRhY2ggdGhlIGxpc3RlbmVyIHRvIHRoZSBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBtc2dcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBhdHRhY2hMaXN0ZW5lcihtc2csIGxpc3RlbmVyKSB7XG4gIHZhciBhdHRhY2hlZCA9IG1zZy5fX29uRmluaXNoZWRcblxuICAvLyBjcmVhdGUgYSBwcml2YXRlIHNpbmdsZSBsaXN0ZW5lciB3aXRoIHF1ZXVlXG4gIGlmICghYXR0YWNoZWQgfHwgIWF0dGFjaGVkLnF1ZXVlKSB7XG4gICAgYXR0YWNoZWQgPSBtc2cuX19vbkZpbmlzaGVkID0gY3JlYXRlTGlzdGVuZXIobXNnKVxuICAgIGF0dGFjaEZpbmlzaGVkTGlzdGVuZXIobXNnLCBhdHRhY2hlZClcbiAgfVxuXG4gIGF0dGFjaGVkLnF1ZXVlLnB1c2gobGlzdGVuZXIpXG59XG5cbi8qKlxuICogQ3JlYXRlIGxpc3RlbmVyIG9uIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG1zZ1xuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUxpc3RlbmVyKG1zZykge1xuICBmdW5jdGlvbiBsaXN0ZW5lcihlcnIpIHtcbiAgICBpZiAobXNnLl9fb25GaW5pc2hlZCA9PT0gbGlzdGVuZXIpIG1zZy5fX29uRmluaXNoZWQgPSBudWxsXG4gICAgaWYgKCFsaXN0ZW5lci5xdWV1ZSkgcmV0dXJuXG5cbiAgICB2YXIgcXVldWUgPSBsaXN0ZW5lci5xdWV1ZVxuICAgIGxpc3RlbmVyLnF1ZXVlID0gbnVsbFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgcXVldWVbaV0oZXJyLCBtc2cpXG4gICAgfVxuICB9XG5cbiAgbGlzdGVuZXIucXVldWUgPSBbXVxuXG4gIHJldHVybiBsaXN0ZW5lclxufVxuXG4vKipcbiAqIFBhdGNoIFNlcnZlclJlc3BvbnNlLnByb3RvdHlwZS5hc3NpZ25Tb2NrZXQgZm9yIG5vZGUuanMgMC44LlxuICpcbiAqIEBwYXJhbSB7U2VydmVyUmVzcG9uc2V9IHJlc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGF0Y2hBc3NpZ25Tb2NrZXQocmVzLCBjYWxsYmFjaykge1xuICB2YXIgYXNzaWduU29ja2V0ID0gcmVzLmFzc2lnblNvY2tldFxuXG4gIGlmICh0eXBlb2YgYXNzaWduU29ja2V0ICE9PSAnZnVuY3Rpb24nKSByZXR1cm5cblxuICAvLyByZXMub24oJ3NvY2tldCcsIGNhbGxiYWNrKSBpcyBicm9rZW4gaW4gMC44XG4gIHJlcy5hc3NpZ25Tb2NrZXQgPSBmdW5jdGlvbiBfYXNzaWduU29ja2V0KHNvY2tldCkge1xuICAgIGFzc2lnblNvY2tldC5jYWxsKHRoaXMsIHNvY2tldClcbiAgICBjYWxsYmFjayhzb2NrZXQpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9vbi1maW5pc2hlZC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBlbmNvZGV1cmxcbiAqIENvcHlyaWdodChjKSAyMDE2IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVuY29kZVVybFxuXG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCBub24tVVJMIGNvZGUgcG9pbnRzLCAqYWZ0ZXIqIGVuY29kaW5nIChpLmUuIG5vdCBpbmNsdWRpbmcgXCIlXCIpXG4gKiBhbmQgaW5jbHVkaW5nIGludmFsaWQgZXNjYXBlIHNlcXVlbmNlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIEVOQ09ERV9DSEFSU19SRUdFWFAgPSAvKD86W15cXHgyMVxceDI1XFx4MjYtXFx4M0JcXHgzRFxceDNGLVxceDVCXFx4NURcXHg1RlxceDYxLVxceDdBXFx4N0VdfCUoPzpbXjAtOUEtRmEtZl18WzAtOUEtRmEtZl1bXjAtOUEtRmEtZl18JCkpKy9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpci5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIFVOTUFUQ0hFRF9TVVJST0dBVEVfUEFJUl9SRUdFWFAgPSAvKF58W15cXHVEODAwLVxcdURCRkZdKVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdKFteXFx1REMwMC1cXHVERkZGXXwkKS9nXG5cbi8qKlxuICogU3RyaW5nIHRvIHJlcGxhY2UgdW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyIHdpdGguXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBVTk1BVENIRURfU1VSUk9HQVRFX1BBSVJfUkVQTEFDRSA9ICckMVxcdUZGRkQkMidcblxuLyoqXG4gKiBFbmNvZGUgYSBVUkwgdG8gYSBwZXJjZW50LWVuY29kZWQgZm9ybSwgZXhjbHVkaW5nIGFscmVhZHktZW5jb2RlZCBzZXF1ZW5jZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgYW4gYWxyZWFkeS1lbmNvZGVkIFVSTCBhbmQgZW5jb2RlIGFsbCB0aGUgbm9uLVVSTFxuICogY29kZSBwb2ludHMuIFRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZW5jb2RlIHRoZSBcIiVcIiBjaGFyYWN0ZXIgdW5sZXNzIGl0IGlzXG4gKiBub3QgcGFydCBvZiBhIHZhbGlkIHNlcXVlbmNlIChgJTIwYCB3aWxsIGJlIGxlZnQgYXMtaXMsIGJ1dCBgJWZvb2Agd2lsbFxuICogYmUgZW5jb2RlZCBhcyBgJTI1Zm9vYCkuXG4gKlxuICogVGhpcyBlbmNvZGUgaXMgbWVhbnQgdG8gYmUgXCJzYWZlXCIgYW5kIGRvZXMgbm90IHRocm93IGVycm9ycy4gSXQgd2lsbCB0cnkgYXNcbiAqIGhhcmQgYXMgaXQgY2FuIHRvIHByb3Blcmx5IGVuY29kZSB0aGUgZ2l2ZW4gVVJMLCBpbmNsdWRpbmcgcmVwbGFjaW5nIGFueSByYXcsXG4gKiB1bnBhaXJlZCBzdXJyb2dhdGUgcGFpcnMgd2l0aCB0aGUgVW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgcHJpb3IgdG9cbiAqIGVuY29kaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlbmNvZGVVcmwgKHVybCkge1xuICByZXR1cm4gU3RyaW5nKHVybClcbiAgICAucmVwbGFjZShVTk1BVENIRURfU1VSUk9HQVRFX1BBSVJfUkVHRVhQLCBVTk1BVENIRURfU1VSUk9HQVRFX1BBSVJfUkVQTEFDRSlcbiAgICAucmVwbGFjZShFTkNPREVfQ0hBUlNfUkVHRVhQLCBlbmNvZGVVUkkpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZW5jb2RldXJsL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGVzY2FwZS1odG1sXG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBBbmRyZWFzIEx1YmJlXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBUaWFuY2hlbmcgXCJUaW1vdGh5XCIgR3VcbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgbWF0Y2hIdG1sUmVnRXhwID0gL1tcIicmPD5dLztcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVzY2FwZUh0bWw7XG5cbi8qKlxuICogRXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgZ2l2ZW4gc3RyaW5nIG9mIGh0bWwuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBlc2NhcGUgZm9yIGluc2VydGluZyBpbnRvIEhUTUxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlc2NhcGVIdG1sKHN0cmluZykge1xuICB2YXIgc3RyID0gJycgKyBzdHJpbmc7XG4gIHZhciBtYXRjaCA9IG1hdGNoSHRtbFJlZ0V4cC5leGVjKHN0cik7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICB2YXIgZXNjYXBlO1xuICB2YXIgaHRtbCA9ICcnO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFzdEluZGV4ID0gMDtcblxuICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7XG4gICAgICBjYXNlIDM0OiAvLyBcIlxuICAgICAgICBlc2NhcGUgPSAnJnF1b3Q7JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OiAvLyAmXG4gICAgICAgIGVzY2FwZSA9ICcmYW1wOyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOTogLy8gJ1xuICAgICAgICBlc2NhcGUgPSAnJiMzOTsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNjA6IC8vIDxcbiAgICAgICAgZXNjYXBlID0gJyZsdDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNjI6IC8vID5cbiAgICAgICAgZXNjYXBlID0gJyZndDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsYXN0SW5kZXggIT09IGluZGV4KSB7XG4gICAgICBodG1sICs9IHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCk7XG4gICAgfVxuXG4gICAgbGFzdEluZGV4ID0gaW5kZXggKyAxO1xuICAgIGh0bWwgKz0gZXNjYXBlO1xuICB9XG5cbiAgcmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXhcbiAgICA/IGh0bWwgKyBzdHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpXG4gICAgOiBodG1sO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2VzY2FwZS1odG1sL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCdcblxuLyoqXG4gKiBFeHBvc2UgYGFycmF5RmxhdHRlbmAuXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlGbGF0dGVuXG5cbi8qKlxuICogUmVjdXJzaXZlIGZsYXR0ZW4gZnVuY3Rpb24gd2l0aCBkZXB0aC5cbiAqXG4gKiBAcGFyYW0gIHtBcnJheX0gIGFycmF5XG4gKiBAcGFyYW0gIHtBcnJheX0gIHJlc3VsdFxuICogQHBhcmFtICB7TnVtYmVyfSBkZXB0aFxuICogQHJldHVybiB7QXJyYXl9XG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5XaXRoRGVwdGggKGFycmF5LCByZXN1bHQsIGRlcHRoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpXVxuXG4gICAgaWYgKGRlcHRoID4gMCAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgZmxhdHRlbldpdGhEZXB0aCh2YWx1ZSwgcmVzdWx0LCBkZXB0aCAtIDEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmUgZmxhdHRlbiBmdW5jdGlvbi4gT21pdHRpbmcgZGVwdGggaXMgc2xpZ2h0bHkgZmFzdGVyLlxuICpcbiAqIEBwYXJhbSAge0FycmF5fSBhcnJheVxuICogQHBhcmFtICB7QXJyYXl9IHJlc3VsdFxuICogQHJldHVybiB7QXJyYXl9XG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5Gb3JldmVyIChhcnJheSwgcmVzdWx0KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpXVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBmbGF0dGVuRm9yZXZlcih2YWx1ZSwgcmVzdWx0KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogRmxhdHRlbiBhbiBhcnJheSwgd2l0aCB0aGUgYWJpbGl0eSB0byBkZWZpbmUgYSBkZXB0aC5cbiAqXG4gKiBAcGFyYW0gIHtBcnJheX0gIGFycmF5XG4gKiBAcGFyYW0gIHtOdW1iZXJ9IGRlcHRoXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqL1xuZnVuY3Rpb24gYXJyYXlGbGF0dGVuIChhcnJheSwgZGVwdGgpIHtcbiAgaWYgKGRlcHRoID09IG51bGwpIHtcbiAgICByZXR1cm4gZmxhdHRlbkZvcmV2ZXIoYXJyYXksIFtdKVxuICB9XG5cbiAgcmV0dXJuIGZsYXR0ZW5XaXRoRGVwdGgoYXJyYXksIFtdLCBkZXB0aClcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9hcnJheS1mbGF0dGVuL2FycmF5LWZsYXR0ZW4uanNcbi8vIG1vZHVsZSBpZCA9IDQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImh0dHBcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJodHRwXCJcbi8vIG1vZHVsZSBpZCA9IDQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogTWVyZ2Ugb2JqZWN0IGIgd2l0aCBvYmplY3QgYS5cbiAqXG4gKiAgICAgdmFyIGEgPSB7IGZvbzogJ2JhcicgfVxuICogICAgICAgLCBiID0geyBiYXI6ICdiYXonIH07XG4gKlxuICogICAgIG1lcmdlKGEsIGIpO1xuICogICAgIC8vID0+IHsgZm9vOiAnYmFyJywgYmFyOiAnYmF6JyB9XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGFcbiAqIEBwYXJhbSB7T2JqZWN0fSBiXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGEsIGIpe1xuICBpZiAoYSAmJiBiKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGIpIHtcbiAgICAgIGFba2V5XSA9IGJba2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGE7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3V0aWxzLW1lcmdlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA0MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJjcnlwdG9cIlxuLy8gbW9kdWxlIGlkID0gNDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qc1xuLy8gbW9kdWxlIGlkID0gNDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGRlZiA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHtcbiAgaWYgKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpIGRlZihpdCwgVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZyB9KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzXG4vLyBtb2R1bGUgaWQgPSA0NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vZ2V0LWl0ZXJhdG9yXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9nZXQtaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImV2ZW50c1wiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcImV2ZW50c1wiXG4vLyBtb2R1bGUgaWQgPSA0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1dGlsXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwidXRpbFwiXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IFtbXCIwXCIsXCJcXHUwMDAwXCIsMTI3LFwi4oKsXCJdLFtcIjgxNDBcIixcIuS4guS4hOS4heS4huS4j+S4kuS4l+S4n+S4oOS4oeS4o+S4puS4qeS4ruS4r+S4seS4s+S4teS4t+S4vOS5gOS5geS5guS5hOS5huS5iuS5keS5leS5l+S5muS5m+S5ouS5o+S5pOS5peS5p+S5qOS5qlwiLDUsXCLkubLkubRcIiw5LFwi5Lm/XCIsNixcIuS6h+S6ilwiXSxbXCI4MTgwXCIsXCLkupDkupbkupfkupnkupzkup3kup7kuqPkuqrkuq/kurDkurHkurTkurbkurfkurjkurnkurzkur3kur7ku4jku4zku4/ku5Dku5Lku5rku5vku5zku6Dku6Lku6bku6fku6nku63ku67ku6/ku7Hku7Tku7jku7nku7rku7zku77kvIDkvIJcIiw2LFwi5LyL5LyM5LySXCIsNCxcIuS8nOS8neS8oeS8o+S8qOS8qeS8rOS8reS8ruS8seS8s+S8teS8t+S8ueS8u+S8vlwiLDQsXCLkvYTkvYXkvYdcIiw1LFwi5L2S5L2U5L2W5L2h5L2i5L2m5L2o5L2q5L2r5L2t5L2u5L2x5L2y5L215L235L245L255L265L295L6A5L6B5L6C5L6F5L6G5L6H5L6K5L6M5L6O5L6Q5L6S5L6T5L6V5L6W5L6Y5L6Z5L6a5L6c5L6e5L6f5L6h5L6iXCJdLFtcIjgyNDBcIixcIuS+pOS+q+S+reS+sFwiLDQsXCLkvrZcIiw4LFwi5L+A5L+B5L+C5L+G5L+H5L+I5L+J5L+L5L+M5L+N5L+SXCIsNCxcIuS/meS/m+S/oOS/ouS/pOS/peS/p+S/q+S/rOS/sOS/suS/tOS/teS/tuS/t+S/ueS/u+S/vOS/veS/v1wiLDExXSxbXCI4MjgwXCIsXCLlgIvlgI7lgJDlgJHlgJPlgJXlgJblgJflgJvlgJ3lgJ7lgKDlgKLlgKPlgKTlgKflgKvlgK9cIiwxMCxcIuWAu+WAveWAv+WBgOWBgeWBguWBhOWBheWBhuWBieWBiuWBi+WBjeWBkFwiLDQsXCLlgZblgZflgZjlgZnlgZvlgZ1cIiw3LFwi5YGmXCIsNSxcIuWBrVwiLDgsXCLlgbjlgbnlgbrlgbzlgb3lgoHlgoLlgoPlgoTlgoblgoflgonlgorlgovlgozlgo5cIiwyMCxcIuWCpOWCpuWCquWCq+WCrVwiLDQsXCLlgrNcIiw2LFwi5YK8XCJdLFtcIjgzNDBcIixcIuWCvVwiLDE3LFwi5YOQXCIsNSxcIuWDl+WDmOWDmeWDm1wiLDEwLFwi5YOo5YOp5YOq5YOr5YOv5YOw5YOx5YOy5YO05YO2XCIsNCxcIuWDvFwiLDksXCLlhIhcIl0sW1wiODM4MFwiLFwi5YSJ5YSK5YSMXCIsNSxcIuWEk1wiLDEzLFwi5YSiXCIsMjgsXCLlhYLlhYflhYrlhYzlhY7lhY/lhZDlhZLlhZPlhZflhZjlhZnlhZvlhZ1cIiw0LFwi5YWj5YWk5YWm5YWn5YWp5YWq5YWv5YWy5YW65YW+5YW/5YaD5YaE5YaG5YaH5YaK5YaL5YaO5YaP5YaQ5YaR5YaT5YaU5YaY5Yaa5Yad5Yae5Yaf5Yah5Yaj5YamXCIsNCxcIuWGreWGruWGtOWGuOWGueWGuuWGvuWGv+WHgeWHguWHg+WHheWHiOWHiuWHjeWHjuWHkOWHklwiLDVdLFtcIjg0NDBcIixcIuWHmOWHmeWHmuWHnOWHnuWHn+WHouWHo+WHpVwiLDUsXCLlh6zlh67lh7Hlh7Llh7Tlh7flh77liITliIXliInliIvliIzliI/liJDliJPliJTliJXliJzliJ7liJ/liKHliKLliKPliKXliKbliKfliKrliKzliK/liLHliLLliLTliLXliLzliL7liYRcIiw1LFwi5YmL5YmO5YmP5YmS5YmT5YmV5YmX5YmYXCJdLFtcIjg0ODBcIixcIuWJmeWJmuWJm+WJneWJn+WJoOWJouWJo+WJpOWJpuWJqOWJq+WJrOWJreWJruWJsOWJseWJs1wiLDksXCLlib7lioDlioNcIiw0LFwi5YqJXCIsNixcIuWKkeWKkuWKlFwiLDYsXCLlipzliqTliqXliqbliqfliq7liq/lirDlirRcIiw5LFwi5YuA5YuB5YuC5YuE5YuF5YuG5YuI5YuK5YuM5YuN5YuO5YuP5YuR5YuT5YuU5YuV5YuX5YuZXCIsNSxcIuWLoOWLoeWLouWLo+WLpVwiLDEwLFwi5YuxXCIsNyxcIuWLu+WLvOWLveWMgeWMguWMg+WMhOWMh+WMieWMiuWMi+WMjOWMjlwiXSxbXCI4NTQwXCIsXCLljJHljJLljJPljJTljJjljJvljJzljJ7ljJ/ljKLljKTljKXljKfljKjljKnljKvljKzljK3ljK9cIiw5LFwi5Yy85Yy95Y2A5Y2C5Y2E5Y2G5Y2L5Y2M5Y2N5Y2Q5Y2U5Y2Y5Y2Z5Y2b5Y2d5Y2l5Y2o5Y2q5Y2s5Y2t5Y2y5Y225Y255Y275Y285Y295Y2+5Y6A5Y6B5Y6D5Y6H5Y6I5Y6K5Y6O5Y6PXCJdLFtcIjg1ODBcIixcIuWOkFwiLDQsXCLljpbljpfljpnljpvljpzljp7ljqDljqHljqTljqfljqrljqvljqzljq3ljq9cIiw2LFwi5Y635Y645Y655Y665Y685Y695Y6+5Y+A5Y+DXCIsNCxcIuWPjuWPj+WPkOWPkuWPk+WPleWPmuWPnOWPneWPnuWPoeWPouWPp+WPtOWPuuWPvuWPv+WQgOWQguWQheWQh+WQi+WQlOWQmOWQmeWQmuWQnOWQouWQpOWQpeWQquWQsOWQs+WQtuWQt+WQuuWQveWQv+WRgeWRguWRhOWRheWRh+WRieWRjOWRjeWRjuWRj+WRkeWRmuWRnVwiLDQsXCLlkaPlkaXlkaflkalcIiw3LFwi5ZG05ZG55ZG65ZG+5ZG/5ZKB5ZKD5ZKF5ZKH5ZKI5ZKJ5ZKK5ZKN5ZKR5ZKT5ZKX5ZKY5ZKc5ZKe5ZKf5ZKg5ZKhXCJdLFtcIjg2NDBcIixcIuWSouWSpeWSruWSsOWSsuWSteWStuWSt+WSueWSuuWSvOWSvuWTg+WTheWTiuWTi+WTluWTmOWTm+WToFwiLDQsXCLlk6vlk6zlk6/lk7Dlk7Hlk7RcIiw1LFwi5ZO75ZO+5ZSA5ZSC5ZSD5ZSE5ZSF5ZSI5ZSKXCIsNCxcIuWUkuWUk+WUlVwiLDUsXCLllJzllJ3llJ7llJ/llKHllKXllKZcIl0sW1wiODY4MFwiLFwi5ZSo5ZSp5ZSr5ZSt5ZSy5ZS05ZS15ZS25ZS45ZS55ZS65ZS75ZS95ZWA5ZWC5ZWF5ZWH5ZWI5ZWLXCIsNCxcIuWVkeWVkuWVk+WVlOWVl1wiLDQsXCLllZ3llZ7llZ/llaDllaLllaPllajllanllavlla9cIiw1LFwi5ZW55ZW65ZW95ZW/5ZaF5ZaG5ZaM5ZaN5ZaO5ZaQ5ZaS5ZaT5ZaV5ZaW5ZaX5Zaa5Zab5Zae5ZagXCIsNixcIuWWqFwiLDgsXCLllrLllrTllrbllrjllrrllrzllr9cIiw0LFwi5ZeG5ZeH5ZeI5ZeK5ZeL5ZeO5ZeP5ZeQ5ZeV5ZeXXCIsNCxcIuWXnuWXoOWXouWXp+WXqeWXreWXruWXsOWXseWXtOWXtuWXuFwiLDQsXCLll7/lmILlmIPlmITlmIVcIl0sW1wiODc0MFwiLFwi5ZiG5ZiH5ZiK5ZiL5ZiN5ZiQXCIsNyxcIuWYmeWYmuWYnOWYneWYoOWYoeWYouWYpeWYpuWYqOWYqeWYquWYq+WYruWYr+WYsOWYs+WYteWYt+WYuOWYuuWYvOWYveWYvuWZgFwiLDExLFwi5ZmPXCIsNCxcIuWZleWZluWZmuWZm+WZnVwiLDRdLFtcIjg3ODBcIixcIuWZo+WZpeWZpuWZp+WZreWZruWZr+WZsOWZsuWZs+WZtOWZteWZt+WZuOWZueWZuuWZvVwiLDcsXCLlmodcIiw2LFwi5ZqQ5ZqR5ZqS5ZqUXCIsMTQsXCLlmqRcIiwxMCxcIuWasFwiLDYsXCLlmrjlmrnlmrrlmrvlmr1cIiwxMixcIuWbi1wiLDgsXCLlm5Xlm5blm5jlm5nlm5zlm6Plm6VcIiw1LFwi5Zus5Zuu5Zuv5Zuy5Zuz5Zu25Zu35Zu45Zu75Zu85ZyA5ZyB5ZyC5ZyF5ZyH5ZyLXCIsNl0sW1wiODg0MFwiLFwi5ZySXCIsOSxcIuWcneWcnuWcoOWcoeWcouWcpOWcpeWcpuWcp+Wcq+WcseWcsuWctFwiLDQsXCLlnLzlnL3lnL/lnYHlnYPlnYTlnYXlnYblnYjlnYnlnYvlnZJcIiw0LFwi5Z2Y5Z2Z5Z2i5Z2j5Z2l5Z2n5Z2s5Z2u5Z2w5Z2x5Z2y5Z205Z215Z245Z255Z265Z295Z2+5Z2/5Z6AXCJdLFtcIjg4ODBcIixcIuWegeWeh+WeiOWeieWeiuWejVwiLDQsXCLlnpRcIiw2LFwi5Z6c5Z6d5Z6e5Z6f5Z6l5Z6o5Z6q5Z6s5Z6v5Z6w5Z6x5Z6z5Z615Z625Z635Z65XCIsOCxcIuWfhFwiLDYsXCLln4zln43ln5Dln5Hln5Pln5bln5fln5vln5zln57ln6Hln6Lln6Pln6VcIiw3LFwi5Z+u5Z+w5Z+x5Z+y5Z+z5Z+15Z+25Z+35Z+75Z+85Z++5Z+/5aCB5aCD5aCE5aCF5aCI5aCJ5aCK5aCM5aCO5aCP5aCQ5aCS5aCT5aCU5aCW5aCX5aCY5aCa5aCb5aCc5aCd5aCf5aCi5aCj5aClXCIsNCxcIuWgq1wiLDQsXCLloLHloLLloLPloLTloLZcIiw3XSxbXCI4OTQwXCIsXCLloL5cIiw1LFwi5aGFXCIsNixcIuWhjuWhj+WhkOWhkuWhk+WhleWhluWhl+WhmVwiLDQsXCLloZ9cIiw1LFwi5aGmXCIsNCxcIuWhrVwiLDE2LFwi5aG/5aKC5aKE5aKG5aKH5aKI5aKK5aKL5aKMXCJdLFtcIjg5ODBcIixcIuWijVwiLDQsXCLlopRcIiw0LFwi5aKb5aKc5aKd5aKgXCIsNyxcIuWiqlwiLDE3LFwi5aK95aK+5aK/5aOA5aOC5aOD5aOE5aOGXCIsMTAsXCLlo5Llo5Plo5Tlo5ZcIiwxMyxcIuWjpVwiLDUsXCLlo63lo6/lo7Hlo7Llo7Tlo7Xlo7flo7jlo7pcIiw3LFwi5aSD5aSF5aSG5aSIXCIsNCxcIuWkjuWkkOWkkeWkkuWkk+Wkl+WkmOWkm+WkneWknuWkoOWkoeWkouWko+WkpuWkqOWkrOWksOWksuWks+WkteWktuWku1wiXSxbXCI4YTQwXCIsXCLlpL3lpL7lpL/lpYDlpYPlpYXlpYblpYrlpYzlpY3lpZDlpZLlpZPlpZnlpZtcIiw0LFwi5aWh5aWj5aWk5aWmXCIsMTIsXCLlpbXlpbflpbrlpbvlpbzlpb7lpb/lpoDlpoXlponlpovlpozlpo7lpo/lppDlppHlppTlppXlppjlpprlppvlppzlpp3lpp/lpqDlpqHlpqLlpqZcIl0sW1wiOGE4MFwiLFwi5aan5aas5aat5aaw5aax5aazXCIsNSxcIuWmuuWmvOWmveWmv1wiLDYsXCLlp4flp4jlp4nlp4zlp43lp47lp4/lp5Xlp5blp5nlp5vlp55cIiw0LFwi5aek5aem5aen5aep5aeq5aer5aetXCIsMTEsXCLlp7rlp7zlp73lp77lqIDlqILlqIrlqIvlqI3lqI7lqI/lqJDlqJLlqJTlqJXlqJblqJflqJnlqJrlqJvlqJ3lqJ7lqKHlqKLlqKTlqKblqKflqKjlqKpcIiw2LFwi5aiz5ai15ai3XCIsNCxcIuWoveWovuWov+WpgVwiLDQsXCLlqYflqYjlqYtcIiw5LFwi5amW5amX5amY5amZ5ambXCIsNV0sW1wiOGI0MFwiLFwi5amh5amj5amk5aml5amm5amo5amp5amrXCIsOCxcIuWpuOWpueWpu+WpvOWpveWpvuWqgFwiLDE3LFwi5aqTXCIsNixcIuWqnFwiLDEzLFwi5aqr5aqsXCJdLFtcIjhiODBcIixcIuWqrVwiLDQsXCLlqrTlqrblqrflqrlcIiw0LFwi5aq/5auA5auDXCIsNSxcIuWriuWri+WrjVwiLDQsXCLlq5Plq5Xlq5flq5nlq5rlq5vlq53lq57lq5/lq6Llq6Tlq6Xlq6flq6jlq6rlq6xcIiw0LFwi5auyXCIsMjIsXCLlrIpcIiwxMSxcIuWsmFwiLDI1LFwi5ayz5ay15ay25ay4XCIsNyxcIuWtgVwiLDZdLFtcIjhjNDBcIixcIuWtiFwiLDcsXCLlrZLlrZblrZ7lraDlraHlraflrajlravlra3lra7lra/lrbLlrbTlrbblrbflrbjlrbnlrbvlrbzlrb7lrb/lroLlroblrorlro3lro7lrpDlrpHlrpLlrpTlrpblrp/lrqflrqjlrqnlrqzlrq3lrq7lrq/lrrHlrrLlrrflrrrlrrvlrrzlr4Dlr4Hlr4Plr4jlr4nlr4rlr4vlr43lr47lr49cIl0sW1wiOGM4MFwiLFwi5a+R5a+UXCIsOCxcIuWvoOWvouWvo+WvpuWvp+WvqVwiLDQsXCLlr6/lr7FcIiw2LFwi5a+95a++5bCA5bCC5bCD5bCF5bCH5bCI5bCL5bCM5bCN5bCO5bCQ5bCS5bCT5bCX5bCZ5bCb5bCe5bCf5bCg5bCh5bCj5bCm5bCo5bCp5bCq5bCr5bCt5bCu5bCv5bCw5bCy5bCz5bC15bC25bC35bGD5bGE5bGG5bGH5bGM5bGN5bGS5bGT5bGU5bGW5bGX5bGY5bGa5bGb5bGc5bGd5bGf5bGi5bGk5bGnXCIsNixcIuWxsOWxslwiLDYsXCLlsbvlsbzlsb3lsb7lsoDlsoNcIiw0LFwi5bKJ5bKK5bKL5bKO5bKP5bKS5bKT5bKV5bKdXCIsNCxcIuWypFwiLDRdLFtcIjhkNDBcIixcIuWyquWyruWyr+WysOWysuWytOWytuWyueWyuuWyu+WyvOWyvuWzgOWzguWzg+WzhVwiLDUsXCLls4xcIiw1LFwi5bOTXCIsNSxcIuWzmlwiLDYsXCLls6Lls6Pls6fls6nls6vls6zls67ls6/ls7FcIiw5LFwi5bO8XCIsNF0sW1wiOGQ4MFwiLFwi5bSB5bSE5bSF5bSIXCIsNSxcIuW0j1wiLDQsXCLltJXltJfltJjltJnltJrltJzltJ3ltJ9cIiw0LFwi5bSl5bSo5bSq5bSr5bSs5bSvXCIsNCxcIuW0tVwiLDcsXCLltL9cIiw3LFwi5bWI5bWJ5bWNXCIsMTAsXCLltZnltZrltZzltZ5cIiwxMCxcIuW1quW1reW1ruW1sOW1seW1suW1s+W1tVwiLDEyLFwi5baDXCIsMjEsXCLltprltpvltpzltp7ltp/ltqBcIl0sW1wiOGU0MFwiLFwi5bahXCIsMjEsXCLltrhcIiwxMixcIuW3hlwiLDYsXCLlt45cIiwxMixcIuW3nOW3n+W3oOW3o+W3pOW3quW3rOW3rVwiXSxbXCI4ZTgwXCIsXCLlt7Dlt7Xlt7blt7hcIiw0LFwi5be/5biA5biE5biH5biJ5biK5biL5biN5biO5biS5biT5biX5bieXCIsNyxcIuW4qFwiLDQsXCLluK/luLDluLJcIiw0LFwi5bi55bi65bi+5bi/5bmA5bmB5bmD5bmGXCIsNSxcIuW5jVwiLDYsXCLluZZcIiw0LFwi5bmc5bmd5bmf5bmg5bmjXCIsMTQsXCLlubXlubflubnlub7luoHluoLluoPluoXluojluonluozluo3luo7lupLlupjlupvlup3luqHluqLluqPluqTluqhcIiw0LFwi5bquXCIsNCxcIuW6tOW6uuW6u+W6vOW6veW6v1wiLDZdLFtcIjhmNDBcIixcIuW7huW7h+W7iOW7i1wiLDUsXCLlu5Tlu5Xlu5flu5jlu5nlu5rlu5xcIiwxMSxcIuW7qeW7q1wiLDgsXCLlu7Xlu7jlu7nlu7vlu7zlu73lvIXlvIblvIflvInlvIzlvI3lvI7lvJDlvJLlvJTlvJblvJnlvJrlvJzlvJ3lvJ7lvKHlvKLlvKPlvKRcIl0sW1wiOGY4MFwiLFwi5byo5byr5bys5byu5byw5byyXCIsNixcIuW8u+W8veW8vuW8v+W9gVwiLDE0LFwi5b2R5b2U5b2Z5b2a5b2b5b2c5b2e5b2f5b2g5b2j5b2l5b2n5b2o5b2r5b2u5b2v5b2y5b205b215b225b245b265b295b2+5b2/5b6D5b6G5b6N5b6O5b6P5b6R5b6T5b6U5b6W5b6a5b6b5b6d5b6e5b6f5b6g5b6iXCIsNSxcIuW+qeW+q+W+rOW+r1wiLDUsXCLlvrblvrjlvrnlvrrlvrvlvr5cIiw0LFwi5b+H5b+I5b+K5b+L5b+O5b+T5b+U5b+V5b+a5b+b5b+c5b+e5b+f5b+i5b+j5b+l5b+m5b+o5b+p5b+s5b+v5b+w5b+y5b+z5b+05b+25b+35b+55b+65b+85oCHXCJdLFtcIjkwNDBcIixcIuaAiOaAieaAi+aAjOaAkOaAkeaAk+aAl+aAmOaAmuaAnuaAn+aAouaAo+aApOaArOaAreaAruaAsFwiLDQsXCLmgLZcIiw0LFwi5oC95oC+5oGA5oGEXCIsNixcIuaBjOaBjuaBj+aBkeaBk+aBlOaBluaBl+aBmOaBm+aBnOaBnuaBn+aBoOaBoeaBpeaBpuaBruaBseaBsuaBtOaBteaBt+aBvuaCgFwiXSxbXCI5MDgwXCIsXCLmgoHmgoLmgoXmgobmgofmgojmgormgovmgo7mgo/mgpDmgpHmgpPmgpXmgpfmgpjmgpnmgpzmgp7mgqHmgqLmgqTmgqXmgqfmgqnmgqrmgq7mgrDmgrPmgrXmgrbmgrfmgrnmgrrmgr1cIiw3LFwi5oOH5oOI5oOJ5oOMXCIsNCxcIuaDkuaDk+aDlOaDluaDl+aDmeaDm+aDnuaDoVwiLDQsXCLmg6rmg7Hmg7Lmg7Xmg7fmg7jmg7tcIiw0LFwi5oSC5oSD5oSE5oSF5oSH5oSK5oSL5oSM5oSQXCIsNCxcIuaEluaEl+aEmOaEmeaEm+aEnOaEneaEnuaEoeaEouaEpeaEqOaEqeaEquaErFwiLDE4LFwi5oWAXCIsNl0sW1wiOTE0MFwiLFwi5oWH5oWJ5oWL5oWN5oWP5oWQ5oWS5oWT5oWU5oWWXCIsNixcIuaFnuaFn+aFoOaFoeaFo+aFpOaFpeaFpuaFqVwiLDYsXCLmhbHmhbLmhbPmhbTmhbbmhbhcIiwxOCxcIuaGjOaGjeaGj1wiLDQsXCLmhpVcIl0sW1wiOTE4MFwiLFwi5oaWXCIsNixcIuaGnlwiLDgsXCLmhqrmhqvmhq1cIiw5LFwi5oa4XCIsNSxcIuaGv+aHgOaHgeaHg1wiLDQsXCLmh4nmh4xcIiw0LFwi5oeT5oeVXCIsMTYsXCLmh6dcIiwxMyxcIuaHtlwiLDgsXCLmiIBcIiw1LFwi5oiH5oiJ5oiT5oiU5oiZ5oic5oid5oie5oig5oij5oim5oin5oio5oip5oir5oit5oiv5oiw5oix5oiy5oi15oi25oi4XCIsNCxcIuaJguaJhOaJheaJhuaJilwiXSxbXCI5MjQwXCIsXCLmiY/miZDmiZXmiZbmiZfmiZnmiZrmiZxcIiw2LFwi5omk5oml5omo5omx5omy5om05om15om35om45om65om75om95oqB5oqC5oqD5oqF5oqG5oqH5oqI5oqLXCIsNSxcIuaKlOaKmeaKnOaKneaKnuaKo+aKpuaKp+aKqeaKquaKreaKruaKr+aKsOaKsuaKs+aKtOaKtuaKt+aKuOaKuuaKvuaLgOaLgVwiXSxbXCI5MjgwXCIsXCLmi4Pmi4vmi4/mi5Hmi5Xmi53mi57mi6Dmi6Hmi6Tmi6rmi6vmi7Dmi7Lmi7Xmi7jmi7nmi7rmi7vmjIDmjIPmjITmjIXmjIbmjIrmjIvmjIzmjI3mjI/mjJDmjJLmjJPmjJTmjJXmjJfmjJjmjJnmjJzmjKbmjKfmjKnmjKzmjK3mjK7mjLDmjLHmjLNcIiw1LFwi5oy75oy85oy+5oy/5o2A5o2B5o2E5o2H5o2I5o2K5o2R5o2S5o2T5o2U5o2WXCIsNyxcIuaNoOaNpOaNpeaNpuaNqOaNquaNq+aNrOaNr+aNsOaNsuaNs+aNtOaNteaNuOaNueaNvOaNveaNvuaNv+aOgeaOg+aOhOaOheaOhuaOi+aOjeaOkeaOk+aOlOaOleaOl+aOmVwiLDYsXCLmjqHmjqTmjqbmjqvmjq/mjrHmjrLmjrXmjrbmjrnmjrvmjr3mjr/mj4BcIl0sW1wiOTM0MFwiLFwi5o+B5o+C5o+D5o+F5o+H5o+I5o+K5o+L5o+M5o+R5o+T5o+U5o+V5o+XXCIsNixcIuaPn+aPouaPpFwiLDQsXCLmj6vmj6zmj67mj6/mj7Dmj7Hmj7Pmj7Xmj7fmj7nmj7rmj7vmj7zmj77mkIPmkITmkIZcIiw0LFwi5pCN5pCO5pCR5pCS5pCVXCIsNSxcIuaQneaQn+aQouaQo+aQpFwiXSxbXCI5MzgwXCIsXCLmkKXmkKfmkKjmkKnmkKvmkK5cIiw1LFwi5pC1XCIsNCxcIuaQu+aQvOaQvuaRgOaRguaRg+aRieaRi1wiLDYsXCLmkZPmkZXmkZbmkZfmkZlcIiw0LFwi5pGfXCIsNyxcIuaRqOaRquaRq+aRrOaRrlwiLDksXCLmkbtcIiw2LFwi5pKD5pKG5pKIXCIsOCxcIuaSk+aSlOaSl+aSmOaSmuaSm+aSnOaSneaSn1wiLDQsXCLmkqXmkqbmkqfmkqjmkqrmkqvmkq/mkrHmkrLmkrPmkrTmkrbmkrnmkrvmkr3mkr7mkr/mk4Hmk4Pmk4Tmk4ZcIiw2LFwi5pOP5pOR5pOT5pOU5pOV5pOW5pOZ5pOaXCJdLFtcIjk0NDBcIixcIuaTm+aTnOaTneaTn+aToOaToeaTo+aTpeaTp1wiLDI0LFwi5pSBXCIsNyxcIuaUilwiLDcsXCLmlJNcIiw0LFwi5pSZXCIsOF0sW1wiOTQ4MFwiLFwi5pSi5pSj5pSk5pSmXCIsNCxcIuaUrOaUreaUsOaUseaUsuaUs+aUt+aUuuaUvOaUveaVgFwiLDQsXCLmlYbmlYfmlYrmlYvmlY3mlY7mlZDmlZLmlZPmlZTmlZfmlZjmlZrmlZzmlZ/mlaDmlaHmlaTmlaXmlafmlajmlanmlarmla3mla7mla/mlbHmlbPmlbXmlbbmlbhcIiwxNCxcIuaWiOaWieaWiuaWjeaWjuaWj+aWkuaWlOaWleaWluaWmOaWmuaWneaWnuaWoOaWouaWo+aWpuaWqOaWquaWrOaWruaWsVwiLDcsXCLmlrrmlrvmlr7mlr/ml4Dml4Lml4fml4jml4nml4rml43ml5Dml5Hml5Pml5Tml5Xml5hcIiw3LFwi5peh5pej5pek5peq5perXCJdLFtcIjk1NDBcIixcIuaXsuaXs+aXtOaXteaXuOaXueaXu1wiLDQsXCLmmIHmmITmmIXmmIfmmIjmmInmmIvmmI3mmJDmmJHmmJLmmJbmmJfmmJjmmJrmmJvmmJzmmJ7mmKHmmKLmmKPmmKTmmKbmmKnmmKrmmKvmmKzmmK7mmLDmmLLmmLPmmLdcIiw0LFwi5pi95pi/5pmA5pmC5pmEXCIsNixcIuaZjeaZjuaZkOaZkeaZmFwiXSxbXCI5NTgwXCIsXCLmmZnmmZvmmZzmmZ3mmZ7mmaDmmaLmmaPmmaXmmafmmalcIiw0LFwi5pmx5pmy5pmz5pm15pm45pm55pm75pm85pm95pm/5pqA5pqB5pqD5pqF5pqG5pqI5pqJ5pqK5pqL5pqN5pqO5pqP5pqQ5pqS5pqT5pqU5pqV5pqYXCIsNCxcIuaanlwiLDgsXCLmmqlcIiw0LFwi5pqvXCIsNCxcIuaateaatuaat+aauOaauuaau+aavOaaveaav1wiLDI1LFwi5pua5pueXCIsNyxcIuabp+abqOabqlwiLDUsXCLmm7Hmm7Xmm7bmm7jmm7rmm7vmm73mnIHmnILmnINcIl0sW1wiOTY0MFwiLFwi5pyE5pyF5pyG5pyH5pyM5pyO5pyP5pyR5pyS5pyT5pyW5pyY5pyZ5pya5pyc5pye5pygXCIsNSxcIuacp+acqeacruacsOacsuacs+actuact+acuOacueacu+acvOacvuacv+adgeadhOadheadh+adiuadi+adjeadkuadlOadleadl1wiLDQsXCLmnZ3mnaLmnaPmnaTmnabmnafmnavmnazmna7mnbHmnbTmnbZcIl0sW1wiOTY4MFwiLFwi5p245p255p265p275p295p6A5p6C5p6D5p6F5p6G5p6I5p6K5p6M5p6N5p6O5p6P5p6R5p6S5p6T5p6U5p6W5p6Z5p6b5p6f5p6g5p6h5p6k5p6m5p6p5p6s5p6u5p6x5p6y5p605p65XCIsNyxcIuafguafhVwiLDksXCLmn5Xmn5bmn5fmn5vmn5/mn6Hmn6Pmn6Tmn6bmn6fmn6jmn6rmn6vmn63mn67mn7Lmn7VcIiw3LFwi5p++5qCB5qCC5qCD5qCE5qCG5qCN5qCQ5qCS5qCU5qCV5qCYXCIsNCxcIuagnuagn+agoOagolwiLDYsXCLmoKtcIiw2LFwi5qC05qC15qC25qC65qC75qC/5qGH5qGL5qGN5qGP5qGS5qGWXCIsNV0sW1wiOTc0MFwiLFwi5qGc5qGd5qGe5qGf5qGq5qGsXCIsNyxcIuahteahuFwiLDgsXCLmooLmooTmoodcIiw3LFwi5qKQ5qKR5qKS5qKU5qKV5qKW5qKYXCIsOSxcIuaio+aipOaipeaiqeaiquaiq+airOairuaiseaisuaitOaituait+aiuFwiXSxbXCI5NzgwXCIsXCLmorlcIiw2LFwi5qOB5qODXCIsNSxcIuajiuajjOajjuajj+ajkOajkeajk+ajlOajluajl+ajmeajm1wiLDQsXCLmo6Hmo6Lmo6RcIiw5LFwi5qOv5qOy5qOz5qO05qO25qO35qO45qO75qO95qO+5qO/5qSA5qSC5qSD5qSE5qSGXCIsNCxcIuakjOakj+akkeakk1wiLDExLFwi5qSh5qSi5qSj5qSlXCIsNyxcIuakruakr+akseaksuaks+akteaktuakt+akuOakuuaku+akvOakvualgOalgealg1wiLDE2LFwi5qWV5qWW5qWY5qWZ5qWb5qWc5qWfXCJdLFtcIjk4NDBcIixcIualoealoualpOalpealp+alqOalqealqualrOalrealr+alsOalslwiLDQsXCLmpbrmpbvmpb3mpb7mpb/mpoHmpoPmpoXmpormpovmpozmpo5cIiw1LFwi5qaW5qaX5qaZ5qaa5qadXCIsOSxcIuamqeamquamrOamruamr+amsOamsuams+amteamtuamuOamueamuuamvOamvVwiXSxbXCI5ODgwXCIsXCLmpr7mpr/mp4Dmp4JcIiw3LFwi5qeL5qeN5qeP5qeR5qeS5qeT5qeVXCIsNSxcIuannOanneannuanoVwiLDExLFwi5qeu5qev5qew5qex5qezXCIsOSxcIuanvuaogFwiLDksXCLmqItcIiwxMSxcIuaomVwiLDUsXCLmqKDmqKJcIiw1LFwi5qip5qir5qis5qit5qiu5qiw5qiy5qiz5qi05qi2XCIsNixcIuaov1wiLDQsXCLmqYXmqYbmqYhcIiw3LFwi5qmRXCIsNixcIuapmlwiXSxbXCI5OTQwXCIsXCLmqZxcIiw0LFwi5qmi5qmj5qmk5qmmXCIsMTAsXCLmqbJcIiw2LFwi5qm65qm75qm95qm+5qm/5qqB5qqC5qqD5qqFXCIsOCxcIuaqj+aqklwiLDQsXCLmqphcIiw3LFwi5qqhXCIsNV0sW1wiOTk4MFwiLFwi5qqn5qqo5qqq5qqtXCIsMTE0LFwi5qyl5qym5qyoXCIsNl0sW1wiOWE0MFwiLFwi5qyv5qyw5qyx5qyz5qy05qy15qy25qy45qy75qy85qy95qy/5q2A5q2B5q2C5q2E5q2F5q2I5q2K5q2L5q2NXCIsMTEsXCLmrZpcIiw3LFwi5q2o5q2p5q2rXCIsMTMsXCLmrbrmrb3mrb7mrb/mroDmroXmrohcIl0sW1wiOWE4MFwiLFwi5q6M5q6O5q6P5q6Q5q6R5q6U5q6V5q6X5q6Y5q6Z5q6cXCIsNCxcIuauolwiLDcsXCLmrqtcIiw3LFwi5q625q64XCIsNixcIuavgOavg+avhOavhlwiLDQsXCLmr4zmr47mr5Dmr5Hmr5jmr5rmr5xcIiw0LFwi5q+iXCIsNyxcIuavrOavreavruavsOavseavsuavtOavtuavt+avuOavuuavu+avvOavvlwiLDYsXCLmsIhcIiw0LFwi5rCO5rCS5rCX5rCc5rCd5rCe5rCg5rCj5rCl5rCr5rCs5rCt5rCx5rCz5rC25rC35rC55rC65rC75rC85rC+5rC/5rGD5rGE5rGF5rGI5rGLXCIsNCxcIuaxkeaxkuaxk+axluaxmFwiXSxbXCI5YjQwXCIsXCLmsZnmsZrmsaLmsaPmsaXmsabmsafmsatcIiw0LFwi5rGx5rGz5rG15rG35rG45rG65rG75rG85rG/5rKA5rKE5rKH5rKK5rKL5rKN5rKO5rKR5rKS5rKV5rKW5rKX5rKY5rKa5rKc5rKd5rKe5rKg5rKi5rKo5rKs5rKv5rKw5rK05rK15rK25rK35rK65rOA5rOB5rOC5rOD5rOG5rOH5rOI5rOL5rON5rOO5rOP5rOR5rOS5rOYXCJdLFtcIjliODBcIixcIuazmeazmuaznOazneazn+azpOazpuazp+azqeazrOazreazsuaztOazueazv+a0gOa0gua0g+a0hea0hua0iOa0iea0iua0jea0j+a0kOa0kea0k+a0lOa0lea0lua0mOa0nOa0nea0n1wiLDUsXCLmtKbmtKjmtKnmtKzmtK3mtK/mtLDmtLTmtLbmtLfmtLjmtLrmtL/mtYDmtYLmtYTmtYnmtYzmtZDmtZXmtZbmtZfmtZjmtZvmtZ3mtZ/mtaHmtaLmtaTmtaXmtafmtajmtavmtazmta3mtbDmtbHmtbLmtbPmtbXmtbbmtbnmtbrmtbvmtb1cIiw0LFwi5raD5raE5raG5raH5raK5raL5raN5raP5raQ5raS5raWXCIsNCxcIua2nOa2oua2pea2rOa2rea2sOa2sea2s+a2tOa2tua2t+a2uVwiLDUsXCLmt4Hmt4Lmt4Pmt4jmt4nmt4pcIl0sW1wiOWM0MFwiLFwi5reN5reO5reP5reQ5reS5reT5reU5reV5reX5rea5reb5rec5ref5rei5rej5rel5ren5reo5rep5req5ret5rev5rew5rey5re05re15re25re45re65re9XCIsNyxcIua4hua4h+a4iOa4iea4i+a4j+a4kua4k+a4lea4mOa4mea4m+a4nOa4nua4n+a4oua4pua4p+a4qOa4qua4rOa4rua4sOa4sea4s+a4tVwiXSxbXCI5YzgwXCIsXCLmuLbmuLfmuLnmuLtcIiw3LFwi5rmFXCIsNyxcIua5j+a5kOa5kea5kua5lea5l+a5mea5mua5nOa5nea5nua5oFwiLDEwLFwi5rms5rmt5rmvXCIsMTQsXCLmuoDmuoHmuoLmuoTmuofmuojmuopcIiw0LFwi5rqRXCIsNixcIua6mea6mua6m+a6nea6nua6oOa6oea6o+a6pOa6pua6qOa6qea6q+a6rOa6rea6rua6sOa6s+a6tea6uOa6uea6vOa6vua6v+a7gOa7g+a7hOa7hea7hua7iOa7iea7iua7jOa7jea7jua7kOa7kua7lua7mOa7mea7m+a7nOa7nea7o+a7p+a7qlwiLDVdLFtcIjlkNDBcIixcIua7sOa7sea7sua7s+a7tea7tua7t+a7uOa7ulwiLDcsXCLmvIPmvITmvIXmvIfmvIjmvIpcIiw0LFwi5ryQ5ryR5ryS5ryWXCIsOSxcIua8oea8oua8o+a8pea8pua8p+a8qOa8rOa8rua8sOa8sua8tOa8tea8t1wiLDYsXCLmvL/mvYDmvYHmvYJcIl0sW1wiOWQ4MFwiLFwi5r2D5r2E5r2F5r2I5r2J5r2K5r2M5r2OXCIsOSxcIua9mea9mua9m+a9nea9n+a9oOa9oea9o+a9pOa9pea9p1wiLDUsXCLmva/mvbDmvbHmvbPmvbXmvbbmvbfmvbnmvbvmvb1cIiw2LFwi5r6F5r6G5r6H5r6K5r6L5r6PXCIsMTIsXCLmvp3mvp7mvp/mvqDmvqJcIiw0LFwi5r6oXCIsMTAsXCLmvrTmvrXmvrfmvrjmvrpcIiw1LFwi5r+B5r+DXCIsNSxcIua/ilwiLDYsXCLmv5NcIiwxMCxcIua/n+a/oua/o+a/pOa/pVwiXSxbXCI5ZTQwXCIsXCLmv6ZcIiw3LFwi5r+wXCIsMzIsXCLngJJcIiw3LFwi54CcXCIsNixcIueApFwiLDZdLFtcIjllODBcIixcIueAq1wiLDksXCLngLbngLfngLjngLpcIiwxNyxcIueBjeeBjueBkFwiLDEzLFwi54GfXCIsMTEsXCLnga7ngbHngbLngbPngbTngbfngbnngbrngbvngb3ngoHngoLngoPngoTngobngofngojngovngozngo3ngo/ngpDngpHngpPngpfngpjngprngpvngp5cIiwxMixcIueCsOeCsueCtOeCteeCtueCuueCvueCv+eDhOeDheeDhueDh+eDieeDi1wiLDEyLFwi54OaXCJdLFtcIjlmNDBcIixcIueDnOeDneeDnueDoOeDoeeDoueDo+eDpeeDqueDrueDsFwiLDYsXCLng7jng7rng7vng7zng75cIiwxMCxcIueEi1wiLDQsXCLnhJHnhJLnhJTnhJfnhJtcIiwxMCxcIueEp1wiLDcsXCLnhLLnhLPnhLRcIl0sW1wiOWY4MFwiLFwi54S154S3XCIsMTMsXCLnhYbnhYfnhYjnhYnnhYvnhY3nhY9cIiwxMixcIueFneeFn1wiLDQsXCLnhaXnhalcIiw0LFwi54Wv54Ww54Wx54W054W154W254W354W554W754W854W+XCIsNSxcIueGhVwiLDQsXCLnhovnhoznho3nho7nhpDnhpHnhpLnhpPnhpXnhpbnhpfnhppcIiw0LFwi54ahXCIsNixcIueGqeeGqueGq+eGrVwiLDUsXCLnhrTnhrbnhrfnhrjnhrpcIiw4LFwi54eEXCIsOSxcIueHj1wiLDRdLFtcImEwNDBcIixcIueHllwiLDksXCLnh6Hnh6Lnh6Pnh6Tnh6bnh6hcIiw1LFwi54evXCIsOSxcIueHulwiLDExLFwi54iHXCIsMTldLFtcImEwODBcIixcIueIm+eInOeInlwiLDksXCLniKnniKvniK3niK7niK/niLLniLPniLTniLrniLzniL7niYBcIiw2LFwi54mJ54mK54mL54mO54mP54mQ54mR54mT54mU54mV54mX54mY54ma54mc54me54mg54mj54mk54ml54mo54mq54mr54ms54mt54mw54mx54mz54m054m254m354m454m754m854m954qC54qD54qFXCIsNCxcIueKjOeKjueKkOeKkeeKk1wiLDExLFwi54qgXCIsMTEsXCLniq7nirHnirLnirPnirXnirpcIiw2LFwi54uF54uG54uH54uJ54uK54uL54uM54uP54uR54uT54uU54uV54uW54uY54ua54ubXCJdLFtcImExYTFcIixcIuOAgOOAgeOAgsK3y4nLh8Ko44CD44CF4oCU772e4oCW4oCm4oCY4oCZ4oCc4oCd44CU44CV44CIXCIsNyxcIuOAluOAl+OAkOOAkcKxw5fDt+KItuKIp+KIqOKIkeKIj+KIquKIqeKIiOKIt+KImuKKpeKIpeKIoOKMkuKKmeKIq+KIruKJoeKJjOKJiOKIveKIneKJoOKJruKJr+KJpOKJpeKInuKIteKItOKZguKZgMKw4oCy4oCz4oSD77yEwqTvv6Dvv6HigLDCp+KEluKYhuKYheKXi+KXj+KXjuKXh+KXhuKWoeKWoOKWs+KWsuKAu+KGkuKGkOKGkeKGk+OAk1wiXSxbXCJhMmExXCIsXCLihbBcIiw5XSxbXCJhMmIxXCIsXCLikohcIiwxOSxcIuKRtFwiLDE5LFwi4pGgXCIsOV0sW1wiYTJlNVwiLFwi44igXCIsOV0sW1wiYTJmMVwiLFwi4oWgXCIsMTFdLFtcImEzYTFcIixcIu+8ge+8gu+8g++/pe+8hVwiLDg4LFwi77+jXCJdLFtcImE0YTFcIixcIuOBgVwiLDgyXSxbXCJhNWExXCIsXCLjgqFcIiw4NV0sW1wiYTZhMVwiLFwizpFcIiwxNixcIs6jXCIsNl0sW1wiYTZjMVwiLFwizrFcIiwxNixcIs+DXCIsNl0sW1wiYTZlMFwiLFwi77i177i277i577i677i/77mA77i977i+77mB77mC77mD77mEXCJdLFtcImE2ZWVcIixcIu+4u++4vO+4t++4uO+4sVwiXSxbXCJhNmY0XCIsXCLvuLPvuLRcIl0sW1wiYTdhMVwiLFwi0JBcIiw1LFwi0IHQllwiLDI1XSxbXCJhN2QxXCIsXCLQsFwiLDUsXCLRkdC2XCIsMjVdLFtcImE4NDBcIixcIsuKy4vLmeKAk+KAleKApeKAteKEheKEieKGluKGl+KGmOKGmeKIleKIn+KIo+KJkuKJpuKJp+KKv+KVkFwiLDM1LFwi4paBXCIsNl0sW1wiYTg4MFwiLFwi4paIXCIsNyxcIuKWk+KWlOKWleKWvOKWveKXouKXo+KXpOKXpeKYieKKleOAkuOAneOAnlwiXSxbXCJhOGExXCIsXCLEgcOhx47DoMSTw6nEm8OoxKvDrceQw6zFjcOzx5LDssWrw7rHlMO5x5bHmMeax5zDvMOqyZFcIl0sW1wiYThiZFwiLFwixYTFiFwiXSxbXCJhOGMwXCIsXCLJoVwiXSxbXCJhOGM1XCIsXCLjhIVcIiwzNl0sW1wiYTk0MFwiLFwi44ChXCIsOCxcIuOKo+OOjuOOj+OOnOOOneOOnuOOoeOPhOOPjuOPkeOPkuOPle+4sO+/ou+/pFwiXSxbXCJhOTU5XCIsXCLihKHjiLFcIl0sW1wiYTk1Y1wiLFwi4oCQXCJdLFtcImE5NjBcIixcIuODvOOCm+OCnOODveODvuOAhuOCneOCnu+5iVwiLDksXCLvuZTvuZXvuZbvuZfvuZlcIiw4XSxbXCJhOTgwXCIsXCLvuaJcIiw0LFwi77mo77mp77mq77mrXCJdLFtcImE5OTZcIixcIuOAh1wiXSxbXCJhOWE0XCIsXCLilIBcIiw3NV0sW1wiYWE0MFwiLFwi54uc54ud54uf54uiXCIsNSxcIueLqueLq+eLteeLtueLueeLveeLvueLv+eMgOeMgueMhFwiLDUsXCLnjIvnjIznjI3njI/njJDnjJHnjJLnjJTnjJjnjJnnjJrnjJ/njKDnjKPnjKTnjKbnjKfnjKjnjK3njK/njLDnjLLnjLPnjLXnjLbnjLrnjLvnjLznjL3njYBcIiw4XSxbXCJhYTgwXCIsXCLnjYnnjYrnjYvnjYznjY7njY/njZHnjZPnjZTnjZXnjZbnjZhcIiw3LFwi542hXCIsMTAsXCLnja7njbDnjbFcIl0sW1wiYWI0MFwiLFwi542yXCIsMTEsXCLnjb9cIiw0LFwi546F546G546I546K546M546N546P546Q546S546T546U546V546X546Y546Z546a546c546d546e546g546h546jXCIsNSxcIueOqueOrOeOreeOseeOtOeOteeOtueOuOeOueeOvOeOveeOvueOv+ePgeePg1wiLDRdLFtcImFiODBcIixcIuePi+ePjOePjuePklwiLDYsXCLnj5rnj5vnj5znj53nj5/nj6Hnj6Lnj6Pnj6Tnj6bnj6jnj6rnj6vnj6znj67nj6/nj7Dnj7Hnj7NcIiw0XSxbXCJhYzQwXCIsXCLnj7hcIiwxMCxcIueQhOeQh+eQiOeQi+eQjOeQjeeQjueQkVwiLDgsXCLnkJxcIiw1LFwi55Cj55Ck55Cn55Cp55Cr55Ct55Cv55Cx55Cy55C3XCIsNCxcIueQveeQvueQv+eRgOeRglwiLDExXSxbXCJhYzgwXCIsXCLnkY5cIiw2LFwi55GW55GY55Gd55GgXCIsMTIsXCLnka7nka/nkbFcIiw0LFwi55G455G555G6XCJdLFtcImFkNDBcIixcIueRu+eRvOeRveeRv+eSgueShOeSheeShueSiOeSieeSiueSjOeSjeeSj+eSkVwiLDEwLFwi55Kd55KfXCIsNyxcIueSqlwiLDE1LFwi55K7XCIsMTJdLFtcImFkODBcIixcIueTiFwiLDksXCLnk5NcIiw4LFwi55Od55Of55Oh55Ol55OnXCIsNixcIueTsOeTseeTslwiXSxbXCJhZTQwXCIsXCLnk7Pnk7Xnk7hcIiw2LFwi55SA55SB55SC55SD55SFXCIsNyxcIueUjueUkOeUkueUlOeUleeUlueUl+eUm+eUneeUnueUoFwiLDQsXCLnlKbnlKfnlKrnlK7nlLTnlLbnlLnnlLznlL3nlL/nlYHnlYLnlYPnlYTnlYbnlYfnlYnnlYrnlY3nlZDnlZHnlZLnlZPnlZXnlZbnlZfnlZhcIl0sW1wiYWU4MFwiLFwi55WdXCIsNyxcIueVp+eVqOeVqeeVq1wiLDYsXCLnlbPnlbXnlbbnlbfnlbpcIiw0LFwi55aA55aB55aC55aE55aF55aHXCJdLFtcImFmNDBcIixcIueWiOeWieeWiueWjOeWjeeWjueWkOeWk+eWleeWmOeWm+eWnOeWnueWoueWplwiLDQsXCLnlq3nlrbnlrfnlrrnlrvnlr/nl4Dnl4Hnl4bnl4vnl4znl47nl4/nl5Dnl5Hnl5Pnl5fnl5nnl5rnl5znl53nl5/nl6Dnl6Hnl6Xnl6nnl6znl63nl67nl6/nl7Lnl7Pnl7Xnl7bnl7fnl7jnl7rnl7vnl73nl77nmILnmITnmIbnmIdcIl0sW1wiYWY4MFwiLFwi55iI55iJ55iL55iN55iO55iP55iR55iS55iT55iU55iW55ia55ic55id55ie55ih55ij55in55io55is55iu55iv55ix55iy55i255i355i555i655i755i955mB55mC55mEXCJdLFtcImIwNDBcIixcIueZhVwiLDYsXCLnmY5cIiw1LFwi55mV55mXXCIsNCxcIueZneeZn+eZoOeZoeeZoueZpFwiLDYsXCLnmaznma3nma7nmbBcIiw3LFwi55m555m655m855m/55qA55qB55qD55qF55qJ55qK55qM55qN55qP55qQ55qS55qU55qV55qX55qY55qa55qbXCJdLFtcImIwODBcIixcIueanFwiLDcsXCLnmqVcIiw4LFwi55qv55qw55qz55q1XCIsOSxcIuebgOebgeebg+WViumYv+Wfg+aMqOWTjuWUieWTgOeakeeZjOiUvOefruiJvueijeeIsemamOmejeawqOWuieS/uuaMieaal+WyuOiDuuahiOiCruaYguebjuWHueaVlueGrOe/seiihOWCsuWlpeaHiua+s+iKreaNjOaJkuWPreWQp+eshuWFq+eWpOW3tOaLlOi3i+mdtuaKiuiAmeWdnemcuOe9oueIuOeZveafj+eZvuaRhuS9sOi0peaLnOeol+aWkeePreaQrOaJs+iIrOmigeadv+eJiOaJruaLjOS8tOeTo+WNiuWKnue7iumCpuW4ruaihuamnOiGgOe7keajkuejheiajOmVkeWCjeiwpOiLnuiDnuWMheikkuWJpVwiXSxbXCJiMTQwXCIsXCLnm4Tnm4fnm4nnm4vnm4znm5Pnm5Xnm5nnm5rnm5znm53nm57nm6BcIiw0LFwi55umXCIsNyxcIuebsOebs+ebteebtuebt+ebuuebu+ebveebv+ecgOecguecg+echeechueciuecjOecjlwiLDEwLFwi55yb55yc55yd55ye55yh55yj55yk55yl55yn55yq55yrXCJdLFtcImIxODBcIixcIuecrOecruecsFwiLDQsXCLnnLnnnLvnnL3nnL7nnL/nnYLnnYTnnYXnnYbnnYhcIiw3LFwi552SXCIsNyxcIuednOiWhOmbueS/neWgoemlseWuneaKseaKpeaatOixuemyjeeIhuadr+eikeaCsuWNkeWMl+i+iOiDjOi0nemSoeWAjeeLiOWkh+aDq+eEmeiiq+WllOiLr+acrOesqOW0qee7t+eUreaztei5pui/uOmAvOm8u+avlOmEmeeslOW9vOeip+iTluiUveavleavmeavluW4geW6h+eXuemXreaVneW8iuW/hei+n+WjgeiHgumBv+mZm+merei+uee8lui0rOaJgeS+v+WPmOWNnui+qOi+qei+q+mBjeagh+W9quiGmOihqOmzluaGi+WIq+eYquW9rOaWjOa/kua7qOWuvuaRiOWFteWGsOafhOS4meeniemlvOeCs1wiXSxbXCJiMjQwXCIsXCLnnZ3nnZ7nnZ/nnaDnnaTnnafnnannnarnna1cIiwxMSxcIueduuedu+edvOeegeeegueeg+eehlwiLDUsXCLnno/nnpDnnpNcIiwxMSxcIueeoeeeo+eepOeepueeqOeeq+eereeerueer+eeseeesueetOeetlwiLDRdLFtcImIyODBcIixcIueevOeevuefgFwiLDEyLFwi55+OXCIsOCxcIuefmOefmeefmuefnVwiLDQsXCLnn6Tnl4Xlubbnjrvoj6Dmkq3mi6jpkrXms6LljZrli4PmkI/pk4LnrpTkvK/luJvoiLbohJbohormuKTms4rpqbPmjZXljZzlk7rooaXln6DkuI3luIPmraXnsL/pg6jmgJbmk6bnjJzoo4HmnZDmiY3otKLnnazouKnph4flvanoj5zolKHppJDlj4LompXmrovmg63mg6jngb/oi43oiLHku5Pmsqfol4/mk43ns5nmp73mm7nojYnljpXnrZbkvqflhozmtYvlsYLoua3mj5Llj4nojKzojLbmn6XnorTmkL3lr5/lspTlt67or6fmi4bmn7TosbrmkIDmjrronYnppovosJfnvKDpk7LkuqfpmJDpoqTmmIznjJZcIl0sW1wiYjM0MFwiLFwi55+m55+o55+q55+v55+w55+x55+y55+055+155+355+555+655+755+856CDXCIsNSxcIuegiuegi+egjuegj+egkOegk+egleegmeegm+egnuegoOegoeegouegpOegqOegquegq+egruegr+egseegsuegs+egteegtuegveegv+ehgeehguehg+ehhOehhuehiOehieehiuehi+ehjeehj+ehkeehk+ehlOehmOehmeehmlwiXSxbXCJiMzgwXCIsXCLnoZvnoZznoZ5cIiwxMSxcIuehr1wiLDcsXCLnobjnobnnobrnobvnob1cIiw2LFwi5Zy65bCd5bi46ZW/5YG/6IKg5Y6C5pWe55WF5ZSx5YCh6LaF5oqE6ZKe5pyd5Ziy5r2u5bei5ZC154KS6L2m5omv5pKk5o6j5b275r6I6YO06Iej6L6w5bCY5pmo5b+x5rKJ6ZmI6LaB6KGs5pKR56ew5Z+O5qmZ5oiQ5ZGI5LmY56iL5oOp5r6E6K+a5om/6YCe6aqL56ek5ZCD55e05oyB5YyZ5rGg6L+f5byb6amw6IC76b2/5L6I5bC66LWk57+F5pal54K95YWF5Yay6Jmr5bSH5a6g5oq96YWs55W06LiM56ig5oSB56255LuH57u4556F5LiR6Iet5Yid5Ye65qmx5Y6o6LqH6ZSE6ZuP5ruB6Zmk5qWaXCJdLFtcImI0NDBcIixcIueihOeiheeihueiiOeiiueii+eij+eikOeikueilOeileeilueimeeineeinueioOeioueipOeipueiqFwiLDcsXCLnorXnorbnorfnorjnorrnorvnorznor3nor/no4Dno4Lno4Pno4Tno4bno4fno4jno4zno43no47no4/no5Hno5Lno5Pno5bno5fno5jno5pcIiw5XSxbXCJiNDgwXCIsXCLno6Tno6Xno6bno6fno6nno6rno6vno61cIiw0LFwi56Oz56O156O256O456O556O7XCIsNSxcIuekguekg+ekhOekhlwiLDYsXCLnoYDlgqjnn5fmkJDop6blpITmj6Plt53nqb/mpL3kvKDoiLnllpjkuLLnlq7nqpfluaLluorpl6/liJvlkLnngormjbbplKTlnoLmmKXmpL/phofllIfmt7Pnuq/ooKLmiLPnu7DnlrXojKjno4Hpm4zovp7mhYjnk7for43mraTliLrotZDmrKHogarokbHlm7HljIbku47kuJvlh5HnspfphovnsIfkv4Poub/nr6HnqpzmkafltJTlgqzohIbnmIHnsrnmt6znv6DmnZHlrZjlr7jno4vmkq7mkJPmjqrmjKvplJnmkK3ovr7nrZTnmKnmiZPlpKflkYbmrbnlgqPmiLTluKbmrobku6PotLfooovlvoXpgK5cIl0sW1wiYjU0MFwiLFwi56SNXCIsNSxcIueklFwiLDksXCLnpJ9cIiw0LFwi56SlXCIsMTQsXCLnpLVcIiw0LFwi56S956S/56WC56WD56WE56WF56WH56WKXCIsOCxcIuellOelleelmOelmeeloeelo1wiXSxbXCJiNTgwXCIsXCLnpaTnpabnpannparnpavnpaznpa7npbBcIiw2LFwi56W556W7XCIsNCxcIuemguemg+emhuemh+emiOemieemi+emjOemjeemjuemkOemkeemkuaAoOiAveaLheS4ueWNlemDuOaOuOiDhuaXpuawruS9huaDrua3oeivnuW8ueibi+W9k+aMoeWFmuiNoeaho+WIgOaNo+i5iOWAkuWym+elt+WvvOWIsOeou+aCvOmBk+ebl+W+t+W+l+eahOi5rOeBr+eZu+etieeequWHs+mCk+WgpOS9jua7tOi/quaVjOesm+eLhOa2pOe/n+WroeaKteW6leWcsOiSguesrOW4neW8n+mAkue8lOmioOaOgua7h+eimOeCueWFuOmdm+Weq+eUteS9g+eUuOW6l+aDpuWloOa3gOauv+eiieWPvOmbleWHi+WIgeaOieWQiumSk+iwg+i3jOeIueein+idtui/reiwjeWPoFwiXSxbXCJiNjQwXCIsXCLnppNcIiw2LFwi56abXCIsMTEsXCLnpqhcIiwxMCxcIuemtFwiLDQsXCLnprznpr/np4Lnp4Tnp4Xnp4fnp4jnp4rnp4znp47np4/np5Dnp5Pnp5Tnp5bnp5fnp5lcIiw1LFwi56eg56eh56ei56el56eo56eqXCJdLFtcImI2ODBcIixcIuenrOenruensVwiLDYsXCLnp7nnp7rnp7znp77np7/nqIHnqITnqIXnqIfnqIjnqInnqIrnqIznqI9cIiw0LFwi56iV56iW56iY56iZ56ib56ic5LiB55uv5Y+u6ZKJ6aG26byO6ZSt5a6a6K6i5Lii5Lic5Yas6JGj5oeC5Yqo5qCL5L6X5oGr5Ya75rSe5YWc5oqW5paX6Zmh6LGG6YCX55eY6YO9552j5q+S54qK54us6K+75aC155256LWM5p2c6ZWA6IKa5bqm5rih5aaS56uv55+t6ZS75q615pat57yO5aCG5YWR6Zif5a+55aKp5ZCo6Lmy5pWm6aG/5Zuk6ZKd55u+6YGB5o6H5ZOG5aSa5aS65Z6b6Lqy5py16Le66Ii15YmB5oOw5aCV6Ju+5bOo6bmF5L+E6aKd6K655ail5oG25Y6E5om86YGP6YSC6aW/5oGp6ICM5YS/6ICz5bCU6aW15rSx5LqMXCJdLFtcImI3NDBcIixcIueoneeon+eooeeooueopFwiLDE0LFwi56i056i156i256i456i656i+56mAXCIsNSxcIueph1wiLDksXCLnqZJcIiw0LFwi56mYXCIsMTZdLFtcImI3ODBcIixcIuepqVwiLDYsXCLnqbHnqbLnqbPnqbXnqbvnqbznqb3nqb7nqoLnqoXnqofnqonnqornqovnqoznqo7nqo/nqpDnqpPnqpTnqpnnqprnqpvnqp7nqqHnqqLotLDlj5HnvZrnrY/kvJDkuY/pmIDms5Xnj5Dol6nluIbnlarnv7vmqIrnn77pkpLnuYHlh6Hng6blj43ov5TojIPotKnniq/ppa3ms5vlnYroirPmlrnogqrmiL/pmLLlpqjku7/orr/nurrmlL7oj7LpnZ7llaHpo57ogqXljKror73lkKDogrrlup/msrjotLnoiqzphZrlkKnmsJvliIbnurflnZ/nhJrmsb7nsonlpYvku73lv7/mhKTnsqrkuLDlsIHmnqvonILls7DplIvpo47nlq/ng73pgKLlhq/nvJ3orr3lpYnlh6TkvZvlkKblpKvmlbfogqTlrbXmibbmi4LovpDluYXmsJ/nrKbkvI/kv5jmnI1cIl0sW1wiYjg0MFwiLFwi56qj56qk56qn56qp56qq56qr56quXCIsNCxcIueqtFwiLDEwLFwi56uAXCIsMTAsXCLnq4xcIiw5LFwi56uX56uY56ua56ub56uc56ud56uh56ui56uk56unXCIsNSxcIuerruersOerseersuers1wiXSxbXCJiODgwXCIsXCLnq7RcIiw0LFwi56u756u856u+56yA56yB56yC56yF56yH56yJ56yM56yN56yO56yQ56yS56yT56yW56yX56yY56ya56yc56yd56yf56yh56yi56yj56yn56yp56yt5rWu5raq56aP6KKx5byX55Sr5oqa6L6F5L+v6Yec5pan6ISv6IWR5bqc6IWQ6LW05Ymv6KaG6LWL5aSN5YKF5LuY6Zic54i26IW56LSf5a+M6K6j6ZmE5aaH57ya5ZKQ5Zm25ZiO6K+l5pS55qaC6ZKZ55uW5rqJ5bmy55SY5p2G5p+R56u/6IKd6LW25oSf56eG5pWi6LWj5YaI5Yia6ZKi57y46IKb57qy5bKX5riv5p2g56+Z55qL6auY6IaP576U57OV5pCe6ZWQ56i/5ZGK5ZOl5q2M5pCB5oiI6bi96IOz55aZ5Ymy6Z2p6JGb5qC86Juk6ZiB6ZqU6ZOs5Liq5ZCE57uZ5qC56Lef6ICV5pu05bqa5765XCJdLFtcImI5NDBcIixcIuesr+essOessuestOesteestuest+esueesu+esveesv1wiLDUsXCLnrYbnrYjnrYrnrY3nrY7nrZPnrZXnrZfnrZnnrZznrZ7nrZ/nraHnraNcIiwxMCxcIuetr+etsOets+ettOettuetuOetuuetvOetveetv+eugeeugueug+euhOeuhlwiLDYsXCLnro7nro9cIl0sW1wiYjk4MFwiLFwi566R566S566T566W566Y566Z566a566b566e566f566g566j566k566l566u566v566w566y566z5661566256635665XCIsNyxcIuevguevg+evhOWfguiAv+ail+W3peaUu+WKn+aBrem+muS+m+i6rOWFrOWuq+W8k+W3qeaxnuaLsei0oeWFsemSqeWLvuayn+iLn+eLl+WeouaehOi0reWkn+i+nOiPh+WSleeujeS8sOayveWtpOWnkem8k+WPpOibiumqqOiwt+iCoeaVhemhvuWbuumbh+WIrueTnOWJkOWvoeaMguikguS5luaLkOaAquajuuWFs+WumOWGoOingueuoemmhue9kOaDr+eBjOi0r+WFieW5v+mAm+eRsOinhOWcreehheW9kum+n+mXuui9qOmsvOivoeeZuOahguafnOi3qui0teWIvei+iua7muajjemUhemDreWbveaenOijuei/h+WTiFwiXSxbXCJiYTQwXCIsXCLnr4Xnr4jnr4nnr4rnr4vnr43nr47nr4/nr5Dnr5Lnr5RcIiw0LFwi56+b56+c56+e56+f56+g56+i56+j56+k56+n56+o56+p56+r56+s56+t56+v56+w56+yXCIsNCxcIuevuOevueevuuevu+evveevv1wiLDcsXCLnsIjnsInnsIrnsI3nsI7nsJBcIiw1LFwi57CX57CY57CZXCJdLFtcImJhODBcIixcIuewmlwiLDQsXCLnsKBcIiw1LFwi57Co57Cp57CrXCIsMTIsXCLnsLlcIiw1LFwi57GC6aq45a2p5rW35rCm5Lql5a6z6aqH6YWj5oao6YKv6Z+p5ZCr5ra15a+S5Ye95ZaK572V57+w5pK85o2N5pex5oa+5oKN54SK5rGX5rGJ5aSv5p2t6Iiq5aOV5ZqO6LGq5q+r6YOd5aW96ICX5Y+35rWp5ZG15Zad6I236I+P5qC456a+5ZKM5L2V5ZCI55uS6LKJ6ZiC5rKz5ra46LWr6KSQ6bmk6LS65Zi/6buR55eV5b6I54ug5oGo5ZO85Lqo5qiq6KGh5oGS6L2w5ZOE54OY6Jm56bi/5rSq5a6P5byY57qi5ZaJ5L6v54y05ZC85Y6a5YCZ5ZCO5ZG85LmO5b+955Ga5aO26JGr6IOh6J2054uQ57OK5rmWXCJdLFtcImJiNDBcIixcIuexg1wiLDksXCLnsY5cIiwzNixcIuextVwiLDUsXCLnsb5cIiw5XSxbXCJiYjgwXCIsXCLnsojnsopcIiw2LFwi57KT57KU57KW57KZ57Ka57Kb57Kg57Kh57Kj57Km57Kn57Ko57Kp57Kr57Ks57Kt57Kv57Kw57K0XCIsNCxcIueyuueyu+W8p+iZjuWUrOaKpOS6kuayquaIt+iKseWTl+WNjueMvua7keeUu+WIkuWMluivneankOW+iuaAgOa3ruWdj+asoueOr+ahk+i/mOe8k+aNouaCo+WUpOeXquixoueElea2o+WupuW5u+iNkuaFjOm7hOejuuidl+ewp+eah+WHsOaDtueFjOaZg+W5jOaBjeiwjueBsOaMpei+ieW+veaBouiblOWbnuavgeaClOaFp+WNieaDoOaZpui0v+enveS8mueDqeaxh+ius+ivsue7mOiNpOaYj+Wpmumtgua1kea3t+ixgea0u+S8meeBq+iOt+aIluaDkemcjei0p+eluOWHu+WcvuWfuuacuueVuOeoveenr+eulVwiXSxbXCJiYzQwXCIsXCLnsr/ns4Dns4Lns4Pns4Tns4bns4nns4vns45cIiw2LFwi57OY57Oa57Ob57Od57Oe57OhXCIsNixcIuezqVwiLDUsXCLns7BcIiw3LFwi57O557O657O8XCIsMTMsXCLntItcIiw1XSxbXCJiYzgwXCIsXCLntJFcIiwxNCxcIue0oee0o+e0pOe0pee0pue0qOe0qee0que0rOe0ree0rue0sFwiLDYsXCLogozppaXov7nmv4DorqXpuKHlp6znu6nnvInlkInmnoHmo5jovpHnsY3pm4blj4rmgKXnlr7msbLljbPlq4nnuqfmjKTlh6DohIrlt7Hok5/mioDlhoDlraPkvI7npa3liYLmgrjmtY7lr4Tlr4LorqHorrDml6Llv4zpmYXlppPnu6fnuqrlmInmnrflpLnkvbPlrrbliqDojZrpoorotL7nlLLpkr7lgYfnqLzku7fmnrbpqb7lq4Hmrbznm5HlnZrlsJbnrLrpl7TnhY7lhbzogqnoibDlpbjnvITojKfmo4Dmn6znorHnobfmi6PmjaHnroDkv63liarlh4/ojZDmp5vpibTot7XotLHop4HplK7nrq3ku7ZcIl0sW1wiYmQ0MFwiLFwi57S3XCIsNTQsXCLnta9cIiw3XSxbXCJiZDgwXCIsXCLntbhcIiwzMixcIuWBpeiIsOWJkemlr+a4kOa6hea2p+W7uuWDteWnnOWwhua1huaxn+eWhuiSi+ahqOWlluiusuWMoOmFsemZjeiVieakkuekgeeEpuiDtuS6pOmDiua1h+mqhOWoh+WavOaQhemTsOefq+S+peiEmueLoeinkumluue8tOe7nuWJv+aVmemFtei9v+i+g+WPq+eqluaPreaOpeeahuenuOihl+mYtuaIquWKq+iKguahlOadsOaNt+edq+errea0gee7k+ino+WnkOaIkuiXieiKpeeVjOWAn+S7i+eWpeivq+WxiuW3vueti+aWpOmHkeS7iua0peiln+e0p+mUpuS7heiwqOi/m+mds+aZi+emgei/keeDrOa1uFwiXSxbXCJiZTQwXCIsXCLntplcIiwxMixcIue2p1wiLDYsXCLntq9cIiw0Ml0sW1wiYmU4MFwiLFwi57eaXCIsMzIsXCLlsL3lirLojYblhaLojI7nnZvmmbbpsrjkuqzmg4rnsr7nsrPnu4/kupXorabmma/poojpnZnlooPmlazplZzlvoTnl4npnZbnq5/nq57lh4Dngq/nqpjmj6rnqbbnuqDnjpbpn63kuYXngbjkuZ3phZLljqnmlZHml6foh7zoiIXlko7lsLHnlprpnqDmi5jni5nnlr3lsYXpqbnoj4rlsYDlkoDnn6nkuL7msq7ogZrmi5Lmja7lt6jlhbfot53ouJ7plK/kv7Hlj6Xmg6fngqzliafmjZDpuYPlqJ/lgKbnnLfljbfnu6LmkoXmlKvmionmjpjlgJTniLXop4nlhrPor4Dnu53lnYfoj4zpkqflhpvlkJvls7tcIl0sW1wiYmY0MFwiLFwi57e7XCIsNjJdLFtcImJmODBcIixcIue4uue4vFwiLDQsXCLnuYJcIiw0LFwi57mIXCIsMjEsXCLkv4rnq6PmtZrpg6Hpqo/lloDlkpbljaHlkq/lvIDmj6nmpbflh6/mhajliIrloKrli5jlnY7noI3nnIvlurfmhbfns6DmiZvmipfkuqLngpXogIPmi7fng6TpnaDlnbfoi5vmn6/mo7Xno5Xpopfnp5Hlo7PlkrPlj6/muLTlhYvliLvlrqLor77ogq/llYPlnqbmgbPlnZHlkK3nqbrmgZDlrZTmjqfmiqDlj6PmiaPlr4fmnq/lk63nqp/oi6bphbflupPoo6TlpLjlnq7mjI7ot6jog6/lnZfnrbfkvqnlv6vlrr3mrL7ljKHnrZDni4LmoYbnn7/nnLbml7flhrXkuo/nm5Tlsr/nqqXokbXlpY7prYHlgoBcIl0sW1wiYzA0MFwiLFwi57meXCIsMzUsXCLnuoNcIiwyMyxcIue6nOe6nee6nlwiXSxbXCJjMDgwXCIsXCLnuq7nurTnurvnurznu5bnu6Tnu6znu7nnvIrnvJDnvJ7nvLfnvLnnvLtcIiw2LFwi572D572GXCIsOSxcIue9kue9k+mmiOaEp+a6g+WdpOaYhuaNhuWbsOaLrOaJqeW7k+mYlOWeg+aLieWWh+icoeiFiui+o+WVpuiOseadpei1luiTneWpquagj+aLpuevrumYkeWFsOa+nOiwsOaPveiniOaHkue8hueDgua7peeQheamlOeLvOW7iumDjuacl+a1quaNnuWKs+eJouiAgeS9rOWnpemFqueDmea2neWLkuS5kOmbt+mVreiVvuejiue0r+WEoeWekuaTguiCi+exu+azquajsealnuWGt+WOmOaiqOeKgem7juevseeLuOemu+a8k+eQhuadjumHjOmypOekvOiOieiNlOWQj+agl+S4veWOieWKseegvuWOhuWIqeWCiOS+i+S/kFwiXSxbXCJjMTQwXCIsXCLnvZbnvZnnvZvnvZznvZ3nvZ7nvaDnvaNcIiw0LFwi572r572s572t572v572w572z57215722572357245726572757285729572/576A576CXCIsNyxcIue+i+e+jee+j1wiLDQsXCLnvpVcIiw0LFwi576b576c576g576i576j576l576m576oXCIsNixcIue+sVwiXSxbXCJjMTgwXCIsXCLnvrNcIiw0LFwi57665767576+57+A57+C57+D57+E57+G57+H57+I57+J57+L57+N57+PXCIsNCxcIue/lue/l+e/mVwiLDUsXCLnv6Lnv6Pnl6Lnq4vnspLmsqXpmrblipvnkoPlk6nkv6nogZTojrLov57plbDlu4nmgJzmtp/luJjmlZvohLjpk77mgYvngrznu4Pnsq7lh4nmooHnsrHoia/kuKTovobph4/mmb7kuq7osIXmkqnogYrlg5rnlpfnh47lr6Xovr3mvabkuobmkoLplaPlu5bmlpnliJfoo4Lng4jliqPnjI7nkLPmnpfno7fpnJbkuLTpgrvps57mt4vlh5votYHlkJ3mi47njrLoj7Hpm7bpvoTpk4PkvLbnvprlh4zngbXpmbXlsq3pooblj6bku6TmupznkInmprTnoavppo/nlZnliJjnmKTmtYHmn7Plha3pvpnogYvlkpnnrLznqr9cIl0sW1wiYzI0MFwiLFwi57+k57+n57+o57+q57+r57+s57+t57+v57+y57+0XCIsNixcIue/vee/vue/v+iAguiAh+iAiOiAieiAiuiAjuiAj+iAkeiAk+iAmuiAm+iAneiAnuiAn+iAoeiAo+iApOiAq1wiLDUsXCLogLLogLTogLnogLrogLzogL7ogYDogYHogYTogYXogYfogYjogYnogY7ogY/ogZDogZHogZPogZXogZbogZdcIl0sW1wiYzI4MFwiLFwi6IGZ6IGbXCIsMTMsXCLogatcIiw1LFwi6IGyXCIsMTEsXCLpmoblnoTmi6LpmYfmpbzlqITmkILnr5PmvI/pmYvoiqbljaLpooXlupDngonmjrPljaTomY/psoHpupPnoozpnLLot6/otYLpub/mvZ7npoTlvZXpmYbmiK7pqbTlkJXpk53kvqPml4XlsaXlsaHnvJXomZHmsK/lvovnjofmu6Tnu7/ls6bmjJvlrarmu6bljbXkubHmjqDnlaXmiqHova7kvKbku5HmsqbnurborrrokJ3onrrnvZfpgLvplKPnrqnpqqHoo7jokL3mtJvpqobnu5zlpojpurvnjpvnoIHomoLpqazpqoLlmJvlkJfln4vkubDpuqbljZbov4johInnnpLpppLom67mu6HolJPmm7zmhaLmvKtcIl0sW1wiYzM0MFwiLFwi6IG+6IKB6IKC6IKF6IKI6IKK6IKNXCIsNSxcIuiClOiCleiCl+iCmeiCnuiCo+iCpuiCp+iCqOiCrOiCsOiCs+iCteiCtuiCuOiCueiCu+iDheiDh1wiLDQsXCLog49cIiw2LFwi6IOY6IOf6IOg6IOi6IOj6IOm6IOu6IO16IO36IO56IO76IO+6IO/6ISA6ISB6ISD6ISE6ISF6ISH6ISI6ISLXCJdLFtcImMzODBcIixcIuiEjOiEleiEl+iEmeiEm+iEnOiEneiEn1wiLDEyLFwi6ISt6ISu6ISw6ISz6IS06IS16IS36IS5XCIsNCxcIuiEv+iwqeiKkuiMq+ebsuawk+W/meiOveeMq+iMhemUmuavm+efm+mThuWNr+iMguWGkuW4veiyjOi0uOS5iOeOq+aemuaihemFtumcieeFpOayoeecieWqkumVgeavj+e+juaYp+WvkOWmueWqmumXqOmXt+S7rOiQjOiSmeaqrOebn+mUsOeMm+aipuWtn+ecr+mGmumdoeeznOi/t+iwnOW8peexs+enmOinheazjOicnOWvhuW5guajieecoOe7teWGleWFjeWLieWoqee8hemdouiLl+aPj+eehOiXkOenkua4uuW6meWmmeiUkeeBreawkeaKv+eav+aVj+aCr+mXveaYjuien+m4o+mTreWQjeWRveiwrOaRuFwiXSxbXCJjNDQwXCIsXCLohYBcIiw1LFwi6IWH6IWJ6IWN6IWO6IWP6IWS6IWW6IWX6IWY6IWbXCIsNCxcIuiFoeiFouiFo+iFpOiFpuiFqOiFquiFq+iFrOiFr+iFsuiFs+iFteiFtuiFt+iFuOiGgeiGg1wiLDQsXCLohonohovohozoho3oho7ohpDohpJcIiw1LFwi6IaZ6Iaa6IaeXCIsNCxcIuiGpOiGpVwiXSxbXCJjNDgwXCIsXCLohqfohqnohqtcIiw3LFwi6Ia0XCIsNSxcIuiGvOiGveiGvuiGv+iHhOiHheiHh+iHiOiHieiHi+iHjVwiLDYsXCLmkbnomJHmqKHohpzno6jmkanprZTmirnmnKvojqvloqjpu5jmsqvmvKDlr57pmYzosIvniZ/mn5Dmi4fniaHkuqnlp4bmr43lopPmmq7luZXli5/mhZXmnKjnm67nnabniafnqYbmi7/lk6rlkZDpkqDpgqPlqJznurPmsJbkuYPlpbbogJDlpYjljZfnlLfpmr7lm4rmjKDohJHmgbzpl7nmt5blkaLppoHlhoXlq6nog73lpq7pnJPlgKrms6XlsLzmi5/kvaDljL/ohbvpgIbmurrolKvmi4jlubTnor7mkrXmjbvlv7XlqJjphb/puJ/lsL/mjY/ogYLlrb3lla7plYrplY3mtoXmgqjmn6Dni57lh53lroFcIl0sW1wiYzU0MFwiLFwi6IeUXCIsMTQsXCLoh6Toh6Xoh6boh6joh6noh6voh65cIiw0LFwi6Ie1XCIsNSxcIuiHveiHv+iIg+iIh1wiLDQsXCLoiI7oiI/oiJHoiJPoiJVcIiw1LFwi6Iid6Iig6Iik6Iil6Iim6Iin6Iip6Iiu6Iiy6Ii66Ii86Ii96Ii/XCJdLFtcImM1ODBcIixcIuiJgOiJgeiJguiJg+iJheiJhuiJiOiJiuiJjOiJjeiJjuiJkFwiLDcsXCLoiZnoiZvoiZzoiZ3oiZ7oiaBcIiw3LFwi6Imp5oun5rOe54mb5omt6ZKu57q96IST5rWT5Yac5byE5aW05Yqq5oCS5aWz5pqW6JmQ55af5oyq5oem57Ov6K+65ZOm5qyn6bil5q606JeV5ZGV5YG25rKk5ZWq6La054is5biV5oCV55C25ouN5o6S54mM5b6Y5rmD5rS+5pSA5r2Y55uY56OQ55u855WU5Yik5Y+b5LmT5bqe5peB6ICq6IOW5oqb5ZKG5Yio54Ku6KKN6LeR5rOh5ZG46IOa5Z+56KO06LWU6Zmq6YWN5L2p5rKb5Za355uG56Cw5oqo54O55r6O5b2t6JOs5qOa56G856+36Iao5pyL6bmP5o2n56Kw5Z2v56CS6Zy55om55oqr5YqI55C15q+XXCJdLFtcImM2NDBcIixcIuiJquiJq+iJrOiJreiJseiJteiJtuiJt+iJuOiJu+iJvOiKgOiKgeiKg+iKheiKhuiKh+iKieiKjOiKkOiKk+iKlOiKleiKluiKmuiKm+iKnuiKoOiKouiKo+iKp+iKsuiKteiKtuiKuuiKu+iKvOiKv+iLgOiLguiLg+iLheiLhuiLieiLkOiLluiLmeiLmuiLneiLouiLp+iLqOiLqeiLquiLrOiLreiLruiLsOiLsuiLs+iLteiLtuiLuFwiXSxbXCJjNjgwXCIsXCLoi7roi7xcIiw0LFwi6IyK6IyL6IyN6IyQ6IyS6IyT6IyW6IyY6IyZ6IydXCIsOSxcIuiMqeiMquiMruiMsOiMsuiMt+iMu+iMveWVpOiEvueWsuearuWMueeXnuWDu+WxgeitrOevh+WBj+eJh+mql+mjmOa8gueTouelqOaSh+eepeaLvOmikei0q+WTgeiBmOS5kuWdquiLueiQjeW5s+WHreeTtuivhOWxj+WdoeazvOmih+WphuegtOmthOi/q+eyleWJluaJkemTuuS7huiOhuiRoeiPqeiSsuWflOactOWcg+aZrua1puiwseabneeAkeacn+asuuagluaImuWmu+S4g+WHhOa8huafkuayj+WFtuaji+Wlh+atp+eVpuW0juiEkOm9kOaXl+eliOelgemqkei1t+WyguS5nuS8geWQr+WlkeegjOWZqOawlOi/hOW8g+axveazo+iuq+aOkFwiXSxbXCJjNzQwXCIsXCLojL7ojL/ojYHojYLojYTojYXojYjojYpcIiw0LFwi6I2T6I2VXCIsNCxcIuiNneiNouiNsFwiLDYsXCLojbnojbrojb5cIiw2LFwi6I6H6I6I6I6K6I6L6I6M6I6N6I6P6I6Q6I6R6I6U6I6V6I6W6I6X6I6Z6I6a6I6d6I6f6I6hXCIsNixcIuiOrOiOreiOrlwiXSxbXCJjNzgwXCIsXCLojq/ojrXojrvojr7ojr/oj4Loj4Poj4Toj4boj4joj4noj4voj43oj47oj5Doj5Hoj5Loj5Poj5Xoj5foj5noj5roj5voj57oj6Loj6Poj6Toj6boj6foj6joj6voj6zoj63mgbDmtL3nibXmiabpko7pk4XljYPov4Hnrb7ku5/osKbkub7pu5TpkrHpkrPliY3mvZzpgaPmtYXosLTloJHltYzmrKDmrYnmnqrlkZvohZTnvozlopnolLflvLrmiqLmqYfplLnmlbLmgoTmoaXnnqfkuZTkvqjlt6fpnpjmkqznv5jls63kv4/nqo3liIfojITkuJTmgK/nqoPpkqbkvrXkurLnp6bnkLTli6Toirnmk5Lnpr3lr53msoHpnZLovbvmsKLlgL7ljb/muIXmk47mmbTmsLDmg4Xpobfor7fluobnkLznqbfnp4vkuJjpgrHnkIPmsYLlm5rphYvms4XotovljLrom4bmm7Louq/lsYjpqbHmuKBcIl0sW1wiYzg0MFwiLFwi6I+u6I+v6I+zXCIsNCxcIuiPuuiPu+iPvOiPvuiPv+iQgOiQguiQheiQh+iQiOiQieiQiuiQkOiQklwiLDUsXCLokJnokJrokJvokJ5cIiw1LFwi6JCpXCIsNyxcIuiQslwiLDUsXCLokLnokLrokLvokL5cIiw3LFwi6JGH6JGI6JGJXCJdLFtcImM4ODBcIixcIuiRilwiLDYsXCLokZJcIiw0LFwi6JGY6JGd6JGe6JGf6JGg6JGi6JGkXCIsNCxcIuiRquiRruiRr+iRsOiRsuiRtOiRt+iRueiRu+iRvOWPluWotum+i+i2o+WOu+WciOmip+adg+mGm+azieWFqOeXiuaLs+eKrOWIuOWKnee8uueClOeYuOWNtOm5iuamt+ehrumbgOijmee+pOeEtueHg+WGieafk+eTpOWjpOaUmOWat+iuqemltuaJsOe7leaDueeDreWjrOS7geS6uuW/jemfp+S7u+iupOWIg+Wmiue6q+aJlOS7jeaXpeaIjuiMuOiTieiNo+iejeeGlOa6tuWuuee7kuWGl+aPieaflOiCieiMueigleWEkuWtuuWmgui+seS5s+axneWFpeikpei9r+mYruiViueRnumUkOmXsOa2puiLpeW8seaSkua0kuiQqOiFrumzg+Whnui1m+S4ieWPgVwiXSxbXCJjOTQwXCIsXCLokb1cIiw0LFwi6JKD6JKE6JKF6JKG6JKK6JKN6JKPXCIsNyxcIuiSmOiSmuiSm+iSneiSnuiSn+iSoOiSolwiLDEyLFwi6JKw6JKx6JKz6JK16JK26JK36JK76JK86JK+6JOA6JOC6JOD6JOF6JOG6JOH6JOI6JOL6JOM6JOO6JOP6JOS6JOU6JOV6JOXXCJdLFtcImM5ODBcIixcIuiTmFwiLDQsXCLok57ok6Hok6Lok6Tok6dcIiw0LFwi6JOt6JOu6JOv6JOxXCIsMTAsXCLok73ok77olIDolIHolILkvJ7mlaPmoZHll5PkuKfmkJTpqprmiavlq4LnkZ/oibLmtqnmo67lg6fojo7noILmnYDliLnmspnnurHlgrvllaXnhZ7nrZvmmZLnj4roi6vmnYnlsbHliKDnhb3ooavpl6rpmZXmk4XotaHohrPlloTmsZXmiYfnvK7lopLkvKTllYbotY/mmYzkuIrlsJroo7PmoqLmjY7nqI3ng6foio3li7rpn7blsJHlk6jpgrXnu43lpaLotYrom4foiIzoiI3otabmkYTlsITmhZHmtonnpL7orr7noLfnlLPlkbvkvLjouqvmt7HlqKDnu4XnpZ7msojlrqHlqbbnlJrogr7mhY7muJflo7DnlJ/nlKXnibLljYfnu7NcIl0sW1wiY2E0MFwiLFwi6JSDXCIsOCxcIuiUjeiUjuiUj+iUkOiUkuiUlOiUleiUluiUmOiUmeiUm+iUnOiUneiUnuiUoOiUolwiLDgsXCLolK1cIiw5LFwi6JS+XCIsNCxcIuiVhOiVheiVhuiVh+iVi1wiLDEwXSxbXCJjYTgwXCIsXCLolZfolZjolZrolZvolZzolZ3olZ9cIiw0LFwi6JWl6JWm6JWn6JWpXCIsOCxcIuiVs+iVteiVtuiVt+iVuOiVvOiVveiVv+iWgOiWgeecgeebm+WJqeiDnOWco+W4iOWkseeLruaWvea5v+ivl+WwuOiZseWNgeefs+aLvuaXtuS7gOmjn+iagOWunuivhuWPsuefouS9v+WxjumptuWni+W8j+ekuuWjq+S4luafv+S6i+aLreiqk+mAneWKv+aYr+WXnOWZrOmAguS7leS+jemHiumlsOawj+W4guaBg+WupOinhuivleaUtuaJi+mmluWuiOWvv+aOiOWUruWPl+eYpuWFveiUrOaeouais+auiuaKkui+k+WPlOiIkua3keeWj+S5pui1juWtsOeGn+iWr+aakeabmee9suicgOm7jem8oOWxnuacr+i/sOagkeadn+aIjeerluWiheW6tuaVsOa8sVwiXSxbXCJjYjQwXCIsXCLoloLoloPolobolohcIiw2LFwi6JaQXCIsMTAsXCLolp1cIiw2LFwi6Jal6Jam6Jan6Jap6Jar6Jas6Jat6JaxXCIsNSxcIuiWuOiWulwiLDYsXCLol4JcIiw2LFwi6JeKXCIsNCxcIuiXkeiXklwiXSxbXCJjYjgwXCIsXCLol5Tol5ZcIiw1LFwi6JedXCIsNixcIuiXpeiXpuiXp+iXqOiXqlwiLDE0LFwi5oGV5Yi36ICN5pGU6KGw55Sp5biF5qCT5ou06Zyc5Y+M54i96LCB5rC0552h56iO5ZCu556s6aG66Iic6K+056GV5pyU54OB5pav5pKV5Zi25oCd56eB5Y+45Lid5q276IKG5a+65Zej5Zub5Ly65Ly86aWy5bez5p2+6IC45oCC6aKC6YCB5a6L6K686K+15pCc6ImY5pOe5Ze96IuP6YWl5L+X57Sg6YCf57Kf5YOz5aGR5rqv5a6/6K+J6IKD6YW46JKc566X6Jm96ZqL6ZqP57ul6auT56KO5bKB56mX6YGC6Zqn56Wf5a2Z5o2f56yL6JOR5qKt5ZSG57yp55CQ57Si6ZSB5omA5aGM5LuW5a6D5aW55aGUXCJdLFtcImNjNDBcIixcIuiXueiXuuiXvOiXveiXvuiYgFwiLDQsXCLomIZcIiwxMCxcIuiYkuiYk+iYlOiYleiYl1wiLDE1LFwi6Jio6JiqXCIsMTMsXCLomLnomLromLvomL3omL7omL/omYBcIl0sW1wiY2M4MFwiLFwi6JmBXCIsMTEsXCLomZLomZPomZVcIiw0LFwi6Jmb6Jmc6Jmd6Jmf6Jmg6Jmh6JmjXCIsNyxcIueNreaMnui5i+i4j+iDjuiLlOaKrOWPsOazsOmFnuWkquaAgeaxsOWdjeaRiui0queYq+a7qeWdm+aqgOeXsOa9reiwreiwiOWdpuavr+iikueis+aOouWPueeCreaxpOWhmOaQquWgguajoOiGm+WUkOezluWAmOi6uua3jOi2n+eDq+aOj+a2m+a7lOe7puiQhOahg+mAg+a3mOmZtuiuqOWll+eJueiXpOiFvueWvOiqiuair+WJlOi4oumUkeaPkOmimOi5hOWVvOS9k+abv+Waj+aDlea2leWJg+WxieWkqea3u+Whq+eUsOeUnOaBrOiIlOiFhuaMkeadoei/ouecuui3s+i0tOmTgeW4luWOheWQrOeDg1wiXSxbXCJjZDQwXCIsXCLoma3oma/ombDombJcIiw2LFwi6JqDXCIsNixcIuiajlwiLDQsXCLompTompZcIiw1LFwi6JqeXCIsNCxcIuiapeiapuiaq+iareiaruiasuias+iat+iauOiaueiau1wiLDQsXCLom4Hom4Lom4Pom4Xom4jom4zom43om5Lom5Pom5Xom5bom5fom5rom5xcIl0sW1wiY2Q4MFwiLFwi6Jud6Jug6Juh6Jui6Juj6Jul6Jum6Jun6Juo6Juq6Jur6Jus6Juv6Ju16Ju26Ju36Ju66Ju76Ju86Ju96Ju/6JyB6JyE6JyF6JyG6JyL6JyM6JyO6JyP6JyQ6JyR6JyU6JyW5rGA5bu35YGc5Lqt5bqt5oy66ImH6YCa5qGQ6YWu556z5ZCM6ZOc5b2k56ul5qG25o2F562S57uf55eb5YG35oqV5aS06YCP5Ye456eD56qB5Zu+5b6S6YCU5raC5bGg5Zyf5ZCQ5YWU5rmN5Zui5o6o6aKT6IW/6JyV6KSq6YCA5ZCe5bGv6IeA5ouW5omY6ISx6bi16ZmA6amu6am85qSt5aal5ouT5ZS+5oyW5ZOH6JuZ5rS85aiD55Om6KKc5q2q5aSW6LGM5byv5rm+546p6aG95Li454O35a6M56KX5oy95pma55qW5oOL5a6b5amJ5LiH6IWV5rGq546L5Lqh5p6J572R5b6A5pe65pyb5b+Y5aaE5aiBXCJdLFtcImNlNDBcIixcIuicmeicm+icneicn+icoOicpOicpuicp+icqOicquicq+icrOicreicr+icsOicsuics+icteictuicuOicueicuuicvOicveidgFwiLDYsXCLonYronYvonY3onY/onZDonZHonZLonZTonZXonZbonZjonZpcIiw1LFwi6J2h6J2i6J2mXCIsNyxcIuidr+idseidsuids+idtVwiXSxbXCJjZTgwXCIsXCLonbfonbjonbnonbronb/onoDonoHonoTonobonofonononoronozono5cIiw0LFwi6J6U6J6V6J6W6J6YXCIsNixcIuieoFwiLDQsXCLlt43lvq7ljbHpn6bov53moYXlm7TllK/mg5/kuLrmvY3nu7Toi4fokI7lp5TkvJ/kvKrlsL7nuqzmnKrolJrlkbPnlY/og4PlloLprY/kvY3muK3osJPlsInmhbDljavnmJ/muKnomormlofpl7vnurnlkLvnqLPntIrpl67ll6Hnv4Hnk67mjJ3onJfmtqHnqp3miJHmlqHljafmj6HmsoPlt6vlkZzpkqjkuYzmsaHor6zlsYvml6DoipzmoqflkL7lkLTmr4vmrabkupTmjYLljYjoiJ7kvI3kvq7lnZ7miIrpm77mmaTnianli7/liqHmgp/or6/mmJTnhpnmnpDopb/noZLnn73mmbDlmLvlkLjplKHnibpcIl0sW1wiY2Y0MFwiLFwi6J6l6J6m6J6n6J6p6J6q6J6u6J6w6J6x6J6y6J606J626J636J646J656J676J686J6+6J6/6J+BXCIsNCxcIuifh+ifiOifieifjFwiLDQsXCLon5RcIiw2LFwi6J+c6J+d6J+e6J+f6J+h6J+i6J+j6J+k6J+m6J+n6J+o6J+p6J+r6J+s6J+t6J+vXCIsOV0sW1wiY2Y4MFwiLFwi6J+66J+76J+86J+96J+/6KCA6KCB6KCC6KCEXCIsNSxcIuigi1wiLDcsXCLooJTooJfooJjooJnooJrooJxcIiw0LFwi6KCj56iA5oGv5biM5oKJ6Iad5aSV5oOc54aE54Ov5rqq5rGQ54qA5qqE6KKt5bit5Lmg5aqz5Zac6ZOj5rSX57O76ZqZ5oiP57uG556O6Jm+5Yyj6Zye6L6W5pqH5bOh5L6g54ut5LiL5Y6m5aSP5ZCT5o6A6ZSo5YWI5LuZ6bKc57qk5ZK46LSk6KGU6Ii36Zey5raO5bym5auM5pi+6Zmp546w54yu5Y6/6IW66aaF576h5a6q6Zm36ZmQ57q/55u45Y6i6ZW26aaZ566x6KWE5rmY5Lmh57+U56Wl6K+m5oOz5ZON5Lqr6aG55be35qmh5YOP5ZCR6LGh6JCn56Gd6ZyE5YmK5ZOu5Zqj6ZSA5raI5a615reG5pmTXCJdLFtcImQwNDBcIixcIuigpFwiLDEzLFwi6KCzXCIsNSxcIuiguuigu+igveigvuigv+ihgeihguihg+ihhlwiLDUsXCLooY5cIiw1LFwi6KGV6KGW6KGY6KGaXCIsNixcIuihpuihp+ihquihreihr+ihseihs+ihtOihteihtuihuOihueihulwiXSxbXCJkMDgwXCIsXCLoobvoobzoooDoooPooobooofooonooorooozooo7ooo/oopDoopHoopPoopToopXoopdcIiw0LFwi6KKdXCIsNCxcIuiio+iipVwiLDUsXCLlsI/lrZ3moKHogpbllbjnrJHmlYjmpZTkupvmrYfonY7pnovljY/mjJ/mkLrpgqrmlpzog4HosJDlhpnmorDljbjon7nmh4jms4Tms7vosKLlsZHolqroiq/plIzmrKPovpvmlrDlv7vlv4Pkv6HooYXmmJ/ohaXnjKnmg7rlhbTliJHlnovlvaLpgqLooYzphpLlubjmnY/mgKflp5PlhYTlh7bog7jljIjmsbnpm4TnhorkvJHkv67nvp7mnL3ll4XplIjnp4Doopbnu6Plop/miIzpnIDomZrlmJjpobvlvpDorrjok4TphZflj5nml63luo/nlZzmgaTnta7lqb/nu6rnu63ovanllqflrqPmgqzml4vnjoRcIl0sW1wiZDE0MFwiLFwi6KKs6KKu6KKv6KKw6KKyXCIsNCxcIuiiuOiiueiiuuiiu+iiveiivuiiv+ijgOijg+ijhOijh+ijiOijiuiji+ijjOijjeijj+ijkOijkeijk+ijluijl+ijmlwiLDQsXCLoo6Doo6Hoo6boo6foo6lcIiw2LFwi6KOy6KO16KO26KO36KO66KO76KO96KO/6KSA6KSB6KSDXCIsNV0sW1wiZDE4MFwiLFwi6KSJ6KSLXCIsNCxcIuikkeiklFwiLDQsXCLopJxcIiw0LFwi6KSi6KSj6KSk6KSm6KSn6KSo6KSp6KSs6KSt6KSu6KSv6KSx6KSy6KSz6KS16KS36YCJ55mj55yp57ua6Z206Jab5a2m56m06Zuq6KGA5YuL54aP5b6q5pes6K+i5a+76amv5beh5q6J5rGb6K6t6K6v6YCK6L+F5Y6L5oq86bim6bit5ZGA5Lir6Iq954mZ6Jqc5bSW6KGZ5rav6ZuF5ZOR5Lqa6K6254SJ5ZK96ZiJ54Of5re555uQ5Lil56CU6JyS5bKp5bu26KiA6aKc6ZiO54KO5rK/5aWE5o6p55y86KGN5ryU6Imz5aCw54eV5Y6M56Ca6ZuB5ZSB5b2m54Sw5a606LCa6aqM5q6D5aSu6biv56en5p2o5oms5L2v55ah576K5rSL6Ziz5rCn5Luw55eS5YW75qC35ry+6YKA6IWw5aaW55G2XCJdLFtcImQyNDBcIixcIuikuFwiLDgsXCLopYLopYPopYVcIiwyNCxcIuiloFwiLDUsXCLopadcIiwxOSxcIuilvFwiXSxbXCJkMjgwXCIsXCLopb3opb7opoDopoLopoTopoXopodcIiwyNixcIuaRh+Wwp+mBpeeqkeiwo+WnmuWSrOiIgOiNr+imgeiAgOaksOWZjuiAtueIt+mHjuWGtuS5n+mhteaOluS4muWPtuabs+iFi+WknOa2suS4gOWjueWMu+aPlumTseS+neS8iuiho+mikOWkt+mBl+enu+S7quiDsOeWkeayguWunOWnqOW9neakheiageWAmuW3suS5meefo+S7peiJuuaKkeaYk+mCkeWxueS6v+W9ueiHhumAuOiChOeWq+S6puijlOaEj+avheW/huS5ieebiua6ouivo+iuruiwiuivkeW8gue/vOe/jOe7juiMteiNq+WboOaut+mfs+mYtOWnu+WQn+mTtua3q+WvhemlruWwueW8lemakFwiXSxbXCJkMzQwXCIsXCLopqJcIiwzMCxcIuing+injeink+inlOinleinl+inmOinmeinm+inneinn+inoOinoeinouinpOinp+inqOinqeinquinrOinreinruinsOinseinsuintFwiLDZdLFtcImQzODBcIixcIuinu1wiLDQsXCLoqIFcIiw1LFwi6KiIXCIsMjEsXCLljbDoi7HmqLHlqbTpubDlupTnvKjojrnokKTokKXojafonYfov47otaLnm4jlvbHpopbnoazmmKDlk5/mi6XkvaPoh4Pnl4jlurjpm43ouIrom7nlko/ms7PmtozmsLjmgb/li4fnlKjlub3kvJjmgqDlv6flsKTnlLHpgq7pk4DnirnmsrnmuLjphYnmnInlj4vlj7PkvZHph4nor7Hlj4jlubzov4Lmt6Tkuo7nm4LmpobomZ7mhJroiIbkvZnkv57pgL7psbzmhInmuJ3muJTpmoXkuojlqLHpm6jkuI7lsb/nprnlrofor63nvr3njonln5/oiovpg4HlkIHpgYfllrvls6rlvqHmhIjmrLLni7HogrLoqolcIl0sW1wiZDQ0MFwiLFwi6KieXCIsMzEsXCLoqL9cIiw4LFwi6KmJXCIsMjFdLFtcImQ0ODBcIixcIuipn1wiLDI1LFwi6Km6XCIsNixcIua1tOWvk+ijlemihOixq+mprem4s+a4iuWGpOWFg+Weo+iigeWOn+aPtOi+leWbreWRmOWchueMv+a6kOe8mOi/nOiLkeaEv+aAqOmZouabsOe6pui2iui3g+mSpeWys+eypOaciOaCpumYheiAmOS6kemDp+WMgOmZqOWFgei/kOiVtOmFneaZlemfteWtleWMneeguOadguagveWTieeBvuWusOi9veWGjeWcqOWSseaUkuaagui1nui1g+iEj+iRrOmBreezn+WHv+iXu+aeo+aXqea+oeiapOi6geWZqumAoOeagueBtueHpei0o+aLqeWImeazvei0vOaAjuWinuaGjuabvui1oOaJjuWWs+a4o+acrei9p1wiXSxbXCJkNTQwXCIsXCLoqoFcIiw3LFwi6KqLXCIsNyxcIuiqlFwiLDQ2XSxbXCJkNTgwXCIsXCLoq4NcIiwzMixcIumToemXuOecqOagheamqOWSi+S5jeeCuOiviOaRmOaWi+WuheeqhOWAuuWvqOeeu+avoeipueeymOayvuebj+aWqei+l+W0reWxleiYuOagiOWNoOaImOermea5m+e7veaon+eroOW9sOa8s+W8oOaOjOa2qOadluS4iOW4kOi0puS7l+iDgOeYtOmanOaLm+aYreaJvuayvOi1teeFp+e9qeWFhuiCh+WPrOmBruaKmOWTsuibsOi+meiAhemUl+iUl+i/mea1meePjeaWn+ecn+eUhOegp+iHu+i0numSiOS+puaeleeWueiviumch+aMr+mVh+mYteiSuOaMo+edgeW+geeLsOS6ieaAlOaVtOaLr+ato+aUv1wiXSxbXCJkNjQwXCIsXCLoq6RcIiwzNCxcIuisiFwiLDI3XSxbXCJkNjgwXCIsXCLorKTorKXorKdcIiwzMCxcIuW4p+eXh+mDkeivgeiKneaeneaUr+WQseicmOefpeiCouiEguaxgeS5i+e7h+iBjOebtOakjeauluaJp+WAvOS+hOWdgOaMh+atoui2vuWPquaXqOe6uOW/l+aMmuaOt+iHs+iHtOe9ruW4nOWzmeWItuaZuuenqeeomui0qOeCmeeXlOa7nuayu+eqkuS4reebheW/oOmSn+iht+e7iOenjeiCv+mHjeS7suS8l+iIn+WRqOW3nua0suivjOeypei9tOiCmOW4muWSkueaseWumeaYvOmqpOePoOagquibm+acseeMquivuOivm+mAkOerueeDm+eFruaLhOeeqeWYseS4u+iRl+afseWKqeibgOi0rumTuOetkVwiXSxbXCJkNzQwXCIsXCLorYZcIiwzMSxcIuitp1wiLDQsXCLora1cIiwyNV0sW1wiZDc4MFwiLFwi6K6HXCIsMjQsXCLorqzorrHorrvor4for5Dor6rosInosJ7kvY/ms6jnpZ3pqbvmipPniKrmi73kuJPnoJbovazmkrDotZrnr4bmoanluoToo4Xlpobmkp7lo67nirbmpI7plKXov73otZjlnaDnvIDosIblh4bmjYnmi5nljZPmoYznkKLojIHphYzllYTnnYDngbzmtYrlhbnlkqjotYTlp7/mu4vmt4TlrZzntKvku5Tnsb3mu5PlrZDoh6rmuI3lrZfprIPmo5XouKrlrpfnu7zmgLvnurXpgrnotbDlpY/mj43np5/otrPljZLml4/npZbor4XpmLvnu4TpkrvnuoLlmLTphonmnIDnvarlsIrpgbXmmKjlt6bkvZDmn57lgZrkvZzlnZDluqdcIl0sW1wiZDg0MFwiLFwi6LC4XCIsOCxcIuixguixg+ixhOixheixiOixiuixi+ixjVwiLDcsXCLosZbosZfosZjosZnosZtcIiw1LFwi6LGjXCIsNixcIuixrFwiLDYsXCLosbTosbXosbbosbfosbtcIiw2LFwi6LKD6LKE6LKG6LKHXCJdLFtcImQ4ODBcIixcIuiyiOiyi+iyjVwiLDYsXCLospXospbospfosplcIiwyMCxcIuS6jeS4jOWFgOS4kOW7v+WNheS4leS6mOS4numssuWtrOWZqeS4qOemuuS4v+WMleS5h+WkreeIu+WNruawkOWbn+iDpOmml+avk+edvum8l+S4tuS6n+m8kOS5nOS5qeS6k+iKiOWtm+WVrOWYj+S7hOWOjeWOneWOo+WOpeWOrumdpei1neWMmuWPteWMpuWMruWMvui1nOWNpuWNo+WIguWIiOWIjuWIreWIs+WIv+WJgOWJjOWJnuWJoeWJnOiSr+WJveWKguWKgeWKkOWKk+WGgue9lOS6u+S7g+S7ieS7guS7qOS7oeS7q+S7nuS8m+S7s+S8ouS9pOS7teS8peS8p+S8ieS8q+S9nuS9p+aUuOS9muS9nVwiXSxbXCJkOTQwXCIsXCLosq5cIiw2Ml0sW1wiZDk4MFwiLFwi6LOtXCIsMzIsXCLkvZ/kvZfkvLLkvL3kvbbkvbTkvpHkvonkvoPkvo/kvb7kvbvkvqrkvbzkvqzkvpTkv6bkv6jkv6rkv4Xkv5rkv6Pkv5zkv5Hkv5/kv7jlgKnlgYzkv7PlgKzlgI/lgK7lgK3kv77lgJzlgIzlgKXlgKjlgb7lgYPlgZXlgYjlgY7lgazlgbvlgqXlgqflgqnlgrrlg5blhIblg63lg6zlg6blg67lhIflhIvku53msL3kvZjkvaXkv47pvqDmsYbnsbTlha7lt73pu4npppjlhoHlpJTli7nljI3oqIfljJDlh6vlpJnlhZXkuqDlhZbkurPooa7ooqTkurXohJToo5LnpoDlrLTooIPnvrjlhqvlhrHlhr3lhrxcIl0sW1wiZGE0MFwiLFwi6LSOXCIsMTQsXCLotKDotZHotZLotZfotZ/otaXotajotanotarotazota7ota/otbHotbLotbhcIiw4LFwi6LaC6LaD6LaG6LaH6LaI6LaJ6LaMXCIsNCxcIui2kui2k+i2lVwiLDksXCLotqDotqFcIl0sW1wiZGE4MFwiLFwi6Lai6LakXCIsMTIsXCLotrLotrbotrfotrnotrvotr3ot4Dot4Hot4Lot4Xot4fot4jot4not4rot43ot5Dot5Lot5Pot5Tlh4flhpblhqLlhqXorqDorqborqforqrorrTorrXorrfor4Lor4Por4vor4/or47or5Lor5Por5Tor5bor5jor5nor5zor5/or6Dor6Tor6jor6nor67or7Dor7Por7bor7nor7zor7/osIDosILosITosIfosIzosI/osJHosJLosJTosJXosJbosJnosJvosJjosJ3osJ/osKDosKHosKXosKfosKrosKvosK7osK/osLLosLPosLXosLbljanljbrpmJ3pmKLpmKHpmLHpmKrpmL3pmLzpmYLpmYnpmZTpmZ/pmafpmazpmbLpmbTpmojpmo3pmpfpmrDpgpfpgpvpgp3pgpnpgqzpgqHpgrTpgrPpgrbpgrpcIl0sW1wiZGI0MFwiLFwi6LeV6LeY6LeZ6Lec6Leg6Leh6Lei6Lel6Lem6Len6Lep6Let6Leu6Lew6Lex6Ley6Le06Le26Le86Le+XCIsNixcIui4hui4h+i4iOi4i+i4jei4jui4kOi4kei4kui4k+i4lVwiLDcsXCLouKDouKHouKRcIiw0LFwi6Lir6Lit6Liw6Liy6Liz6Li06Li26Li36Li46Li76Li86Li+XCJdLFtcImRiODBcIixcIui4v+i5g+i5hei5hui5jFwiLDQsXCLouZNcIiw1LFwi6LmaXCIsMTEsXCLouafouajouarouavoua7oubHpgrjpgrDpg4/pg4Xpgr7pg5Dpg4Tpg4fpg5Ppg6bpg6Lpg5zpg5fpg5vpg6vpg6/pg77phITphKLphJ7phKPphLHphK/phLnphYPphYbliI3lpYLliqLliqzliq3lir7lk7/li5Dli5bli7Dlj5/nh67nn43lu7Tlh7Xlh7zprK/ljrblvIHnlZrlt6/lnYzlnqnlnqHlob7lorzlo4Xlo5HlnKnlnKzlnKrlnLPlnLnlnK7lnK/lnZzlnLvlnYLlnanlnoXlnavlnoblnbzlnbvlnajlna3lnbblnbPlnq3lnqTlnozlnrLln4/lnqflnrTlnpPlnqDln5Xln5jln5rln5nln5Llnrjln7Tln6/ln7jln6Tln51cIl0sW1wiZGM0MFwiLFwi6Lmz6Lm16Lm3XCIsNCxcIui5vei5vui6gOi6gui6g+i6hOi6hui6iFwiLDYsXCLoupHoupLoupPoupVcIiw2LFwi6Lqd6LqfXCIsMTEsXCLouq3ouq7ourDourHourNcIiw2LFwi6Lq7XCIsN10sW1wiZGM4MFwiLFwi6LuDXCIsMTAsXCLou49cIiwyMSxcIuWgi+WgjeWfveWfreWggOWgnuWgmeWhhOWgoOWhpeWhrOWigeWiieWimuWigOmmqOm8meaHv+iJueiJveiJv+iKj+iKiuiKqOiKhOiKjuiKkeiKl+iKmeiKq+iKuOiKvuiKsOiLiOiLiuiLo+iKmOiKt+iKruiLi+iLjOiLgeiKqeiKtOiKoeiKquiKn+iLhOiLjuiKpOiLoeiMieiLt+iLpOiMj+iMh+iLnOiLtOiLkuiLmOiMjOiLu+iLk+iMkeiMmuiMhuiMlOiMleiLoOiLleiMnOiNkeiNm+iNnOiMiOiOkuiMvOiMtOiMseiOm+iNnuiMr+iNj+iNh+iNg+iNn+iNgOiMl+iNoOiMreiMuuiMs+iNpuiNpVwiXSxbXCJkZDQwXCIsXCLou6VcIiw2Ml0sW1wiZGQ4MFwiLFwi6LykXCIsMzIsXCLojajojJvojanojazojaroja3oja7ojrDojbjojrPojrTojqDojqrojpPojpzojoXojbzojrbojqnojb3ojrjojbvojpjojp7ojqjojrrojrzoj4HokIHoj6Xoj5jloIfokJjokIvoj53oj73oj5bokJzokLjokJHokIboj5Toj5/okI/okIPoj7joj7noj6roj4Xoj4DokKboj7Doj6HokZzokZHokZrokZnokbPokofokojokbrokonokbjokLzokYbokanokbbokozoko7okLHoka3ok4Hok43ok5Dok6bokr3ok5Pok4rokr/okrrok6DokqHokrnokrTokpfok6Xok6PolIznlI3olLjok7DolLnolJ/olLpcIl0sW1wiZGU0MFwiLFwi6L2FXCIsMzIsXCLovarovoDovozovpLovp3ovqDovqHovqLovqTovqXovqbovqfovqrovqzovq3ovq7ovq/ovrLovrPovrTovrXovrfovrjovrrovrvovrzovr/ov4Dov4Pov4ZcIl0sW1wiZGU4MFwiLFwi6L+JXCIsNCxcIui/j+i/kui/lui/l+i/mui/oOi/oei/o+i/p+i/rOi/r+i/sei/sui/tOi/tei/tui/uui/u+i/vOi/vui/v+mAh+mAiOmAjOmAjumAk+mAlemAmOiVluiUu+iTv+iTvOiVmeiViOiVqOiVpOiVnuiVuueeouiVg+iVsuiVu+iWpOiWqOiWh+iWj+iVueiWruiWnOiWheiWueiWt+iWsOiXk+iXgeiXnOiXv+iYp+iYheiYqeiYluiYvOW7vuW8iOWkvOWlgeiAt+WlleWlmuWlmOWMj+WwouWwpeWwrOWwtOaJjOaJquaKn+aKu+aLiuaLmuaLl+aLruaMouaLtuaMueaNi+aNg+aOreaPtuaNseaNuuaOjuaOtOaNreaOrOaOiuaNqeaOruaOvOaPsuaPuOaPoOaPv+aPhOaPnuaPjuaRkuaPhuaOvuaRheaRgeaQi+aQm+aQoOaQjOaQpuaQoeaRnuaShOaRreaSllwiXSxbXCJkZjQwXCIsXCLpgJnpgJzpgKPpgKTpgKXpgKdcIiw1LFwi6YCwXCIsNCxcIumAt+mAuemAuumAvemAv+mBgOmBg+mBhemBhumBiFwiLDQsXCLpgY7pgZTpgZXpgZbpgZnpgZrpgZxcIiw1LFwi6YGk6YGm6YGn6YGp6YGq6YGr6YGs6YGvXCIsNCxcIumBtlwiLDYsXCLpgb7pgoFcIl0sW1wiZGY4MFwiLFwi6YKE6YKF6YKG6YKH6YKJ6YKK6YKMXCIsNCxcIumCkumClOmClumCmOmCmumCnOmCnumCn+mCoOmCpOmCpemCp+mCqOmCqemCq+mCremCsumCt+mCvOmCvemCv+mDgOaRuuaSt+aSuOaSmeaSuuaTgOaTkOaTl+aTpOaTouaUieaUpeaUruW8i+W/kueUmeW8keWNn+WPseWPveWPqeWPqOWPu+WQkuWQluWQhuWRi+WRkuWRk+WRlOWRluWRg+WQoeWRl+WRmeWQo+WQsuWSguWSlOWRt+WRseWRpOWSmuWSm+WShOWRtuWRpuWSneWTkOWSreWTguWStOWTkuWSp+WSpuWTk+WTlOWRsuWSo+WTleWSu+WSv+WTjOWTmeWTmuWTnOWSqeWSquWSpOWTneWTj+WTnuWUm+WTp+WUoOWTveWUlOWTs+WUouWUo+WUj+WUkeWUp+WUquWVp+WWj+WWteWVieWVreWVgeWVleWUv+WVkOWUvFwiXSxbXCJlMDQwXCIsXCLpg4Lpg4Ppg4bpg4jpg4npg4vpg4zpg43pg5Lpg5Tpg5Xpg5bpg5jpg5npg5rpg57pg5/pg6Dpg6Ppg6Tpg6Xpg6npg6rpg6zpg67pg7Dpg7Hpg7Lpg7Ppg7Xpg7bpg7fpg7npg7rpg7vpg7zpg7/phIDphIHphIPphIVcIiwxOSxcIumEmumEm+mEnFwiXSxbXCJlMDgwXCIsXCLphJ3phJ/phKDphKHphKRcIiwxMCxcIumEsOmEslwiLDYsXCLphLpcIiw4LFwi6YWE5ZS35ZWW5ZW15ZW25ZW35ZSz5ZSw5ZWc5ZaL5ZeS5ZaD5Zax5Za55ZaI5ZaB5Zaf5ZW+5ZeW5ZaR5ZW75Zef5Za95Za+5ZaU5ZaZ5Zeq5Ze35ZeJ5Zif5ZeR5Zer5Zes5ZeU5Zem5Zed5ZeE5Zev5Zel5Zey5Zez5ZeM5ZeN5Zeo5Ze15Zek6L6U5Zie5ZiI5ZiM5ZiB5Zik5Zij5Ze+5ZiA5Zin5Zit5ZmY5Zi55ZmX5Zis5ZmN5Zmi5ZmZ5Zmc5ZmM5ZmU5ZqG5Zmk5Zmx5Zmr5Zm75Zm85ZqF5ZqT5Zqv5ZuU5ZuX5Zud5Zuh5Zu15Zur5Zu55Zu/5ZyE5ZyK5ZyJ5Zyc5biP5biZ5biU5biR5bix5bi75bi8XCJdLFtcImUxNDBcIixcIumFhemFh+mFiOmFkemFk+mFlOmFlemFlumFmOmFmemFm+mFnOmFn+mFoOmFpumFp+mFqOmFq+mFremFs+mFuumFu+mFvOmGgFwiLDQsXCLphobphojphorpho7pho/phpNcIiw2LFwi6YacXCIsNSxcIumGpFwiLDUsXCLphqvphqzphrDphrHphrLphrPphrbphrfphrjphrnphrtcIl0sW1wiZTE4MFwiLFwi6Ya8XCIsMTAsXCLph4jph4vph5Dph5JcIiw5LFwi6YedXCIsOCxcIuW4t+W5hOW5lOW5m+W5nuW5oeWyjOWxuuWyjeWykOWyluWyiOWymOWymeWykeWymuWynOWyteWyouWyveWyrOWyq+WyseWyo+WzgeWyt+WzhOWzkuWzpOWzi+WzpeW0guW0g+W0p+W0puW0ruW0pOW0nuW0huW0m+W1mOW0vuW0tOW0veW1rOW1m+W1r+W1neW1q+W1i+W1iuW1qeW1tOW2guW2meW2neixs+W2t+W3heW9s+W9t+W+guW+h+W+ieW+jOW+leW+meW+nOW+qOW+reW+teW+vOihouW9oeeKreeKsOeKtOeKt+eKuOeLg+eLgeeLjueLjeeLkueLqOeLr+eLqeeLsueLtOeLt+eMgeeLs+eMg+eLulwiXSxbXCJlMjQwXCIsXCLph6ZcIiw2Ml0sW1wiZTI4MFwiLFwi6YilXCIsMzIsXCLni7vnjJfnjJPnjKHnjIrnjJ7njJ3njJXnjKLnjLnnjKXnjKznjLjnjLHnjZDnjY3njZfnjaDnjaznja/njb7oiJvlpKXpo6flpKTlpILppaPppadcIiw1LFwi6aW06aW36aW96aaA6aaE6aaH6aaK6aaN6aaQ6aaR6aaT6aaU6aaV5bqA5bqR5bqL5bqW5bql5bqg5bq55bq15bq+5bqz6LWT5buS5buR5bub5buo5buq6Ia65b+E5b+J5b+W5b+P5oCD5b+u5oCE5b+h5b+k5b++5oCF5oCG5b+q5b+t5b+45oCZ5oC15oCm5oCb5oCP5oCN5oCp5oCr5oCK5oC/5oCh5oG45oG55oG75oG65oGCXCJdLFtcImUzNDBcIixcIumJhlwiLDQ1LFwi6Ym1XCIsMTZdLFtcImUzODBcIixcIumKhlwiLDcsXCLpio9cIiwyNCxcIuaBquaBveaCluaCmuaCreaCneaCg+aCkuaCjOaCm+aDrOaCu+aCseaDneaDmOaDhuaDmuaCtOaEoOaEpuaEleaEo+aDtOaEgOaEjuaEq+aFiuaFteaGrOaGlOaGp+aGt+aHlOaHteW/nemas+mXqemXq+mXsemXs+mXtemXtumXvOmXvumYg+mYhOmYhumYiOmYiumYi+mYjOmYjemYj+mYkumYlemYlumYl+mYmemYmuS4rOeIv+aIleawteaxlOaxnOaxiuayo+ayheaykOaylOayjOaxqOaxqeaxtOaxtuayhuayqeazkOazlOayreazt+azuOazseazl+aysuazoOazluazuuazq+azruayseazk+azr+azvlwiXSxbXCJlNDQwXCIsXCLpiqhcIiw1LFwi6YqvXCIsMjQsXCLpi4lcIiwzMV0sW1wiZTQ4MFwiLFwi6YupXCIsMzIsXCLmtLnmtKfmtIzmtYPmtYjmtIfmtITmtJnmtI7mtKvmtY3mtK7mtLXmtJrmtY/mtZLmtZTmtLPmtpHmta/mtp7mtqDmtZ7mtpPmtpTmtZzmtaDmtbzmtaPmuJrmt4fmt4Xmt57muI7mtr/mt6DmuJHmt6bmt53mt5nmuJbmtqvmuIzmtq7muKvmua7muY7muavmurLmuZ/muobmuZPmuZTmuLLmuKXmuYTmu5/murHmupjmu6DmvK3mu6LmuqXmuqfmur3murvmurfmu5fmurTmu4/muo/mu4Lmup/mvaLmvYbmvYfmvKTmvJXmu7nmvK/mvLbmvYvmvbTmvKrmvInmvKnmvonmvo3mvozmvbjmvbLmvbzmvbrmv5FcIl0sW1wiZTU0MFwiLFwi6YyKXCIsNTEsXCLpjL9cIiwxMF0sW1wiZTU4MFwiLFwi6Y2KXCIsMzEsXCLpjavmv4nmvqfmvrnmvrbmv4Lmv6Hmv67mv57mv6Dmv6/ngJrngKPngJvngLnngLXngY/ngZ7lroDlroTlrpXlrpPlrqXlrrjnlK/pqp7mkLTlr6Tlr67opLDlr7DouYforIfovrbov5Pov5Xov6Xov67ov6Tov6nov6bov7Pov6jpgIXpgITpgIvpgKbpgJHpgI3pgJbpgKHpgLXpgLbpgK3pgK/pgYTpgZHpgZLpgZDpgajpgZjpgaLpgZvmmrnpgbTpgb3pgoLpgojpgoPpgovlvZDlvZflvZblvZjlsLvlkqvlsZDlsZnlrbHlsaPlsabnvrzlvKrlvKnlvK3oibTlvLzprLvlsa7lpoHlpoPlpo3lpqnlpqrlpqNcIl0sW1wiZTY0MFwiLFwi6Y2sXCIsMzQsXCLpjpBcIiwyN10sW1wiZTY4MFwiLFwi6Y6sXCIsMjksXCLpj4vpj4zpj43lppflp4rlpqvlpp7lpqTlp5LlprLlpq/lp5flpr7lqIXlqIblp53lqIjlp6Plp5jlp7nlqIzlqInlqLLlqLTlqJHlqKPlqJPlqYDlqaflqYrlqZXlqLzlqaLlqbXog6zlqqrlqpvlqbflqbrlqr7lq6vlqrLlq5Llq5Tlqrjlq6Dlq6Plq7Hlq5blq6blq5jlq5zlrInlrJflrJblrLLlrLflrYDlsJXlsJzlrZrlraXlrbPlrZHlrZPlraLpqbXpqbfpqbjpqbrpqb/pqb3pqoDpqoHpqoXpqojpqorpqpDpqpLpqpPpqpbpqpjpqpvpqpzpqp3pqp/pqqDpqqLpqqPpqqXpqqfnup/nuqHnuqPnuqXnuqjnuqlcIl0sW1wiZTc0MFwiLFwi6Y+OXCIsNyxcIumPl1wiLDU0XSxbXCJlNzgwXCIsXCLpkI5cIiwzMixcIue6ree6sOe6vue7gOe7gee7gue7iee7i+e7jOe7kOe7lOe7l+e7m+e7oOe7oee7qOe7q+e7rue7r+e7see7sue8jee7tue7uue7u+e7vue8gee8gue8g+e8h+e8iOe8i+e8jOe8j+e8kee8kue8l+e8mee8nOe8m+e8n+e8oVwiLDYsXCLnvKrnvKvnvKznvK3nvK9cIiw0LFwi57y15bm655W/5beb55S+6YKV546O546R546u546i546f54+P54+C54+R5463546z54+A54+J54+I54+l54+Z6aG855CK54+p54+n54+e546654+y55CP55Cq55Gb55Cm55Cl55Co55Cw55Cu55CsXCJdLFtcImU4NDBcIixcIumQr1wiLDE0LFwi6ZC/XCIsNDMsXCLpkazpka3pka7pka9cIl0sW1wiZTg4MFwiLFwi6ZGwXCIsMjAsXCLpkpHpkpbpkpjpk4fpk4/pk5Ppk5Tpk5rpk6bpk7vplJzplKDnkJvnkJrnkYHnkZznkZfnkZXnkZnnkbfnka3nkb7nkpznko7nkoDnkoHnkofnkovnkp7nkqjnkqnnkpDnkqfnk5Lnkrrpn6rpn6vpn6zmnYzmnZPmnZ7mnYjmnanmnqXmnofmnarmnbPmnpjmnqfmnbXmnqjmnp7mnq3mnovmnbfmnbzmn7DmoInmn5jmoIrmn6nmnrDmoIzmn5nmnrXmn5rmnrPmn53moIDmn4Pmnrjmn6LmoI7mn4Hmn73moLLmoLPmoaDmoaHmoY7moaLmoYTmoaTmooPmoJ3moZXmoabmoYHmoafmoYDmoL7moYrmoYnmoKnmorXmoo/mobTmobfmopPmoavmo4Lmpa7mo7zmpJ/mpKDmo7lcIl0sW1wiZTk0MFwiLFwi6ZSn6ZSz6ZS96ZWD6ZWI6ZWL6ZWV6ZWa6ZWg6ZWu6ZW06ZW16ZW3XCIsNyxcIumWgFwiLDQyXSxbXCJlOTgwXCIsXCLplqtcIiwzMixcIuakpOajsOaki+akgeall+ajo+akkOalseakuealoOalgualneamhOalq+amgOammOaluOaktOanjOamh+amiOanjuamiealpualo+alueamm+amp+amu+amq+amreanlOamseangeaniuann+amleanoOamjeanv+aor+anreaol+aomOappeansuaphOaovuaqoOapkOapm+aoteaqjuapueaoveaoqOapmOapvOaqkeaqkOaqqeaql+aqq+eMt+eNkuaugeauguauh+auhOaukuauk+aujeaumuaum+auoeauqui9q+i9rei9sei9sui9s+i9tei9tui9uOi9t+i9uei9uui9vOi9vui+gei+gui+hOi+h+i+i1wiXSxbXCJlYTQwXCIsXCLpl4xcIiwyNyxcIumXrOmXv+mYh+mYk+mYmOmYm+mYnumYoOmYo1wiLDYsXCLpmKvpmKzpmK3pmK/pmLDpmLfpmLjpmLnpmLrpmL7pmYHpmYPpmYrpmY7pmY/pmZHpmZLpmZPpmZbpmZdcIl0sW1wiZWE4MFwiLFwi6ZmY6ZmZ6Zma6Zmc6Zmd6Zme6Zmg6Zmj6Zml6Zmm6Zmr6ZmtXCIsNCxcIumZs+mZuFwiLDEyLFwi6ZqH6ZqJ6ZqK6L6N6L6O6L6P6L6Y6L6a6LuO5oiL5oiX5oib5oif5oii5oih5oil5oik5ois6Ien55Ov55O055O/55SP55SR55ST5pS05peu5pev5pew5piK5piZ5p2y5piD5piV5piA54KF5pu35pid5pi05pix5pi25pi16ICG5pmf5pmU5pmB5pmP5pmW5pmh5pmX5pm35pqE5pqM5pqn5pqd5pq+5pub5puc5pum5pup6LSy6LSz6LS26LS76LS96LWA6LWF6LWG6LWI6LWJ6LWH6LWN6LWV6LWZ6KeH6KeK6KeL6KeM6KeO6KeP6KeQ6KeR54mu54qf54md54mm54mv54m+54m/54qE54qL54qN54qP54qS5oyI5oyy5o6wXCJdLFtcImViNDBcIixcIumajOmajumakemakumak+malemalumamumam+manVwiLDksXCLpmqhcIiw3LFwi6Zqx6Zqy6Zq06Zq16Zq36Zq46Zq66Zq76Zq/6ZuC6ZuD6ZuI6ZuK6ZuL6ZuQ6ZuR6ZuT6ZuU6ZuWXCIsOSxcIumboVwiLDYsXCLpm6tcIl0sW1wiZWI4MFwiLFwi6Zus6Zut6Zuu6Zuw6Zux6Zuy6Zu06Zu16Zu46Zu66Zu76Zu86Zu96Zu/6ZyC6ZyD6ZyF6ZyK6ZyL6ZyM6ZyQ6ZyR6ZyS6ZyU6ZyV6ZyXXCIsNCxcIumcnemcn+mcoOaQv+aTmOiAhOavquavs+avveavteavueawheawh+awhuawjeawleawmOawmeawmuawoeawqeawpOawquawsuaUteaVleaVq+eJjeeJkueJlueIsOiZouWIluiCn+iCnOiCk+iCvOaciuiCveiCseiCq+iCreiCtOiCt+iDp+iDqOiDqeiDquiDm+iDguiDhOiDmeiDjeiDl+ackOiDneiDq+iDseiDtOiDreiEjeiEjuiDsuiDvOacleiEkuixmuiEtuiEnuiErOiEmOiEsuiFiOiFjOiFk+iFtOiFmeiFmuiFseiFoOiFqeiFvOiFveiFreiFp+WhjeWqteiGiOiGguiGkea7leiGo+iGquiHjOacpuiHiuiGu1wiXSxbXCJlYzQwXCIsXCLpnKFcIiw4LFwi6Zyr6Zys6Zyu6Zyv6Zyx6ZyzXCIsNCxcIumcuumcu+mcvOmcvemcv1wiLDE4LFwi6Z2U6Z2V6Z2X6Z2Y6Z2a6Z2c6Z2d6Z2f6Z2j6Z2k6Z2m6Z2n6Z2o6Z2qXCIsN10sW1wiZWM4MFwiLFwi6Z2y6Z216Z23XCIsNCxcIumdvVwiLDcsXCLpnoZcIiw0LFwi6Z6M6Z6O6Z6P6Z6Q6Z6T6Z6V6Z6W6Z6X6Z6ZXCIsNCxcIuiHgeiGpuaspOast+asueatg+athuatmemjkemjkumjk+mjlemjmemjmuaus+W9gOavguins+aWkOm9keaWk+aWvOaXhuaXhOaXg+aXjOaXjuaXkuaXlueCgOeCnOeClueCneeCu+eDgOeCt+eCq+eCseeDqOeDiueEkOeEk+eElueEr+eEseeFs+eFnOeFqOeFheeFsueFiueFuOeFuueGmOeGs+eGteeGqOeGoOeHoOeHlOeHp+eHueeIneeIqOeBrOeEmOeFpueGueaIvuaIveaJg+aJiOaJieeku+elgOelhuelieelm+elnOelk+elmuelouell+eloOelr+elp+eluuemheemiuemmuemp+ems+W/keW/kFwiXSxbXCJlZDQwXCIsXCLpnp7pnp/pnqHpnqLpnqRcIiw2LFwi6Z6s6Z6u6Z6w6Z6x6Z6z6Z61XCIsNDZdLFtcImVkODBcIixcIumfpOmfpemfqOmfrlwiLDQsXCLpn7Tpn7dcIiwyMyxcIuaAvOaBneaBmuaBp+aBgeaBmeaBo+aCq+aEhuaEjeaFneaGqeaGneaHi+aHkeaIhuiCgOiBv+ayk+aztua3vOeftuefuOeggOegieegl+egmOegkeaWq+egreegnOegneegueeguuegu+egn+egvOegpeegrOego+egqeehjuehreehluehl+egpuehkOehh+ehjOehqueim+eik+eimueih+einOeioeeio+eisueiueeipeejlOejmeejieejrOejsuekheejtOekk+ekpOeknuektOm+m+m7uem7u+m7vOebseechOecjeebueech+eciOecmuecouecmeecreecpuecteecuOedkOedkeedh+edg+edmuedqFwiXSxbXCJlZTQwXCIsXCLpoI9cIiw2Ml0sW1wiZWU4MFwiLFwi6aGOXCIsMzIsXCLnnaLnnaXnnb/nno3nnb3nnoDnnoznnpHnnp/nnqDnnrDnnrXnnr3nlLrnlYDnlY7nlYvnlYjnlZvnlbLnlbnnloPnvZjnvaHnvZ/oqYjnvajnvbTnvbHnvbnnvoHnvb7nm43nm6XooLLpkoXpkobpkofpkovpkorpkozpko3pko/pkpDpkpTpkpfpkpXpkprpkpvpkpzpkqPpkqTpkqvpkqrpkq3pkqzpkq/pkrDpkrLpkrTpkrZcIiw0LFwi6ZK86ZK96ZK/6ZOE6ZOIXCIsNixcIumTkOmTkemTkumTlemTlumTl+mTmemTmOmTm+mTnumTn+mToOmToumTpOmTpemTp+mTqOmTqlwiXSxbXCJlZjQwXCIsXCLpoa9cIiw1LFwi6aKL6aKO6aKS6aKV6aKZ6aKj6aKoXCIsMzcsXCLpo4/po5Dpo5Tpo5bpo5fpo5vpo5zpo53po6BcIiw0XSxbXCJlZjgwXCIsXCLpo6Xpo6bpo6lcIiwzMCxcIumTqemTq+mTrumTr+mTs+mTtOmTtemTt+mTuemTvOmTvemTv+mUg+mUgumUhumUh+mUiemUiumUjemUjumUj+mUklwiLDQsXCLplJjplJvplJ3plJ7plJ/plKLplKrplKvplKnplKzplLHplLLplLTplLbplLfplLjplLzplL7plL/plYLplLXplYTplYXplYbplYnplYzplY7plY/plZLplZPplZTplZbplZfplZjplZnplZvplZ7plZ/plZ3plaHplaLplaRcIiw4LFwi6ZWv6ZWx6ZWy6ZWz6ZS655+n55+s6ZuJ56eV56et56ej56er56iG5bWH56iD56iC56ie56iUXCJdLFtcImYwNDBcIixcIumkiFwiLDQsXCLppI7ppI/ppJFcIiwyOCxcIumkr1wiLDI2XSxbXCJmMDgwXCIsXCLppYpcIiw5LFwi6aWWXCIsMTIsXCLppaTppabppbPppbjppbnppbvppb7ppoLppoPpponnqLnnqLfnqZHpu4/ppqXnqbDnmojnmo7nmpPnmpnnmqTnk57nk6DnlKzpuKDpuKLpuKhcIiw0LFwi6biy6bix6bi26bi46bi36bi56bi66bi+6bmB6bmC6bmE6bmG6bmH6bmI6bmJ6bmL6bmM6bmO6bmR6bmV6bmX6bma6bmb6bmc6bme6bmj6bmmXCIsNixcIum5sem5rem5s+eWkueWlOeWlueWoOeWneeWrOeWo+eWs+eWtOeWuOeXhOeWseeWsOeXg+eXgueXlueXjeeXo+eXqOeXpueXpOeXq+eXp+eYg+eXseeXvOeXv+eYkOeYgOeYheeYjOeYl+eYiueYpeeYmOeYleeYmVwiXSxbXCJmMTQwXCIsXCLppozppo7ppppcIiwxMCxcIummpummp+mmqVwiLDQ3XSxbXCJmMTgwXCIsXCLpp5lcIiwzMixcIueYm+eYvOeYoueYoOeZgOeYreeYsOeYv+eYteeZg+eYvueYs+eZjeeZnueZlOeZnOeZlueZq+eZr+e/iuerpuepuOepueeqgOeqhueqiOeqleeqpueqoOeqrOeqqOeqreeqs+ihpOihqeihsuihveihv+iiguiiouijhuiit+iivOijieijouijjuijo+ijpeijseikmuijvOijqOijvuijsOikoeikmeikk+ikm+ikiuiktOikq+iktuilgeilpuilu+eWi+iDpeeasueatOefnOiAkuiAlOiAluiAnOiAoOiAouiApeiApuiAp+iAqeiAqOiAseiAi+iAteiBg+iBhuiBjeiBkuiBqeiBseimg+mhuOmigOmig1wiXSxbXCJmMjQwXCIsXCLpp7pcIiw2Ml0sW1wiZjI4MFwiLFwi6ai5XCIsMzIsXCLpoonpoozpoo3poo/popTpoprpopvpop7pop/poqHpoqLpoqXpoqbomY3omZTomazoma7omb/ombrombzombvomqjomo3omovomqzomp3omqfomqPomqrompPomqnomrbom4TomrXom47omrDomrromrHomq/om4nom4/omrTom6nom7Hom7Lom63om7Pom5DonJPom57om7Tom5/om5jom5HonIPonIfom7jonIjonIronI3onInonKPonLvonJ7onKXonK7onJronL7onYjonLTonLHonKnonLfonL/onoLonKLonb3onb7onbvonaDonbDonYzona7onovonZPonaPonbzonaTonZnonaXonpPonq/onqjon5JcIl0sW1wiZjM0MFwiLFwi6amaXCIsMTcsXCLpqbLpqoPpqonpqo3pqo7pqpTpqpXpqpnpqqbpqqlcIiw2LFwi6aqy6aqz6aq06aq16aq56aq76aq96aq+6aq/6auD6auE6auGXCIsNCxcIumrjemrjumrj+mrkOmrkumrlOmrlemrlumrl+mrmemrmumrm+mrnFwiXSxbXCJmMzgwXCIsXCLpq53pq57pq6Dpq6Lpq6Ppq6Tpq6Xpq6fpq6jpq6npq6rpq6zpq67pq7BcIiw4LFwi6au66au8XCIsNixcIumshOmshemshuifhuieiOieheiereiel+ieg+ieq+ifpeierOieteies+ifi+ifk+ieveifkeifgOifiuifm+ifquifoOifruigluigk+ifvuigiuigm+igoeigueigvOe8tue9gue9hOe9heiIkOeruuerveesiOesg+eshOesleesiuesq+esj+eth+esuOesquesmeesruesseesoOespeespOess+esvuesnuetmOetmuetheetteetjOetneetoOetruetu+etouetsuetseeukOeupueup+euuOeurOeuneeuqOeuheeuqueunOeuoueuq+eutOevkeevgeevjOevneevmuevpeevpuevquewjOevvuevvOewj+ewluewi1wiXSxbXCJmNDQwXCIsXCLprIfprIlcIiw1LFwi6ayQ6ayR6ayS6ayUXCIsMTAsXCLprKDprKHprKLprKRcIiwxMCxcIumssOmssemss1wiLDcsXCLprL3prL7prL/prYDprYbprYrprYvprYzprY7prZDprZLprZPprZVcIiw1XSxbXCJmNDgwXCIsXCLprZtcIiwzMixcIuewn+ewquewpuewuOexgeexgOiHvuiIgeiIguiIhOiHrOihhOiIoeiIouiIo+iIreiIr+iIqOiIq+iIuOiIu+iIs+iItOiIvuiJhOiJieiJi+iJj+iJmuiJn+iJqOihvuiiheiiiOijmOijn+ilnue+nee+n+e+p+e+r+e+sOe+suexvOaVieeykeeyneeynOeynueyoueysueyvOeyveezgeezh+ezjOezjeeziOezheezl+ezqOiJruaaqOe+v+e/jue/lee/pee/oee/pue/qee/rue/s+ezuOe1t+e2pue2rue5h+e6m+m6uOm6tOi1s+i2hOi2lOi2kei2sei1p+i1reixh+ixiemFiumFkOmFjumFj+mFpFwiXSxbXCJmNTQwXCIsXCLprbxcIiw2Ml0sW1wiZjU4MFwiLFwi6a67XCIsMzIsXCLphaLphaHphbDphanpha/phb3phb7phbLphbTphbnphozphoXphpDpho3phpHphqLphqPphqrphq3phq7phq/phrXphrTphrrosZXpub7otrjot6vouIXouZnouanotrXotr/otrzotrrot4Tot5bot5fot5rot57ot47ot4/ot5vot4bot6zot7fot7jot6Pot7not7vot6TouInot73ouJTouJ3ouJ/ouKzouK7ouKPouK/ouLrouYDouLnouLXouL3ouLHouYnouYHouYLouZHouZLouYroubDoubboubzoua/oubTouoXouo/oupToupDoupzoup7osbjosoLosorosoXospjospTmlpvop5bop57op5rop5xcIl0sW1wiZjY0MFwiLFwi6a+cXCIsNjJdLFtcImY2ODBcIixcIumwm1wiLDMyLFwi6Kel6Ker6Kev6Ki+6Kym6Z2T6Zup6Zuz6Zuv6ZyG6ZyB6ZyI6ZyP6ZyO6Zyq6Zyt6Zyw6Zy+6b6A6b6D6b6FXCIsNSxcIum+jOm7vum8i+m8jemauemavOmavembjumbkueev+mboOmKjumKrumLiOmMvumNqumPiumOj+mQvumRq+mxv+mygumyhemyhumyh+myiOeoo+myi+myjumykOmykemykumylOmylemymumym+mynlwiLDUsXCLpsqVcIiw0LFwi6bKr6bKt6bKu6bKwXCIsNyxcIumyuumyu+myvOmyvemzhOmzhemzhumzh+mziumzi1wiXSxbXCJmNzQwXCIsXCLpsLxcIiw2Ml0sW1wiZjc4MFwiLFwi6bG76bG96bG+6bKA6bKD6bKE6bKJ6bKK6bKM6bKP6bKT6bKW6bKX6bKY6bKZ6bKd6bKq6bKs6bKv6bK56bK+XCIsNCxcIumziOmziemzkemzkumzmumzm+mzoOmzoemzjFwiLDQsXCLps5Pps5Tps5Xps5fps5jps5nps5zps53ps5/ps6LpnbzpnoXpnpHpnpLpnpTpnq/pnqvpnqPpnrLpnrTpqrHpqrDpqrfpuZjpqrbpqrrpqrzpq4Hpq4Dpq4Xpq4Lpq4vpq4zpq5HprYXprYPprYfprYnprYjprY3prZHpo6jppI3ppK7ppZXppZTpq5/pq6Hpq6bpq6/pq6vpq7vpq63pq7nprIjprI/prJPprJ/prKPpur3pur7nuLvpuoLpuofpuojpuovpupLpj5bpup3pup/pu5vpu5zpu53pu6Dpu5/pu6Lpu6npu6fpu6Xpu6rpu6/pvKLpvKzpvK/pvLnpvLfpvL3pvL7pvYRcIl0sW1wiZjg0MFwiLFwi6bOjXCIsNjJdLFtcImY4ODBcIixcIum0olwiLDMyXSxbXCJmOTQwXCIsXCLptYNcIiw2Ml0sW1wiZjk4MFwiLFwi6baCXCIsMzJdLFtcImZhNDBcIixcIum2o1wiLDYyXSxbXCJmYTgwXCIsXCLpt6JcIiwzMl0sW1wiZmI0MFwiLFwi6biDXCIsMjcsXCLpuKTpuKfpuK7puLDpuLTpuLvpuLzpuYDpuY3puZDpuZLpuZPpuZTpuZbpuZnpuZ3puZ/puaDpuaHpuaLpuaXpua7pua/pubLpubRcIiw5LFwi6bqAXCJdLFtcImZiODBcIixcIum6gem6g+m6hOm6hem6hum6iem6ium6jFwiLDUsXCLpupRcIiw4LFwi6bqe6bqgXCIsNSxcIum6p+m6qOm6qem6qlwiXSxbXCJmYzQwXCIsXCLpuqtcIiw4LFwi6bq16bq26bq36bq56bq66bq86bq/XCIsNCxcIum7hem7hum7h+m7iOm7ium7i+m7jOm7kOm7kum7k+m7lem7lum7l+m7mem7mum7num7oem7o+m7pOm7pum7qOm7q+m7rOm7rem7rum7sFwiLDgsXCLpu7rpu73pu79cIiw2XSxbXCJmYzgwXCIsXCLpvIZcIiw0LFwi6byM6byP6byR6byS6byU6byV6byW6byY6byaXCIsNSxcIum8oem8o1wiLDgsXCLpvK3pvK7pvLDpvLFcIl0sW1wiZmQ0MFwiLFwi6byyXCIsNCxcIum8uOm8uum8vOm8v1wiLDQsXCLpvYVcIiwxMCxcIum9klwiLDM4XSxbXCJmZDgwXCIsXCLpvblcIiw1LFwi6b6B6b6C6b6NXCIsMTEsXCLpvpzpvp3pvp7pvqFcIiw0LFwi76Ss76W576aV76en76exXCJdLFtcImZlNDBcIixcIu+ojO+oje+oju+oj++oke+ok++olO+omO+on++ooO+ooe+oo++opO+op++oqO+oqVwiXV1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdGFibGVzL2NwOTM2Lmpzb25cbi8vIG1vZHVsZSBpZCA9IDQ5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxudmFyIHN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vc3RyaW5naWZ5Jyk7XG52YXIgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJyk7XG52YXIgZm9ybWF0cyA9IHJlcXVpcmUoJy4vZm9ybWF0cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBmb3JtYXRzOiBmb3JtYXRzLFxuICAgIHBhcnNlOiBwYXJzZSxcbiAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9xcy9saWIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogbWV0aG9kc1xuICogQ29weXJpZ2h0KGMpIDIwMTMtMjAxNCBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTUtMjAxNiBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0Q3VycmVudE5vZGVNZXRob2RzKCkgfHwgZ2V0QmFzaWNOb2RlTWV0aG9kcygpO1xuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCBOb2RlLmpzIG1ldGhvZHMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldEN1cnJlbnROb2RlTWV0aG9kcygpIHtcbiAgcmV0dXJuIGh0dHAuTUVUSE9EUyAmJiBodHRwLk1FVEhPRFMubWFwKGZ1bmN0aW9uIGxvd2VyQ2FzZU1ldGhvZChtZXRob2QpIHtcbiAgICByZXR1cm4gbWV0aG9kLnRvTG93ZXJDYXNlKCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgXCJiYXNpY1wiIE5vZGUuanMgbWV0aG9kcywgYSBzbmFwc2hvdCBmcm9tIE5vZGUuanMgMC4xMC5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0QmFzaWNOb2RlTWV0aG9kcygpIHtcbiAgcmV0dXJuIFtcbiAgICAnZ2V0JyxcbiAgICAncG9zdCcsXG4gICAgJ3B1dCcsXG4gICAgJ2hlYWQnLFxuICAgICdkZWxldGUnLFxuICAgICdvcHRpb25zJyxcbiAgICAndHJhY2UnLFxuICAgICdjb3B5JyxcbiAgICAnbG9jaycsXG4gICAgJ21rY29sJyxcbiAgICAnbW92ZScsXG4gICAgJ3B1cmdlJyxcbiAgICAncHJvcGZpbmQnLFxuICAgICdwcm9wcGF0Y2gnLFxuICAgICd1bmxvY2snLFxuICAgICdyZXBvcnQnLFxuICAgICdta2FjdGl2aXR5JyxcbiAgICAnY2hlY2tvdXQnLFxuICAgICdtZXJnZScsXG4gICAgJ20tc2VhcmNoJyxcbiAgICAnbm90aWZ5JyxcbiAgICAnc3Vic2NyaWJlJyxcbiAgICAndW5zdWJzY3JpYmUnLFxuICAgICdwYXRjaCcsXG4gICAgJ3NlYXJjaCcsXG4gICAgJ2Nvbm5lY3QnXG4gIF07XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbWV0aG9kcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBzZW5kXG4gKiBDb3B5cmlnaHQoYykgMjAxMiBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNiBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnaHR0cC1lcnJvcnMnKVxudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnc2VuZCcpXG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdzZW5kJylcbnZhciBkZXN0cm95ID0gcmVxdWlyZSgnZGVzdHJveScpXG52YXIgZW5jb2RlVXJsID0gcmVxdWlyZSgnZW5jb2RldXJsJylcbnZhciBlc2NhcGVIdG1sID0gcmVxdWlyZSgnZXNjYXBlLWh0bWwnKVxudmFyIGV0YWcgPSByZXF1aXJlKCdldGFnJylcbnZhciBmcmVzaCA9IHJlcXVpcmUoJ2ZyZXNoJylcbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJylcbnZhciBtaW1lID0gcmVxdWlyZSgnbWltZScpXG52YXIgbXMgPSByZXF1aXJlKCdtcycpXG52YXIgb25GaW5pc2hlZCA9IHJlcXVpcmUoJ29uLWZpbmlzaGVkJylcbnZhciBwYXJzZVJhbmdlID0gcmVxdWlyZSgncmFuZ2UtcGFyc2VyJylcbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG52YXIgc3RhdHVzZXMgPSByZXF1aXJlKCdzdGF0dXNlcycpXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJylcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpXG5cbi8qKlxuICogUGF0aCBmdW5jdGlvbiByZWZlcmVuY2VzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZXh0bmFtZSA9IHBhdGguZXh0bmFtZVxudmFyIGpvaW4gPSBwYXRoLmpvaW5cbnZhciBub3JtYWxpemUgPSBwYXRoLm5vcm1hbGl6ZVxudmFyIHJlc29sdmUgPSBwYXRoLnJlc29sdmVcbnZhciBzZXAgPSBwYXRoLnNlcFxuXG4vKipcbiAqIFJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgaWRlbnRpZnlpbmcgYSBieXRlcyBSYW5nZSBoZWFkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBCWVRFU19SQU5HRV9SRUdFWFAgPSAvXiAqYnl0ZXM9L1xuXG4vKipcbiAqIE1heGltdW0gdmFsdWUgYWxsb3dlZCBmb3IgdGhlIG1heCBhZ2UuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBNQVhfTUFYQUdFID0gNjAgKiA2MCAqIDI0ICogMzY1ICogMTAwMCAvLyAxIHllYXJcblxuLyoqXG4gKiBSZWd1bGFyIGV4cHJlc3Npb24gdG8gbWF0Y2ggYSBwYXRoIHdpdGggYSBkaXJlY3RvcnkgdXAgY29tcG9uZW50LlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgVVBfUEFUSF9SRUdFWFAgPSAvKD86XnxbXFxcXC9dKVxcLlxcLig/OltcXFxcL118JCkvXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBzZW5kXG5tb2R1bGUuZXhwb3J0cy5taW1lID0gbWltZVxuXG4vKipcbiAqIFJldHVybiBhIGBTZW5kU3RyZWFtYCBmb3IgYHJlcWAgYW5kIGBwYXRoYC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVxXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHJldHVybiB7U2VuZFN0cmVhbX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBzZW5kIChyZXEsIHBhdGgsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBTZW5kU3RyZWFtKHJlcSwgcGF0aCwgb3B0aW9ucylcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGEgYFNlbmRTdHJlYW1gIHdpdGggdGhlIGdpdmVuIGBwYXRoYC5cbiAqXG4gKiBAcGFyYW0ge1JlcXVlc3R9IHJlcVxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gU2VuZFN0cmVhbSAocmVxLCBwYXRoLCBvcHRpb25zKSB7XG4gIFN0cmVhbS5jYWxsKHRoaXMpXG5cbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9XG5cbiAgdGhpcy5vcHRpb25zID0gb3B0c1xuICB0aGlzLnBhdGggPSBwYXRoXG4gIHRoaXMucmVxID0gcmVxXG5cbiAgdGhpcy5fYWNjZXB0UmFuZ2VzID0gb3B0cy5hY2NlcHRSYW5nZXMgIT09IHVuZGVmaW5lZFxuICAgID8gQm9vbGVhbihvcHRzLmFjY2VwdFJhbmdlcylcbiAgICA6IHRydWVcblxuICB0aGlzLl9jYWNoZUNvbnRyb2wgPSBvcHRzLmNhY2hlQ29udHJvbCAhPT0gdW5kZWZpbmVkXG4gICAgPyBCb29sZWFuKG9wdHMuY2FjaGVDb250cm9sKVxuICAgIDogdHJ1ZVxuXG4gIHRoaXMuX2V0YWcgPSBvcHRzLmV0YWcgIT09IHVuZGVmaW5lZFxuICAgID8gQm9vbGVhbihvcHRzLmV0YWcpXG4gICAgOiB0cnVlXG5cbiAgdGhpcy5fZG90ZmlsZXMgPSBvcHRzLmRvdGZpbGVzICE9PSB1bmRlZmluZWRcbiAgICA/IG9wdHMuZG90ZmlsZXNcbiAgICA6ICdpZ25vcmUnXG5cbiAgaWYgKHRoaXMuX2RvdGZpbGVzICE9PSAnaWdub3JlJyAmJiB0aGlzLl9kb3RmaWxlcyAhPT0gJ2FsbG93JyAmJiB0aGlzLl9kb3RmaWxlcyAhPT0gJ2RlbnknKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZG90ZmlsZXMgb3B0aW9uIG11c3QgYmUgXCJhbGxvd1wiLCBcImRlbnlcIiwgb3IgXCJpZ25vcmVcIicpXG4gIH1cblxuICB0aGlzLl9oaWRkZW4gPSBCb29sZWFuKG9wdHMuaGlkZGVuKVxuXG4gIGlmIChvcHRzLmhpZGRlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZGVwcmVjYXRlKCdoaWRkZW46IHVzZSBkb3RmaWxlczogXFwnJyArICh0aGlzLl9oaWRkZW4gPyAnYWxsb3cnIDogJ2lnbm9yZScpICsgJ1xcJyBpbnN0ZWFkJylcbiAgfVxuXG4gIC8vIGxlZ2FjeSBzdXBwb3J0XG4gIGlmIChvcHRzLmRvdGZpbGVzID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9kb3RmaWxlcyA9IHVuZGVmaW5lZFxuICB9XG5cbiAgdGhpcy5fZXh0ZW5zaW9ucyA9IG9wdHMuZXh0ZW5zaW9ucyAhPT0gdW5kZWZpbmVkXG4gICAgPyBub3JtYWxpemVMaXN0KG9wdHMuZXh0ZW5zaW9ucywgJ2V4dGVuc2lvbnMgb3B0aW9uJylcbiAgICA6IFtdXG5cbiAgdGhpcy5faW1tdXRhYmxlID0gb3B0cy5pbW11dGFibGUgIT09IHVuZGVmaW5lZFxuICAgID8gQm9vbGVhbihvcHRzLmltbXV0YWJsZSlcbiAgICA6IGZhbHNlXG5cbiAgdGhpcy5faW5kZXggPSBvcHRzLmluZGV4ICE9PSB1bmRlZmluZWRcbiAgICA/IG5vcm1hbGl6ZUxpc3Qob3B0cy5pbmRleCwgJ2luZGV4IG9wdGlvbicpXG4gICAgOiBbJ2luZGV4Lmh0bWwnXVxuXG4gIHRoaXMuX2xhc3RNb2RpZmllZCA9IG9wdHMubGFzdE1vZGlmaWVkICE9PSB1bmRlZmluZWRcbiAgICA/IEJvb2xlYW4ob3B0cy5sYXN0TW9kaWZpZWQpXG4gICAgOiB0cnVlXG5cbiAgdGhpcy5fbWF4YWdlID0gb3B0cy5tYXhBZ2UgfHwgb3B0cy5tYXhhZ2VcbiAgdGhpcy5fbWF4YWdlID0gdHlwZW9mIHRoaXMuX21heGFnZSA9PT0gJ3N0cmluZydcbiAgICA/IG1zKHRoaXMuX21heGFnZSlcbiAgICA6IE51bWJlcih0aGlzLl9tYXhhZ2UpXG4gIHRoaXMuX21heGFnZSA9ICFpc05hTih0aGlzLl9tYXhhZ2UpXG4gICAgPyBNYXRoLm1pbihNYXRoLm1heCgwLCB0aGlzLl9tYXhhZ2UpLCBNQVhfTUFYQUdFKVxuICAgIDogMFxuXG4gIHRoaXMuX3Jvb3QgPSBvcHRzLnJvb3RcbiAgICA/IHJlc29sdmUob3B0cy5yb290KVxuICAgIDogbnVsbFxuXG4gIGlmICghdGhpcy5fcm9vdCAmJiBvcHRzLmZyb20pIHtcbiAgICB0aGlzLmZyb20ob3B0cy5mcm9tKVxuICB9XG59XG5cbi8qKlxuICogSW5oZXJpdHMgZnJvbSBgU3RyZWFtYC5cbiAqL1xuXG51dGlsLmluaGVyaXRzKFNlbmRTdHJlYW0sIFN0cmVhbSlcblxuLyoqXG4gKiBFbmFibGUgb3IgZGlzYWJsZSBldGFnIGdlbmVyYXRpb24uXG4gKlxuICogQHBhcmFtIHtCb29sZWFufSB2YWxcbiAqIEByZXR1cm4ge1NlbmRTdHJlYW19XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmV0YWcgPSBkZXByZWNhdGUuZnVuY3Rpb24oZnVuY3Rpb24gZXRhZyAodmFsKSB7XG4gIHRoaXMuX2V0YWcgPSBCb29sZWFuKHZhbClcbiAgZGVidWcoJ2V0YWcgJXMnLCB0aGlzLl9ldGFnKVxuICByZXR1cm4gdGhpc1xufSwgJ3NlbmQuZXRhZzogcGFzcyBldGFnIGFzIG9wdGlvbicpXG5cbi8qKlxuICogRW5hYmxlIG9yIGRpc2FibGUgXCJoaWRkZW5cIiAoZG90KSBmaWxlcy5cbiAqXG4gKiBAcGFyYW0ge0Jvb2xlYW59IHBhdGhcbiAqIEByZXR1cm4ge1NlbmRTdHJlYW19XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmhpZGRlbiA9IGRlcHJlY2F0ZS5mdW5jdGlvbihmdW5jdGlvbiBoaWRkZW4gKHZhbCkge1xuICB0aGlzLl9oaWRkZW4gPSBCb29sZWFuKHZhbClcbiAgdGhpcy5fZG90ZmlsZXMgPSB1bmRlZmluZWRcbiAgZGVidWcoJ2hpZGRlbiAlcycsIHRoaXMuX2hpZGRlbilcbiAgcmV0dXJuIHRoaXNcbn0sICdzZW5kLmhpZGRlbjogdXNlIGRvdGZpbGVzIG9wdGlvbicpXG5cbi8qKlxuICogU2V0IGluZGV4IGBwYXRoc2AsIHNldCB0byBhIGZhbHN5XG4gKiB2YWx1ZSB0byBkaXNhYmxlIGluZGV4IHN1cHBvcnQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8Qm9vbGVhbnxBcnJheX0gcGF0aHNcbiAqIEByZXR1cm4ge1NlbmRTdHJlYW19XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmluZGV4ID0gZGVwcmVjYXRlLmZ1bmN0aW9uKGZ1bmN0aW9uIGluZGV4IChwYXRocykge1xuICB2YXIgaW5kZXggPSAhcGF0aHMgPyBbXSA6IG5vcm1hbGl6ZUxpc3QocGF0aHMsICdwYXRocyBhcmd1bWVudCcpXG4gIGRlYnVnKCdpbmRleCAlbycsIHBhdGhzKVxuICB0aGlzLl9pbmRleCA9IGluZGV4XG4gIHJldHVybiB0aGlzXG59LCAnc2VuZC5pbmRleDogcGFzcyBpbmRleCBhcyBvcHRpb24nKVxuXG4vKipcbiAqIFNldCByb290IGBwYXRoYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHJldHVybiB7U2VuZFN0cmVhbX1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUucm9vdCA9IGZ1bmN0aW9uIHJvb3QgKHBhdGgpIHtcbiAgdGhpcy5fcm9vdCA9IHJlc29sdmUoU3RyaW5nKHBhdGgpKVxuICBkZWJ1Zygncm9vdCAlcycsIHRoaXMuX3Jvb3QpXG4gIHJldHVybiB0aGlzXG59XG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmZyb20gPSBkZXByZWNhdGUuZnVuY3Rpb24oU2VuZFN0cmVhbS5wcm90b3R5cGUucm9vdCxcbiAgJ3NlbmQuZnJvbTogcGFzcyByb290IGFzIG9wdGlvbicpXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLnJvb3QgPSBkZXByZWNhdGUuZnVuY3Rpb24oU2VuZFN0cmVhbS5wcm90b3R5cGUucm9vdCxcbiAgJ3NlbmQucm9vdDogcGFzcyByb290IGFzIG9wdGlvbicpXG5cbi8qKlxuICogU2V0IG1heC1hZ2UgdG8gYG1heEFnZWAuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1heEFnZVxuICogQHJldHVybiB7U2VuZFN0cmVhbX1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUubWF4YWdlID0gZGVwcmVjYXRlLmZ1bmN0aW9uKGZ1bmN0aW9uIG1heGFnZSAobWF4QWdlKSB7XG4gIHRoaXMuX21heGFnZSA9IHR5cGVvZiBtYXhBZ2UgPT09ICdzdHJpbmcnXG4gICAgPyBtcyhtYXhBZ2UpXG4gICAgOiBOdW1iZXIobWF4QWdlKVxuICB0aGlzLl9tYXhhZ2UgPSAhaXNOYU4odGhpcy5fbWF4YWdlKVxuICAgID8gTWF0aC5taW4oTWF0aC5tYXgoMCwgdGhpcy5fbWF4YWdlKSwgTUFYX01BWEFHRSlcbiAgICA6IDBcbiAgZGVidWcoJ21heC1hZ2UgJWQnLCB0aGlzLl9tYXhhZ2UpXG4gIHJldHVybiB0aGlzXG59LCAnc2VuZC5tYXhhZ2U6IHBhc3MgbWF4QWdlIGFzIG9wdGlvbicpXG5cbi8qKlxuICogRW1pdCBlcnJvciB3aXRoIGBzdGF0dXNgLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGF0dXNcbiAqIEBwYXJhbSB7RXJyb3J9IFtlcnJdXG4gKiBAcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gZXJyb3IgKHN0YXR1cywgZXJyKSB7XG4gIC8vIGVtaXQgaWYgbGlzdGVuZXJzIGluc3RlYWQgb2YgcmVzcG9uZGluZ1xuICBpZiAoaGFzTGlzdGVuZXJzKHRoaXMsICdlcnJvcicpKSB7XG4gICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBjcmVhdGVFcnJvcihzdGF0dXMsIGVyciwge1xuICAgICAgZXhwb3NlOiBmYWxzZVxuICAgIH0pKVxuICB9XG5cbiAgdmFyIHJlcyA9IHRoaXMucmVzXG4gIHZhciBtc2cgPSBzdGF0dXNlc1tzdGF0dXNdIHx8IFN0cmluZyhzdGF0dXMpXG4gIHZhciBkb2MgPSBjcmVhdGVIdG1sRG9jdW1lbnQoJ0Vycm9yJywgZXNjYXBlSHRtbChtc2cpKVxuXG4gIC8vIGNsZWFyIGV4aXN0aW5nIGhlYWRlcnNcbiAgY2xlYXJIZWFkZXJzKHJlcylcblxuICAvLyBhZGQgZXJyb3IgaGVhZGVyc1xuICBpZiAoZXJyICYmIGVyci5oZWFkZXJzKSB7XG4gICAgc2V0SGVhZGVycyhyZXMsIGVyci5oZWFkZXJzKVxuICB9XG5cbiAgLy8gc2VuZCBiYXNpYyByZXNwb25zZVxuICByZXMuc3RhdHVzQ29kZSA9IHN0YXR1c1xuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sOyBjaGFyc2V0PVVURi04JylcbiAgcmVzLnNldEhlYWRlcignQ29udGVudC1MZW5ndGgnLCBCdWZmZXIuYnl0ZUxlbmd0aChkb2MpKVxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVNlY3VyaXR5LVBvbGljeScsIFwiZGVmYXVsdC1zcmMgJ3NlbGYnXCIpXG4gIHJlcy5zZXRIZWFkZXIoJ1gtQ29udGVudC1UeXBlLU9wdGlvbnMnLCAnbm9zbmlmZicpXG4gIHJlcy5lbmQoZG9jKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBwYXRobmFtZSBlbmRzIHdpdGggXCIvXCIuXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqIEBwcml2YXRlXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUuaGFzVHJhaWxpbmdTbGFzaCA9IGZ1bmN0aW9uIGhhc1RyYWlsaW5nU2xhc2ggKCkge1xuICByZXR1cm4gdGhpcy5wYXRoW3RoaXMucGF0aC5sZW5ndGggLSAxXSA9PT0gJy8nXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhpcyBpcyBhIGNvbmRpdGlvbmFsIEdFVCByZXF1ZXN0LlxuICpcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5pc0NvbmRpdGlvbmFsR0VUID0gZnVuY3Rpb24gaXNDb25kaXRpb25hbEdFVCAoKSB7XG4gIHJldHVybiB0aGlzLnJlcS5oZWFkZXJzWydpZi1tYXRjaCddIHx8XG4gICAgdGhpcy5yZXEuaGVhZGVyc1snaWYtdW5tb2RpZmllZC1zaW5jZSddIHx8XG4gICAgdGhpcy5yZXEuaGVhZGVyc1snaWYtbm9uZS1tYXRjaCddIHx8XG4gICAgdGhpcy5yZXEuaGVhZGVyc1snaWYtbW9kaWZpZWQtc2luY2UnXVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZXF1ZXN0IHByZWNvbmRpdGlvbnMgZmFpbGVkLlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKiBAcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmlzUHJlY29uZGl0aW9uRmFpbHVyZSA9IGZ1bmN0aW9uIGlzUHJlY29uZGl0aW9uRmFpbHVyZSAoKSB7XG4gIHZhciByZXEgPSB0aGlzLnJlcVxuICB2YXIgcmVzID0gdGhpcy5yZXNcblxuICAvLyBpZi1tYXRjaFxuICB2YXIgbWF0Y2ggPSByZXEuaGVhZGVyc1snaWYtbWF0Y2gnXVxuICBpZiAobWF0Y2gpIHtcbiAgICB2YXIgZXRhZyA9IHJlcy5nZXRIZWFkZXIoJ0VUYWcnKVxuICAgIHJldHVybiAhZXRhZyB8fCAobWF0Y2ggIT09ICcqJyAmJiBwYXJzZVRva2VuTGlzdChtYXRjaCkuZXZlcnkoZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICByZXR1cm4gbWF0Y2ggIT09IGV0YWcgJiYgbWF0Y2ggIT09ICdXLycgKyBldGFnICYmICdXLycgKyBtYXRjaCAhPT0gZXRhZ1xuICAgIH0pKVxuICB9XG5cbiAgLy8gaWYtdW5tb2RpZmllZC1zaW5jZVxuICB2YXIgdW5tb2RpZmllZFNpbmNlID0gcGFyc2VIdHRwRGF0ZShyZXEuaGVhZGVyc1snaWYtdW5tb2RpZmllZC1zaW5jZSddKVxuICBpZiAoIWlzTmFOKHVubW9kaWZpZWRTaW5jZSkpIHtcbiAgICB2YXIgbGFzdE1vZGlmaWVkID0gcGFyc2VIdHRwRGF0ZShyZXMuZ2V0SGVhZGVyKCdMYXN0LU1vZGlmaWVkJykpXG4gICAgcmV0dXJuIGlzTmFOKGxhc3RNb2RpZmllZCkgfHwgbGFzdE1vZGlmaWVkID4gdW5tb2RpZmllZFNpbmNlXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBTdHJpcCBjb250ZW50LSogaGVhZGVyIGZpZWxkcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLnJlbW92ZUNvbnRlbnRIZWFkZXJGaWVsZHMgPSBmdW5jdGlvbiByZW1vdmVDb250ZW50SGVhZGVyRmllbGRzICgpIHtcbiAgdmFyIHJlcyA9IHRoaXMucmVzXG4gIHZhciBoZWFkZXJzID0gZ2V0SGVhZGVyTmFtZXMocmVzKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBoZWFkZXIgPSBoZWFkZXJzW2ldXG4gICAgaWYgKGhlYWRlci5zdWJzdHIoMCwgOCkgPT09ICdjb250ZW50LScgJiYgaGVhZGVyICE9PSAnY29udGVudC1sb2NhdGlvbicpIHtcbiAgICAgIHJlcy5yZW1vdmVIZWFkZXIoaGVhZGVyKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlc3BvbmQgd2l0aCAzMDQgbm90IG1vZGlmaWVkLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLm5vdE1vZGlmaWVkID0gZnVuY3Rpb24gbm90TW9kaWZpZWQgKCkge1xuICB2YXIgcmVzID0gdGhpcy5yZXNcbiAgZGVidWcoJ25vdCBtb2RpZmllZCcpXG4gIHRoaXMucmVtb3ZlQ29udGVudEhlYWRlckZpZWxkcygpXG4gIHJlcy5zdGF0dXNDb2RlID0gMzA0XG4gIHJlcy5lbmQoKVxufVxuXG4vKipcbiAqIFJhaXNlIGVycm9yIHRoYXQgaGVhZGVycyBhbHJlYWR5IHNlbnQuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUuaGVhZGVyc0FscmVhZHlTZW50ID0gZnVuY3Rpb24gaGVhZGVyc0FscmVhZHlTZW50ICgpIHtcbiAgdmFyIGVyciA9IG5ldyBFcnJvcignQ2FuXFwndCBzZXQgaGVhZGVycyBhZnRlciB0aGV5IGFyZSBzZW50LicpXG4gIGRlYnVnKCdoZWFkZXJzIGFscmVhZHkgc2VudCcpXG4gIHRoaXMuZXJyb3IoNTAwLCBlcnIpXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMgY2FjaGVhYmxlLCBha2FcbiAqIHJlc3BvbmRlZCB3aXRoIDJ4eCBvciAzMDQgKHNlZSBSRkMgMjYxNiBzZWN0aW9uIDE0LjJ7NSw2fSkuXG4gKlxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmlzQ2FjaGFibGUgPSBmdW5jdGlvbiBpc0NhY2hhYmxlICgpIHtcbiAgdmFyIHN0YXR1c0NvZGUgPSB0aGlzLnJlcy5zdGF0dXNDb2RlXG4gIHJldHVybiAoc3RhdHVzQ29kZSA+PSAyMDAgJiYgc3RhdHVzQ29kZSA8IDMwMCkgfHxcbiAgICBzdGF0dXNDb2RlID09PSAzMDRcbn1cblxuLyoqXG4gKiBIYW5kbGUgc3RhdCgpIGVycm9yLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yXG4gKiBAcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLm9uU3RhdEVycm9yID0gZnVuY3Rpb24gb25TdGF0RXJyb3IgKGVycm9yKSB7XG4gIHN3aXRjaCAoZXJyb3IuY29kZSkge1xuICAgIGNhc2UgJ0VOQU1FVE9PTE9ORyc6XG4gICAgY2FzZSAnRU5PRU5UJzpcbiAgICBjYXNlICdFTk9URElSJzpcbiAgICAgIHRoaXMuZXJyb3IoNDA0LCBlcnJvcilcbiAgICAgIGJyZWFrXG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMuZXJyb3IoNTAwLCBlcnJvcilcbiAgICAgIGJyZWFrXG4gIH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgY2FjaGUgaXMgZnJlc2guXG4gKlxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmlzRnJlc2ggPSBmdW5jdGlvbiBpc0ZyZXNoICgpIHtcbiAgcmV0dXJuIGZyZXNoKHRoaXMucmVxLmhlYWRlcnMsIHtcbiAgICAnZXRhZyc6IHRoaXMucmVzLmdldEhlYWRlcignRVRhZycpLFxuICAgICdsYXN0LW1vZGlmaWVkJzogdGhpcy5yZXMuZ2V0SGVhZGVyKCdMYXN0LU1vZGlmaWVkJylcbiAgfSlcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmFuZ2UgaXMgZnJlc2guXG4gKlxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmlzUmFuZ2VGcmVzaCA9IGZ1bmN0aW9uIGlzUmFuZ2VGcmVzaCAoKSB7XG4gIHZhciBpZlJhbmdlID0gdGhpcy5yZXEuaGVhZGVyc1snaWYtcmFuZ2UnXVxuXG4gIGlmICghaWZSYW5nZSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBpZi1yYW5nZSBhcyBldGFnXG4gIGlmIChpZlJhbmdlLmluZGV4T2YoJ1wiJykgIT09IC0xKSB7XG4gICAgdmFyIGV0YWcgPSB0aGlzLnJlcy5nZXRIZWFkZXIoJ0VUYWcnKVxuICAgIHJldHVybiBCb29sZWFuKGV0YWcgJiYgaWZSYW5nZS5pbmRleE9mKGV0YWcpICE9PSAtMSlcbiAgfVxuXG4gIC8vIGlmLXJhbmdlIGFzIG1vZGlmaWVkIGRhdGVcbiAgdmFyIGxhc3RNb2RpZmllZCA9IHRoaXMucmVzLmdldEhlYWRlcignTGFzdC1Nb2RpZmllZCcpXG4gIHJldHVybiBwYXJzZUh0dHBEYXRlKGxhc3RNb2RpZmllZCkgPD0gcGFyc2VIdHRwRGF0ZShpZlJhbmdlKVxufVxuXG4vKipcbiAqIFJlZGlyZWN0IHRvIHBhdGguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEBwcml2YXRlXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUucmVkaXJlY3QgPSBmdW5jdGlvbiByZWRpcmVjdCAocGF0aCkge1xuICB2YXIgcmVzID0gdGhpcy5yZXNcblxuICBpZiAoaGFzTGlzdGVuZXJzKHRoaXMsICdkaXJlY3RvcnknKSkge1xuICAgIHRoaXMuZW1pdCgnZGlyZWN0b3J5JywgcmVzLCBwYXRoKVxuICAgIHJldHVyblxuICB9XG5cbiAgaWYgKHRoaXMuaGFzVHJhaWxpbmdTbGFzaCgpKSB7XG4gICAgdGhpcy5lcnJvcig0MDMpXG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgbG9jID0gZW5jb2RlVXJsKGNvbGxhcHNlTGVhZGluZ1NsYXNoZXModGhpcy5wYXRoICsgJy8nKSlcbiAgdmFyIGRvYyA9IGNyZWF0ZUh0bWxEb2N1bWVudCgnUmVkaXJlY3RpbmcnLCAnUmVkaXJlY3RpbmcgdG8gPGEgaHJlZj1cIicgKyBlc2NhcGVIdG1sKGxvYykgKyAnXCI+JyArXG4gICAgZXNjYXBlSHRtbChsb2MpICsgJzwvYT4nKVxuXG4gIC8vIHJlZGlyZWN0XG4gIHJlcy5zdGF0dXNDb2RlID0gMzAxXG4gIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKVxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIEJ1ZmZlci5ieXRlTGVuZ3RoKGRvYykpXG4gIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtU2VjdXJpdHktUG9saWN5JywgXCJkZWZhdWx0LXNyYyAnc2VsZidcIilcbiAgcmVzLnNldEhlYWRlcignWC1Db250ZW50LVR5cGUtT3B0aW9ucycsICdub3NuaWZmJylcbiAgcmVzLnNldEhlYWRlcignTG9jYXRpb24nLCBsb2MpXG4gIHJlcy5lbmQoZG9jKVxufVxuXG4vKipcbiAqIFBpcGUgdG8gYHJlcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmVhbX0gcmVzXG4gKiBAcmV0dXJuIHtTdHJlYW19IHJlc1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gcGlwZSAocmVzKSB7XG4gIC8vIHJvb3QgcGF0aFxuICB2YXIgcm9vdCA9IHRoaXMuX3Jvb3RcblxuICAvLyByZWZlcmVuY2VzXG4gIHRoaXMucmVzID0gcmVzXG5cbiAgLy8gZGVjb2RlIHRoZSBwYXRoXG4gIHZhciBwYXRoID0gZGVjb2RlKHRoaXMucGF0aClcbiAgaWYgKHBhdGggPT09IC0xKSB7XG4gICAgdGhpcy5lcnJvcig0MDApXG4gICAgcmV0dXJuIHJlc1xuICB9XG5cbiAgLy8gbnVsbCBieXRlKHMpXG4gIGlmICh+cGF0aC5pbmRleE9mKCdcXDAnKSkge1xuICAgIHRoaXMuZXJyb3IoNDAwKVxuICAgIHJldHVybiByZXNcbiAgfVxuXG4gIHZhciBwYXJ0c1xuICBpZiAocm9vdCAhPT0gbnVsbCkge1xuICAgIC8vIG5vcm1hbGl6ZVxuICAgIGlmIChwYXRoKSB7XG4gICAgICBwYXRoID0gbm9ybWFsaXplKCcuJyArIHNlcCArIHBhdGgpXG4gICAgfVxuXG4gICAgLy8gbWFsaWNpb3VzIHBhdGhcbiAgICBpZiAoVVBfUEFUSF9SRUdFWFAudGVzdChwYXRoKSkge1xuICAgICAgZGVidWcoJ21hbGljaW91cyBwYXRoIFwiJXNcIicsIHBhdGgpXG4gICAgICB0aGlzLmVycm9yKDQwMylcbiAgICAgIHJldHVybiByZXNcbiAgICB9XG5cbiAgICAvLyBleHBsb2RlIHBhdGggcGFydHNcbiAgICBwYXJ0cyA9IHBhdGguc3BsaXQoc2VwKVxuXG4gICAgLy8gam9pbiAvIG5vcm1hbGl6ZSBmcm9tIG9wdGlvbmFsIHJvb3QgZGlyXG4gICAgcGF0aCA9IG5vcm1hbGl6ZShqb2luKHJvb3QsIHBhdGgpKVxuICAgIHJvb3QgPSBub3JtYWxpemUocm9vdCArIHNlcClcbiAgfSBlbHNlIHtcbiAgICAvLyBcIi4uXCIgaXMgbWFsaWNpb3VzIHdpdGhvdXQgXCJyb290XCJcbiAgICBpZiAoVVBfUEFUSF9SRUdFWFAudGVzdChwYXRoKSkge1xuICAgICAgZGVidWcoJ21hbGljaW91cyBwYXRoIFwiJXNcIicsIHBhdGgpXG4gICAgICB0aGlzLmVycm9yKDQwMylcbiAgICAgIHJldHVybiByZXNcbiAgICB9XG5cbiAgICAvLyBleHBsb2RlIHBhdGggcGFydHNcbiAgICBwYXJ0cyA9IG5vcm1hbGl6ZShwYXRoKS5zcGxpdChzZXApXG5cbiAgICAvLyByZXNvbHZlIHRoZSBwYXRoXG4gICAgcGF0aCA9IHJlc29sdmUocGF0aClcbiAgfVxuXG4gIC8vIGRvdGZpbGUgaGFuZGxpbmdcbiAgaWYgKGNvbnRhaW5zRG90RmlsZShwYXJ0cykpIHtcbiAgICB2YXIgYWNjZXNzID0gdGhpcy5fZG90ZmlsZXNcblxuICAgIC8vIGxlZ2FjeSBzdXBwb3J0XG4gICAgaWYgKGFjY2VzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhY2Nlc3MgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXVswXSA9PT0gJy4nXG4gICAgICAgID8gKHRoaXMuX2hpZGRlbiA/ICdhbGxvdycgOiAnaWdub3JlJylcbiAgICAgICAgOiAnYWxsb3cnXG4gICAgfVxuXG4gICAgZGVidWcoJyVzIGRvdGZpbGUgXCIlc1wiJywgYWNjZXNzLCBwYXRoKVxuICAgIHN3aXRjaCAoYWNjZXNzKSB7XG4gICAgICBjYXNlICdhbGxvdyc6XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdkZW55JzpcbiAgICAgICAgdGhpcy5lcnJvcig0MDMpXG4gICAgICAgIHJldHVybiByZXNcbiAgICAgIGNhc2UgJ2lnbm9yZSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmVycm9yKDQwNClcbiAgICAgICAgcmV0dXJuIHJlc1xuICAgIH1cbiAgfVxuXG4gIC8vIGluZGV4IGZpbGUgc3VwcG9ydFxuICBpZiAodGhpcy5faW5kZXgubGVuZ3RoICYmIHRoaXMuaGFzVHJhaWxpbmdTbGFzaCgpKSB7XG4gICAgdGhpcy5zZW5kSW5kZXgocGF0aClcbiAgICByZXR1cm4gcmVzXG4gIH1cblxuICB0aGlzLnNlbmRGaWxlKHBhdGgpXG4gIHJldHVybiByZXNcbn1cblxuLyoqXG4gKiBUcmFuc2ZlciBgcGF0aGAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUuc2VuZCA9IGZ1bmN0aW9uIHNlbmQgKHBhdGgsIHN0YXQpIHtcbiAgdmFyIGxlbiA9IHN0YXQuc2l6ZVxuICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9uc1xuICB2YXIgb3B0cyA9IHt9XG4gIHZhciByZXMgPSB0aGlzLnJlc1xuICB2YXIgcmVxID0gdGhpcy5yZXFcbiAgdmFyIHJhbmdlcyA9IHJlcS5oZWFkZXJzLnJhbmdlXG4gIHZhciBvZmZzZXQgPSBvcHRpb25zLnN0YXJ0IHx8IDBcblxuICBpZiAoaGVhZGVyc1NlbnQocmVzKSkge1xuICAgIC8vIGltcG9zc2libGUgdG8gc2VuZCBub3dcbiAgICB0aGlzLmhlYWRlcnNBbHJlYWR5U2VudCgpXG4gICAgcmV0dXJuXG4gIH1cblxuICBkZWJ1ZygncGlwZSBcIiVzXCInLCBwYXRoKVxuXG4gIC8vIHNldCBoZWFkZXIgZmllbGRzXG4gIHRoaXMuc2V0SGVhZGVyKHBhdGgsIHN0YXQpXG5cbiAgLy8gc2V0IGNvbnRlbnQtdHlwZVxuICB0aGlzLnR5cGUocGF0aClcblxuICAvLyBjb25kaXRpb25hbCBHRVQgc3VwcG9ydFxuICBpZiAodGhpcy5pc0NvbmRpdGlvbmFsR0VUKCkpIHtcbiAgICBpZiAodGhpcy5pc1ByZWNvbmRpdGlvbkZhaWx1cmUoKSkge1xuICAgICAgdGhpcy5lcnJvcig0MTIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0NhY2hhYmxlKCkgJiYgdGhpcy5pc0ZyZXNoKCkpIHtcbiAgICAgIHRoaXMubm90TW9kaWZpZWQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgLy8gYWRqdXN0IGxlbiB0byBzdGFydC9lbmQgb3B0aW9uc1xuICBsZW4gPSBNYXRoLm1heCgwLCBsZW4gLSBvZmZzZXQpXG4gIGlmIChvcHRpb25zLmVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGJ5dGVzID0gb3B0aW9ucy5lbmQgLSBvZmZzZXQgKyAxXG4gICAgaWYgKGxlbiA+IGJ5dGVzKSBsZW4gPSBieXRlc1xuICB9XG5cbiAgLy8gUmFuZ2Ugc3VwcG9ydFxuICBpZiAodGhpcy5fYWNjZXB0UmFuZ2VzICYmIEJZVEVTX1JBTkdFX1JFR0VYUC50ZXN0KHJhbmdlcykpIHtcbiAgICAvLyBwYXJzZVxuICAgIHJhbmdlcyA9IHBhcnNlUmFuZ2UobGVuLCByYW5nZXMsIHtcbiAgICAgIGNvbWJpbmU6IHRydWVcbiAgICB9KVxuXG4gICAgLy8gSWYtUmFuZ2Ugc3VwcG9ydFxuICAgIGlmICghdGhpcy5pc1JhbmdlRnJlc2goKSkge1xuICAgICAgZGVidWcoJ3JhbmdlIHN0YWxlJylcbiAgICAgIHJhbmdlcyA9IC0yXG4gICAgfVxuXG4gICAgLy8gdW5zYXRpc2ZpYWJsZVxuICAgIGlmIChyYW5nZXMgPT09IC0xKSB7XG4gICAgICBkZWJ1ZygncmFuZ2UgdW5zYXRpc2ZpYWJsZScpXG5cbiAgICAgIC8vIENvbnRlbnQtUmFuZ2VcbiAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtUmFuZ2UnLCBjb250ZW50UmFuZ2UoJ2J5dGVzJywgbGVuKSlcblxuICAgICAgLy8gNDE2IFJlcXVlc3RlZCBSYW5nZSBOb3QgU2F0aXNmaWFibGVcbiAgICAgIHJldHVybiB0aGlzLmVycm9yKDQxNiwge1xuICAgICAgICBoZWFkZXJzOiB7J0NvbnRlbnQtUmFuZ2UnOiByZXMuZ2V0SGVhZGVyKCdDb250ZW50LVJhbmdlJyl9XG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIHZhbGlkIChzeW50YWN0aWNhbGx5IGludmFsaWQvbXVsdGlwbGUgcmFuZ2VzIGFyZSB0cmVhdGVkIGFzIGEgcmVndWxhciByZXNwb25zZSlcbiAgICBpZiAocmFuZ2VzICE9PSAtMiAmJiByYW5nZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBkZWJ1ZygncmFuZ2UgJWonLCByYW5nZXMpXG5cbiAgICAgIC8vIENvbnRlbnQtUmFuZ2VcbiAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjA2XG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVJhbmdlJywgY29udGVudFJhbmdlKCdieXRlcycsIGxlbiwgcmFuZ2VzWzBdKSlcblxuICAgICAgLy8gYWRqdXN0IGZvciByZXF1ZXN0ZWQgcmFuZ2VcbiAgICAgIG9mZnNldCArPSByYW5nZXNbMF0uc3RhcnRcbiAgICAgIGxlbiA9IHJhbmdlc1swXS5lbmQgLSByYW5nZXNbMF0uc3RhcnQgKyAxXG4gICAgfVxuICB9XG5cbiAgLy8gY2xvbmUgb3B0aW9uc1xuICBmb3IgKHZhciBwcm9wIGluIG9wdGlvbnMpIHtcbiAgICBvcHRzW3Byb3BdID0gb3B0aW9uc1twcm9wXVxuICB9XG5cbiAgLy8gc2V0IHJlYWQgb3B0aW9uc1xuICBvcHRzLnN0YXJ0ID0gb2Zmc2V0XG4gIG9wdHMuZW5kID0gTWF0aC5tYXgob2Zmc2V0LCBvZmZzZXQgKyBsZW4gLSAxKVxuXG4gIC8vIGNvbnRlbnQtbGVuZ3RoXG4gIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgbGVuKVxuXG4gIC8vIEhFQUQgc3VwcG9ydFxuICBpZiAocmVxLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgcmVzLmVuZCgpXG4gICAgcmV0dXJuXG4gIH1cblxuICB0aGlzLnN0cmVhbShwYXRoLCBvcHRzKVxufVxuXG4vKipcbiAqIFRyYW5zZmVyIGZpbGUgZm9yIGBwYXRoYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQGFwaSBwcml2YXRlXG4gKi9cblNlbmRTdHJlYW0ucHJvdG90eXBlLnNlbmRGaWxlID0gZnVuY3Rpb24gc2VuZEZpbGUgKHBhdGgpIHtcbiAgdmFyIGkgPSAwXG4gIHZhciBzZWxmID0gdGhpc1xuXG4gIGRlYnVnKCdzdGF0IFwiJXNcIicsIHBhdGgpXG4gIGZzLnN0YXQocGF0aCwgZnVuY3Rpb24gb25zdGF0IChlcnIsIHN0YXQpIHtcbiAgICBpZiAoZXJyICYmIGVyci5jb2RlID09PSAnRU5PRU5UJyAmJiAhZXh0bmFtZShwYXRoKSAmJiBwYXRoW3BhdGgubGVuZ3RoIC0gMV0gIT09IHNlcCkge1xuICAgICAgLy8gbm90IGZvdW5kLCBjaGVjayBleHRlbnNpb25zXG4gICAgICByZXR1cm4gbmV4dChlcnIpXG4gICAgfVxuICAgIGlmIChlcnIpIHJldHVybiBzZWxmLm9uU3RhdEVycm9yKGVycilcbiAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSByZXR1cm4gc2VsZi5yZWRpcmVjdChwYXRoKVxuICAgIHNlbGYuZW1pdCgnZmlsZScsIHBhdGgsIHN0YXQpXG4gICAgc2VsZi5zZW5kKHBhdGgsIHN0YXQpXG4gIH0pXG5cbiAgZnVuY3Rpb24gbmV4dCAoZXJyKSB7XG4gICAgaWYgKHNlbGYuX2V4dGVuc2lvbnMubGVuZ3RoIDw9IGkpIHtcbiAgICAgIHJldHVybiBlcnJcbiAgICAgICAgPyBzZWxmLm9uU3RhdEVycm9yKGVycilcbiAgICAgICAgOiBzZWxmLmVycm9yKDQwNClcbiAgICB9XG5cbiAgICB2YXIgcCA9IHBhdGggKyAnLicgKyBzZWxmLl9leHRlbnNpb25zW2krK11cblxuICAgIGRlYnVnKCdzdGF0IFwiJXNcIicsIHApXG4gICAgZnMuc3RhdChwLCBmdW5jdGlvbiAoZXJyLCBzdGF0KSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gbmV4dChlcnIpXG4gICAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSByZXR1cm4gbmV4dCgpXG4gICAgICBzZWxmLmVtaXQoJ2ZpbGUnLCBwLCBzdGF0KVxuICAgICAgc2VsZi5zZW5kKHAsIHN0YXQpXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIFRyYW5zZmVyIGluZGV4IGZvciBgcGF0aGAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5zZW5kSW5kZXggPSBmdW5jdGlvbiBzZW5kSW5kZXggKHBhdGgpIHtcbiAgdmFyIGkgPSAtMVxuICB2YXIgc2VsZiA9IHRoaXNcblxuICBmdW5jdGlvbiBuZXh0IChlcnIpIHtcbiAgICBpZiAoKytpID49IHNlbGYuX2luZGV4Lmxlbmd0aCkge1xuICAgICAgaWYgKGVycikgcmV0dXJuIHNlbGYub25TdGF0RXJyb3IoZXJyKVxuICAgICAgcmV0dXJuIHNlbGYuZXJyb3IoNDA0KVxuICAgIH1cblxuICAgIHZhciBwID0gam9pbihwYXRoLCBzZWxmLl9pbmRleFtpXSlcblxuICAgIGRlYnVnKCdzdGF0IFwiJXNcIicsIHApXG4gICAgZnMuc3RhdChwLCBmdW5jdGlvbiAoZXJyLCBzdGF0KSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gbmV4dChlcnIpXG4gICAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSByZXR1cm4gbmV4dCgpXG4gICAgICBzZWxmLmVtaXQoJ2ZpbGUnLCBwLCBzdGF0KVxuICAgICAgc2VsZi5zZW5kKHAsIHN0YXQpXG4gICAgfSlcbiAgfVxuXG4gIG5leHQoKVxufVxuXG4vKipcbiAqIFN0cmVhbSBgcGF0aGAgdG8gdGhlIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUuc3RyZWFtID0gZnVuY3Rpb24gc3RyZWFtIChwYXRoLCBvcHRpb25zKSB7XG4gIC8vIFRPRE86IHRoaXMgaXMgYWxsIGxhbWUsIHJlZmFjdG9yIG1lZWVlXG4gIHZhciBmaW5pc2hlZCA9IGZhbHNlXG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgcmVzID0gdGhpcy5yZXNcblxuICAvLyBwaXBlXG4gIHZhciBzdHJlYW0gPSBmcy5jcmVhdGVSZWFkU3RyZWFtKHBhdGgsIG9wdGlvbnMpXG4gIHRoaXMuZW1pdCgnc3RyZWFtJywgc3RyZWFtKVxuICBzdHJlYW0ucGlwZShyZXMpXG5cbiAgLy8gcmVzcG9uc2UgZmluaXNoZWQsIGRvbmUgd2l0aCB0aGUgZmRcbiAgb25GaW5pc2hlZChyZXMsIGZ1bmN0aW9uIG9uZmluaXNoZWQgKCkge1xuICAgIGZpbmlzaGVkID0gdHJ1ZVxuICAgIGRlc3Ryb3koc3RyZWFtKVxuICB9KVxuXG4gIC8vIGVycm9yIGhhbmRsaW5nIGNvZGUtc21lbGxcbiAgc3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIG9uZXJyb3IgKGVycikge1xuICAgIC8vIHJlcXVlc3QgYWxyZWFkeSBmaW5pc2hlZFxuICAgIGlmIChmaW5pc2hlZCkgcmV0dXJuXG5cbiAgICAvLyBjbGVhbiB1cCBzdHJlYW1cbiAgICBmaW5pc2hlZCA9IHRydWVcbiAgICBkZXN0cm95KHN0cmVhbSlcblxuICAgIC8vIGVycm9yXG4gICAgc2VsZi5vblN0YXRFcnJvcihlcnIpXG4gIH0pXG5cbiAgLy8gZW5kXG4gIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gb25lbmQgKCkge1xuICAgIHNlbGYuZW1pdCgnZW5kJylcbiAgfSlcbn1cblxuLyoqXG4gKiBTZXQgY29udGVudC10eXBlIGJhc2VkIG9uIGBwYXRoYFxuICogaWYgaXQgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZXQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLnR5cGUgPSBmdW5jdGlvbiB0eXBlIChwYXRoKSB7XG4gIHZhciByZXMgPSB0aGlzLnJlc1xuXG4gIGlmIChyZXMuZ2V0SGVhZGVyKCdDb250ZW50LVR5cGUnKSkgcmV0dXJuXG5cbiAgdmFyIHR5cGUgPSBtaW1lLmxvb2t1cChwYXRoKVxuXG4gIGlmICghdHlwZSkge1xuICAgIGRlYnVnKCdubyBjb250ZW50LXR5cGUnKVxuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGNoYXJzZXQgPSBtaW1lLmNoYXJzZXRzLmxvb2t1cCh0eXBlKVxuXG4gIGRlYnVnKCdjb250ZW50LXR5cGUgJXMnLCB0eXBlKVxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCB0eXBlICsgKGNoYXJzZXQgPyAnOyBjaGFyc2V0PScgKyBjaGFyc2V0IDogJycpKVxufVxuXG4vKipcbiAqIFNldCByZXNwb25zZSBoZWFkZXIgZmllbGRzLCBtb3N0XG4gKiBmaWVsZHMgbWF5IGJlIHByZS1kZWZpbmVkLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhdFxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUuc2V0SGVhZGVyID0gZnVuY3Rpb24gc2V0SGVhZGVyIChwYXRoLCBzdGF0KSB7XG4gIHZhciByZXMgPSB0aGlzLnJlc1xuXG4gIHRoaXMuZW1pdCgnaGVhZGVycycsIHJlcywgcGF0aCwgc3RhdClcblxuICBpZiAodGhpcy5fYWNjZXB0UmFuZ2VzICYmICFyZXMuZ2V0SGVhZGVyKCdBY2NlcHQtUmFuZ2VzJykpIHtcbiAgICBkZWJ1ZygnYWNjZXB0IHJhbmdlcycpXG4gICAgcmVzLnNldEhlYWRlcignQWNjZXB0LVJhbmdlcycsICdieXRlcycpXG4gIH1cblxuICBpZiAodGhpcy5fY2FjaGVDb250cm9sICYmICFyZXMuZ2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJykpIHtcbiAgICB2YXIgY2FjaGVDb250cm9sID0gJ3B1YmxpYywgbWF4LWFnZT0nICsgTWF0aC5mbG9vcih0aGlzLl9tYXhhZ2UgLyAxMDAwKVxuXG4gICAgaWYgKHRoaXMuX2ltbXV0YWJsZSkge1xuICAgICAgY2FjaGVDb250cm9sICs9ICcsIGltbXV0YWJsZSdcbiAgICB9XG5cbiAgICBkZWJ1ZygnY2FjaGUtY29udHJvbCAlcycsIGNhY2hlQ29udHJvbClcbiAgICByZXMuc2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJywgY2FjaGVDb250cm9sKVxuICB9XG5cbiAgaWYgKHRoaXMuX2xhc3RNb2RpZmllZCAmJiAhcmVzLmdldEhlYWRlcignTGFzdC1Nb2RpZmllZCcpKSB7XG4gICAgdmFyIG1vZGlmaWVkID0gc3RhdC5tdGltZS50b1VUQ1N0cmluZygpXG4gICAgZGVidWcoJ21vZGlmaWVkICVzJywgbW9kaWZpZWQpXG4gICAgcmVzLnNldEhlYWRlcignTGFzdC1Nb2RpZmllZCcsIG1vZGlmaWVkKVxuICB9XG5cbiAgaWYgKHRoaXMuX2V0YWcgJiYgIXJlcy5nZXRIZWFkZXIoJ0VUYWcnKSkge1xuICAgIHZhciB2YWwgPSBldGFnKHN0YXQpXG4gICAgZGVidWcoJ2V0YWcgJXMnLCB2YWwpXG4gICAgcmVzLnNldEhlYWRlcignRVRhZycsIHZhbClcbiAgfVxufVxuXG4vKipcbiAqIENsZWFyIGFsbCBoZWFkZXJzIGZyb20gYSByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNsZWFySGVhZGVycyAocmVzKSB7XG4gIHZhciBoZWFkZXJzID0gZ2V0SGVhZGVyTmFtZXMocmVzKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7IGkrKykge1xuICAgIHJlcy5yZW1vdmVIZWFkZXIoaGVhZGVyc1tpXSlcbiAgfVxufVxuXG4vKipcbiAqIENvbGxhcHNlIGFsbCBsZWFkaW5nIHNsYXNoZXMgaW50byBhIHNpbmdsZSBzbGFzaFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNvbGxhcHNlTGVhZGluZ1NsYXNoZXMgKHN0cikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHJbaV0gIT09ICcvJykge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaSA+IDFcbiAgICA/ICcvJyArIHN0ci5zdWJzdHIoaSlcbiAgICA6IHN0clxufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBwYXRoIHBhcnRzIGNvbnRhaW4gYSBkb3RmaWxlLlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbnRhaW5zRG90RmlsZSAocGFydHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwYXJ0ID0gcGFydHNbaV1cbiAgICBpZiAocGFydC5sZW5ndGggPiAxICYmIHBhcnRbMF0gPT09ICcuJykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBDb250ZW50LVJhbmdlIGhlYWRlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtudW1iZXJ9IHNpemVcbiAqIEBwYXJhbSB7YXJyYXl9IFtyYW5nZV1cbiAqL1xuXG5mdW5jdGlvbiBjb250ZW50UmFuZ2UgKHR5cGUsIHNpemUsIHJhbmdlKSB7XG4gIHJldHVybiB0eXBlICsgJyAnICsgKHJhbmdlID8gcmFuZ2Uuc3RhcnQgKyAnLScgKyByYW5nZS5lbmQgOiAnKicpICsgJy8nICsgc2l6ZVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG1pbmltYWwgSFRNTCBkb2N1bWVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBib2R5XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUh0bWxEb2N1bWVudCAodGl0bGUsIGJvZHkpIHtcbiAgcmV0dXJuICc8IURPQ1RZUEUgaHRtbD5cXG4nICtcbiAgICAnPGh0bWwgbGFuZz1cImVuXCI+XFxuJyArXG4gICAgJzxoZWFkPlxcbicgK1xuICAgICc8bWV0YSBjaGFyc2V0PVwidXRmLThcIj5cXG4nICtcbiAgICAnPHRpdGxlPicgKyB0aXRsZSArICc8L3RpdGxlPlxcbicgK1xuICAgICc8L2hlYWQ+XFxuJyArXG4gICAgJzxib2R5PlxcbicgK1xuICAgICc8cHJlPicgKyBib2R5ICsgJzwvcHJlPlxcbicgK1xuICAgICc8L2JvZHk+XFxuJyArXG4gICAgJzwvaHRtbD5cXG4nXG59XG5cbi8qKlxuICogZGVjb2RlVVJJQ29tcG9uZW50LlxuICpcbiAqIEFsbG93cyBWOCB0byBvbmx5IGRlb3B0aW1pemUgdGhpcyBmbiBpbnN0ZWFkIG9mIGFsbFxuICogb2Ygc2VuZCgpLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBkZWNvZGUgKHBhdGgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHBhdGgpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAtMVxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBoZWFkZXIgbmFtZXMgb24gYSByZXNwbnNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNcbiAqIEByZXR1cm5zIHthcnJheVtzdHJpbmddfVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRIZWFkZXJOYW1lcyAocmVzKSB7XG4gIHJldHVybiB0eXBlb2YgcmVzLmdldEhlYWRlck5hbWVzICE9PSAnZnVuY3Rpb24nXG4gICAgPyBPYmplY3Qua2V5cyhyZXMuX2hlYWRlcnMgfHwge30pXG4gICAgOiByZXMuZ2V0SGVhZGVyTmFtZXMoKVxufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBlbWl0dGVyIGhhcyBsaXN0ZW5lcnMgb2YgYSBnaXZlbiB0eXBlLlxuICpcbiAqIFRoZSB3YXkgdG8gZG8gdGhpcyBjaGVjayBpcyBkb25lIHRocmVlIGRpZmZlcmVudCB3YXlzIGluIE5vZGUuanMgPj0gMC44XG4gKiBzbyB0aGlzIGNvbnNvbGlkYXRlcyB0aGVtIGludG8gYSBtaW5pbWFsIHNldCB1c2luZyBpbnN0YW5jZSBtZXRob2RzLlxuICpcbiAqIEBwYXJhbSB7RXZlbnRFbWl0dGVyfSBlbWl0dGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGhhc0xpc3RlbmVycyAoZW1pdHRlciwgdHlwZSkge1xuICB2YXIgY291bnQgPSB0eXBlb2YgZW1pdHRlci5saXN0ZW5lckNvdW50ICE9PSAnZnVuY3Rpb24nXG4gICAgPyBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGhcbiAgICA6IGVtaXR0ZXIubGlzdGVuZXJDb3VudCh0eXBlKVxuXG4gIHJldHVybiBjb3VudCA+IDBcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdGhlIHJlc3BvbnNlIGhlYWRlcnMgaGF2ZSBiZWVuIHNlbnQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGhlYWRlcnNTZW50IChyZXMpIHtcbiAgcmV0dXJuIHR5cGVvZiByZXMuaGVhZGVyc1NlbnQgIT09ICdib29sZWFuJ1xuICAgID8gQm9vbGVhbihyZXMuX2hlYWRlcilcbiAgICA6IHJlcy5oZWFkZXJzU2VudFxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgaW5kZXggb3B0aW9uIGludG8gYW4gYXJyYXkuXG4gKlxuICogQHBhcmFtIHtib29sZWFufHN0cmluZ3xhcnJheX0gdmFsXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBub3JtYWxpemVMaXN0ICh2YWwsIG5hbWUpIHtcbiAgdmFyIGxpc3QgPSBbXS5jb25jYXQodmFsIHx8IFtdKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0eXBlb2YgbGlzdFtpXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IobmFtZSArICcgbXVzdCBiZSBhcnJheSBvZiBzdHJpbmdzIG9yIGZhbHNlJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGlzdFxufVxuXG4vKipcbiAqIFBhcnNlIGFuIEhUVFAgRGF0ZSBpbnRvIGEgbnVtYmVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlSHR0cERhdGUgKGRhdGUpIHtcbiAgdmFyIHRpbWVzdGFtcCA9IGRhdGUgJiYgRGF0ZS5wYXJzZShkYXRlKVxuXG4gIHJldHVybiB0eXBlb2YgdGltZXN0YW1wID09PSAnbnVtYmVyJ1xuICAgID8gdGltZXN0YW1wXG4gICAgOiBOYU5cbn1cblxuLyoqXG4gKiBQYXJzZSBhIEhUVFAgdG9rZW4gbGlzdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlVG9rZW5MaXN0IChzdHIpIHtcbiAgdmFyIGVuZCA9IDBcbiAgdmFyIGxpc3QgPSBbXVxuICB2YXIgc3RhcnQgPSAwXG5cbiAgLy8gZ2F0aGVyIHRva2Vuc1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgc3dpdGNoIChzdHIuY2hhckNvZGVBdChpKSkge1xuICAgICAgY2FzZSAweDIwOiAvKiAgICovXG4gICAgICAgIGlmIChzdGFydCA9PT0gZW5kKSB7XG4gICAgICAgICAgc3RhcnQgPSBlbmQgPSBpICsgMVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDB4MmM6IC8qICwgKi9cbiAgICAgICAgbGlzdC5wdXNoKHN0ci5zdWJzdHJpbmcoc3RhcnQsIGVuZCkpXG4gICAgICAgIHN0YXJ0ID0gZW5kID0gaSArIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGVuZCA9IGkgKyAxXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gZmluYWwgdG9rZW5cbiAgbGlzdC5wdXNoKHN0ci5zdWJzdHJpbmcoc3RhcnQsIGVuZCkpXG5cbiAgcmV0dXJuIGxpc3Rcbn1cblxuLyoqXG4gKiBTZXQgYW4gb2JqZWN0IG9mIGhlYWRlcnMgb24gYSByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzXG4gKiBAcGFyYW0ge29iamVjdH0gaGVhZGVyc1xuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzZXRIZWFkZXJzIChyZXMsIGhlYWRlcnMpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhoZWFkZXJzKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldXG4gICAgcmVzLnNldEhlYWRlcihrZXksIGhlYWRlcnNba2V5XSlcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3NlbmQvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDUyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDUzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDcuMS40IFRvSW50ZWdlclxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzXG4vLyBtb2R1bGUgaWQgPSA1NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZWZpbmVkLmpzXG4vLyBtb2R1bGUgaWQgPSA1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgJGl0ZXJDcmVhdGUgPSByZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpOyAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG52YXIgRkZfSVRFUkFUT1IgPSAnQEBpdGVyYXRvcic7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGtpbmQpIHtcbiAgICBpZiAoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pIHJldHVybiBwcm90b1traW5kXTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTO1xuICB2YXIgVkFMVUVTX0JVRyA9IGZhbHNlO1xuICB2YXIgcHJvdG8gPSBCYXNlLnByb3RvdHlwZTtcbiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07XG4gIHZhciAkZGVmYXVsdCA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpO1xuICB2YXIgJGVudHJpZXMgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkO1xuICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7XG4gIHZhciBtZXRob2RzLCBrZXksIEl0ZXJhdG9yUHJvdG90eXBlO1xuICAvLyBGaXggbmF0aXZlXG4gIGlmICgkYW55TmF0aXZlKSB7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYgKCFMSUJSQVJZICYmIHR5cGVvZiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcbiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7XG4gICAgaGlkZShwcm90bywgSVRFUkFUT1IsICRkZWZhdWx0KTtcbiAgfVxuICAvLyBQbHVnIGZvciBsaWJyYXJ5XG4gIEl0ZXJhdG9yc1tOQU1FXSA9ICRkZWZhdWx0O1xuICBJdGVyYXRvcnNbVEFHXSA9IHJldHVyblRoaXM7XG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoIShrZXkgaW4gcHJvdG8pKSByZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19saWJyYXJ5LmpzXG4vLyBtb2R1bGUgaWQgPSA1N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gNTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWxlbmd0aC5qc1xuLy8gbW9kdWxlIGlkID0gNjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCdrZXlzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanNcbi8vIG1vZHVsZSBpZCA9IDYxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBpZCA9IDA7XG52YXIgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcuY29uY2F0KGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXksICcpXycsICgrK2lkICsgcHgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanNcbi8vIG1vZHVsZSBpZCA9IDYyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBUT19TVFJJTkdfVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbnZhciBET01JdGVyYWJsZXMgPSAoJ0NTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsJyArXG4gICdET01Ub2tlbkxpc3QsRGF0YVRyYW5zZmVySXRlbUxpc3QsRmlsZUxpc3QsSFRNTEFsbENvbGxlY3Rpb24sSFRNTENvbGxlY3Rpb24sSFRNTEZvcm1FbGVtZW50LEhUTUxTZWxlY3RFbGVtZW50LCcgK1xuICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICtcbiAgJ1NWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LCcgK1xuICAnVGV4dFRyYWNrTGlzdCxUb3VjaExpc3QnKS5zcGxpdCgnLCcpO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IERPTUl0ZXJhYmxlcy5sZW5ndGg7IGkrKykge1xuICB2YXIgTkFNRSA9IERPTUl0ZXJhYmxlc1tpXTtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07XG4gIHZhciBwcm90byA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIGlmIChwcm90byAmJiAhcHJvdG9bVE9fU1RSSU5HX1RBR10pIGhpZGUocHJvdG8sIFRPX1NUUklOR19UQUcsIE5BTUUpO1xuICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qc1xuLy8gbW9kdWxlIGlkID0gNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jbGFzc29mLmpzXG4vLyBtb2R1bGUgaWQgPSA2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgQ29uc3RydWN0b3IsIG5hbWUsIGZvcmJpZGRlbkZpZWxkKSB7XG4gIGlmICghKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpIHx8IChmb3JiaWRkZW5GaWVsZCAhPT0gdW5kZWZpbmVkICYmIGZvcmJpZGRlbkZpZWxkIGluIGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihuYW1lICsgJzogaW5jb3JyZWN0IGludm9jYXRpb24hJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4taW5zdGFuY2UuanNcbi8vIG1vZHVsZSBpZCA9IDY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0Jztcbi8vIDI1LjQuMS41IE5ld1Byb21pc2VDYXBhYmlsaXR5KEMpXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xuXG5mdW5jdGlvbiBQcm9taXNlQ2FwYWJpbGl0eShDKSB7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uICgkJHJlc29sdmUsICQkcmVqZWN0KSB7XG4gICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhRnVuY3Rpb24ocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUZ1bmN0aW9uKHJlamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiAoQykge1xuICByZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qc1xuLy8gbW9kdWxlIGlkID0gNjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNyYywgc2FmZSkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgaWYgKHNhZmUgJiYgdGFyZ2V0W2tleV0pIHRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgZWxzZSBoaWRlKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH0gcmV0dXJuIHRhcmdldDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qc1xuLy8gbW9kdWxlIGlkID0gNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgQU5BTFlUSUNTX1BBVEggfSBmcm9tICcuLi9jb25maWcnXG5pbXBvcnQge1xuICBBbm9tYWx5LFxuICBBbm9tYWx5SWQsIGdldEFub21hbHlUeXBlSW5mbyxcbiAgbG9hZEFub21hbHlCeUlkLFxuICBzZXRBbm9tYWx5UHJlZGljdGlvblRpbWUsXG4gIHNldEFub21hbHlTdGF0dXNcbn0gZnJvbSAnLi9hbm9tYWx5VHlwZSdcbmltcG9ydCB7IGdldFRhcmdldCB9IGZyb20gJy4vbWV0cmljcyc7XG5pbXBvcnQgeyBnZXRMYWJlbGVkU2VnbWVudHMsIGluc2VydFNlZ21lbnRzLCByZW1vdmVTZWdtZW50cyB9IGZyb20gJy4vc2VnbWVudHMnO1xuaW1wb3J0IHsgc3BsaXQsIG1hcCwgbWFwU3luYyB9IGZyb20gJ2V2ZW50LXN0cmVhbSdcblxuY29uc3QgbGVhcm5Xb3JrZXIgPSBzcGF3bigncHl0aG9uMycsIFsnd29ya2VyLnB5J10sIHsgY3dkOiBBTkFMWVRJQ1NfUEFUSCB9KVxubGVhcm5Xb3JrZXIuc3Rkb3V0LnBpcGUoc3BsaXQoKSlcbiAgLnBpcGUoXG4gICAgbWFwU3luYyhmdW5jdGlvbihsaW5lKXtcbiAgICAgIG9uTWVzc2FnZShsaW5lKVxuICAgIH0pXG4gICk7XG5cbmxlYXJuV29ya2VyLnN0ZGVyci5vbignZGF0YScsIGRhdGEgPT4gY29uc29sZS5lcnJvcihgd29ya2VyIHN0ZGVycjogJHtkYXRhfWApKTtcblxuY29uc3QgdGFza01hcCA9IHt9O1xubGV0IG5leHRUYXNrSWQgPSAwO1xuXG5mdW5jdGlvbiBvbk1lc3NhZ2UoZGF0YSkge1xuICBjb25zb2xlLmxvZyhgd29ya2VyIHN0ZG91dDogJHtkYXRhfWApO1xuICBsZXQgcmVzcG9uc2UgPSBKU09OLnBhcnNlKGRhdGEpO1xuICBsZXQgdGFza0lkID0gcmVzcG9uc2UuX190YXNrX2lkO1xuICAvLyBsZXQgYW5vbWFseU5hbWUgPSByZXNwb25zZS5hbm9tYWx5X25hbWU7XG4gIC8vIGxldCB0YXNrID0gcmVzcG9uc2UudGFzaztcbiAgbGV0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cztcblxuICBpZihzdGF0dXMgPT09ICdzdWNjZXNzJyB8fCBzdGF0dXMgPT09ICdmYWlsZWQnKSB7XG4gICAgaWYodGFza0lkIGluIHRhc2tNYXApIHtcbiAgICAgIGxldCByZXNvbHZlciA9IHRhc2tNYXBbdGFza0lkXTtcbiAgICAgIHJlc29sdmVyKHJlc3BvbnNlKTtcbiAgICAgIGRlbGV0ZSB0YXNrTWFwW3Rhc2tJZF07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJ1blRhc2sodGFzaykgOiBQcm9taXNlPGFueT4ge1xuICBsZXQgYW5vbWFseTpBbm9tYWx5ID0gbG9hZEFub21hbHlCeUlkKHRhc2suYW5vbWFseV9pZCk7XG4gIHRhc2subWV0cmljID0ge1xuICAgIGRhdGFzb3VyY2U6IGFub21hbHkubWV0cmljLmRhdGFzb3VyY2UsXG4gICAgdGFyZ2V0czogYW5vbWFseS5tZXRyaWMudGFyZ2V0cy5tYXAodCA9PiBnZXRUYXJnZXQodCkpXG4gIH07XG5cbiAgdGFzay5fX3Rhc2tfaWQgPSBuZXh0VGFza0lkKys7XG4gIGxldCBjb21tYW5kID0gSlNPTi5zdHJpbmdpZnkodGFzaylcbiAgbGVhcm5Xb3JrZXIuc3RkaW4ud3JpdGUoYCR7Y29tbWFuZH1cXG5gKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPE9iamVjdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIHRhc2tNYXBbdGFzay5fX3Rhc2tfaWRdID0gcmVzb2x2ZVxuICB9KVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW5MZWFybmluZyhhbm9tYWx5SWQ6QW5vbWFseUlkKSB7XG4gIGxldCBzZWdtZW50cyA9IGdldExhYmVsZWRTZWdtZW50cyhhbm9tYWx5SWQpO1xuICBzZXRBbm9tYWx5U3RhdHVzKGFub21hbHlJZCwgJ2xlYXJuaW5nJyk7XG4gIGxldCBhbm9tYWx5OkFub21hbHkgID0gbG9hZEFub21hbHlCeUlkKGFub21hbHlJZCk7XG4gIGxldCBhbmFseXRpY3NUeXBlID0gXCJhbm9tYWxpZXNcIjtcbiAgbGV0IHByZXNldCA9IHVuZGVmaW5lZDtcbiAgaWYgKGFub21hbHkubmFtZS5pbmNsdWRlcyhcImp1bXBzXCIpKSB7XG4gICAgYW5hbHl0aWNzVHlwZSA9IFwicGF0dGVybnNcIjtcbiAgICBwcmVzZXQgPSBcInN0ZXBzXCJcbiAgfVxuICBpZiAoYW5vbWFseS5uYW1lLmluY2x1ZGVzKFwiY2xpZmZzXCIpIHx8IGFub21hbHkubmFtZS5pbmNsdWRlcyhcImRyb3BzXCIpKSB7XG4gICAgYW5hbHl0aWNzVHlwZSA9IFwicGF0dGVybnNcIjtcbiAgICBwcmVzZXQgPSBcImNsaWZmc1wiXG4gIH1cbiAgaWYgKGFub21hbHkubmFtZS5pbmNsdWRlcyhcInBlYWtzXCIpKSB7XG4gICAgYW5hbHl0aWNzVHlwZSA9IFwicGF0dGVybnNcIjtcbiAgICBwcmVzZXQgPSBcInBlYWtzXCJcbiAgfVxuICBsZXQgdGFzayA9IHtcbiAgICB0eXBlOiAnbGVhcm4nLFxuICAgIGFub21hbHlfaWQ6IGFub21hbHlJZCxcbiAgICBhbmFseXRpY3NfdHlwZTogYW5hbHl0aWNzVHlwZSxcbiAgICBwcmVzZXQsXG4gICAgc2VnbWVudHM6IHNlZ21lbnRzXG4gIH07XG5cbiAgbGV0IHJlc3VsdCA9IGF3YWl0IHJ1blRhc2sodGFzayk7XG5cbiAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgIHNldEFub21hbHlTdGF0dXMoYW5vbWFseUlkLCAncmVhZHknKTtcbiAgICBpbnNlcnRTZWdtZW50cyhhbm9tYWx5SWQsIHJlc3VsdC5zZWdtZW50cywgZmFsc2UpO1xuICAgIHNldEFub21hbHlQcmVkaWN0aW9uVGltZShhbm9tYWx5SWQsIHJlc3VsdC5sYXN0X3ByZWRpY3Rpb25fdGltZSk7XG4gIH0gZWxzZSB7XG4gICAgc2V0QW5vbWFseVN0YXR1cyhhbm9tYWx5SWQsICdmYWlsZWQnLCByZXN1bHQuZXJyb3IpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1blByZWRpY3QoYW5vbWFseUlkOkFub21hbHlJZCkge1xuICBsZXQgYW5vbWFseTpBbm9tYWx5ID0gbG9hZEFub21hbHlCeUlkKGFub21hbHlJZCk7XG4gIGxldCBhbmFseXRpY3NUeXBlID0gXCJhbm9tYWxpZXNcIjtcbiAgbGV0IHByZXNldCA9IHVuZGVmaW5lZDtcbiAgaWYgKGFub21hbHkubmFtZS5pbmNsdWRlcyhcImp1bXBcIikpIHtcbiAgICBhbmFseXRpY3NUeXBlID0gXCJwYXR0ZXJuc1wiO1xuICAgIHByZXNldCA9IFwic3RlcHNcIlxuICB9XG4gIGlmIChhbm9tYWx5Lm5hbWUuaW5jbHVkZXMoXCJjbGlmZnNcIikgfHwgYW5vbWFseS5uYW1lLmluY2x1ZGVzKFwiZHJvcHNcIikpIHtcbiAgICBhbmFseXRpY3NUeXBlID0gXCJwYXR0ZXJuc1wiO1xuICAgIHByZXNldCA9IFwiY2xpZmZzXCJcbiAgfVxuICBpZiAoYW5vbWFseS5uYW1lLmluY2x1ZGVzKFwicGVha3NcIikpIHtcbiAgICBhbmFseXRpY3NUeXBlID0gXCJwYXR0ZXJuc1wiO1xuICAgIHByZXNldCA9IFwicGVha3NcIlxuICB9XG4gIGxldCB0YXNrID0ge1xuICAgIHR5cGU6ICdwcmVkaWN0JyxcbiAgICBhbm9tYWx5X2lkOiBhbm9tYWx5SWQsXG4gICAgYW5hbHl0aWNzX3R5cGU6IGFuYWx5dGljc1R5cGUsXG4gICAgcHJlc2V0LFxuICAgIGxhc3RfcHJlZGljdGlvbl90aW1lOiBhbm9tYWx5Lmxhc3RfcHJlZGljdGlvbl90aW1lXG4gIH07XG4gIGxldCByZXN1bHQgPSBhd2FpdCBydW5UYXNrKHRhc2spO1xuXG4gIGlmKHJlc3VsdC5zdGF0dXMgPT09ICdmYWlsZWQnKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIC8vIE1lcmdpbmcgc2VnbWVudHNcbiAgbGV0IHNlZ21lbnRzID0gZ2V0TGFiZWxlZFNlZ21lbnRzKGFub21hbHlJZCk7XG4gIGlmKHNlZ21lbnRzLmxlbmd0aCA+IDAgJiYgcmVzdWx0LnNlZ21lbnRzLmxlbmd0aCA+IDApIHtcbiAgICBsZXQgbGFzdE9sZFNlZ21lbnQgPSBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXTtcbiAgICBsZXQgZmlyc3ROZXdTZWdtZW50ID0gcmVzdWx0LnNlZ21lbnRzWzBdO1xuXG4gICAgaWYoZmlyc3ROZXdTZWdtZW50LnN0YXJ0IDw9IGxhc3RPbGRTZWdtZW50LmZpbmlzaCkge1xuICAgICAgcmVzdWx0LnNlZ21lbnRzWzBdLnN0YXJ0ID0gbGFzdE9sZFNlZ21lbnQuc3RhcnQ7XG4gICAgICByZW1vdmVTZWdtZW50cyhhbm9tYWx5SWQsIFtsYXN0T2xkU2VnbWVudC5pZF0pO1xuICAgIH1cbiAgfVxuXG4gIGluc2VydFNlZ21lbnRzKGFub21hbHlJZCwgcmVzdWx0LnNlZ21lbnRzLCBmYWxzZSk7XG4gIHNldEFub21hbHlQcmVkaWN0aW9uVGltZShhbm9tYWx5SWQsIHJlc3VsdC5sYXN0X3ByZWRpY3Rpb25fdGltZSk7XG4gIHJldHVybiByZXN1bHQuc2VnbWVudHM7XG59XG5cbmV4cG9ydCB7IHJ1bkxlYXJuaW5nLCBydW5QcmVkaWN0IH1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NlcnZpY2VzL2FuYWx5dGljcy50cyIsImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBnZXRKc29uRGF0YVN5bmMsIHdyaXRlSnNvbkRhdGFTeW5jIH0gIGZyb20gJy4vanNvbic7XG5pbXBvcnQgeyBTRUdNRU5UU19QQVRIIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IEFub21hbHlJZCwgbG9hZEFub21hbHlCeUlkLCBzYXZlQW5vbWFseSB9IGZyb20gJy4vYW5vbWFseVR5cGUnO1xuXG5mdW5jdGlvbiBnZXRMYWJlbGVkU2VnbWVudHMoYW5vbWFseUlkOiBBbm9tYWx5SWQpIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKFNFR01FTlRTX1BBVEgsIGAke2Fub21hbHlJZH1fbGFiZWxlZC5qc29uYCk7XG5cbiAgbGV0IHNlZ21lbnRzID0gW107XG4gIHRyeSB7XG4gICAgc2VnbWVudHMgPSBnZXRKc29uRGF0YVN5bmMoZmlsZW5hbWUpO1xuICAgIGZvciAobGV0IHNlZ21lbnQgb2Ygc2VnbWVudHMpIHtcbiAgICAgIGlmIChzZWdtZW50LmxhYmVsZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZWdtZW50LmxhYmVsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIHNlZ21lbnRzO1xufVxuXG5mdW5jdGlvbiBnZXRQcmVkaWN0ZWRTZWdtZW50cyhhbm9tYWx5SWQ6IEFub21hbHlJZCkge1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oU0VHTUVOVFNfUEFUSCwgYCR7YW5vbWFseUlkfV9zZWdtZW50cy5qc29uYCk7XG5cbiAgbGV0IGpzb25EYXRhO1xuICB0cnkge1xuICAgIGpzb25EYXRhID0gZ2V0SnNvbkRhdGFTeW5jKGZpbGVuYW1lKTtcbiAgfSBjYXRjaChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpO1xuICAgIGpzb25EYXRhID0gW107XG4gIH1cbiAgcmV0dXJuIGpzb25EYXRhO1xufVxuXG5mdW5jdGlvbiBzYXZlU2VnbWVudHMoYW5vbWFseUlkOiBBbm9tYWx5SWQsIHNlZ21lbnRzKSB7XG4gIGxldCBmaWxlbmFtZSA9IHBhdGguam9pbihTRUdNRU5UU19QQVRILCBgJHthbm9tYWx5SWR9X2xhYmVsZWQuanNvbmApO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIHdyaXRlSnNvbkRhdGFTeW5jKGZpbGVuYW1lLCBzZWdtZW50cyk7XG4gIH0gY2F0Y2goZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbmB0IHdyaXRlIHRvIGRiJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5zZXJ0U2VnbWVudHMoYW5vbWFseUlkOiBBbm9tYWx5SWQsIGFkZGVkU2VnbWVudHMsIGxhYmVsZWQ6Ym9vbGVhbikge1xuICAvLyBTZXQgc3RhdHVzXG4gIGxldCBpbmZvID0gbG9hZEFub21hbHlCeUlkKGFub21hbHlJZCk7XG4gIGxldCBzZWdtZW50cyA9IGdldExhYmVsZWRTZWdtZW50cyhhbm9tYWx5SWQpO1xuXG4gIGxldCBuZXh0SWQgPSBpbmZvLm5leHRfaWQ7XG4gIGxldCBhZGRlZElkcyA9IFtdXG4gIGZvciAobGV0IHNlZ21lbnQgb2YgYWRkZWRTZWdtZW50cykge1xuICAgIHNlZ21lbnQuaWQgPSBuZXh0SWQ7XG4gICAgc2VnbWVudC5sYWJlbGVkID0gbGFiZWxlZDtcbiAgICBhZGRlZElkcy5wdXNoKG5leHRJZCk7XG4gICAgbmV4dElkKys7XG4gICAgc2VnbWVudHMucHVzaChzZWdtZW50KTtcbiAgfVxuICBpbmZvLm5leHRfaWQgPSBuZXh0SWQ7XG4gIHNhdmVTZWdtZW50cyhhbm9tYWx5SWQsIHNlZ21lbnRzKTtcbiAgc2F2ZUFub21hbHkoYW5vbWFseUlkLCBpbmZvKTtcbiAgcmV0dXJuIGFkZGVkSWRzO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTZWdtZW50cyhhbm9tYWx5SWQ6IEFub21hbHlJZCwgcmVtb3ZlZFNlZ21lbnRzKSB7XG4gIGxldCBzZWdtZW50cyA9IGdldExhYmVsZWRTZWdtZW50cyhhbm9tYWx5SWQpO1xuICBmb3IgKGxldCBzZWdtZW50SWQgb2YgcmVtb3ZlZFNlZ21lbnRzKSB7XG4gICAgc2VnbWVudHMgPSBzZWdtZW50cy5maWx0ZXIoZWwgPT4gZWwuaWQgIT09IHNlZ21lbnRJZCk7XG4gIH1cbiAgc2F2ZVNlZ21lbnRzKGFub21hbHlJZCwgc2VnbWVudHMpO1xufVxuXG5leHBvcnQgeyBnZXRMYWJlbGVkU2VnbWVudHMsIGdldFByZWRpY3RlZFNlZ21lbnRzLCBzYXZlU2VnbWVudHMsIGluc2VydFNlZ21lbnRzLCByZW1vdmVTZWdtZW50cyB9XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zZXJ2aWNlcy9zZWdtZW50cy50cyIsInZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKVxuXG4vLyB0aHJvdWdoXG4vL1xuLy8gYSBzdHJlYW0gdGhhdCBkb2VzIG5vdGhpbmcgYnV0IHJlLWVtaXQgdGhlIGlucHV0LlxuLy8gdXNlZnVsIGZvciBhZ2dyZWdhdGluZyBhIHNlcmllcyBvZiBjaGFuZ2luZyBidXQgbm90IGVuZGluZyBzdHJlYW1zIGludG8gb25lIHN0cmVhbSlcblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gdGhyb3VnaFxudGhyb3VnaC50aHJvdWdoID0gdGhyb3VnaFxuXG4vL2NyZWF0ZSBhIHJlYWRhYmxlIHdyaXRhYmxlIHN0cmVhbS5cblxuZnVuY3Rpb24gdGhyb3VnaCAod3JpdGUsIGVuZCwgb3B0cykge1xuICB3cml0ZSA9IHdyaXRlIHx8IGZ1bmN0aW9uIChkYXRhKSB7IHRoaXMucXVldWUoZGF0YSkgfVxuICBlbmQgPSBlbmQgfHwgZnVuY3Rpb24gKCkgeyB0aGlzLnF1ZXVlKG51bGwpIH1cblxuICB2YXIgZW5kZWQgPSBmYWxzZSwgZGVzdHJveWVkID0gZmFsc2UsIGJ1ZmZlciA9IFtdLCBfZW5kZWQgPSBmYWxzZVxuICB2YXIgc3RyZWFtID0gbmV3IFN0cmVhbSgpXG4gIHN0cmVhbS5yZWFkYWJsZSA9IHN0cmVhbS53cml0YWJsZSA9IHRydWVcbiAgc3RyZWFtLnBhdXNlZCA9IGZhbHNlXG5cbi8vICBzdHJlYW0uYXV0b1BhdXNlICAgPSAhKG9wdHMgJiYgb3B0cy5hdXRvUGF1c2UgICA9PT0gZmFsc2UpXG4gIHN0cmVhbS5hdXRvRGVzdHJveSA9ICEob3B0cyAmJiBvcHRzLmF1dG9EZXN0cm95ID09PSBmYWxzZSlcblxuICBzdHJlYW0ud3JpdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHdyaXRlLmNhbGwodGhpcywgZGF0YSlcbiAgICByZXR1cm4gIXN0cmVhbS5wYXVzZWRcbiAgfVxuXG4gIGZ1bmN0aW9uIGRyYWluKCkge1xuICAgIHdoaWxlKGJ1ZmZlci5sZW5ndGggJiYgIXN0cmVhbS5wYXVzZWQpIHtcbiAgICAgIHZhciBkYXRhID0gYnVmZmVyLnNoaWZ0KClcbiAgICAgIGlmKG51bGwgPT09IGRhdGEpXG4gICAgICAgIHJldHVybiBzdHJlYW0uZW1pdCgnZW5kJylcbiAgICAgIGVsc2VcbiAgICAgICAgc3RyZWFtLmVtaXQoJ2RhdGEnLCBkYXRhKVxuICAgIH1cbiAgfVxuXG4gIHN0cmVhbS5xdWV1ZSA9IHN0cmVhbS5wdXNoID0gZnVuY3Rpb24gKGRhdGEpIHtcbi8vICAgIGNvbnNvbGUuZXJyb3IoZW5kZWQpXG4gICAgaWYoX2VuZGVkKSByZXR1cm4gc3RyZWFtXG4gICAgaWYoZGF0YSA9PT0gbnVsbCkgX2VuZGVkID0gdHJ1ZVxuICAgIGJ1ZmZlci5wdXNoKGRhdGEpXG4gICAgZHJhaW4oKVxuICAgIHJldHVybiBzdHJlYW1cbiAgfVxuXG4gIC8vdGhpcyB3aWxsIGJlIHJlZ2lzdGVyZWQgYXMgdGhlIGZpcnN0ICdlbmQnIGxpc3RlbmVyXG4gIC8vbXVzdCBjYWxsIGRlc3Ryb3kgbmV4dCB0aWNrLCB0byBtYWtlIHN1cmUgd2UncmUgYWZ0ZXIgYW55XG4gIC8vc3RyZWFtIHBpcGVkIGZyb20gaGVyZS5cbiAgLy90aGlzIGlzIG9ubHkgYSBwcm9ibGVtIGlmIGVuZCBpcyBub3QgZW1pdHRlZCBzeW5jaHJvbm91c2x5LlxuICAvL2EgbmljZXIgd2F5IHRvIGRvIHRoaXMgaXMgdG8gbWFrZSBzdXJlIHRoaXMgaXMgdGhlIGxhc3QgbGlzdGVuZXIgZm9yICdlbmQnXG5cbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2VcbiAgICBpZighc3RyZWFtLndyaXRhYmxlICYmIHN0cmVhbS5hdXRvRGVzdHJveSlcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBzdHJlYW0uZGVzdHJveSgpXG4gICAgICB9KVxuICB9KVxuXG4gIGZ1bmN0aW9uIF9lbmQgKCkge1xuICAgIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlXG4gICAgZW5kLmNhbGwoc3RyZWFtKVxuICAgIGlmKCFzdHJlYW0ucmVhZGFibGUgJiYgc3RyZWFtLmF1dG9EZXN0cm95KVxuICAgICAgc3RyZWFtLmRlc3Ryb3koKVxuICB9XG5cbiAgc3RyZWFtLmVuZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgaWYoZW5kZWQpIHJldHVyblxuICAgIGVuZGVkID0gdHJ1ZVxuICAgIGlmKGFyZ3VtZW50cy5sZW5ndGgpIHN0cmVhbS53cml0ZShkYXRhKVxuICAgIF9lbmQoKSAvLyB3aWxsIGVtaXQgb3IgcXVldWVcbiAgICByZXR1cm4gc3RyZWFtXG4gIH1cblxuICBzdHJlYW0uZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZihkZXN0cm95ZWQpIHJldHVyblxuICAgIGRlc3Ryb3llZCA9IHRydWVcbiAgICBlbmRlZCA9IHRydWVcbiAgICBidWZmZXIubGVuZ3RoID0gMFxuICAgIHN0cmVhbS53cml0YWJsZSA9IHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlXG4gICAgc3RyZWFtLmVtaXQoJ2Nsb3NlJylcbiAgICByZXR1cm4gc3RyZWFtXG4gIH1cblxuICBzdHJlYW0ucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYoc3RyZWFtLnBhdXNlZCkgcmV0dXJuXG4gICAgc3RyZWFtLnBhdXNlZCA9IHRydWVcbiAgICByZXR1cm4gc3RyZWFtXG4gIH1cblxuICBzdHJlYW0ucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICAgIGlmKHN0cmVhbS5wYXVzZWQpIHtcbiAgICAgIHN0cmVhbS5wYXVzZWQgPSBmYWxzZVxuICAgICAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpXG4gICAgfVxuICAgIGRyYWluKClcbiAgICAvL21heSBoYXZlIGJlY29tZSBwYXVzZWQgYWdhaW4sXG4gICAgLy9hcyBkcmFpbiBlbWl0cyAnZGF0YScuXG4gICAgaWYoIXN0cmVhbS5wYXVzZWQpXG4gICAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKVxuICAgIHJldHVybiBzdHJlYW1cbiAgfVxuICByZXR1cm4gc3RyZWFtXG59XG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy90aHJvdWdoL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA3MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGJvZHktcGFyc2VyXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdib2R5LXBhcnNlcicpXG5cbi8qKlxuICogQ2FjaGUgb2YgbG9hZGVkIHBhcnNlcnMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBwYXJzZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuXG4vKipcbiAqIEB0eXBlZGVmIFBhcnNlcnNcbiAqIEB0eXBlIHtmdW5jdGlvbn1cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IGpzb25cbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IHJhd1xuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gdGV4dFxuICogQHByb3BlcnR5IHtmdW5jdGlvbn0gdXJsZW5jb2RlZFxuICovXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAdHlwZSB7UGFyc2Vyc31cbiAqL1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGUuZnVuY3Rpb24oYm9keVBhcnNlcixcbiAgJ2JvZHlQYXJzZXI6IHVzZSBpbmRpdmlkdWFsIGpzb24vdXJsZW5jb2RlZCBtaWRkbGV3YXJlcycpXG5cbi8qKlxuICogSlNPTiBwYXJzZXIuXG4gKiBAcHVibGljXG4gKi9cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdqc29uJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogY3JlYXRlUGFyc2VyR2V0dGVyKCdqc29uJylcbn0pXG5cbi8qKlxuICogUmF3IHBhcnNlci5cbiAqIEBwdWJsaWNcbiAqL1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3JhdycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGNyZWF0ZVBhcnNlckdldHRlcigncmF3Jylcbn0pXG5cbi8qKlxuICogVGV4dCBwYXJzZXIuXG4gKiBAcHVibGljXG4gKi9cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICd0ZXh0Jywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogY3JlYXRlUGFyc2VyR2V0dGVyKCd0ZXh0Jylcbn0pXG5cbi8qKlxuICogVVJMLWVuY29kZWQgcGFyc2VyLlxuICogQHB1YmxpY1xuICovXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAndXJsZW5jb2RlZCcsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGNyZWF0ZVBhcnNlckdldHRlcigndXJsZW5jb2RlZCcpXG59KVxuXG4vKipcbiAqIENyZWF0ZSBhIG1pZGRsZXdhcmUgdG8gcGFyc2UganNvbiBhbmQgdXJsZW5jb2RlZCBib2RpZXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKiBAZGVwcmVjYXRlZFxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGJvZHlQYXJzZXIgKG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSB7fVxuXG4gIC8vIGV4Y2x1ZGUgdHlwZSBvcHRpb25cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKHZhciBwcm9wIGluIG9wdGlvbnMpIHtcbiAgICAgIGlmIChwcm9wICE9PSAndHlwZScpIHtcbiAgICAgICAgb3B0c1twcm9wXSA9IG9wdGlvbnNbcHJvcF1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgX3VybGVuY29kZWQgPSBleHBvcnRzLnVybGVuY29kZWQob3B0cylcbiAgdmFyIF9qc29uID0gZXhwb3J0cy5qc29uKG9wdHMpXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGJvZHlQYXJzZXIgKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgX2pzb24ocmVxLCByZXMsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBuZXh0KGVycilcbiAgICAgIF91cmxlbmNvZGVkKHJlcSwgcmVzLCBuZXh0KVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBnZXR0ZXIgZm9yIGxvYWRpbmcgYSBwYXJzZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZVBhcnNlckdldHRlciAobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICByZXR1cm4gbG9hZFBhcnNlcihuYW1lKVxuICB9XG59XG5cbi8qKlxuICogTG9hZCBhIHBhcnNlciBtb2R1bGUuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvYWRQYXJzZXIgKHBhcnNlck5hbWUpIHtcbiAgdmFyIHBhcnNlciA9IHBhcnNlcnNbcGFyc2VyTmFtZV1cblxuICBpZiAocGFyc2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcGFyc2VyXG4gIH1cblxuICAvLyB0aGlzIHVzZXMgYSBzd2l0Y2ggZm9yIHN0YXRpYyByZXF1aXJlIGFuYWx5c2lzXG4gIHN3aXRjaCAocGFyc2VyTmFtZSkge1xuICAgIGNhc2UgJ2pzb24nOlxuICAgICAgcGFyc2VyID0gcmVxdWlyZSgnLi9saWIvdHlwZXMvanNvbicpXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3Jhdyc6XG4gICAgICBwYXJzZXIgPSByZXF1aXJlKCcuL2xpYi90eXBlcy9yYXcnKVxuICAgICAgYnJlYWtcbiAgICBjYXNlICd0ZXh0JzpcbiAgICAgIHBhcnNlciA9IHJlcXVpcmUoJy4vbGliL3R5cGVzL3RleHQnKVxuICAgICAgYnJlYWtcbiAgICBjYXNlICd1cmxlbmNvZGVkJzpcbiAgICAgIHBhcnNlciA9IHJlcXVpcmUoJy4vbGliL3R5cGVzL3VybGVuY29kZWQnKVxuICAgICAgYnJlYWtcbiAgfVxuXG4gIC8vIHN0b3JlIHRvIHByZXZlbnQgaW52b2tpbmcgcmVxdWlyZSgpXG4gIHJldHVybiAocGFyc2Vyc1twYXJzZXJOYW1lXSA9IHBhcnNlcilcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBkZXBkXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubGF6eVByb3BlcnR5KG1vZHVsZS5leHBvcnRzLCAnY2FsbFNpdGVUb1N0cmluZycsIGZ1bmN0aW9uIGNhbGxTaXRlVG9TdHJpbmcgKCkge1xuICB2YXIgbGltaXQgPSBFcnJvci5zdGFja1RyYWNlTGltaXRcbiAgdmFyIG9iaiA9IHt9XG4gIHZhciBwcmVwID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2VcblxuICBmdW5jdGlvbiBwcmVwYXJlT2JqZWN0U3RhY2tUcmFjZSAob2JqLCBzdGFjaykge1xuICAgIHJldHVybiBzdGFja1xuICB9XG5cbiAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmVwYXJlT2JqZWN0U3RhY2tUcmFjZVxuICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSAyXG5cbiAgLy8gY2FwdHVyZSB0aGUgc3RhY2tcbiAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2Uob2JqKVxuXG4gIC8vIHNsaWNlIHRoZSBzdGFja1xuICB2YXIgc3RhY2sgPSBvYmouc3RhY2suc2xpY2UoKVxuXG4gIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJlcFxuICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBsaW1pdFxuXG4gIHJldHVybiBzdGFja1swXS50b1N0cmluZyA/IHRvU3RyaW5nIDogcmVxdWlyZSgnLi9jYWxsc2l0ZS10b3N0cmluZycpXG59KVxuXG5sYXp5UHJvcGVydHkobW9kdWxlLmV4cG9ydHMsICdldmVudExpc3RlbmVyQ291bnQnLCBmdW5jdGlvbiBldmVudExpc3RlbmVyQ291bnQgKCkge1xuICByZXR1cm4gRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgfHwgcmVxdWlyZSgnLi9ldmVudC1saXN0ZW5lci1jb3VudCcpXG59KVxuXG4vKipcbiAqIERlZmluZSBhIGxhenkgcHJvcGVydHkuXG4gKi9cblxuZnVuY3Rpb24gbGF6eVByb3BlcnR5IChvYmosIHByb3AsIGdldHRlcikge1xuICBmdW5jdGlvbiBnZXQgKCkge1xuICAgIHZhciB2YWwgPSBnZXR0ZXIoKVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgcHJvcCwge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiB2YWxcbiAgICB9KVxuXG4gICAgcmV0dXJuIHZhbFxuICB9XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgcHJvcCwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZ2V0XG4gIH0pXG59XG5cbi8qKlxuICogQ2FsbCB0b1N0cmluZygpIG9uIHRoZSBvYmpcbiAqL1xuXG5mdW5jdGlvbiB0b1N0cmluZyAob2JqKSB7XG4gIHJldHVybiBvYmoudG9TdHJpbmcoKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2RlcGQvbGliL2NvbXBhdC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidHJ5IHtcbiAgdmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG4gIGlmICh0eXBlb2YgdXRpbC5pbmhlcml0cyAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgJyc7XG4gIG1vZHVsZS5leHBvcnRzID0gdXRpbC5pbmhlcml0cztcbn0gY2F0Y2ggKGUpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2luaGVyaXRzX2Jyb3dzZXIuanMnKTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0cy5qc1xuLy8gbW9kdWxlIGlkID0gNzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXG4vKipcbiAqIFRoaXMgaXMgdGhlIGNvbW1vbiBsb2dpYyBmb3IgYm90aCB0aGUgTm9kZS5qcyBhbmQgd2ViIGJyb3dzZXJcbiAqIGltcGxlbWVudGF0aW9ucyBvZiBgZGVidWcoKWAuXG4gKlxuICogRXhwb3NlIGBkZWJ1ZygpYCBhcyB0aGUgbW9kdWxlLlxuICovXG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZURlYnVnLmRlYnVnID0gY3JlYXRlRGVidWdbJ2RlZmF1bHQnXSA9IGNyZWF0ZURlYnVnO1xuZXhwb3J0cy5jb2VyY2UgPSBjb2VyY2U7XG5leHBvcnRzLmRpc2FibGUgPSBkaXNhYmxlO1xuZXhwb3J0cy5lbmFibGUgPSBlbmFibGU7XG5leHBvcnRzLmVuYWJsZWQgPSBlbmFibGVkO1xuZXhwb3J0cy5odW1hbml6ZSA9IHJlcXVpcmUoJ21zJyk7XG5cbi8qKlxuICogVGhlIGN1cnJlbnRseSBhY3RpdmUgZGVidWcgbW9kZSBuYW1lcywgYW5kIG5hbWVzIHRvIHNraXAuXG4gKi9cblxuZXhwb3J0cy5uYW1lcyA9IFtdO1xuZXhwb3J0cy5za2lwcyA9IFtdO1xuXG4vKipcbiAqIE1hcCBvZiBzcGVjaWFsIFwiJW5cIiBoYW5kbGluZyBmdW5jdGlvbnMsIGZvciB0aGUgZGVidWcgXCJmb3JtYXRcIiBhcmd1bWVudC5cbiAqXG4gKiBWYWxpZCBrZXkgbmFtZXMgYXJlIGEgc2luZ2xlLCBsb3dlciBvciB1cHBlci1jYXNlIGxldHRlciwgaS5lLiBcIm5cIiBhbmQgXCJOXCIuXG4gKi9cblxuZXhwb3J0cy5mb3JtYXR0ZXJzID0ge307XG5cbi8qKlxuICogUHJldmlvdXMgbG9nIHRpbWVzdGFtcC5cbiAqL1xuXG52YXIgcHJldlRpbWU7XG5cbi8qKlxuICogU2VsZWN0IGEgY29sb3IuXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlXG4gKiBAcmV0dXJuIHtOdW1iZXJ9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzZWxlY3RDb2xvcihuYW1lc3BhY2UpIHtcbiAgdmFyIGhhc2ggPSAwLCBpO1xuXG4gIGZvciAoaSBpbiBuYW1lc3BhY2UpIHtcbiAgICBoYXNoICA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpICsgbmFtZXNwYWNlLmNoYXJDb2RlQXQoaSk7XG4gICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgfVxuXG4gIHJldHVybiBleHBvcnRzLmNvbG9yc1tNYXRoLmFicyhoYXNoKSAlIGV4cG9ydHMuY29sb3JzLmxlbmd0aF07XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZGVidWdnZXIgd2l0aCB0aGUgZ2l2ZW4gYG5hbWVzcGFjZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZURlYnVnKG5hbWVzcGFjZSkge1xuXG4gIGZ1bmN0aW9uIGRlYnVnKCkge1xuICAgIC8vIGRpc2FibGVkP1xuICAgIGlmICghZGVidWcuZW5hYmxlZCkgcmV0dXJuO1xuXG4gICAgdmFyIHNlbGYgPSBkZWJ1ZztcblxuICAgIC8vIHNldCBgZGlmZmAgdGltZXN0YW1wXG4gICAgdmFyIGN1cnIgPSArbmV3IERhdGUoKTtcbiAgICB2YXIgbXMgPSBjdXJyIC0gKHByZXZUaW1lIHx8IGN1cnIpO1xuICAgIHNlbGYuZGlmZiA9IG1zO1xuICAgIHNlbGYucHJldiA9IHByZXZUaW1lO1xuICAgIHNlbGYuY3VyciA9IGN1cnI7XG4gICAgcHJldlRpbWUgPSBjdXJyO1xuXG4gICAgLy8gdHVybiB0aGUgYGFyZ3VtZW50c2AgaW50byBhIHByb3BlciBBcnJheVxuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG5cbiAgICBhcmdzWzBdID0gZXhwb3J0cy5jb2VyY2UoYXJnc1swXSk7XG5cbiAgICBpZiAoJ3N0cmluZycgIT09IHR5cGVvZiBhcmdzWzBdKSB7XG4gICAgICAvLyBhbnl0aGluZyBlbHNlIGxldCdzIGluc3BlY3Qgd2l0aCAlT1xuICAgICAgYXJncy51bnNoaWZ0KCclTycpO1xuICAgIH1cblxuICAgIC8vIGFwcGx5IGFueSBgZm9ybWF0dGVyc2AgdHJhbnNmb3JtYXRpb25zXG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBhcmdzWzBdID0gYXJnc1swXS5yZXBsYWNlKC8lKFthLXpBLVolXSkvZywgZnVuY3Rpb24obWF0Y2gsIGZvcm1hdCkge1xuICAgICAgLy8gaWYgd2UgZW5jb3VudGVyIGFuIGVzY2FwZWQgJSB0aGVuIGRvbid0IGluY3JlYXNlIHRoZSBhcnJheSBpbmRleFxuICAgICAgaWYgKG1hdGNoID09PSAnJSUnKSByZXR1cm4gbWF0Y2g7XG4gICAgICBpbmRleCsrO1xuICAgICAgdmFyIGZvcm1hdHRlciA9IGV4cG9ydHMuZm9ybWF0dGVyc1tmb3JtYXRdO1xuICAgICAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiBmb3JtYXR0ZXIpIHtcbiAgICAgICAgdmFyIHZhbCA9IGFyZ3NbaW5kZXhdO1xuICAgICAgICBtYXRjaCA9IGZvcm1hdHRlci5jYWxsKHNlbGYsIHZhbCk7XG5cbiAgICAgICAgLy8gbm93IHdlIG5lZWQgdG8gcmVtb3ZlIGBhcmdzW2luZGV4XWAgc2luY2UgaXQncyBpbmxpbmVkIGluIHRoZSBgZm9ybWF0YFxuICAgICAgICBhcmdzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIGluZGV4LS07XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfSk7XG5cbiAgICAvLyBhcHBseSBlbnYtc3BlY2lmaWMgZm9ybWF0dGluZyAoY29sb3JzLCBldGMuKVxuICAgIGV4cG9ydHMuZm9ybWF0QXJncy5jYWxsKHNlbGYsIGFyZ3MpO1xuXG4gICAgdmFyIGxvZ0ZuID0gZGVidWcubG9nIHx8IGV4cG9ydHMubG9nIHx8IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7XG4gICAgbG9nRm4uYXBwbHkoc2VsZiwgYXJncyk7XG4gIH1cblxuICBkZWJ1Zy5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7XG4gIGRlYnVnLmVuYWJsZWQgPSBleHBvcnRzLmVuYWJsZWQobmFtZXNwYWNlKTtcbiAgZGVidWcudXNlQ29sb3JzID0gZXhwb3J0cy51c2VDb2xvcnMoKTtcbiAgZGVidWcuY29sb3IgPSBzZWxlY3RDb2xvcihuYW1lc3BhY2UpO1xuXG4gIC8vIGVudi1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiBsb2dpYyBmb3IgZGVidWcgaW5zdGFuY2VzXG4gIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgZXhwb3J0cy5pbml0KSB7XG4gICAgZXhwb3J0cy5pbml0KGRlYnVnKTtcbiAgfVxuXG4gIHJldHVybiBkZWJ1Zztcbn1cblxuLyoqXG4gKiBFbmFibGVzIGEgZGVidWcgbW9kZSBieSBuYW1lc3BhY2VzLiBUaGlzIGNhbiBpbmNsdWRlIG1vZGVzXG4gKiBzZXBhcmF0ZWQgYnkgYSBjb2xvbiBhbmQgd2lsZGNhcmRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGVuYWJsZShuYW1lc3BhY2VzKSB7XG4gIGV4cG9ydHMuc2F2ZShuYW1lc3BhY2VzKTtcblxuICBleHBvcnRzLm5hbWVzID0gW107XG4gIGV4cG9ydHMuc2tpcHMgPSBbXTtcblxuICB2YXIgc3BsaXQgPSAodHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gbmFtZXNwYWNlcyA6ICcnKS5zcGxpdCgvW1xccyxdKy8pO1xuICB2YXIgbGVuID0gc3BsaXQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoIXNwbGl0W2ldKSBjb250aW51ZTsgLy8gaWdub3JlIGVtcHR5IHN0cmluZ3NcbiAgICBuYW1lc3BhY2VzID0gc3BsaXRbaV0ucmVwbGFjZSgvXFwqL2csICcuKj8nKTtcbiAgICBpZiAobmFtZXNwYWNlc1swXSA9PT0gJy0nKSB7XG4gICAgICBleHBvcnRzLnNraXBzLnB1c2gobmV3IFJlZ0V4cCgnXicgKyBuYW1lc3BhY2VzLnN1YnN0cigxKSArICckJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBvcnRzLm5hbWVzLnB1c2gobmV3IFJlZ0V4cCgnXicgKyBuYW1lc3BhY2VzICsgJyQnKSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRGlzYWJsZSBkZWJ1ZyBvdXRwdXQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBkaXNhYmxlKCkge1xuICBleHBvcnRzLmVuYWJsZSgnJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBtb2RlIG5hbWUgaXMgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlbmFibGVkKG5hbWUpIHtcbiAgdmFyIGksIGxlbjtcbiAgZm9yIChpID0gMCwgbGVuID0gZXhwb3J0cy5za2lwcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChleHBvcnRzLnNraXBzW2ldLnRlc3QobmFtZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZm9yIChpID0gMCwgbGVuID0gZXhwb3J0cy5uYW1lcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChleHBvcnRzLm5hbWVzW2ldLnRlc3QobmFtZSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ29lcmNlIGB2YWxgLlxuICpcbiAqIEBwYXJhbSB7TWl4ZWR9IHZhbFxuICogQHJldHVybiB7TWl4ZWR9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb2VyY2UodmFsKSB7XG4gIGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikgcmV0dXJuIHZhbC5zdGFjayB8fCB2YWwubWVzc2FnZTtcbiAgcmV0dXJuIHZhbDtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvZGVidWcuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogSGVscGVycy5cbiAqL1xuXG52YXIgcyA9IDEwMDA7XG52YXIgbSA9IHMgKiA2MDtcbnZhciBoID0gbSAqIDYwO1xudmFyIGQgPSBoICogMjQ7XG52YXIgeSA9IGQgKiAzNjUuMjU7XG5cbi8qKlxuICogUGFyc2Ugb3IgZm9ybWF0IHRoZSBnaXZlbiBgdmFsYC5cbiAqXG4gKiBPcHRpb25zOlxuICpcbiAqICAtIGBsb25nYCB2ZXJib3NlIGZvcm1hdHRpbmcgW2ZhbHNlXVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE51bWJlcn0gdmFsXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAdGhyb3dzIHtFcnJvcn0gdGhyb3cgYW4gZXJyb3IgaWYgdmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSBudW1iZXJcbiAqIEByZXR1cm4ge1N0cmluZ3xOdW1iZXJ9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odmFsLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiB2YWwubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwYXJzZSh2YWwpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInICYmIGlzTmFOKHZhbCkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMubG9uZyA/IGZtdExvbmcodmFsKSA6IGZtdFNob3J0KHZhbCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICd2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIHZhbGlkIG51bWJlci4gdmFsPScgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkodmFsKVxuICApO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYHN0cmAgYW5kIHJldHVybiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2Uoc3RyKSB7XG4gIHN0ciA9IFN0cmluZyhzdHIpO1xuICBpZiAoc3RyLmxlbmd0aCA+IDEwMCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbWF0Y2ggPSAvXigoPzpcXGQrKT9cXC4/XFxkKykgKihtaWxsaXNlY29uZHM/fG1zZWNzP3xtc3xzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHllYXJzP3x5cnM/fHkpPyQvaS5leGVjKFxuICAgIHN0clxuICApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuID0gcGFyc2VGbG9hdChtYXRjaFsxXSk7XG4gIHZhciB0eXBlID0gKG1hdGNoWzJdIHx8ICdtcycpLnRvTG93ZXJDYXNlKCk7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3llYXJzJzpcbiAgICBjYXNlICd5ZWFyJzpcbiAgICBjYXNlICd5cnMnOlxuICAgIGNhc2UgJ3lyJzpcbiAgICBjYXNlICd5JzpcbiAgICAgIHJldHVybiBuICogeTtcbiAgICBjYXNlICdkYXlzJzpcbiAgICBjYXNlICdkYXknOlxuICAgIGNhc2UgJ2QnOlxuICAgICAgcmV0dXJuIG4gKiBkO1xuICAgIGNhc2UgJ2hvdXJzJzpcbiAgICBjYXNlICdob3VyJzpcbiAgICBjYXNlICdocnMnOlxuICAgIGNhc2UgJ2hyJzpcbiAgICBjYXNlICdoJzpcbiAgICAgIHJldHVybiBuICogaDtcbiAgICBjYXNlICdtaW51dGVzJzpcbiAgICBjYXNlICdtaW51dGUnOlxuICAgIGNhc2UgJ21pbnMnOlxuICAgIGNhc2UgJ21pbic6XG4gICAgY2FzZSAnbSc6XG4gICAgICByZXR1cm4gbiAqIG07XG4gICAgY2FzZSAnc2Vjb25kcyc6XG4gICAgY2FzZSAnc2Vjb25kJzpcbiAgICBjYXNlICdzZWNzJzpcbiAgICBjYXNlICdzZWMnOlxuICAgIGNhc2UgJ3MnOlxuICAgICAgcmV0dXJuIG4gKiBzO1xuICAgIGNhc2UgJ21pbGxpc2Vjb25kcyc6XG4gICAgY2FzZSAnbWlsbGlzZWNvbmQnOlxuICAgIGNhc2UgJ21zZWNzJzpcbiAgICBjYXNlICdtc2VjJzpcbiAgICBjYXNlICdtcyc6XG4gICAgICByZXR1cm4gbjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFNob3J0IGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZtdFNob3J0KG1zKSB7XG4gIGlmIChtcyA+PSBkKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBkKSArICdkJztcbiAgfVxuICBpZiAobXMgPj0gaCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gaCkgKyAnaCc7XG4gIH1cbiAgaWYgKG1zID49IG0pIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG0pICsgJ20nO1xuICB9XG4gIGlmIChtcyA+PSBzKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBzKSArICdzJztcbiAgfVxuICByZXR1cm4gbXMgKyAnbXMnO1xufVxuXG4vKipcbiAqIExvbmcgZm9ybWF0IGZvciBgbXNgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZm10TG9uZyhtcykge1xuICByZXR1cm4gcGx1cmFsKG1zLCBkLCAnZGF5JykgfHxcbiAgICBwbHVyYWwobXMsIGgsICdob3VyJykgfHxcbiAgICBwbHVyYWwobXMsIG0sICdtaW51dGUnKSB8fFxuICAgIHBsdXJhbChtcywgcywgJ3NlY29uZCcpIHx8XG4gICAgbXMgKyAnIG1zJztcbn1cblxuLyoqXG4gKiBQbHVyYWxpemF0aW9uIGhlbHBlci5cbiAqL1xuXG5mdW5jdGlvbiBwbHVyYWwobXMsIG4sIG5hbWUpIHtcbiAgaWYgKG1zIDwgbikge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAobXMgPCBuICogMS41KSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IobXMgLyBuKSArICcgJyArIG5hbWU7XG4gIH1cbiAgcmV0dXJuIE1hdGguY2VpbChtcyAvIG4pICsgJyAnICsgbmFtZSArICdzJztcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9tcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibmV0XCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwibmV0XCJcbi8vIG1vZHVsZSBpZCA9IDc2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZGVwZFxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlclxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbmxhenlQcm9wZXJ0eShtb2R1bGUuZXhwb3J0cywgJ2NhbGxTaXRlVG9TdHJpbmcnLCBmdW5jdGlvbiBjYWxsU2l0ZVRvU3RyaW5nICgpIHtcbiAgdmFyIGxpbWl0ID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0XG4gIHZhciBvYmogPSB7fVxuICB2YXIgcHJlcCA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlXG5cbiAgZnVuY3Rpb24gcHJlcGFyZU9iamVjdFN0YWNrVHJhY2UgKG9iaiwgc3RhY2spIHtcbiAgICByZXR1cm4gc3RhY2tcbiAgfVxuXG4gIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJlcGFyZU9iamVjdFN0YWNrVHJhY2VcbiAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gMlxuXG4gIC8vIGNhcHR1cmUgdGhlIHN0YWNrXG4gIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKG9iailcblxuICAvLyBzbGljZSB0aGUgc3RhY2tcbiAgdmFyIHN0YWNrID0gb2JqLnN0YWNrLnNsaWNlKClcblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBcbiAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gbGltaXRcblxuICByZXR1cm4gc3RhY2tbMF0udG9TdHJpbmcgPyB0b1N0cmluZyA6IHJlcXVpcmUoJy4vY2FsbHNpdGUtdG9zdHJpbmcnKVxufSlcblxubGF6eVByb3BlcnR5KG1vZHVsZS5leHBvcnRzLCAnZXZlbnRMaXN0ZW5lckNvdW50JywgZnVuY3Rpb24gZXZlbnRMaXN0ZW5lckNvdW50ICgpIHtcbiAgcmV0dXJuIEV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50IHx8IHJlcXVpcmUoJy4vZXZlbnQtbGlzdGVuZXItY291bnQnKVxufSlcblxuLyoqXG4gKiBEZWZpbmUgYSBsYXp5IHByb3BlcnR5LlxuICovXG5cbmZ1bmN0aW9uIGxhenlQcm9wZXJ0eSAob2JqLCBwcm9wLCBnZXR0ZXIpIHtcbiAgZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICB2YXIgdmFsID0gZ2V0dGVyKClcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogdmFsXG4gICAgfSlcblxuICAgIHJldHVybiB2YWxcbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGdldFxuICB9KVxufVxuXG4vKipcbiAqIENhbGwgdG9TdHJpbmcoKSBvbiB0aGUgb2JqXG4gKi9cblxuZnVuY3Rpb24gdG9TdHJpbmcgKG9iaikge1xuICByZXR1cm4gb2JqLnRvU3RyaW5nKClcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9yYXctYm9keS9ub2RlX21vZHVsZXMvZGVwZC9saWIvY29tcGF0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcblxuLy8gU29tZSBlbnZpcm9ubWVudHMgZG9uJ3QgaGF2ZSBnbG9iYWwgQnVmZmVyIChlLmcuIFJlYWN0IE5hdGl2ZSkuXG4vLyBTb2x1dGlvbiB3b3VsZCBiZSBpbnN0YWxsaW5nIG5wbSBtb2R1bGVzIFwiYnVmZmVyXCIgYW5kIFwic3RyZWFtXCIgZXhwbGljaXRseS5cbnZhciBCdWZmZXIgPSByZXF1aXJlKFwiYnVmZmVyXCIpLkJ1ZmZlcjtcblxudmFyIGJvbUhhbmRsaW5nID0gcmVxdWlyZShcIi4vYm9tLWhhbmRsaW5nXCIpLFxuICAgIGljb252ID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8vIEFsbCBjb2RlY3MgYW5kIGFsaWFzZXMgYXJlIGtlcHQgaGVyZSwga2V5ZWQgYnkgZW5jb2RpbmcgbmFtZS9hbGlhcy5cbi8vIFRoZXkgYXJlIGxhenkgbG9hZGVkIGluIGBpY29udi5nZXRDb2RlY2AgZnJvbSBgZW5jb2RpbmdzL2luZGV4LmpzYC5cbmljb252LmVuY29kaW5ncyA9IG51bGw7XG5cbi8vIENoYXJhY3RlcnMgZW1pdHRlZCBpbiBjYXNlIG9mIGVycm9yLlxuaWNvbnYuZGVmYXVsdENoYXJVbmljb2RlID0gJ++/vSc7XG5pY29udi5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUgPSAnPyc7XG5cbi8vIFB1YmxpYyBBUEkuXG5pY29udi5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoc3RyLCBlbmNvZGluZywgb3B0aW9ucykge1xuICAgIHN0ciA9IFwiXCIgKyAoc3RyIHx8IFwiXCIpOyAvLyBFbnN1cmUgc3RyaW5nLlxuXG4gICAgdmFyIGVuY29kZXIgPSBpY29udi5nZXRFbmNvZGVyKGVuY29kaW5nLCBvcHRpb25zKTtcblxuICAgIHZhciByZXMgPSBlbmNvZGVyLndyaXRlKHN0cik7XG4gICAgdmFyIHRyYWlsID0gZW5jb2Rlci5lbmQoKTtcbiAgICBcbiAgICByZXR1cm4gKHRyYWlsICYmIHRyYWlsLmxlbmd0aCA+IDApID8gQnVmZmVyLmNvbmNhdChbcmVzLCB0cmFpbF0pIDogcmVzO1xufVxuXG5pY29udi5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoYnVmLCBlbmNvZGluZywgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgYnVmID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoIWljb252LnNraXBEZWNvZGVXYXJuaW5nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJY29udi1saXRlIHdhcm5pbmc6IGRlY29kZSgpLWluZyBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2h0dWNoa2luL2ljb252LWxpdGUvd2lraS9Vc2UtQnVmZmVycy13aGVuLWRlY29kaW5nJyk7XG4gICAgICAgICAgICBpY29udi5za2lwRGVjb2RlV2FybmluZyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBidWYgPSBuZXcgQnVmZmVyKFwiXCIgKyAoYnVmIHx8IFwiXCIpLCBcImJpbmFyeVwiKTsgLy8gRW5zdXJlIGJ1ZmZlci5cbiAgICB9XG5cbiAgICB2YXIgZGVjb2RlciA9IGljb252LmdldERlY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpO1xuXG4gICAgdmFyIHJlcyA9IGRlY29kZXIud3JpdGUoYnVmKTtcbiAgICB2YXIgdHJhaWwgPSBkZWNvZGVyLmVuZCgpO1xuXG4gICAgcmV0dXJuIHRyYWlsID8gKHJlcyArIHRyYWlsKSA6IHJlcztcbn1cblxuaWNvbnYuZW5jb2RpbmdFeGlzdHMgPSBmdW5jdGlvbiBlbmNvZGluZ0V4aXN0cyhlbmMpIHtcbiAgICB0cnkge1xuICAgICAgICBpY29udi5nZXRDb2RlYyhlbmMpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbi8vIExlZ2FjeSBhbGlhc2VzIHRvIGNvbnZlcnQgZnVuY3Rpb25zXG5pY29udi50b0VuY29kaW5nID0gaWNvbnYuZW5jb2RlO1xuaWNvbnYuZnJvbUVuY29kaW5nID0gaWNvbnYuZGVjb2RlO1xuXG4vLyBTZWFyY2ggZm9yIGEgY29kZWMgaW4gaWNvbnYuZW5jb2RpbmdzLiBDYWNoZSBjb2RlYyBkYXRhIGluIGljb252Ll9jb2RlY0RhdGFDYWNoZS5cbmljb252Ll9jb2RlY0RhdGFDYWNoZSA9IHt9O1xuaWNvbnYuZ2V0Q29kZWMgPSBmdW5jdGlvbiBnZXRDb2RlYyhlbmNvZGluZykge1xuICAgIGlmICghaWNvbnYuZW5jb2RpbmdzKVxuICAgICAgICBpY29udi5lbmNvZGluZ3MgPSByZXF1aXJlKFwiLi4vZW5jb2RpbmdzXCIpOyAvLyBMYXp5IGxvYWQgYWxsIGVuY29kaW5nIGRlZmluaXRpb25zLlxuICAgIFxuICAgIC8vIENhbm9uaWNhbGl6ZSBlbmNvZGluZyBuYW1lOiBzdHJpcCBhbGwgbm9uLWFscGhhbnVtZXJpYyBjaGFycyBhbmQgYXBwZW5kZWQgeWVhci5cbiAgICB2YXIgZW5jID0gKCcnK2VuY29kaW5nKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teMC05YS16XXw6XFxkezR9JC9nLCBcIlwiKTtcblxuICAgIC8vIFRyYXZlcnNlIGljb252LmVuY29kaW5ncyB0byBmaW5kIGFjdHVhbCBjb2RlYy5cbiAgICB2YXIgY29kZWNPcHRpb25zID0ge307XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGNvZGVjID0gaWNvbnYuX2NvZGVjRGF0YUNhY2hlW2VuY107XG4gICAgICAgIGlmIChjb2RlYylcbiAgICAgICAgICAgIHJldHVybiBjb2RlYztcblxuICAgICAgICB2YXIgY29kZWNEZWYgPSBpY29udi5lbmNvZGluZ3NbZW5jXTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGVvZiBjb2RlY0RlZikge1xuICAgICAgICAgICAgY2FzZSBcInN0cmluZ1wiOiAvLyBEaXJlY3QgYWxpYXMgdG8gb3RoZXIgZW5jb2RpbmcuXG4gICAgICAgICAgICAgICAgZW5jID0gY29kZWNEZWY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgXCJvYmplY3RcIjogLy8gQWxpYXMgd2l0aCBvcHRpb25zLiBDYW4gYmUgbGF5ZXJlZC5cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gY29kZWNEZWYpXG4gICAgICAgICAgICAgICAgICAgIGNvZGVjT3B0aW9uc1trZXldID0gY29kZWNEZWZba2V5XTtcblxuICAgICAgICAgICAgICAgIGlmICghY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZSA9IGVuYztcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBlbmMgPSBjb2RlY0RlZi50eXBlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjogLy8gQ29kZWMgaXRzZWxmLlxuICAgICAgICAgICAgICAgIGlmICghY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZSA9IGVuYztcblxuICAgICAgICAgICAgICAgIC8vIFRoZSBjb2RlYyBmdW5jdGlvbiBtdXN0IGxvYWQgYWxsIHRhYmxlcyBhbmQgcmV0dXJuIG9iamVjdCB3aXRoIC5lbmNvZGVyIGFuZCAuZGVjb2RlciBtZXRob2RzLlxuICAgICAgICAgICAgICAgIC8vIEl0J2xsIGJlIGNhbGxlZCBvbmx5IG9uY2UgKGZvciBlYWNoIGRpZmZlcmVudCBvcHRpb25zIG9iamVjdCkuXG4gICAgICAgICAgICAgICAgY29kZWMgPSBuZXcgY29kZWNEZWYoY29kZWNPcHRpb25zLCBpY29udik7XG5cbiAgICAgICAgICAgICAgICBpY29udi5fY29kZWNEYXRhQ2FjaGVbY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZV0gPSBjb2RlYzsgLy8gU2F2ZSBpdCB0byBiZSByZXVzZWQgbGF0ZXIuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvZGVjO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVuY29kaW5nIG5vdCByZWNvZ25pemVkOiAnXCIgKyBlbmNvZGluZyArIFwiJyAoc2VhcmNoZWQgYXM6ICdcIitlbmMrXCInKVwiKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuaWNvbnYuZ2V0RW5jb2RlciA9IGZ1bmN0aW9uIGdldEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICB2YXIgY29kZWMgPSBpY29udi5nZXRDb2RlYyhlbmNvZGluZyksXG4gICAgICAgIGVuY29kZXIgPSBuZXcgY29kZWMuZW5jb2RlcihvcHRpb25zLCBjb2RlYyk7XG5cbiAgICBpZiAoY29kZWMuYm9tQXdhcmUgJiYgb3B0aW9ucyAmJiBvcHRpb25zLmFkZEJPTSlcbiAgICAgICAgZW5jb2RlciA9IG5ldyBib21IYW5kbGluZy5QcmVwZW5kQk9NKGVuY29kZXIsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGVuY29kZXI7XG59XG5cbmljb252LmdldERlY29kZXIgPSBmdW5jdGlvbiBnZXREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgdmFyIGNvZGVjID0gaWNvbnYuZ2V0Q29kZWMoZW5jb2RpbmcpLFxuICAgICAgICBkZWNvZGVyID0gbmV3IGNvZGVjLmRlY29kZXIob3B0aW9ucywgY29kZWMpO1xuXG4gICAgaWYgKGNvZGVjLmJvbUF3YXJlICYmICEob3B0aW9ucyAmJiBvcHRpb25zLnN0cmlwQk9NID09PSBmYWxzZSkpXG4gICAgICAgIGRlY29kZXIgPSBuZXcgYm9tSGFuZGxpbmcuU3RyaXBCT00oZGVjb2Rlciwgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gZGVjb2Rlcjtcbn1cblxuXG4vLyBMb2FkIGV4dGVuc2lvbnMgaW4gTm9kZS4gQWxsIG9mIHRoZW0gYXJlIG9taXR0ZWQgaW4gQnJvd3NlcmlmeSBidWlsZCB2aWEgJ2Jyb3dzZXInIGZpZWxkIGluIHBhY2thZ2UuanNvbi5cbnZhciBub2RlVmVyID0gdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MudmVyc2lvbnMgJiYgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlO1xuaWYgKG5vZGVWZXIpIHtcblxuICAgIC8vIExvYWQgc3RyZWFtaW5nIHN1cHBvcnQgaW4gTm9kZSB2MC4xMCtcbiAgICB2YXIgbm9kZVZlckFyciA9IG5vZGVWZXIuc3BsaXQoXCIuXCIpLm1hcChOdW1iZXIpO1xuICAgIGlmIChub2RlVmVyQXJyWzBdID4gMCB8fCBub2RlVmVyQXJyWzFdID49IDEwKSB7XG4gICAgICAgIHJlcXVpcmUoXCIuL3N0cmVhbXNcIikoaWNvbnYpO1xuICAgIH1cblxuICAgIC8vIExvYWQgTm9kZSBwcmltaXRpdmUgZXh0ZW5zaW9ucy5cbiAgICByZXF1aXJlKFwiLi9leHRlbmQtbm9kZVwiKShpY29udik7XG59XG5cbmlmIChcIsSAXCIgIT0gXCJcXHUwMTAwXCIpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiaWNvbnYtbGl0ZSB3YXJuaW5nOiBqYXZhc2NyaXB0IGZpbGVzIHVzZSBlbmNvZGluZyBkaWZmZXJlbnQgZnJvbSB1dGYtOC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2h0dWNoa2luL2ljb252LWxpdGUvd2lraS9KYXZhc2NyaXB0LXNvdXJjZS1maWxlLWVuY29kaW5ncyBmb3IgbW9yZSBpbmZvLlwiKTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2xpYi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic3RyaW5nX2RlY29kZXJcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJzdHJpbmdfZGVjb2RlclwiXG4vLyBtb2R1bGUgaWQgPSA3OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IFtbXCJhMTQwXCIsXCLuk4ZcIiw2Ml0sW1wiYTE4MFwiLFwi7pSFXCIsMzJdLFtcImEyNDBcIixcIu6UplwiLDYyXSxbXCJhMjgwXCIsXCLulaVcIiwzMl0sW1wiYTJhYlwiLFwi7p2mXCIsNV0sW1wiYTJlM1wiLFwi4oKs7p2tXCJdLFtcImEyZWZcIixcIu6dru6dr1wiXSxbXCJhMmZkXCIsXCLunbDunbFcIl0sW1wiYTM0MFwiLFwi7paGXCIsNjJdLFtcImEzODBcIixcIu6XhVwiLDMxLFwi44CAXCJdLFtcImE0NDBcIixcIu6XplwiLDYyXSxbXCJhNDgwXCIsXCLumKVcIiwzMl0sW1wiYTRmNFwiLFwi7p2yXCIsMTBdLFtcImE1NDBcIixcIu6ZhlwiLDYyXSxbXCJhNTgwXCIsXCLumoVcIiwzMl0sW1wiYTVmN1wiLFwi7p29XCIsN10sW1wiYTY0MFwiLFwi7pqmXCIsNjJdLFtcImE2ODBcIixcIu6bpVwiLDMyXSxbXCJhNmI5XCIsXCLunoVcIiw3XSxbXCJhNmQ5XCIsXCLuno1cIiw2XSxbXCJhNmVjXCIsXCLunpTunpVcIl0sW1wiYTZmM1wiLFwi7p6WXCJdLFtcImE2ZjZcIixcIu6el1wiLDhdLFtcImE3NDBcIixcIu6chlwiLDYyXSxbXCJhNzgwXCIsXCLunYVcIiwzMl0sW1wiYTdjMlwiLFwi7p6gXCIsMTRdLFtcImE3ZjJcIixcIu6er1wiLDEyXSxbXCJhODk2XCIsXCLunrxcIiwxMF0sW1wiYThiY1wiLFwi7p+HXCJdLFtcImE4YmZcIixcIse5XCJdLFtcImE4YzFcIixcIu6fie6fiu6fi+6fjFwiXSxbXCJhOGVhXCIsXCLun41cIiwyMF0sW1wiYTk1OFwiLFwi7p+iXCJdLFtcImE5NWJcIixcIu6fo1wiXSxbXCJhOTVkXCIsXCLun6Tun6Xun6ZcIl0sW1wiYTk4OVwiLFwi44C+4r+wXCIsMTFdLFtcImE5OTdcIixcIu6ftFwiLDEyXSxbXCJhOWYwXCIsXCLuoIFcIiwxNF0sW1wiYWFhMVwiLFwi7oCAXCIsOTNdLFtcImFiYTFcIixcIu6BnlwiLDkzXSxbXCJhY2ExXCIsXCLugrxcIiw5M10sW1wiYWRhMVwiLFwi7oSaXCIsOTNdLFtcImFlYTFcIixcIu6FuFwiLDkzXSxbXCJhZmExXCIsXCLuh5ZcIiw5M10sW1wiZDdmYVwiLFwi7qCQXCIsNF0sW1wiZjhhMVwiLFwi7oi0XCIsOTNdLFtcImY5YTFcIixcIu6KklwiLDkzXSxbXCJmYWExXCIsXCLui7BcIiw5M10sW1wiZmJhMVwiLFwi7o2OXCIsOTNdLFtcImZjYTFcIixcIu6OrFwiLDkzXSxbXCJmZGExXCIsXCLukIpcIiw5M10sW1wiZmU1MFwiLFwi4rqB7qCW7qCX7qCY4rqE45Gz45GH4rqI4rqL7qCe45ae45ia45iO4rqM4rqX46Wu46SY7qCm46eP46ef46mz46eQ7qCr7qCs462O47Gu47Og4rqn7qCx7qCy4rqq5IGW5IWf4rqu5Iy34rqz4rq24rq37qC75I6x5I6s4rq75I+d5JOW5Jmh5JmM7qGDXCJdLFtcImZlODBcIixcIuSco+ScqeSdvOSejeK7iuSlh+SluuSlveSmguSmg+SmheSmhuSmn+Smm+Smt+Smtu6hlO6hleSyo+Syn+SyoOSyoeSxt+SyouS0k1wiLDYsXCLktq7uoaTukahcIiw5M11dXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9nYmstYWRkZWQuanNvblxuLy8gbW9kdWxlIGlkID0gODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBbW1wiMFwiLFwiXFx1MDAwMFwiLDEyN10sW1wiYTE0MFwiLFwi44CA77yM44CB44CC77yO4oCn77yb77ya77yf77yB77iw4oCm4oCl77mQ77mR77mSwrfvuZTvuZXvuZbvuZfvvZzigJPvuLHigJTvuLPilbTvuLTvuY/vvIjvvInvuLXvuLbvvZvvvZ3vuLfvuLjjgJTjgJXvuLnvuLrjgJDjgJHvuLvvuLzjgIrjgIvvuL3vuL7jgIjjgInvuL/vuYDjgIzjgI3vuYHvuYLjgI7jgI/vuYPvuYTvuZnvuZpcIl0sW1wiYTFhMVwiLFwi77mb77mc77md77me4oCY4oCZ4oCc4oCd44Cd44Ce4oC14oCy77yD77yG77yK4oC7wqfjgIPil4vil4/ilrPilrLil47imIbimIXil4fil4bilqHilqDilr3ilrzjiqPihIXCr++/o++8v8uN77mJ77mK77mN77mO77mL77mM77mf77mg77mh77yL77yNw5fDt8Kx4oia77yc77ye77yd4omm4omn4omg4oie4omS4omh77miXCIsNCxcIu+9nuKIqeKIquKKpeKIoOKIn+KKv+OPkuOPkeKIq+KIruKIteKItOKZgOKZguKKleKKmeKGkeKGk+KGkOKGkuKGluKGl+KGmeKGmOKIpeKIo++8j1wiXSxbXCJhMjQwXCIsXCLvvLziiJXvuajvvITvv6XjgJLvv6Dvv6HvvIXvvKDihIPihInvuanvuarvuavjj5Xjjpzjjp3jjp7jj47jjqHjjo7jjo/jj4TCsOWFmeWFm+WFnuWFneWFoeWFo+WXp+eTqeezjuKWgVwiLDcsXCLilo/ilo7ilo3ilozilovilorilonilLzilLTilKzilKTilJzilpTilIDilILilpXilIzilJDilJTilJjila1cIl0sW1wiYTJhMVwiLFwi4pWu4pWw4pWv4pWQ4pWe4pWq4pWh4pei4pej4pel4pek4pWx4pWy4pWz77yQXCIsOSxcIuKFoFwiLDksXCLjgKFcIiw4LFwi5Y2B5Y2E5Y2F77yhXCIsMjUsXCLvvYFcIiwyMV0sW1wiYTM0MFwiLFwi772X772Y772Z772azpFcIiwxNixcIs6jXCIsNixcIs6xXCIsMTYsXCLPg1wiLDYsXCLjhIVcIiwxMF0sW1wiYTNhMVwiLFwi44SQXCIsMjUsXCLLmcuJy4rLh8uLXCJdLFtcImEzZTFcIixcIuKCrFwiXSxbXCJhNDQwXCIsXCLkuIDkuZnkuIHkuIPkuYPkuZ3kuobkuozkurrlhL/lhaXlhavlh6DliIDliIHlipvljJXljYHljZzlj4jkuInkuIvkuIjkuIrkuKvkuLjlh6HkuYXkuYjkuZ/kuZ7kuo7kuqHlhYDliIPli7rljYPlj4nlj6PlnJ/lo6vlpJXlpKflpbPlrZDlrZHlrZPlr7jlsI/lsKLlsLjlsbHlt53lt6Xlt7Hlt7Llt7Plt77lubLlu77lvIvlvJPmiY1cIl0sW1wiYTRhMVwiLFwi5LiR5LiQ5LiN5Lit5Liw5Li55LmL5bC55LqI5LqR5LqV5LqS5LqU5Lqi5LuB5LuA5LuD5LuG5LuH5LuN5LuK5LuL5LuE5YWD5YWB5YWn5YWt5YWu5YWs5YaX5Ye25YiG5YiH5YiI5Yu75Yu+5Yu/5YyW5Yy55Y2I5Y2H5Y2F5Y2e5Y6E5Y+L5Y+K5Y+N5aOs5aSp5aSr5aSq5aSt5a2U5bCR5bCk5bC65bGv5be05bm75bu/5byU5byV5b+D5oiI5oi25omL5omO5pSv5paH5paX5pak5pa55pel5puw5pyI5pyo5qyg5q2i5q255q+L5q+U5q+b5rCP5rC054Gr54iq54i254i754mH54mZ54mb54qs546L5LiZXCJdLFtcImE1NDBcIixcIuS4luS4leS4lOS4mOS4u+S5jeS5j+S5juS7peS7mOS7lOS7leS7luS7l+S7o+S7pOS7meS7nuWFheWFhOWGieWGiuWGrOWHueWHuuWHuOWIiuWKoOWKn+WMheWMhuWMl+WMneS7n+WNiuWNieWNoeWNoOWNr+WNruWOu+WPr+WPpOWPs+WPrOWPruWPqeWPqOWPvOWPuOWPteWPq+WPpuWPquWPsuWPseWPsOWPpeWPreWPu+Wbm+WbmuWkllwiXSxbXCJhNWExXCIsXCLlpK7lpLHlpbTlpbblrZXlroPlsLzlt6jlt6flt6bluILluIPlubPlubzlvIHlvJjlvJflv4XmiIrmiZPmiZTmiZLmiZHmlqXml6bmnK7mnKzmnKrmnKvmnK3mraPmr43msJHmsJDmsLjmsYHmsYDmsL7niq/njoTnjonnk5znk6bnlJjnlJ/nlKjnlKnnlLDnlLHnlLLnlLPnlovnmb3nmq7nmr/nm67nn5vnn6Lnn7PnpLrnpr7nqbTnq4vkuJ7kuJ/kuZLkuZPkuankupnkuqTkuqbkuqXku7/kvInkvJnkvIrkvJXkvI3kvJDkvJHkvI/ku7Lku7bku7vku7Dku7Pku73kvIHkvIvlhYnlhYflhYblhYjlhahcIl0sW1wiYTY0MFwiLFwi5YWx5YaN5Yaw5YiX5YiR5YiS5YiO5YiW5Yqj5YyI5Yyh5Yyg5Y2w5Y2x5ZCJ5ZCP5ZCM5ZCK5ZCQ5ZCB5ZCL5ZCE5ZCR5ZCN5ZCI5ZCD5ZCO5ZCG5ZCS5Zug5Zue5Zud5Zyz5Zyw5Zyo5Zyt5Zys5Zyv5Zyp5aSZ5aSa5aS35aS45aaE5aW45aaD5aW95aW55aaC5aaB5a2X5a2Y5a6H5a6I5a6F5a6J5a+65bCW5bG55bee5biG5bm25bm0XCJdLFtcImE2YTFcIixcIuW8j+W8m+W/meW/luaIjuaIjOaIjeaIkOaJo+aJm+aJmOaUtuaXqeaXqOaXrOaXreabsuabs+acieacveactOacseacteasoeatpOatu+awluaxneaxl+axmeaxn+axoOaxkOaxleaxoeaxm+axjeaxjueBsOeJn+eJneeZvuerueexs+ezuOe8tue+iue+veiAgeiAg+iAjOiAkuiAs+iBv+iCieiCi+iCjOiHo+iHquiHs+iHvOiIjOiIm+iIn+iJruiJsuiJvuiZq+ihgOihjOiho+ilv+mYoeS4suS6qOS9jeS9j+S9h+S9l+S9nuS8tOS9m+S9leS8sOS9kOS9keS8veS8uuS8uOS9g+S9lOS8vOS9huS9o1wiXSxbXCJhNzQwXCIsXCLkvZzkvaDkvK/kvY7kvLbkvZnkvZ3kvYjkvZrlhYzlhYvlhY3lhbXlhrblhrfliKXliKTliKnliKrliKjliqvliqnliqrliqzljKPljbPljbXlkJ3lkK3lkJ7lkL7lkKblkY7lkKflkYblkYPlkLPlkYjlkYLlkJvlkKnlkYrlkLnlkLvlkLjlkK7lkLXlkLblkKDlkLzlkYDlkLHlkKvlkJ/lkKzlm6rlm7Dlm6Tlm6vlnYrlnZHlnYDlnY1cIl0sW1wiYTdhMVwiLFwi5Z2H5Z2O5Zy+5Z2Q5Z2P5Zy75aOv5aS+5aad5aaS5aao5aae5aaj5aaZ5aaW5aaN5aak5aaT5aaK5aal5a2d5a2c5a2a5a2b5a6M5a6L5a6P5bCs5bGA5bGB5bC/5bC+5bKQ5bKR5bKU5bKM5ber5biM5bqP5bqH5bqK5bu35byE5byf5b2k5b2i5b235b255b+Y5b+M5b+X5b+N5b+x5b+r5b+45b+q5oiS5oiR5oqE5oqX5oqW5oqA5om25oqJ5omt5oqK5om85om+5om55omz5oqS5omv5oqY5omu5oqV5oqT5oqR5oqG5pS55pS75pS45pex5pu05p2f5p2O5p2P5p2Q5p2R5p2c5p2W5p2e5p2J5p2G5p2gXCJdLFtcImE4NDBcIixcIuadk+adl+atpeavj+axguaxnuaymeaygeayiOayieayheaym+axquaxuuaykOaxsOayjOaxqOayluaykuaxveayg+axsuaxvuaxtOayhuaxtuayjeaylOaymOaygueBtueBvOeBveeBuOeJoueJoeeJoOeLhOeLgueOlueUrOeUq+eUt+eUuOeaguebr+efo+engeengOemv+eptuezu+e9leiCluiCk+iCneiCmOiCm+iCmuiCsuiJr+iKklwiXSxbXCJhOGExXCIsXCLoiovoio3opovop5LoqIDosLfosYbosZXosp3otaTotbDotrPouqvou4rovpvovrDov4Lov4bov4Xov4Tlt6HpgpHpgqLpgqrpgqbpgqPphYnph4bph4zpmLLpmK7pmLHpmKrpmKzkuKbkuZbkubPkuovkupvkup7kuqvkuqzkva/kvp3kvo3kvbPkvb/kvazkvpvkvovkvobkvoPkvbDkvbXkvojkvankvbvkvpbkvb7kvo/kvpHkvbrlhZTlhZLlhZXlhanlhbflhbblhbjlhr3lh73liLvliLjliLfliLrliLDliK7liLbliYHlir7lirvljZLljZTljZPljZHljabljbfljbjljbnlj5blj5Tlj5flkbPlkbVcIl0sW1wiYTk0MFwiLFwi5ZKW5ZG45ZKV5ZKA5ZG75ZG35ZKE5ZKS5ZKG5ZG85ZKQ5ZGx5ZG25ZKM5ZKa5ZGi5ZGo5ZKL5ZG95ZKO5Zu65Z6D5Z235Z2q5Z2p5Z2h5Z2m5Z2k5Z285aSc5aWJ5aWH5aWI5aWE5aWU5aa+5aa75aeU5aa55aau5aeR5aeG5aeQ5aeN5aeL5aeT5aeK5aav5aaz5aeS5aeF5a2f5a2k5a2j5a6X5a6a5a6Y5a6c5a6Z5a6b5bCa5bGI5bGFXCJdLFtcImE5YTFcIixcIuWxhuWyt+WyoeWyuOWyqeWyq+WyseWys+W4mOW4muW4luW4leW4m+W4keW5uOW6muW6l+W6nOW6leW6luW7tuW8puW8p+W8qeW+gOW+geW9v+W9vOW/neW/oOW/veW/teW/v+aAj+aAlOaAr+aAteaAluaAquaAleaAoeaAp+aAqeaAq+aAm+aIluaIleaIv+aIvuaJgOaJv+aLieaLjOaLhOaKv+aLguaKueaLkuaLm+aKq+aLk+aLlOaLi+aLiOaKqOaKveaKvOaLkOaLmeaLh+aLjeaKteaLmuaKseaLmOaLluaLl+aLhuaKrOaLjuaUvuaWp+aWvOaXuuaYlOaYk+aYjOaYhuaYguaYjuaYgOaYj+aYleaYilwiXSxbXCJhYTQwXCIsXCLmmIfmnI3mnIvmna3mnovmnpXmnbHmnpzmnbPmnbfmnofmnp3mnpfmna/mnbDmnb/mnonmnb7mnpDmnbXmnprmnpPmnbzmnarmnbLmrKPmrabmrafmrb/msJPmsJvms6Pms6jms7PmsrHms4zms6XmsrPmsr3msr7msrzms6Lmsqvms5Xms5Pmsrjms4Tmsrnms4Hmsq7ms5fms4Xms7Hmsr/msrvms6Hms5vms4rmsqzms6/ms5zms5bms6BcIl0sW1wiYWFhMVwiLFwi54KV54KO54KS54KK54KZ54is54it54i454mI54mn54mp54uA54uO54uZ54uX54uQ546p546o546f546r546l55S955ad55aZ55aa55qE55uC55uy55u055+l55+956S+56WA56WB56eJ56eI56m656m556u657O+572U576M576L6ICF6IK66IKl6IKi6IKx6IKh6IKr6IKp6IK06IKq6IKv6Iel6Ie+6IiN6Iqz6Iqd6IqZ6Iqt6Iq96Iqf6Iq56Iqx6Iqs6Iql6Iqv6Iq46Iqj6Iqw6Iq+6Iq36JmO6Jmx5Yid6KGo6LuL6L+O6L+U6L+R6YK16YK46YKx6YK26YeH6YeR6ZW36ZaA6Zic6ZmA6Zi/6Zi76ZmEXCJdLFtcImFiNDBcIixcIumZgumauembqOmdkumdnuS6n+S6reS6ruS/oeS+teS+r+S+v+S/oOS/keS/j+S/neS/g+S+tuS/mOS/n+S/iuS/l+S+ruS/kOS/hOS/guS/muS/juS/nuS+t+WFl+WGkuWGkeWGoOWJjuWJg+WJiuWJjeWJjOWJi+WJh+WLh+WLieWLg+WLgeWMjeWNl+WNu+WOmuWPm+WSrOWTgOWSqOWTjuWTieWSuOWSpuWSs+WTh+WTguWSveWSquWTgVwiXSxbXCJhYmExXCIsXCLlk4Tlk4jlkq/lkqvlkrHlkrvlkqnlkqflkr/lm7/lnoLlnovlnqDlnqPlnqLln47lnq7lnpPlpZXlpZHlpY/lpY7lpZDlp5zlp5jlp7/lp6Plp6jlqIPlp6Xlp6rlp5rlp6blqIHlp7vlranlrqPlrqblrqTlrqLlrqXlsIHlsY7lsY/lsY3lsYvls5nls5Llt7fluJ3luKXluJ/lub3luqDluqblu7rlvIjlvK3lvaXlvojlvoXlvorlvovlvoflvozlvonmgJLmgJ3mgKDmgKXmgI7mgKjmgY3mgbDmgajmgaLmgYbmgYPmgazmgavmgarmgaTmiYHmi5zmjJbmjInmi7zmi63mjIHmi67mi73mjIfmi7Hmi7dcIl0sW1wiYWM0MFwiLFwi5ouv5ous5ou+5ou05oyR5oyC5pS/5pWF5par5pa95pei5pil5pit5pig5pin5piv5pif5pio5pix5pik5pu35p+/5p+T5p+x5p+U5p+Q5p+s5p625p6v5p+15p+p5p+v5p+E5p+R5p605p+a5p+l5p645p+P5p+e5p+z5p6w5p+Z5p+i5p+d5p+S5q2q5q6D5q6G5q615q+S5q+X5rCf5rOJ5rSL5rSy5rSq5rWB5rSl5rSM5rSx5rSe5rSXXCJdLFtcImFjYTFcIixcIua0u+a0vea0vua0tua0m+aztea0uea0p+a0uOa0qea0rua0tea0jua0q+eCq+eCuueCs+eCrOeCr+eCreeCuOeCrueCpOeIsOeJsueJr+eJtOeLqeeLoOeLoeeOt+ePiueOu+eOsuePjeePgOeOs+eUmueUreeVj+eVjOeVjueVi+eWq+eWpOeWpeeWoueWo+eZuOeahueah+eaiOebiOebhuebg+ebheecgeebueebuOecieeci+ebvuebvOech+efnOeggueglOegjOegjeelhuelieeliOelh+emueemuuenkeenkueni+epv+eqgeerv+erveexvee0gue0hee0gOe0iee0h+e0hOe0hue8uOe+jue+v+iAhFwiXSxbXCJhZDQwXCIsXCLogJDogI3ogJHogLbog5bog6Xog5rog4Pog4Tog4zog6Hog5vog47og57og6Tog53oh7ToiKLoi6fojIPojIXoi6Poi5voi6bojIToi6XojILojInoi5Loi5foi7HojIHoi5zoi5Toi5Hoi57oi5Poi5/oi6/ojIbomZDombnombvombrooY3ooavopoHop5ToqIjoqILoqIPosp7osqDotbTotbPotrTou43ou4zov7Dov6bov6Lov6rov6VcIl0sW1wiYWRhMVwiLFwi6L+t6L+r6L+k6L+o6YOK6YOO6YOB6YOD6YWL6YWK6YeN6ZaC6ZmQ6ZmL6ZmM6ZmN6Z2i6Z2p6Z+L6Z+t6Z+z6aCB6aKo6aOb6aOf6aaW6aaZ5LmY5Lqz5YCM5YCN5YCj5L+v5YCm5YCl5L+45YCp5YCW5YCG5YC85YCf5YCa5YCS5YCR5L+65YCA5YCU5YCo5L+x5YCh5YCL5YCZ5YCY5L+z5L+u5YCt5YCq5L++5YCr5YCJ5YW85Yak5Yal5Yai5YeN5YeM5YeG5YeL5YmW5Ymc5YmU5Ymb5Ymd5Yyq5Y2/5Y6f5Y6d5Y+f5ZOo5ZSQ5ZSB5ZS35ZO85ZOl5ZOy5ZSG5ZO65ZSU5ZOp5ZOt5ZOh5ZSJ5ZOu5ZOqXCJdLFtcImFlNDBcIixcIuWTpuWUp+WUh+WTveWUj+Wcg+WchOWfguWflOWfi+Wfg+WgieWkj+Wll+WlmOWlmuWokeWomOWonOWon+Wom+Wok+WnrOWooOWoo+WoqeWopeWojOWoieWtq+WxmOWusOWus+WutuWutOWuruWuteWuueWuuOWwhOWxkeWxleWxkOWzreWzveWzu+WzquWzqOWzsOWztuW0geWztOW3ruW4reW4q+W6q+W6reW6p+W8seW+kuW+keW+kOaBmVwiXSxbXCJhZWExXCIsXCLmgaPmgaXmgZDmgZXmga3mganmga/mgoTmgp/mgprmgo3mgpTmgozmgoXmgpbmiYfmi7PmjIjmi7/mjY7mjL7mjK/mjZXmjYLmjYbmjY/mjYnmjLrmjZDmjL3mjKrmjKvmjKjmjY3mjYzmlYjmlYnmlpnml4Hml4XmmYLmmYnmmY/mmYPmmZLmmYzmmYXmmYHmm7jmnJTmnJXmnJfmoKHmoLjmoYjmoYbmoZPmoLnmoYLmoZTmoKnmorPmoJfmoYzmoZHmoL3mn7TmoZDmoYDmoLzmoYPmoKrmoYXmoJPmoJjmoYHmrormronmrrfmsKPmsKfmsKjmsKbmsKTms7DmtarmtpXmtojmtofmtabmtbjmtbfmtZnmtpNcIl0sW1wiYWY0MFwiLFwi5rWs5raJ5rWu5rWa5rW05rWp5raM5raK5rW55raF5rWl5raU54OK54OY54Ok54OZ54OI54OP54i554m554u854u554u954u454u3546G54+t55CJ54+u54+g54+q54+e55WU55Wd55Wc55Wa55WZ55a+55eF55eH55ay55az55a955a855a555eC55a455qL55qw55uK55uN55uO55yp55yf55yg55yo55+p56Cw56Cn56C456Cd56C056C3XCJdLFtcImFmYTFcIixcIuegpeegreegoOegn+egsuelleelkOeloOeln+elluelnuelneell+elmuenpOeno+enp+enn+enpuenqeenmOeqhOeqiOermeeshueskeeyiee0oee0l+e0i+e0iue0oOe0oue0lOe0kOe0lee0mue0nOe0jee0mee0m+e8uue9n+e+lOe/hee/geiAhuiAmOiAleiAmeiAl+iAveiAv+iDseiEguiDsOiEheiDreiDtOiEhuiDuOiDs+iEiOiDveiEiuiDvOiDr+iHreiHrOiIgOiIkOiIquiIq+iIqOiIrOiKu+iMq+iNkuiNlOiNiuiMuOiNkOiNieiMteiMtOiNj+iMsuiMueiMtuiMl+iNgOiMseiMqOiNg1wiXSxbXCJiMDQwXCIsXCLomZTomoromqrompPomqTomqnomozomqPompzoobDoobfoooHoooLoob3oobnoqJjoqJDoqI7oqIzoqJXoqIroqJfoqJPoqJboqI/oqJHosYjosbrosbnosqHosqLotbfouqzou5Lou5Tou4/ovrHpgIHpgIbov7fpgIDov7rov7TpgIPov73pgIXov7jpgpXpg6Hpg53pg6LphZLphY3phYzph5jph53ph5fph5zph5nploPpmaLpmaPpmaFcIl0sW1wiYjBhMVwiLFwi6Zmb6Zmd6Zmk6ZmY6Zme6Zq76aOi6aas6aqo6auY6ayl6ayy6ay85Lm+5YG65YG95YGc5YGH5YGD5YGM5YGa5YGJ5YGl5YG25YGO5YGV5YG15YG05YG35YGP5YCP5YGv5YGt5YWc5YaV5Yew5Ymq5Ymv5YuS5YuZ5YuY5YuV5YyQ5YyP5YyZ5Yy/5Y2A5Yy+5Y+D5pu85ZWG5ZWq5ZWm5ZWE5ZWe5ZWh5ZWD5ZWK5ZSx5ZWW5ZWP5ZWV5ZSv5ZWk5ZS45ZSu5ZWc5ZSs5ZWj5ZSz5ZWB5ZWX5ZyI5ZyL5ZyJ5Z+f5aCF5aCK5aCG5Z+g5Z+k5Z+65aCC5aC15Z+35Z+55aSg5aWi5ai25amB5amJ5amm5amq5amAXCJdLFtcImIxNDBcIixcIuWovOWpouWpmuWphuWpiuWtsOWvh+WvheWvhOWvguWuv+WvhuWwieWwiOWwh+WxoOWxnOWxneW0h+W0huW0juW0m+W0luW0ouW0keW0qeW0lOW0meW0pOW0p+W0l+W3ouW4uOW4tuW4s+W4t+W6t+W6uOW6tuW6teW6vuW8teW8t+W9l+W9rOW9qeW9q+W+l+W+meW+nuW+mOW+oeW+oOW+nOaBv+aCo+aCieaCoOaCqOaDi+aCtOaDpuaCvVwiXSxbXCJiMWExXCIsXCLmg4XmgrvmgrXmg5zmgrzmg5jmg5Xmg4bmg5/mgrjmg5rmg4fmiJrmiJvmiYjmjqDmjqfmjbLmjpbmjqLmjqXmjbfmjafmjpjmjqrmjbHmjqnmjonmjoPmjpvmjavmjqjmjoTmjojmjpnmjqHmjqzmjpLmjo/mjoDmjbvmjanmjajmjbrmlZ3mlZbmlZHmlZnmlZfllZ/mlY/mlZjmlZXmlZTmlpzmlpvmlqzml4/ml4vml4zml47mmZ3mmZrmmaTmmajmmabmmZ7mm7nli5fmnJvmooHmoq/moqLmopPmorXmob/mobbmorHmoqfmopfmorDmooPmo4Tmoq3moobmooXmopTmop3moqjmop/moqHmooLmrLLmrrpcIl0sW1wiYjI0MFwiLFwi5q+r5q+s5rCr5raO5ra85rez5reZ5ray5reh5reM5rek5re75re65riF5reH5reL5rav5reR5rau5ree5re55ra45re35re15reF5reS5ria5ra15rea5rer5reY5req5rex5reu5reo5reG5reE5raq5res5ra/5rem54O554SJ54SK54O954Ov54i954m954qB54yc54yb54yW54yT54yZ546H55CF55CK55CD55CG54++55CN55Og55O2XCJdLFtcImIyYTFcIixcIueTt+eUnOeUoueVpeeVpueVoueVsOeWj+eXlOeXleeWteeXiueXjeeajueblOebkuebm+ect+ecvuecvOectuecuOecuuehq+ehg+ehjuelpeelqOelreenu+eqkueqleesoOesqOesm+esrOespuesmeesnuesrueykueyl+eylee1hue1g+e1see0rue0uee0vOe1gOe0sOe0s+e1hOe0r+e1gue0sue0see8vee+nue+mue/jOe/jue/kuiAnOiBiuiBhuiEr+iEluiEo+iEq+iEqeiEsOiEpOiIguiIteiIt+iItuiIueiOjuiOnuiOmOiNuOiOouiOluiOveiOq+iOkuiOiuiOk+iOieiOoOiNt+iNu+iNvFwiXSxbXCJiMzQwXCIsXCLojobojqfomZXlvarom4fom4Domrbom4TomrXom4bom4vomrHomq/om4nooZPoop7ooojooqvoopLoopbooo3ooovoppPopo/oqKroqJ3oqKPoqKXoqLHoqK3oqJ/oqJvoqKLosYnosZrosqnosqzosqvosqjosqrosqfotafotabotr7otrrou5vou5/pgJnpgI3pgJrpgJfpgKPpgJ/pgJ3pgJDpgJXpgJ7pgKDpgI/pgKLpgJbpgJvpgJRcIl0sW1wiYjNhMVwiLFwi6YOo6YOt6YO96YWX6YeO6Ye16Yem6Yej6Yen6Yet6Yep6ZaJ6Zmq6Zm16Zmz6Zm46Zmw6Zm06Zm26Zm36Zms6ZuA6Zuq6Zup56ug56uf6aCC6aCD6a2a6bOl6bm16bm/6bql6bq75YKi5YKN5YKF5YKZ5YKR5YKA5YKW5YKY5YKa5pyA5Yex5Ymy5Ym05Ym15Ymp5Yue5Yud5Yub5Y2a5Y6l5ZW75ZaA5Zan5ZW85ZaK5Zad5ZaY5ZaC5Zac5Zaq5ZaU5ZaH5ZaL5ZaD5Zaz5Zau5Zaf5ZS+5Zay5Zaa5Za75Zas5Zax5ZW+5ZaJ5Zar5ZaZ5ZyN5aCv5aCq5aC05aCk5aCw5aCx5aCh5aCd5aCg5aO55aO65aWgXCJdLFtcImI0NDBcIixcIuWpt+WqmuWpv+WqkuWqm+Wqp+Wts+WtseWvkuWvjOWvk+WvkOWwiuWwi+WwseW1jOW1kOW0tOW1h+W3veW5heW4veW5gOW5g+W5vuW7iuW7geW7guW7hOW8vOW9reW+qeW+quW+qOaDkeaDoeaCsuaCtuaDoOaEnOaEo+aDuuaEleaDsOaDu+aDtOaFqOaDseaEjuaDtuaEieaEgOaEkuaIn+aJieaOo+aOjOaPj+aPgOaPqeaPieaPhuaPjVwiXSxbXCJiNGExXCIsXCLmj5Lmj6Pmj5Dmj6Hmj5bmj63mj67mjbbmj7Tmj6rmj5vmkZLmj5rmj7nmlZ7mlabmlaLmlaPmlpHmlpDmlq/mma7mmbDmmbTmmbbmma/mmpHmmbrmmb7mmbfmm77mm7/mnJ/mnJ3mo7rmo5Xmo6Dmo5jmo5fmpIXmo5/mo7Xmo67mo6fmo7nmo5Lmo7Lmo6Pmo4vmo43mpI3mpJLmpI7mo4nmo5rmpa7mo7vmrL7mrLrmrL3mrpjmrpbmrrzmr6/msK7msK/msKzmuK/muLjmuZTmuKHmuLLmuafmuYrmuKDmuKXmuKPmuJvmuZvmuZjmuKTmuZbmua7muK3muKbmua/muLTmuY3muLrmuKzmuYPmuJ3muL7mu4tcIl0sW1wiYjU0MFwiLFwi5rqJ5riZ5rmO5rmj5rmE5rmy5rmp5rmf54SZ54Sa54Sm54Sw54Sh54S254Wu54Sc54mM54qE54qA54y254yl54y054yp55C655Cq55Cz55Ci55Cl55C155C255C055Cv55Cb55Cm55Co55Sl55Sm55Wr55Wq55ei55eb55ej55eZ55eY55ee55eg55m755m855qW55qT55q055uc552P55+t56Gd56Gs56Gv56iN56iI56iL56iF56iA56qYXCJdLFtcImI1YTFcIixcIueql+eqluerpeero+etieetluethuetkOetkuetlOetjeeti+etj+etkeeyn+eypee1nue1kOe1qOe1lee0q+e1rue1sue1oee1pue1oue1sOe1s+WWhOe/lOe/leiAi+iBkuiCheiFleiFlOiFi+iFkeiFjuiEueiFhuiEvuiFjOiFk+iFtOiIkuiInOiPqeiQg+iPuOiQjeiPoOiPheiQi+iPgeiPr+iPseiPtOiRl+iQiuiPsOiQjOiPjOiPveiPsuiPiuiQuOiQjuiQhOiPnOiQh+iPlOiPn+iZm+ibn+ibmeibreiblOibm+ibpOibkOibnuihl+ijgeijguiiseimg+imluiou+ipoOipleipnuiovOipgVwiXSxbXCJiNjQwXCIsXCLoqZToqZvoqZDoqYboqLToqLroqLboqZbosaHosoLosq/osrzosrPosr3os4Hosrvos4DosrTosrfosrbosr/osrjotorotoXotoHot47ot53ot4vot5rot5Hot4zot5vot4bou7vou7jou7zovpzpgK7pgLXpgLHpgLjpgLLpgLbphILpg7XphInpg77phaPphaXph4/piJTpiJXpiKPpiInpiJ7piI3piJDpiIfpiJHplpTplo/plovplpFcIl0sW1wiYjZhMVwiLFwi6ZaT6ZaS6ZaO6ZqK6ZqO6ZqL6Zm96ZqF6ZqG6ZqN6Zmy6ZqE6ZuB6ZuF6ZuE6ZuG6ZuH6Zuv6Zuy6Z+M6aCF6aCG6aCI6aOn6aOq6aOv6aOp6aOy6aOt6aau6aat6buD6buN6buR5LqC5YKt5YK15YKy5YKz5YOF5YK+5YKs5YK35YK75YKv5YOH5Ym/5Ym35Ym95Yuf5Yum5Yuk5Yui5Yuj5Yyv5Zef5Zeo5ZeT5Zem5ZeO5Zec5ZeH5ZeR5Zej5Zek5Zev5Zea5Zeh5ZeF5ZeG5Zel5ZeJ5ZyS5ZyT5aGe5aGR5aGY5aGX5aGa5aGU5aGr5aGM5aGt5aGK5aGi5aGS5aGL5aWn5auB5auJ5auM5aq+5aq95aq8XCJdLFtcImI3NDBcIixcIuWqs+WrguWqsuW1qeW1r+W5jOW5ueW7ieW7iOW8kuW9meW+rOW+ruaEmuaEj+aFiOaEn+aDs+aEm+aDueaEgeaEiOaFjuaFjOaFhOaFjeaEvuaEtOaEp+aEjeaEhuaEt+aIoeaIouaQk+aQvuaQnuaQquaQreaQveaQrOaQj+aQnOaQlOaQjeaQtuaQluaQl+aQhuaVrOaWn+aWsOaal+aaieaah+aaiOaaluaahOaamOaajeacg+amlOalrVwiXSxbXCJiN2ExXCIsXCLmpZrmpbfmpaDmpZTmpbXmpLDmpoLmpYrmpajmpavmpZ7mpZPmpbnmpobmpZ3mpaPmpZvmrYfmrbLmr4Dmrr/mr5Pmr73muqLmuq/mu5Pmurbmu4LmupDmup3mu4fmu4XmuqXmupjmurzmurrmuqvmu5Hmupbmupzmu4Tmu5TmuqrmuqfmurTnhY7nhZnnhannhaTnhYnnhafnhZznhaznhabnhYznhaXnhZ7nhYbnhajnhZbniLrniZLnjLfnjYXnjL/njL7nka/nkZrnkZXnkZ/nkZ7nkYHnkL/nkZnnkZvnkZznlbbnlbjnmIDnl7DnmIHnl7Lnl7Hnl7rnl7/nl7Tnl7Pnm57nm5/nnZvnnavnnabnnZ7nnaNcIl0sW1wiYjg0MFwiLFwi5525552q552s552c552l552o552i55+u56KO56Kw56KX56KY56KM56KJ56G856KR56KT56G/56W656W/56aB6JCs56a956ic56ia56ig56iU56if56ie56qf56qg562356+A562g562u562n57Kx57Kz57K157aT57W557aR57aB57aP57Wb572u572p572q572y576p576o576k6IGW6IGY6IKG6IKE6IWx6IWw6IW46IWl6IWu6IWz6IWrXCJdLFtcImI4YTFcIixcIuiFueiFuuiFpuiIheiJh+iSguiRt+iQveiQseiRteiRpuiRq+iRieiRrOiRm+iQvOiQteiRoeiRo+iRqeiRreiRhuiZnuiZnOiZn+ibueick+iciOich+icgOibvuibu+icguicg+ichuiciuihmeijn+ijlOijmeijnOijmOijneijoeijiuijleijkuimnOino+ipq+ipsuips+ippuipqeipsOiqh+ipvOipo+iqoOipseiqheipreipouipruiprOipueipu+iovuipqOixouiyiuiyieiziuizh+iziOizhOiysuizg+izguizhei3oei3n+i3qOi3r+i3s+i3uui3qui3pOi3pui6sui8g+i8iei7vui8ilwiXSxbXCJiOTQwXCIsXCLovp/ovrLpgYvpgYrpgZPpgYLpgZTpgLzpgZXpgZDpgYfpgY/pgY7pgY3pgZHpgL7pgYHphJLphJfphazpharphanph4npiLfpiZfpiLjpiL3piYDpiL7piZvpiYvpiaTpiZHpiLTpiYnpiY3piYXpiLnpiL/piZrplpjpmpjpmpTpmpXpm43pm4vpm4npm4rpm7fpm7vpm7npm7bpnZbpnbTpnbbpoJDpoJHpoJPpoIrpoJLpoIzpo7zpo7RcIl0sW1wiYjlhMVwiLFwi6aO96aO+6aaz6aax6aa06auh6bOp6bqC6byO6byT6byg5YOn5YOu5YOl5YOW5YOt5YOa5YOV5YOP5YOR5YOx5YOO5YOp5YWi5Yez5YqD5YqC5Yyx5Y6t5Ze+5ZiA5Zib5ZiX5Ze95ZiU5ZiG5ZiJ5ZiN5ZiO5Ze35ZiW5Zif5ZiI5ZiQ5Ze25ZyY5ZyW5aG15aG+5aKD5aKT5aKK5aG55aKF5aG95aO95aSl5aSi5aSk5aWq5aWp5auh5aum5aup5auX5auW5auY5auj5a215a+e5a+n5a+h5a+l5a+m5a+o5a+i5a+k5a+f5bCN5bGi5baE5baH5bmb5bmj5bmV5bmX5bmU5buT5buW5byK5b2G5b2w5b655oWHXCJdLFtcImJhNDBcIixcIuaEv+aFi+aFt+aFouaFo+aFn+aFmuaFmOaFteaIquaSh+aRmOaRlOaSpOaRuOaRn+aRuuaRkeaRp+aQtOaRreaRu+aVsuaWoeaXl+aXluaaouaaqOaaneamnOamqOamleangeamruank+ani+amm+amt+amu+amq+amtOankOanjeamreanjOampuang+amo+atieatjOaws+a8s+a8lOa7vua8k+a7tOa8qea8vua8oOa8rOa8j+a8gua8olwiXSxbXCJiYWExXCIsXCLmu7/mu6/mvIbmvLHmvLjmvLLmvKPmvJXmvKvmvK/mvojmvKrmu6zmvIHmu7Lmu4zmu7fnhpTnhpnnhb3nhornhoTnhpLniL7nipLnipbnjYTnjZDnkaTnkaPnkarnkbDnka3nlITnlpHnmKfnmI3nmIvnmInnmJPnm6Hnm6PnnoTnnb3nnb/nnaHno4Hnop/noqfnorPnoqnnoqPnpo7npo/npo3nqK7nqLHnqqrnqqnnq63nq6/nrqHnrpXnrovnrbXnrpfnrp3nrpTnro/nrrjnrofnroTnsrnnsr3nsr7ntrvntrDntpzntr3ntr7ntqDnt4rntrTntrLntrHntrrntqLntr/ntrXntrjntq3nt5Lnt4fntqxcIl0sW1wiYmI0MFwiLFwi572w57+g57+h57+f6IGe6IGa6IKH6IWQ6IaA6IaP6IaI6IaK6IW/6IaC6Ien6Ie66IiH6IiU6Iie6ImL6JOJ6JK/6JOG6JOE6JKZ6JKe6JKy6JKc6JOL6JK46JOA6JOT6JKQ6JK86JOR6JOK6Jy/6Jyc6Jy76Jyi6Jyl6Jy06JyY6J2V6Jy36Jyp6KOz6KSC6KO06KO56KO46KO96KOo6KSa6KOv6Kqm6KqM6Kqe6Kqj6KqN6Kqh6KqT6KqkXCJdLFtcImJiYTFcIixcIuiqquiqpeiqqOiqmOiqkeiqmuiqp+ixquiyjeiyjOizk+izkeizkui1q+i2mei2lei3vOi8lOi8kui8lei8k+i+o+mBoOmBmOmBnOmBo+mBmemBnumBoumBnemBm+mEmemEmOmEnumFtemFuOmFt+mFtOmJuOmKgOmKhemKmOmKlumJu+mKk+mKnOmKqOmJvOmKkemWoemWqOmWqemWo+mWpemWpOmamemanOmam+mbjOmbkumcgOmdvOmehemftumgl+mgmOmir+misemkg+mkhemkjOmkiemngemqr+mqsOmrpumtgemtgumztOmztumzs+m6vOm8u+m9iuWEhOWEgOWDu+WDteWDueWEguWEiOWEieWEheWHnFwiXSxbXCJiYzQwXCIsXCLliofliojlionlio3liorli7DljrLlmK7lmLvlmLnlmLLlmL/lmLTlmKnlmZPlmY7lmZflmbTlmLblmK/lmLDlooDlop/lop7lorPlopzloq7loqnloqblpa3lrInlq7vlrIvlq7XlrIzlrIjlr67lr6zlr6nlr6vlsaTlsaXltp3ltpTluaLluZ/luaHlu6Llu5rlu5/lu53lu6Plu6DlvYjlvbHlvrflvrXmhbbmhafmha7mhZ3mhZXmhoJcIl0sW1wiYmNhMVwiLFwi5oW85oWw5oWr5oW+5oan5oaQ5oar5oaO5oas5oaa5oak5oaU5oau5oiu5pGp5pGv5pG55pKe5pKy5pKI5pKQ5pKw5pKl5pKT5pKV5pKp5pKS5pKu5pKt5pKr5pKa5pKs5pKZ5pKi5pKz5pW15pW35pW45pqu5pqr5pq05pqx5qij5qif5qeo5qiB5qie5qiZ5qe95qih5qiT5qiK5qez5qiC5qiF5qet5qiR5q2Q5q2O5q6k5q+F5q+G5ry/5r285r6E5r2R5r2m5r2U5r6G5r2t5r2b5r245r2u5r6O5r265r2w5r2k5r6X5r2Y5ruV5r2v5r2g5r2f54af54as54ax54ao54mW54qb542O542X55Gp55KL55KDXCJdLFtcImJkNDBcIixcIueRvueSgOeVv+eYoOeYqeeYn+eYpOeYpueYoeeYoueamueauuebpOeejueeh+eejOeekeeei+eji+ejheeiuuejiueivuejleeivOejkOeov+eovOepgOeoveeot+eou+eqr+eqrueureeuseevhOeutOevhuevh+evgeeuoOevjOeziue3oOe3tOe3r+e3u+e3mOe3rOe3nee3qOe3o+e3mue3nue3qee2nue3mee3sue3uee9tee9t+e+r1wiXSxbXCJiZGExXCIsXCLnv6nogKbohpvohpzohp3ohqDohprohpjolJfolL3olJrok67olKzolK3olJPolJHolKPolKHolJTok6zolKXok7/olIbonoLonbTonbbonaDonabonbjonajonZnonZfonYzonZPooZvooZ3opJDopIfopJLopJPopJXopIroqrzoq5Loq4foq4ToqpXoq4voq7joqrLoq4noq4Loqr/oqrDoq5boq43oqrboqrnoq5vosYzosY7osazos6Dos57os6bos6Tos6zos63os6Los6Pos5zos6ros6Hota3otp/otqPouKvouJDouJ3ouKLouI/ouKnouJ/ouKHouJ7ourrovJ3ovJvovJ/ovKnovKbovKrovJzovJ5cIl0sW1wiYmU0MFwiLFwi6Lyl6YGp6YGu6YGo6YGt6YG36YSw6YSt6YSn6YSx6YaH6YaJ6YaL6YaD6YuF6Yq76Yq36Yuq6Yqs6Yuk6YuB6Yqz6Yq86YuS6YuH6Yuw6Yqy6Zat6Zax6ZyE6ZyG6ZyH6ZyJ6Z2g6Z6N6Z6L6Z6P6aCh6aCr6aCc6aKz6aSK6aST6aSS6aSY6aed6aeQ6aef6aeb6aeR6aeV6aeS6aeZ6aq36auu6auv6ayn6a2F6a2E6a236a2v6bSG6bSJXCJdLFtcImJlYTFcIixcIum0g+m6qem6vum7juWiqOm9kuWEkuWEmOWElOWEkOWEleWGgOWGquWHneWKkeWKk+WLs+WZmeWZq+WZueWZqeWZpOWZuOWZquWZqOWZpeWZseWZr+WZrOWZouWZtuWjgeWivuWjh+WjheWlruWsneWstOWtuOWvsOWwjuW9iuaGsuaGkeaGqeaGiuaHjeaGtuaGvuaHiuaHiOaIsOaTheaTgeaTi+aSu+aSvOaTmuaThOaTh+aTguaTjeaSv+aTkuaTlOaSvuaVtOabhuabieaaueabhOabh+aauOaoveaouOaouuapmeapq+apmOaoueaphOapouapoeapi+aph+aoteapn+apiOatmeatt+awhea/gua+sea+oVwiXSxbXCJiZjQwXCIsXCLmv4PmvqTmv4HmvqfmvrPmv4DmvrnmvrbmvqbmvqDmvrTnhr7nh4nnh5Dnh5Lnh4jnh5Xnhrnnh47nh5nnh5znh4Pnh4TnjajnkpznkqPnkpjnkp/nkp7nk6LnlIznlI3nmLTnmLjnmLrnm6fnm6XnnqDnnp7nnp/nnqXno6jno5rno6zno6fnpqbnqY3nqY7nqYbnqYznqYvnqrrnr5nnsJHnr4nnr6Tnr5vnr6Hnr6nnr6bns5Xns5bnuIpcIl0sW1wiYmZhMVwiLFwi57iR57iI57ib57ij57ie57id57iJ57iQ5725576y57+w57+x57+u6ICo6Iaz6Iap6Iao6Ie76IiI6ImY6ImZ6JWK6JWZ6JWI6JWo6JWp6JWD6JWJ6JWt6JWq6JWe6J6D6J6f6J6e6J6i6J6N6KGh6KSq6KSy6KSl6KSr6KSh6Kaq6Kam6Kum6Ku66Kur6Kux6KyA6Kuc6Kun6Kuu6Ku+6KyB6KyC6Ku36Kut6Kuz6Ku26Ku86LGr6LGt6LKT6LO06LmE6Lix6Li06LmC6Li56Li16Ly76Lyv6Ly46Lyz6L6o6L6m6YG16YG06YG46YGy6YG86YG66YS06YaS6Yyg6Yy26Yu46Yyz6Yyv6Yyi6Yu86Yyr6YyE6YyaXCJdLFtcImMwNDBcIixcIumMkOmMpumMoemMlemMrumMmemWu+map+maqOmaqumblemcjumckemclumcjemck+mcj+mdm+mdnOmdpumemOmgsOmguOmgu+mgt+mgremguemgpOmkkOmkqOmknumkm+mkoemkmumnremnoumnsemquOmqvOmru+mrremsqOmukem0lem0o+m0pum0qOm0kum0m+m7mOm7lOm+jem+nOWEquWEn+WEoeWEsuWLteWajuWagOWakOWaheWah1wiXSxbXCJjMGExXCIsXCLlmo/lo5Xlo5Plo5Hlo47lrLDlrKrlrKTlrbrlsLflsajltrzltrrltr3ltrjluavlvYzlvr3mh4nmh4Lmh4fmh6bmh4vmiLLmiLTmk47mk4rmk5jmk6Dmk7Dmk6bmk6zmk7Hmk6Lmk63mloLmloPmm5nmm5bmqoDmqpTmqoTmqqLmqpzmq5vmqqPmqb7mqpfmqpDmqqDmrZzmrq7mr5rmsIjmv5jmv7Hmv5/mv6Dmv5vmv6Tmv6vmv6/mvoDmv6zmv6Hmv6nmv5Xmv67mv7Dnh6fnh5/nh67nh6bnh6Xnh63nh6znh7Tnh6DniLXniYbnjbDnjbLnkqnnkrDnkqbnkqjnmYbnmYLnmYznm6rnnrPnnqrnnrDnnqxcIl0sW1wiYzE0MFwiLFwi556n556t55+v56O356O656O056Ov56SB56an56aq56mX56q/57CH57CN56++56+357CM56+g57Og57Oc57Oe57Oi57Of57OZ57Od57iu57i+57mG57i357iy57mD57ir57i957ix57mF57mB57i057i557mI57i157i/57iv572E57+z57+86IGx6IGy6IGw6IGv6IGz6IeG6IeD6Ia66IeC6IeA6Ia/6Ia96IeJ6Ia+6Ieo6IiJ6Imx6JaqXCJdLFtcImMxYTFcIixcIuiWhOiVvuiWnOiWkeiWlOiWr+iWm+iWh+iWqOiWiuiZp+ifgOifkeies+ifkuifhuieq+ieu+ieuuifiOifi+iku+iktuilhOikuOikveimrOisjuisl+ismeism+isiuisoOisneishOiskOixgeiwv+ixs+izuuizveizvOizuOizu+i2qOi5iei5i+i5iOi5iui9hOi8vui9gui9hei8v+mBv+mBvemChOmCgemCgumCgOmEuemGo+mGnumGnOmNjemOgumMqOmNtemNiumNpemNi+mMmOmNvumNrOmNm+mNsOmNmumNlOmXiumXi+mXjOmXiOmXhumasemauOmblumcnOmcnumeoOmfk+mhhumitumktemogVwiXSxbXCJjMjQwXCIsXCLpp7/prq7prqvprqrprq3ptLvptL/puovpu4/pu57pu5zpu53pu5vpvL7pvYvlj6LlmpXlmq7lo5nlo5jlrLjlvZ3mh6PmiLPmk7Tmk7Lmk77mlIbmk7rmk7vmk7fmlrfmm5zmnKbmqrPmqqzmq4Pmqrvmqrjmq4Lmqq7mqq/mrZ/mrbjmrq/ngInngIvmv77ngIbmv7rngJHngI/nh7vnh7znh77nh7jnjbfnjbXnkqfnkr/nlJXnmZbnmZhcIl0sW1wiYzJhMVwiLFwi55mS5569556/5567556856SO56au56mh56mi56mg56uE56uF57Cr57Cn57Cq57Ce57Cj57Ch57On57mU57mV57me57ma57mh57mS57mZ572I57+557+76IG36IG26IeN6IeP6IiK6JeP6Jap6JeN6JeQ6JeJ6Jaw6Ja66Ja56Jam6J+v6J+s6J+y6J+g6KaG6Kay6Ke06Kyo6Ky56Kys6Kyr6LGQ6LSF6LmZ6Lmj6Lmm6Lmk6Lmf6LmV6LuA6L2J6L2N6YKH6YKD6YKI6Yar6Yas6YeQ6Y6U6Y6K6Y6W6Y6i6Y6z6Y6u6Y6s6Y6w6Y6Y6Y6a6Y6X6ZeU6ZeW6ZeQ6ZeV6Zui6Zuc6ZuZ6Zub6Zue6Zyk6Z6j6Z6mXCJdLFtcImMzNDBcIixcIumeremfuemhjemhj+mhjOmhjumhk+miuumkvumkv+mkvemkrummpemojumrgemsg+mshumtj+mtjumtjemviumviemvvemviOmvgOm1kem1nem1oOm7oOm8lem8rOWEs+WapeWjnuWjn+WjouWvtem+kOW7rOaHsuaHt+aHtuaHteaUgOaUj+aboOabnearpearnearmuark+eAm+eAn+eAqOeAmueAneeAleeAmOeIhueIjeeJmOeKoueNuFwiXSxbXCJjM2ExXCIsXCLnjbrnkr3nk4rnk6PnlofnlobnmZ/nmaHnn4fnpJnnprHnqavnqannsL7nsL/nsLjnsL3nsLfnsYDnuavnua3nubnnuannuarnvoXnubPnvrbnvrnnvrjoh5jol6nol53ol6rol5Xol6Tol6Xol7fon7vooIXooI3on7non77opaDopZ/opZbopZ7orYHorZzorZjorYnorZrorY7orY/orYborZnotIjotIroubzoubLouofoubbouazoubroubTovZTovY7ovq3pgorpgovphrHphq7pj6Hpj5Hpj5/pj4Ppj4jpj5zpj53pj5bpj6Lpj43pj5jpj6Tpj5fpj6jpl5zpmrTpm6PpnKrpnKfpnaHpn5zpn7vpoZ5cIl0sW1wiYzQ0MFwiLFwi6aGY6aGb6aK86aWF6aWJ6aiW6aiZ6ayN6a+o6a+n6a+W6a+b6baJ6bWh6bWy6bWq6bWs6bqS6bqX6bqT6bq05Yu45Zqo5Zq35Zq25Zq05Zq85aOk5a2A5a2D5a295a+25beJ5oe45oe65pSY5pSU5pSZ5pum5pyn5qus54C+54Cw54Cy54iQ542755OP55mi55ml56Sm56Sq56Ss56Sr56uH56u257GM57GD57GN57Ov57Ow6L6u57m957m8XCJdLFtcImM0YTFcIixcIue6gue9jOiAgOiHmuiJpuiXu+iXueiYkeiXuuiYhuiYi+iYh+iYiuiglOigleilpOimuuinuOitsOitrOitpuitr+itn+itq+i0j+i0jei6iei6gei6hei6gumGtOmHi+mQmOmQg+mPvemXoemcsOmjhOmlkumlkemmqOmoq+mosOmot+motemwk+mwjem5uem6tem7qOm8r+m9n+m9o+m9oeWEt+WEuOWbgeWbgOWbguWklOWxrOW3jeaHvOaHvuaUneaUnOaWleabqearu+ashOaruuausueBjOeIm+eKp+eTlueTlOeZqeefk+exkOe6j+e6jOe+vOiYl+iYreiYmuigo+igouigoeign+ilquilrOimveittFwiXSxbXCJjNTQwXCIsXCLorbforb3otJPouorouo3ouovovZ/ovq/phrrpkK7pkLPpkLXpkLrpkLjpkLLpkKvpl6LpnLjpnLnpnLLpn7/poafpoaXppZfpqYXpqYPpqYDpqL7pq4/prZTprZHpsK3psKXptq/ptrTpt4Lptrjpup3pu6/pvJnpvZzpvabpvaflhLzlhLvlm4jlm4rlm4nlrb/lt5Tlt5LlvY7mh7/mlKTmrIrmraHngZHngZjnjoDnk6Tnlornma7nmaxcIl0sW1wiYzVhMVwiLFwi56az57Gg57Gf6IG+6IG96Ief6KWy6KWv6Ke86K6A6LSW6LSX6LqR6LqT6L2h6YWI6ZGE6ZGR6ZGS6Zy96Zy+6Z+D6Z+B6aGr6aWV6amV6amN6auS6aya6bGJ6bCx6bC+6bC76beT6beX6by06b2s6b2q6b6U5ZuM5beW5oiA5pSj5pSr5pSq5pus5qyQ55Oa56uK57Gk57Gj57Gl57qT57qW57qU6Iei6Ji46Ji/6KCx6K6K6YKQ6YKP6ZGj6ZGg6ZGk6Z2o6aGv6aWc6ama6amb6amX6auT6auU6auR6bGU6bGX6bGW6bel6bqf6bu05ZuR5aOp5pSs54Ge55mx55my55+X572Q576I6KC26KC56KGi6K6T6K6SXCJdLFtcImM2NDBcIixcIuiuluiJt+i0m+mHgOmRqumdgumdiOmdhOmfhumhsOmpn+msoumtmOmxn+m3uem3uum5vOm5vem8h+m9t+m9suW7s+aslueBo+exrOexruigu+ingOi6oemHgemRsumRsOmhsemlnumrlumso+m7jOeBpOefmuiumumRt+mfiempoumppee6nOiunOi6qumHhemRvemRvumRvOmxt+mxuOm7t+ixlOmRv+m4mueIqOmpqumssem4m+m4nuexslwiXSxbXCJjOTQwXCIsXCLkuYLkuZzlh7XljJrljoLkuIfkuIzkuYfkuo3lm5fvqIzlsa7lvbPkuI/lhofkuI7kuK7kupPku4Lku4nku4jlhpjli7zljazljrnlnKDlpIPlpKzlsJDlt7/ml6HmrrPmr4zmsJTniL/kuLHkuLzku6jku5zku6nku6Hku53ku5rliIzljJzljYzlnKLlnKPlpJflpK/lroHlroTlsJLlsLvlsbTlsbPluITluoDluoLlv4nmiInmiZDmsJVcIl0sW1wiYzlhMVwiLFwi5rC25rGD5rC/5rC754qu54qw546K56a46IKK6Zie5LyO5LyY5Lys5Lu15LyU5Lux5LyA5Lu35LyI5Lyd5LyC5LyF5Lyi5LyT5LyE5Lu05LyS5Yax5YiT5YiJ5YiQ5Yqm5Yyi5Yyf5Y2N5Y6K5ZCH5Zuh5Zuf5Zyu5Zyq5Zy05aS85aaA5aW85aaF5aW75aW+5aW35aW/5a2W5bCV5bCl5bG85bG65bG75bG+5bef5bm15bqE5byC5bya5b205b+V5b+U5b+P5omc5ome5omk5omh5omm5omi5omZ5omg5oma5oml5pev5peu5py+5py55py45py75py65py/5py85pyz5rCY5rGG5rGS5rGc5rGP5rGK5rGU5rGLXCJdLFtcImNhNDBcIixcIuaxjOeBseeJnueKtOeKteeOjueUqueZv+eptee9keiJuOiJvOiKgOiJveiJv+iZjeilvumCmemCl+mCmOmCm+mClOmYoumYpOmYoOmYo+S9luS8u+S9ouS9ieS9k+S9pOS8vuS9p+S9kuS9n+S9geS9mOS8reS8s+S8v+S9oeWGj+WGueWInOWInuWIoeWKreWKruWMieWNo+WNsuWOjuWOj+WQsOWQt+WQquWRlOWRheWQmeWQnOWQpeWQmFwiXSxbXCJjYWExXCIsXCLlkL3lkY/lkYHlkKjlkKTlkYflm67lm6flm6XlnYHlnYXlnYzlnYnlnYvlnZLlpIblpYDlpqblppjlpqDlppflpo7lpqLlppDlpo/lpqflpqHlro7lrpLlsKjlsKrlso3lso/lsojlsovlsonlspLlsorlsoblspPlspXlt6DluIrluI7luovluonluozluojluo3lvIXlvJ3lvbjlvbblv5Llv5Hlv5Dlv63lv6jlv67lv7Plv6Hlv6Tlv6Plv7rlv6/lv7flv7vmgIDlv7TmiLrmioPmiozmio7mio/mipTmiofmibHmibvmibrmibDmioHmiojmibfmib3mibLmibTmlLfml7Dml7Tml7Pml7Lml7XmnYXmnYdcIl0sW1wiY2I0MFwiLFwi5p2Z5p2V5p2M5p2I5p2d5p2N5p2a5p2L5q+Q5rCZ5rCa5rG45rGn5rGr5rKE5rKL5rKP5rGx5rGv5rGp5rKa5rGt5rKH5rKV5rKc5rGm5rGz5rGl5rG75rKO54G054G654mj54q/54q954uD54uG54uB54q654uF546V546X546T546U546S55S655S555aU55aV55qB56S96IC06IKV6IKZ6IKQ6IKS6IKc6IqQ6IqP6IqF6IqO6IqR6IqTXCJdLFtcImNiYTFcIixcIuiKiuiKg+iKhOixuOi/iei+v+mCn+mCoemCpemCnumCp+mCoOmYsOmYqOmYr+mYreS4s+S+mOS9vOS+heS9veS+gOS+h+S9tuS9tOS+ieS+hOS9t+S9jOS+l+S9quS+muS9ueS+geS9uOS+kOS+nOS+lOS+nuS+kuS+guS+leS9q+S9ruWGnuWGvOWGvuWIteWIsuWIs+WJhuWIseWKvOWMiuWMi+WMvOWOkuWOlOWSh+WRv+WSgeWSkeWSguWSiOWRq+WRuuWRvuWRpeWRrOWRtOWRpuWSjeWRr+WRoeWRoOWSmOWRo+WRp+WRpOWbt+WbueWdr+WdsuWdreWdq+WdseWdsOWdtuWegOWdteWdu+Wds+WdtOWdolwiXSxbXCJjYzQwXCIsXCLlnajlnb3lpIzlpYXlprXlprrlp4/lp47lprLlp4zlp4Hlprblprzlp4Plp5blprHlpr3lp4Dlp4jlprTlp4flraLlraXlrpPlrpXlsYTlsYflsq7lsqTlsqDlsrXlsq/lsqjlsqzlsp/lsqPlsq3lsqLlsqrlsqflsp3lsqXlsrblsrDlsqbluJfluJTluJnlvKjlvKLlvKPlvKTlvZTlvoLlvb7lvb3lv57lv6XmgK3mgKbmgJnmgLLmgItcIl0sW1wiY2NhMVwiLFwi5oC05oCK5oCX5oCz5oCa5oCe5oCs5oCi5oCN5oCQ5oCu5oCT5oCR5oCM5oCJ5oCc5oiU5oi95oqt5oq05ouR5oq+5oqq5oq25ouK5oqu5oqz5oqv5oq75oqp5oqw5oq45pS95pao5pa75piJ5pe85piE5piS5piI5pe75piD5piL5piN5piF5pe95piR5piQ5pu25pyK5p6F5p2s5p6O5p6S5p225p275p6Y5p6G5p6E5p205p6N5p6M5p265p6f5p6R5p6Z5p6D5p295p6B5p245p255p6U5qyl5q6A5q2+5q+e5rCd5rKT5rOs5rOr5rOu5rOZ5rK25rOU5rKt5rOn5rK35rOQ5rOC5rK65rOD5rOG5rOt5rOyXCJdLFtcImNkNDBcIixcIuazkuazneaytOayiuayneaygOaznuazgOa0sOazjeazh+aysOazueazj+azqeazkeeClOeCmOeCheeCk+eChueChOeCkeeClueCgueCmueCg+eJqueLlueLi+eLmOeLieeLnOeLkueLlOeLmueLjOeLkeeOpOeOoeeOreeOpueOoueOoOeOrOeOneeTneeTqOeUv+eVgOeUvueWjOeWmOear+ebs+ebseebsOebteefuOefvOefueefu+efulwiXSxbXCJjZGExXCIsXCLnn7fnpYLnpL/np4Xnqbjnqbvnq7vnsbXns73ogLXogo/ogq7ogqPogrjogrXogq3oiKDoiqDoi4DoiqvoiproipjoipvoirXoiqfoiq7oirzoip7oirroirToiqjoiqHoiqnoi4LoiqToi4PoirboiqLombDoma/oma3oma7osZbov5Lov4vov5Pov43ov5bov5Xov5fpgrLpgrTpgq/pgrPpgrDpmLnpmL3pmLzpmLrpmYPkv43kv4Xkv5PkvrLkv4nkv4vkv4Hkv5Tkv5zkv5nkvrvkvrPkv5vkv4fkv5bkvrrkv4Dkvrnkv6zliYTliYnli4Dli4LljL3ljbzljpfljpbljpnljpjlkrrlkqHlkq3lkqXlk49cIl0sW1wiY2U0MFwiLFwi5ZOD6IyN5ZK35ZKu5ZOW5ZK25ZOF5ZOG5ZKg5ZGw5ZK85ZKi5ZK+5ZGy5ZOe5ZKw5Z615Z6e5Z6f5Z6k5Z6M5Z6X5Z6d5Z6b5Z6U5Z6Y5Z6P5Z6Z5Z6l5Z6a5Z6V5aO05aSN5aWT5aeh5aee5aeu5aiA5aex5aed5ae65ae95ae85ae25aek5aey5ae35aeb5aep5aez5ae15aeg5ae+5ae05aet5a6o5bGM5bOQ5bOY5bOM5bOX5bOL5bObXCJdLFtcImNlYTFcIixcIuWznuWzmuWzieWzh+WziuWzluWzk+WzlOWzj+WziOWzhuWzjuWzn+WzuOW3ueW4oeW4ouW4o+W4oOW4pOW6sOW6pOW6ouW6m+W6o+W6peW8h+W8ruW9luW+huaAt+aAueaBlOaBsuaBnuaBheaBk+aBh+aBieaBm+aBjOaBgOaBguaBn+aApOaBhOaBmOaBpuaBruaJguaJg+aLj+aMjeaMi+aLteaMjuaMg+aLq+aLueaMj+aMjOaLuOaLtuaMgOaMk+aMlOaLuuaMleaLu+aLsOaVgeaVg+aWquaWv+aYtuaYoeaYsuaYteaYnOaYpuaYouaYs+aYq+aYuuaYneaYtOaYueaYruacj+ackOafgeafsuafiOaeulwiXSxbXCJjZjQwXCIsXCLmn5zmnrvmn7jmn5jmn4Dmnrfmn4Xmn6vmn6Tmn5/mnrXmn43mnrPmn7fmn7bmn67mn6Pmn4Lmnrnmn47mn6fmn7DmnrLmn7zmn4bmn63mn4zmnq7mn6bmn5vmn7rmn4nmn4rmn4Pmn6rmn4vmrKjmroLmroTmrrbmr5bmr5jmr6DmsKDmsKHmtKjmtLTmtK3mtJ/mtLzmtL/mtJLmtIrms5rmtLPmtITmtJnmtLrmtJrmtJHmtIDmtJ3mtYJcIl0sW1wiY2ZhMVwiLFwi5rSB5rSY5rS35rSD5rSP5rWA5rSH5rSg5rSs5rSI5rSi5rSJ5rSQ54K354Kf54K+54Kx54Kw54Kh54K054K154Kp54mB54mJ54mK54ms54mw54mz54mu54uK54uk54uo54ur54uf54uq54um54uj546F54+M54+C54+I54+F546554625461546054+r546/54+H546+54+D54+G546454+L55Os55Ou55Su55WH55WI55an55aq55m555uE55yI55yD55yE55yF55yK55u355u755u655+n55+o56CG56CR56CS56CF56CQ56CP56CO56CJ56CD56CT56WK56WM56WL56WF56WE56eV56eN56eP56eW56eO56qAXCJdLFtcImQwNDBcIixcIuepvuerkeesgOesgeexuuexuOexueexv+eygOeygee0g+e0iOe0gee9mOe+kee+jee+vuiAh+iAjuiAj+iAlOiAt+iDmOiDh+iDoOiDkeiDiOiDguiDkOiDheiDo+iDmeiDnOiDiuiDleiDieiDj+iDl+iDpuiDjeiHv+iIoeiKlOiLmeiLvuiLueiMh+iLqOiMgOiLleiMuuiLq+iLluiLtOiLrOiLoeiLsuiLteiMjOiLu+iLtuiLsOiLqlwiXSxbXCJkMGExXCIsXCLoi6Toi6Doi7roi7Poi63ombfombTombzombPooYHooY7ooafooarooanop5PoqIToqIfotbLov6Pov6Hov67ov6Dpg7Hpgr3pgr/pg5Xpg4Xpgr7pg4fpg4vpg4jph5Tph5PpmZTpmY/pmZHpmZPpmYrpmY7lgJ7lgIXlgIflgJPlgKLlgLDlgJvkv7Xkv7TlgLPlgLflgKzkv7bkv7flgJflgJzlgKDlgKflgLXlgK/lgLHlgI7lhZrlhpTlhpPlh4rlh4Tlh4Xlh4jlh47liaHliZrliZLliZ7liZ/liZXliaLli43ljI7ljp7llKblk6LllJfllJLlk6flk7Plk6TllJrlk7/llITllIjlk6vllJHllIXlk7FcIl0sW1wiZDE0MFwiLFwi5ZSK5ZO75ZO35ZO45ZOg5ZSO5ZSD5ZSL5ZyB5ZyC5Z+M5aCy5Z+V5Z+S5Z665Z+G5Z695Z685Z645Z625Z6/5Z+H5Z+Q5Z655Z+B5aSO5aWK5aiZ5aiW5ait5aiu5aiV5aiP5aiX5aiK5aie5aiz5a2s5a6n5a6t5a6s5bCD5bGW5bGU5bOs5bO/5bOu5bOx5bO35bSA5bO55bip5bio5bqo5bqu5bqq5bqs5byz5byw5b2n5oGd5oGa5oGnXCJdLFtcImQxYTFcIixcIuaBgeaCouaCiOaCgOaCkuaCgeaCneaCg+aCleaCm+aCl+aCh+aCnOaCjuaImeaJhuaLsuaMkOaNluaMrOaNhOaNheaMtuaNg+aPpOaMueaNi+aNiuaMvOaMqeaNgeaMtOaNmOaNlOaNmeaMreaNh+aMs+aNmuaNkeaMuOaNl+aNgOaNiOaViuaVhuaXhuaXg+aXhOaXguaZiuaZn+aZh+aZkeackuack+agn+agmuahieagsuags+agu+ahi+ahj+agluagseagnOagteagq+agreagr+ahjuahhOagtOagneagkuaglOagpuagqOagruahjeaguuagpeagoOasrOasr+asreasseastOatreiCguauiOavpuavpFwiXSxbXCJkMjQwXCIsXCLmr6jmr6Pmr6Lmr6fmsKXmtbrmtaPmtaTmtbbmtI3mtaHmtpLmtZjmtaLmta3mta/mtpHmto3mt6/mtb/mtobmtZ7mtafmtaDmtpfmtbDmtbzmtZ/mtoLmtpjmtK/mtajmtovmtb7mtoDmtoTmtJbmtoPmtbvmtb3mtbXmtpDng5zng5Png5Hng53ng4vnvLnng6Lng5fng5Lng57ng6Dng5Tng43ng4Xng4bng4fng5rng47ng6HniYLnibhcIl0sW1wiZDJhMVwiLFwi54m354m254yA54u654u054u+54u254uz54u754yB54+T54+Z54+l54+W546854+n54+j54+p54+c54+S54+b54+U54+d54+a54+X54+Y54+o55Oe55Of55O055O155Sh55Wb55Wf55aw55eB55a755eE55eA55a/55a255a655qK55uJ55yd55yb55yQ55yT55yS55yj55yR55yV55yZ55ya55yi55yn56Cj56Cs56Ci56C156Cv56Co56Cu56Cr56Ch56Cp56Cz56Cq56Cx56WU56Wb56WP56Wc56WT56WS56WR56er56es56eg56eu56et56eq56ec56ee56ed56qG56qJ56qF56qL56qM56qK56qH56uY56yQXCJdLFtcImQzNDBcIixcIueshOesk+esheesj+esiOesiuesjuesieeskueyhOeykeeyiueyjOeyiOeyjeeyhee0nue0nee0kee0jue0mOe0lue0k+e0n+e0kue0j+e0jOe9nOe9oee9nue9oOe9nee9m+e+lue+kue/g+e/gue/gOiAluiAvuiAueiDuuiDsuiDueiDteiEgeiDu+iEgOiIgeiIr+iIpeiMs+iMreiNhOiMmeiNkeiMpeiNluiMv+iNgeiMpuiMnOiMolwiXSxbXCJkM2ExXCIsXCLojYLojY7ojJvojKrojIjojLzojY3ojJbojKTojKDojLfojK/ojKnojYfojYXojYzojZPojJ7ojKzojYvojKfojYjomZPomZLomqLomqjompbomo3ompHomp7omofompfomobomovompromoXomqXompnomqHomqfompXompjomo7omp3ompDompTooYPooYTooa3oobXoobboobLoooDoobHoob/ooa/oooPoob7oobToobzoqJLosYfosZfosbvosqTosqPotbbotbjotrXotrfotrbou5Hou5Pov77ov7XpgILov7/ov7vpgITov7zov7bpg5bpg6Dpg5npg5rpg6Ppg5/pg6Xpg5jpg5vpg5fpg5zpg6TphZBcIl0sW1wiZDQ0MFwiLFwi6YWO6YWP6YeV6Yei6Yea6Zmc6Zmf6Zq86aOj6auf6ayv5Lm/5YGw5YGq5YGh5YGe5YGg5YGT5YGL5YGd5YGy5YGI5YGN5YGB5YGb5YGK5YGi5YCV5YGF5YGf5YGp5YGr5YGj5YGk5YGG5YGA5YGu5YGz5YGX5YGR5YeQ5Ymr5Ymt5Yms5Ymu5YuW5YuT5Yyt5Y6c5ZW15ZW25ZS85ZWN5ZWQ5ZS05ZSq5ZWR5ZWi5ZS25ZS15ZSw5ZWS5ZWFXCJdLFtcImQ0YTFcIixcIuWUjOWUsuWVpeWVjuWUueWViOWUreWUu+WVgOWVi+WciuWch+Wfu+WglOWfouWftuWfnOWftOWggOWfreWfveWgiOWfuOWgi+Wfs+Wfj+Wgh+WfruWfo+WfsuWfpeWfrOWfoeWgjuWfvOWgkOWfp+WggeWgjOWfseWfqeWfsOWgjeWghOWlnOWpoOWpmOWpleWpp+WpnuWouOWoteWpreWpkOWpn+WppeWprOWpk+WppOWpl+Wpg+WpneWpkuWphOWpm+WpiOWqjuWovuWpjeWoueWpjOWpsOWpqeWph+WpkeWpluWpguWpnOWtsuWtruWvgeWvgOWxmeW0nuW0i+W0neW0muW0oOW0jOW0qOW0jeW0puW0peW0j1wiXSxbXCJkNTQwXCIsXCLltLDltJLltKPltJ/ltK7luL7luLTlurHlurTlurnlurLlurPlvLblvLjlvpvlvpblvp/mgormgpDmgobmgr7mgrDmgrrmg5Pmg5Tmg4/mg6Tmg5nmg53mg4jmgrHmg5vmgrfmg4rmgr/mg4Pmg43mg4DmjLLmjaXmjormjoLmjb3mjr3mjp7mjq3mjp3mjpfmjqvmjo7mja/mjofmjpDmja7mjq/mjbXmjpzmja3mjq7mjbzmjqTmjLvmjp9cIl0sW1wiZDVhMVwiLFwi5o245o6F5o6B5o6R5o6N5o2w5pWT5peN5pml5pmh5pmb5pmZ5pmc5pmi5pyY5qG55qKH5qKQ5qKc5qGt5qGu5qKu5qKr5qWW5qGv5qKj5qKs5qKp5qG15qG05qKy5qKP5qG35qKS5qG85qGr5qGy5qKq5qKA5qGx5qG+5qKb5qKW5qKL5qKg5qKJ5qKk5qG45qG75qKR5qKM5qKK5qG95qy25qyz5qy35qy45q6R5q6P5q6N5q6O5q6M5rCq5reA5rar5ra05raz5rm05ras5rep5rei5ra35re25reU5riA5reI5reg5ref5reW5ra+5rel5rec5red5reb5re05reK5ra95ret5rew5ra65reV5reC5reP5reJXCJdLFtcImQ2NDBcIixcIua3kOa3sua3k+a3vea3l+a3jea3o+a2u+eDuueEjeeDt+eEl+eDtOeEjOeDsOeEhOeDs+eEkOeDvOeDv+eEhueEk+eEgOeDuOeDtueEi+eEgueEjueJvueJu+eJvOeJv+eMneeMl+eMh+eMkeeMmOeMiueMiOeLv+eMj+eMnueOiOePtuePuOePteeQhOeQgeePveeQh+eQgOePuuePvOePv+eQjOeQi+ePtOeQiOeVpOeVo+eXjueXkueXj1wiXSxbXCJkNmExXCIsXCLnl4vnl4znl5Hnl5Dnmo/nmonnm5PnnLnnnK/nnK3nnLHnnLLnnLTnnLPnnL3nnKXnnLvnnLXnoYjnoZLnoYnnoY3noYrnoYznoKbnoYXnoZDnpaTnpafnpannparnpaPnpavnpaHnprvnp7rnp7jnp7bnp7fnqo/nqpTnqpDnrLXnrYfnrLTnrKXnrLDnrKLnrKTnrLPnrJjnrKrnrJ3nrLHnrKvnrK3nrK/nrLLnrLjnrJrnrKPnspTnspjnspbnsqPntLXntL3ntLjntLbntLrntYXntKzntKnntYHntYfntL7ntL/ntYrntLvntKjnvaPnvpXnvpznvp3nvpvnv4rnv4vnv43nv5Dnv5Hnv4fnv4/nv4nogJ9cIl0sW1wiZDc0MFwiLFwi6ICe6ICb6IGH6IGD6IGI6ISY6ISl6ISZ6ISb6ISt6ISf6ISs6ISe6ISh6ISV6ISn6ISd6ISi6IiR6Ii46Iiz6Ii66Ii06Iiy6Im06I6Q6I6j6I6o6I6N6I266I2z6I6k6I206I6P6I6B6I6V6I6Z6I216I6U6I6p6I296I6D6I6M6I6d6I6b6I6q6I6L6I2+6I6l6I6v6I6I6I6X6I6w6I2/6I6m6I6H6I6u6I226I6a6JmZ6JmW6Jq/6Jq3XCJdLFtcImQ3YTFcIixcIuibguibgeibheiauuiasOibiOiaueias+iauOibjOiatOiau+iavOibg+iaveiavuihkuiiieiileiiqOiiouiiquiimuiikeiioeiin+iimOiip+iimeiim+iil+iipOiirOiijOiik+iijuimguinluinmeinleiosOiop+iorOionuiwueiwu+ixnOixneixveiypei1vei1u+i1uei2vOi3gui2uei2v+i3gei7mOi7nui7nei7nOi7l+i7oOi7oemApOmAi+mAkemAnOmAjOmAoemDr+mDqumDsOmDtOmDsumDs+mDlOmDq+mDrOmDqemFlumFmOmFmumFk+mFlemHrOmHtOmHsemHs+mHuOmHpOmHuemHqlwiXSxbXCJkODQwXCIsXCLph6vph7fph6jph67plbrplobplojpmbzpma3pmavpmbHpma/pmr/pnarpoITpo6XpppflgpvlgpXlgpTlgp7lgovlgqPlgoPlgozlgo7lgp3lgajlgpzlgpLlgoLlgoflhZ/lh5TljJLljJHljqTljqfllpHllqjllqXllq3llbflmYXllqLllpPllojllo/llrXlloHllqPllpLllqTllb3llozllqbllb/llpXllqHllo7lnIzloKnloLdcIl0sW1wiZDhhMVwiLFwi5aCZ5aCe5aCn5aCj5aCo5Z+15aGI5aCl5aCc5aCb5aCz5aC/5aC25aCu5aC55aC45aCt5aCs5aC75aWh5aqv5aqU5aqf5am65aqi5aqe5am45aqm5am85aql5aqs5aqV5aqu5ai35aqE5aqK5aqX5aqD5aqL5aqp5am75am95aqM5aqc5aqP5aqT5aqd5a+q5a+N5a+L5a+U5a+R5a+K5a+O5bCM5bCw5bS35bWD5bWr5bWB5bWL5bS/5bS15bWR5bWO5bWV5bSz5bS65bWS5bS95bSx5bWZ5bWC5bS55bWJ5bS45bS85bSy5bS25bWA5bWF5bmE5bmB5b2Y5b6m5b6l5b6r5oOJ5oK55oOM5oOi5oOO5oOE5oSUXCJdLFtcImQ5NDBcIixcIuaDsuaEiuaEluaEheaDteaEk+aDuOaDvOaDvuaDgeaEg+aEmOaEneaEkOaDv+aEhOaEi+aJiuaOlOaOseaOsOaPjuaPpeaPqOaPr+aPg+aSneaPs+aPiuaPoOaPtuaPleaPsuaPteaRoeaPn+aOvuaPneaPnOaPhOaPmOaPk+aPguaPh+aPjOaPi+aPiOaPsOaPl+aPmeaUsuaVp+aVquaVpOaVnOaVqOaVpeaWjOaWneaWnuaWruaXkOaXklwiXSxbXCJkOWExXCIsXCLmmbzmmazmmbvmmoDmmbHmmbnmmarmmbLmnIHmpIzmo5PmpITmo5zmpKrmo6zmo6rmo7HmpI/mo5bmo7fmo6vmo6Tmo7bmpJPmpJDmo7Pmo6HmpIfmo4zmpIjmpbDmorTmpJHmo6/mo4bmpJTmo7jmo5Dmo73mo7zmo6jmpIvmpIrmpJfmo47mo4jmo53mo57mo6bmo7Tmo5HmpIbmo5Tmo6nmpJXmpKXmo4fmrLnmrLvmrL/mrLzmrpTmrpfmrpnmrpXmrr3mr7Dmr7Lmr7PmsLDmt7zmuYbmuYfmuJ/muYnmuojmuLzmuL3muYXmuaLmuKvmuL/muYHmuZ3mubPmuJzmuLPmuYvmuYDmuZHmuLvmuIPmuK7muZ5cIl0sW1wiZGE0MFwiLFwi5rmo5rmc5rmh5rix5rio5rmg5rmx5rmr5ri55rii5riw5rmT5rml5rin5rm45rmk5rm35rmV5rm55rmS5rmm5ri15ri25rma54Sg54Se54Sv54O754Su54Sx54Sj54Sl54Si54Sy54Sf54So54S654Sb54mL54ma54qI54qJ54qG54qF54qL54yS54yL54yw54yi54yx54yz54yn54yy54yt54ym54yj54y154yM55Cu55Cs55Cw55Cr55CWXCJdLFtcImRhYTFcIixcIueQmueQoeeQreeQseeQpOeQo+eQneeQqeeQoOeQsueTu+eUr+eVr+eVrOeXp+eXmueXoeeXpueXneeXn+eXpOeXl+ealeeakuebmuedhuedh+edhOedjeedheediuedjuedi+edjOefnuefrOehoOehpOehpeehnOehreehseehquehruehsOehqeehqOehnuehoueltOels+elsuelsOeogueoiueog+eojOeohOeqmeerpuerpOetiuesu+ethOetiOetjOetjuetgOetmOetheeyoueynueyqOeyoee1mOe1r+e1o+e1k+e1lue1p+e1que1j+e1ree1nOe1q+e1kue1lOe1qee1kee1n+e1jue8vue8v+e9pVwiXSxbXCJkYjQwXCIsXCLnvabnvqLnvqDnvqHnv5fogZHogY/ogZDog77og5TohYPohYrohZLohY/ohYfohL3ohY3ohLroh6boh67oh7foh7joh7noiIToiLzoiL3oiL/oibXojLvoj4/oj7nokKPoj4Doj6jokJLoj6foj6Toj7zoj7bokJDoj4boj4joj6voj6Pojr/okIHoj53oj6Xoj5joj7/oj6Hoj4voj47oj5boj7Xoj4nokInokI/oj57okJHokIboj4Loj7NcIl0sW1wiZGJhMVwiLFwi6I+V6I+66I+H6I+R6I+q6JCT6I+D6I+s6I+u6I+E6I+76I+X6I+i6JCb6I+b6I++6JuY6Jui6Jum6JuT6Juj6Jua6Juq6Jud6Jur6Juc6Jus6Jup6JuX6Juo6JuR6KGI6KGW6KGV6KK66KOX6KK56KK46KOA6KK+6KK26KK86KK36KK96KKy6KSB6KOJ6KaV6KaY6KaX6Ked6Kea6Keb6KmO6KmN6Ki56KmZ6KmA6KmX6KmY6KmE6KmF6KmS6KmI6KmR6KmK6KmM6KmP6LGf6LKB6LKA6LK66LK+6LKw6LK56LK16LaE6LaA6LaJ6LeY6LeT6LeN6LeH6LeW6Lec6LeP6LeV6LeZ6LeI6LeX6LeF6Luv6Lu36Lu6XCJdLFtcImRjNDBcIixcIui7uei7pui7rui7pei7tei7p+i7qOi7tui7q+i7sei7rOi7tOi7qemAremAtOmAr+mEhumErOmEhOmDv+mDvOmEiOmDuemDu+mEgemEgOmEh+mEhemEg+mFoemFpOmFn+mFoumFoOmIgemIiumIpemIg+mImumIpumIj+mIjOmIgOmIkumHv+mHvemIhumIhOmIp+mIgumInOmIpOmImemIl+mIhemIlumVu+mWjemWjOmWkOmah+mZvumaiFwiXSxbXCJkY2ExXCIsXCLpmonpmoPpmoDpm4Lpm4jpm4Ppm7Hpm7DpnazpnbDpna7poIfpoqnpo6vps6bpu7nkuoPkuoTkurblgr3lgr/lg4blgq7lg4Tlg4rlgrTlg4jlg4LlgrDlg4HlgrrlgrHlg4vlg4nlgrblgrjlh5flibrlibjlibvlibzll4Pll5vll4zll5Dll4vll4rll53ll4Dll5Tll4Tll6nllr/ll5Lllo3ll4/ll5Xll6Lll5bll4jll7Lll43ll5nll4LlnJTloZPloajloaTloY/loY3loYnloa/loZXloY7loZ3loZnloaXloZvloL3loaPlobHlo7zlq4flq4Tlq4vlqrrlqrjlqrHlqrXlqrDlqr/lq4jlqrvlq4ZcIl0sW1wiZGQ0MFwiLFwi5aq35auA5auK5aq05aq25auN5aq55aqQ5a+W5a+Y5a+Z5bCf5bCz5bWx5bWj5bWK5bWl5bWy5bWs5bWe5bWo5bWn5bWi5bew5bmP5bmO5bmK5bmN5bmL5buF5buM5buG5buL5buH5b2A5b6v5b6t5oO35oWJ5oWK5oSr5oWF5oS25oSy5oSu5oWG5oSv5oWP5oSp5oWA5oig6YWo5oij5oil5oik5o+F5o+x5o+r5pCQ5pCS5pCJ5pCg5pCkXCJdLFtcImRkYTFcIixcIuaQs+aRg+aQn+aQleaQmOaQueaQt+aQouaQo+aQjOaQpuaQsOaQqOaRgeaQteaQr+aQiuaQmuaRgOaQpeaQp+aQi+aPp+aQm+aQruaQoeaQjuaVr+aWkuaXk+aahuaajOaaleaakOaai+aaiuaameaalOaZuOacoOalpualn+akuOaljualoualseakv+alhealquakuealguall+almealuualiOalieaktealrOaks+akvealpeajsOaluOaktOalqealgOalr+alhOaltualmOalgealtOaljOaku+ali+akt+alnOalj+alkeaksualkuakr+alu+akvOathuatheatg+atguatiOatgeaum++ojeavu+avvFwiXSxbXCJkZTQwXCIsXCLmr7nmr7fmr7jmupvmu5bmu4jmuo/mu4Dmup/mupPmupTmuqDmurHmurnmu4bmu5Lmur3mu4Hmup7mu4nmurfmurDmu43muqbmu4/murLmur7mu4Pmu5zmu5jmupnmupLmuo7muo3muqTmuqHmur/murPmu5Dmu4rmupfmuq7muqPnhYfnhZTnhZLnhaPnhaDnhYHnhZ3nhaLnhbLnhbjnharnhaHnhYLnhZjnhYPnhYvnhbDnhZ/nhZDnhZNcIl0sW1wiZGVhMVwiLFwi54WE54WN54Wa54mP54qN54qM54qR54qQ54qO54y8542C54y754y6542A542K542J55GE55GK55GL55GS55GR55GX55GA55GP55GQ55GO55GC55GG55GN55GU55Oh55O/55O+55O955Sd55W555W35qaD55ev55iP55iD55e355e+55e855e555e455iQ55e755e255et55e155e955qZ55q155ud552V552f552g552S552W552a552p552n552U552Z552t55+g56KH56Ka56KU56KP56KE56KV56KF56KG56Kh56KD56G556KZ56KA56KW56G756W856aC56W956W556iR56iY56iZ56iS56iX56iV56ii56iTXCJdLFtcImRmNDBcIixcIueom+eokOeqo+eqoueqnuerq+etpuetpOetreettOetqeetsuetpeets+etseetsOetoeetuOettueto+eysueytOeyr+e2iOe2hue2gOe2jee1v+e2hee1uue2jue1u+e2g+e1vOe2jOe2lOe2hOe1vee2kue9ree9q+e9p+e9qOe9rOe+pue+pee+p+e/m+e/nOiAoeiFpOiFoOiFt+iFnOiFqeiFm+iFouiFsuacoeiFnuiFtuiFp+iFr1wiXSxbXCJkZmExXCIsXCLohYTohaHoiJ3oiYnoiYToiYDoiYLoiYXok7HokL/okZbokbbokbnoko/oko3okaXokZHokYDokobokafokLDokY3okb3okZrokZnokbTokbPokZ3olIfokZ7okLfokLrokLTokbrokYPokbjokLLokYXokKnoj5nokYvokK/okYLokK3okZ/okbDokLnokY7okYzokZLoka/ok4Xoko7okLvokYfokLbokLPokajokb7okYTokKvokaDokZToka7okZDonIvonITom7fonIzom7rom5bom7XonY3om7jonI7onInonIHom7bonI3onIXoo5boo4voo43oo47oo57oo5voo5roo4zoo5DopoXoppvop5/op6Xop6RcIl0sW1wiZTA0MFwiLFwi6Keh6Keg6Kei6Kec6Kem6Km26KqG6Km/6Kmh6Ki/6Km36KqC6KqE6Km16KqD6KqB6Km06Km66LC86LGL6LGK6LGl6LGk6LGm6LKG6LKE6LKF6LOM6LWo6LWp6LaR6LaM6LaO6LaP6LaN6LaT6LaU6LaQ6LaS6Lew6Leg6Les6Lex6Leu6LeQ6Lep6Lej6Lei6Len6Ley6Ler6Le06LyG6Lu/6LyB6LyA6LyF6LyH6LyI6LyC6LyL6YGS6YC/XCJdLFtcImUwYTFcIixcIumBhOmBiemAvemEkOmEjemEj+mEkemElumElOmEi+mEjumFrumFr+mJiOmJkumIsOmIuumJpumIs+mJpemJnumKg+mIrumJiumJhumJremJrOmJj+mJoOmJp+mJr+mItumJoemJsOmIsemJlOmJo+mJkOmJsumJjumJk+mJjOmJlumIsumWn+mWnOmWnumWm+makumak+makemal+mbjumbuumbvembuOmbtemds+mdt+mduOmdsumgj+mgjemgjumirOmjtumjuemmr+mmsummsOmmtemqremqq+mtm+mzqumzremzp+m6gOm7veWDpuWDlOWDl+WDqOWDs+WDm+WDquWDneWDpOWDk+WDrOWDsOWDr+WDo+WDoFwiXSxbXCJlMTQwXCIsXCLlh5jlioDlioHli6nli6vljLDljqzlmKflmJXlmIzlmJLll7zlmI/lmJzlmIHlmJPlmILll7rlmJ3lmITll7/ll7nloonlobzlopDlopjlooblooHlob/lobTloovlobrlooflopHloo7lobblooLloojlobvlopTloo/lo77lpavlq5zlq67lq6Xlq5Xlq6rlq5rlq63lq6vlq7Plq6Llq6Dlq5vlq6zlq57lq53lq5nlq6jlq5/lrbflr6BcIl0sW1wiZTFhMVwiLFwi5a+j5bGj5baC5baA5bW95baG5bW65baB5bW35baK5baJ5baI5bW+5bW85baN5bW55bW/5bmY5bmZ5bmT5buY5buR5buX5buO5buc5buV5buZ5buS5buU5b2E5b2D5b2v5b625oSs5oSo5oWB5oWe5oWx5oWz5oWS5oWT5oWy5oWs5oaA5oW05oWU5oW65oWb5oWl5oS75oWq5oWh5oWW5oip5oin5oir5pCr5pGN5pGb5pGd5pG05pG25pGy5pGz5pG95pG15pGm5pKm5pGO5pKC5pGe5pGc5pGL5pGT5pGg5pGQ5pG/5pC/5pGs5pGr5pGZ5pGl5pG35pWz5pag5pqh5pqg5pqf5pyF5pyE5pyi5qax5qa25qeJXCJdLFtcImUyNDBcIixcIuamoOanjuamluamsOamrOamvOamkeammeamjuamp+amjeamqeamvuamr+amv+anhOamveampOanlOamueaniuammuanj+ams+amk+amquamoeamnuanmeaml+amkOanguamteampeanhuatiuatjeati+aunuaun+auoOavg+avhOavvua7jua7tea7sea8g+a8pea7uOa8t+a7u+a8rua8iea9jua8mea8mua8p+a8mOa8u+a8kua7rea8ilwiXSxbXCJlMmExXCIsXCLmvLbmvbPmu7nmu67mvK3mvYDmvLDmvLzmvLXmu6vmvIfmvI7mvYPmvIXmu73mu7bmvLnmvJzmu7zmvLrmvJ/mvI3mvJ7mvIjmvKHnhofnhpDnhonnhoDnhoXnhoLnho/nhbvnhobnhoHnhpfniYTniZPnipfnipXnipPnjYPnjY3njZHnjYznkaLnkbPnkbHnkbXnkbLnkafnka7nlIDnlILnlIPnlb3nlpDnmJbnmIjnmIznmJXnmJHnmIrnmJTnmrjnnoHnnbznnoXnnoLnna7nnoDnna/nnb7nnoPnorLnoqrnorTnoq3noqjnob7noqvnop7noqXnoqDnoqznoqLnoqTnppjnpornpovnppbnppXnppTnppNcIl0sW1wiZTM0MFwiLFwi56aX56aI56aS56aQ56ir56mK56iw56iv56io56im56qo56qr56qs56uu566I566c566K566R566Q566W566N566M566b566O566F566Y5YqE566Z566k566C57K757K/57K857K657an57a357eC57aj57aq57eB57eA57eF57ad57eO57eE57eG57eL57eM57av57a557aW57a857af57am57au57ap57ah57eJ572z57+i57+j57+l57+eXCJdLFtcImUzYTFcIixcIuiApOiBneiBnOiGieiGhuiGg+iGh+iGjeiGjOiGi+iIleiSl+iSpOiSoeiSn+iSuuiTjuiTguiSrOiSruiSq+iSueiStOiTgeiTjeiSquiSmuiSseiTkOiSneiSp+iSu+iSouiSlOiTh+iTjOiSm+iSqeiSr+iSqOiTluiSmOiStuiTj+iSoOiTl+iTlOiTkuiTm+iSsOiSkeiZoeics+ico+icqOidq+idgOicruicnuicoeicmeicm+idg+icrOidgeicvuidhuicoOicsuicquicreicvOickuicuuicseicteidguicpuicp+icuOicpOicmuicsOickeijt+ijp+ijseijsuijuuijvuijruijvOijtuiju1wiXSxbXCJlNDQwXCIsXCLoo7Doo6zoo6vopp3opqHopp/opp7op6nop6vop6joqqvoqpnoqovoqpLoqo/oqpbosL3osajosanos5Xos4/os5fotpbouInouILot7/ouI3ot73ouIrouIPouIfouIbouIXot77ouIDouITovJDovJHovI7ovI3phKPphJzphKDphKLphJ/phJ3phJrphKTphKHphJvphbrphbLphbnphbPpiqXpiqTpibbpipvpibrpiqDpipTpiqrpio1cIl0sW1wiZTRhMVwiLFwi6Yqm6Yqa6Yqr6Ym56YqX6Ym/6Yqj6Yuu6YqO6YqC6YqV6Yqi6Ym96YqI6Yqh6YqK6YqG6YqM6YqZ6Yqn6Ym+6YqH6Yqp6Yqd6YqL6Yit6Zqe6Zqh6Zu/6Z2Y6Z296Z266Z2+6Z6D6Z6A6Z6C6Z276Z6E6Z6B6Z2/6Z+O6Z+N6aCW6aKt6aKu6aSC6aSA6aSH6aad6aac6aeD6aa56aa76aa66aeC6aa96aeH6aqx6auj6aun6ay+6ay/6a2g6a2h6a2f6bOx6bOy6bO16bqn5YO/5YSD5YSw5YO45YSG5YSH5YO25YO+5YSL5YSM5YO95YSK5YqL5YqM5Yux5Yuv5ZmI5ZmC5ZmM5Zi15ZmB5ZmK5ZmJ5ZmG5ZmYXCJdLFtcImU1NDBcIixcIuWZmuWZgOWYs+WYveWYrOWYvuWYuOWYquWYuuWcmuWiq+WineWiseWioOWio+Wir+WirOWipeWioeWjv+Wrv+WrtOWrveWrt+WrtuWsg+WruOWsguWrueWsgeWsh+WsheWsj+Wxp+W2meW2l+W2n+W2kuW2ouW2k+W2leW2oOW2nOW2oeW2muW2nuW5qeW5neW5oOW5nOe3s+W7m+W7nuW7oeW9ieW+suaGi+aGg+aFueaGseaGsOaGouaGiVwiXSxbXCJlNWExXCIsXCLmhpvmhpPmhq/mhq3mhp/mhpLmhqrmhqHmho3mhabmhrPmiK3mka7mkbDmkpbmkqDmkoXmkpfmkpzmko/mkovmkormkozmkqPmkp/mkajmkrHmkpjmlbbmlbrmlbnmlbvmlrLmlrPmmrXmmrDmmqnmmrLmmrfmmqrmmq/mqIDmqIbmqJfmp6Xmp7jmqJXmp7Hmp6TmqKDmp7/mp6zmp6LmqJvmqJ3mp77mqKfmp7Lmp67mqJTmp7fmp6fmqYDmqIjmp6bmp7vmqI3mp7zmp6vmqInmqITmqJjmqKXmqI/mp7bmqKbmqIfmp7TmqJbmrZHmrqXmrqPmrqLmrqbmsIHmsIDmr7/msILmvYHmvKbmvb7mvofmv4bmvpJcIl0sW1wiZTY0MFwiLFwi5r6N5r6J5r6M5r2i5r2P5r6F5r2a5r6W5r225r2s5r6C5r2V5r2y5r2S5r2Q5r2X5r6U5r6T5r2d5ryA5r2h5r2r5r295r2n5r6Q5r2T5r6L5r2p5r2/5r6V5r2j5r235r2q5r2754ay54av54ab54aw54ag54aa54ap54a154ad54al54ae54ak54ah54aq54ac54an54az54qY54qa542Y542S542e542f542g542d542b542h542a542ZXCJdLFtcImU2YTFcIixcIueNoueSh+eSieeSiueShueSgeeRveeSheeSiOeRvOeRueeUiOeUh+eVvueYpeeYnueYmeeYneeYnOeYo+eYmueYqOeYm+eanOeaneeanueam+eejeeej+eeieeeiOejjeeiu+ejj+ejjOejkeejjuejlOejiOejg+ejhOejieemmuemoeemoOemnOemouemm+attueoueeqsueqtOeqs+eut+evi+euvueurOevjueur+euueeviueuteezheeziOezjOezi+e3t+e3m+e3que3p+e3l+e3oee4g+e3uue3pue3tue3see3sOe3rue3n+e9tue+rOe+sOe+ree/ree/q+e/que/rOe/pue/qOiBpOiBp+iGo+iGn1wiXSxbXCJlNzQwXCIsXCLohp7ohpXohqLohpnohpfoiJboiY/oiZPoiZLoiZDoiY7oiZHolKTolLvolI/olIDolKnolI7olInolI3olJ/olIrolKfolJzok7volKvok7rolIjolIzok7TolKrok7LolJXok7fok6vok7Pok7zolJLok6rok6nolJbok77olKjolJ3olK7olILok73olJ7ok7bolLHolKbok6fok6jok7Dok6/ok7nolJjolKDolLDolIvolJnolK/omaJcIl0sW1wiZTdhMVwiLFwi6J2W6J2j6J2k6J236J+h6J2z6J2Y6J2U6J2b6J2S6J2h6J2a6J2R6J2e6J2t6J2q6J2Q6J2O6J2f6J2d6J2v6J2s6J266J2u6J2c6J2l6J2P6J276J216J2i6J2n6J2p6KGa6KSF6KSM6KSU6KSL6KSX6KSY6KSZ6KSG6KSW6KSR6KSO6KSJ6Kai6Kak6Kaj6Ket6Kew6Kes6KuP6KuG6Kq46KuT6KuR6KuU6KuV6Kq76KuX6Kq+6KuA6KuF6KuY6KuD6Kq66Kq96KuZ6LC+6LGN6LKP6LOl6LOf6LOZ6LOo6LOa6LOd6LOn6Lag6Lac6Lah6Lab6Lig6Lij6Lil6Lik6Liu6LiV6Lib6LiW6LiR6LiZ6Lim6LinXCJdLFtcImU4NDBcIixcIui4lOi4kui4mOi4k+i4nOi4l+i4mui8rOi8pOi8mOi8mui8oOi8o+i8lui8l+mBs+mBsOmBr+mBp+mBq+mEr+mEq+mEqemEqumEsumEpumErumGhemGhumGiumGgemGgumGhOmGgOmLkOmLg+mLhOmLgOmLmemKtumLj+mLsemLn+mLmOmLqemLl+mLnemLjOmLr+mLgumLqOmLiumLiOmLjumLpumLjemLlemLiemLoOmLnumLp+mLkemLk1wiXSxbXCJlOGExXCIsXCLpirXpi6Hpi4bpirTplbzplqzplqvplq7plrDpmqTpmqLpm5PpnIXpnIjpnILpnZrpnorpno7pnojpn5Dpn4/poJ7poJ3poKbpoKnpoKjpoKDpoJvpoKfporLppIjpo7rppJHppJTppJbppJfppJXpp5zpp43pp4/pp5Ppp5Tpp47pp4npp5bpp5jpp4vpp5fpp4zpqrPpq6zpq6vpq7Ppq7Lpq7HprYbprYPprafprbTprbHprabprbbprbXprbDprajpraTprazps7zps7rps73ps7/ps7fptIfptIDps7nps7vptIjptIXptITpuoPpu5PpvI/pvJDlhJzlhJPlhJflhJrlhJHlh57ljLTlj6HlmbDlmaDlma5cIl0sW1wiZTk0MFwiLFwi5Zmz5Zmm5Zmj5Zmt5Zmy5Zme5Zm35Zyc5Zyb5aOI5aK95aOJ5aK/5aK65aOC5aK85aOG5ayX5ayZ5ayb5ayh5ayU5ayT5ayQ5ayW5ayo5aya5ayg5aye5a+v5bas5bax5bap5ban5ba15baw5bau5baq5bao5bay5bat5bav5ba05bmn5bmo5bmm5bmv5bup5bun5bum5buo5bul5b2L5b685oad5oao5oaW5oeF5oa05oeG5oeB5oeM5oa6XCJdLFtcImU5YTFcIixcIuaGv+aGuOaGjOaTl+aTluaTkOaTj+aTieaSveaSieaTg+aTm+aTs+aTmeaUs+aVv+aVvOaWouabiOaavuabgOabiuabi+abj+aaveaau+aauuabjOaco+aotOappuapieapp+aosuapqOaovuapneapreaptuapm+apkeaoqOapmuaou+aov+apgeapquappOapkOapj+aplOapr+apqeapoOaovOapnuapluapleapjeapjuaphuatleatlOatluaup+auquauq+aviOavh+awhOawg+awhua+rea/i+a+o+a/h+a+vOa/jua/iOa9nua/hOa+vea+nua/iua+qOeAhOa+pea+rua+uua+rOa+qua/j+a+v+a+uFwiXSxbXCJlYTQwXCIsXCLmvqLmv4nmvqvmv43mvq/mvrLmvrDnh4Xnh4Lnhr/nhrjnh5bnh4Dnh4Hnh4vnh5Tnh4rnh4fnh4/nhr3nh5jnhrznh4bnh5rnh5vnip3nip7njannjabnjafnjaznjaXnjavnjarnkb/nkprnkqDnkpTnkpLnkpXnkqHnlIvnloDnmK/nmK3nmLHnmL3nmLPnmLznmLXnmLLnmLDnmrvnm6bnnprnnp3nnqHnnpznnpvnnqLnnqPnnpXnnplcIl0sW1wiZWFhMVwiLFwi556X56Od56Op56Ol56Oq56Oe56Oj56Ob56Oh56Oi56Ot56Of56Og56ak56mE56mI56mH56q256q456q156qx56q356+e56+j56+n56+d56+V56+l56+a56+o56+556+U56+q56+i56+c56+r56+Y56+f57OS57OU57OX57OQ57OR57iS57ih57iX57iM57if57ig57iT57iO57ic57iV57ia57ii57iL57iP57iW57iN57iU57il57ik572D572757285726576x57+v6ICq6ICp6IGs6Iax6Iam6Iau6Ia56Ia16Iar6Iaw6Ias6Ia06Iay6Ia36Ian6Iey6ImV6ImW6ImX6JWW6JWF6JWr6JWN6JWT6JWh6JWYXCJdLFtcImViNDBcIixcIuiVgOiVhuiVpOiVgeiVouiVhOiVkeiVh+iVo+iUvuiVm+iVseiVjuiVruiVteiVleiVp+iVoOiWjOiVpuiVneiVlOiVpeiVrOiZo+iZpeiZpOiem+iej+iel+iek+iekuieiOiegeieluiemOidueieh+ieo+ieheiekOiekeieneiehOielOienOiemuieieiknuikpuiksOikreikruikp+ikseikouikqeiko+ikr+ikrOikn+inseiroFwiXSxbXCJlYmExXCIsXCLoq6Loq7Loq7Toq7Xoq53orJToq6Toq5/oq7Doq4joq57oq6Hoq6joq7/oq6/oq7vospHospLospDos7Xos67os7Hos7Dos7Potazota7otqXotqfouLPouL7ouLjouYDouYXouLbouLzouL3ouYHouLDouL/our3ovLbovK7ovLXovLLovLnovLfovLTpgbbpgbnpgbvpgobpg7rphLPphLXphLbphpPphpDphpHpho3pho/pjKfpjJ7pjIjpjJ/pjIbpjI/pjbrpjLjpjLzpjJvpjKPpjJLpjIHpjYbpjK3pjI7pjI3pi4vpjJ3pi7rpjKXpjJPpi7npi7fpjLTpjILpjKTpi7/pjKnpjLnpjLXpjKrpjJTpjIxcIl0sW1wiZWM0MFwiLFwi6YyL6Yu+6YyJ6YyA6Yu76YyW6Za86ZeN6Za+6Za56Za66Za26Za/6Za16Za96Zqp6ZuU6ZyL6ZyS6ZyQ6Z6Z6Z6X6Z6U6Z+w6Z+46aC16aCv6aCy6aSk6aSf6aSn6aSp6aae6aeu6aes6ael6aek6aew6aej6aeq6aep6aen6aq56aq/6aq06aq76au26au66au56au36ayz6a6A6a6F6a6H6a286a2+6a276a6C6a6T6a6S6a6Q6a266a6VXCJdLFtcImVjYTFcIixcIumtvemuiOm0pem0l+m0oOm0num0lOm0qem0nem0mOm0oum0kOm0mem0n+m6iOm6hum6h+m6rum6rem7lem7lum7uum8kum8veWEpuWEpeWEouWEpOWEoOWEqeWLtOWak+WajOWajeWahuWahOWag+WZvuWaguWZv+WageWjluWjlOWjj+WjkuWsreWspeWssuWso+WsrOWsp+WspuWsr+WsruWtu+WvseWvsuW2t+W5rOW5quW+vuW+u+aHg+aGteaGvOaHp+aHoOaHpeaHpOaHqOaHnuaTr+aTqeaTo+aTq+aTpOaTqOaWgeaWgOaWtuaXmuabkuaqjeaqluaqgeaqpeaqieaqn+aqm+aqoeaqnuaqh+aqk+aqjlwiXSxbXCJlZDQwXCIsXCLmqpXmqoPmqqjmqqTmqpHmqb/mqqbmqprmqoXmqozmqpLmrZvmrq3msInmv4zmvqnmv7Tmv5Tmv6Pmv5zmv63mv6fmv6bmv57mv7Lmv53mv6Lmv6jnh6Hnh7Hnh6jnh7Lnh6Tnh7Dnh6LnjbPnja7nja/nkpfnkrLnkqvnkpDnkqrnkq3nkrHnkqXnkq/nlJDnlJHnlJLnlI/nloTnmYPnmYjnmYnnmYfnmqTnm6nnnrXnnqvnnrLnnrfnnrZcIl0sW1wiZWRhMVwiLFwi5560556x556o55+w56Oz56O956SC56O756O856Oy56SF56O556O+56SE56ar56ao56mc56mb56mW56mY56mU56ma56q+56uA56uB57CF57CP56+y57CA56+/56+757CO56+057CL56+z57CC57CJ57CD57CB56+456+957CG56+w56+x57CQ57CK57Oo57it57i857mC57iz6aGI57i457iq57mJ57mA57mH57ip57mM57iw57i757i257mE57i6572F572/572+572957+057+y6ICs6Ia76IeE6IeM6IeK6IeF6IeH6Ia86Iep6Imb6Ima6Imc6JaD6JaA6JaP6Jan6JaV6Jag6JaL6Jaj6JW76Jak6Jaa6JaeXCJdLFtcImVlNDBcIixcIuiVt+iVvOiWieiWoeiVuuiVuOiVl+iWjuiWluiWhuiWjeiWmeiWneiWgeiWouiWguiWiOiWheiVueiVtuiWmOiWkOiWn+iZqOievuiequiereifheiesOierOieueieteievOieruifieifg+ifguifjOiet+ier+ifhOifiuietOietuiev+ieuOieveifnuiesuikteiks+ikvOikvuilgeilkuikt+ilguimreimr+imruinsuins+isnlwiXSxbXCJlZWExXCIsXCLorJjorJborJHorIXorIvorKLorI/orJLorJXorIforI3orIjorIborJzorJPorJrosY/osbDosbLosbHosa/ospXospTos7nota/ouY7ouY3ouZPouZDouYzouYfovYPovYDpgoXpgb7phLjphprphqLphpvphpnphp/phqHphp3phqDpjqHpjoPpjq/pjaTpjZbpjYfpjbzpjZjpjZzpjbbpjYnpjZDpjZHpjaDpja3pjo/pjYzpjarpjbnpjZfpjZXpjZLpjY/pjbHpjbfpjbvpjaHpjZ7pjaPpjafpjoDpjY7pjZnpl4fpl4Dpl4npl4Ppl4Xplrfpmq7pmrDpmqzpnKDpnJ/pnJjpnJ3pnJnpnprpnqHpnpxcIl0sW1wiZWY0MFwiLFwi6Z6e6Z6d6Z+V6Z+U6Z+x6aGB6aGE6aGK6aGJ6aGF6aGD6aSl6aSr6aSs6aSq6aSz6aSy6aSv6aSt6aSx6aSw6aaY6aaj6aah6aiC6ae66ae06ae36ae56ae46ae26ae76ae96ae+6ae86aiD6aq+6au+6au96ayB6au86a2I6a6a6a6o6a6e6a6b6a6m6a6h6a6l6a6k6a6G6a6i6a6g6a6v6bSz6bWB6bWn6bS26bSu6bSv6bSx6bS46bSwXCJdLFtcImVmYTFcIixcIum1hem1gum1g+m0vum0t+m1gOm0vee/tem0rem6ium6iem6jem6sOm7iOm7mum7u+m7v+m8pOm8o+m8oum9lOm+oOWEseWEreWEruWamOWanOWal+WamuWaneWameWlsOWsvOWxqeWxquW3gOW5reW5ruaHmOaHn+aHreaHruaHseaHquaHsOaHq+aHluaHqeaTv+aUhOaTveaTuOaUgeaUg+aTvOaWlOaXm+abmuabm+abmOarheaqueaqvearoearhuaquuaqtuaqt+arh+aqtOaqreatnuavieawi+eAh+eAjOeAjeeAgeeAheeAlOeAjua/v+eAgOa/u+eApua/vOa/t+eAiueIgeeHv+eHueeIg+eHveeNtlwiXSxbXCJmMDQwXCIsXCLnkrjnk4DnkrXnk4Hnkr7nkrbnkrvnk4LnlJTnlJPnmZznmaTnmZnnmZDnmZPnmZfnmZrnmqbnmr3nm6znn4Lnnrrno7/npIznpJPnpJTnpInnpJDnpJLnpJHnpq3npqznqZ/nsJznsKnnsJnnsKDnsJ/nsK3nsJ3nsKbnsKjnsKLnsKXnsLDnuZznuZDnuZbnuaPnuZjnuaLnuZ/nuZHnuaDnuZfnuZPnvrXnvrPnv7fnv7jogbXoh5Hoh5JcIl0sW1wiZjBhMVwiLFwi6IeQ6Imf6Ime6Ja06JeG6JeA6JeD6JeC6Jaz6Ja16Ja96JeH6JeE6Ja/6JeL6JeO6JeI6JeF6Jax6Ja26JeS6Jik6Ja46Ja36Ja+6Jmp6J+n6J+m6J+i6J+b6J+r6J+q6J+l6J+f6J+z6J+k6J+U6J+c6J+T6J+t6J+Y6J+j6J6k6J+X6J+Z6KCB6J+06J+o6J+d6KWT6KWL6KWP6KWM6KWG6KWQ6KWR6KWJ6Kyq6Kyn6Kyj6Kyz6Kyw6Ky16K2H6Kyv6Ky86Ky+6Kyx6Kyl6Ky36Kym6Ky26Kyu6Kyk6Ky76Ky96Ky66LGC6LG16LKZ6LKY6LKX6LO+6LSE6LSC6LSA6Lmc6Lmi6Lmg6LmX6LmW6Lme6Lml6LmnXCJdLFtcImYxNDBcIixcIui5m+i5mui5oei5nei5qei5lOi9hui9h+i9iOi9i+mEqOmEuumEu+mEvumGqOmGpemGp+mGr+mGqumOtemOjOmOkumOt+mOm+mOnemOiemOp+mOjumOqumOnumOpumOlemOiOmOmemOn+mOjemOsemOkemOsumOpOmOqOmOtOmOo+mOpemXkumXk+mXkemas+mbl+mbmuW3gumbn+mbmOmbnemco+mcoumcpemerOmerumeqOmeq+mepOmeqlwiXSxbXCJmMWExXCIsXCLpnqLpnqXpn5fpn5npn5bpn5jpn7rpoZDpoZHpoZLporjppYHppLzppLrpqI/pqIvpqInpqI3pqITpqJHpqIrpqIXpqIfpqIbpq4Dpq5zprIjprITprIXprKnprLXprYrprYzprYvpr4fpr4bpr4Pprr/pr4HprrXprrjpr5Pprrbpr4Tprrnprr3ptZzptZPptY/ptYrptZvptYvptZnptZbptYzptZfptZLptZTptZ/ptZjptZrpuo7puozpu5/pvIHpvIDpvJbpvKXpvKvpvKrpvKnpvKjpvYzpvZXlhLTlhLXlipbli7fljrTlmqvlmq3lmqblmqflmqrlmqzlo5rlo53lo5vlpJLlrL3lrL7lrL/lt4PlubBcIl0sW1wiZjI0MFwiLFwi5b6/5oe75pSH5pSQ5pSN5pSJ5pSM5pSO5paE5pee5ped5pue5qun5qug5quM5quR5quZ5quL5quf5quc5quQ5qur5quP5quN5que5q2g5q6w5rCM54CZ54Cn54Cg54CW54Cr54Ch54Ci54Cj54Cp54CX54Ck54Cc54Cq54iM54iK54iH54iC54iF54ql54qm54qk54qj54qh55OL55OF55K355OD55SW55mg55+J55+K55+E55+x56Sd56SbXCJdLFtcImYyYTFcIixcIuekoeeknOekl+eknuemsOepp+epqOews+ewvOewueewrOewu+ezrOezque5tue5tee5uOe5sOe5t+e5r+e5uue5sue5tOe5qOe9i+e9iue+g+e+hue+t+e/vee/vuiBuOiHl+iHleiJpOiJoeiJo+iXq+iXseiXreiXmeiXoeiXqOiXmuiXl+iXrOiXsuiXuOiXmOiXn+iXo+iXnOiXkeiXsOiXpuiXr+iXnuiXouiggOifuuigg+iftuift+igieigjOigi+ighuifvOigiOifv+igiuigguilouilmuilm+ill+iloeilnOilmOilneilmeimiOimt+imtuintuitkOitiOitiuitgOitk+itluitlOiti+itlVwiXSxbXCJmMzQwXCIsXCLorZHorYLorZLorZfosYPosbfosbbosprotIbotIfotInotqzotqrotq3otqvoua3oubjoubPouaroua/oubvou4LovZLovZHovY/ovZDovZPovrTphYDphL/phrDphq3pj57pj4fpj4/pj4Lpj5rpj5Dpj7npj6zpj4zpj5npjqnpj6bpj4rpj5Tpj67pj6Ppj5Xpj4Tpj47pj4Dpj5Lpj6fplb3pl5rpl5vpm6HpnKnpnKvpnKzpnKjpnKZcIl0sW1wiZjNhMVwiLFwi6Z6z6Z636Z626Z+d6Z+e6Z+f6aGc6aGZ6aGd6aGX6aK/6aK96aK76aK+6aWI6aWH6aWD6aam6aan6aia6aiV6ail6aid6aik6aib6aii6aig6ain6aij6aie6aic6aiU6auC6ayL6ayK6ayO6ayM6ay36a+q6a+r6a+g6a+e6a+k6a+m6a+i6a+w6a+U6a+X6a+s6a+c6a+Z6a+l6a+V6a+h6a+a6bW36baB6baK6baE6baI6bWx6baA6bW46baG6baL6baM6bW96bWr6bW06bW16bWw6bWp6baF6bWz6bW76baC6bWv6bW56bW/6baH6bWo6bqU6bqR6buA6bu86byt6b2A6b2B6b2N6b2W6b2X6b2Y5Yy35ZqyXCJdLFtcImY0NDBcIixcIuWateWas+Wjo+WtheW3huW3h+W7ruW7r+W/gOW/geaHueaUl+aUluaUleaUk+aXn+abqOabo+abpOars+arsOarquarqOaruearsearruarr+eAvOeAteeAr+eAt+eAtOeAseeBgueAuOeAv+eAuueAueeBgOeAu+eAs+eBgeeIk+eIlOeKqOeNveeNvOeSuueaq+eaqueavuebreefjOefjuefj+efjeefsuekpeeko+ekp+ekqOekpOekqVwiXSxbXCJmNGExXCIsXCLnprLnqa7nqaznqa3nq7fnsYnnsYjnsYrnsYfnsYXns67nubvnub7nuoHnuoDnvrrnv7/ogbnoh5voh5noiIvoiajoianomKLol7/omIHol77omJvomIDol7bomITomInomIXomIzol73ooJnooJDooJHooJfooJPooJbopaPopaboprnop7foraDorarorZ3orajoraPoraXorafora3otq7ouobouojouoTovZnovZbovZfovZXovZjovZrpgo3phYPphYHphrfphrXphrLphrPpkIvpkJPpj7vpkKDpkI/pkJTpj77pkJXpkJDpkKjpkJnpkI3pj7XpkIDpj7fpkIfpkI7pkJbpkJLpj7rpkInpj7jpkIrpj79cIl0sW1wiZjU0MFwiLFwi6Y+86ZCM6Y+26ZCR6ZCG6Zee6Zeg6Zef6Zyu6Zyv6Z656Z676Z+96Z++6aGg6aGi6aGj6aGf6aOB6aOC6aWQ6aWO6aWZ6aWM6aWL6aWT6aiy6ai06aix6ais6aiq6ai26aip6aiu6ai46ait6auH6auK6auG6ayQ6ayS6ayR6bCL6bCI6a+36bCF6bCS6a+46bGA6bCH6bCO6bCG6bCX6bCU6bCJ6baf6baZ6bak6bad6baS6baY6baQ6babXCJdLFtcImY1YTFcIixcIum2oOm2lOm2nOm2qum2l+m2oem2mum2oum2qOm2num2o+m2v+m2qem2lum2pum2p+m6mem6m+m6mum7pem7pOm7p+m7pum8sOm8rum9m+m9oOm9num9nem9mem+keWEuuWEueWKmOWKl+Wbg+WaveWavuWtiOWth+W3i+W3j+W7seaHveaUm+asguarvOasg+aruOasgOeBg+eBhOeBiueBiOeBieeBheeBhueIneeImueImeeNvueUl+eZquefkOekreekseekr+exlOexk+ezsue6iue6h+e6iOe6i+e6hue6jee9jee+u+iAsOiHneiYmOiYquiYpuiYn+iYo+iYnOiYmeiYp+iYruiYoeiYoOiYqeiYnuiYpVwiXSxbXCJmNjQwXCIsXCLooKnooJ3ooJvooKDooKTooJzooKvooYropa3opanopa7opavop7rorbnorbjorYXorbrorbvotJDotJTotq/ouo7ouozovZ7ovZvovZ3phYbphYTphYXphrnpkL/pkLvpkLbpkKnpkL3pkLzpkLDpkLnpkKrpkLfpkKzpkYDpkLHpl6Xpl6Tpl6PpnLXpnLrpnr/pn6HpoaTpo4npo4bpo4DppZjppZbpqLnpqL3pqYbpqYTpqYLpqYHpqLpcIl0sW1wiZjZhMVwiLFwi6ai/6auN6ayV6ayX6ayY6ayW6ay66a2S6bCr6bCd6bCc6bCs6bCj6bCo6bCp6bCk6bCh6ba36ba26ba86beB6beH6beK6beP6ba+6beF6beD6ba76ba16beO6ba56ba66bas6beI6bax6bat6beM6baz6beN6bay6bm66bqc6bur6buu6but6byb6byY6bya6byx6b2O6b2l6b2k6b6S5Lq55ZuG5ZuF5ZuL5aWx5a2L5a2M5beV5beR5buy5pSh5pSg5pSm5pSi5qyL5qyI5qyJ5rCN54GV54GW54GX54GS54ie54if54qp542/55OY55OV55OZ55OX55mt55qt56S156a056mw56mx57GX57Gc57GZ57Gb57GaXCJdLFtcImY3NDBcIixcIueztOezsee6kee9j+e+h+iHnuiJq+iYtOiYteiYs+iYrOiYsuiYtuigrOigqOigpuigquigpeilseimv+imvuinu+itvuiuhOiuguiuhuiuheitv+i0lei6lei6lOi6mui6kui6kOi6lui6l+i9oOi9oumFh+mRjOmRkOmRiumRi+mRj+mRh+mRhemRiOmRiemRhumcv+mfo+mhqumhqemji+mllOmlm+mpjumpk+mplOmpjOmpj+mpiOmpilwiXSxbXCJmN2ExXCIsXCLpqYnpqZLpqZDpq5DprJnprKvprLvprZbprZXpsYbpsYjpsL/psYTpsLnpsLPpsYHpsLzpsLfpsLTpsLLpsL3psLbpt5vpt5Lpt57pt5rpt4vpt5Dpt5zpt5Hpt5/pt6npt5npt5jpt5bpt7Xpt5Xpt53purbpu7DpvLXpvLPpvLLpvYLpvavpvpXpvqLlhL3lipnlo6jlo6flpbLlrY3lt5jooK/lvY/miIHmiIPmiITmlKnmlKXmlpbmm6vmrJHmrJLmrI/mr4rngZvngZrniKLnjoLnjoHnjoPnmbDnn5TnsafnsabnupXoiazomLromYDomLnomLzomLHomLvomL7ooLDooLLooK7ooLPopbbopbTopbPop75cIl0sW1wiZjg0MFwiLFwi6K6M6K6O6K6L6K6I6LGF6LSZ6LqY6L2k6L2j6Ya86ZGi6ZGV6ZGd6ZGX6ZGe6Z+E6Z+F6aCA6amW6amZ6aye6ayf6ayg6bGS6bGY6bGQ6bGK6bGN6bGL6bGV6bGZ6bGM6bGO6be76be36bev6bej6ber6be46bek6be26beh6beu6bem6bey6bew6bei6bes6be06bez6beo6bet6buC6buQ6buy6buz6byG6byc6by46by36by26b2D6b2PXCJdLFtcImY4YTFcIixcIum9sem9sOm9rum9r+Wbk+WbjeWtjuWxreaUreabreabruask+eBn+eBoeeBneeBoOeIo+eTm+eTpeefleekuOemt+emtuexque6l+e+ieiJreiZg+iguOigt+igteihi+iulOiulei6nui6n+i6oOi6nemGvumGvemHgumRq+mRqOmRqembpemdhumdg+mdh+mfh+mfpempnumrlemtmemxo+mxp+mxpumxoumxnumxoOm4gum3vum4h+m4g+m4hum4hem4gOm4gem4iem3v+m3vem4hOm6oOm8num9hum9tOm9tem9tuWblOaUruaWuOasmOasmeasl+asmueBoueIpueKquefmOefmeekueexqeexq+eztue6mlwiXSxbXCJmOTQwXCIsXCLnupjnupvnupnoh6Doh6HomYbomYfomYjopbnopbropbzopbvop7/orpjorpnouqXouqTouqPpka7pka3pka/pkbHpkbPpnYnpobLppZ/psajpsa7psa3puIvpuI3puJDpuI/puJLpuJHpuqHpu7XpvInpvYfpvbjpvbvpvbrpvbnlnJ7ngabnsa/ooLzotrLouqbph4PpkbTpkbjpkbbpkbXpqaDpsbTpsbPpsbHpsbXpuJTpuJPpu7bpvIpcIl0sW1wiZjlhMVwiLFwi6b6k54Go54Gl57O36Jmq6KC+6KC96KC/6K6e6LKc6Lqp6LuJ6Z2L6aGz6aG06aOM6aWh6aar6amk6amm6amn6ayk6biV6biX6b2I5oiH5qye54in6JmM6Lqo6ZKC6ZKA6ZKB6amp6amo6ayu6biZ54ip6JmL6K6f6ZKD6bG56bq355m16amr6bG66bid54Gp54Gq6bqk6b2+6b2J6b6Y56KB6Yq56KOP5aK75oGS57Kn5au64pWU4pWm4pWX4pWg4pWs4pWj4pWa4pWp4pWd4pWS4pWk4pWV4pWe4pWq4pWh4pWY4pWn4pWb4pWT4pWl4pWW4pWf4pWr4pWi4pWZ4pWo4pWc4pWR4pWQ4pWt4pWu4pWw4pWv4paTXCJdXVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvY3A5NTAuanNvblxuLy8gbW9kdWxlIGlkID0gODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiB1bnBpcGVcbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVucGlwZVxuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGVyZSBhcmUgTm9kZS5qcyBwaXBlLWxpa2UgZGF0YSBsaXN0ZW5lcnMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGhhc1BpcGVEYXRhTGlzdGVuZXJzKHN0cmVhbSkge1xuICB2YXIgbGlzdGVuZXJzID0gc3RyZWFtLmxpc3RlbmVycygnZGF0YScpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobGlzdGVuZXJzW2ldLm5hbWUgPT09ICdvbmRhdGEnKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIFVucGlwZSBhIHN0cmVhbSBmcm9tIGFsbCBkZXN0aW5hdGlvbnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHN0cmVhbVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHVucGlwZShzdHJlYW0pIHtcbiAgaWYgKCFzdHJlYW0pIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBzdHJlYW0gaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBzdHJlYW0udW5waXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gbmV3LXN0eWxlXG4gICAgc3RyZWFtLnVucGlwZSgpXG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBOb2RlLmpzIDAuOCBoYWNrXG4gIGlmICghaGFzUGlwZURhdGFMaXN0ZW5lcnMoc3RyZWFtKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGxpc3RlbmVyXG4gIHZhciBsaXN0ZW5lcnMgPSBzdHJlYW0ubGlzdGVuZXJzKCdjbG9zZScpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICBsaXN0ZW5lciA9IGxpc3RlbmVyc1tpXVxuXG4gICAgaWYgKGxpc3RlbmVyLm5hbWUgIT09ICdjbGVhbnVwJyAmJiBsaXN0ZW5lci5uYW1lICE9PSAnb25jbG9zZScpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gaW52b2tlIHRoZSBsaXN0ZW5lclxuICAgIGxpc3RlbmVyLmNhbGwoc3RyZWFtKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvdW5waXBlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA4MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIG1pbWUtdHlwZXNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkYiA9IHJlcXVpcmUoJ21pbWUtZGInKVxudmFyIGV4dG5hbWUgPSByZXF1aXJlKCdwYXRoJykuZXh0bmFtZVxuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBFWFRSQUNUX1RZUEVfUkVHRVhQID0gL15cXHMqKFteO1xcc10qKSg/Ojt8XFxzfCQpL1xudmFyIFRFWFRfVFlQRV9SRUdFWFAgPSAvXnRleHRcXC8vaVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbmV4cG9ydHMuY2hhcnNldCA9IGNoYXJzZXRcbmV4cG9ydHMuY2hhcnNldHMgPSB7IGxvb2t1cDogY2hhcnNldCB9XG5leHBvcnRzLmNvbnRlbnRUeXBlID0gY29udGVudFR5cGVcbmV4cG9ydHMuZXh0ZW5zaW9uID0gZXh0ZW5zaW9uXG5leHBvcnRzLmV4dGVuc2lvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5leHBvcnRzLmxvb2t1cCA9IGxvb2t1cFxuZXhwb3J0cy50eXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuLy8gUG9wdWxhdGUgdGhlIGV4dGVuc2lvbnMvdHlwZXMgbWFwc1xucG9wdWxhdGVNYXBzKGV4cG9ydHMuZXh0ZW5zaW9ucywgZXhwb3J0cy50eXBlcylcblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgY2hhcnNldCBmb3IgYSBNSU1FIHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW58c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGNoYXJzZXQgKHR5cGUpIHtcbiAgaWYgKCF0eXBlIHx8IHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gVE9ETzogdXNlIG1lZGlhLXR5cGVyXG4gIHZhciBtYXRjaCA9IEVYVFJBQ1RfVFlQRV9SRUdFWFAuZXhlYyh0eXBlKVxuICB2YXIgbWltZSA9IG1hdGNoICYmIGRiW21hdGNoWzFdLnRvTG93ZXJDYXNlKCldXG5cbiAgaWYgKG1pbWUgJiYgbWltZS5jaGFyc2V0KSB7XG4gICAgcmV0dXJuIG1pbWUuY2hhcnNldFxuICB9XG5cbiAgLy8gZGVmYXVsdCB0ZXh0LyogdG8gdXRmLThcbiAgaWYgKG1hdGNoICYmIFRFWFRfVFlQRV9SRUdFWFAudGVzdChtYXRjaFsxXSkpIHtcbiAgICByZXR1cm4gJ1VURi04J1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZnVsbCBDb250ZW50LVR5cGUgaGVhZGVyIGdpdmVuIGEgTUlNRSB0eXBlIG9yIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtib29sZWFufHN0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBjb250ZW50VHlwZSAoc3RyKSB7XG4gIC8vIFRPRE86IHNob3VsZCB0aGlzIGV2ZW4gYmUgaW4gdGhpcyBtb2R1bGU/XG4gIGlmICghc3RyIHx8IHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB2YXIgbWltZSA9IHN0ci5pbmRleE9mKCcvJykgPT09IC0xXG4gICAgPyBleHBvcnRzLmxvb2t1cChzdHIpXG4gICAgOiBzdHJcblxuICBpZiAoIW1pbWUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBjb250ZW50LXR5cGUgb3Igb3RoZXIgbW9kdWxlXG4gIGlmIChtaW1lLmluZGV4T2YoJ2NoYXJzZXQnKSA9PT0gLTEpIHtcbiAgICB2YXIgY2hhcnNldCA9IGV4cG9ydHMuY2hhcnNldChtaW1lKVxuICAgIGlmIChjaGFyc2V0KSBtaW1lICs9ICc7IGNoYXJzZXQ9JyArIGNoYXJzZXQudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgcmV0dXJuIG1pbWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgZXh0ZW5zaW9uIGZvciBhIE1JTUUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gZXh0ZW5zaW9uICh0eXBlKSB7XG4gIGlmICghdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBtZWRpYS10eXBlclxuICB2YXIgbWF0Y2ggPSBFWFRSQUNUX1RZUEVfUkVHRVhQLmV4ZWModHlwZSlcblxuICAvLyBnZXQgZXh0ZW5zaW9uc1xuICB2YXIgZXh0cyA9IG1hdGNoICYmIGV4cG9ydHMuZXh0ZW5zaW9uc1ttYXRjaFsxXS50b0xvd2VyQ2FzZSgpXVxuXG4gIGlmICghZXh0cyB8fCAhZXh0cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHRzWzBdXG59XG5cbi8qKlxuICogTG9va3VwIHRoZSBNSU1FIHR5cGUgZm9yIGEgZmlsZSBwYXRoL2V4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gbG9va3VwIChwYXRoKSB7XG4gIGlmICghcGF0aCB8fCB0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIGdldCB0aGUgZXh0ZW5zaW9uIChcImV4dFwiIG9yIFwiLmV4dFwiIG9yIGZ1bGwgcGF0aClcbiAgdmFyIGV4dGVuc2lvbiA9IGV4dG5hbWUoJ3guJyArIHBhdGgpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAuc3Vic3RyKDEpXG5cbiAgaWYgKCFleHRlbnNpb24pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiBleHBvcnRzLnR5cGVzW2V4dGVuc2lvbl0gfHwgZmFsc2Vcbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSB0aGUgZXh0ZW5zaW9ucyBhbmQgdHlwZXMgbWFwcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcG9wdWxhdGVNYXBzIChleHRlbnNpb25zLCB0eXBlcykge1xuICAvLyBzb3VyY2UgcHJlZmVyZW5jZSAobGVhc3QgLT4gbW9zdClcbiAgdmFyIHByZWZlcmVuY2UgPSBbJ25naW54JywgJ2FwYWNoZScsIHVuZGVmaW5lZCwgJ2lhbmEnXVxuXG4gIE9iamVjdC5rZXlzKGRiKS5mb3JFYWNoKGZ1bmN0aW9uIGZvckVhY2hNaW1lVHlwZSAodHlwZSkge1xuICAgIHZhciBtaW1lID0gZGJbdHlwZV1cbiAgICB2YXIgZXh0cyA9IG1pbWUuZXh0ZW5zaW9uc1xuXG4gICAgaWYgKCFleHRzIHx8ICFleHRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gbWltZSAtPiBleHRlbnNpb25zXG4gICAgZXh0ZW5zaW9uc1t0eXBlXSA9IGV4dHNcblxuICAgIC8vIGV4dGVuc2lvbiAtPiBtaW1lXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZXh0ZW5zaW9uID0gZXh0c1tpXVxuXG4gICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSkge1xuICAgICAgICB2YXIgZnJvbSA9IHByZWZlcmVuY2UuaW5kZXhPZihkYlt0eXBlc1tleHRlbnNpb25dXS5zb3VyY2UpXG4gICAgICAgIHZhciB0byA9IHByZWZlcmVuY2UuaW5kZXhPZihtaW1lLnNvdXJjZSlcblxuICAgICAgICBpZiAodHlwZXNbZXh0ZW5zaW9uXSAhPT0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScgJiZcbiAgICAgICAgICAoZnJvbSA+IHRvIHx8IChmcm9tID09PSB0byAmJiB0eXBlc1tleHRlbnNpb25dLnN1YnN0cigwLCAxMikgPT09ICdhcHBsaWNhdGlvbi8nKSkpIHtcbiAgICAgICAgICAvLyBza2lwIHRoZSByZW1hcHBpbmdcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIHNldCB0aGUgZXh0ZW5zaW9uIC0+IG1pbWVcbiAgICAgIHR5cGVzW2V4dGVuc2lvbl0gPSB0eXBlXG4gICAgfVxuICB9KVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL21pbWUtdHlwZXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBoZXhUYWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgICAgICBhcnJheS5wdXNoKCclJyArICgoaSA8IDE2ID8gJzAnIDogJycpICsgaS50b1N0cmluZygxNikpLnRvVXBwZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBhcnJheTtcbn0oKSk7XG5cbnZhciBjb21wYWN0UXVldWUgPSBmdW5jdGlvbiBjb21wYWN0UXVldWUocXVldWUpIHtcbiAgICB2YXIgb2JqO1xuXG4gICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHF1ZXVlLnBvcCgpO1xuICAgICAgICBvYmogPSBpdGVtLm9ialtpdGVtLnByb3BdO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIHZhciBjb21wYWN0ZWQgPSBbXTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBvYmoubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9ialtqXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGFjdGVkLnB1c2gob2JqW2pdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW0ub2JqW2l0ZW0ucHJvcF0gPSBjb21wYWN0ZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2JqO1xufTtcblxuZXhwb3J0cy5hcnJheVRvT2JqZWN0ID0gZnVuY3Rpb24gYXJyYXlUb09iamVjdChzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICB2YXIgb2JqID0gb3B0aW9ucyAmJiBvcHRpb25zLnBsYWluT2JqZWN0cyA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVtpXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIG9ialtpXSA9IHNvdXJjZVtpXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG59O1xuXG5leHBvcnRzLm1lcmdlID0gZnVuY3Rpb24gbWVyZ2UodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpKSB7XG4gICAgICAgICAgICB0YXJnZXQucHVzaChzb3VyY2UpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5wbGFpbk9iamVjdHMgfHwgb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMgfHwgIWhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIHNvdXJjZSkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbc291cmNlXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3RhcmdldCwgc291cmNlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBbdGFyZ2V0XS5jb25jYXQoc291cmNlKTtcbiAgICB9XG5cbiAgICB2YXIgbWVyZ2VUYXJnZXQgPSB0YXJnZXQ7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiAhQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICAgIG1lcmdlVGFyZ2V0ID0gZXhwb3J0cy5hcnJheVRvT2JqZWN0KHRhcmdldCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgc291cmNlLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGkpIHtcbiAgICAgICAgICAgIGlmIChoYXMuY2FsbCh0YXJnZXQsIGkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFtpXSAmJiB0eXBlb2YgdGFyZ2V0W2ldID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRbaV0gPSBleHBvcnRzLm1lcmdlKHRhcmdldFtpXSwgaXRlbSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbaV0gPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywga2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuXG4gICAgICAgIGlmIChoYXMuY2FsbChhY2MsIGtleSkpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gZXhwb3J0cy5tZXJnZShhY2Nba2V5XSwgdmFsdWUsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIG1lcmdlVGFyZ2V0KTtcbn07XG5cbmV4cG9ydHMuYXNzaWduID0gZnVuY3Rpb24gYXNzaWduU2luZ2xlU291cmNlKHRhcmdldCwgc291cmNlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHNvdXJjZSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgICBhY2Nba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHRhcmdldCk7XG59O1xuXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHN0ci5yZXBsYWNlKC9cXCsvZywgJyAnKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbn07XG5cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0cikge1xuICAgIC8vIFRoaXMgY29kZSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEJyaWFuIFdoaXRlIChtc2NkZXgpIGZvciB0aGUgaW8uanMgY29yZSBxdWVyeXN0cmluZyBsaWJyYXJ5LlxuICAgIC8vIEl0IGhhcyBiZWVuIGFkYXB0ZWQgaGVyZSBmb3Igc3RyaWN0ZXIgYWRoZXJlbmNlIHRvIFJGQyAzOTg2XG4gICAgaWYgKHN0ci5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG5cbiAgICB2YXIgc3RyaW5nID0gdHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgPyBzdHIgOiBTdHJpbmcoc3RyKTtcblxuICAgIHZhciBvdXQgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGMgPT09IDB4MkQgLy8gLVxuICAgICAgICAgICAgfHwgYyA9PT0gMHgyRSAvLyAuXG4gICAgICAgICAgICB8fCBjID09PSAweDVGIC8vIF9cbiAgICAgICAgICAgIHx8IGMgPT09IDB4N0UgLy8gflxuICAgICAgICAgICAgfHwgKGMgPj0gMHgzMCAmJiBjIDw9IDB4MzkpIC8vIDAtOVxuICAgICAgICAgICAgfHwgKGMgPj0gMHg0MSAmJiBjIDw9IDB4NUEpIC8vIGEtelxuICAgICAgICAgICAgfHwgKGMgPj0gMHg2MSAmJiBjIDw9IDB4N0EpIC8vIEEtWlxuICAgICAgICApIHtcbiAgICAgICAgICAgIG91dCArPSBzdHJpbmcuY2hhckF0KGkpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgICAgICAgIG91dCA9IG91dCArIGhleFRhYmxlW2NdO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICAgICAgICBvdXQgPSBvdXQgKyAoaGV4VGFibGVbMHhDMCB8IChjID4+IDYpXSArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjIDwgMHhEODAwIHx8IGMgPj0gMHhFMDAwKSB7XG4gICAgICAgICAgICBvdXQgPSBvdXQgKyAoaGV4VGFibGVbMHhFMCB8IChjID4+IDEyKV0gKyBoZXhUYWJsZVsweDgwIHwgKChjID4+IDYpICYgMHgzRildICsgaGV4VGFibGVbMHg4MCB8IChjICYgMHgzRildKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaSArPSAxO1xuICAgICAgICBjID0gMHgxMDAwMCArICgoKGMgJiAweDNGRikgPDwgMTApIHwgKHN0cmluZy5jaGFyQ29kZUF0KGkpICYgMHgzRkYpKTtcbiAgICAgICAgb3V0ICs9IGhleFRhYmxlWzB4RjAgfCAoYyA+PiAxOCldXG4gICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoKGMgPj4gMTIpICYgMHgzRildXG4gICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoKGMgPj4gNikgJiAweDNGKV1cbiAgICAgICAgICAgICsgaGV4VGFibGVbMHg4MCB8IChjICYgMHgzRildO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59O1xuXG5leHBvcnRzLmNvbXBhY3QgPSBmdW5jdGlvbiBjb21wYWN0KHZhbHVlKSB7XG4gICAgdmFyIHF1ZXVlID0gW3sgb2JqOiB7IG86IHZhbHVlIH0sIHByb3A6ICdvJyB9XTtcbiAgICB2YXIgcmVmcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgaXRlbSA9IHF1ZXVlW2ldO1xuICAgICAgICB2YXIgb2JqID0gaXRlbS5vYmpbaXRlbS5wcm9wXTtcblxuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga2V5cy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbal07XG4gICAgICAgICAgICB2YXIgdmFsID0gb2JqW2tleV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsICE9PSBudWxsICYmIHJlZnMuaW5kZXhPZih2YWwpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2goeyBvYmo6IG9iaiwgcHJvcDoga2V5IH0pO1xuICAgICAgICAgICAgICAgIHJlZnMucHVzaCh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhY3RRdWV1ZShxdWV1ZSk7XG59O1xuXG5leHBvcnRzLmlzUmVnRXhwID0gZnVuY3Rpb24gaXNSZWdFeHAob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBSZWdFeHBdJztcbn07XG5cbmV4cG9ydHMuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlcihvYmopIHtcbiAgICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gISEob2JqLmNvbnN0cnVjdG9yICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlciAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIob2JqKSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi91dGlscy5qc1xuLy8gbW9kdWxlIGlkID0gODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVwbGFjZSA9IFN0cmluZy5wcm90b3R5cGUucmVwbGFjZTtcbnZhciBwZXJjZW50VHdlbnRpZXMgPSAvJTIwL2c7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgICdkZWZhdWx0JzogJ1JGQzM5ODYnLFxuICAgIGZvcm1hdHRlcnM6IHtcbiAgICAgICAgUkZDMTczODogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZS5jYWxsKHZhbHVlLCBwZXJjZW50VHdlbnRpZXMsICcrJyk7XG4gICAgICAgIH0sXG4gICAgICAgIFJGQzM5ODY6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBSRkMxNzM4OiAnUkZDMTczOCcsXG4gICAgUkZDMzk4NjogJ1JGQzM5ODYnXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9mb3JtYXRzLmpzXG4vLyBtb2R1bGUgaWQgPSA4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJxdWVyeXN0cmluZ1wiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcInF1ZXJ5c3RyaW5nXCJcbi8vIG1vZHVsZSBpZCA9IDg2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInVybFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcInVybFwiXG4vLyBtb2R1bGUgaWQgPSA4N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV4cHJlc3NcbiAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDEzIFJvbWFuIFNodHlsbWFuXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIFJvdXRlID0gcmVxdWlyZSgnLi9yb3V0ZScpO1xudmFyIExheWVyID0gcmVxdWlyZSgnLi9sYXllcicpO1xudmFyIG1ldGhvZHMgPSByZXF1aXJlKCdtZXRob2RzJyk7XG52YXIgbWl4aW4gPSByZXF1aXJlKCd1dGlscy1tZXJnZScpO1xudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnZXhwcmVzczpyb3V0ZXInKTtcbnZhciBkZXByZWNhdGUgPSByZXF1aXJlKCdkZXBkJykoJ2V4cHJlc3MnKTtcbnZhciBmbGF0dGVuID0gcmVxdWlyZSgnYXJyYXktZmxhdHRlbicpO1xudmFyIHBhcnNlVXJsID0gcmVxdWlyZSgncGFyc2V1cmwnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ3NldHByb3RvdHlwZW9mJylcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgb2JqZWN0UmVnRXhwID0gL15cXFtvYmplY3QgKFxcUyspXFxdJC87XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJvdXRlcmAgd2l0aCB0aGUgZ2l2ZW4gYG9wdGlvbnNgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtSb3V0ZXJ9IHdoaWNoIGlzIGFuIGNhbGxhYmxlIGZ1bmN0aW9uXG4gKiBAcHVibGljXG4gKi9cblxudmFyIHByb3RvID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fTtcblxuICBmdW5jdGlvbiByb3V0ZXIocmVxLCByZXMsIG5leHQpIHtcbiAgICByb3V0ZXIuaGFuZGxlKHJlcSwgcmVzLCBuZXh0KTtcbiAgfVxuXG4gIC8vIG1peGluIFJvdXRlciBjbGFzcyBmdW5jdGlvbnNcbiAgc2V0UHJvdG90eXBlT2Yocm91dGVyLCBwcm90bylcblxuICByb3V0ZXIucGFyYW1zID0ge307XG4gIHJvdXRlci5fcGFyYW1zID0gW107XG4gIHJvdXRlci5jYXNlU2Vuc2l0aXZlID0gb3B0cy5jYXNlU2Vuc2l0aXZlO1xuICByb3V0ZXIubWVyZ2VQYXJhbXMgPSBvcHRzLm1lcmdlUGFyYW1zO1xuICByb3V0ZXIuc3RyaWN0ID0gb3B0cy5zdHJpY3Q7XG4gIHJvdXRlci5zdGFjayA9IFtdO1xuXG4gIHJldHVybiByb3V0ZXI7XG59O1xuXG4vKipcbiAqIE1hcCB0aGUgZ2l2ZW4gcGFyYW0gcGxhY2Vob2xkZXIgYG5hbWVgKHMpIHRvIHRoZSBnaXZlbiBjYWxsYmFjay5cbiAqXG4gKiBQYXJhbWV0ZXIgbWFwcGluZyBpcyB1c2VkIHRvIHByb3ZpZGUgcHJlLWNvbmRpdGlvbnMgdG8gcm91dGVzXG4gKiB3aGljaCB1c2Ugbm9ybWFsaXplZCBwbGFjZWhvbGRlcnMuIEZvciBleGFtcGxlIGEgXzp1c2VyX2lkXyBwYXJhbWV0ZXJcbiAqIGNvdWxkIGF1dG9tYXRpY2FsbHkgbG9hZCBhIHVzZXIncyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBkYXRhYmFzZSB3aXRob3V0XG4gKiBhbnkgYWRkaXRpb25hbCBjb2RlLFxuICpcbiAqIFRoZSBjYWxsYmFjayB1c2VzIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBtaWRkbGV3YXJlLCB0aGUgb25seSBkaWZmZXJlbmNlXG4gKiBiZWluZyB0aGF0IHRoZSB2YWx1ZSBvZiB0aGUgcGxhY2Vob2xkZXIgaXMgcGFzc2VkLCBpbiB0aGlzIGNhc2UgdGhlIF9pZF9cbiAqIG9mIHRoZSB1c2VyLiBPbmNlIHRoZSBgbmV4dCgpYCBmdW5jdGlvbiBpcyBpbnZva2VkLCBqdXN0IGxpa2UgbWlkZGxld2FyZVxuICogaXQgd2lsbCBjb250aW51ZSBvbiB0byBleGVjdXRlIHRoZSByb3V0ZSwgb3Igc3Vic2VxdWVudCBwYXJhbWV0ZXIgZnVuY3Rpb25zLlxuICpcbiAqIEp1c3QgbGlrZSBpbiBtaWRkbGV3YXJlLCB5b3UgbXVzdCBlaXRoZXIgcmVzcG9uZCB0byB0aGUgcmVxdWVzdCBvciBjYWxsIG5leHRcbiAqIHRvIGF2b2lkIHN0YWxsaW5nIHRoZSByZXF1ZXN0LlxuICpcbiAqICBhcHAucGFyYW0oJ3VzZXJfaWQnLCBmdW5jdGlvbihyZXEsIHJlcywgbmV4dCwgaWQpe1xuICogICAgVXNlci5maW5kKGlkLCBmdW5jdGlvbihlcnIsIHVzZXIpe1xuICogICAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAqICAgICAgfSBlbHNlIGlmICghdXNlcikge1xuICogICAgICAgIHJldHVybiBuZXh0KG5ldyBFcnJvcignZmFpbGVkIHRvIGxvYWQgdXNlcicpKTtcbiAqICAgICAgfVxuICogICAgICByZXEudXNlciA9IHVzZXI7XG4gKiAgICAgIG5leHQoKTtcbiAqICAgIH0pO1xuICogIH0pO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHJldHVybiB7YXBwfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5wcm90by5wYXJhbSA9IGZ1bmN0aW9uIHBhcmFtKG5hbWUsIGZuKSB7XG4gIC8vIHBhcmFtIGxvZ2ljXG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlcHJlY2F0ZSgncm91dGVyLnBhcmFtKGZuKTogUmVmYWN0b3IgdG8gdXNlIHBhdGggcGFyYW1zJyk7XG4gICAgdGhpcy5fcGFyYW1zLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gYXBwbHkgcGFyYW0gZnVuY3Rpb25zXG4gIHZhciBwYXJhbXMgPSB0aGlzLl9wYXJhbXM7XG4gIHZhciBsZW4gPSBwYXJhbXMubGVuZ3RoO1xuICB2YXIgcmV0O1xuXG4gIGlmIChuYW1lWzBdID09PSAnOicpIHtcbiAgICBkZXByZWNhdGUoJ3JvdXRlci5wYXJhbSgnICsgSlNPTi5zdHJpbmdpZnkobmFtZSkgKyAnLCBmbik6IFVzZSByb3V0ZXIucGFyYW0oJyArIEpTT04uc3RyaW5naWZ5KG5hbWUuc3Vic3RyKDEpKSArICcsIGZuKSBpbnN0ZWFkJyk7XG4gICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEpO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChyZXQgPSBwYXJhbXNbaV0obmFtZSwgZm4pKSB7XG4gICAgICBmbiA9IHJldDtcbiAgICB9XG4gIH1cblxuICAvLyBlbnN1cmUgd2UgZW5kIHVwIHdpdGggYVxuICAvLyBtaWRkbGV3YXJlIGZ1bmN0aW9uXG4gIGlmICgnZnVuY3Rpb24nICE9PSB0eXBlb2YgZm4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcGFyYW0oKSBjYWxsIGZvciAnICsgbmFtZSArICcsIGdvdCAnICsgZm4pO1xuICB9XG5cbiAgKHRoaXMucGFyYW1zW25hbWVdID0gdGhpcy5wYXJhbXNbbmFtZV0gfHwgW10pLnB1c2goZm4pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXEsIHJlcyBpbnRvIHRoZSByb3V0ZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnByb3RvLmhhbmRsZSA9IGZ1bmN0aW9uIGhhbmRsZShyZXEsIHJlcywgb3V0KSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICBkZWJ1ZygnZGlzcGF0Y2hpbmcgJXMgJXMnLCByZXEubWV0aG9kLCByZXEudXJsKTtcblxuICB2YXIgaWR4ID0gMDtcbiAgdmFyIHByb3RvaG9zdCA9IGdldFByb3RvaG9zdChyZXEudXJsKSB8fCAnJ1xuICB2YXIgcmVtb3ZlZCA9ICcnO1xuICB2YXIgc2xhc2hBZGRlZCA9IGZhbHNlO1xuICB2YXIgcGFyYW1jYWxsZWQgPSB7fTtcblxuICAvLyBzdG9yZSBvcHRpb25zIGZvciBPUFRJT05TIHJlcXVlc3RcbiAgLy8gb25seSB1c2VkIGlmIE9QVElPTlMgcmVxdWVzdFxuICB2YXIgb3B0aW9ucyA9IFtdO1xuXG4gIC8vIG1pZGRsZXdhcmUgYW5kIHJvdXRlc1xuICB2YXIgc3RhY2sgPSBzZWxmLnN0YWNrO1xuXG4gIC8vIG1hbmFnZSBpbnRlci1yb3V0ZXIgdmFyaWFibGVzXG4gIHZhciBwYXJlbnRQYXJhbXMgPSByZXEucGFyYW1zO1xuICB2YXIgcGFyZW50VXJsID0gcmVxLmJhc2VVcmwgfHwgJyc7XG4gIHZhciBkb25lID0gcmVzdG9yZShvdXQsIHJlcSwgJ2Jhc2VVcmwnLCAnbmV4dCcsICdwYXJhbXMnKTtcblxuICAvLyBzZXR1cCBuZXh0IGxheWVyXG4gIHJlcS5uZXh0ID0gbmV4dDtcblxuICAvLyBmb3Igb3B0aW9ucyByZXF1ZXN0cywgcmVzcG9uZCB3aXRoIGEgZGVmYXVsdCBpZiBub3RoaW5nIGVsc2UgcmVzcG9uZHNcbiAgaWYgKHJlcS5tZXRob2QgPT09ICdPUFRJT05TJykge1xuICAgIGRvbmUgPSB3cmFwKGRvbmUsIGZ1bmN0aW9uKG9sZCwgZXJyKSB7XG4gICAgICBpZiAoZXJyIHx8IG9wdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gb2xkKGVycik7XG4gICAgICBzZW5kT3B0aW9uc1Jlc3BvbnNlKHJlcywgb3B0aW9ucywgb2xkKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldHVwIGJhc2ljIHJlcSB2YWx1ZXNcbiAgcmVxLmJhc2VVcmwgPSBwYXJlbnRVcmw7XG4gIHJlcS5vcmlnaW5hbFVybCA9IHJlcS5vcmlnaW5hbFVybCB8fCByZXEudXJsO1xuXG4gIG5leHQoKTtcblxuICBmdW5jdGlvbiBuZXh0KGVycikge1xuICAgIHZhciBsYXllckVycm9yID0gZXJyID09PSAncm91dGUnXG4gICAgICA/IG51bGxcbiAgICAgIDogZXJyO1xuXG4gICAgLy8gcmVtb3ZlIGFkZGVkIHNsYXNoXG4gICAgaWYgKHNsYXNoQWRkZWQpIHtcbiAgICAgIHJlcS51cmwgPSByZXEudXJsLnN1YnN0cigxKTtcbiAgICAgIHNsYXNoQWRkZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyByZXN0b3JlIGFsdGVyZWQgcmVxLnVybFxuICAgIGlmIChyZW1vdmVkLmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmVxLmJhc2VVcmwgPSBwYXJlbnRVcmw7XG4gICAgICByZXEudXJsID0gcHJvdG9ob3N0ICsgcmVtb3ZlZCArIHJlcS51cmwuc3Vic3RyKHByb3RvaG9zdC5sZW5ndGgpO1xuICAgICAgcmVtb3ZlZCA9ICcnO1xuICAgIH1cblxuICAgIC8vIHNpZ25hbCB0byBleGl0IHJvdXRlclxuICAgIGlmIChsYXllckVycm9yID09PSAncm91dGVyJykge1xuICAgICAgc2V0SW1tZWRpYXRlKGRvbmUsIG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBubyBtb3JlIG1hdGNoaW5nIGxheWVyc1xuICAgIGlmIChpZHggPj0gc3RhY2subGVuZ3RoKSB7XG4gICAgICBzZXRJbW1lZGlhdGUoZG9uZSwgbGF5ZXJFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZ2V0IHBhdGhuYW1lIG9mIHJlcXVlc3RcbiAgICB2YXIgcGF0aCA9IGdldFBhdGhuYW1lKHJlcSk7XG5cbiAgICBpZiAocGF0aCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZG9uZShsYXllckVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBmaW5kIG5leHQgbWF0Y2hpbmcgbGF5ZXJcbiAgICB2YXIgbGF5ZXI7XG4gICAgdmFyIG1hdGNoO1xuICAgIHZhciByb3V0ZTtcblxuICAgIHdoaWxlIChtYXRjaCAhPT0gdHJ1ZSAmJiBpZHggPCBzdGFjay5sZW5ndGgpIHtcbiAgICAgIGxheWVyID0gc3RhY2tbaWR4KytdO1xuICAgICAgbWF0Y2ggPSBtYXRjaExheWVyKGxheWVyLCBwYXRoKTtcbiAgICAgIHJvdXRlID0gbGF5ZXIucm91dGU7XG5cbiAgICAgIGlmICh0eXBlb2YgbWF0Y2ggIT09ICdib29sZWFuJykge1xuICAgICAgICAvLyBob2xkIG9uIHRvIGxheWVyRXJyb3JcbiAgICAgICAgbGF5ZXJFcnJvciA9IGxheWVyRXJyb3IgfHwgbWF0Y2g7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXRjaCAhPT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyb3V0ZSkge1xuICAgICAgICAvLyBwcm9jZXNzIG5vbi1yb3V0ZSBoYW5kbGVycyBub3JtYWxseVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxheWVyRXJyb3IpIHtcbiAgICAgICAgLy8gcm91dGVzIGRvIG5vdCBtYXRjaCB3aXRoIGEgcGVuZGluZyBlcnJvclxuICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIG1ldGhvZCA9IHJlcS5tZXRob2Q7XG4gICAgICB2YXIgaGFzX21ldGhvZCA9IHJvdXRlLl9oYW5kbGVzX21ldGhvZChtZXRob2QpO1xuXG4gICAgICAvLyBidWlsZCB1cCBhdXRvbWF0aWMgb3B0aW9ucyByZXNwb25zZVxuICAgICAgaWYgKCFoYXNfbWV0aG9kICYmIG1ldGhvZCA9PT0gJ09QVElPTlMnKSB7XG4gICAgICAgIGFwcGVuZE1ldGhvZHMob3B0aW9ucywgcm91dGUuX29wdGlvbnMoKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGRvbid0IGV2ZW4gYm90aGVyIG1hdGNoaW5nIHJvdXRlXG4gICAgICBpZiAoIWhhc19tZXRob2QgJiYgbWV0aG9kICE9PSAnSEVBRCcpIHtcbiAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbm8gbWF0Y2hcbiAgICBpZiAobWF0Y2ggIT09IHRydWUpIHtcbiAgICAgIHJldHVybiBkb25lKGxheWVyRXJyb3IpO1xuICAgIH1cblxuICAgIC8vIHN0b3JlIHJvdXRlIGZvciBkaXNwYXRjaCBvbiBjaGFuZ2VcbiAgICBpZiAocm91dGUpIHtcbiAgICAgIHJlcS5yb3V0ZSA9IHJvdXRlO1xuICAgIH1cblxuICAgIC8vIENhcHR1cmUgb25lLXRpbWUgbGF5ZXIgdmFsdWVzXG4gICAgcmVxLnBhcmFtcyA9IHNlbGYubWVyZ2VQYXJhbXNcbiAgICAgID8gbWVyZ2VQYXJhbXMobGF5ZXIucGFyYW1zLCBwYXJlbnRQYXJhbXMpXG4gICAgICA6IGxheWVyLnBhcmFtcztcbiAgICB2YXIgbGF5ZXJQYXRoID0gbGF5ZXIucGF0aDtcblxuICAgIC8vIHRoaXMgc2hvdWxkIGJlIGRvbmUgZm9yIHRoZSBsYXllclxuICAgIHNlbGYucHJvY2Vzc19wYXJhbXMobGF5ZXIsIHBhcmFtY2FsbGVkLCByZXEsIHJlcywgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChsYXllckVycm9yIHx8IGVycik7XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICByZXR1cm4gbGF5ZXIuaGFuZGxlX3JlcXVlc3QocmVxLCByZXMsIG5leHQpO1xuICAgICAgfVxuXG4gICAgICB0cmltX3ByZWZpeChsYXllciwgbGF5ZXJFcnJvciwgbGF5ZXJQYXRoLCBwYXRoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyaW1fcHJlZml4KGxheWVyLCBsYXllckVycm9yLCBsYXllclBhdGgsIHBhdGgpIHtcbiAgICBpZiAobGF5ZXJQYXRoLmxlbmd0aCAhPT0gMCkge1xuICAgICAgLy8gVmFsaWRhdGUgcGF0aCBicmVha3Mgb24gYSBwYXRoIHNlcGFyYXRvclxuICAgICAgdmFyIGMgPSBwYXRoW2xheWVyUGF0aC5sZW5ndGhdXG4gICAgICBpZiAoYyAmJiBjICE9PSAnLycgJiYgYyAhPT0gJy4nKSByZXR1cm4gbmV4dChsYXllckVycm9yKVxuXG4gICAgICAvLyBUcmltIG9mZiB0aGUgcGFydCBvZiB0aGUgdXJsIHRoYXQgbWF0Y2hlcyB0aGUgcm91dGVcbiAgICAgIC8vIG1pZGRsZXdhcmUgKC51c2Ugc3R1ZmYpIG5lZWRzIHRvIGhhdmUgdGhlIHBhdGggc3RyaXBwZWRcbiAgICAgIGRlYnVnKCd0cmltIHByZWZpeCAoJXMpIGZyb20gdXJsICVzJywgbGF5ZXJQYXRoLCByZXEudXJsKTtcbiAgICAgIHJlbW92ZWQgPSBsYXllclBhdGg7XG4gICAgICByZXEudXJsID0gcHJvdG9ob3N0ICsgcmVxLnVybC5zdWJzdHIocHJvdG9ob3N0Lmxlbmd0aCArIHJlbW92ZWQubGVuZ3RoKTtcblxuICAgICAgLy8gRW5zdXJlIGxlYWRpbmcgc2xhc2hcbiAgICAgIGlmICghcHJvdG9ob3N0ICYmIHJlcS51cmxbMF0gIT09ICcvJykge1xuICAgICAgICByZXEudXJsID0gJy8nICsgcmVxLnVybDtcbiAgICAgICAgc2xhc2hBZGRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldHVwIGJhc2UgVVJMIChubyB0cmFpbGluZyBzbGFzaClcbiAgICAgIHJlcS5iYXNlVXJsID0gcGFyZW50VXJsICsgKHJlbW92ZWRbcmVtb3ZlZC5sZW5ndGggLSAxXSA9PT0gJy8nXG4gICAgICAgID8gcmVtb3ZlZC5zdWJzdHJpbmcoMCwgcmVtb3ZlZC5sZW5ndGggLSAxKVxuICAgICAgICA6IHJlbW92ZWQpO1xuICAgIH1cblxuICAgIGRlYnVnKCclcyAlcyA6ICVzJywgbGF5ZXIubmFtZSwgbGF5ZXJQYXRoLCByZXEub3JpZ2luYWxVcmwpO1xuXG4gICAgaWYgKGxheWVyRXJyb3IpIHtcbiAgICAgIGxheWVyLmhhbmRsZV9lcnJvcihsYXllckVycm9yLCByZXEsIHJlcywgbmV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheWVyLmhhbmRsZV9yZXF1ZXN0KHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogUHJvY2VzcyBhbnkgcGFyYW1ldGVycyBmb3IgdGhlIGxheWVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5wcm90by5wcm9jZXNzX3BhcmFtcyA9IGZ1bmN0aW9uIHByb2Nlc3NfcGFyYW1zKGxheWVyLCBjYWxsZWQsIHJlcSwgcmVzLCBkb25lKSB7XG4gIHZhciBwYXJhbXMgPSB0aGlzLnBhcmFtcztcblxuICAvLyBjYXB0dXJlZCBwYXJhbWV0ZXJzIGZyb20gdGhlIGxheWVyLCBrZXlzIGFuZCB2YWx1ZXNcbiAgdmFyIGtleXMgPSBsYXllci5rZXlzO1xuXG4gIC8vIGZhc3QgdHJhY2tcbiAgaWYgKCFrZXlzIHx8IGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGRvbmUoKTtcbiAgfVxuXG4gIHZhciBpID0gMDtcbiAgdmFyIG5hbWU7XG4gIHZhciBwYXJhbUluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgdmFyIHBhcmFtVmFsO1xuICB2YXIgcGFyYW1DYWxsYmFja3M7XG4gIHZhciBwYXJhbUNhbGxlZDtcblxuICAvLyBwcm9jZXNzIHBhcmFtcyBpbiBvcmRlclxuICAvLyBwYXJhbSBjYWxsYmFja3MgY2FuIGJlIGFzeW5jXG4gIGZ1bmN0aW9uIHBhcmFtKGVycikge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHJldHVybiBkb25lKGVycik7XG4gICAgfVxuXG4gICAgaWYgKGkgPj0ga2V5cy5sZW5ndGggKSB7XG4gICAgICByZXR1cm4gZG9uZSgpO1xuICAgIH1cblxuICAgIHBhcmFtSW5kZXggPSAwO1xuICAgIGtleSA9IGtleXNbaSsrXTtcbiAgICBuYW1lID0ga2V5Lm5hbWU7XG4gICAgcGFyYW1WYWwgPSByZXEucGFyYW1zW25hbWVdO1xuICAgIHBhcmFtQ2FsbGJhY2tzID0gcGFyYW1zW25hbWVdO1xuICAgIHBhcmFtQ2FsbGVkID0gY2FsbGVkW25hbWVdO1xuXG4gICAgaWYgKHBhcmFtVmFsID09PSB1bmRlZmluZWQgfHwgIXBhcmFtQ2FsbGJhY2tzKSB7XG4gICAgICByZXR1cm4gcGFyYW0oKTtcbiAgICB9XG5cbiAgICAvLyBwYXJhbSBwcmV2aW91c2x5IGNhbGxlZCB3aXRoIHNhbWUgdmFsdWUgb3IgZXJyb3Igb2NjdXJyZWRcbiAgICBpZiAocGFyYW1DYWxsZWQgJiYgKHBhcmFtQ2FsbGVkLm1hdGNoID09PSBwYXJhbVZhbFxuICAgICAgfHwgKHBhcmFtQ2FsbGVkLmVycm9yICYmIHBhcmFtQ2FsbGVkLmVycm9yICE9PSAncm91dGUnKSkpIHtcbiAgICAgIC8vIHJlc3RvcmUgdmFsdWVcbiAgICAgIHJlcS5wYXJhbXNbbmFtZV0gPSBwYXJhbUNhbGxlZC52YWx1ZTtcblxuICAgICAgLy8gbmV4dCBwYXJhbVxuICAgICAgcmV0dXJuIHBhcmFtKHBhcmFtQ2FsbGVkLmVycm9yKTtcbiAgICB9XG5cbiAgICBjYWxsZWRbbmFtZV0gPSBwYXJhbUNhbGxlZCA9IHtcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgbWF0Y2g6IHBhcmFtVmFsLFxuICAgICAgdmFsdWU6IHBhcmFtVmFsXG4gICAgfTtcblxuICAgIHBhcmFtQ2FsbGJhY2soKTtcbiAgfVxuXG4gIC8vIHNpbmdsZSBwYXJhbSBjYWxsYmFja3NcbiAgZnVuY3Rpb24gcGFyYW1DYWxsYmFjayhlcnIpIHtcbiAgICB2YXIgZm4gPSBwYXJhbUNhbGxiYWNrc1twYXJhbUluZGV4KytdO1xuXG4gICAgLy8gc3RvcmUgdXBkYXRlZCB2YWx1ZVxuICAgIHBhcmFtQ2FsbGVkLnZhbHVlID0gcmVxLnBhcmFtc1trZXkubmFtZV07XG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICAvLyBzdG9yZSBlcnJvclxuICAgICAgcGFyYW1DYWxsZWQuZXJyb3IgPSBlcnI7XG4gICAgICBwYXJhbShlcnIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZm4pIHJldHVybiBwYXJhbSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZuKHJlcSwgcmVzLCBwYXJhbUNhbGxiYWNrLCBwYXJhbVZhbCwga2V5Lm5hbWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHBhcmFtQ2FsbGJhY2soZSk7XG4gICAgfVxuICB9XG5cbiAgcGFyYW0oKTtcbn07XG5cbi8qKlxuICogVXNlIHRoZSBnaXZlbiBtaWRkbGV3YXJlIGZ1bmN0aW9uLCB3aXRoIG9wdGlvbmFsIHBhdGgsIGRlZmF1bHRpbmcgdG8gXCIvXCIuXG4gKlxuICogVXNlIChsaWtlIGAuYWxsYCkgd2lsbCBydW4gZm9yIGFueSBodHRwIE1FVEhPRCwgYnV0IGl0IHdpbGwgbm90IGFkZFxuICogaGFuZGxlcnMgZm9yIHRob3NlIG1ldGhvZHMgc28gT1BUSU9OUyByZXF1ZXN0cyB3aWxsIG5vdCBjb25zaWRlciBgLnVzZWBcbiAqIGZ1bmN0aW9ucyBldmVuIGlmIHRoZXkgY291bGQgcmVzcG9uZC5cbiAqXG4gKiBUaGUgb3RoZXIgZGlmZmVyZW5jZSBpcyB0aGF0IF9yb3V0ZV8gcGF0aCBpcyBzdHJpcHBlZCBhbmQgbm90IHZpc2libGVcbiAqIHRvIHRoZSBoYW5kbGVyIGZ1bmN0aW9uLiBUaGUgbWFpbiBlZmZlY3Qgb2YgdGhpcyBmZWF0dXJlIGlzIHRoYXQgbW91bnRlZFxuICogaGFuZGxlcnMgY2FuIG9wZXJhdGUgd2l0aG91dCBhbnkgY29kZSBjaGFuZ2VzIHJlZ2FyZGxlc3Mgb2YgdGhlIFwicHJlZml4XCJcbiAqIHBhdGhuYW1lLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuXG5wcm90by51c2UgPSBmdW5jdGlvbiB1c2UoZm4pIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBwYXRoID0gJy8nO1xuXG4gIC8vIGRlZmF1bHQgcGF0aCB0byAnLydcbiAgLy8gZGlzYW1iaWd1YXRlIHJvdXRlci51c2UoW2ZuXSlcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBhcmcgPSBmbjtcblxuICAgIHdoaWxlIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCAhPT0gMCkge1xuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIH1cblxuICAgIC8vIGZpcnN0IGFyZyBpcyB0aGUgcGF0aFxuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvZmZzZXQgPSAxO1xuICAgICAgcGF0aCA9IGZuO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjYWxsYmFja3MgPSBmbGF0dGVuKHNsaWNlLmNhbGwoYXJndW1lbnRzLCBvZmZzZXQpKTtcblxuICBpZiAoY2FsbGJhY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1JvdXRlci51c2UoKSByZXF1aXJlcyBhIG1pZGRsZXdhcmUgZnVuY3Rpb24nKVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZm4gPSBjYWxsYmFja3NbaV07XG5cbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSb3V0ZXIudXNlKCkgcmVxdWlyZXMgYSBtaWRkbGV3YXJlIGZ1bmN0aW9uIGJ1dCBnb3QgYSAnICsgZ2V0dHlwZShmbikpXG4gICAgfVxuXG4gICAgLy8gYWRkIHRoZSBtaWRkbGV3YXJlXG4gICAgZGVidWcoJ3VzZSAlbyAlcycsIHBhdGgsIGZuLm5hbWUgfHwgJzxhbm9ueW1vdXM+JylcblxuICAgIHZhciBsYXllciA9IG5ldyBMYXllcihwYXRoLCB7XG4gICAgICBzZW5zaXRpdmU6IHRoaXMuY2FzZVNlbnNpdGl2ZSxcbiAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgICBlbmQ6IGZhbHNlXG4gICAgfSwgZm4pO1xuXG4gICAgbGF5ZXIucm91dGUgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnN0YWNrLnB1c2gobGF5ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBSb3V0ZSBmb3IgdGhlIGdpdmVuIHBhdGguXG4gKlxuICogRWFjaCByb3V0ZSBjb250YWlucyBhIHNlcGFyYXRlIG1pZGRsZXdhcmUgc3RhY2sgYW5kIFZFUkIgaGFuZGxlcnMuXG4gKlxuICogU2VlIHRoZSBSb3V0ZSBhcGkgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvbiBhZGRpbmcgaGFuZGxlcnNcbiAqIGFuZCBtaWRkbGV3YXJlIHRvIHJvdXRlcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Um91dGV9XG4gKiBAcHVibGljXG4gKi9cblxucHJvdG8ucm91dGUgPSBmdW5jdGlvbiByb3V0ZShwYXRoKSB7XG4gIHZhciByb3V0ZSA9IG5ldyBSb3V0ZShwYXRoKTtcblxuICB2YXIgbGF5ZXIgPSBuZXcgTGF5ZXIocGF0aCwge1xuICAgIHNlbnNpdGl2ZTogdGhpcy5jYXNlU2Vuc2l0aXZlLFxuICAgIHN0cmljdDogdGhpcy5zdHJpY3QsXG4gICAgZW5kOiB0cnVlXG4gIH0sIHJvdXRlLmRpc3BhdGNoLmJpbmQocm91dGUpKTtcblxuICBsYXllci5yb3V0ZSA9IHJvdXRlO1xuXG4gIHRoaXMuc3RhY2sucHVzaChsYXllcik7XG4gIHJldHVybiByb3V0ZTtcbn07XG5cbi8vIGNyZWF0ZSBSb3V0ZXIjVkVSQiBmdW5jdGlvbnNcbm1ldGhvZHMuY29uY2F0KCdhbGwnKS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCl7XG4gIHByb3RvW21ldGhvZF0gPSBmdW5jdGlvbihwYXRoKXtcbiAgICB2YXIgcm91dGUgPSB0aGlzLnJvdXRlKHBhdGgpXG4gICAgcm91dGVbbWV0aG9kXS5hcHBseShyb3V0ZSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG4vLyBhcHBlbmQgbWV0aG9kcyB0byBhIGxpc3Qgb2YgbWV0aG9kc1xuZnVuY3Rpb24gYXBwZW5kTWV0aG9kcyhsaXN0LCBhZGRpdGlvbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFkZGl0aW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1ldGhvZCA9IGFkZGl0aW9uW2ldO1xuICAgIGlmIChsaXN0LmluZGV4T2YobWV0aG9kKSA9PT0gLTEpIHtcbiAgICAgIGxpc3QucHVzaChtZXRob2QpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBnZXQgcGF0aG5hbWUgb2YgcmVxdWVzdFxuZnVuY3Rpb24gZ2V0UGF0aG5hbWUocmVxKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlVXJsKHJlcSkucGF0aG5hbWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLy8gR2V0IGdldCBwcm90b2NvbCArIGhvc3QgZm9yIGEgVVJMXG5mdW5jdGlvbiBnZXRQcm90b2hvc3QodXJsKSB7XG4gIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJyB8fCB1cmwubGVuZ3RoID09PSAwIHx8IHVybFswXSA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgdmFyIHNlYXJjaEluZGV4ID0gdXJsLmluZGV4T2YoJz8nKVxuICB2YXIgcGF0aExlbmd0aCA9IHNlYXJjaEluZGV4ICE9PSAtMVxuICAgID8gc2VhcmNoSW5kZXhcbiAgICA6IHVybC5sZW5ndGhcbiAgdmFyIGZxZG5JbmRleCA9IHVybC5zdWJzdHIoMCwgcGF0aExlbmd0aCkuaW5kZXhPZignOi8vJylcblxuICByZXR1cm4gZnFkbkluZGV4ICE9PSAtMVxuICAgID8gdXJsLnN1YnN0cigwLCB1cmwuaW5kZXhPZignLycsIDMgKyBmcWRuSW5kZXgpKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8vIGdldCB0eXBlIGZvciBlcnJvciBtZXNzYWdlXG5mdW5jdGlvbiBnZXR0eXBlKG9iaikge1xuICB2YXIgdHlwZSA9IHR5cGVvZiBvYmo7XG5cbiAgaWYgKHR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICAvLyBpbnNwZWN0IFtbQ2xhc3NdXSBmb3Igb2JqZWN0c1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopXG4gICAgLnJlcGxhY2Uob2JqZWN0UmVnRXhwLCAnJDEnKTtcbn1cblxuLyoqXG4gKiBNYXRjaCBwYXRoIHRvIGEgbGF5ZXIuXG4gKlxuICogQHBhcmFtIHtMYXllcn0gbGF5ZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG1hdGNoTGF5ZXIobGF5ZXIsIHBhdGgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbGF5ZXIubWF0Y2gocGF0aCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBlcnI7XG4gIH1cbn1cblxuLy8gbWVyZ2UgcGFyYW1zIHdpdGggcGFyZW50IHBhcmFtc1xuZnVuY3Rpb24gbWVyZ2VQYXJhbXMocGFyYW1zLCBwYXJlbnQpIHtcbiAgaWYgKHR5cGVvZiBwYXJlbnQgIT09ICdvYmplY3QnIHx8ICFwYXJlbnQpIHtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgLy8gbWFrZSBjb3B5IG9mIHBhcmVudCBmb3IgYmFzZVxuICB2YXIgb2JqID0gbWl4aW4oe30sIHBhcmVudCk7XG5cbiAgLy8gc2ltcGxlIG5vbi1udW1lcmljIG1lcmdpbmdcbiAgaWYgKCEoMCBpbiBwYXJhbXMpIHx8ICEoMCBpbiBwYXJlbnQpKSB7XG4gICAgcmV0dXJuIG1peGluKG9iaiwgcGFyYW1zKTtcbiAgfVxuXG4gIHZhciBpID0gMDtcbiAgdmFyIG8gPSAwO1xuXG4gIC8vIGRldGVybWluZSBudW1lcmljIGdhcHNcbiAgd2hpbGUgKGkgaW4gcGFyYW1zKSB7XG4gICAgaSsrO1xuICB9XG5cbiAgd2hpbGUgKG8gaW4gcGFyZW50KSB7XG4gICAgbysrO1xuICB9XG5cbiAgLy8gb2Zmc2V0IG51bWVyaWMgaW5kaWNlcyBpbiBwYXJhbXMgYmVmb3JlIG1lcmdlXG4gIGZvciAoaS0tOyBpID49IDA7IGktLSkge1xuICAgIHBhcmFtc1tpICsgb10gPSBwYXJhbXNbaV07XG5cbiAgICAvLyBjcmVhdGUgaG9sZXMgZm9yIHRoZSBtZXJnZSB3aGVuIG5lY2Vzc2FyeVxuICAgIGlmIChpIDwgbykge1xuICAgICAgZGVsZXRlIHBhcmFtc1tpXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWl4aW4ob2JqLCBwYXJhbXMpO1xufVxuXG4vLyByZXN0b3JlIG9iaiBwcm9wcyBhZnRlciBmdW5jdGlvblxuZnVuY3Rpb24gcmVzdG9yZShmbiwgb2JqKSB7XG4gIHZhciBwcm9wcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMik7XG4gIHZhciB2YWxzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAyKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgcHJvcHNbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIHZhbHNbaV0gPSBvYmpbcHJvcHNbaV1dO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAvLyByZXN0b3JlIHZhbHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvYmpbcHJvcHNbaV1dID0gdmFsc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuLy8gc2VuZCBhbiBPUFRJT05TIHJlc3BvbnNlXG5mdW5jdGlvbiBzZW5kT3B0aW9uc1Jlc3BvbnNlKHJlcywgb3B0aW9ucywgbmV4dCkge1xuICB0cnkge1xuICAgIHZhciBib2R5ID0gb3B0aW9ucy5qb2luKCcsJyk7XG4gICAgcmVzLnNldCgnQWxsb3cnLCBib2R5KTtcbiAgICByZXMuc2VuZChib2R5KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbmV4dChlcnIpO1xuICB9XG59XG5cbi8vIHdyYXAgYSBmdW5jdGlvblxuZnVuY3Rpb24gd3JhcChvbGQsIGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBwcm94eSgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoICsgMSk7XG5cbiAgICBhcmdzWzBdID0gb2xkO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGFyZ3NbaSArIDFdID0gYXJndW1lbnRzW2ldO1xuICAgIH1cblxuICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9O1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3JvdXRlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gODhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxMyBSb21hbiBTaHR5bG1hblxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2V4cHJlc3M6cm91dGVyOnJvdXRlJyk7XG52YXIgZmxhdHRlbiA9IHJlcXVpcmUoJ2FycmF5LWZsYXR0ZW4nKTtcbnZhciBMYXllciA9IHJlcXVpcmUoJy4vbGF5ZXInKTtcbnZhciBtZXRob2RzID0gcmVxdWlyZSgnbWV0aG9kcycpO1xuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBSb3V0ZTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGBSb3V0ZWAgd2l0aCB0aGUgZ2l2ZW4gYHBhdGhgLFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUm91dGUocGF0aCkge1xuICB0aGlzLnBhdGggPSBwYXRoO1xuICB0aGlzLnN0YWNrID0gW107XG5cbiAgZGVidWcoJ25ldyAlbycsIHBhdGgpXG5cbiAgLy8gcm91dGUgaGFuZGxlcnMgZm9yIHZhcmlvdXMgaHR0cCBtZXRob2RzXG4gIHRoaXMubWV0aG9kcyA9IHt9O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgcm91dGUgaGFuZGxlcyBhIGdpdmVuIG1ldGhvZC5cbiAqIEBwcml2YXRlXG4gKi9cblxuUm91dGUucHJvdG90eXBlLl9oYW5kbGVzX21ldGhvZCA9IGZ1bmN0aW9uIF9oYW5kbGVzX21ldGhvZChtZXRob2QpIHtcbiAgaWYgKHRoaXMubWV0aG9kcy5fYWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YXIgbmFtZSA9IG1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChuYW1lID09PSAnaGVhZCcgJiYgIXRoaXMubWV0aG9kc1snaGVhZCddKSB7XG4gICAgbmFtZSA9ICdnZXQnO1xuICB9XG5cbiAgcmV0dXJuIEJvb2xlYW4odGhpcy5tZXRob2RzW25hbWVdKTtcbn07XG5cbi8qKlxuICogQHJldHVybiB7QXJyYXl9IHN1cHBvcnRlZCBIVFRQIG1ldGhvZHNcbiAqIEBwcml2YXRlXG4gKi9cblxuUm91dGUucHJvdG90eXBlLl9vcHRpb25zID0gZnVuY3Rpb24gX29wdGlvbnMoKSB7XG4gIHZhciBtZXRob2RzID0gT2JqZWN0LmtleXModGhpcy5tZXRob2RzKTtcblxuICAvLyBhcHBlbmQgYXV0b21hdGljIGhlYWRcbiAgaWYgKHRoaXMubWV0aG9kcy5nZXQgJiYgIXRoaXMubWV0aG9kcy5oZWFkKSB7XG4gICAgbWV0aG9kcy5wdXNoKCdoZWFkJyk7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGhvZHMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBtYWtlIHVwcGVyIGNhc2VcbiAgICBtZXRob2RzW2ldID0gbWV0aG9kc1tpXS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuXG4vKipcbiAqIGRpc3BhdGNoIHJlcSwgcmVzIGludG8gdGhpcyByb3V0ZVxuICogQHByaXZhdGVcbiAqL1xuXG5Sb3V0ZS5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiBkaXNwYXRjaChyZXEsIHJlcywgZG9uZSkge1xuICB2YXIgaWR4ID0gMDtcbiAgdmFyIHN0YWNrID0gdGhpcy5zdGFjaztcbiAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBkb25lKCk7XG4gIH1cblxuICB2YXIgbWV0aG9kID0gcmVxLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICBpZiAobWV0aG9kID09PSAnaGVhZCcgJiYgIXRoaXMubWV0aG9kc1snaGVhZCddKSB7XG4gICAgbWV0aG9kID0gJ2dldCc7XG4gIH1cblxuICByZXEucm91dGUgPSB0aGlzO1xuXG4gIG5leHQoKTtcblxuICBmdW5jdGlvbiBuZXh0KGVycikge1xuICAgIC8vIHNpZ25hbCB0byBleGl0IHJvdXRlXG4gICAgaWYgKGVyciAmJiBlcnIgPT09ICdyb3V0ZScpIHtcbiAgICAgIHJldHVybiBkb25lKCk7XG4gICAgfVxuXG4gICAgLy8gc2lnbmFsIHRvIGV4aXQgcm91dGVyXG4gICAgaWYgKGVyciAmJiBlcnIgPT09ICdyb3V0ZXInKSB7XG4gICAgICByZXR1cm4gZG9uZShlcnIpXG4gICAgfVxuXG4gICAgdmFyIGxheWVyID0gc3RhY2tbaWR4KytdO1xuICAgIGlmICghbGF5ZXIpIHtcbiAgICAgIHJldHVybiBkb25lKGVycik7XG4gICAgfVxuXG4gICAgaWYgKGxheWVyLm1ldGhvZCAmJiBsYXllci5tZXRob2QgIT09IG1ldGhvZCkge1xuICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICBsYXllci5oYW5kbGVfZXJyb3IoZXJyLCByZXEsIHJlcywgbmV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheWVyLmhhbmRsZV9yZXF1ZXN0KHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQWRkIGEgaGFuZGxlciBmb3IgYWxsIEhUVFAgdmVyYnMgdG8gdGhpcyByb3V0ZS5cbiAqXG4gKiBCZWhhdmVzIGp1c3QgbGlrZSBtaWRkbGV3YXJlIGFuZCBjYW4gcmVzcG9uZCBvciBjYWxsIGBuZXh0YFxuICogdG8gY29udGludWUgcHJvY2Vzc2luZy5cbiAqXG4gKiBZb3UgY2FuIHVzZSBtdWx0aXBsZSBgLmFsbGAgY2FsbCB0byBhZGQgbXVsdGlwbGUgaGFuZGxlcnMuXG4gKlxuICogICBmdW5jdGlvbiBjaGVja19zb21ldGhpbmcocmVxLCByZXMsIG5leHQpe1xuICogICAgIG5leHQoKTtcbiAqICAgfTtcbiAqXG4gKiAgIGZ1bmN0aW9uIHZhbGlkYXRlX3VzZXIocmVxLCByZXMsIG5leHQpe1xuICogICAgIG5leHQoKTtcbiAqICAgfTtcbiAqXG4gKiAgIHJvdXRlXG4gKiAgIC5hbGwodmFsaWRhdGVfdXNlcilcbiAqICAgLmFsbChjaGVja19zb21ldGhpbmcpXG4gKiAgIC5nZXQoZnVuY3Rpb24ocmVxLCByZXMsIG5leHQpe1xuICogICAgIHJlcy5zZW5kKCdoZWxsbyB3b3JsZCcpO1xuICogICB9KTtcbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBoYW5kbGVyXG4gKiBAcmV0dXJuIHtSb3V0ZX0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJvdXRlLnByb3RvdHlwZS5hbGwgPSBmdW5jdGlvbiBhbGwoKSB7XG4gIHZhciBoYW5kbGVzID0gZmxhdHRlbihzbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBoYW5kbGUgPSBoYW5kbGVzW2ldO1xuXG4gICAgaWYgKHR5cGVvZiBoYW5kbGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciB0eXBlID0gdG9TdHJpbmcuY2FsbChoYW5kbGUpO1xuICAgICAgdmFyIG1zZyA9ICdSb3V0ZS5hbGwoKSByZXF1aXJlcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGJ1dCBnb3QgYSAnICsgdHlwZVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtc2cpO1xuICAgIH1cblxuICAgIHZhciBsYXllciA9IExheWVyKCcvJywge30sIGhhbmRsZSk7XG4gICAgbGF5ZXIubWV0aG9kID0gdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5tZXRob2RzLl9hbGwgPSB0cnVlO1xuICAgIHRoaXMuc3RhY2sucHVzaChsYXllcik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbm1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2Qpe1xuICBSb3V0ZS5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKCl7XG4gICAgdmFyIGhhbmRsZXMgPSBmbGF0dGVuKHNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhbmRsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoYW5kbGUgPSBoYW5kbGVzW2ldO1xuXG4gICAgICBpZiAodHlwZW9mIGhhbmRsZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgdHlwZSA9IHRvU3RyaW5nLmNhbGwoaGFuZGxlKTtcbiAgICAgICAgdmFyIG1zZyA9ICdSb3V0ZS4nICsgbWV0aG9kICsgJygpIHJlcXVpcmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gYnV0IGdvdCBhICcgKyB0eXBlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuXG4gICAgICBkZWJ1ZygnJXMgJW8nLCBtZXRob2QsIHRoaXMucGF0aClcblxuICAgICAgdmFyIGxheWVyID0gTGF5ZXIoJy8nLCB7fSwgaGFuZGxlKTtcbiAgICAgIGxheWVyLm1ldGhvZCA9IG1ldGhvZDtcblxuICAgICAgdGhpcy5tZXRob2RzW21ldGhvZF0gPSB0cnVlO1xuICAgICAgdGhpcy5zdGFjay5wdXNoKGxheWVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3JvdXRlci9yb3V0ZS5qc1xuLy8gbW9kdWxlIGlkID0gODlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxMyBSb21hbiBTaHR5bG1hblxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBwYXRoUmVnZXhwID0gcmVxdWlyZSgncGF0aC10by1yZWdleHAnKTtcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2V4cHJlc3M6cm91dGVyOmxheWVyJyk7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IExheWVyO1xuXG5mdW5jdGlvbiBMYXllcihwYXRoLCBvcHRpb25zLCBmbikge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGF5ZXIpKSB7XG4gICAgcmV0dXJuIG5ldyBMYXllcihwYXRoLCBvcHRpb25zLCBmbik7XG4gIH1cblxuICBkZWJ1ZygnbmV3ICVvJywgcGF0aClcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHRoaXMuaGFuZGxlID0gZm47XG4gIHRoaXMubmFtZSA9IGZuLm5hbWUgfHwgJzxhbm9ueW1vdXM+JztcbiAgdGhpcy5wYXJhbXMgPSB1bmRlZmluZWQ7XG4gIHRoaXMucGF0aCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5yZWdleHAgPSBwYXRoUmVnZXhwKHBhdGgsIHRoaXMua2V5cyA9IFtdLCBvcHRzKTtcblxuICAvLyBzZXQgZmFzdCBwYXRoIGZsYWdzXG4gIHRoaXMucmVnZXhwLmZhc3Rfc3RhciA9IHBhdGggPT09ICcqJ1xuICB0aGlzLnJlZ2V4cC5mYXN0X3NsYXNoID0gcGF0aCA9PT0gJy8nICYmIG9wdHMuZW5kID09PSBmYWxzZVxufVxuXG4vKipcbiAqIEhhbmRsZSB0aGUgZXJyb3IgZm9yIHRoZSBsYXllci5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvclxuICogQHBhcmFtIHtSZXF1ZXN0fSByZXFcbiAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gbmV4dFxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuTGF5ZXIucHJvdG90eXBlLmhhbmRsZV9lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZV9lcnJvcihlcnJvciwgcmVxLCByZXMsIG5leHQpIHtcbiAgdmFyIGZuID0gdGhpcy5oYW5kbGU7XG5cbiAgaWYgKGZuLmxlbmd0aCAhPT0gNCkge1xuICAgIC8vIG5vdCBhIHN0YW5kYXJkIGVycm9yIGhhbmRsZXJcbiAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gIH1cblxuICB0cnkge1xuICAgIGZuKGVycm9yLCByZXEsIHJlcywgbmV4dCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIG5leHQoZXJyKTtcbiAgfVxufTtcblxuLyoqXG4gKiBIYW5kbGUgdGhlIHJlcXVlc3QgZm9yIHRoZSBsYXllci5cbiAqXG4gKiBAcGFyYW0ge1JlcXVlc3R9IHJlcVxuICogQHBhcmFtIHtSZXNwb25zZX0gcmVzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBuZXh0XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5MYXllci5wcm90b3R5cGUuaGFuZGxlX3JlcXVlc3QgPSBmdW5jdGlvbiBoYW5kbGUocmVxLCByZXMsIG5leHQpIHtcbiAgdmFyIGZuID0gdGhpcy5oYW5kbGU7XG5cbiAgaWYgKGZuLmxlbmd0aCA+IDMpIHtcbiAgICAvLyBub3QgYSBzdGFuZGFyZCByZXF1ZXN0IGhhbmRsZXJcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBmbihyZXEsIHJlcywgbmV4dCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIG5leHQoZXJyKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVjayBpZiB0aGlzIHJvdXRlIG1hdGNoZXMgYHBhdGhgLCBpZiBzb1xuICogcG9wdWxhdGUgYC5wYXJhbXNgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuTGF5ZXIucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gbWF0Y2gocGF0aCkge1xuICB2YXIgbWF0Y2hcblxuICBpZiAocGF0aCAhPSBudWxsKSB7XG4gICAgLy8gZmFzdCBwYXRoIG5vbi1lbmRpbmcgbWF0Y2ggZm9yIC8gKGFueSBwYXRoIG1hdGNoZXMpXG4gICAgaWYgKHRoaXMucmVnZXhwLmZhc3Rfc2xhc2gpIHtcbiAgICAgIHRoaXMucGFyYW1zID0ge31cbiAgICAgIHRoaXMucGF0aCA9ICcnXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIGZhc3QgcGF0aCBmb3IgKiAoZXZlcnl0aGluZyBtYXRjaGVkIGluIGEgcGFyYW0pXG4gICAgaWYgKHRoaXMucmVnZXhwLmZhc3Rfc3Rhcikge1xuICAgICAgdGhpcy5wYXJhbXMgPSB7JzAnOiBkZWNvZGVfcGFyYW0ocGF0aCl9XG4gICAgICB0aGlzLnBhdGggPSBwYXRoXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIG1hdGNoIHRoZSBwYXRoXG4gICAgbWF0Y2ggPSB0aGlzLnJlZ2V4cC5leGVjKHBhdGgpXG4gIH1cblxuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhpcy5wYXJhbXMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5wYXRoID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIHN0b3JlIHZhbHVlc1xuICB0aGlzLnBhcmFtcyA9IHt9O1xuICB0aGlzLnBhdGggPSBtYXRjaFswXVxuXG4gIHZhciBrZXlzID0gdGhpcy5rZXlzO1xuICB2YXIgcGFyYW1zID0gdGhpcy5wYXJhbXM7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBtYXRjaC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2kgLSAxXTtcbiAgICB2YXIgcHJvcCA9IGtleS5uYW1lO1xuICAgIHZhciB2YWwgPSBkZWNvZGVfcGFyYW0obWF0Y2hbaV0pXG5cbiAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgfHwgIShoYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmFtcywgcHJvcCkpKSB7XG4gICAgICBwYXJhbXNbcHJvcF0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIERlY29kZSBwYXJhbSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGRlY29kZV9wYXJhbSh2YWwpIHtcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdzdHJpbmcnIHx8IHZhbC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBVUklFcnJvcikge1xuICAgICAgZXJyLm1lc3NhZ2UgPSAnRmFpbGVkIHRvIGRlY29kZSBwYXJhbSBcXCcnICsgdmFsICsgJ1xcJyc7XG4gICAgICBlcnIuc3RhdHVzID0gZXJyLnN0YXR1c0NvZGUgPSA0MDA7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvcm91dGVyL2xheWVyLmpzXG4vLyBtb2R1bGUgaWQgPSA5MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV4cHJlc3NcbiAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDEzIFJvbWFuIFNodHlsbWFuXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgbWVyZ2UgPSByZXF1aXJlKCd1dGlscy1tZXJnZScpXG52YXIgcGFyc2VVcmwgPSByZXF1aXJlKCdwYXJzZXVybCcpO1xudmFyIHFzID0gcmVxdWlyZSgncXMnKTtcblxuLyoqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcXVlcnkob3B0aW9ucykge1xuICB2YXIgb3B0cyA9IG1lcmdlKHt9LCBvcHRpb25zKVxuICB2YXIgcXVlcnlwYXJzZSA9IHFzLnBhcnNlO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHF1ZXJ5cGFyc2UgPSBvcHRpb25zO1xuICAgIG9wdHMgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAob3B0cyAhPT0gdW5kZWZpbmVkICYmIG9wdHMuYWxsb3dQcm90b3R5cGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBiYWNrLWNvbXBhdCBmb3IgcXMgbW9kdWxlXG4gICAgb3B0cy5hbGxvd1Byb3RvdHlwZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXJ5KHJlcSwgcmVzLCBuZXh0KXtcbiAgICBpZiAoIXJlcS5xdWVyeSkge1xuICAgICAgdmFyIHZhbCA9IHBhcnNlVXJsKHJlcSkucXVlcnk7XG4gICAgICByZXEucXVlcnkgPSBxdWVyeXBhcnNlKHZhbCwgb3B0cyk7XG4gICAgfVxuXG4gICAgbmV4dCgpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi9taWRkbGV3YXJlL3F1ZXJ5LmpzXG4vLyBtb2R1bGUgaWQgPSA5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiBlc2xpbnQtZGlzYWJsZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpICovXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJylcbnZhciBCdWZmZXIgPSBidWZmZXIuQnVmZmVyXG5cbi8vIGFsdGVybmF0aXZlIHRvIHVzaW5nIE9iamVjdC5rZXlzIGZvciBvbGQgYnJvd3NlcnNcbmZ1bmN0aW9uIGNvcHlQcm9wcyAoc3JjLCBkc3QpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGRzdFtrZXldID0gc3JjW2tleV1cbiAgfVxufVxuaWYgKEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5hbGxvYyAmJiBCdWZmZXIuYWxsb2NVbnNhZmUgJiYgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGJ1ZmZlclxufSBlbHNlIHtcbiAgLy8gQ29weSBwcm9wZXJ0aWVzIGZyb20gcmVxdWlyZSgnYnVmZmVyJylcbiAgY29weVByb3BzKGJ1ZmZlciwgZXhwb3J0cylcbiAgZXhwb3J0cy5CdWZmZXIgPSBTYWZlQnVmZmVyXG59XG5cbmZ1bmN0aW9uIFNhZmVCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXJcbmNvcHlQcm9wcyhCdWZmZXIsIFNhZmVCdWZmZXIpXG5cblNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWYuZmlsbCgwKVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKHNpemUpXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBidWZmZXIuU2xvd0J1ZmZlcihzaXplKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGNvbnRlbnQtZGlzcG9zaXRpb25cbiAqIENvcHlyaWdodChjKSAyMDE0IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnREaXNwb3NpdGlvblxubW9kdWxlLmV4cG9ydHMucGFyc2UgPSBwYXJzZVxuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxudmFyIGJhc2VuYW1lID0gcmVxdWlyZSgncGF0aCcpLmJhc2VuYW1lXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIG5vbiBhdHRyLWNoYXIsICphZnRlciogZW5jb2RlVVJJQ29tcG9uZW50IChpLmUuIG5vdCBpbmNsdWRpbmcgXCIlXCIpXG4gKi9cblxudmFyIEVOQ09ERV9VUkxfQVRUUl9DSEFSX1JFR0VYUCA9IC9bXFx4MDAtXFx4MjBcIicoKSosLzo7PD0+P0BbXFxcXFxcXXt9XFx4N2ZdL2cgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb250cm9sLXJlZ2V4XG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHBlcmNlbnQgZW5jb2RpbmcgZXNjYXBlLlxuICovXG5cbnZhciBIRVhfRVNDQVBFX1JFR0VYUCA9IC8lWzAtOUEtRmEtZl17Mn0vXG52YXIgSEVYX0VTQ0FQRV9SRVBMQUNFX1JFR0VYUCA9IC8lKFswLTlBLUZhLWZdezJ9KS9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIG5vbi1sYXRpbjEgY2hhcmFjdGVycy5cbiAqL1xuXG52YXIgTk9OX0xBVElOMV9SRUdFWFAgPSAvW15cXHgyMC1cXHg3ZVxceGEwLVxceGZmXS9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHF1b3RlZC1wYWlyIGluIFJGQyAyNjE2XG4gKlxuICogcXVvdGVkLXBhaXIgPSBcIlxcXCIgQ0hBUlxuICogQ0hBUiAgICAgICAgPSA8YW55IFVTLUFTQ0lJIGNoYXJhY3RlciAob2N0ZXRzIDAgLSAxMjcpPlxuICovXG5cbnZhciBRRVNDX1JFR0VYUCA9IC9cXFxcKFtcXHUwMDAwLVxcdTAwN2ZdKS9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGNoYXJzIHRoYXQgbXVzdCBiZSBxdW90ZWQtcGFpciBpbiBSRkMgMjYxNlxuICovXG5cbnZhciBRVU9URV9SRUdFWFAgPSAvKFtcXFxcXCJdKS9nXG5cbi8qKlxuICogUmVnRXhwIGZvciB2YXJpb3VzIFJGQyAyNjE2IGdyYW1tYXJcbiAqXG4gKiBwYXJhbWV0ZXIgICAgID0gdG9rZW4gXCI9XCIgKCB0b2tlbiB8IHF1b3RlZC1zdHJpbmcgKVxuICogdG9rZW4gICAgICAgICA9IDEqPGFueSBDSEFSIGV4Y2VwdCBDVExzIG9yIHNlcGFyYXRvcnM+XG4gKiBzZXBhcmF0b3JzICAgID0gXCIoXCIgfCBcIilcIiB8IFwiPFwiIHwgXCI+XCIgfCBcIkBcIlxuICogICAgICAgICAgICAgICB8IFwiLFwiIHwgXCI7XCIgfCBcIjpcIiB8IFwiXFxcIiB8IDxcIj5cbiAqICAgICAgICAgICAgICAgfCBcIi9cIiB8IFwiW1wiIHwgXCJdXCIgfCBcIj9cIiB8IFwiPVwiXG4gKiAgICAgICAgICAgICAgIHwgXCJ7XCIgfCBcIn1cIiB8IFNQIHwgSFRcbiAqIHF1b3RlZC1zdHJpbmcgPSAoIDxcIj4gKihxZHRleHQgfCBxdW90ZWQtcGFpciApIDxcIj4gKVxuICogcWR0ZXh0ICAgICAgICA9IDxhbnkgVEVYVCBleGNlcHQgPFwiPj5cbiAqIHF1b3RlZC1wYWlyICAgPSBcIlxcXCIgQ0hBUlxuICogQ0hBUiAgICAgICAgICA9IDxhbnkgVVMtQVNDSUkgY2hhcmFjdGVyIChvY3RldHMgMCAtIDEyNyk+XG4gKiBURVhUICAgICAgICAgID0gPGFueSBPQ1RFVCBleGNlcHQgQ1RMcywgYnV0IGluY2x1ZGluZyBMV1M+XG4gKiBMV1MgICAgICAgICAgID0gW0NSTEZdIDEqKCBTUCB8IEhUIClcbiAqIENSTEYgICAgICAgICAgPSBDUiBMRlxuICogQ1IgICAgICAgICAgICA9IDxVUy1BU0NJSSBDUiwgY2FycmlhZ2UgcmV0dXJuICgxMyk+XG4gKiBMRiAgICAgICAgICAgID0gPFVTLUFTQ0lJIExGLCBsaW5lZmVlZCAoMTApPlxuICogU1AgICAgICAgICAgICA9IDxVUy1BU0NJSSBTUCwgc3BhY2UgKDMyKT5cbiAqIEhUICAgICAgICAgICAgPSA8VVMtQVNDSUkgSFQsIGhvcml6b250YWwtdGFiICg5KT5cbiAqIENUTCAgICAgICAgICAgPSA8YW55IFVTLUFTQ0lJIGNvbnRyb2wgY2hhcmFjdGVyIChvY3RldHMgMCAtIDMxKSBhbmQgREVMICgxMjcpPlxuICogT0NURVQgICAgICAgICA9IDxhbnkgOC1iaXQgc2VxdWVuY2Ugb2YgZGF0YT5cbiAqL1xuXG52YXIgUEFSQU1fUkVHRVhQID0gLztbXFx4MDlcXHgyMF0qKFshIyQlJicqKy4wLTlBLVpeX2BhLXp8fi1dKylbXFx4MDlcXHgyMF0qPVtcXHgwOVxceDIwXSooXCIoPzpbXFx4MjAhXFx4MjMtXFx4NWJcXHg1ZC1cXHg3ZVxceDgwLVxceGZmXXxcXFxcW1xceDIwLVxceDdlXSkqXCJ8WyEjJCUmJyorLjAtOUEtWl5fYGEtenx+LV0rKVtcXHgwOVxceDIwXSovZyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbnZhciBURVhUX1JFR0VYUCA9IC9eW1xceDIwLVxceDdlXFx4ODAtXFx4ZmZdKyQvXG52YXIgVE9LRU5fUkVHRVhQID0gL15bISMkJSYnKisuMC05QS1aXl9gYS16fH4tXSskL1xuXG4vKipcbiAqIFJlZ0V4cCBmb3IgdmFyaW91cyBSRkMgNTk4NyBncmFtbWFyXG4gKlxuICogZXh0LXZhbHVlICAgICA9IGNoYXJzZXQgIFwiJ1wiIFsgbGFuZ3VhZ2UgXSBcIidcIiB2YWx1ZS1jaGFyc1xuICogY2hhcnNldCAgICAgICA9IFwiVVRGLThcIiAvIFwiSVNPLTg4NTktMVwiIC8gbWltZS1jaGFyc2V0XG4gKiBtaW1lLWNoYXJzZXQgID0gMSptaW1lLWNoYXJzZXRjXG4gKiBtaW1lLWNoYXJzZXRjID0gQUxQSEEgLyBESUdJVFxuICogICAgICAgICAgICAgICAvIFwiIVwiIC8gXCIjXCIgLyBcIiRcIiAvIFwiJVwiIC8gXCImXCJcbiAqICAgICAgICAgICAgICAgLyBcIitcIiAvIFwiLVwiIC8gXCJeXCIgLyBcIl9cIiAvIFwiYFwiXG4gKiAgICAgICAgICAgICAgIC8gXCJ7XCIgLyBcIn1cIiAvIFwiflwiXG4gKiBsYW5ndWFnZSAgICAgID0gKCAyKjNBTFBIQSBbIGV4dGxhbmcgXSApXG4gKiAgICAgICAgICAgICAgIC8gNEFMUEhBXG4gKiAgICAgICAgICAgICAgIC8gNSo4QUxQSEFcbiAqIGV4dGxhbmcgICAgICAgPSAqMyggXCItXCIgM0FMUEhBIClcbiAqIHZhbHVlLWNoYXJzICAgPSAqKCBwY3QtZW5jb2RlZCAvIGF0dHItY2hhciApXG4gKiBwY3QtZW5jb2RlZCAgID0gXCIlXCIgSEVYRElHIEhFWERJR1xuICogYXR0ci1jaGFyICAgICA9IEFMUEhBIC8gRElHSVRcbiAqICAgICAgICAgICAgICAgLyBcIiFcIiAvIFwiI1wiIC8gXCIkXCIgLyBcIiZcIiAvIFwiK1wiIC8gXCItXCIgLyBcIi5cIlxuICogICAgICAgICAgICAgICAvIFwiXlwiIC8gXCJfXCIgLyBcImBcIiAvIFwifFwiIC8gXCJ+XCJcbiAqL1xuXG52YXIgRVhUX1ZBTFVFX1JFR0VYUCA9IC9eKFtBLVphLXowLTkhIyQlJitcXC1eX2B7fX5dKyknKD86W0EtWmEtel17MiwzfSg/Oi1bQS1aYS16XXszfSl7MCwzfXxbQS1aYS16XXs0LDh9fCknKCg/OiVbMC05QS1GYS1mXXsyfXxbQS1aYS16MC05ISMkJisuXl9gfH4tXSkrKSQvXG5cbi8qKlxuICogUmVnRXhwIGZvciB2YXJpb3VzIFJGQyA2MjY2IGdyYW1tYXJcbiAqXG4gKiBkaXNwb3NpdGlvbi10eXBlID0gXCJpbmxpbmVcIiB8IFwiYXR0YWNobWVudFwiIHwgZGlzcC1leHQtdHlwZVxuICogZGlzcC1leHQtdHlwZSAgICA9IHRva2VuXG4gKiBkaXNwb3NpdGlvbi1wYXJtID0gZmlsZW5hbWUtcGFybSB8IGRpc3AtZXh0LXBhcm1cbiAqIGZpbGVuYW1lLXBhcm0gICAgPSBcImZpbGVuYW1lXCIgXCI9XCIgdmFsdWVcbiAqICAgICAgICAgICAgICAgICAgfCBcImZpbGVuYW1lKlwiIFwiPVwiIGV4dC12YWx1ZVxuICogZGlzcC1leHQtcGFybSAgICA9IHRva2VuIFwiPVwiIHZhbHVlXG4gKiAgICAgICAgICAgICAgICAgIHwgZXh0LXRva2VuIFwiPVwiIGV4dC12YWx1ZVxuICogZXh0LXRva2VuICAgICAgICA9IDx0aGUgY2hhcmFjdGVycyBpbiB0b2tlbiwgZm9sbG93ZWQgYnkgXCIqXCI+XG4gKi9cblxudmFyIERJU1BPU0lUSU9OX1RZUEVfUkVHRVhQID0gL14oWyEjJCUmJyorLjAtOUEtWl5fYGEtenx+LV0rKVtcXHgwOVxceDIwXSooPzokfDspLyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcblxuLyoqXG4gKiBDcmVhdGUgYW4gYXR0YWNobWVudCBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVuYW1lXVxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnR5cGU9YXR0YWNobWVudF1cbiAqIEBwYXJhbSB7c3RyaW5nfGJvb2xlYW59IFtvcHRpb25zLmZhbGxiYWNrPXRydWVdXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGNvbnRlbnREaXNwb3NpdGlvbiAoZmlsZW5hbWUsIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9XG5cbiAgLy8gZ2V0IHR5cGVcbiAgdmFyIHR5cGUgPSBvcHRzLnR5cGUgfHwgJ2F0dGFjaG1lbnQnXG5cbiAgLy8gZ2V0IHBhcmFtZXRlcnNcbiAgdmFyIHBhcmFtcyA9IGNyZWF0ZXBhcmFtcyhmaWxlbmFtZSwgb3B0cy5mYWxsYmFjaylcblxuICAvLyBmb3JtYXQgaW50byBzdHJpbmdcbiAgcmV0dXJuIGZvcm1hdChuZXcgQ29udGVudERpc3Bvc2l0aW9uKHR5cGUsIHBhcmFtcykpXG59XG5cbi8qKlxuICogQ3JlYXRlIHBhcmFtZXRlcnMgb2JqZWN0IGZyb20gZmlsZW5hbWUgYW5kIGZhbGxiYWNrLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmlsZW5hbWVdXG4gKiBAcGFyYW0ge3N0cmluZ3xib29sZWFufSBbZmFsbGJhY2s9dHJ1ZV1cbiAqIEByZXR1cm4ge29iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZXBhcmFtcyAoZmlsZW5hbWUsIGZhbGxiYWNrKSB7XG4gIGlmIChmaWxlbmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgcGFyYW1zID0ge31cblxuICBpZiAodHlwZW9mIGZpbGVuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ZpbGVuYW1lIG11c3QgYmUgYSBzdHJpbmcnKVxuICB9XG5cbiAgLy8gZmFsbGJhY2sgZGVmYXVsdHMgdG8gdHJ1ZVxuICBpZiAoZmFsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIGZhbGxiYWNrID0gdHJ1ZVxuICB9XG5cbiAgaWYgKHR5cGVvZiBmYWxsYmFjayAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIGZhbGxiYWNrICE9PSAnYm9vbGVhbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmYWxsYmFjayBtdXN0IGJlIGEgc3RyaW5nIG9yIGJvb2xlYW4nKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBmYWxsYmFjayA9PT0gJ3N0cmluZycgJiYgTk9OX0xBVElOMV9SRUdFWFAudGVzdChmYWxsYmFjaykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmYWxsYmFjayBtdXN0IGJlIElTTy04ODU5LTEgc3RyaW5nJylcbiAgfVxuXG4gIC8vIHJlc3RyaWN0IHRvIGZpbGUgYmFzZSBuYW1lXG4gIHZhciBuYW1lID0gYmFzZW5hbWUoZmlsZW5hbWUpXG5cbiAgLy8gZGV0ZXJtaW5lIGlmIG5hbWUgaXMgc3VpdGFibGUgZm9yIHF1b3RlZCBzdHJpbmdcbiAgdmFyIGlzUXVvdGVkU3RyaW5nID0gVEVYVF9SRUdFWFAudGVzdChuYW1lKVxuXG4gIC8vIGdlbmVyYXRlIGZhbGxiYWNrIG5hbWVcbiAgdmFyIGZhbGxiYWNrTmFtZSA9IHR5cGVvZiBmYWxsYmFjayAhPT0gJ3N0cmluZydcbiAgICA/IGZhbGxiYWNrICYmIGdldGxhdGluMShuYW1lKVxuICAgIDogYmFzZW5hbWUoZmFsbGJhY2spXG4gIHZhciBoYXNGYWxsYmFjayA9IHR5cGVvZiBmYWxsYmFja05hbWUgPT09ICdzdHJpbmcnICYmIGZhbGxiYWNrTmFtZSAhPT0gbmFtZVxuXG4gIC8vIHNldCBleHRlbmRlZCBmaWxlbmFtZSBwYXJhbWV0ZXJcbiAgaWYgKGhhc0ZhbGxiYWNrIHx8ICFpc1F1b3RlZFN0cmluZyB8fCBIRVhfRVNDQVBFX1JFR0VYUC50ZXN0KG5hbWUpKSB7XG4gICAgcGFyYW1zWydmaWxlbmFtZSonXSA9IG5hbWVcbiAgfVxuXG4gIC8vIHNldCBmaWxlbmFtZSBwYXJhbWV0ZXJcbiAgaWYgKGlzUXVvdGVkU3RyaW5nIHx8IGhhc0ZhbGxiYWNrKSB7XG4gICAgcGFyYW1zLmZpbGVuYW1lID0gaGFzRmFsbGJhY2tcbiAgICAgID8gZmFsbGJhY2tOYW1lXG4gICAgICA6IG5hbWVcbiAgfVxuXG4gIHJldHVybiBwYXJhbXNcbn1cblxuLyoqXG4gKiBGb3JtYXQgb2JqZWN0IHRvIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmpcbiAqIEBwYXJhbSB7c3RyaW5nfSBvYmoudHlwZVxuICogQHBhcmFtIHtvYmplY3R9IFtvYmoucGFyYW1ldGVyc11cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZvcm1hdCAob2JqKSB7XG4gIHZhciBwYXJhbWV0ZXJzID0gb2JqLnBhcmFtZXRlcnNcbiAgdmFyIHR5cGUgPSBvYmoudHlwZVxuXG4gIGlmICghdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycgfHwgIVRPS0VOX1JFR0VYUC50ZXN0KHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCB0eXBlJylcbiAgfVxuXG4gIC8vIHN0YXJ0IHdpdGggbm9ybWFsaXplZCB0eXBlXG4gIHZhciBzdHJpbmcgPSBTdHJpbmcodHlwZSkudG9Mb3dlckNhc2UoKVxuXG4gIC8vIGFwcGVuZCBwYXJhbWV0ZXJzXG4gIGlmIChwYXJhbWV0ZXJzICYmIHR5cGVvZiBwYXJhbWV0ZXJzID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBwYXJhbVxuICAgIHZhciBwYXJhbXMgPSBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5zb3J0KClcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwYXJhbSA9IHBhcmFtc1tpXVxuXG4gICAgICB2YXIgdmFsID0gcGFyYW0uc3Vic3RyKC0xKSA9PT0gJyonXG4gICAgICAgID8gdXN0cmluZyhwYXJhbWV0ZXJzW3BhcmFtXSlcbiAgICAgICAgOiBxc3RyaW5nKHBhcmFtZXRlcnNbcGFyYW1dKVxuXG4gICAgICBzdHJpbmcgKz0gJzsgJyArIHBhcmFtICsgJz0nICsgdmFsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cmluZ1xufVxuXG4vKipcbiAqIERlY29kZSBhIFJGQyA2OTg3IGZpZWxkIHZhbHVlIChncmFjZWZ1bGx5KS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBkZWNvZGVmaWVsZCAoc3RyKSB7XG4gIHZhciBtYXRjaCA9IEVYVF9WQUxVRV9SRUdFWFAuZXhlYyhzdHIpXG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgZXh0ZW5kZWQgZmllbGQgdmFsdWUnKVxuICB9XG5cbiAgdmFyIGNoYXJzZXQgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG4gIHZhciBlbmNvZGVkID0gbWF0Y2hbMl1cbiAgdmFyIHZhbHVlXG5cbiAgLy8gdG8gYmluYXJ5IHN0cmluZ1xuICB2YXIgYmluYXJ5ID0gZW5jb2RlZC5yZXBsYWNlKEhFWF9FU0NBUEVfUkVQTEFDRV9SRUdFWFAsIHBkZWNvZGUpXG5cbiAgc3dpdGNoIChjaGFyc2V0KSB7XG4gICAgY2FzZSAnaXNvLTg4NTktMSc6XG4gICAgICB2YWx1ZSA9IGdldGxhdGluMShiaW5hcnkpXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgIHZhbHVlID0gbmV3IEJ1ZmZlcihiaW5hcnksICdiaW5hcnknKS50b1N0cmluZygndXRmOCcpXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCBjaGFyc2V0IGluIGV4dGVuZGVkIGZpZWxkJylcbiAgfVxuXG4gIHJldHVybiB2YWx1ZVxufVxuXG4vKipcbiAqIEdldCBJU08tODg1OS0xIHZlcnNpb24gb2Ygc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldGxhdGluMSAodmFsKSB7XG4gIC8vIHNpbXBsZSBVbmljb2RlIC0+IElTTy04ODU5LTEgdHJhbnNmb3JtYXRpb25cbiAgcmV0dXJuIFN0cmluZyh2YWwpLnJlcGxhY2UoTk9OX0xBVElOMV9SRUdFWFAsICc/Jylcbn1cblxuLyoqXG4gKiBQYXJzZSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlciBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7b2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2UgKHN0cmluZykge1xuICBpZiAoIXN0cmluZyB8fCB0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHN0cmluZyBpcyByZXF1aXJlZCcpXG4gIH1cblxuICB2YXIgbWF0Y2ggPSBESVNQT1NJVElPTl9UWVBFX1JFR0VYUC5leGVjKHN0cmluZylcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCB0eXBlIGZvcm1hdCcpXG4gIH1cblxuICAvLyBub3JtYWxpemUgdHlwZVxuICB2YXIgaW5kZXggPSBtYXRjaFswXS5sZW5ndGhcbiAgdmFyIHR5cGUgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIGtleVxuICB2YXIgbmFtZXMgPSBbXVxuICB2YXIgcGFyYW1zID0ge31cbiAgdmFyIHZhbHVlXG5cbiAgLy8gY2FsY3VsYXRlIGluZGV4IHRvIHN0YXJ0IGF0XG4gIGluZGV4ID0gUEFSQU1fUkVHRVhQLmxhc3RJbmRleCA9IG1hdGNoWzBdLnN1YnN0cigtMSkgPT09ICc7J1xuICAgID8gaW5kZXggLSAxXG4gICAgOiBpbmRleFxuXG4gIC8vIG1hdGNoIHBhcmFtZXRlcnNcbiAgd2hpbGUgKChtYXRjaCA9IFBBUkFNX1JFR0VYUC5leGVjKHN0cmluZykpKSB7XG4gICAgaWYgKG1hdGNoLmluZGV4ICE9PSBpbmRleCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgICB9XG5cbiAgICBpbmRleCArPSBtYXRjaFswXS5sZW5ndGhcbiAgICBrZXkgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG4gICAgdmFsdWUgPSBtYXRjaFsyXVxuXG4gICAgaWYgKG5hbWVzLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgZHVwbGljYXRlIHBhcmFtZXRlcicpXG4gICAgfVxuXG4gICAgbmFtZXMucHVzaChrZXkpXG5cbiAgICBpZiAoa2V5LmluZGV4T2YoJyonKSArIDEgPT09IGtleS5sZW5ndGgpIHtcbiAgICAgIC8vIGRlY29kZSBleHRlbmRlZCB2YWx1ZVxuICAgICAga2V5ID0ga2V5LnNsaWNlKDAsIC0xKVxuICAgICAgdmFsdWUgPSBkZWNvZGVmaWVsZCh2YWx1ZSlcblxuICAgICAgLy8gb3ZlcndyaXRlIGV4aXN0aW5nIHZhbHVlXG4gICAgICBwYXJhbXNba2V5XSA9IHZhbHVlXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcGFyYW1zW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmICh2YWx1ZVswXSA9PT0gJ1wiJykge1xuICAgICAgLy8gcmVtb3ZlIHF1b3RlcyBhbmQgZXNjYXBlc1xuICAgICAgdmFsdWUgPSB2YWx1ZVxuICAgICAgICAuc3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpXG4gICAgICAgIC5yZXBsYWNlKFFFU0NfUkVHRVhQLCAnJDEnKVxuICAgIH1cblxuICAgIHBhcmFtc1trZXldID0gdmFsdWVcbiAgfVxuXG4gIGlmIChpbmRleCAhPT0gLTEgJiYgaW5kZXggIT09IHN0cmluZy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHBhcmFtZXRlciBmb3JtYXQnKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBDb250ZW50RGlzcG9zaXRpb24odHlwZSwgcGFyYW1zKVxufVxuXG4vKipcbiAqIFBlcmNlbnQgZGVjb2RlIGEgc2luZ2xlIGNoYXJhY3Rlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge3N0cmluZ30gaGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwZGVjb2RlIChzdHIsIGhleCkge1xuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChoZXgsIDE2KSlcbn1cblxuLyoqXG4gKiBQZXJjZW50IGVuY29kZSBhIHNpbmdsZSBjaGFyYWN0ZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNoYXJcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBlbmNvZGUgKGNoYXIpIHtcbiAgdmFyIGhleCA9IFN0cmluZyhjaGFyKVxuICAgIC5jaGFyQ29kZUF0KDApXG4gICAgLnRvU3RyaW5nKDE2KVxuICAgIC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBoZXgubGVuZ3RoID09PSAxXG4gICAgPyAnJTAnICsgaGV4XG4gICAgOiAnJScgKyBoZXhcbn1cblxuLyoqXG4gKiBRdW90ZSBhIHN0cmluZyBmb3IgSFRUUC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBxc3RyaW5nICh2YWwpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyh2YWwpXG5cbiAgcmV0dXJuICdcIicgKyBzdHIucmVwbGFjZShRVU9URV9SRUdFWFAsICdcXFxcJDEnKSArICdcIidcbn1cblxuLyoqXG4gKiBFbmNvZGUgYSBVbmljb2RlIHN0cmluZyBmb3IgSFRUUCAoUkZDIDU5ODcpLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHVzdHJpbmcgKHZhbCkge1xuICB2YXIgc3RyID0gU3RyaW5nKHZhbClcblxuICAvLyBwZXJjZW50IGVuY29kZSBhcyBVVEYtOFxuICB2YXIgZW5jb2RlZCA9IGVuY29kZVVSSUNvbXBvbmVudChzdHIpXG4gICAgLnJlcGxhY2UoRU5DT0RFX1VSTF9BVFRSX0NIQVJfUkVHRVhQLCBwZW5jb2RlKVxuXG4gIHJldHVybiAnVVRGLThcXCdcXCcnICsgZW5jb2RlZFxufVxuXG4vKipcbiAqIENsYXNzIGZvciBwYXJzZWQgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIgZm9yIHY4IG9wdGltaXphdGlvblxuICovXG5cbmZ1bmN0aW9uIENvbnRlbnREaXNwb3NpdGlvbiAodHlwZSwgcGFyYW1ldGVycykge1xuICB0aGlzLnR5cGUgPSB0eXBlXG4gIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnNcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb250ZW50LWRpc3Bvc2l0aW9uL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV0YWdcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTYgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZXRhZ1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKVxudmFyIFN0YXRzID0gcmVxdWlyZSgnZnMnKS5TdGF0c1xuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxuLyoqXG4gKiBHZW5lcmF0ZSBhbiBlbnRpdHkgdGFnLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfHN0cmluZ30gZW50aXR5XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGVudGl0eXRhZyAoZW50aXR5KSB7XG4gIGlmIChlbnRpdHkubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gZmFzdC1wYXRoIGVtcHR5XG4gICAgcmV0dXJuICdcIjAtMmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrXCInXG4gIH1cblxuICAvLyBjb21wdXRlIGhhc2ggb2YgZW50aXR5XG4gIHZhciBoYXNoID0gY3J5cHRvXG4gICAgLmNyZWF0ZUhhc2goJ3NoYTEnKVxuICAgIC51cGRhdGUoZW50aXR5LCAndXRmOCcpXG4gICAgLmRpZ2VzdCgnYmFzZTY0JylcbiAgICAuc3Vic3RyaW5nKDAsIDI3KVxuXG4gIC8vIGNvbXB1dGUgbGVuZ3RoIG9mIGVudGl0eVxuICB2YXIgbGVuID0gdHlwZW9mIGVudGl0eSA9PT0gJ3N0cmluZydcbiAgICA/IEJ1ZmZlci5ieXRlTGVuZ3RoKGVudGl0eSwgJ3V0ZjgnKVxuICAgIDogZW50aXR5Lmxlbmd0aFxuXG4gIHJldHVybiAnXCInICsgbGVuLnRvU3RyaW5nKDE2KSArICctJyArIGhhc2ggKyAnXCInXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc2ltcGxlIEVUYWcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfFN0YXRzfSBlbnRpdHlcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMud2Vha11cbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBldGFnIChlbnRpdHksIG9wdGlvbnMpIHtcbiAgaWYgKGVudGl0eSA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgZW50aXR5IGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIC8vIHN1cHBvcnQgZnMuU3RhdHMgb2JqZWN0XG4gIHZhciBpc1N0YXRzID0gaXNzdGF0cyhlbnRpdHkpXG4gIHZhciB3ZWFrID0gb3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy53ZWFrID09PSAnYm9vbGVhbidcbiAgICA/IG9wdGlvbnMud2Vha1xuICAgIDogaXNTdGF0c1xuXG4gIC8vIHZhbGlkYXRlIGFyZ3VtZW50XG4gIGlmICghaXNTdGF0cyAmJiB0eXBlb2YgZW50aXR5ICE9PSAnc3RyaW5nJyAmJiAhQnVmZmVyLmlzQnVmZmVyKGVudGl0eSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBlbnRpdHkgbXVzdCBiZSBzdHJpbmcsIEJ1ZmZlciwgb3IgZnMuU3RhdHMnKVxuICB9XG5cbiAgLy8gZ2VuZXJhdGUgZW50aXR5IHRhZ1xuICB2YXIgdGFnID0gaXNTdGF0c1xuICAgID8gc3RhdHRhZyhlbnRpdHkpXG4gICAgOiBlbnRpdHl0YWcoZW50aXR5KVxuXG4gIHJldHVybiB3ZWFrXG4gICAgPyAnVy8nICsgdGFnXG4gICAgOiB0YWdcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgb2JqZWN0IGlzIGEgU3RhdHMgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBpc3N0YXRzIChvYmopIHtcbiAgLy8gZ2VudWluZSBmcy5TdGF0c1xuICBpZiAodHlwZW9mIFN0YXRzID09PSAnZnVuY3Rpb24nICYmIG9iaiBpbnN0YW5jZW9mIFN0YXRzKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIHF1YWNrIHF1YWNrXG4gIHJldHVybiBvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiZcbiAgICAnY3RpbWUnIGluIG9iaiAmJiB0b1N0cmluZy5jYWxsKG9iai5jdGltZSkgPT09ICdbb2JqZWN0IERhdGVdJyAmJlxuICAgICdtdGltZScgaW4gb2JqICYmIHRvU3RyaW5nLmNhbGwob2JqLm10aW1lKSA9PT0gJ1tvYmplY3QgRGF0ZV0nICYmXG4gICAgJ2lubycgaW4gb2JqICYmIHR5cGVvZiBvYmouaW5vID09PSAnbnVtYmVyJyAmJlxuICAgICdzaXplJyBpbiBvYmogJiYgdHlwZW9mIG9iai5zaXplID09PSAnbnVtYmVyJ1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgdGFnIGZvciBhIHN0YXQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHN0YXRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc3RhdHRhZyAoc3RhdCkge1xuICB2YXIgbXRpbWUgPSBzdGF0Lm10aW1lLmdldFRpbWUoKS50b1N0cmluZygxNilcbiAgdmFyIHNpemUgPSBzdGF0LnNpemUudG9TdHJpbmcoMTYpXG5cbiAgcmV0dXJuICdcIicgKyBzaXplICsgJy0nICsgbXRpbWUgKyAnXCInXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXRhZy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBmcmVzaFxuICogQ29weXJpZ2h0KGMpIDIwMTIgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDE2LTIwMTcgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIFJlZ0V4cCB0byBjaGVjayBmb3Igbm8tY2FjaGUgdG9rZW4gaW4gQ2FjaGUtQ29udHJvbC5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIENBQ0hFX0NPTlRST0xfTk9fQ0FDSEVfUkVHRVhQID0gLyg/Ol58LClcXHMqP25vLWNhY2hlXFxzKj8oPzosfCQpL1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnJlc2hcblxuLyoqXG4gKiBDaGVjayBmcmVzaG5lc3Mgb2YgdGhlIHJlc3BvbnNlIHVzaW5nIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGhlYWRlcnMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHJlcUhlYWRlcnNcbiAqIEBwYXJhbSB7T2JqZWN0fSByZXNIZWFkZXJzXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZyZXNoIChyZXFIZWFkZXJzLCByZXNIZWFkZXJzKSB7XG4gIC8vIGZpZWxkc1xuICB2YXIgbW9kaWZpZWRTaW5jZSA9IHJlcUhlYWRlcnNbJ2lmLW1vZGlmaWVkLXNpbmNlJ11cbiAgdmFyIG5vbmVNYXRjaCA9IHJlcUhlYWRlcnNbJ2lmLW5vbmUtbWF0Y2gnXVxuXG4gIC8vIHVuY29uZGl0aW9uYWwgcmVxdWVzdFxuICBpZiAoIW1vZGlmaWVkU2luY2UgJiYgIW5vbmVNYXRjaCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gQWx3YXlzIHJldHVybiBzdGFsZSB3aGVuIENhY2hlLUNvbnRyb2w6IG5vLWNhY2hlXG4gIC8vIHRvIHN1cHBvcnQgZW5kLXRvLWVuZCByZWxvYWQgcmVxdWVzdHNcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI2MTYjc2VjdGlvbi0xNC45LjRcbiAgdmFyIGNhY2hlQ29udHJvbCA9IHJlcUhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXVxuICBpZiAoY2FjaGVDb250cm9sICYmIENBQ0hFX0NPTlRST0xfTk9fQ0FDSEVfUkVHRVhQLnRlc3QoY2FjaGVDb250cm9sKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gaWYtbm9uZS1tYXRjaFxuICBpZiAobm9uZU1hdGNoICYmIG5vbmVNYXRjaCAhPT0gJyonKSB7XG4gICAgdmFyIGV0YWcgPSByZXNIZWFkZXJzWydldGFnJ11cblxuICAgIGlmICghZXRhZykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIGV0YWdTdGFsZSA9IHRydWVcbiAgICB2YXIgbWF0Y2hlcyA9IHBhcnNlVG9rZW5MaXN0KG5vbmVNYXRjaClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBtYXRjaCA9IG1hdGNoZXNbaV1cbiAgICAgIGlmIChtYXRjaCA9PT0gZXRhZyB8fCBtYXRjaCA9PT0gJ1cvJyArIGV0YWcgfHwgJ1cvJyArIG1hdGNoID09PSBldGFnKSB7XG4gICAgICAgIGV0YWdTdGFsZSA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV0YWdTdGFsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLy8gaWYtbW9kaWZpZWQtc2luY2VcbiAgaWYgKG1vZGlmaWVkU2luY2UpIHtcbiAgICB2YXIgbGFzdE1vZGlmaWVkID0gcmVzSGVhZGVyc1snbGFzdC1tb2RpZmllZCddXG4gICAgdmFyIG1vZGlmaWVkU3RhbGUgPSAhbGFzdE1vZGlmaWVkIHx8ICEocGFyc2VIdHRwRGF0ZShsYXN0TW9kaWZpZWQpIDw9IHBhcnNlSHR0cERhdGUobW9kaWZpZWRTaW5jZSkpXG5cbiAgICBpZiAobW9kaWZpZWRTdGFsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBQYXJzZSBhbiBIVFRQIERhdGUgaW50byBhIG51bWJlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0ZVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZUh0dHBEYXRlIChkYXRlKSB7XG4gIHZhciB0aW1lc3RhbXAgPSBkYXRlICYmIERhdGUucGFyc2UoZGF0ZSlcblxuICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZ3VhcmQgYWdhaW5zdCBkYXRlLmpzIERhdGUucGFyc2UgcGF0Y2hpbmdcbiAgcmV0dXJuIHR5cGVvZiB0aW1lc3RhbXAgPT09ICdudW1iZXInXG4gICAgPyB0aW1lc3RhbXBcbiAgICA6IE5hTlxufVxuXG4vKipcbiAqIFBhcnNlIGEgSFRUUCB0b2tlbiBsaXN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VUb2tlbkxpc3QgKHN0cikge1xuICB2YXIgZW5kID0gMFxuICB2YXIgbGlzdCA9IFtdXG4gIHZhciBzdGFydCA9IDBcblxuICAvLyBnYXRoZXIgdG9rZW5zXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICBjYXNlIDB4MjA6IC8qICAgKi9cbiAgICAgICAgaWYgKHN0YXJ0ID09PSBlbmQpIHtcbiAgICAgICAgICBzdGFydCA9IGVuZCA9IGkgKyAxXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMHgyYzogLyogLCAqL1xuICAgICAgICBsaXN0LnB1c2goc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKSlcbiAgICAgICAgc3RhcnQgPSBlbmQgPSBpICsgMVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZW5kID0gaSArIDFcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvLyBmaW5hbCB0b2tlblxuICBsaXN0LnB1c2goc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKSlcblxuICByZXR1cm4gbGlzdFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ZyZXNoL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIHJhbmdlLXBhcnNlclxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTUtMjAxNiBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByYW5nZVBhcnNlclxuXG4vKipcbiAqIFBhcnNlIFwiUmFuZ2VcIiBoZWFkZXIgYHN0cmAgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIGZpbGUgYHNpemVgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBzaXplXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiByYW5nZVBhcnNlciAoc2l6ZSwgc3RyLCBvcHRpb25zKSB7XG4gIHZhciBpbmRleCA9IHN0ci5pbmRleE9mKCc9JylcblxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIC0yXG4gIH1cblxuICAvLyBzcGxpdCB0aGUgcmFuZ2Ugc3RyaW5nXG4gIHZhciBhcnIgPSBzdHIuc2xpY2UoaW5kZXggKyAxKS5zcGxpdCgnLCcpXG4gIHZhciByYW5nZXMgPSBbXVxuXG4gIC8vIGFkZCByYW5nZXMgdHlwZVxuICByYW5nZXMudHlwZSA9IHN0ci5zbGljZSgwLCBpbmRleClcblxuICAvLyBwYXJzZSBhbGwgcmFuZ2VzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJhbmdlID0gYXJyW2ldLnNwbGl0KCctJylcbiAgICB2YXIgc3RhcnQgPSBwYXJzZUludChyYW5nZVswXSwgMTApXG4gICAgdmFyIGVuZCA9IHBhcnNlSW50KHJhbmdlWzFdLCAxMClcblxuICAgIC8vIC1ubm5cbiAgICBpZiAoaXNOYU4oc3RhcnQpKSB7XG4gICAgICBzdGFydCA9IHNpemUgLSBlbmRcbiAgICAgIGVuZCA9IHNpemUgLSAxXG4gICAgLy8gbm5uLVxuICAgIH0gZWxzZSBpZiAoaXNOYU4oZW5kKSkge1xuICAgICAgZW5kID0gc2l6ZSAtIDFcbiAgICB9XG5cbiAgICAvLyBsaW1pdCBsYXN0LWJ5dGUtcG9zIHRvIGN1cnJlbnQgbGVuZ3RoXG4gICAgaWYgKGVuZCA+IHNpemUgLSAxKSB7XG4gICAgICBlbmQgPSBzaXplIC0gMVxuICAgIH1cblxuICAgIC8vIGludmFsaWQgb3IgdW5zYXRpc2lmaWFibGVcbiAgICBpZiAoaXNOYU4oc3RhcnQpIHx8IGlzTmFOKGVuZCkgfHwgc3RhcnQgPiBlbmQgfHwgc3RhcnQgPCAwKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIGFkZCByYW5nZVxuICAgIHJhbmdlcy5wdXNoKHtcbiAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgIGVuZDogZW5kXG4gICAgfSlcbiAgfVxuXG4gIGlmIChyYW5nZXMubGVuZ3RoIDwgMSkge1xuICAgIC8vIHVuc2F0aXNpZmlhYmxlXG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLmNvbWJpbmVcbiAgICA/IGNvbWJpbmVSYW5nZXMocmFuZ2VzKVxuICAgIDogcmFuZ2VzXG59XG5cbi8qKlxuICogQ29tYmluZSBvdmVybGFwcGluZyAmIGFkamFjZW50IHJhbmdlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29tYmluZVJhbmdlcyAocmFuZ2VzKSB7XG4gIHZhciBvcmRlcmVkID0gcmFuZ2VzLm1hcChtYXBXaXRoSW5kZXgpLnNvcnQoc29ydEJ5UmFuZ2VTdGFydClcblxuICBmb3IgKHZhciBqID0gMCwgaSA9IDE7IGkgPCBvcmRlcmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJhbmdlID0gb3JkZXJlZFtpXVxuICAgIHZhciBjdXJyZW50ID0gb3JkZXJlZFtqXVxuXG4gICAgaWYgKHJhbmdlLnN0YXJ0ID4gY3VycmVudC5lbmQgKyAxKSB7XG4gICAgICAvLyBuZXh0IHJhbmdlXG4gICAgICBvcmRlcmVkWysral0gPSByYW5nZVxuICAgIH0gZWxzZSBpZiAocmFuZ2UuZW5kID4gY3VycmVudC5lbmQpIHtcbiAgICAgIC8vIGV4dGVuZCByYW5nZVxuICAgICAgY3VycmVudC5lbmQgPSByYW5nZS5lbmRcbiAgICAgIGN1cnJlbnQuaW5kZXggPSBNYXRoLm1pbihjdXJyZW50LmluZGV4LCByYW5nZS5pbmRleClcbiAgICB9XG4gIH1cblxuICAvLyB0cmltIG9yZGVyZWQgYXJyYXlcbiAgb3JkZXJlZC5sZW5ndGggPSBqICsgMVxuXG4gIC8vIGdlbmVyYXRlIGNvbWJpbmVkIHJhbmdlXG4gIHZhciBjb21iaW5lZCA9IG9yZGVyZWQuc29ydChzb3J0QnlSYW5nZUluZGV4KS5tYXAobWFwV2l0aG91dEluZGV4KVxuXG4gIC8vIGNvcHkgcmFuZ2VzIHR5cGVcbiAgY29tYmluZWQudHlwZSA9IHJhbmdlcy50eXBlXG5cbiAgcmV0dXJuIGNvbWJpbmVkXG59XG5cbi8qKlxuICogTWFwIGZ1bmN0aW9uIHRvIGFkZCBpbmRleCB2YWx1ZSB0byByYW5nZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG1hcFdpdGhJbmRleCAocmFuZ2UsIGluZGV4KSB7XG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IHJhbmdlLnN0YXJ0LFxuICAgIGVuZDogcmFuZ2UuZW5kLFxuICAgIGluZGV4OiBpbmRleFxuICB9XG59XG5cbi8qKlxuICogTWFwIGZ1bmN0aW9uIHRvIHJlbW92ZSBpbmRleCB2YWx1ZSBmcm9tIHJhbmdlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbWFwV2l0aG91dEluZGV4IChyYW5nZSkge1xuICByZXR1cm4ge1xuICAgIHN0YXJ0OiByYW5nZS5zdGFydCxcbiAgICBlbmQ6IHJhbmdlLmVuZFxuICB9XG59XG5cbi8qKlxuICogU29ydCBmdW5jdGlvbiB0byBzb3J0IHJhbmdlcyBieSBpbmRleC5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc29ydEJ5UmFuZ2VJbmRleCAoYSwgYikge1xuICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXhcbn1cblxuLyoqXG4gKiBTb3J0IGZ1bmN0aW9uIHRvIHNvcnQgcmFuZ2VzIGJ5IHN0YXJ0IHBvc2l0aW9uLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzb3J0QnlSYW5nZVN0YXJ0IChhLCBiKSB7XG4gIHJldHVybiBhLnN0YXJ0IC0gYi5zdGFydFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3JhbmdlLXBhcnNlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBwcm94eS1hZGRyXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE2IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3h5YWRkclxubW9kdWxlLmV4cG9ydHMuYWxsID0gYWxsYWRkcnNcbm1vZHVsZS5leHBvcnRzLmNvbXBpbGUgPSBjb21waWxlXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGZvcndhcmRlZCA9IHJlcXVpcmUoJ2ZvcndhcmRlZCcpXG52YXIgaXBhZGRyID0gcmVxdWlyZSgnaXBhZGRyLmpzJylcblxuLyoqXG4gKiBWYXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBESUdJVF9SRUdFWFAgPSAvXlswLTldKyQvXG52YXIgaXNpcCA9IGlwYWRkci5pc1ZhbGlkXG52YXIgcGFyc2VpcCA9IGlwYWRkci5wYXJzZVxuXG4vKipcbiAqIFByZS1kZWZpbmVkIElQIHJhbmdlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIElQX1JBTkdFUyA9IHtcbiAgbGlua2xvY2FsOiBbJzE2OS4yNTQuMC4wLzE2JywgJ2ZlODA6Oi8xMCddLFxuICBsb29wYmFjazogWycxMjcuMC4wLjEvOCcsICc6OjEvMTI4J10sXG4gIHVuaXF1ZWxvY2FsOiBbJzEwLjAuMC4wLzgnLCAnMTcyLjE2LjAuMC8xMicsICcxOTIuMTY4LjAuMC8xNicsICdmYzAwOjovNyddXG59XG5cbi8qKlxuICogR2V0IGFsbCBhZGRyZXNzZXMgaW4gdGhlIHJlcXVlc3QsIG9wdGlvbmFsbHkgc3RvcHBpbmdcbiAqIGF0IHRoZSBmaXJzdCB1bnRydXN0ZWQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHJlcXVlc3RcbiAqIEBwYXJhbSB7RnVuY3Rpb258QXJyYXl8U3RyaW5nfSBbdHJ1c3RdXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gYWxsYWRkcnMgKHJlcSwgdHJ1c3QpIHtcbiAgLy8gZ2V0IGFkZHJlc3Nlc1xuICB2YXIgYWRkcnMgPSBmb3J3YXJkZWQocmVxKVxuXG4gIGlmICghdHJ1c3QpIHtcbiAgICAvLyBSZXR1cm4gYWxsIGFkZHJlc3Nlc1xuICAgIHJldHVybiBhZGRyc1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0cnVzdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRydXN0ID0gY29tcGlsZSh0cnVzdClcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWRkcnMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgaWYgKHRydXN0KGFkZHJzW2ldLCBpKSkgY29udGludWVcblxuICAgIGFkZHJzLmxlbmd0aCA9IGkgKyAxXG4gIH1cblxuICByZXR1cm4gYWRkcnNcbn1cblxuLyoqXG4gKiBDb21waWxlIGFyZ3VtZW50IGludG8gdHJ1c3QgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHtBcnJheXxTdHJpbmd9IHZhbFxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb21waWxlICh2YWwpIHtcbiAgaWYgKCF2YWwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBpcyByZXF1aXJlZCcpXG4gIH1cblxuICB2YXIgdHJ1c3RcblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB0cnVzdCA9IFt2YWxdXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgdHJ1c3QgPSB2YWwuc2xpY2UoKVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Vuc3VwcG9ydGVkIHRydXN0IGFyZ3VtZW50JylcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdHJ1c3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YWwgPSB0cnVzdFtpXVxuXG4gICAgaWYgKCFJUF9SQU5HRVMuaGFzT3duUHJvcGVydHkodmFsKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBTcGxpY2UgaW4gcHJlLWRlZmluZWQgcmFuZ2VcbiAgICB2YWwgPSBJUF9SQU5HRVNbdmFsXVxuICAgIHRydXN0LnNwbGljZS5hcHBseSh0cnVzdCwgW2ksIDFdLmNvbmNhdCh2YWwpKVxuICAgIGkgKz0gdmFsLmxlbmd0aCAtIDFcbiAgfVxuXG4gIHJldHVybiBjb21waWxlVHJ1c3QoY29tcGlsZVJhbmdlU3VibmV0cyh0cnVzdCkpXG59XG5cbi8qKlxuICogQ29tcGlsZSBgYXJyYCBlbGVtZW50cyBpbnRvIHJhbmdlIHN1Ym5ldHMuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJyXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbXBpbGVSYW5nZVN1Ym5ldHMgKGFycikge1xuICB2YXIgcmFuZ2VTdWJuZXRzID0gbmV3IEFycmF5KGFyci5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICByYW5nZVN1Ym5ldHNbaV0gPSBwYXJzZWlwTm90YXRpb24oYXJyW2ldKVxuICB9XG5cbiAgcmV0dXJuIHJhbmdlU3VibmV0c1xufVxuXG4vKipcbiAqIENvbXBpbGUgcmFuZ2Ugc3VibmV0IGFycmF5IGludG8gdHJ1c3QgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHtBcnJheX0gcmFuZ2VTdWJuZXRzXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbXBpbGVUcnVzdCAocmFuZ2VTdWJuZXRzKSB7XG4gIC8vIFJldHVybiBvcHRpbWl6ZWQgZnVuY3Rpb24gYmFzZWQgb24gbGVuZ3RoXG4gIHZhciBsZW4gPSByYW5nZVN1Ym5ldHMubGVuZ3RoXG4gIHJldHVybiBsZW4gPT09IDBcbiAgICA/IHRydXN0Tm9uZVxuICAgIDogbGVuID09PSAxXG4gICAgICA/IHRydXN0U2luZ2xlKHJhbmdlU3VibmV0c1swXSlcbiAgICAgIDogdHJ1c3RNdWx0aShyYW5nZVN1Ym5ldHMpXG59XG5cbi8qKlxuICogUGFyc2UgSVAgbm90YXRpb24gc3RyaW5nIGludG8gcmFuZ2Ugc3VibmV0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBub3RlXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlaXBOb3RhdGlvbiAobm90ZSkge1xuICB2YXIgcG9zID0gbm90ZS5sYXN0SW5kZXhPZignLycpXG4gIHZhciBzdHIgPSBwb3MgIT09IC0xXG4gICAgPyBub3RlLnN1YnN0cmluZygwLCBwb3MpXG4gICAgOiBub3RlXG5cbiAgaWYgKCFpc2lwKHN0cikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIElQIGFkZHJlc3M6ICcgKyBzdHIpXG4gIH1cblxuICB2YXIgaXAgPSBwYXJzZWlwKHN0cilcblxuICBpZiAocG9zID09PSAtMSAmJiBpcC5raW5kKCkgPT09ICdpcHY2JyAmJiBpcC5pc0lQdjRNYXBwZWRBZGRyZXNzKCkpIHtcbiAgICAvLyBTdG9yZSBhcyBJUHY0XG4gICAgaXAgPSBpcC50b0lQdjRBZGRyZXNzKClcbiAgfVxuXG4gIHZhciBtYXggPSBpcC5raW5kKCkgPT09ICdpcHY2J1xuICAgID8gMTI4XG4gICAgOiAzMlxuXG4gIHZhciByYW5nZSA9IHBvcyAhPT0gLTFcbiAgICA/IG5vdGUuc3Vic3RyaW5nKHBvcyArIDEsIG5vdGUubGVuZ3RoKVxuICAgIDogbnVsbFxuXG4gIGlmIChyYW5nZSA9PT0gbnVsbCkge1xuICAgIHJhbmdlID0gbWF4XG4gIH0gZWxzZSBpZiAoRElHSVRfUkVHRVhQLnRlc3QocmFuZ2UpKSB7XG4gICAgcmFuZ2UgPSBwYXJzZUludChyYW5nZSwgMTApXG4gIH0gZWxzZSBpZiAoaXAua2luZCgpID09PSAnaXB2NCcgJiYgaXNpcChyYW5nZSkpIHtcbiAgICByYW5nZSA9IHBhcnNlTmV0bWFzayhyYW5nZSlcbiAgfSBlbHNlIHtcbiAgICByYW5nZSA9IG51bGxcbiAgfVxuXG4gIGlmIChyYW5nZSA8PSAwIHx8IHJhbmdlID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCByYW5nZSBvbiBhZGRyZXNzOiAnICsgbm90ZSlcbiAgfVxuXG4gIHJldHVybiBbaXAsIHJhbmdlXVxufVxuXG4vKipcbiAqIFBhcnNlIG5ldG1hc2sgc3RyaW5nIGludG8gQ0lEUiByYW5nZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmV0bWFza1xuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZU5ldG1hc2sgKG5ldG1hc2spIHtcbiAgdmFyIGlwID0gcGFyc2VpcChuZXRtYXNrKVxuICB2YXIga2luZCA9IGlwLmtpbmQoKVxuXG4gIHJldHVybiBraW5kID09PSAnaXB2NCdcbiAgICA/IGlwLnByZWZpeExlbmd0aEZyb21TdWJuZXRNYXNrKClcbiAgICA6IG51bGxcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgYWRkcmVzcyBvZiBwcm94aWVkIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHJlcXVlc3RcbiAqIEBwYXJhbSB7RnVuY3Rpb258QXJyYXl8U3RyaW5nfSB0cnVzdFxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHByb3h5YWRkciAocmVxLCB0cnVzdCkge1xuICBpZiAoIXJlcSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcSBhcmd1bWVudCBpcyByZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoIXRydXN0KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndHJ1c3QgYXJndW1lbnQgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgdmFyIGFkZHJzID0gYWxsYWRkcnMocmVxLCB0cnVzdClcbiAgdmFyIGFkZHIgPSBhZGRyc1thZGRycy5sZW5ndGggLSAxXVxuXG4gIHJldHVybiBhZGRyXG59XG5cbi8qKlxuICogU3RhdGljIHRydXN0IGZ1bmN0aW9uIHRvIHRydXN0IG5vdGhpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiB0cnVzdE5vbmUgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBDb21waWxlIHRydXN0IGZ1bmN0aW9uIGZvciBtdWx0aXBsZSBzdWJuZXRzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHN1Ym5ldHNcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gdHJ1c3RNdWx0aSAoc3VibmV0cykge1xuICByZXR1cm4gZnVuY3Rpb24gdHJ1c3QgKGFkZHIpIHtcbiAgICBpZiAoIWlzaXAoYWRkcikpIHJldHVybiBmYWxzZVxuXG4gICAgdmFyIGlwID0gcGFyc2VpcChhZGRyKVxuICAgIHZhciBpcGNvbnZcbiAgICB2YXIga2luZCA9IGlwLmtpbmQoKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJuZXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc3VibmV0ID0gc3VibmV0c1tpXVxuICAgICAgdmFyIHN1Ym5ldGlwID0gc3VibmV0WzBdXG4gICAgICB2YXIgc3VibmV0a2luZCA9IHN1Ym5ldGlwLmtpbmQoKVxuICAgICAgdmFyIHN1Ym5ldHJhbmdlID0gc3VibmV0WzFdXG4gICAgICB2YXIgdHJ1c3RlZCA9IGlwXG5cbiAgICAgIGlmIChraW5kICE9PSBzdWJuZXRraW5kKSB7XG4gICAgICAgIGlmIChzdWJuZXRraW5kID09PSAnaXB2NCcgJiYgIWlwLmlzSVB2NE1hcHBlZEFkZHJlc3MoKSkge1xuICAgICAgICAgIC8vIEluY29tcGF0aWJsZSBJUCBhZGRyZXNzZXNcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpcGNvbnYpIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IElQIHRvIG1hdGNoIHN1Ym5ldCBJUCBraW5kXG4gICAgICAgICAgaXBjb252ID0gc3VibmV0a2luZCA9PT0gJ2lwdjQnXG4gICAgICAgICAgICA/IGlwLnRvSVB2NEFkZHJlc3MoKVxuICAgICAgICAgICAgOiBpcC50b0lQdjRNYXBwZWRBZGRyZXNzKClcbiAgICAgICAgfVxuXG4gICAgICAgIHRydXN0ZWQgPSBpcGNvbnZcbiAgICAgIH1cblxuICAgICAgaWYgKHRydXN0ZWQubWF0Y2goc3VibmV0aXAsIHN1Ym5ldHJhbmdlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8qKlxuICogQ29tcGlsZSB0cnVzdCBmdW5jdGlvbiBmb3Igc2luZ2xlIHN1Ym5ldC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gc3VibmV0XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHRydXN0U2luZ2xlIChzdWJuZXQpIHtcbiAgdmFyIHN1Ym5ldGlwID0gc3VibmV0WzBdXG4gIHZhciBzdWJuZXRraW5kID0gc3VibmV0aXAua2luZCgpXG4gIHZhciBzdWJuZXRpc2lwdjQgPSBzdWJuZXRraW5kID09PSAnaXB2NCdcbiAgdmFyIHN1Ym5ldHJhbmdlID0gc3VibmV0WzFdXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHRydXN0IChhZGRyKSB7XG4gICAgaWYgKCFpc2lwKGFkZHIpKSByZXR1cm4gZmFsc2VcblxuICAgIHZhciBpcCA9IHBhcnNlaXAoYWRkcilcbiAgICB2YXIga2luZCA9IGlwLmtpbmQoKVxuXG4gICAgaWYgKGtpbmQgIT09IHN1Ym5ldGtpbmQpIHtcbiAgICAgIGlmIChzdWJuZXRpc2lwdjQgJiYgIWlwLmlzSVB2NE1hcHBlZEFkZHJlc3MoKSkge1xuICAgICAgICAvLyBJbmNvbXBhdGlibGUgSVAgYWRkcmVzc2VzXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICAvLyBDb252ZXJ0IElQIHRvIG1hdGNoIHN1Ym5ldCBJUCBraW5kXG4gICAgICBpcCA9IHN1Ym5ldGlzaXB2NFxuICAgICAgICA/IGlwLnRvSVB2NEFkZHJlc3MoKVxuICAgICAgICA6IGlwLnRvSVB2NE1hcHBlZEFkZHJlc3MoKVxuICAgIH1cblxuICAgIHJldHVybiBpcC5tYXRjaChzdWJuZXRpcCwgc3VibmV0cmFuZ2UpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9wcm94eS1hZGRyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzXG4vLyBtb2R1bGUgaWQgPSA5OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGRQcyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcHMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2lmcmFtZScpO1xuICB2YXIgaSA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIHJlcXVpcmUoJy4vX2h0bWwnKS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gJ2phdmFzY3JpcHQ6JzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zY3JpcHQtdXJsXG4gIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7XG4gIC8vIGh0bWwucmVtb3ZlQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArICdzY3JpcHQnICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnL3NjcmlwdCcgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAoaS0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2ldXTtcbiAgcmV0dXJuIGNyZWF0ZURpY3QoKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBhbk9iamVjdChPKTtcbiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY29mKGl0KSA9PSAnU3RyaW5nJyA/IGl0LnNwbGl0KCcnKSA6IE9iamVjdChpdCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE4IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qc1xuLy8gbW9kdWxlIGlkID0gMTAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG5tb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qc1xuLy8gbW9kdWxlIGlkID0gMTA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1vYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDEwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yTWV0aG9kID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCAhPSB1bmRlZmluZWQpIHJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gNy4zLjIwIFNwZWNpZXNDb25zdHJ1Y3RvcihPLCBkZWZhdWx0Q29uc3RydWN0b3IpXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBEKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IEQgOiBhRnVuY3Rpb24oUyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGludm9rZSA9IHJlcXVpcmUoJy4vX2ludm9rZScpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuL19odG1sJyk7XG52YXIgY2VsID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBzZXRUYXNrID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhclRhc2sgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBkZWZlciwgY2hhbm5lbCwgcG9ydDtcbnZhciBydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpZCA9ICt0aGlzO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xudmFyIGxpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gIHJ1bi5jYWxsKGV2ZW50LmRhdGEpO1xufTtcbi8vIE5vZGUuanMgMC45KyAmIElFMTArIGhhcyBzZXRJbW1lZGlhdGUsIG90aGVyd2lzZTpcbmlmICghc2V0VGFzayB8fCAhY2xlYXJUYXNrKSB7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pIHtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIHZhciBpID0gMTtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAgICAgaW52b2tlKHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nID8gZm4gOiBGdW5jdGlvbihmbiksIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyVGFzayA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2VzcycpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUpIERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3coY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBsaXN0ZW5lcjtcbiAgICBkZWZlciA9IGN0eChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZiAoT05SRUFEWVNUQVRFQ0hBTkdFIGluIGNlbCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjZWwoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHNldFRpbWVvdXQoY3R4KHJ1biwgaWQsIDEpLCAwKTtcbiAgICB9O1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190YXNrLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiB7IGU6IGZhbHNlLCB2OiBleGVjKCkgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7IGU6IHRydWUsIHY6IGUgfTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcGVyZm9ybS5qc1xuLy8gbW9kdWxlIGlkID0gMTEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuL19uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb21pc2UtcmVzb2x2ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVkpIHtcbiAgdmFyIEMgPSB0eXBlb2YgY29yZVtLRVldID09ICdmdW5jdGlvbicgPyBjb3JlW0tFWV0gOiBnbG9iYWxbS0VZXTtcbiAgaWYgKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pIGRQLmYoQywgU1BFQ0lFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtc3BlY2llcy5qc1xuLy8gbW9kdWxlIGlkID0gMTEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBnZXRKc29uRGF0YVN5bmMsIHdyaXRlSnNvbkRhdGFTeW5jIH0gIGZyb20gJy4vanNvbic7XG5pbXBvcnQgeyBNRVRSSUNTX1BBVEggfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmZ1bmN0aW9uIHNhdmVUYXJnZXRzKHRhcmdldHMpIHtcbiAgbGV0IG1ldHJpY3MgPSBbXTtcbiAgZm9yIChsZXQgdGFyZ2V0IG9mIHRhcmdldHMpIHtcbiAgICBtZXRyaWNzLnB1c2goc2F2ZVRhcmdldCh0YXJnZXQpKTtcbiAgfVxuICByZXR1cm4gbWV0cmljcztcbn1cblxuZnVuY3Rpb24gc2F2ZVRhcmdldCh0YXJnZXQpIHtcbiAgLy9jb25zdCBtZDUgPSBjcnlwdG8uY3JlYXRlSGFzaCgnbWQ1JylcbiAgY29uc3QgdGFyZ2V0SWQgPSBjcnlwdG8uY3JlYXRlSGFzaCgnbWQ1JykudXBkYXRlKEpTT04uc3RyaW5naWZ5KHRhcmdldCkpLmRpZ2VzdCgnaGV4Jyk7XG4gIGxldCBmaWxlbmFtZSA9IHBhdGguam9pbihNRVRSSUNTX1BBVEgsIGAke3RhcmdldElkfS5qc29uYCk7XG4gIHdyaXRlSnNvbkRhdGFTeW5jKGZpbGVuYW1lLCB0YXJnZXQpO1xuICByZXR1cm4gdGFyZ2V0SWQ7XG59XG5cbmZ1bmN0aW9uIGdldFRhcmdldCh0YXJnZXRJZCkge1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oTUVUUklDU19QQVRILCBgJHt0YXJnZXRJZH0uanNvbmApO1xuICByZXR1cm4gZ2V0SnNvbkRhdGFTeW5jKGZpbGVuYW1lKTtcbn1cblxuZXhwb3J0IHsgc2F2ZVRhcmdldHMsIGdldFRhcmdldCB9XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zZXJ2aWNlcy9tZXRyaWNzLnRzIiwidmFyIFN0cmVhbSA9IHJlcXVpcmUoXCJzdHJlYW1cIilcbnZhciB3cml0ZU1ldGhvZHMgPSBbXCJ3cml0ZVwiLCBcImVuZFwiLCBcImRlc3Ryb3lcIl1cbnZhciByZWFkTWV0aG9kcyA9IFtcInJlc3VtZVwiLCBcInBhdXNlXCJdXG52YXIgcmVhZEV2ZW50cyA9IFtcImRhdGFcIiwgXCJjbG9zZVwiXVxudmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlXG5cbm1vZHVsZS5leHBvcnRzID0gZHVwbGV4XG5cbmZ1bmN0aW9uIGZvckVhY2ggKGFyciwgZm4pIHtcbiAgICBpZiAoYXJyLmZvckVhY2gpIHtcbiAgICAgICAgcmV0dXJuIGFyci5mb3JFYWNoKGZuKVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZuKGFycltpXSwgaSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGR1cGxleCh3cml0ZXIsIHJlYWRlcikge1xuICAgIHZhciBzdHJlYW0gPSBuZXcgU3RyZWFtKClcbiAgICB2YXIgZW5kZWQgPSBmYWxzZVxuXG4gICAgZm9yRWFjaCh3cml0ZU1ldGhvZHMsIHByb3h5V3JpdGVyKVxuXG4gICAgZm9yRWFjaChyZWFkTWV0aG9kcywgcHJveHlSZWFkZXIpXG5cbiAgICBmb3JFYWNoKHJlYWRFdmVudHMsIHByb3h5U3RyZWFtKVxuXG4gICAgcmVhZGVyLm9uKFwiZW5kXCIsIGhhbmRsZUVuZClcblxuICAgIHdyaXRlci5vbihcImRyYWluXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgc3RyZWFtLmVtaXQoXCJkcmFpblwiKVxuICAgIH0pXG5cbiAgICB3cml0ZXIub24oXCJlcnJvclwiLCByZWVtaXQpXG4gICAgcmVhZGVyLm9uKFwiZXJyb3JcIiwgcmVlbWl0KVxuXG4gICAgc3RyZWFtLndyaXRhYmxlID0gd3JpdGVyLndyaXRhYmxlXG4gICAgc3RyZWFtLnJlYWRhYmxlID0gcmVhZGVyLnJlYWRhYmxlXG5cbiAgICByZXR1cm4gc3RyZWFtXG5cbiAgICBmdW5jdGlvbiBwcm94eVdyaXRlcihtZXRob2ROYW1lKSB7XG4gICAgICAgIHN0cmVhbVttZXRob2ROYW1lXSA9IG1ldGhvZFxuXG4gICAgICAgIGZ1bmN0aW9uIG1ldGhvZCgpIHtcbiAgICAgICAgICAgIHJldHVybiB3cml0ZXJbbWV0aG9kTmFtZV0uYXBwbHkod3JpdGVyLCBhcmd1bWVudHMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm94eVJlYWRlcihtZXRob2ROYW1lKSB7XG4gICAgICAgIHN0cmVhbVttZXRob2ROYW1lXSA9IG1ldGhvZFxuXG4gICAgICAgIGZ1bmN0aW9uIG1ldGhvZCgpIHtcbiAgICAgICAgICAgIHN0cmVhbS5lbWl0KG1ldGhvZE5hbWUpXG4gICAgICAgICAgICB2YXIgZnVuYyA9IHJlYWRlclttZXRob2ROYW1lXVxuICAgICAgICAgICAgaWYgKGZ1bmMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuYy5hcHBseShyZWFkZXIsIGFyZ3VtZW50cylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlYWRlci5lbWl0KG1ldGhvZE5hbWUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm94eVN0cmVhbShtZXRob2ROYW1lKSB7XG4gICAgICAgIHJlYWRlci5vbihtZXRob2ROYW1lLCByZWVtaXQpXG5cbiAgICAgICAgZnVuY3Rpb24gcmVlbWl0KCkge1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cylcbiAgICAgICAgICAgIGFyZ3MudW5zaGlmdChtZXRob2ROYW1lKVxuICAgICAgICAgICAgc3RyZWFtLmVtaXQuYXBwbHkoc3RyZWFtLCBhcmdzKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlRW5kKCkge1xuICAgICAgICBpZiAoZW5kZWQpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGVuZGVkID0gdHJ1ZVxuICAgICAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzKVxuICAgICAgICBhcmdzLnVuc2hpZnQoXCJlbmRcIilcbiAgICAgICAgc3RyZWFtLmVtaXQuYXBwbHkoc3RyZWFtLCBhcmdzKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlZW1pdChlcnIpIHtcbiAgICAgICAgc3RyZWFtLmVtaXQoXCJlcnJvclwiLCBlcnIpXG4gICAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2R1cGxleGVyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIE1FVEEgPSByZXF1aXJlKCcuL191aWQnKSgnbWV0YScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgc2V0RGVzYyA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG52YXIgaWQgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHJ1ZTtcbn07XG52YXIgRlJFRVpFID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNFeHRlbnNpYmxlKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpO1xufSk7XG52YXIgc2V0TWV0YSA9IGZ1bmN0aW9uIChpdCkge1xuICBzZXREZXNjKGl0LCBNRVRBLCB7IHZhbHVlOiB7XG4gICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElEXG4gICAgdzoge30gICAgICAgICAgLy8gd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSB9KTtcbn07XG52YXIgZmFzdEtleSA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIC8vIHJldHVybiBwcmltaXRpdmUgd2l0aCBwcmVmaXhcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYgKCFjcmVhdGUpIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gaGFzaCB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IHJldHVybiBpdFtNRVRBXS53O1xufTtcbi8vIGFkZCBtZXRhZGF0YSBvbiBmcmVlemUtZmFtaWx5IG1ldGhvZHMgY2FsbGluZ1xudmFyIG9uRnJlZXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiBNRVRBLFxuICBORUVEOiBmYWxzZSxcbiAgZmFzdEtleTogZmFzdEtleSxcbiAgZ2V0V2VhazogZ2V0V2VhayxcbiAgb25GcmVlemU6IG9uRnJlZXplXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19tZXRhLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgVFlQRSkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSB8fCBpdC5fdCAhPT0gVFlQRSkgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdmFsaWRhdGUtY29sbGVjdGlvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vaW1wb3J0ICogYXMgVGVsZWdyYWYgZnJvbSAndGVsZWdyYWYnXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgREFUQV9QQVRIIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IGdldEpzb25EYXRhU3luYywgd3JpdGVKc29uRGF0YVN5bmMgfSBmcm9tICcuL2pzb24nO1xuaW1wb3J0IHsgQW5vbWFseUlkIH0gZnJvbSAnLi9hbm9tYWx5VHlwZSc7XG5cblxudHlwZSBTdWJzY3JpYmVySWQgPSBzdHJpbmc7XG50eXBlIFN1YnNjcmliZXJzTWFwID0gTWFwPCBBbm9tYWx5SWQsIFN1YnNjcmliZXJJZFtdID47XG5cbnR5cGUgQm90Q29uZmlnID0ge1xuICB0b2tlbjogc3RyaW5nLFxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpYmVyc01hcFxufTtcblxuZnVuY3Rpb24gc2VuZE5vdGlmaWNhdGlvbihhbm9tYWx5TmFtZSwgYWN0aXZlKSB7XG4gIGNvbnNvbGUubG9nKCdOb3RpZmljYXRpb24gJyArIGFub21hbHlOYW1lKTtcbiAgaWYoYW5vbWFseU5hbWUgaW4gYm90Q29uZmlnLnN1YnNjcmlwdGlvbnMpIHtcbiAgICBsZXQgbm90aWZpY2F0aW9uTWVzc2FnZTtcbiAgICBpZihhY3RpdmUpIHtcbiAgICAgIG5vdGlmaWNhdGlvbk1lc3NhZ2UgPSAnQWxlcnQhIEFub21hbHkgdHlwZSAnICsgYW5vbWFseU5hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vdGlmaWNhdGlvbk1lc3NhZ2UgPSAnT2shIEFub21hbHkgdHlwZSAnICsgYW5vbWFseU5hbWU7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgU3Vic2NyaWJlcklkIG9mIGJvdENvbmZpZy5zdWJzY3JpcHRpb25zW2Fub21hbHlOYW1lXSkge1xuICAgICAgYm90LnRlbGVncmFtLnNlbmRNZXNzYWdlKFN1YnNjcmliZXJJZCwgbm90aWZpY2F0aW9uTWVzc2FnZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGxvYWRCb3RDb25maWcoKSA6IEJvdENvbmZpZyB7XG4gIGxldCBmaWxlbmFtZSA9IHBhdGguam9pbihEQVRBX1BBVEgsIGBib3RfY29uZmlnLmpzb25gKTtcbiAgbGV0IGpzb25EYXRhO1xuICB0cnkge1xuICAgIGpzb25EYXRhID0gZ2V0SnNvbkRhdGFTeW5jKGZpbGVuYW1lKTtcbiAgfSBjYXRjaChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpO1xuICAgIGpzb25EYXRhID0gW107XG4gIH1cbiAgcmV0dXJuIGpzb25EYXRhO1xufVxuXG5mdW5jdGlvbiBzYXZlQm90Q29uZmlnKGJvdENvbmZpZzogQm90Q29uZmlnKSB7XG4gIGxldCBmaWxlbmFtZSA9IHBhdGguam9pbihEQVRBX1BBVEgsIGBib3RfY29uZmlnLmpzb25gKTtcbiAgdHJ5IHtcbiAgICB3cml0ZUpzb25EYXRhU3luYyhmaWxlbmFtZSwgYm90Q29uZmlnKTtcbiAgfSBjYXRjaChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpO1xuICB9XG59XG5cbmNvbnN0IGNvbW1hbmRBcmdzID0gKGN0eCwgbmV4dCkgPT4ge1xuICB0cnkge1xuICAgIGlmKGN0eC51cGRhdGVUeXBlID09PSAnbWVzc2FnZScpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBjdHgudXBkYXRlLm1lc3NhZ2UudGV4dDtcbiAgICAgIGlmKHRleHQgIT09IHVuZGVmaW5lZCAmJiB0ZXh0LnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goL15cXC8oW15cXHNdKylcXHM/KC4rKT8vKTtcbiAgICAgICAgbGV0IGFyZ3MgPSBbXTtcbiAgICAgICAgbGV0IGNvbW1hbmQ7XG4gICAgICAgIGlmKG1hdGNoICE9PSBudWxsKSB7XG4gICAgICAgICAgaWYobWF0Y2hbMV0pIHtcbiAgICAgICAgICAgIGNvbW1hbmQgPSBtYXRjaFsxXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYobWF0Y2hbMl0pIHtcbiAgICAgICAgICAgIGFyZ3MgPSBtYXRjaFsyXS5zcGxpdCgnICcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjdHguc3RhdGUuY29tbWFuZCA9IHtcbiAgICAgICAgICByYXc6IHRleHQsXG4gICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICBhcmdzLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV4dChjdHgpO1xuICB9IGNhdGNoIChlKSB7XG5cbiAgfVxufTtcblxuZnVuY3Rpb24gYWRkTm90aWZpY2F0aW9uKGN0eCkge1xuICBjb25zb2xlLmxvZygnYWRkTm90aWZpY2F0aW9uJylcbiAgbGV0IGNvbW1hbmQgPSBjdHguc3RhdGUuY29tbWFuZDtcbiAgbGV0IGNoYXRJZCA9IGN0eC5jaGF0LmlkO1xuICBpZihjb21tYW5kLmFyZ3MubGVuZ3RoID4gMCkge1xuICAgIGZvciAobGV0IGFub21hbHlOYW1lIG9mIGNvbW1hbmQuYXJncykge1xuICAgICAgaWYoIShhbm9tYWx5TmFtZSBpbiBib3RDb25maWcuc3Vic2NyaXB0aW9ucykpIHtcbiAgICAgICAgYm90Q29uZmlnLnN1YnNjcmlwdGlvbnNbYW5vbWFseU5hbWVdID0gW11cbiAgICAgIH1cbiAgICAgIGlmKGJvdENvbmZpZy5zdWJzY3JpcHRpb25zW2Fub21hbHlOYW1lXS5pbmNsdWRlcyhjaGF0SWQpKSB7XG4gICAgICAgIHJldHVybiBjdHgucmVwbHkoJ1lvdSBhcmUgYWxyZWFkeSBzdWJzY3JpYmVkIG9uIGFsZXJ0cyBmcm9tIGFub21hbHkgJyArIGNvbW1hbmQuYXJncylcbiAgICAgIH0gIGVsc2Uge1xuICAgICAgICBib3RDb25maWcuc3Vic2NyaXB0aW9uc1thbm9tYWx5TmFtZV0ucHVzaChjaGF0SWQpO1xuICAgICAgICBzYXZlQm90Q29uZmlnKGJvdENvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdHgucmVwbHkoJ1lvdSBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHN1YnNjcmliZWQgb24gYWxlcnRzIGZyb20gYW5vbWFseSAnICsgY29tbWFuZC5hcmdzKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjdHgucmVwbHkoJ1lvdSBzaG91bGQgdXNlIHN5bnRheDogXFwvYWRkTm90aWZpY2F0aW9uIDxhbm9tYWx5X25hbWU+JylcbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVOb3RpZmljYXRpb24oY3R4KSB7XG4gIGxldCBjb21tYW5kID0gY3R4LnN0YXRlLmNvbW1hbmQ7XG4gIGxldCBjaGF0SWQgPSBjdHguY2hhdC5pZDtcbiAgaWYoY29tbWFuZC5hcmdzLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKGxldCBhbm9tYWx5TmFtZSBvZiBjb21tYW5kLmFyZ3MpIHtcbiAgICAgIGlmKGFub21hbHlOYW1lIGluIGJvdENvbmZpZy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgIGJvdENvbmZpZy5zdWJzY3JpcHRpb25zW2Fub21hbHlOYW1lXSA9IGJvdENvbmZpZy5zdWJzY3JpcHRpb25zW2Fub21hbHlOYW1lXS5maWx0ZXIoZWwgPT4gZWwgIT09IGNoYXRJZCk7XG4gICAgICAgIHNhdmVCb3RDb25maWcoYm90Q29uZmlnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGN0eC5yZXBseSgnWW91IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgdW5zdWJzY3JpYmVkIGZyb20gYWxlcnRzIGZyb20gJyArIGNvbW1hbmQuYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGN0eC5yZXBseSgnWW91IHNob3VsZCB1c2Ugc3ludGF4OiBcXC9yZW1vdmVOb3RpZmljYXRpb24gPGFub21hbHlfbmFtZT4nKTtcbiAgfVxufVxuXG4vLyBjb25zdCBUZWxlZ3JhZiA9IHJlcXVpcmUoJ3RlbGVncmFmJyk7XG5sZXQgYm90Q29uZmlnOiBCb3RDb25maWc7XG5sZXQgYm90O1xuXG5mdW5jdGlvbiB0Z0JvdEluaXQoKSB7XG4gIHRyeSB7XG4gICAgLy8gYm90Q29uZmlnID0gbG9hZEJvdENvbmZpZygpO1xuICAgIC8vIGJvdCA9IG5ldyBUZWxlZ3JhZihib3RDb25maWcudG9rZW4pO1xuXG4gICAgLy8gYm90LnVzZShjb21tYW5kQXJncyk7XG5cbiAgICAvLyBib3QuY29tbWFuZCgnYWRkTm90aWZpY2F0aW9uJywgYWRkTm90aWZpY2F0aW9uKTtcbiAgICAvLyBib3QuY29tbWFuZCgncmVtb3ZlTm90aWZpY2F0aW9uJywgcmVtb3ZlTm90aWZpY2F0aW9uKTtcblxuICAgIC8vIGJvdC5zdGFydFBvbGxpbmcoKTtcbiAgfSBjYXRjaChlKSB7XG4gICAgLy8gVE9ETzogaGFuZGxlIGV4Y2VwdGlvblxuICB9XG59XG5cbmV4cG9ydCB7IHNlbmROb3RpZmljYXRpb24sIHRnQm90SW5pdCB9XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zZXJ2aWNlcy9ub3RpZmljYXRpb24udHMiLCJpbXBvcnQgKiBhcyBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0ICogYXMgYm9keVBhcnNlciBmcm9tICdib2R5LXBhcnNlcic7XG5cbmltcG9ydCB7IHJvdXRlciBhcyBhbm9tYWxpZXNSb3V0ZXIgfSBmcm9tICcuL3JvdXRlcy9hbm9tYWxpZXMnO1xuaW1wb3J0IHsgcm91dGVyIGFzIHNlZ21lbnRzUm91dGVyIH0gZnJvbSAnLi9yb3V0ZXMvc2VnbWVudHMnO1xuaW1wb3J0IHsgcm91dGVyIGFzIGFsZXJ0c1JvdXRlciB9IGZyb20gJy4vcm91dGVzL2FsZXJ0cyc7XG5pbXBvcnQgeyB0Z0JvdEluaXQgfSBmcm9tICcuL3NlcnZpY2VzL25vdGlmaWNhdGlvbic7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcbmNvbnN0IFBPUlQgPSBwcm9jZXNzLmVudi5IQVNUSUNfUE9SVCB8fCA4MDAwO1xuXG5hcHAudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcbmFwcC51c2UoYm9keVBhcnNlci51cmxlbmNvZGVkKHsgZXh0ZW5kZWQ6IHRydWUgfSkpO1xuXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xuICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpO1xuICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJywgJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyk7XG4gIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnT3JpZ2luLCBYLVJlcXVlc3RlZC1XaXRoLCBDb250ZW50LVR5cGUsIEFjY2VwdCcpO1xuICBuZXh0KCk7XG59KTtcblxuYXBwLnVzZSgnL2Fub21hbGllcycsIGFub21hbGllc1JvdXRlcik7XG5hcHAudXNlKCcvc2VnbWVudHMnLCBzZWdtZW50c1JvdXRlcik7XG5hcHAudXNlKCcvYWxlcnRzJywgYWxlcnRzUm91dGVyKTtcbmFwcC51c2UoJy8nLCAocmVxLCByZXMpID0+IHJlcy5zZW5kKHsgc3RhdHVzOiAnT0snIH0pKTtcblxuYXBwLmxpc3RlbihQT1JULCAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKGBTZXJ2ZXIgaXMgcnVubmluZyBvbiA6JHtQT1JUfWApXG59KTtcblxudGdCb3RJbml0KCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9pbmRleC50cyIsIi8qIVxuICogZXhwcmVzc1xuICogQ29weXJpZ2h0KGMpIDIwMDktMjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTMgUm9tYW4gU2h0eWxtYW5cbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKVxudmFyIEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbnZhciBtaXhpbiA9IHJlcXVpcmUoJ21lcmdlLWRlc2NyaXB0b3JzJyk7XG52YXIgcHJvdG8gPSByZXF1aXJlKCcuL2FwcGxpY2F0aW9uJyk7XG52YXIgUm91dGUgPSByZXF1aXJlKCcuL3JvdXRlci9yb3V0ZScpO1xudmFyIFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVyJyk7XG52YXIgcmVxID0gcmVxdWlyZSgnLi9yZXF1ZXN0Jyk7XG52YXIgcmVzID0gcmVxdWlyZSgnLi9yZXNwb25zZScpO1xuXG4vKipcbiAqIEV4cG9zZSBgY3JlYXRlQXBwbGljYXRpb24oKWAuXG4gKi9cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXBwbGljYXRpb247XG5cbi8qKlxuICogQ3JlYXRlIGFuIGV4cHJlc3MgYXBwbGljYXRpb24uXG4gKlxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUFwcGxpY2F0aW9uKCkge1xuICB2YXIgYXBwID0gZnVuY3Rpb24ocmVxLCByZXMsIG5leHQpIHtcbiAgICBhcHAuaGFuZGxlKHJlcSwgcmVzLCBuZXh0KTtcbiAgfTtcblxuICBtaXhpbihhcHAsIEV2ZW50RW1pdHRlci5wcm90b3R5cGUsIGZhbHNlKTtcbiAgbWl4aW4oYXBwLCBwcm90bywgZmFsc2UpO1xuXG4gIC8vIGV4cG9zZSB0aGUgcHJvdG90eXBlIHRoYXQgd2lsbCBnZXQgc2V0IG9uIHJlcXVlc3RzXG4gIGFwcC5yZXF1ZXN0ID0gT2JqZWN0LmNyZWF0ZShyZXEsIHtcbiAgICBhcHA6IHsgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWU6IGFwcCB9XG4gIH0pXG5cbiAgLy8gZXhwb3NlIHRoZSBwcm90b3R5cGUgdGhhdCB3aWxsIGdldCBzZXQgb24gcmVzcG9uc2VzXG4gIGFwcC5yZXNwb25zZSA9IE9iamVjdC5jcmVhdGUocmVzLCB7XG4gICAgYXBwOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlOiBhcHAgfVxuICB9KVxuXG4gIGFwcC5pbml0KCk7XG4gIHJldHVybiBhcHA7XG59XG5cbi8qKlxuICogRXhwb3NlIHRoZSBwcm90b3R5cGVzLlxuICovXG5cbmV4cG9ydHMuYXBwbGljYXRpb24gPSBwcm90bztcbmV4cG9ydHMucmVxdWVzdCA9IHJlcTtcbmV4cG9ydHMucmVzcG9uc2UgPSByZXM7XG5cbi8qKlxuICogRXhwb3NlIGNvbnN0cnVjdG9ycy5cbiAqL1xuXG5leHBvcnRzLlJvdXRlID0gUm91dGU7XG5leHBvcnRzLlJvdXRlciA9IFJvdXRlcjtcblxuLyoqXG4gKiBFeHBvc2UgbWlkZGxld2FyZVxuICovXG5cbmV4cG9ydHMuanNvbiA9IGJvZHlQYXJzZXIuanNvblxuZXhwb3J0cy5xdWVyeSA9IHJlcXVpcmUoJy4vbWlkZGxld2FyZS9xdWVyeScpO1xuZXhwb3J0cy5zdGF0aWMgPSByZXF1aXJlKCdzZXJ2ZS1zdGF0aWMnKTtcbmV4cG9ydHMudXJsZW5jb2RlZCA9IGJvZHlQYXJzZXIudXJsZW5jb2RlZFxuXG4vKipcbiAqIFJlcGxhY2UgcmVtb3ZlZCBtaWRkbGV3YXJlIHdpdGggYW4gYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZS5cbiAqL1xuXG47W1xuICAnYm9keVBhcnNlcicsXG4gICdjb21wcmVzcycsXG4gICdjb29raWVTZXNzaW9uJyxcbiAgJ3Nlc3Npb24nLFxuICAnbG9nZ2VyJyxcbiAgJ2Nvb2tpZVBhcnNlcicsXG4gICdmYXZpY29uJyxcbiAgJ3Jlc3BvbnNlVGltZScsXG4gICdlcnJvckhhbmRsZXInLFxuICAndGltZW91dCcsXG4gICdtZXRob2RPdmVycmlkZScsXG4gICd2aG9zdCcsXG4gICdjc3JmJyxcbiAgJ2RpcmVjdG9yeScsXG4gICdsaW1pdCcsXG4gICdtdWx0aXBhcnQnLFxuICAnc3RhdGljQ2FjaGUnLFxuXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01vc3QgbWlkZGxld2FyZSAobGlrZSAnICsgbmFtZSArICcpIGlzIG5vIGxvbmdlciBidW5kbGVkIHdpdGggRXhwcmVzcyBhbmQgbXVzdCBiZSBpbnN0YWxsZWQgc2VwYXJhdGVseS4gUGxlYXNlIHNlZSBodHRwczovL2dpdGh1Yi5jb20vc2VuY2hhbGFicy9jb25uZWN0I21pZGRsZXdhcmUuJyk7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi9leHByZXNzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBkZXBkXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBjYWxsU2l0ZVRvU3RyaW5nXG5cbi8qKlxuICogRm9ybWF0IGEgQ2FsbFNpdGUgZmlsZSBsb2NhdGlvbiB0byBhIHN0cmluZy5cbiAqL1xuXG5mdW5jdGlvbiBjYWxsU2l0ZUZpbGVMb2NhdGlvbiAoY2FsbFNpdGUpIHtcbiAgdmFyIGZpbGVOYW1lXG4gIHZhciBmaWxlTG9jYXRpb24gPSAnJ1xuXG4gIGlmIChjYWxsU2l0ZS5pc05hdGl2ZSgpKSB7XG4gICAgZmlsZUxvY2F0aW9uID0gJ25hdGl2ZSdcbiAgfSBlbHNlIGlmIChjYWxsU2l0ZS5pc0V2YWwoKSkge1xuICAgIGZpbGVOYW1lID0gY2FsbFNpdGUuZ2V0U2NyaXB0TmFtZU9yU291cmNlVVJMKClcbiAgICBpZiAoIWZpbGVOYW1lKSB7XG4gICAgICBmaWxlTG9jYXRpb24gPSBjYWxsU2l0ZS5nZXRFdmFsT3JpZ2luKClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZmlsZU5hbWUgPSBjYWxsU2l0ZS5nZXRGaWxlTmFtZSgpXG4gIH1cblxuICBpZiAoZmlsZU5hbWUpIHtcbiAgICBmaWxlTG9jYXRpb24gKz0gZmlsZU5hbWVcblxuICAgIHZhciBsaW5lTnVtYmVyID0gY2FsbFNpdGUuZ2V0TGluZU51bWJlcigpXG4gICAgaWYgKGxpbmVOdW1iZXIgIT0gbnVsbCkge1xuICAgICAgZmlsZUxvY2F0aW9uICs9ICc6JyArIGxpbmVOdW1iZXJcblxuICAgICAgdmFyIGNvbHVtbk51bWJlciA9IGNhbGxTaXRlLmdldENvbHVtbk51bWJlcigpXG4gICAgICBpZiAoY29sdW1uTnVtYmVyKSB7XG4gICAgICAgIGZpbGVMb2NhdGlvbiArPSAnOicgKyBjb2x1bW5OdW1iZXJcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmlsZUxvY2F0aW9uIHx8ICd1bmtub3duIHNvdXJjZSdcbn1cblxuLyoqXG4gKiBGb3JtYXQgYSBDYWxsU2l0ZSB0byBhIHN0cmluZy5cbiAqL1xuXG5mdW5jdGlvbiBjYWxsU2l0ZVRvU3RyaW5nIChjYWxsU2l0ZSkge1xuICB2YXIgYWRkU3VmZml4ID0gdHJ1ZVxuICB2YXIgZmlsZUxvY2F0aW9uID0gY2FsbFNpdGVGaWxlTG9jYXRpb24oY2FsbFNpdGUpXG4gIHZhciBmdW5jdGlvbk5hbWUgPSBjYWxsU2l0ZS5nZXRGdW5jdGlvbk5hbWUoKVxuICB2YXIgaXNDb25zdHJ1Y3RvciA9IGNhbGxTaXRlLmlzQ29uc3RydWN0b3IoKVxuICB2YXIgaXNNZXRob2RDYWxsID0gIShjYWxsU2l0ZS5pc1RvcGxldmVsKCkgfHwgaXNDb25zdHJ1Y3RvcilcbiAgdmFyIGxpbmUgPSAnJ1xuXG4gIGlmIChpc01ldGhvZENhbGwpIHtcbiAgICB2YXIgbWV0aG9kTmFtZSA9IGNhbGxTaXRlLmdldE1ldGhvZE5hbWUoKVxuICAgIHZhciB0eXBlTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShjYWxsU2l0ZSlcblxuICAgIGlmIChmdW5jdGlvbk5hbWUpIHtcbiAgICAgIGlmICh0eXBlTmFtZSAmJiBmdW5jdGlvbk5hbWUuaW5kZXhPZih0eXBlTmFtZSkgIT09IDApIHtcbiAgICAgICAgbGluZSArPSB0eXBlTmFtZSArICcuJ1xuICAgICAgfVxuXG4gICAgICBsaW5lICs9IGZ1bmN0aW9uTmFtZVxuXG4gICAgICBpZiAobWV0aG9kTmFtZSAmJiBmdW5jdGlvbk5hbWUubGFzdEluZGV4T2YoJy4nICsgbWV0aG9kTmFtZSkgIT09IGZ1bmN0aW9uTmFtZS5sZW5ndGggLSBtZXRob2ROYW1lLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgbGluZSArPSAnIFthcyAnICsgbWV0aG9kTmFtZSArICddJ1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lICs9IHR5cGVOYW1lICsgJy4nICsgKG1ldGhvZE5hbWUgfHwgJzxhbm9ueW1vdXM+JylcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNDb25zdHJ1Y3Rvcikge1xuICAgIGxpbmUgKz0gJ25ldyAnICsgKGZ1bmN0aW9uTmFtZSB8fCAnPGFub255bW91cz4nKVxuICB9IGVsc2UgaWYgKGZ1bmN0aW9uTmFtZSkge1xuICAgIGxpbmUgKz0gZnVuY3Rpb25OYW1lXG4gIH0gZWxzZSB7XG4gICAgYWRkU3VmZml4ID0gZmFsc2VcbiAgICBsaW5lICs9IGZpbGVMb2NhdGlvblxuICB9XG5cbiAgaWYgKGFkZFN1ZmZpeCkge1xuICAgIGxpbmUgKz0gJyAoJyArIGZpbGVMb2NhdGlvbiArICcpJ1xuICB9XG5cbiAgcmV0dXJuIGxpbmVcbn1cblxuLyoqXG4gKiBHZXQgY29uc3RydWN0b3IgbmFtZSBvZiByZXZpdmVyLlxuICovXG5cbmZ1bmN0aW9uIGdldENvbnN0cnVjdG9yTmFtZSAob2JqKSB7XG4gIHZhciByZWNlaXZlciA9IG9iai5yZWNlaXZlclxuICByZXR1cm4gKHJlY2VpdmVyLmNvbnN0cnVjdG9yICYmIHJlY2VpdmVyLmNvbnN0cnVjdG9yLm5hbWUpIHx8IG51bGxcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvY2FsbHNpdGUtdG9zdHJpbmcuanNcbi8vIG1vZHVsZSBpZCA9IDEyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGRlcGRcbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV2ZW50TGlzdGVuZXJDb3VudFxuXG4vKipcbiAqIEdldCB0aGUgY291bnQgb2YgbGlzdGVuZXJzIG9uIGFuIGV2ZW50IGVtaXR0ZXIgb2YgYSBzcGVjaWZpYyB0eXBlLlxuICovXG5cbmZ1bmN0aW9uIGV2ZW50TGlzdGVuZXJDb3VudCAoZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lcnModHlwZSkubGVuZ3RoXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZGVwZC9saWIvY29tcGF0L2V2ZW50LWxpc3RlbmVyLWNvdW50LmpzXG4vLyBtb2R1bGUgaWQgPSAxMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBib2R5LXBhcnNlclxuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgYnl0ZXMgPSByZXF1aXJlKCdieXRlcycpXG52YXIgY29udGVudFR5cGUgPSByZXF1aXJlKCdjb250ZW50LXR5cGUnKVxudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnaHR0cC1lcnJvcnMnKVxudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnYm9keS1wYXJzZXI6anNvbicpXG52YXIgcmVhZCA9IHJlcXVpcmUoJy4uL3JlYWQnKVxudmFyIHR5cGVpcyA9IHJlcXVpcmUoJ3R5cGUtaXMnKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0ganNvblxuXG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCB0aGUgZmlyc3Qgbm9uLXNwYWNlIGluIGEgc3RyaW5nLlxuICpcbiAqIEFsbG93ZWQgd2hpdGVzcGFjZSBpcyBkZWZpbmVkIGluIFJGQyA3MTU5OlxuICpcbiAqICAgIHdzID0gKihcbiAqICAgICAgICAgICAgJXgyMCAvICAgICAgICAgICAgICA7IFNwYWNlXG4gKiAgICAgICAgICAgICV4MDkgLyAgICAgICAgICAgICAgOyBIb3Jpem9udGFsIHRhYlxuICogICAgICAgICAgICAleDBBIC8gICAgICAgICAgICAgIDsgTGluZSBmZWVkIG9yIE5ldyBsaW5lXG4gKiAgICAgICAgICAgICV4MEQgKSAgICAgICAgICAgICAgOyBDYXJyaWFnZSByZXR1cm5cbiAqL1xuXG52YXIgRklSU1RfQ0hBUl9SRUdFWFAgPSAvXltcXHgyMFxceDA5XFx4MGFcXHgwZF0qKC4pLyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcblxuLyoqXG4gKiBDcmVhdGUgYSBtaWRkbGV3YXJlIHRvIHBhcnNlIEpTT04gYm9kaWVzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGpzb24gKG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9XG5cbiAgdmFyIGxpbWl0ID0gdHlwZW9mIG9wdHMubGltaXQgIT09ICdudW1iZXInXG4gICAgPyBieXRlcy5wYXJzZShvcHRzLmxpbWl0IHx8ICcxMDBrYicpXG4gICAgOiBvcHRzLmxpbWl0XG4gIHZhciBpbmZsYXRlID0gb3B0cy5pbmZsYXRlICE9PSBmYWxzZVxuICB2YXIgcmV2aXZlciA9IG9wdHMucmV2aXZlclxuICB2YXIgc3RyaWN0ID0gb3B0cy5zdHJpY3QgIT09IGZhbHNlXG4gIHZhciB0eXBlID0gb3B0cy50eXBlIHx8ICdhcHBsaWNhdGlvbi9qc29uJ1xuICB2YXIgdmVyaWZ5ID0gb3B0cy52ZXJpZnkgfHwgZmFsc2VcblxuICBpZiAodmVyaWZ5ICE9PSBmYWxzZSAmJiB0eXBlb2YgdmVyaWZ5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIHZlcmlmeSBtdXN0IGJlIGZ1bmN0aW9uJylcbiAgfVxuXG4gIC8vIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBjaGVja2luZyBmdW5jdGlvblxuICB2YXIgc2hvdWxkUGFyc2UgPSB0eXBlb2YgdHlwZSAhPT0gJ2Z1bmN0aW9uJ1xuICAgID8gdHlwZUNoZWNrZXIodHlwZSlcbiAgICA6IHR5cGVcblxuICBmdW5jdGlvbiBwYXJzZSAoYm9keSkge1xuICAgIGlmIChib2R5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gc3BlY2lhbC1jYXNlIGVtcHR5IGpzb24gYm9keSwgYXMgaXQncyBhIGNvbW1vbiBjbGllbnQtc2lkZSBtaXN0YWtlXG4gICAgICAvLyBUT0RPOiBtYXliZSBtYWtlIHRoaXMgY29uZmlndXJhYmxlIG9yIHBhcnQgb2YgXCJzdHJpY3RcIiBvcHRpb25cbiAgICAgIHJldHVybiB7fVxuICAgIH1cblxuICAgIGlmIChzdHJpY3QpIHtcbiAgICAgIHZhciBmaXJzdCA9IGZpcnN0Y2hhcihib2R5KVxuXG4gICAgICBpZiAoZmlyc3QgIT09ICd7JyAmJiBmaXJzdCAhPT0gJ1snKSB7XG4gICAgICAgIGRlYnVnKCdzdHJpY3QgdmlvbGF0aW9uJylcbiAgICAgICAgdGhyb3cgY3JlYXRlU3RyaWN0U3ludGF4RXJyb3IoYm9keSwgZmlyc3QpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGRlYnVnKCdwYXJzZSBqc29uJylcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGJvZHksIHJldml2ZXIpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbm9ybWFsaXplSnNvblN5bnRheEVycm9yKGUsIHtcbiAgICAgICAgc3RhY2s6IGUuc3RhY2tcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGpzb25QYXJzZXIgKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgaWYgKHJlcS5fYm9keSkge1xuICAgICAgZGVidWcoJ2JvZHkgYWxyZWFkeSBwYXJzZWQnKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICByZXEuYm9keSA9IHJlcS5ib2R5IHx8IHt9XG5cbiAgICAvLyBza2lwIHJlcXVlc3RzIHdpdGhvdXQgYm9kaWVzXG4gICAgaWYgKCF0eXBlaXMuaGFzQm9keShyZXEpKSB7XG4gICAgICBkZWJ1Zygnc2tpcCBlbXB0eSBib2R5JylcbiAgICAgIG5leHQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZGVidWcoJ2NvbnRlbnQtdHlwZSAlaicsIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSlcblxuICAgIC8vIGRldGVybWluZSBpZiByZXF1ZXN0IHNob3VsZCBiZSBwYXJzZWRcbiAgICBpZiAoIXNob3VsZFBhcnNlKHJlcSkpIHtcbiAgICAgIGRlYnVnKCdza2lwIHBhcnNpbmcnKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBhc3NlcnQgY2hhcnNldCBwZXIgUkZDIDcxNTkgc2VjIDguMVxuICAgIHZhciBjaGFyc2V0ID0gZ2V0Q2hhcnNldChyZXEpIHx8ICd1dGYtOCdcbiAgICBpZiAoY2hhcnNldC5zdWJzdHIoMCwgNCkgIT09ICd1dGYtJykge1xuICAgICAgZGVidWcoJ2ludmFsaWQgY2hhcnNldCcpXG4gICAgICBuZXh0KGNyZWF0ZUVycm9yKDQxNSwgJ3Vuc3VwcG9ydGVkIGNoYXJzZXQgXCInICsgY2hhcnNldC50b1VwcGVyQ2FzZSgpICsgJ1wiJywge1xuICAgICAgICBjaGFyc2V0OiBjaGFyc2V0LFxuICAgICAgICB0eXBlOiAnY2hhcnNldC51bnN1cHBvcnRlZCdcbiAgICAgIH0pKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gcmVhZFxuICAgIHJlYWQocmVxLCByZXMsIG5leHQsIHBhcnNlLCBkZWJ1Zywge1xuICAgICAgZW5jb2Rpbmc6IGNoYXJzZXQsXG4gICAgICBpbmZsYXRlOiBpbmZsYXRlLFxuICAgICAgbGltaXQ6IGxpbWl0LFxuICAgICAgdmVyaWZ5OiB2ZXJpZnlcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIHN0cmljdCB2aW9sYXRpb24gc3ludGF4IGVycm9yIG1hdGNoaW5nIG5hdGl2ZSBlcnJvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hhclxuICogQHJldHVybiB7RXJyb3J9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZVN0cmljdFN5bnRheEVycm9yIChzdHIsIGNoYXIpIHtcbiAgdmFyIGluZGV4ID0gc3RyLmluZGV4T2YoY2hhcilcbiAgdmFyIHBhcnRpYWwgPSBzdHIuc3Vic3RyaW5nKDAsIGluZGV4KSArICcjJ1xuXG4gIHRyeSB7XG4gICAgSlNPTi5wYXJzZShwYXJ0aWFsKTsgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gdGhyb3cgbmV3IFN5bnRheEVycm9yKCdzdHJpY3QgdmlvbGF0aW9uJylcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBub3JtYWxpemVKc29uU3ludGF4RXJyb3IoZSwge1xuICAgICAgbWVzc2FnZTogZS5tZXNzYWdlLnJlcGxhY2UoJyMnLCBjaGFyKSxcbiAgICAgIHN0YWNrOiBlLnN0YWNrXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyIGluIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBmaXJzdGNoYXIgKHN0cikge1xuICByZXR1cm4gRklSU1RfQ0hBUl9SRUdFWFAuZXhlYyhzdHIpWzFdXG59XG5cbi8qKlxuICogR2V0IHRoZSBjaGFyc2V0IG9mIGEgcmVxdWVzdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVxXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRDaGFyc2V0IChyZXEpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gKGNvbnRlbnRUeXBlLnBhcnNlKHJlcSkucGFyYW1ldGVycy5jaGFyc2V0IHx8ICcnKS50b0xvd2VyQ2FzZSgpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSBTeW50YXhFcnJvciBmb3IgSlNPTi5wYXJzZS5cbiAqXG4gKiBAcGFyYW0ge1N5bnRheEVycm9yfSBlcnJvclxuICogQHBhcmFtIHtvYmplY3R9IG9ialxuICogQHJldHVybiB7U3ludGF4RXJyb3J9XG4gKi9cblxuZnVuY3Rpb24gbm9ybWFsaXplSnNvblN5bnRheEVycm9yIChlcnJvciwgb2JqKSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZXJyb3IpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV1cbiAgICBpZiAoa2V5ICE9PSAnc3RhY2snICYmIGtleSAhPT0gJ21lc3NhZ2UnKSB7XG4gICAgICBkZWxldGUgZXJyb3Jba2V5XVxuICAgIH1cbiAgfVxuXG4gIHZhciBwcm9wcyA9IE9iamVjdC5rZXlzKG9iailcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IHByb3BzLmxlbmd0aDsgaisrKSB7XG4gICAgdmFyIHByb3AgPSBwcm9wc1tqXVxuICAgIGVycm9yW3Byb3BdID0gb2JqW3Byb3BdXG4gIH1cblxuICByZXR1cm4gZXJyb3Jcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHNpbXBsZSB0eXBlIGNoZWNrZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5cbmZ1bmN0aW9uIHR5cGVDaGVja2VyICh0eXBlKSB7XG4gIHJldHVybiBmdW5jdGlvbiBjaGVja1R5cGUgKHJlcSkge1xuICAgIHJldHVybiBCb29sZWFuKHR5cGVpcyhyZXEsIHR5cGUpKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYm9keS1wYXJzZXIvbGliL3R5cGVzL2pzb24uanNcbi8vIG1vZHVsZSBpZCA9IDEyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHtcIjEwMFwiOlwiQ29udGludWVcIixcIjEwMVwiOlwiU3dpdGNoaW5nIFByb3RvY29sc1wiLFwiMTAyXCI6XCJQcm9jZXNzaW5nXCIsXCIyMDBcIjpcIk9LXCIsXCIyMDFcIjpcIkNyZWF0ZWRcIixcIjIwMlwiOlwiQWNjZXB0ZWRcIixcIjIwM1wiOlwiTm9uLUF1dGhvcml0YXRpdmUgSW5mb3JtYXRpb25cIixcIjIwNFwiOlwiTm8gQ29udGVudFwiLFwiMjA1XCI6XCJSZXNldCBDb250ZW50XCIsXCIyMDZcIjpcIlBhcnRpYWwgQ29udGVudFwiLFwiMjA3XCI6XCJNdWx0aS1TdGF0dXNcIixcIjIwOFwiOlwiQWxyZWFkeSBSZXBvcnRlZFwiLFwiMjI2XCI6XCJJTSBVc2VkXCIsXCIzMDBcIjpcIk11bHRpcGxlIENob2ljZXNcIixcIjMwMVwiOlwiTW92ZWQgUGVybWFuZW50bHlcIixcIjMwMlwiOlwiRm91bmRcIixcIjMwM1wiOlwiU2VlIE90aGVyXCIsXCIzMDRcIjpcIk5vdCBNb2RpZmllZFwiLFwiMzA1XCI6XCJVc2UgUHJveHlcIixcIjMwNlwiOlwiKFVudXNlZClcIixcIjMwN1wiOlwiVGVtcG9yYXJ5IFJlZGlyZWN0XCIsXCIzMDhcIjpcIlBlcm1hbmVudCBSZWRpcmVjdFwiLFwiNDAwXCI6XCJCYWQgUmVxdWVzdFwiLFwiNDAxXCI6XCJVbmF1dGhvcml6ZWRcIixcIjQwMlwiOlwiUGF5bWVudCBSZXF1aXJlZFwiLFwiNDAzXCI6XCJGb3JiaWRkZW5cIixcIjQwNFwiOlwiTm90IEZvdW5kXCIsXCI0MDVcIjpcIk1ldGhvZCBOb3QgQWxsb3dlZFwiLFwiNDA2XCI6XCJOb3QgQWNjZXB0YWJsZVwiLFwiNDA3XCI6XCJQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZFwiLFwiNDA4XCI6XCJSZXF1ZXN0IFRpbWVvdXRcIixcIjQwOVwiOlwiQ29uZmxpY3RcIixcIjQxMFwiOlwiR29uZVwiLFwiNDExXCI6XCJMZW5ndGggUmVxdWlyZWRcIixcIjQxMlwiOlwiUHJlY29uZGl0aW9uIEZhaWxlZFwiLFwiNDEzXCI6XCJQYXlsb2FkIFRvbyBMYXJnZVwiLFwiNDE0XCI6XCJVUkkgVG9vIExvbmdcIixcIjQxNVwiOlwiVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZVwiLFwiNDE2XCI6XCJSYW5nZSBOb3QgU2F0aXNmaWFibGVcIixcIjQxN1wiOlwiRXhwZWN0YXRpb24gRmFpbGVkXCIsXCI0MThcIjpcIkknbSBhIHRlYXBvdFwiLFwiNDIxXCI6XCJNaXNkaXJlY3RlZCBSZXF1ZXN0XCIsXCI0MjJcIjpcIlVucHJvY2Vzc2FibGUgRW50aXR5XCIsXCI0MjNcIjpcIkxvY2tlZFwiLFwiNDI0XCI6XCJGYWlsZWQgRGVwZW5kZW5jeVwiLFwiNDI1XCI6XCJVbm9yZGVyZWQgQ29sbGVjdGlvblwiLFwiNDI2XCI6XCJVcGdyYWRlIFJlcXVpcmVkXCIsXCI0MjhcIjpcIlByZWNvbmRpdGlvbiBSZXF1aXJlZFwiLFwiNDI5XCI6XCJUb28gTWFueSBSZXF1ZXN0c1wiLFwiNDMxXCI6XCJSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlXCIsXCI0NTFcIjpcIlVuYXZhaWxhYmxlIEZvciBMZWdhbCBSZWFzb25zXCIsXCI1MDBcIjpcIkludGVybmFsIFNlcnZlciBFcnJvclwiLFwiNTAxXCI6XCJOb3QgSW1wbGVtZW50ZWRcIixcIjUwMlwiOlwiQmFkIEdhdGV3YXlcIixcIjUwM1wiOlwiU2VydmljZSBVbmF2YWlsYWJsZVwiLFwiNTA0XCI6XCJHYXRld2F5IFRpbWVvdXRcIixcIjUwNVwiOlwiSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWRcIixcIjUwNlwiOlwiVmFyaWFudCBBbHNvIE5lZ290aWF0ZXNcIixcIjUwN1wiOlwiSW5zdWZmaWNpZW50IFN0b3JhZ2VcIixcIjUwOFwiOlwiTG9vcCBEZXRlY3RlZFwiLFwiNTA5XCI6XCJCYW5kd2lkdGggTGltaXQgRXhjZWVkZWRcIixcIjUxMFwiOlwiTm90IEV4dGVuZGVkXCIsXCI1MTFcIjpcIk5ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWRcIn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvc3RhdHVzZXMvY29kZXMuanNvblxuLy8gbW9kdWxlIGlkID0gMTIzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAvLyBpbXBsZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZVxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xufSBlbHNlIHtcbiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnNcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZVxuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKClcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDEyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqXG4gKiBFeHBvc2UgYGRlYnVnKClgIGFzIHRoZSBtb2R1bGUuXG4gKi9cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kZWJ1ZycpO1xuZXhwb3J0cy5sb2cgPSBsb2c7XG5leHBvcnRzLmZvcm1hdEFyZ3MgPSBmb3JtYXRBcmdzO1xuZXhwb3J0cy5zYXZlID0gc2F2ZTtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLnVzZUNvbG9ycyA9IHVzZUNvbG9ycztcbmV4cG9ydHMuc3RvcmFnZSA9ICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWVcbiAgICAgICAgICAgICAgICYmICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWUuc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgPyBjaHJvbWUuc3RvcmFnZS5sb2NhbFxuICAgICAgICAgICAgICAgICAgOiBsb2NhbHN0b3JhZ2UoKTtcblxuLyoqXG4gKiBDb2xvcnMuXG4gKi9cblxuZXhwb3J0cy5jb2xvcnMgPSBbXG4gICdsaWdodHNlYWdyZWVuJyxcbiAgJ2ZvcmVzdGdyZWVuJyxcbiAgJ2dvbGRlbnJvZCcsXG4gICdkb2RnZXJibHVlJyxcbiAgJ2RhcmtvcmNoaWQnLFxuICAnY3JpbXNvbidcbl07XG5cbi8qKlxuICogQ3VycmVudGx5IG9ubHkgV2ViS2l0LWJhc2VkIFdlYiBJbnNwZWN0b3JzLCBGaXJlZm94ID49IHYzMSxcbiAqIGFuZCB0aGUgRmlyZWJ1ZyBleHRlbnNpb24gKGFueSBGaXJlZm94IHZlcnNpb24pIGFyZSBrbm93blxuICogdG8gc3VwcG9ydCBcIiVjXCIgQ1NTIGN1c3RvbWl6YXRpb25zLlxuICpcbiAqIFRPRE86IGFkZCBhIGBsb2NhbFN0b3JhZ2VgIHZhcmlhYmxlIHRvIGV4cGxpY2l0bHkgZW5hYmxlL2Rpc2FibGUgY29sb3JzXG4gKi9cblxuZnVuY3Rpb24gdXNlQ29sb3JzKCkge1xuICAvLyBOQjogSW4gYW4gRWxlY3Ryb24gcHJlbG9hZCBzY3JpcHQsIGRvY3VtZW50IHdpbGwgYmUgZGVmaW5lZCBidXQgbm90IGZ1bGx5XG4gIC8vIGluaXRpYWxpemVkLiBTaW5jZSB3ZSBrbm93IHdlJ3JlIGluIENocm9tZSwgd2UnbGwganVzdCBkZXRlY3QgdGhpcyBjYXNlXG4gIC8vIGV4cGxpY2l0bHlcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5wcm9jZXNzICYmIHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIGlzIHdlYmtpdD8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTY0NTk2MDYvMzc2NzczXG4gIC8vIGRvY3VtZW50IGlzIHVuZGVmaW5lZCBpbiByZWFjdC1uYXRpdmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC1uYXRpdmUvcHVsbC8xNjMyXG4gIHJldHVybiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlKSB8fFxuICAgIC8vIGlzIGZpcmVidWc/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM5ODEyMC8zNzY3NzNcbiAgICAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmNvbnNvbGUgJiYgKHdpbmRvdy5jb25zb2xlLmZpcmVidWcgfHwgKHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiAmJiB3aW5kb3cuY29uc29sZS50YWJsZSkpKSB8fFxuICAgIC8vIGlzIGZpcmVmb3ggPj0gdjMxP1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvVG9vbHMvV2ViX0NvbnNvbGUjU3R5bGluZ19tZXNzYWdlc1xuICAgICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pICYmIHBhcnNlSW50KFJlZ0V4cC4kMSwgMTApID49IDMxKSB8fFxuICAgIC8vIGRvdWJsZSBjaGVjayB3ZWJraXQgaW4gdXNlckFnZW50IGp1c3QgaW4gY2FzZSB3ZSBhcmUgaW4gYSB3b3JrZXJcbiAgICAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2FwcGxld2Via2l0XFwvKFxcZCspLykpO1xufVxuXG4vKipcbiAqIE1hcCAlaiB0byBgSlNPTi5zdHJpbmdpZnkoKWAsIHNpbmNlIG5vIFdlYiBJbnNwZWN0b3JzIGRvIHRoYXQgYnkgZGVmYXVsdC5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdHRlcnMuaiA9IGZ1bmN0aW9uKHYpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAnW1VuZXhwZWN0ZWRKU09OUGFyc2VFcnJvcl06ICcgKyBlcnIubWVzc2FnZTtcbiAgfVxufTtcblxuXG4vKipcbiAqIENvbG9yaXplIGxvZyBhcmd1bWVudHMgaWYgZW5hYmxlZC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcm1hdEFyZ3MoYXJncykge1xuICB2YXIgdXNlQ29sb3JzID0gdGhpcy51c2VDb2xvcnM7XG5cbiAgYXJnc1swXSA9ICh1c2VDb2xvcnMgPyAnJWMnIDogJycpXG4gICAgKyB0aGlzLm5hbWVzcGFjZVxuICAgICsgKHVzZUNvbG9ycyA/ICcgJWMnIDogJyAnKVxuICAgICsgYXJnc1swXVxuICAgICsgKHVzZUNvbG9ycyA/ICclYyAnIDogJyAnKVxuICAgICsgJysnICsgZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpO1xuXG4gIGlmICghdXNlQ29sb3JzKSByZXR1cm47XG5cbiAgdmFyIGMgPSAnY29sb3I6ICcgKyB0aGlzLmNvbG9yO1xuICBhcmdzLnNwbGljZSgxLCAwLCBjLCAnY29sb3I6IGluaGVyaXQnKVxuXG4gIC8vIHRoZSBmaW5hbCBcIiVjXCIgaXMgc29tZXdoYXQgdHJpY2t5LCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG90aGVyXG4gIC8vIGFyZ3VtZW50cyBwYXNzZWQgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUgJWMsIHNvIHdlIG5lZWQgdG9cbiAgLy8gZmlndXJlIG91dCB0aGUgY29ycmVjdCBpbmRleCB0byBpbnNlcnQgdGhlIENTUyBpbnRvXG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsYXN0QyA9IDA7XG4gIGFyZ3NbMF0ucmVwbGFjZSgvJVthLXpBLVolXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIGlmICgnJSUnID09PSBtYXRjaCkgcmV0dXJuO1xuICAgIGluZGV4Kys7XG4gICAgaWYgKCclYycgPT09IG1hdGNoKSB7XG4gICAgICAvLyB3ZSBvbmx5IGFyZSBpbnRlcmVzdGVkIGluIHRoZSAqbGFzdCogJWNcbiAgICAgIC8vICh0aGUgdXNlciBtYXkgaGF2ZSBwcm92aWRlZCB0aGVpciBvd24pXG4gICAgICBsYXN0QyA9IGluZGV4O1xuICAgIH1cbiAgfSk7XG5cbiAgYXJncy5zcGxpY2UobGFzdEMsIDAsIGMpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYGNvbnNvbGUubG9nKClgIHdoZW4gYXZhaWxhYmxlLlxuICogTm8tb3Agd2hlbiBgY29uc29sZS5sb2dgIGlzIG5vdCBhIFwiZnVuY3Rpb25cIi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGxvZygpIHtcbiAgLy8gdGhpcyBoYWNrZXJ5IGlzIHJlcXVpcmVkIGZvciBJRTgvOSwgd2hlcmVcbiAgLy8gdGhlIGBjb25zb2xlLmxvZ2AgZnVuY3Rpb24gZG9lc24ndCBoYXZlICdhcHBseSdcbiAgcmV0dXJuICdvYmplY3QnID09PSB0eXBlb2YgY29uc29sZVxuICAgICYmIGNvbnNvbGUubG9nXG4gICAgJiYgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZS5sb2csIGNvbnNvbGUsIGFyZ3VtZW50cyk7XG59XG5cbi8qKlxuICogU2F2ZSBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuICB0cnkge1xuICAgIGlmIChudWxsID09IG5hbWVzcGFjZXMpIHtcbiAgICAgIGV4cG9ydHMuc3RvcmFnZS5yZW1vdmVJdGVtKCdkZWJ1ZycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBvcnRzLnN0b3JhZ2UuZGVidWcgPSBuYW1lc3BhY2VzO1xuICAgIH1cbiAgfSBjYXRjaChlKSB7fVxufVxuXG4vKipcbiAqIExvYWQgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcHJldmlvdXNseSBwZXJzaXN0ZWQgZGVidWcgbW9kZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvYWQoKSB7XG4gIHZhciByO1xuICB0cnkge1xuICAgIHIgPSBleHBvcnRzLnN0b3JhZ2UuZGVidWc7XG4gIH0gY2F0Y2goZSkge31cblxuICAvLyBJZiBkZWJ1ZyBpc24ndCBzZXQgaW4gTFMsIGFuZCB3ZSdyZSBpbiBFbGVjdHJvbiwgdHJ5IHRvIGxvYWQgJERFQlVHXG4gIGlmICghciAmJiB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgJ2VudicgaW4gcHJvY2Vzcykge1xuICAgIHIgPSBwcm9jZXNzLmVudi5ERUJVRztcbiAgfVxuXG4gIHJldHVybiByO1xufVxuXG4vKipcbiAqIEVuYWJsZSBuYW1lc3BhY2VzIGxpc3RlZCBpbiBgbG9jYWxTdG9yYWdlLmRlYnVnYCBpbml0aWFsbHkuXG4gKi9cblxuZXhwb3J0cy5lbmFibGUobG9hZCgpKTtcblxuLyoqXG4gKiBMb2NhbHN0b3JhZ2UgYXR0ZW1wdHMgdG8gcmV0dXJuIHRoZSBsb2NhbHN0b3JhZ2UuXG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzYWZhcmkgdGhyb3dzXG4gKiB3aGVuIGEgdXNlciBkaXNhYmxlcyBjb29raWVzL2xvY2Fsc3RvcmFnZVxuICogYW5kIHlvdSBhdHRlbXB0IHRvIGFjY2VzcyBpdC5cbiAqXG4gKiBAcmV0dXJuIHtMb2NhbFN0b3JhZ2V9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2NhbHN0b3JhZ2UoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2U7XG4gIH0gY2F0Y2ggKGUpIHt9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanNcbi8vIG1vZHVsZSBpZCA9IDEyNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxudmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgTm9kZS5qcyBpbXBsZW1lbnRhdGlvbiBvZiBgZGVidWcoKWAuXG4gKlxuICogRXhwb3NlIGBkZWJ1ZygpYCBhcyB0aGUgbW9kdWxlLlxuICovXG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZGVidWcnKTtcbmV4cG9ydHMuaW5pdCA9IGluaXQ7XG5leHBvcnRzLmxvZyA9IGxvZztcbmV4cG9ydHMuZm9ybWF0QXJncyA9IGZvcm1hdEFyZ3M7XG5leHBvcnRzLnNhdmUgPSBzYXZlO1xuZXhwb3J0cy5sb2FkID0gbG9hZDtcbmV4cG9ydHMudXNlQ29sb3JzID0gdXNlQ29sb3JzO1xuXG4vKipcbiAqIENvbG9ycy5cbiAqL1xuXG5leHBvcnRzLmNvbG9ycyA9IFs2LCAyLCAzLCA0LCA1LCAxXTtcblxuLyoqXG4gKiBCdWlsZCB1cCB0aGUgZGVmYXVsdCBgaW5zcGVjdE9wdHNgIG9iamVjdCBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gKlxuICogICAkIERFQlVHX0NPTE9SUz1ubyBERUJVR19ERVBUSD0xMCBERUJVR19TSE9XX0hJRERFTj1lbmFibGVkIG5vZGUgc2NyaXB0LmpzXG4gKi9cblxuZXhwb3J0cy5pbnNwZWN0T3B0cyA9IE9iamVjdC5rZXlzKHByb2Nlc3MuZW52KS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gL15kZWJ1Z18vaS50ZXN0KGtleSk7XG59KS5yZWR1Y2UoZnVuY3Rpb24gKG9iaiwga2V5KSB7XG4gIC8vIGNhbWVsLWNhc2VcbiAgdmFyIHByb3AgPSBrZXlcbiAgICAuc3Vic3RyaW5nKDYpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvXyhbYS16XSkvZywgZnVuY3Rpb24gKF8sIGspIHsgcmV0dXJuIGsudG9VcHBlckNhc2UoKSB9KTtcblxuICAvLyBjb2VyY2Ugc3RyaW5nIHZhbHVlIGludG8gSlMgdmFsdWVcbiAgdmFyIHZhbCA9IHByb2Nlc3MuZW52W2tleV07XG4gIGlmICgvXih5ZXN8b258dHJ1ZXxlbmFibGVkKSQvaS50ZXN0KHZhbCkpIHZhbCA9IHRydWU7XG4gIGVsc2UgaWYgKC9eKG5vfG9mZnxmYWxzZXxkaXNhYmxlZCkkL2kudGVzdCh2YWwpKSB2YWwgPSBmYWxzZTtcbiAgZWxzZSBpZiAodmFsID09PSAnbnVsbCcpIHZhbCA9IG51bGw7XG4gIGVsc2UgdmFsID0gTnVtYmVyKHZhbCk7XG5cbiAgb2JqW3Byb3BdID0gdmFsO1xuICByZXR1cm4gb2JqO1xufSwge30pO1xuXG4vKipcbiAqIFRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gd3JpdGUgdGhlIGBkZWJ1ZygpYCBjYWxscyB0by5cbiAqIFNldCB0aGUgYERFQlVHX0ZEYCBlbnYgdmFyaWFibGUgdG8gb3ZlcnJpZGUgd2l0aCBhbm90aGVyIHZhbHVlLiBpLmUuOlxuICpcbiAqICAgJCBERUJVR19GRD0zIG5vZGUgc2NyaXB0LmpzIDM+ZGVidWcubG9nXG4gKi9cblxudmFyIGZkID0gcGFyc2VJbnQocHJvY2Vzcy5lbnYuREVCVUdfRkQsIDEwKSB8fCAyO1xuXG5pZiAoMSAhPT0gZmQgJiYgMiAhPT0gZmQpIHtcbiAgdXRpbC5kZXByZWNhdGUoZnVuY3Rpb24oKXt9LCAnZXhjZXB0IGZvciBzdGRlcnIoMikgYW5kIHN0ZG91dCgxKSwgYW55IG90aGVyIHVzYWdlIG9mIERFQlVHX0ZEIGlzIGRlcHJlY2F0ZWQuIE92ZXJyaWRlIGRlYnVnLmxvZyBpZiB5b3Ugd2FudCB0byB1c2UgYSBkaWZmZXJlbnQgbG9nIGZ1bmN0aW9uIChodHRwczovL2dpdC5pby9kZWJ1Z19mZCknKSgpXG59XG5cbnZhciBzdHJlYW0gPSAxID09PSBmZCA/IHByb2Nlc3Muc3Rkb3V0IDpcbiAgICAgICAgICAgICAyID09PSBmZCA/IHByb2Nlc3Muc3RkZXJyIDpcbiAgICAgICAgICAgICBjcmVhdGVXcml0YWJsZVN0ZGlvU3RyZWFtKGZkKTtcblxuLyoqXG4gKiBJcyBzdGRvdXQgYSBUVFk/IENvbG9yZWQgb3V0cHV0IGlzIGVuYWJsZWQgd2hlbiBgdHJ1ZWAuXG4gKi9cblxuZnVuY3Rpb24gdXNlQ29sb3JzKCkge1xuICByZXR1cm4gJ2NvbG9ycycgaW4gZXhwb3J0cy5pbnNwZWN0T3B0c1xuICAgID8gQm9vbGVhbihleHBvcnRzLmluc3BlY3RPcHRzLmNvbG9ycylcbiAgICA6IHR0eS5pc2F0dHkoZmQpO1xufVxuXG4vKipcbiAqIE1hcCAlbyB0byBgdXRpbC5pbnNwZWN0KClgLCBhbGwgb24gYSBzaW5nbGUgbGluZS5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdHRlcnMubyA9IGZ1bmN0aW9uKHYpIHtcbiAgdGhpcy5pbnNwZWN0T3B0cy5jb2xvcnMgPSB0aGlzLnVzZUNvbG9ycztcbiAgcmV0dXJuIHV0aWwuaW5zcGVjdCh2LCB0aGlzLmluc3BlY3RPcHRzKVxuICAgIC5zcGxpdCgnXFxuJykubWFwKGZ1bmN0aW9uKHN0cikge1xuICAgICAgcmV0dXJuIHN0ci50cmltKClcbiAgICB9KS5qb2luKCcgJyk7XG59O1xuXG4vKipcbiAqIE1hcCAlbyB0byBgdXRpbC5pbnNwZWN0KClgLCBhbGxvd2luZyBtdWx0aXBsZSBsaW5lcyBpZiBuZWVkZWQuXG4gKi9cblxuZXhwb3J0cy5mb3JtYXR0ZXJzLk8gPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMuaW5zcGVjdE9wdHMuY29sb3JzID0gdGhpcy51c2VDb2xvcnM7XG4gIHJldHVybiB1dGlsLmluc3BlY3QodiwgdGhpcy5pbnNwZWN0T3B0cyk7XG59O1xuXG4vKipcbiAqIEFkZHMgQU5TSSBjb2xvciBlc2NhcGUgY29kZXMgaWYgZW5hYmxlZC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcm1hdEFyZ3MoYXJncykge1xuICB2YXIgbmFtZSA9IHRoaXMubmFtZXNwYWNlO1xuICB2YXIgdXNlQ29sb3JzID0gdGhpcy51c2VDb2xvcnM7XG5cbiAgaWYgKHVzZUNvbG9ycykge1xuICAgIHZhciBjID0gdGhpcy5jb2xvcjtcbiAgICB2YXIgcHJlZml4ID0gJyAgXFx1MDAxYlszJyArIGMgKyAnOzFtJyArIG5hbWUgKyAnICcgKyAnXFx1MDAxYlswbSc7XG5cbiAgICBhcmdzWzBdID0gcHJlZml4ICsgYXJnc1swXS5zcGxpdCgnXFxuJykuam9pbignXFxuJyArIHByZWZpeCk7XG4gICAgYXJncy5wdXNoKCdcXHUwMDFiWzMnICsgYyArICdtKycgKyBleHBvcnRzLmh1bWFuaXplKHRoaXMuZGlmZikgKyAnXFx1MDAxYlswbScpO1xuICB9IGVsc2Uge1xuICAgIGFyZ3NbMF0gPSBuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKClcbiAgICAgICsgJyAnICsgbmFtZSArICcgJyArIGFyZ3NbMF07XG4gIH1cbn1cblxuLyoqXG4gKiBJbnZva2VzIGB1dGlsLmZvcm1hdCgpYCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzIGFuZCB3cml0ZXMgdG8gYHN0cmVhbWAuXG4gKi9cblxuZnVuY3Rpb24gbG9nKCkge1xuICByZXR1cm4gc3RyZWFtLndyaXRlKHV0aWwuZm9ybWF0LmFwcGx5KHV0aWwsIGFyZ3VtZW50cykgKyAnXFxuJyk7XG59XG5cbi8qKlxuICogU2F2ZSBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuICBpZiAobnVsbCA9PSBuYW1lc3BhY2VzKSB7XG4gICAgLy8gSWYgeW91IHNldCBhIHByb2Nlc3MuZW52IGZpZWxkIHRvIG51bGwgb3IgdW5kZWZpbmVkLCBpdCBnZXRzIGNhc3QgdG8gdGhlXG4gICAgLy8gc3RyaW5nICdudWxsJyBvciAndW5kZWZpbmVkJy4gSnVzdCBkZWxldGUgaW5zdGVhZC5cbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuREVCVUc7XG4gIH0gZWxzZSB7XG4gICAgcHJvY2Vzcy5lbnYuREVCVUcgPSBuYW1lc3BhY2VzO1xuICB9XG59XG5cbi8qKlxuICogTG9hZCBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHJldHVybiB7U3RyaW5nfSByZXR1cm5zIHRoZSBwcmV2aW91c2x5IHBlcnNpc3RlZCBkZWJ1ZyBtb2Rlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbG9hZCgpIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LkRFQlVHO1xufVxuXG4vKipcbiAqIENvcGllZCBmcm9tIGBub2RlL3NyYy9ub2RlLmpzYC5cbiAqXG4gKiBYWFg6IEl0J3MgbGFtZSB0aGF0IG5vZGUgZG9lc24ndCBleHBvc2UgdGhpcyBBUEkgb3V0LW9mLXRoZS1ib3guIEl0IGFsc29cbiAqIHJlbGllcyBvbiB0aGUgdW5kb2N1bWVudGVkIGB0dHlfd3JhcC5ndWVzc0hhbmRsZVR5cGUoKWAgd2hpY2ggaXMgYWxzbyBsYW1lLlxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZVdyaXRhYmxlU3RkaW9TdHJlYW0gKGZkKSB7XG4gIHZhciBzdHJlYW07XG4gIHZhciB0dHlfd3JhcCA9IHByb2Nlc3MuYmluZGluZygndHR5X3dyYXAnKTtcblxuICAvLyBOb3RlIHN0cmVhbS5fdHlwZSBpcyB1c2VkIGZvciB0ZXN0LW1vZHVsZS1sb2FkLWxpc3QuanNcblxuICBzd2l0Y2ggKHR0eV93cmFwLmd1ZXNzSGFuZGxlVHlwZShmZCkpIHtcbiAgICBjYXNlICdUVFknOlxuICAgICAgc3RyZWFtID0gbmV3IHR0eS5Xcml0ZVN0cmVhbShmZCk7XG4gICAgICBzdHJlYW0uX3R5cGUgPSAndHR5JztcblxuICAgICAgLy8gSGFjayB0byBoYXZlIHN0cmVhbSBub3Qga2VlcCB0aGUgZXZlbnQgbG9vcCBhbGl2ZS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzE3MjZcbiAgICAgIGlmIChzdHJlYW0uX2hhbmRsZSAmJiBzdHJlYW0uX2hhbmRsZS51bnJlZikge1xuICAgICAgICBzdHJlYW0uX2hhbmRsZS51bnJlZigpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdGSUxFJzpcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gICAgICBzdHJlYW0gPSBuZXcgZnMuU3luY1dyaXRlU3RyZWFtKGZkLCB7IGF1dG9DbG9zZTogZmFsc2UgfSk7XG4gICAgICBzdHJlYW0uX3R5cGUgPSAnZnMnO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdQSVBFJzpcbiAgICBjYXNlICdUQ1AnOlxuICAgICAgdmFyIG5ldCA9IHJlcXVpcmUoJ25ldCcpO1xuICAgICAgc3RyZWFtID0gbmV3IG5ldC5Tb2NrZXQoe1xuICAgICAgICBmZDogZmQsXG4gICAgICAgIHJlYWRhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICAvLyBGSVhNRSBTaG91bGQgcHJvYmFibHkgaGF2ZSBhbiBvcHRpb24gaW4gbmV0LlNvY2tldCB0byBjcmVhdGUgYVxuICAgICAgLy8gc3RyZWFtIGZyb20gYW4gZXhpc3RpbmcgZmQgd2hpY2ggaXMgd3JpdGFibGUgb25seS4gQnV0IGZvciBub3dcbiAgICAgIC8vIHdlJ2xsIGp1c3QgYWRkIHRoaXMgaGFjayBhbmQgc2V0IHRoZSBgcmVhZGFibGVgIG1lbWJlciB0byBmYWxzZS5cbiAgICAgIC8vIFRlc3Q6IC4vbm9kZSB0ZXN0L2ZpeHR1cmVzL2VjaG8uanMgPCAvZXRjL3Bhc3N3ZFxuICAgICAgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBzdHJlYW0ucmVhZCA9IG51bGw7XG4gICAgICBzdHJlYW0uX3R5cGUgPSAncGlwZSc7XG5cbiAgICAgIC8vIEZJWE1FIEhhY2sgdG8gaGF2ZSBzdHJlYW0gbm90IGtlZXAgdGhlIGV2ZW50IGxvb3AgYWxpdmUuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2pveWVudC9ub2RlL2lzc3Vlcy8xNzI2XG4gICAgICBpZiAoc3RyZWFtLl9oYW5kbGUgJiYgc3RyZWFtLl9oYW5kbGUudW5yZWYpIHtcbiAgICAgICAgc3RyZWFtLl9oYW5kbGUudW5yZWYoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIFByb2JhYmx5IGFuIGVycm9yIG9uIGluIHV2X2d1ZXNzX2hhbmRsZSgpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ltcGxlbWVudCBtZS4gVW5rbm93biBzdHJlYW0gZmlsZSB0eXBlIScpO1xuICB9XG5cbiAgLy8gRm9yIHN1cHBvcnRpbmcgbGVnYWN5IEFQSSB3ZSBwdXQgdGhlIEZEIGhlcmUuXG4gIHN0cmVhbS5mZCA9IGZkO1xuXG4gIHN0cmVhbS5faXNTdGRpbyA9IHRydWU7XG5cbiAgcmV0dXJuIHN0cmVhbTtcbn1cblxuLyoqXG4gKiBJbml0IGxvZ2ljIGZvciBgZGVidWdgIGluc3RhbmNlcy5cbiAqXG4gKiBDcmVhdGUgYSBuZXcgYGluc3BlY3RPcHRzYCBvYmplY3QgaW4gY2FzZSBgdXNlQ29sb3JzYCBpcyBzZXRcbiAqIGRpZmZlcmVudGx5IGZvciBhIHBhcnRpY3VsYXIgYGRlYnVnYCBpbnN0YW5jZS5cbiAqL1xuXG5mdW5jdGlvbiBpbml0IChkZWJ1Zykge1xuICBkZWJ1Zy5pbnNwZWN0T3B0cyA9IHt9O1xuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZXhwb3J0cy5pbnNwZWN0T3B0cyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGRlYnVnLmluc3BlY3RPcHRzW2tleXNbaV1dID0gZXhwb3J0cy5pbnNwZWN0T3B0c1trZXlzW2ldXTtcbiAgfVxufVxuXG4vKipcbiAqIEVuYWJsZSBuYW1lc3BhY2VzIGxpc3RlZCBpbiBgcHJvY2Vzcy5lbnYuREVCVUdgIGluaXRpYWxseS5cbiAqL1xuXG5leHBvcnRzLmVuYWJsZShsb2FkKCkpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9ub2RlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidHR5XCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwidHR5XCJcbi8vIG1vZHVsZSBpZCA9IDEyN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIHJhdy1ib2R5XG4gKiBDb3B5cmlnaHQoYykgMjAxMy0yMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGJ5dGVzID0gcmVxdWlyZSgnYnl0ZXMnKVxudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnaHR0cC1lcnJvcnMnKVxudmFyIGljb252ID0gcmVxdWlyZSgnaWNvbnYtbGl0ZScpXG52YXIgdW5waXBlID0gcmVxdWlyZSgndW5waXBlJylcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd0JvZHlcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgSUNPTlZfRU5DT0RJTkdfTUVTU0FHRV9SRUdFWFAgPSAvXkVuY29kaW5nIG5vdCByZWNvZ25pemVkOiAvXG5cbi8qKlxuICogR2V0IHRoZSBkZWNvZGVyIGZvciBhIGdpdmVuIGVuY29kaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBlbmNvZGluZ1xuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXREZWNvZGVyIChlbmNvZGluZykge1xuICBpZiAoIWVuY29kaW5nKSByZXR1cm4gbnVsbFxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGljb252LmdldERlY29kZXIoZW5jb2RpbmcpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBlcnJvciBnZXR0aW5nIGRlY29kZXJcbiAgICBpZiAoIUlDT05WX0VOQ09ESU5HX01FU1NBR0VfUkVHRVhQLnRlc3QoZS5tZXNzYWdlKSkgdGhyb3cgZVxuXG4gICAgLy8gdGhlIGVuY29kaW5nIHdhcyBub3QgZm91bmRcbiAgICB0aHJvdyBjcmVhdGVFcnJvcig0MTUsICdzcGVjaWZpZWQgZW5jb2RpbmcgdW5zdXBwb3J0ZWQnLCB7XG4gICAgICBlbmNvZGluZzogZW5jb2RpbmcsXG4gICAgICB0eXBlOiAnZW5jb2RpbmcudW5zdXBwb3J0ZWQnXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgcmF3IGJvZHkgb2YgYSBzdHJlYW0gKHR5cGljYWxseSBIVFRQKS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gc3RyZWFtXG4gKiBAcGFyYW0ge29iamVjdHxzdHJpbmd8ZnVuY3Rpb259IFtvcHRpb25zXVxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGdldFJhd0JvZHkgKHN0cmVhbSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIGRvbmUgPSBjYWxsYmFja1xuICB2YXIgb3B0cyA9IG9wdGlvbnMgfHwge31cblxuICBpZiAob3B0aW9ucyA9PT0gdHJ1ZSB8fCB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBzaG9ydCBjdXQgZm9yIGVuY29kaW5nXG4gICAgb3B0cyA9IHtcbiAgICAgIGVuY29kaW5nOiBvcHRpb25zXG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZG9uZSA9IG9wdGlvbnNcbiAgICBvcHRzID0ge31cbiAgfVxuXG4gIC8vIHZhbGlkYXRlIGNhbGxiYWNrIGlzIGEgZnVuY3Rpb24sIGlmIHByb3ZpZGVkXG4gIGlmIChkb25lICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGRvbmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24nKVxuICB9XG5cbiAgLy8gcmVxdWlyZSB0aGUgY2FsbGJhY2sgd2l0aG91dCBwcm9taXNlc1xuICBpZiAoIWRvbmUgJiYgIWdsb2JhbC5Qcm9taXNlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgY2FsbGJhY2sgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgLy8gZ2V0IGVuY29kaW5nXG4gIHZhciBlbmNvZGluZyA9IG9wdHMuZW5jb2RpbmcgIT09IHRydWVcbiAgICA/IG9wdHMuZW5jb2RpbmdcbiAgICA6ICd1dGYtOCdcblxuICAvLyBjb252ZXJ0IHRoZSBsaW1pdCB0byBhbiBpbnRlZ2VyXG4gIHZhciBsaW1pdCA9IGJ5dGVzLnBhcnNlKG9wdHMubGltaXQpXG5cbiAgLy8gY29udmVydCB0aGUgZXhwZWN0ZWQgbGVuZ3RoIHRvIGFuIGludGVnZXJcbiAgdmFyIGxlbmd0aCA9IG9wdHMubGVuZ3RoICE9IG51bGwgJiYgIWlzTmFOKG9wdHMubGVuZ3RoKVxuICAgID8gcGFyc2VJbnQob3B0cy5sZW5ndGgsIDEwKVxuICAgIDogbnVsbFxuXG4gIGlmIChkb25lKSB7XG4gICAgLy8gY2xhc3NpYyBjYWxsYmFjayBzdHlsZVxuICAgIHJldHVybiByZWFkU3RyZWFtKHN0cmVhbSwgZW5jb2RpbmcsIGxlbmd0aCwgbGltaXQsIGRvbmUpXG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZXhlY3V0b3IgKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlYWRTdHJlYW0oc3RyZWFtLCBlbmNvZGluZywgbGVuZ3RoLCBsaW1pdCwgZnVuY3Rpb24gb25SZWFkIChlcnIsIGJ1Zikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICByZXNvbHZlKGJ1ZilcbiAgICB9KVxuICB9KVxufVxuXG4vKipcbiAqIEhhbHQgYSBzdHJlYW0uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHN0cmVhbVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBoYWx0IChzdHJlYW0pIHtcbiAgLy8gdW5waXBlIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgc3RyZWFtXG4gIHVucGlwZShzdHJlYW0pXG5cbiAgLy8gcGF1c2Ugc3RyZWFtXG4gIGlmICh0eXBlb2Ygc3RyZWFtLnBhdXNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgc3RyZWFtLnBhdXNlKClcbiAgfVxufVxuXG4vKipcbiAqIFJlYWQgdGhlIGRhdGEgZnJvbSB0aGUgc3RyZWFtLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdHJlYW1cbiAqIEBwYXJhbSB7c3RyaW5nfSBlbmNvZGluZ1xuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHJlYWRTdHJlYW0gKHN0cmVhbSwgZW5jb2RpbmcsIGxlbmd0aCwgbGltaXQsIGNhbGxiYWNrKSB7XG4gIHZhciBjb21wbGV0ZSA9IGZhbHNlXG4gIHZhciBzeW5jID0gdHJ1ZVxuXG4gIC8vIGNoZWNrIHRoZSBsZW5ndGggYW5kIGxpbWl0IG9wdGlvbnMuXG4gIC8vIG5vdGU6IHdlIGludGVudGlvbmFsbHkgbGVhdmUgdGhlIHN0cmVhbSBwYXVzZWQsXG4gIC8vIHNvIHVzZXJzIHNob3VsZCBoYW5kbGUgdGhlIHN0cmVhbSB0aGVtc2VsdmVzLlxuICBpZiAobGltaXQgIT09IG51bGwgJiYgbGVuZ3RoICE9PSBudWxsICYmIGxlbmd0aCA+IGxpbWl0KSB7XG4gICAgcmV0dXJuIGRvbmUoY3JlYXRlRXJyb3IoNDEzLCAncmVxdWVzdCBlbnRpdHkgdG9vIGxhcmdlJywge1xuICAgICAgZXhwZWN0ZWQ6IGxlbmd0aCxcbiAgICAgIGxlbmd0aDogbGVuZ3RoLFxuICAgICAgbGltaXQ6IGxpbWl0LFxuICAgICAgdHlwZTogJ2VudGl0eS50b28ubGFyZ2UnXG4gICAgfSkpXG4gIH1cblxuICAvLyBzdHJlYW1zMTogYXNzZXJ0IHJlcXVlc3QgZW5jb2RpbmcgaXMgYnVmZmVyLlxuICAvLyBzdHJlYW1zMis6IGFzc2VydCB0aGUgc3RyZWFtIGVuY29kaW5nIGlzIGJ1ZmZlci5cbiAgLy8gICBzdHJlYW0uX2RlY29kZXI6IHN0cmVhbXMxXG4gIC8vICAgc3RhdGUuZW5jb2Rpbmc6IHN0cmVhbXMyXG4gIC8vICAgc3RhdGUuZGVjb2Rlcjogc3RyZWFtczIsIHNwZWNpZmljYWxseSA8IDAuMTAuNlxuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGVcbiAgaWYgKHN0cmVhbS5fZGVjb2RlciB8fCAoc3RhdGUgJiYgKHN0YXRlLmVuY29kaW5nIHx8IHN0YXRlLmRlY29kZXIpKSkge1xuICAgIC8vIGRldmVsb3BlciBlcnJvclxuICAgIHJldHVybiBkb25lKGNyZWF0ZUVycm9yKDUwMCwgJ3N0cmVhbSBlbmNvZGluZyBzaG91bGQgbm90IGJlIHNldCcsIHtcbiAgICAgIHR5cGU6ICdzdHJlYW0uZW5jb2Rpbmcuc2V0J1xuICAgIH0pKVxuICB9XG5cbiAgdmFyIHJlY2VpdmVkID0gMFxuICB2YXIgZGVjb2RlclxuXG4gIHRyeSB7XG4gICAgZGVjb2RlciA9IGdldERlY29kZXIoZW5jb2RpbmcpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBkb25lKGVycilcbiAgfVxuXG4gIHZhciBidWZmZXIgPSBkZWNvZGVyXG4gICAgPyAnJ1xuICAgIDogW11cblxuICAvLyBhdHRhY2ggbGlzdGVuZXJzXG4gIHN0cmVhbS5vbignYWJvcnRlZCcsIG9uQWJvcnRlZClcbiAgc3RyZWFtLm9uKCdjbG9zZScsIGNsZWFudXApXG4gIHN0cmVhbS5vbignZGF0YScsIG9uRGF0YSlcbiAgc3RyZWFtLm9uKCdlbmQnLCBvbkVuZClcbiAgc3RyZWFtLm9uKCdlcnJvcicsIG9uRW5kKVxuXG4gIC8vIG1hcmsgc3luYyBzZWN0aW9uIGNvbXBsZXRlXG4gIHN5bmMgPSBmYWxzZVxuXG4gIGZ1bmN0aW9uIGRvbmUgKCkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpXG5cbiAgICAvLyBjb3B5IGFyZ3VtZW50c1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXVxuICAgIH1cblxuICAgIC8vIG1hcmsgY29tcGxldGVcbiAgICBjb21wbGV0ZSA9IHRydWVcblxuICAgIGlmIChzeW5jKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGludm9rZUNhbGxiYWNrKVxuICAgIH0gZWxzZSB7XG4gICAgICBpbnZva2VDYWxsYmFjaygpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52b2tlQ2FsbGJhY2sgKCkge1xuICAgICAgY2xlYW51cCgpXG5cbiAgICAgIGlmIChhcmdzWzBdKSB7XG4gICAgICAgIC8vIGhhbHQgdGhlIHN0cmVhbSBvbiBlcnJvclxuICAgICAgICBoYWx0KHN0cmVhbSlcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgYXJncylcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbkFib3J0ZWQgKCkge1xuICAgIGlmIChjb21wbGV0ZSkgcmV0dXJuXG5cbiAgICBkb25lKGNyZWF0ZUVycm9yKDQwMCwgJ3JlcXVlc3QgYWJvcnRlZCcsIHtcbiAgICAgIGNvZGU6ICdFQ09OTkFCT1JURUQnLFxuICAgICAgZXhwZWN0ZWQ6IGxlbmd0aCxcbiAgICAgIGxlbmd0aDogbGVuZ3RoLFxuICAgICAgcmVjZWl2ZWQ6IHJlY2VpdmVkLFxuICAgICAgdHlwZTogJ3JlcXVlc3QuYWJvcnRlZCdcbiAgICB9KSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRGF0YSAoY2h1bmspIHtcbiAgICBpZiAoY29tcGxldGUpIHJldHVyblxuXG4gICAgcmVjZWl2ZWQgKz0gY2h1bmsubGVuZ3RoXG5cbiAgICBpZiAobGltaXQgIT09IG51bGwgJiYgcmVjZWl2ZWQgPiBsaW1pdCkge1xuICAgICAgZG9uZShjcmVhdGVFcnJvcig0MTMsICdyZXF1ZXN0IGVudGl0eSB0b28gbGFyZ2UnLCB7XG4gICAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICAgICAgcmVjZWl2ZWQ6IHJlY2VpdmVkLFxuICAgICAgICB0eXBlOiAnZW50aXR5LnRvby5sYXJnZSdcbiAgICAgIH0pKVxuICAgIH0gZWxzZSBpZiAoZGVjb2Rlcikge1xuICAgICAgYnVmZmVyICs9IGRlY29kZXIud3JpdGUoY2h1bmspXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlci5wdXNoKGNodW5rKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRW5kIChlcnIpIHtcbiAgICBpZiAoY29tcGxldGUpIHJldHVyblxuICAgIGlmIChlcnIpIHJldHVybiBkb25lKGVycilcblxuICAgIGlmIChsZW5ndGggIT09IG51bGwgJiYgcmVjZWl2ZWQgIT09IGxlbmd0aCkge1xuICAgICAgZG9uZShjcmVhdGVFcnJvcig0MDAsICdyZXF1ZXN0IHNpemUgZGlkIG5vdCBtYXRjaCBjb250ZW50IGxlbmd0aCcsIHtcbiAgICAgICAgZXhwZWN0ZWQ6IGxlbmd0aCxcbiAgICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICAgIHJlY2VpdmVkOiByZWNlaXZlZCxcbiAgICAgICAgdHlwZTogJ3JlcXVlc3Quc2l6ZS5pbnZhbGlkJ1xuICAgICAgfSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdHJpbmcgPSBkZWNvZGVyXG4gICAgICAgID8gYnVmZmVyICsgKGRlY29kZXIuZW5kKCkgfHwgJycpXG4gICAgICAgIDogQnVmZmVyLmNvbmNhdChidWZmZXIpXG4gICAgICBkb25lKG51bGwsIHN0cmluZylcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBjbGVhbnVwICgpIHtcbiAgICBidWZmZXIgPSBudWxsXG5cbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0ZWQnLCBvbkFib3J0ZWQpXG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25EYXRhKVxuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25FbmQpXG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRW5kKVxuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDEyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGh0dHAtZXJyb3JzXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE2IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdodHRwLWVycm9ycycpXG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCdzZXRwcm90b3R5cGVvZicpXG52YXIgc3RhdHVzZXMgPSByZXF1aXJlKCdzdGF0dXNlcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFcnJvclxubW9kdWxlLmV4cG9ydHMuSHR0cEVycm9yID0gY3JlYXRlSHR0cEVycm9yQ29uc3RydWN0b3IoKVxuXG4vLyBQb3B1bGF0ZSBleHBvcnRzIGZvciBhbGwgY29uc3RydWN0b3JzXG5wb3B1bGF0ZUNvbnN0cnVjdG9yRXhwb3J0cyhtb2R1bGUuZXhwb3J0cywgc3RhdHVzZXMuY29kZXMsIG1vZHVsZS5leHBvcnRzLkh0dHBFcnJvcilcblxuLyoqXG4gKiBHZXQgdGhlIGNvZGUgY2xhc3Mgb2YgYSBzdGF0dXMgY29kZS5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29kZUNsYXNzIChzdGF0dXMpIHtcbiAgcmV0dXJuIE51bWJlcihTdHJpbmcoc3RhdHVzKS5jaGFyQXQoMCkgKyAnMDAnKVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBIVFRQIEVycm9yLlxuICpcbiAqIEByZXR1cm5zIHtFcnJvcn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFcnJvciAoKSB7XG4gIC8vIHNvIG11Y2ggYXJpdHkgZ29pbmcgb24gfl9+XG4gIHZhciBlcnJcbiAgdmFyIG1zZ1xuICB2YXIgc3RhdHVzID0gNTAwXG4gIHZhciBwcm9wcyA9IHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3VtZW50c1tpXVxuICAgIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgZXJyID0gYXJnXG4gICAgICBzdGF0dXMgPSBlcnIuc3RhdHVzIHx8IGVyci5zdGF0dXNDb2RlIHx8IHN0YXR1c1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBtc2cgPSBhcmdcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHN0YXR1cyA9IGFyZ1xuICAgICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICAgIGRlcHJlY2F0ZSgnbm9uLWZpcnN0LWFyZ3VtZW50IHN0YXR1cyBjb2RlOyByZXBsYWNlIHdpdGggY3JlYXRlRXJyb3IoJyArIGFyZyArICcsIC4uLiknKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBwcm9wcyA9IGFyZ1xuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RhdHVzID09PSAnbnVtYmVyJyAmJiAoc3RhdHVzIDwgNDAwIHx8IHN0YXR1cyA+PSA2MDApKSB7XG4gICAgZGVwcmVjYXRlKCdub24tZXJyb3Igc3RhdHVzIGNvZGU7IHVzZSBvbmx5IDR4eCBvciA1eHggc3RhdHVzIGNvZGVzJylcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RhdHVzICE9PSAnbnVtYmVyJyB8fFxuICAgICghc3RhdHVzZXNbc3RhdHVzXSAmJiAoc3RhdHVzIDwgNDAwIHx8IHN0YXR1cyA+PSA2MDApKSkge1xuICAgIHN0YXR1cyA9IDUwMFxuICB9XG5cbiAgLy8gY29uc3RydWN0b3JcbiAgdmFyIEh0dHBFcnJvciA9IGNyZWF0ZUVycm9yW3N0YXR1c10gfHwgY3JlYXRlRXJyb3JbY29kZUNsYXNzKHN0YXR1cyldXG5cbiAgaWYgKCFlcnIpIHtcbiAgICAvLyBjcmVhdGUgZXJyb3JcbiAgICBlcnIgPSBIdHRwRXJyb3JcbiAgICAgID8gbmV3IEh0dHBFcnJvcihtc2cpXG4gICAgICA6IG5ldyBFcnJvcihtc2cgfHwgc3RhdHVzZXNbc3RhdHVzXSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIGNyZWF0ZUVycm9yKVxuICB9XG5cbiAgaWYgKCFIdHRwRXJyb3IgfHwgIShlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3IpIHx8IGVyci5zdGF0dXMgIT09IHN0YXR1cykge1xuICAgIC8vIGFkZCBwcm9wZXJ0aWVzIHRvIGdlbmVyaWMgZXJyb3JcbiAgICBlcnIuZXhwb3NlID0gc3RhdHVzIDwgNTAwXG4gICAgZXJyLnN0YXR1cyA9IGVyci5zdGF0dXNDb2RlID0gc3RhdHVzXG4gIH1cblxuICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoa2V5ICE9PSAnc3RhdHVzJyAmJiBrZXkgIT09ICdzdGF0dXNDb2RlJykge1xuICAgICAgZXJyW2tleV0gPSBwcm9wc1trZXldXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVyclxufVxuXG4vKipcbiAqIENyZWF0ZSBIVFRQIGVycm9yIGFic3RyYWN0IGJhc2UgY2xhc3MuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUh0dHBFcnJvckNvbnN0cnVjdG9yICgpIHtcbiAgZnVuY3Rpb24gSHR0cEVycm9yICgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYW5ub3QgY29uc3RydWN0IGFic3RyYWN0IGNsYXNzJylcbiAgfVxuXG4gIGluaGVyaXRzKEh0dHBFcnJvciwgRXJyb3IpXG5cbiAgcmV0dXJuIEh0dHBFcnJvclxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNvbnN0cnVjdG9yIGZvciBhIGNsaWVudCBlcnJvci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50RXJyb3JDb25zdHJ1Y3RvciAoSHR0cEVycm9yLCBuYW1lLCBjb2RlKSB7XG4gIHZhciBjbGFzc05hbWUgPSBuYW1lLm1hdGNoKC9FcnJvciQvKSA/IG5hbWUgOiBuYW1lICsgJ0Vycm9yJ1xuXG4gIGZ1bmN0aW9uIENsaWVudEVycm9yIChtZXNzYWdlKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBlcnJvciBvYmplY3RcbiAgICB2YXIgbXNnID0gbWVzc2FnZSAhPSBudWxsID8gbWVzc2FnZSA6IHN0YXR1c2VzW2NvZGVdXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihtc2cpXG5cbiAgICAvLyBjYXB0dXJlIGEgc3RhY2sgdHJhY2UgdG8gdGhlIGNvbnN0cnVjdGlvbiBwb2ludFxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgQ2xpZW50RXJyb3IpXG5cbiAgICAvLyBhZGp1c3QgdGhlIFtbUHJvdG90eXBlXV1cbiAgICBzZXRQcm90b3R5cGVPZihlcnIsIENsaWVudEVycm9yLnByb3RvdHlwZSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBtZXNzYWdlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ21lc3NhZ2UnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IG1zZyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBuYW1lXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ25hbWUnLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBjbGFzc05hbWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pXG5cbiAgICByZXR1cm4gZXJyXG4gIH1cblxuICBpbmhlcml0cyhDbGllbnRFcnJvciwgSHR0cEVycm9yKVxuXG4gIENsaWVudEVycm9yLnByb3RvdHlwZS5zdGF0dXMgPSBjb2RlXG4gIENsaWVudEVycm9yLnByb3RvdHlwZS5zdGF0dXNDb2RlID0gY29kZVxuICBDbGllbnRFcnJvci5wcm90b3R5cGUuZXhwb3NlID0gdHJ1ZVxuXG4gIHJldHVybiBDbGllbnRFcnJvclxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNvbnN0cnVjdG9yIGZvciBhIHNlcnZlciBlcnJvci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlU2VydmVyRXJyb3JDb25zdHJ1Y3RvciAoSHR0cEVycm9yLCBuYW1lLCBjb2RlKSB7XG4gIHZhciBjbGFzc05hbWUgPSBuYW1lLm1hdGNoKC9FcnJvciQvKSA/IG5hbWUgOiBuYW1lICsgJ0Vycm9yJ1xuXG4gIGZ1bmN0aW9uIFNlcnZlckVycm9yIChtZXNzYWdlKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBlcnJvciBvYmplY3RcbiAgICB2YXIgbXNnID0gbWVzc2FnZSAhPSBudWxsID8gbWVzc2FnZSA6IHN0YXR1c2VzW2NvZGVdXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihtc2cpXG5cbiAgICAvLyBjYXB0dXJlIGEgc3RhY2sgdHJhY2UgdG8gdGhlIGNvbnN0cnVjdGlvbiBwb2ludFxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgU2VydmVyRXJyb3IpXG5cbiAgICAvLyBhZGp1c3QgdGhlIFtbUHJvdG90eXBlXV1cbiAgICBzZXRQcm90b3R5cGVPZihlcnIsIFNlcnZlckVycm9yLnByb3RvdHlwZSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBtZXNzYWdlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ21lc3NhZ2UnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IG1zZyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBuYW1lXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ25hbWUnLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBjbGFzc05hbWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pXG5cbiAgICByZXR1cm4gZXJyXG4gIH1cblxuICBpbmhlcml0cyhTZXJ2ZXJFcnJvciwgSHR0cEVycm9yKVxuXG4gIFNlcnZlckVycm9yLnByb3RvdHlwZS5zdGF0dXMgPSBjb2RlXG4gIFNlcnZlckVycm9yLnByb3RvdHlwZS5zdGF0dXNDb2RlID0gY29kZVxuICBTZXJ2ZXJFcnJvci5wcm90b3R5cGUuZXhwb3NlID0gZmFsc2VcblxuICByZXR1cm4gU2VydmVyRXJyb3Jcbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSB0aGUgZXhwb3J0cyBvYmplY3Qgd2l0aCBjb25zdHJ1Y3RvcnMgZm9yIGV2ZXJ5IGVycm9yIGNsYXNzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwb3B1bGF0ZUNvbnN0cnVjdG9yRXhwb3J0cyAoZXhwb3J0cywgY29kZXMsIEh0dHBFcnJvcikge1xuICBjb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIGZvckVhY2hDb2RlIChjb2RlKSB7XG4gICAgdmFyIENvZGVFcnJvclxuICAgIHZhciBuYW1lID0gdG9JZGVudGlmaWVyKHN0YXR1c2VzW2NvZGVdKVxuXG4gICAgc3dpdGNoIChjb2RlQ2xhc3MoY29kZSkpIHtcbiAgICAgIGNhc2UgNDAwOlxuICAgICAgICBDb2RlRXJyb3IgPSBjcmVhdGVDbGllbnRFcnJvckNvbnN0cnVjdG9yKEh0dHBFcnJvciwgbmFtZSwgY29kZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgNTAwOlxuICAgICAgICBDb2RlRXJyb3IgPSBjcmVhdGVTZXJ2ZXJFcnJvckNvbnN0cnVjdG9yKEh0dHBFcnJvciwgbmFtZSwgY29kZSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoQ29kZUVycm9yKSB7XG4gICAgICAvLyBleHBvcnQgdGhlIGNvbnN0cnVjdG9yXG4gICAgICBleHBvcnRzW2NvZGVdID0gQ29kZUVycm9yXG4gICAgICBleHBvcnRzW25hbWVdID0gQ29kZUVycm9yXG4gICAgfVxuICB9KVxuXG4gIC8vIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5XG4gIGV4cG9ydHNbXCJJJ21hdGVhcG90XCJdID0gZGVwcmVjYXRlLmZ1bmN0aW9uKGV4cG9ydHMuSW1BVGVhcG90LFxuICAgICdcIklcXCdtYXRlYXBvdFwiOyB1c2UgXCJJbUFUZWFwb3RcIiBpbnN0ZWFkJylcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIG9mIHdvcmRzIHRvIGEgSmF2YVNjcmlwdCBpZGVudGlmaWVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiB0b0lkZW50aWZpZXIgKHN0cikge1xuICByZXR1cm4gc3RyLnNwbGl0KCcgJykubWFwKGZ1bmN0aW9uICh0b2tlbikge1xuICAgIHJldHVybiB0b2tlbi5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgdG9rZW4uc2xpY2UoMSlcbiAgfSkuam9pbignJykucmVwbGFjZSgvW14gXzAtOWEtel0vZ2ksICcnKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3Jhdy1ib2R5L25vZGVfbW9kdWxlcy9odHRwLWVycm9ycy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZGVwZFxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNyBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciBjYWxsU2l0ZVRvU3RyaW5nID0gcmVxdWlyZSgnLi9saWIvY29tcGF0JykuY2FsbFNpdGVUb1N0cmluZ1xudmFyIGV2ZW50TGlzdGVuZXJDb3VudCA9IHJlcXVpcmUoJy4vbGliL2NvbXBhdCcpLmV2ZW50TGlzdGVuZXJDb3VudFxudmFyIHJlbGF0aXZlID0gcmVxdWlyZSgncGF0aCcpLnJlbGF0aXZlXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXBkXG5cbi8qKlxuICogR2V0IHRoZSBwYXRoIHRvIGJhc2UgZmlsZXMgb24uXG4gKi9cblxudmFyIGJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKVxuXG4vKipcbiAqIERldGVybWluZSBpZiBuYW1lc3BhY2UgaXMgY29udGFpbmVkIGluIHRoZSBzdHJpbmcuXG4gKi9cblxuZnVuY3Rpb24gY29udGFpbnNOYW1lc3BhY2UgKHN0ciwgbmFtZXNwYWNlKSB7XG4gIHZhciB2YWwgPSBzdHIuc3BsaXQoL1sgLF0rLylcblxuICBuYW1lc3BhY2UgPSBTdHJpbmcobmFtZXNwYWNlKS50b0xvd2VyQ2FzZSgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIShzdHIgPSB2YWxbaV0pKSBjb250aW51ZVxuXG4gICAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lZFxuICAgIGlmIChzdHIgPT09ICcqJyB8fCBzdHIudG9Mb3dlckNhc2UoKSA9PT0gbmFtZXNwYWNlKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIENvbnZlcnQgYSBkYXRhIGRlc2NyaXB0b3IgdG8gYWNjZXNzb3IgZGVzY3JpcHRvci5cbiAqL1xuXG5mdW5jdGlvbiBjb252ZXJ0RGF0YURlc2NyaXB0b3JUb0FjY2Vzc29yIChvYmosIHByb3AsIG1lc3NhZ2UpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgcHJvcClcbiAgdmFyIHZhbHVlID0gZGVzY3JpcHRvci52YWx1ZVxuXG4gIGRlc2NyaXB0b3IuZ2V0ID0gZnVuY3Rpb24gZ2V0dGVyICgpIHsgcmV0dXJuIHZhbHVlIH1cblxuICBpZiAoZGVzY3JpcHRvci53cml0YWJsZSkge1xuICAgIGRlc2NyaXB0b3Iuc2V0ID0gZnVuY3Rpb24gc2V0dGVyICh2YWwpIHsgcmV0dXJuICh2YWx1ZSA9IHZhbCkgfVxuICB9XG5cbiAgZGVsZXRlIGRlc2NyaXB0b3IudmFsdWVcbiAgZGVsZXRlIGRlc2NyaXB0b3Iud3JpdGFibGVcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCBkZXNjcmlwdG9yKVxuXG4gIHJldHVybiBkZXNjcmlwdG9yXG59XG5cbi8qKlxuICogQ3JlYXRlIGFyZ3VtZW50cyBzdHJpbmcgdG8ga2VlcCBhcml0eS5cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVBcmd1bWVudHNTdHJpbmcgKGFyaXR5KSB7XG4gIHZhciBzdHIgPSAnJ1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJpdHk7IGkrKykge1xuICAgIHN0ciArPSAnLCBhcmcnICsgaVxuICB9XG5cbiAgcmV0dXJuIHN0ci5zdWJzdHIoMilcbn1cblxuLyoqXG4gKiBDcmVhdGUgc3RhY2sgc3RyaW5nIGZyb20gc3RhY2suXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlU3RhY2tTdHJpbmcgKHN0YWNrKSB7XG4gIHZhciBzdHIgPSB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5uYW1lc3BhY2VcblxuICBpZiAodGhpcy5tZXNzYWdlKSB7XG4gICAgc3RyICs9ICcgZGVwcmVjYXRlZCAnICsgdGhpcy5tZXNzYWdlXG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgc3RyICs9ICdcXG4gICAgYXQgJyArIGNhbGxTaXRlVG9TdHJpbmcoc3RhY2tbaV0pXG4gIH1cblxuICByZXR1cm4gc3RyXG59XG5cbi8qKlxuICogQ3JlYXRlIGRlcHJlY2F0ZSBmb3IgbmFtZXNwYWNlIGluIGNhbGxlci5cbiAqL1xuXG5mdW5jdGlvbiBkZXBkIChuYW1lc3BhY2UpIHtcbiAgaWYgKCFuYW1lc3BhY2UpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBuYW1lc3BhY2UgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgdmFyIHN0YWNrID0gZ2V0U3RhY2soKVxuICB2YXIgc2l0ZSA9IGNhbGxTaXRlTG9jYXRpb24oc3RhY2tbMV0pXG4gIHZhciBmaWxlID0gc2l0ZVswXVxuXG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZSAobWVzc2FnZSkge1xuICAgIC8vIGNhbGwgdG8gc2VsZiBhcyBsb2dcbiAgICBsb2cuY2FsbChkZXByZWNhdGUsIG1lc3NhZ2UpXG4gIH1cblxuICBkZXByZWNhdGUuX2ZpbGUgPSBmaWxlXG4gIGRlcHJlY2F0ZS5faWdub3JlZCA9IGlzaWdub3JlZChuYW1lc3BhY2UpXG4gIGRlcHJlY2F0ZS5fbmFtZXNwYWNlID0gbmFtZXNwYWNlXG4gIGRlcHJlY2F0ZS5fdHJhY2VkID0gaXN0cmFjZWQobmFtZXNwYWNlKVxuICBkZXByZWNhdGUuX3dhcm5lZCA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuICBkZXByZWNhdGUuZnVuY3Rpb24gPSB3cmFwZnVuY3Rpb25cbiAgZGVwcmVjYXRlLnByb3BlcnR5ID0gd3JhcHByb3BlcnR5XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZVxufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBuYW1lc3BhY2UgaXMgaWdub3JlZC5cbiAqL1xuXG5mdW5jdGlvbiBpc2lnbm9yZWQgKG5hbWVzcGFjZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogdGVzdGVkIGluIGEgY2hpbGQgcHJvY2Vzc3MgKi9cbiAgaWYgKHByb2Nlc3Mubm9EZXByZWNhdGlvbikge1xuICAgIC8vIC0tbm8tZGVwcmVjYXRpb24gc3VwcG9ydFxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICB2YXIgc3RyID0gcHJvY2Vzcy5lbnYuTk9fREVQUkVDQVRJT04gfHwgJydcblxuICAvLyBuYW1lc3BhY2UgaWdub3JlZFxuICByZXR1cm4gY29udGFpbnNOYW1lc3BhY2Uoc3RyLCBuYW1lc3BhY2UpXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIG5hbWVzcGFjZSBpcyB0cmFjZWQuXG4gKi9cblxuZnVuY3Rpb24gaXN0cmFjZWQgKG5hbWVzcGFjZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogdGVzdGVkIGluIGEgY2hpbGQgcHJvY2Vzc3MgKi9cbiAgaWYgKHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikge1xuICAgIC8vIC0tdHJhY2UtZGVwcmVjYXRpb24gc3VwcG9ydFxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICB2YXIgc3RyID0gcHJvY2Vzcy5lbnYuVFJBQ0VfREVQUkVDQVRJT04gfHwgJydcblxuICAvLyBuYW1lc3BhY2UgdHJhY2VkXG4gIHJldHVybiBjb250YWluc05hbWVzcGFjZShzdHIsIG5hbWVzcGFjZSlcbn1cblxuLyoqXG4gKiBEaXNwbGF5IGRlcHJlY2F0aW9uIG1lc3NhZ2UuXG4gKi9cblxuZnVuY3Rpb24gbG9nIChtZXNzYWdlLCBzaXRlKSB7XG4gIHZhciBoYXNsaXN0ZW5lcnMgPSBldmVudExpc3RlbmVyQ291bnQocHJvY2VzcywgJ2RlcHJlY2F0aW9uJykgIT09IDBcblxuICAvLyBhYm9ydCBlYXJseSBpZiBubyBkZXN0aW5hdGlvblxuICBpZiAoIWhhc2xpc3RlbmVycyAmJiB0aGlzLl9pZ25vcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgY2FsbGVyXG4gIHZhciBjYWxsRmlsZVxuICB2YXIgY2FsbFNpdGVcbiAgdmFyIGkgPSAwXG4gIHZhciBzZWVuID0gZmFsc2VcbiAgdmFyIHN0YWNrID0gZ2V0U3RhY2soKVxuICB2YXIgZmlsZSA9IHRoaXMuX2ZpbGVcblxuICBpZiAoc2l0ZSkge1xuICAgIC8vIHByb3ZpZGVkIHNpdGVcbiAgICBjYWxsU2l0ZSA9IGNhbGxTaXRlTG9jYXRpb24oc3RhY2tbMV0pXG4gICAgY2FsbFNpdGUubmFtZSA9IHNpdGUubmFtZVxuICAgIGZpbGUgPSBjYWxsU2l0ZVswXVxuICB9IGVsc2Uge1xuICAgIC8vIGdldCBjYWxsIHNpdGVcbiAgICBpID0gMlxuICAgIHNpdGUgPSBjYWxsU2l0ZUxvY2F0aW9uKHN0YWNrW2ldKVxuICAgIGNhbGxTaXRlID0gc2l0ZVxuICB9XG5cbiAgLy8gZ2V0IGNhbGxlciBvZiBkZXByZWNhdGVkIHRoaW5nIGluIHJlbGF0aW9uIHRvIGZpbGVcbiAgZm9yICg7IGkgPCBzdGFjay5sZW5ndGg7IGkrKykge1xuICAgIGNhbGxlciA9IGNhbGxTaXRlTG9jYXRpb24oc3RhY2tbaV0pXG4gICAgY2FsbEZpbGUgPSBjYWxsZXJbMF1cblxuICAgIGlmIChjYWxsRmlsZSA9PT0gZmlsZSkge1xuICAgICAgc2VlbiA9IHRydWVcbiAgICB9IGVsc2UgaWYgKGNhbGxGaWxlID09PSB0aGlzLl9maWxlKSB7XG4gICAgICBmaWxlID0gdGhpcy5fZmlsZVxuICAgIH0gZWxzZSBpZiAoc2Vlbikge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICB2YXIga2V5ID0gY2FsbGVyXG4gICAgPyBzaXRlLmpvaW4oJzonKSArICdfXycgKyBjYWxsZXIuam9pbignOicpXG4gICAgOiB1bmRlZmluZWRcblxuICBpZiAoa2V5ICE9PSB1bmRlZmluZWQgJiYga2V5IGluIHRoaXMuX3dhcm5lZCkge1xuICAgIC8vIGFscmVhZHkgd2FybmVkXG4gICAgcmV0dXJuXG4gIH1cblxuICB0aGlzLl93YXJuZWRba2V5XSA9IHRydWVcblxuICAvLyBnZW5lcmF0ZSBhdXRvbWF0aWMgbWVzc2FnZSBmcm9tIGNhbGwgc2l0ZVxuICBpZiAoIW1lc3NhZ2UpIHtcbiAgICBtZXNzYWdlID0gY2FsbFNpdGUgPT09IHNpdGUgfHwgIWNhbGxTaXRlLm5hbWVcbiAgICAgID8gZGVmYXVsdE1lc3NhZ2Uoc2l0ZSlcbiAgICAgIDogZGVmYXVsdE1lc3NhZ2UoY2FsbFNpdGUpXG4gIH1cblxuICAvLyBlbWl0IGRlcHJlY2F0aW9uIGlmIGxpc3RlbmVycyBleGlzdFxuICBpZiAoaGFzbGlzdGVuZXJzKSB7XG4gICAgdmFyIGVyciA9IERlcHJlY2F0aW9uRXJyb3IodGhpcy5fbmFtZXNwYWNlLCBtZXNzYWdlLCBzdGFjay5zbGljZShpKSlcbiAgICBwcm9jZXNzLmVtaXQoJ2RlcHJlY2F0aW9uJywgZXJyKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gZm9ybWF0IGFuZCB3cml0ZSBtZXNzYWdlXG4gIHZhciBmb3JtYXQgPSBwcm9jZXNzLnN0ZGVyci5pc1RUWVxuICAgID8gZm9ybWF0Q29sb3JcbiAgICA6IGZvcm1hdFBsYWluXG4gIHZhciBtc2cgPSBmb3JtYXQuY2FsbCh0aGlzLCBtZXNzYWdlLCBjYWxsZXIsIHN0YWNrLnNsaWNlKGkpKVxuICBwcm9jZXNzLnN0ZGVyci53cml0ZShtc2cgKyAnXFxuJywgJ3V0ZjgnKVxufVxuXG4vKipcbiAqIEdldCBjYWxsIHNpdGUgbG9jYXRpb24gYXMgYXJyYXkuXG4gKi9cblxuZnVuY3Rpb24gY2FsbFNpdGVMb2NhdGlvbiAoY2FsbFNpdGUpIHtcbiAgdmFyIGZpbGUgPSBjYWxsU2l0ZS5nZXRGaWxlTmFtZSgpIHx8ICc8YW5vbnltb3VzPidcbiAgdmFyIGxpbmUgPSBjYWxsU2l0ZS5nZXRMaW5lTnVtYmVyKClcbiAgdmFyIGNvbG0gPSBjYWxsU2l0ZS5nZXRDb2x1bW5OdW1iZXIoKVxuXG4gIGlmIChjYWxsU2l0ZS5pc0V2YWwoKSkge1xuICAgIGZpbGUgPSBjYWxsU2l0ZS5nZXRFdmFsT3JpZ2luKCkgKyAnLCAnICsgZmlsZVxuICB9XG5cbiAgdmFyIHNpdGUgPSBbZmlsZSwgbGluZSwgY29sbV1cblxuICBzaXRlLmNhbGxTaXRlID0gY2FsbFNpdGVcbiAgc2l0ZS5uYW1lID0gY2FsbFNpdGUuZ2V0RnVuY3Rpb25OYW1lKClcblxuICByZXR1cm4gc2l0ZVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgZGVmYXVsdCBtZXNzYWdlIGZyb20gdGhlIHNpdGUuXG4gKi9cblxuZnVuY3Rpb24gZGVmYXVsdE1lc3NhZ2UgKHNpdGUpIHtcbiAgdmFyIGNhbGxTaXRlID0gc2l0ZS5jYWxsU2l0ZVxuICB2YXIgZnVuY05hbWUgPSBzaXRlLm5hbWVcblxuICAvLyBtYWtlIHVzZWZ1bCBhbm9ueW1vdXMgbmFtZVxuICBpZiAoIWZ1bmNOYW1lKSB7XG4gICAgZnVuY05hbWUgPSAnPGFub255bW91c0AnICsgZm9ybWF0TG9jYXRpb24oc2l0ZSkgKyAnPidcbiAgfVxuXG4gIHZhciBjb250ZXh0ID0gY2FsbFNpdGUuZ2V0VGhpcygpXG4gIHZhciB0eXBlTmFtZSA9IGNvbnRleHQgJiYgY2FsbFNpdGUuZ2V0VHlwZU5hbWUoKVxuXG4gIC8vIGlnbm9yZSB1c2VsZXNzIHR5cGUgbmFtZVxuICBpZiAodHlwZU5hbWUgPT09ICdPYmplY3QnKSB7XG4gICAgdHlwZU5hbWUgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8vIG1ha2UgdXNlZnVsIHR5cGUgbmFtZVxuICBpZiAodHlwZU5hbWUgPT09ICdGdW5jdGlvbicpIHtcbiAgICB0eXBlTmFtZSA9IGNvbnRleHQubmFtZSB8fCB0eXBlTmFtZVxuICB9XG5cbiAgcmV0dXJuIHR5cGVOYW1lICYmIGNhbGxTaXRlLmdldE1ldGhvZE5hbWUoKVxuICAgID8gdHlwZU5hbWUgKyAnLicgKyBmdW5jTmFtZVxuICAgIDogZnVuY05hbWVcbn1cblxuLyoqXG4gKiBGb3JtYXQgZGVwcmVjYXRpb24gbWVzc2FnZSB3aXRob3V0IGNvbG9yLlxuICovXG5cbmZ1bmN0aW9uIGZvcm1hdFBsYWluIChtc2csIGNhbGxlciwgc3RhY2spIHtcbiAgdmFyIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKVxuXG4gIHZhciBmb3JtYXR0ZWQgPSB0aW1lc3RhbXAgK1xuICAgICcgJyArIHRoaXMuX25hbWVzcGFjZSArXG4gICAgJyBkZXByZWNhdGVkICcgKyBtc2dcblxuICAvLyBhZGQgc3RhY2sgdHJhY2VcbiAgaWYgKHRoaXMuX3RyYWNlZCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvcm1hdHRlZCArPSAnXFxuICAgIGF0ICcgKyBjYWxsU2l0ZVRvU3RyaW5nKHN0YWNrW2ldKVxuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWRcbiAgfVxuXG4gIGlmIChjYWxsZXIpIHtcbiAgICBmb3JtYXR0ZWQgKz0gJyBhdCAnICsgZm9ybWF0TG9jYXRpb24oY2FsbGVyKVxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZFxufVxuXG4vKipcbiAqIEZvcm1hdCBkZXByZWNhdGlvbiBtZXNzYWdlIHdpdGggY29sb3IuXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0Q29sb3IgKG1zZywgY2FsbGVyLCBzdGFjaykge1xuICB2YXIgZm9ybWF0dGVkID0gJ1xceDFiWzM2OzFtJyArIHRoaXMuX25hbWVzcGFjZSArICdcXHgxYlsyMjszOW0nICsgLy8gYm9sZCBjeWFuXG4gICAgJyBcXHgxYlszMzsxbWRlcHJlY2F0ZWRcXHgxYlsyMjszOW0nICsgLy8gYm9sZCB5ZWxsb3dcbiAgICAnIFxceDFiWzBtJyArIG1zZyArICdcXHgxYlszOW0nIC8vIHJlc2V0XG5cbiAgLy8gYWRkIHN0YWNrIHRyYWNlXG4gIGlmICh0aGlzLl90cmFjZWQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3JtYXR0ZWQgKz0gJ1xcbiAgICBcXHgxYlszNm1hdCAnICsgY2FsbFNpdGVUb1N0cmluZyhzdGFja1tpXSkgKyAnXFx4MWJbMzltJyAvLyBjeWFuXG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZFxuICB9XG5cbiAgaWYgKGNhbGxlcikge1xuICAgIGZvcm1hdHRlZCArPSAnIFxceDFiWzM2bScgKyBmb3JtYXRMb2NhdGlvbihjYWxsZXIpICsgJ1xceDFiWzM5bScgLy8gY3lhblxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZFxufVxuXG4vKipcbiAqIEZvcm1hdCBjYWxsIHNpdGUgbG9jYXRpb24uXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0TG9jYXRpb24gKGNhbGxTaXRlKSB7XG4gIHJldHVybiByZWxhdGl2ZShiYXNlUGF0aCwgY2FsbFNpdGVbMF0pICtcbiAgICAnOicgKyBjYWxsU2l0ZVsxXSArXG4gICAgJzonICsgY2FsbFNpdGVbMl1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIHN0YWNrIGFzIGFycmF5IG9mIGNhbGwgc2l0ZXMuXG4gKi9cblxuZnVuY3Rpb24gZ2V0U3RhY2sgKCkge1xuICB2YXIgbGltaXQgPSBFcnJvci5zdGFja1RyYWNlTGltaXRcbiAgdmFyIG9iaiA9IHt9XG4gIHZhciBwcmVwID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2VcblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBhcmVPYmplY3RTdGFja1RyYWNlXG4gIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IE1hdGgubWF4KDEwLCBsaW1pdClcblxuICAvLyBjYXB0dXJlIHRoZSBzdGFja1xuICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShvYmopXG5cbiAgLy8gc2xpY2UgdGhpcyBmdW5jdGlvbiBvZmYgdGhlIHRvcFxuICB2YXIgc3RhY2sgPSBvYmouc3RhY2suc2xpY2UoMSlcblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBcbiAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gbGltaXRcblxuICByZXR1cm4gc3RhY2tcbn1cblxuLyoqXG4gKiBDYXB0dXJlIGNhbGwgc2l0ZSBzdGFjayBmcm9tIHY4LlxuICovXG5cbmZ1bmN0aW9uIHByZXBhcmVPYmplY3RTdGFja1RyYWNlIChvYmosIHN0YWNrKSB7XG4gIHJldHVybiBzdGFja1xufVxuXG4vKipcbiAqIFJldHVybiBhIHdyYXBwZWQgZnVuY3Rpb24gaW4gYSBkZXByZWNhdGlvbiBtZXNzYWdlLlxuICovXG5cbmZ1bmN0aW9uIHdyYXBmdW5jdGlvbiAoZm4sIG1lc3NhZ2UpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IGZuIG11c3QgYmUgYSBmdW5jdGlvbicpXG4gIH1cblxuICB2YXIgYXJncyA9IGNyZWF0ZUFyZ3VtZW50c1N0cmluZyhmbi5sZW5ndGgpXG4gIHZhciBkZXByZWNhdGUgPSB0aGlzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIHN0YWNrID0gZ2V0U3RhY2soKVxuICB2YXIgc2l0ZSA9IGNhbGxTaXRlTG9jYXRpb24oc3RhY2tbMV0pXG5cbiAgc2l0ZS5uYW1lID0gZm4ubmFtZVxuXG4gICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXZhbFxuICB2YXIgZGVwcmVjYXRlZGZuID0gZXZhbCgnKGZ1bmN0aW9uICgnICsgYXJncyArICcpIHtcXG4nICtcbiAgICAnXCJ1c2Ugc3RyaWN0XCJcXG4nICtcbiAgICAnbG9nLmNhbGwoZGVwcmVjYXRlLCBtZXNzYWdlLCBzaXRlKVxcbicgK1xuICAgICdyZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKVxcbicgK1xuICAgICd9KScpXG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWRmblxufVxuXG4vKipcbiAqIFdyYXAgcHJvcGVydHkgaW4gYSBkZXByZWNhdGlvbiBtZXNzYWdlLlxuICovXG5cbmZ1bmN0aW9uIHdyYXBwcm9wZXJ0eSAob2JqLCBwcm9wLCBtZXNzYWdlKSB7XG4gIGlmICghb2JqIHx8ICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqICE9PSAnZnVuY3Rpb24nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IG9iaiBtdXN0IGJlIG9iamVjdCcpXG4gIH1cblxuICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBwcm9wKVxuXG4gIGlmICghZGVzY3JpcHRvcikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ211c3QgY2FsbCBwcm9wZXJ0eSBvbiBvd25lciBvYmplY3QnKVxuICB9XG5cbiAgaWYgKCFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Byb3BlcnR5IG11c3QgYmUgY29uZmlndXJhYmxlJylcbiAgfVxuXG4gIHZhciBkZXByZWNhdGUgPSB0aGlzXG4gIHZhciBzdGFjayA9IGdldFN0YWNrKClcbiAgdmFyIHNpdGUgPSBjYWxsU2l0ZUxvY2F0aW9uKHN0YWNrWzFdKVxuXG4gIC8vIHNldCBzaXRlIG5hbWVcbiAgc2l0ZS5uYW1lID0gcHJvcFxuXG4gIC8vIGNvbnZlcnQgZGF0YSBkZXNjcmlwdG9yXG4gIGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIHtcbiAgICBkZXNjcmlwdG9yID0gY29udmVydERhdGFEZXNjcmlwdG9yVG9BY2Nlc3NvcihvYmosIHByb3AsIG1lc3NhZ2UpXG4gIH1cblxuICB2YXIgZ2V0ID0gZGVzY3JpcHRvci5nZXRcbiAgdmFyIHNldCA9IGRlc2NyaXB0b3Iuc2V0XG5cbiAgLy8gd3JhcCBnZXR0ZXJcbiAgaWYgKHR5cGVvZiBnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkZXNjcmlwdG9yLmdldCA9IGZ1bmN0aW9uIGdldHRlciAoKSB7XG4gICAgICBsb2cuY2FsbChkZXByZWNhdGUsIG1lc3NhZ2UsIHNpdGUpXG4gICAgICByZXR1cm4gZ2V0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cblxuICAvLyB3cmFwIHNldHRlclxuICBpZiAodHlwZW9mIHNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlc2NyaXB0b3Iuc2V0ID0gZnVuY3Rpb24gc2V0dGVyICgpIHtcbiAgICAgIGxvZy5jYWxsKGRlcHJlY2F0ZSwgbWVzc2FnZSwgc2l0ZSlcbiAgICAgIHJldHVybiBzZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIGRlc2NyaXB0b3IpXG59XG5cbi8qKlxuICogQ3JlYXRlIERlcHJlY2F0aW9uRXJyb3IgZm9yIGRlcHJlY2F0aW9uXG4gKi9cblxuZnVuY3Rpb24gRGVwcmVjYXRpb25FcnJvciAobmFtZXNwYWNlLCBtZXNzYWdlLCBzdGFjaykge1xuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoKVxuICB2YXIgc3RhY2tTdHJpbmdcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICdjb25zdHJ1Y3RvcicsIHtcbiAgICB2YWx1ZTogRGVwcmVjYXRpb25FcnJvclxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ21lc3NhZ2UnLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIHZhbHVlOiBtZXNzYWdlLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pXG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnbmFtZScsIHtcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6ICdEZXByZWNhdGlvbkVycm9yJyxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ25hbWVzcGFjZScsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IG5hbWVzcGFjZSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ3N0YWNrJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChzdGFja1N0cmluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBzdGFja1N0cmluZ1xuICAgICAgfVxuXG4gICAgICAvLyBwcmVwYXJlIHN0YWNrIHRyYWNlXG4gICAgICByZXR1cm4gKHN0YWNrU3RyaW5nID0gY3JlYXRlU3RhY2tTdHJpbmcuY2FsbCh0aGlzLCBzdGFjaykpXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHNldHRlciAodmFsKSB7XG4gICAgICBzdGFja1N0cmluZyA9IHZhbFxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gZXJyb3Jcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9yYXctYm9keS9ub2RlX21vZHVsZXMvZGVwZC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZGVwZFxuICogQ29weXJpZ2h0KGMpIDIwMTQgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gY2FsbFNpdGVUb1N0cmluZ1xuXG4vKipcbiAqIEZvcm1hdCBhIENhbGxTaXRlIGZpbGUgbG9jYXRpb24gdG8gYSBzdHJpbmcuXG4gKi9cblxuZnVuY3Rpb24gY2FsbFNpdGVGaWxlTG9jYXRpb24gKGNhbGxTaXRlKSB7XG4gIHZhciBmaWxlTmFtZVxuICB2YXIgZmlsZUxvY2F0aW9uID0gJydcblxuICBpZiAoY2FsbFNpdGUuaXNOYXRpdmUoKSkge1xuICAgIGZpbGVMb2NhdGlvbiA9ICduYXRpdmUnXG4gIH0gZWxzZSBpZiAoY2FsbFNpdGUuaXNFdmFsKCkpIHtcbiAgICBmaWxlTmFtZSA9IGNhbGxTaXRlLmdldFNjcmlwdE5hbWVPclNvdXJjZVVSTCgpXG4gICAgaWYgKCFmaWxlTmFtZSkge1xuICAgICAgZmlsZUxvY2F0aW9uID0gY2FsbFNpdGUuZ2V0RXZhbE9yaWdpbigpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZpbGVOYW1lID0gY2FsbFNpdGUuZ2V0RmlsZU5hbWUoKVxuICB9XG5cbiAgaWYgKGZpbGVOYW1lKSB7XG4gICAgZmlsZUxvY2F0aW9uICs9IGZpbGVOYW1lXG5cbiAgICB2YXIgbGluZU51bWJlciA9IGNhbGxTaXRlLmdldExpbmVOdW1iZXIoKVxuICAgIGlmIChsaW5lTnVtYmVyICE9IG51bGwpIHtcbiAgICAgIGZpbGVMb2NhdGlvbiArPSAnOicgKyBsaW5lTnVtYmVyXG5cbiAgICAgIHZhciBjb2x1bW5OdW1iZXIgPSBjYWxsU2l0ZS5nZXRDb2x1bW5OdW1iZXIoKVxuICAgICAgaWYgKGNvbHVtbk51bWJlcikge1xuICAgICAgICBmaWxlTG9jYXRpb24gKz0gJzonICsgY29sdW1uTnVtYmVyXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZpbGVMb2NhdGlvbiB8fCAndW5rbm93biBzb3VyY2UnXG59XG5cbi8qKlxuICogRm9ybWF0IGEgQ2FsbFNpdGUgdG8gYSBzdHJpbmcuXG4gKi9cblxuZnVuY3Rpb24gY2FsbFNpdGVUb1N0cmluZyAoY2FsbFNpdGUpIHtcbiAgdmFyIGFkZFN1ZmZpeCA9IHRydWVcbiAgdmFyIGZpbGVMb2NhdGlvbiA9IGNhbGxTaXRlRmlsZUxvY2F0aW9uKGNhbGxTaXRlKVxuICB2YXIgZnVuY3Rpb25OYW1lID0gY2FsbFNpdGUuZ2V0RnVuY3Rpb25OYW1lKClcbiAgdmFyIGlzQ29uc3RydWN0b3IgPSBjYWxsU2l0ZS5pc0NvbnN0cnVjdG9yKClcbiAgdmFyIGlzTWV0aG9kQ2FsbCA9ICEoY2FsbFNpdGUuaXNUb3BsZXZlbCgpIHx8IGlzQ29uc3RydWN0b3IpXG4gIHZhciBsaW5lID0gJydcblxuICBpZiAoaXNNZXRob2RDYWxsKSB7XG4gICAgdmFyIG1ldGhvZE5hbWUgPSBjYWxsU2l0ZS5nZXRNZXRob2ROYW1lKClcbiAgICB2YXIgdHlwZU5hbWUgPSBnZXRDb25zdHJ1Y3Rvck5hbWUoY2FsbFNpdGUpXG5cbiAgICBpZiAoZnVuY3Rpb25OYW1lKSB7XG4gICAgICBpZiAodHlwZU5hbWUgJiYgZnVuY3Rpb25OYW1lLmluZGV4T2YodHlwZU5hbWUpICE9PSAwKSB7XG4gICAgICAgIGxpbmUgKz0gdHlwZU5hbWUgKyAnLidcbiAgICAgIH1cblxuICAgICAgbGluZSArPSBmdW5jdGlvbk5hbWVcblxuICAgICAgaWYgKG1ldGhvZE5hbWUgJiYgZnVuY3Rpb25OYW1lLmxhc3RJbmRleE9mKCcuJyArIG1ldGhvZE5hbWUpICE9PSBmdW5jdGlvbk5hbWUubGVuZ3RoIC0gbWV0aG9kTmFtZS5sZW5ndGggLSAxKSB7XG4gICAgICAgIGxpbmUgKz0gJyBbYXMgJyArIG1ldGhvZE5hbWUgKyAnXSdcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGluZSArPSB0eXBlTmFtZSArICcuJyArIChtZXRob2ROYW1lIHx8ICc8YW5vbnltb3VzPicpXG4gICAgfVxuICB9IGVsc2UgaWYgKGlzQ29uc3RydWN0b3IpIHtcbiAgICBsaW5lICs9ICduZXcgJyArIChmdW5jdGlvbk5hbWUgfHwgJzxhbm9ueW1vdXM+JylcbiAgfSBlbHNlIGlmIChmdW5jdGlvbk5hbWUpIHtcbiAgICBsaW5lICs9IGZ1bmN0aW9uTmFtZVxuICB9IGVsc2Uge1xuICAgIGFkZFN1ZmZpeCA9IGZhbHNlXG4gICAgbGluZSArPSBmaWxlTG9jYXRpb25cbiAgfVxuXG4gIGlmIChhZGRTdWZmaXgpIHtcbiAgICBsaW5lICs9ICcgKCcgKyBmaWxlTG9jYXRpb24gKyAnKSdcbiAgfVxuXG4gIHJldHVybiBsaW5lXG59XG5cbi8qKlxuICogR2V0IGNvbnN0cnVjdG9yIG5hbWUgb2YgcmV2aXZlci5cbiAqL1xuXG5mdW5jdGlvbiBnZXRDb25zdHJ1Y3Rvck5hbWUgKG9iaikge1xuICB2YXIgcmVjZWl2ZXIgPSBvYmoucmVjZWl2ZXJcbiAgcmV0dXJuIChyZWNlaXZlci5jb25zdHJ1Y3RvciAmJiByZWNlaXZlci5jb25zdHJ1Y3Rvci5uYW1lKSB8fCBudWxsXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2RlcGQvbGliL2NvbXBhdC9jYWxsc2l0ZS10b3N0cmluZy5qc1xuLy8gbW9kdWxlIGlkID0gMTMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZGVwZFxuICogQ29weXJpZ2h0KGMpIDIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZXZlbnRMaXN0ZW5lckNvdW50XG5cbi8qKlxuICogR2V0IHRoZSBjb3VudCBvZiBsaXN0ZW5lcnMgb24gYW4gZXZlbnQgZW1pdHRlciBvZiBhIHNwZWNpZmljIHR5cGUuXG4gKi9cblxuZnVuY3Rpb24gZXZlbnRMaXN0ZW5lckNvdW50IChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGhcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9yYXctYm9keS9ub2RlX21vZHVsZXMvZGVwZC9saWIvY29tcGF0L2V2ZW50LWxpc3RlbmVyLWNvdW50LmpzXG4vLyBtb2R1bGUgaWQgPSAxMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgKHtfX3Byb3RvX186W119IGluc3RhbmNlb2YgQXJyYXkgPyBzZXRQcm90b09mIDogbWl4aW5Qcm9wZXJ0aWVzKTtcblxuZnVuY3Rpb24gc2V0UHJvdG9PZihvYmosIHByb3RvKSB7XG5cdG9iai5fX3Byb3RvX18gPSBwcm90bztcblx0cmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gbWl4aW5Qcm9wZXJ0aWVzKG9iaiwgcHJvdG8pIHtcblx0Zm9yICh2YXIgcHJvcCBpbiBwcm90bykge1xuXHRcdGlmICghb2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7XG5cdFx0XHRvYmpbcHJvcF0gPSBwcm90b1twcm9wXTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG9iajtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9yYXctYm9keS9ub2RlX21vZHVsZXMvc2V0cHJvdG90eXBlb2YvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDEzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIEJPTUNoYXIgPSAnXFx1RkVGRic7XG5cbmV4cG9ydHMuUHJlcGVuZEJPTSA9IFByZXBlbmRCT01XcmFwcGVyXG5mdW5jdGlvbiBQcmVwZW5kQk9NV3JhcHBlcihlbmNvZGVyLCBvcHRpb25zKSB7XG4gICAgdGhpcy5lbmNvZGVyID0gZW5jb2RlcjtcbiAgICB0aGlzLmFkZEJPTSA9IHRydWU7XG59XG5cblByZXBlbmRCT01XcmFwcGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIGlmICh0aGlzLmFkZEJPTSkge1xuICAgICAgICBzdHIgPSBCT01DaGFyICsgc3RyO1xuICAgICAgICB0aGlzLmFkZEJPTSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmVuY29kZXIud3JpdGUoc3RyKTtcbn1cblxuUHJlcGVuZEJPTVdyYXBwZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmVuY29kZXIuZW5kKCk7XG59XG5cblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0cy5TdHJpcEJPTSA9IFN0cmlwQk9NV3JhcHBlcjtcbmZ1bmN0aW9uIFN0cmlwQk9NV3JhcHBlcihkZWNvZGVyLCBvcHRpb25zKSB7XG4gICAgdGhpcy5kZWNvZGVyID0gZGVjb2RlcjtcbiAgICB0aGlzLnBhc3MgPSBmYWxzZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xufVxuXG5TdHJpcEJPTVdyYXBwZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7XG4gICAgdmFyIHJlcyA9IHRoaXMuZGVjb2Rlci53cml0ZShidWYpO1xuICAgIGlmICh0aGlzLnBhc3MgfHwgIXJlcylcbiAgICAgICAgcmV0dXJuIHJlcztcblxuICAgIGlmIChyZXNbMF0gPT09IEJPTUNoYXIpIHtcbiAgICAgICAgcmVzID0gcmVzLnNsaWNlKDEpO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5zdHJpcEJPTSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zdHJpcEJPTSgpO1xuICAgIH1cblxuICAgIHRoaXMucGFzcyA9IHRydWU7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuU3RyaXBCT01XcmFwcGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpO1xufVxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9saWIvYm9tLWhhbmRsaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIFVwZGF0ZSB0aGlzIGFycmF5IGlmIHlvdSBhZGQvcmVuYW1lL3JlbW92ZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS5cbi8vIFdlIHN1cHBvcnQgQnJvd3NlcmlmeSBieSBza2lwcGluZyBhdXRvbWF0aWMgbW9kdWxlIGRpc2NvdmVyeSBhbmQgcmVxdWlyaW5nIG1vZHVsZXMgZGlyZWN0bHkuXG52YXIgbW9kdWxlcyA9IFtcbiAgICByZXF1aXJlKFwiLi9pbnRlcm5hbFwiKSxcbiAgICByZXF1aXJlKFwiLi91dGYxNlwiKSxcbiAgICByZXF1aXJlKFwiLi91dGY3XCIpLFxuICAgIHJlcXVpcmUoXCIuL3NiY3MtY29kZWNcIiksXG4gICAgcmVxdWlyZShcIi4vc2Jjcy1kYXRhXCIpLFxuICAgIHJlcXVpcmUoXCIuL3NiY3MtZGF0YS1nZW5lcmF0ZWRcIiksXG4gICAgcmVxdWlyZShcIi4vZGJjcy1jb2RlY1wiKSxcbiAgICByZXF1aXJlKFwiLi9kYmNzLWRhdGFcIiksXG5dO1xuXG4vLyBQdXQgYWxsIGVuY29kaW5nL2FsaWFzL2NvZGVjIGRlZmluaXRpb25zIHRvIHNpbmdsZSBvYmplY3QgYW5kIGV4cG9ydCBpdC4gXG5mb3IgKHZhciBpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbW9kdWxlID0gbW9kdWxlc1tpXTtcbiAgICBmb3IgKHZhciBlbmMgaW4gbW9kdWxlKVxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZHVsZSwgZW5jKSlcbiAgICAgICAgICAgIGV4cG9ydHNbZW5jXSA9IG1vZHVsZVtlbmNdO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgQnVmZmVyID0gcmVxdWlyZShcImJ1ZmZlclwiKS5CdWZmZXI7XG5cbi8vIEV4cG9ydCBOb2RlLmpzIGludGVybmFsIGVuY29kaW5ncy5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgLy8gRW5jb2RpbmdzXG4gICAgdXRmODogICB7IHR5cGU6IFwiX2ludGVybmFsXCIsIGJvbUF3YXJlOiB0cnVlfSxcbiAgICBjZXN1ODogIHsgdHlwZTogXCJfaW50ZXJuYWxcIiwgYm9tQXdhcmU6IHRydWV9LFxuICAgIHVuaWNvZGUxMXV0Zjg6IFwidXRmOFwiLFxuXG4gICAgdWNzMjogICB7IHR5cGU6IFwiX2ludGVybmFsXCIsIGJvbUF3YXJlOiB0cnVlfSxcbiAgICB1dGYxNmxlOiBcInVjczJcIixcblxuICAgIGJpbmFyeTogeyB0eXBlOiBcIl9pbnRlcm5hbFwiIH0sXG4gICAgYmFzZTY0OiB7IHR5cGU6IFwiX2ludGVybmFsXCIgfSxcbiAgICBoZXg6ICAgIHsgdHlwZTogXCJfaW50ZXJuYWxcIiB9LFxuXG4gICAgLy8gQ29kZWMuXG4gICAgX2ludGVybmFsOiBJbnRlcm5hbENvZGVjLFxufTtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gSW50ZXJuYWxDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7XG4gICAgdGhpcy5lbmMgPSBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lO1xuICAgIHRoaXMuYm9tQXdhcmUgPSBjb2RlY09wdGlvbnMuYm9tQXdhcmU7XG5cbiAgICBpZiAodGhpcy5lbmMgPT09IFwiYmFzZTY0XCIpXG4gICAgICAgIHRoaXMuZW5jb2RlciA9IEludGVybmFsRW5jb2RlckJhc2U2NDtcbiAgICBlbHNlIGlmICh0aGlzLmVuYyA9PT0gXCJjZXN1OFwiKSB7XG4gICAgICAgIHRoaXMuZW5jID0gXCJ1dGY4XCI7IC8vIFVzZSB1dGY4IGZvciBkZWNvZGluZy5cbiAgICAgICAgdGhpcy5lbmNvZGVyID0gSW50ZXJuYWxFbmNvZGVyQ2VzdTg7XG5cbiAgICAgICAgLy8gQWRkIGRlY29kZXIgZm9yIHZlcnNpb25zIG9mIE5vZGUgbm90IHN1cHBvcnRpbmcgQ0VTVS04XG4gICAgICAgIGlmIChuZXcgQnVmZmVyKCdlZGEwYmRlZGIyYTknLCAnaGV4JykudG9TdHJpbmcoKSAhPT0gJ/CfkqknKSB7XG4gICAgICAgICAgICB0aGlzLmRlY29kZXIgPSBJbnRlcm5hbERlY29kZXJDZXN1ODtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENoYXJVbmljb2RlID0gaWNvbnYuZGVmYXVsdENoYXJVbmljb2RlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5JbnRlcm5hbENvZGVjLnByb3RvdHlwZS5lbmNvZGVyID0gSW50ZXJuYWxFbmNvZGVyO1xuSW50ZXJuYWxDb2RlYy5wcm90b3R5cGUuZGVjb2RlciA9IEludGVybmFsRGVjb2RlcjtcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gV2UgdXNlIG5vZGUuanMgaW50ZXJuYWwgZGVjb2Rlci4gSXRzIHNpZ25hdHVyZSBpcyB0aGUgc2FtZSBhcyBvdXJzLlxudmFyIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpLlN0cmluZ0RlY29kZXI7XG5cbmlmICghU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kKSAvLyBOb2RlIHYwLjggZG9lc24ndCBoYXZlIHRoaXMgbWV0aG9kLlxuICAgIFN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge307XG5cblxuZnVuY3Rpb24gSW50ZXJuYWxEZWNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgU3RyaW5nRGVjb2Rlci5jYWxsKHRoaXMsIGNvZGVjLmVuYyk7XG59XG5cbkludGVybmFsRGVjb2Rlci5wcm90b3R5cGUgPSBTdHJpbmdEZWNvZGVyLnByb3RvdHlwZTtcblxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRW5jb2RlciBpcyBtb3N0bHkgdHJpdmlhbFxuXG5mdW5jdGlvbiBJbnRlcm5hbEVuY29kZXIob3B0aW9ucywgY29kZWMpIHtcbiAgICB0aGlzLmVuYyA9IGNvZGVjLmVuYztcbn1cblxuSW50ZXJuYWxFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiBuZXcgQnVmZmVyKHN0ciwgdGhpcy5lbmMpO1xufVxuXG5JbnRlcm5hbEVuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xufVxuXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeGNlcHQgYmFzZTY0IGVuY29kZXIsIHdoaWNoIG11c3Qga2VlcCBpdHMgc3RhdGUuXG5cbmZ1bmN0aW9uIEludGVybmFsRW5jb2RlckJhc2U2NChvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMucHJldlN0ciA9ICcnO1xufVxuXG5JbnRlcm5hbEVuY29kZXJCYXNlNjQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgc3RyID0gdGhpcy5wcmV2U3RyICsgc3RyO1xuICAgIHZhciBjb21wbGV0ZVF1YWRzID0gc3RyLmxlbmd0aCAtIChzdHIubGVuZ3RoICUgNCk7XG4gICAgdGhpcy5wcmV2U3RyID0gc3RyLnNsaWNlKGNvbXBsZXRlUXVhZHMpO1xuICAgIHN0ciA9IHN0ci5zbGljZSgwLCBjb21wbGV0ZVF1YWRzKTtcblxuICAgIHJldHVybiBuZXcgQnVmZmVyKHN0ciwgXCJiYXNlNjRcIik7XG59XG5cbkludGVybmFsRW5jb2RlckJhc2U2NC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5wcmV2U3RyLCBcImJhc2U2NFwiKTtcbn1cblxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ0VTVS04IGVuY29kZXIgaXMgYWxzbyBzcGVjaWFsLlxuXG5mdW5jdGlvbiBJbnRlcm5hbEVuY29kZXJDZXN1OChvcHRpb25zLCBjb2RlYykge1xufVxuXG5JbnRlcm5hbEVuY29kZXJDZXN1OC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzdHIubGVuZ3RoICogMyksIGJ1ZklkeCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoYXJDb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIC8vIE5haXZlIGltcGxlbWVudGF0aW9uLCBidXQgaXQgd29ya3MgYmVjYXVzZSBDRVNVLTggaXMgZXNwZWNpYWxseSBlYXN5XG4gICAgICAgIC8vIHRvIGNvbnZlcnQgZnJvbSBVVEYtMTYgKHdoaWNoIGFsbCBKUyBzdHJpbmdzIGFyZSBlbmNvZGVkIGluKS5cbiAgICAgICAgaWYgKGNoYXJDb2RlIDwgMHg4MClcbiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSBjaGFyQ29kZTtcbiAgICAgICAgZWxzZSBpZiAoY2hhckNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IDB4QzAgKyAoY2hhckNvZGUgPj4+IDYpO1xuICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IDB4ODAgKyAoY2hhckNvZGUgJiAweDNmKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgLy8gY2hhckNvZGUgd2lsbCBhbHdheXMgYmUgPCAweDEwMDAwIGluIGphdmFzY3JpcHQuXG4gICAgICAgICAgICBidWZbYnVmSWR4KytdID0gMHhFMCArIChjaGFyQ29kZSA+Pj4gMTIpO1xuICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IDB4ODAgKyAoKGNoYXJDb2RlID4+PiA2KSAmIDB4M2YpO1xuICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IDB4ODAgKyAoY2hhckNvZGUgJiAweDNmKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYnVmLnNsaWNlKDAsIGJ1ZklkeCk7XG59XG5cbkludGVybmFsRW5jb2RlckNlc3U4LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbn1cblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENFU1UtOCBkZWNvZGVyIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBOb2RlIHY0LjArXG5cbmZ1bmN0aW9uIEludGVybmFsRGVjb2RlckNlc3U4KG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5hY2MgPSAwO1xuICAgIHRoaXMuY29udEJ5dGVzID0gMDtcbiAgICB0aGlzLmFjY0J5dGVzID0gMDtcbiAgICB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZSA9IGNvZGVjLmRlZmF1bHRDaGFyVW5pY29kZTtcbn1cblxuSW50ZXJuYWxEZWNvZGVyQ2VzdTgucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7XG4gICAgdmFyIGFjYyA9IHRoaXMuYWNjLCBjb250Qnl0ZXMgPSB0aGlzLmNvbnRCeXRlcywgYWNjQnl0ZXMgPSB0aGlzLmFjY0J5dGVzLCBcbiAgICAgICAgcmVzID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGN1ckJ5dGUgPSBidWZbaV07XG4gICAgICAgIGlmICgoY3VyQnl0ZSAmIDB4QzApICE9PSAweDgwKSB7IC8vIExlYWRpbmcgYnl0ZVxuICAgICAgICAgICAgaWYgKGNvbnRCeXRlcyA+IDApIHsgLy8gUHJldmlvdXMgY29kZSBpcyBpbnZhbGlkXG4gICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlO1xuICAgICAgICAgICAgICAgIGNvbnRCeXRlcyA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjdXJCeXRlIDwgMHg4MCkgeyAvLyBTaW5nbGUtYnl0ZSBjb2RlXG4gICAgICAgICAgICAgICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY3VyQnl0ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1ckJ5dGUgPCAweEUwKSB7IC8vIFR3by1ieXRlIGNvZGVcbiAgICAgICAgICAgICAgICBhY2MgPSBjdXJCeXRlICYgMHgxRjtcbiAgICAgICAgICAgICAgICBjb250Qnl0ZXMgPSAxOyBhY2NCeXRlcyA9IDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGN1ckJ5dGUgPCAweEYwKSB7IC8vIFRocmVlLWJ5dGUgY29kZVxuICAgICAgICAgICAgICAgIGFjYyA9IGN1ckJ5dGUgJiAweDBGO1xuICAgICAgICAgICAgICAgIGNvbnRCeXRlcyA9IDI7IGFjY0J5dGVzID0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIEZvdXIgb3IgbW9yZSBhcmUgbm90IHN1cHBvcnRlZCBmb3IgQ0VTVS04LlxuICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgLy8gQ29udGludWF0aW9uIGJ5dGVcbiAgICAgICAgICAgIGlmIChjb250Qnl0ZXMgPiAwKSB7IC8vIFdlJ3JlIHdhaXRpbmcgZm9yIGl0LlxuICAgICAgICAgICAgICAgIGFjYyA9IChhY2MgPDwgNikgfCAoY3VyQnl0ZSAmIDB4M2YpO1xuICAgICAgICAgICAgICAgIGNvbnRCeXRlcy0tOyBhY2NCeXRlcysrO1xuICAgICAgICAgICAgICAgIGlmIChjb250Qnl0ZXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIG92ZXJsb25nIGVuY29kaW5nLCBidXQgc3VwcG9ydCBNb2RpZmllZCBVVEYtOCAoZW5jb2RpbmcgTlVMTCBhcyBDMCA4MClcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjY0J5dGVzID09PSAyICYmIGFjYyA8IDB4ODAgJiYgYWNjID4gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYWNjQnl0ZXMgPT09IDMgJiYgYWNjIDwgMHg4MDApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjdHVhbGx5IGFkZCBjaGFyYWN0ZXIuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShhY2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIFVuZXhwZWN0ZWQgY29udGludWF0aW9uIGJ5dGVcbiAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5hY2MgPSBhY2M7IHRoaXMuY29udEJ5dGVzID0gY29udEJ5dGVzOyB0aGlzLmFjY0J5dGVzID0gYWNjQnl0ZXM7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuSW50ZXJuYWxEZWNvZGVyQ2VzdTgucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXMgPSAwO1xuICAgIGlmICh0aGlzLmNvbnRCeXRlcyA+IDApXG4gICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2ludGVybmFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgQnVmZmVyID0gcmVxdWlyZShcImJ1ZmZlclwiKS5CdWZmZXI7XG5cbi8vIE5vdGU6IFVURjE2LUxFIChvciBVQ1MyKSBjb2RlYyBpcyBOb2RlLmpzIG5hdGl2ZS4gU2VlIGVuY29kaW5ncy9pbnRlcm5hbC5qc1xuXG4vLyA9PSBVVEYxNi1CRSBjb2RlYy4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnRzLnV0ZjE2YmUgPSBVdGYxNkJFQ29kZWM7XG5mdW5jdGlvbiBVdGYxNkJFQ29kZWMoKSB7XG59XG5cblV0ZjE2QkVDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IFV0ZjE2QkVFbmNvZGVyO1xuVXRmMTZCRUNvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gVXRmMTZCRURlY29kZXI7XG5VdGYxNkJFQ29kZWMucHJvdG90eXBlLmJvbUF3YXJlID0gdHJ1ZTtcblxuXG4vLyAtLSBFbmNvZGluZ1xuXG5mdW5jdGlvbiBVdGYxNkJFRW5jb2RlcigpIHtcbn1cblxuVXRmMTZCRUVuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc3RyLCAndWNzMicpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHZhciB0bXAgPSBidWZbaV07IGJ1ZltpXSA9IGJ1ZltpKzFdOyBidWZbaSsxXSA9IHRtcDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn1cblxuVXRmMTZCRUVuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xufVxuXG5cbi8vIC0tIERlY29kaW5nXG5cbmZ1bmN0aW9uIFV0ZjE2QkVEZWNvZGVyKCkge1xuICAgIHRoaXMub3ZlcmZsb3dCeXRlID0gLTE7XG59XG5cblV0ZjE2QkVEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1Zikge1xuICAgIGlmIChidWYubGVuZ3RoID09IDApXG4gICAgICAgIHJldHVybiAnJztcblxuICAgIHZhciBidWYyID0gbmV3IEJ1ZmZlcihidWYubGVuZ3RoICsgMSksXG4gICAgICAgIGkgPSAwLCBqID0gMDtcblxuICAgIGlmICh0aGlzLm92ZXJmbG93Qnl0ZSAhPT0gLTEpIHtcbiAgICAgICAgYnVmMlswXSA9IGJ1ZlswXTtcbiAgICAgICAgYnVmMlsxXSA9IHRoaXMub3ZlcmZsb3dCeXRlO1xuICAgICAgICBpID0gMTsgaiA9IDI7XG4gICAgfVxuXG4gICAgZm9yICg7IGkgPCBidWYubGVuZ3RoLTE7IGkgKz0gMiwgais9IDIpIHtcbiAgICAgICAgYnVmMltqXSA9IGJ1ZltpKzFdO1xuICAgICAgICBidWYyW2orMV0gPSBidWZbaV07XG4gICAgfVxuXG4gICAgdGhpcy5vdmVyZmxvd0J5dGUgPSAoaSA9PSBidWYubGVuZ3RoLTEpID8gYnVmW2J1Zi5sZW5ndGgtMV0gOiAtMTtcblxuICAgIHJldHVybiBidWYyLnNsaWNlKDAsIGopLnRvU3RyaW5nKCd1Y3MyJyk7XG59XG5cblV0ZjE2QkVEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbn1cblxuXG4vLyA9PSBVVEYtMTYgY29kZWMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVjb2RlciBjaG9vc2VzIGF1dG9tYXRpY2FsbHkgZnJvbSBVVEYtMTZMRSBhbmQgVVRGLTE2QkUgdXNpbmcgQk9NIGFuZCBzcGFjZS1iYXNlZCBoZXVyaXN0aWMuXG4vLyBEZWZhdWx0cyB0byBVVEYtMTZMRSwgYXMgaXQncyBwcmV2YWxlbnQgYW5kIGRlZmF1bHQgaW4gTm9kZS5cbi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTE2IGFuZCBodHRwOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnLyN1dGYtMTZsZVxuLy8gRGVjb2RlciBkZWZhdWx0IGNhbiBiZSBjaGFuZ2VkOiBpY29udi5kZWNvZGUoYnVmLCAndXRmMTYnLCB7ZGVmYXVsdEVuY29kaW5nOiAndXRmLTE2YmUnfSk7XG5cbi8vIEVuY29kZXIgdXNlcyBVVEYtMTZMRSBhbmQgcHJlcGVuZHMgQk9NICh3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGFkZEJPTTogZmFsc2UpLlxuXG5leHBvcnRzLnV0ZjE2ID0gVXRmMTZDb2RlYztcbmZ1bmN0aW9uIFV0ZjE2Q29kZWMoY29kZWNPcHRpb25zLCBpY29udikge1xuICAgIHRoaXMuaWNvbnYgPSBpY29udjtcbn1cblxuVXRmMTZDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IFV0ZjE2RW5jb2RlcjtcblV0ZjE2Q29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBVdGYxNkRlY29kZXI7XG5cblxuLy8gLS0gRW5jb2RpbmcgKHBhc3MtdGhyb3VnaClcblxuZnVuY3Rpb24gVXRmMTZFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgaWYgKG9wdGlvbnMuYWRkQk9NID09PSB1bmRlZmluZWQpXG4gICAgICAgIG9wdGlvbnMuYWRkQk9NID0gdHJ1ZTtcbiAgICB0aGlzLmVuY29kZXIgPSBjb2RlYy5pY29udi5nZXRFbmNvZGVyKCd1dGYtMTZsZScsIG9wdGlvbnMpO1xufVxuXG5VdGYxNkVuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5jb2Rlci53cml0ZShzdHIpO1xufVxuXG5VdGYxNkVuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmVuY29kZXIuZW5kKCk7XG59XG5cblxuLy8gLS0gRGVjb2RpbmdcblxuZnVuY3Rpb24gVXRmMTZEZWNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5kZWNvZGVyID0gbnVsbDtcbiAgICB0aGlzLmluaXRpYWxCeXRlcyA9IFtdO1xuICAgIHRoaXMuaW5pdGlhbEJ5dGVzTGVuID0gMDtcblxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgdGhpcy5pY29udiA9IGNvZGVjLmljb252O1xufVxuXG5VdGYxNkRlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7XG4gICAgaWYgKCF0aGlzLmRlY29kZXIpIHtcbiAgICAgICAgLy8gQ29kZWMgaXMgbm90IGNob3NlbiB5ZXQuIEFjY3VtdWxhdGUgaW5pdGlhbCBieXRlcy5cbiAgICAgICAgdGhpcy5pbml0aWFsQnl0ZXMucHVzaChidWYpO1xuICAgICAgICB0aGlzLmluaXRpYWxCeXRlc0xlbiArPSBidWYubGVuZ3RoO1xuICAgICAgICBcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbEJ5dGVzTGVuIDwgMTYpIC8vIFdlIG5lZWQgbW9yZSBieXRlcyB0byB1c2Ugc3BhY2UgaGV1cmlzdGljIChzZWUgYmVsb3cpXG4gICAgICAgICAgICByZXR1cm4gJyc7XG5cbiAgICAgICAgLy8gV2UgaGF2ZSBlbm91Z2ggYnl0ZXMgLT4gZGV0ZWN0IGVuZGlhbm5lc3MuXG4gICAgICAgIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSxcbiAgICAgICAgICAgIGVuY29kaW5nID0gZGV0ZWN0RW5jb2RpbmcoYnVmLCB0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTtcbiAgICAgICAgdGhpcy5kZWNvZGVyID0gdGhpcy5pY29udi5nZXREZWNvZGVyKGVuY29kaW5nLCB0aGlzLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmluaXRpYWxCeXRlcy5sZW5ndGggPSB0aGlzLmluaXRpYWxCeXRlc0xlbiA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVjb2Rlci53cml0ZShidWYpO1xufVxuXG5VdGYxNkRlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICghdGhpcy5kZWNvZGVyKSB7XG4gICAgICAgIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSxcbiAgICAgICAgICAgIGVuY29kaW5nID0gZGV0ZWN0RW5jb2RpbmcoYnVmLCB0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTtcbiAgICAgICAgdGhpcy5kZWNvZGVyID0gdGhpcy5pY29udi5nZXREZWNvZGVyKGVuY29kaW5nLCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgICAgIHZhciByZXMgPSB0aGlzLmRlY29kZXIud3JpdGUoYnVmKSxcbiAgICAgICAgICAgIHRyYWlsID0gdGhpcy5kZWNvZGVyLmVuZCgpO1xuXG4gICAgICAgIHJldHVybiB0cmFpbCA/IChyZXMgKyB0cmFpbCkgOiByZXM7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRlY29kZXIuZW5kKCk7XG59XG5cbmZ1bmN0aW9uIGRldGVjdEVuY29kaW5nKGJ1ZiwgZGVmYXVsdEVuY29kaW5nKSB7XG4gICAgdmFyIGVuYyA9IGRlZmF1bHRFbmNvZGluZyB8fCAndXRmLTE2bGUnO1xuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPj0gMikge1xuICAgICAgICAvLyBDaGVjayBCT00uXG4gICAgICAgIGlmIChidWZbMF0gPT0gMHhGRSAmJiBidWZbMV0gPT0gMHhGRikgLy8gVVRGLTE2QkUgQk9NXG4gICAgICAgICAgICBlbmMgPSAndXRmLTE2YmUnO1xuICAgICAgICBlbHNlIGlmIChidWZbMF0gPT0gMHhGRiAmJiBidWZbMV0gPT0gMHhGRSkgLy8gVVRGLTE2TEUgQk9NXG4gICAgICAgICAgICBlbmMgPSAndXRmLTE2bGUnO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIE5vIEJPTSBmb3VuZC4gVHJ5IHRvIGRlZHVjZSBlbmNvZGluZyBmcm9tIGluaXRpYWwgY29udGVudC5cbiAgICAgICAgICAgIC8vIE1vc3Qgb2YgdGhlIHRpbWUsIHRoZSBjb250ZW50IGhhcyBBU0NJSSBjaGFycyAoVSswMCoqKSwgYnV0IHRoZSBvcHBvc2l0ZSAoVSsqKjAwKSBpcyB1bmNvbW1vbi5cbiAgICAgICAgICAgIC8vIFNvLCB3ZSBjb3VudCBBU0NJSSBhcyBpZiBpdCB3YXMgTEUgb3IgQkUsIGFuZCBkZWNpZGUgZnJvbSB0aGF0LlxuICAgICAgICAgICAgdmFyIGFzY2lpQ2hhcnNMRSA9IDAsIGFzY2lpQ2hhcnNCRSA9IDAsIC8vIENvdW50cyBvZiBjaGFycyBpbiBib3RoIHBvc2l0aW9uc1xuICAgICAgICAgICAgICAgIF9sZW4gPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gKGJ1Zi5sZW5ndGggJSAyKSwgNjQpOyAvLyBMZW4gaXMgYWx3YXlzIGV2ZW4uXG5cbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbjsgaSArPSAyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZltpXSA9PT0gMCAmJiBidWZbaSsxXSAhPT0gMCkgYXNjaWlDaGFyc0JFKys7XG4gICAgICAgICAgICAgICAgaWYgKGJ1ZltpXSAhPT0gMCAmJiBidWZbaSsxXSA9PT0gMCkgYXNjaWlDaGFyc0xFKys7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChhc2NpaUNoYXJzQkUgPiBhc2NpaUNoYXJzTEUpXG4gICAgICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmJlJztcbiAgICAgICAgICAgIGVsc2UgaWYgKGFzY2lpQ2hhcnNCRSA8IGFzY2lpQ2hhcnNMRSlcbiAgICAgICAgICAgICAgICBlbmMgPSAndXRmLTE2bGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVuYztcbn1cblxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdXRmMTYuanNcbi8vIG1vZHVsZSBpZCA9IDEzN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBCdWZmZXIgPSByZXF1aXJlKFwiYnVmZmVyXCIpLkJ1ZmZlcjtcblxuLy8gVVRGLTcgY29kZWMsIGFjY29yZGluZyB0byBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjE1MlxuLy8gU2VlIGFsc28gYmVsb3cgYSBVVEYtNy1JTUFQIGNvZGVjLCBhY2NvcmRpbmcgdG8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzUwMSNzZWN0aW9uLTUuMS4zXG5cbmV4cG9ydHMudXRmNyA9IFV0ZjdDb2RlYztcbmV4cG9ydHMudW5pY29kZTExdXRmNyA9ICd1dGY3JzsgLy8gQWxpYXMgVU5JQ09ERS0xLTEtVVRGLTdcbmZ1bmN0aW9uIFV0ZjdDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7XG4gICAgdGhpcy5pY29udiA9IGljb252O1xufTtcblxuVXRmN0NvZGVjLnByb3RvdHlwZS5lbmNvZGVyID0gVXRmN0VuY29kZXI7XG5VdGY3Q29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBVdGY3RGVjb2RlcjtcblV0ZjdDb2RlYy5wcm90b3R5cGUuYm9tQXdhcmUgPSB0cnVlO1xuXG5cbi8vIC0tIEVuY29kaW5nXG5cbnZhciBub25EaXJlY3RDaGFycyA9IC9bXkEtWmEtejAtOSdcXChcXCksLVxcLlxcLzpcXD8gXFxuXFxyXFx0XSsvZztcblxuZnVuY3Rpb24gVXRmN0VuY29kZXIob3B0aW9ucywgY29kZWMpIHtcbiAgICB0aGlzLmljb252ID0gY29kZWMuaWNvbnY7XG59XG5cblV0ZjdFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIC8vIE5haXZlIGltcGxlbWVudGF0aW9uLlxuICAgIC8vIE5vbi1kaXJlY3QgY2hhcnMgYXJlIGVuY29kZWQgYXMgXCIrPGJhc2U2ND4tXCI7IHNpbmdsZSBcIitcIiBjaGFyIGlzIGVuY29kZWQgYXMgXCIrLVwiLlxuICAgIHJldHVybiBuZXcgQnVmZmVyKHN0ci5yZXBsYWNlKG5vbkRpcmVjdENoYXJzLCBmdW5jdGlvbihjaHVuaykge1xuICAgICAgICByZXR1cm4gXCIrXCIgKyAoY2h1bmsgPT09ICcrJyA/ICcnIDogXG4gICAgICAgICAgICB0aGlzLmljb252LmVuY29kZShjaHVuaywgJ3V0ZjE2LWJlJykudG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoLz0rJC8sICcnKSkgXG4gICAgICAgICAgICArIFwiLVwiO1xuICAgIH0uYmluZCh0aGlzKSkpO1xufVxuXG5VdGY3RW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG59XG5cblxuLy8gLS0gRGVjb2RpbmdcblxuZnVuY3Rpb24gVXRmN0RlY29kZXIob3B0aW9ucywgY29kZWMpIHtcbiAgICB0aGlzLmljb252ID0gY29kZWMuaWNvbnY7XG4gICAgdGhpcy5pbkJhc2U2NCA9IGZhbHNlO1xuICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJztcbn1cblxudmFyIGJhc2U2NFJlZ2V4ID0gL1tBLVphLXowLTlcXC8rXS87XG52YXIgYmFzZTY0Q2hhcnMgPSBbXTtcbmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspXG4gICAgYmFzZTY0Q2hhcnNbaV0gPSBiYXNlNjRSZWdleC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoaSkpO1xuXG52YXIgcGx1c0NoYXIgPSAnKycuY2hhckNvZGVBdCgwKSwgXG4gICAgbWludXNDaGFyID0gJy0nLmNoYXJDb2RlQXQoMCksXG4gICAgYW5kQ2hhciA9ICcmJy5jaGFyQ29kZUF0KDApO1xuXG5VdGY3RGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHtcbiAgICB2YXIgcmVzID0gXCJcIiwgbGFzdEkgPSAwLFxuICAgICAgICBpbkJhc2U2NCA9IHRoaXMuaW5CYXNlNjQsXG4gICAgICAgIGJhc2U2NEFjY3VtID0gdGhpcy5iYXNlNjRBY2N1bTtcblxuICAgIC8vIFRoZSBkZWNvZGVyIGlzIG1vcmUgaW52b2x2ZWQgYXMgd2UgbXVzdCBoYW5kbGUgY2h1bmtzIGluIHN0cmVhbS5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaW5CYXNlNjQpIHsgLy8gV2UncmUgaW4gZGlyZWN0IG1vZGUuXG4gICAgICAgICAgICAvLyBXcml0ZSBkaXJlY3QgY2hhcnMgdW50aWwgJysnXG4gICAgICAgICAgICBpZiAoYnVmW2ldID09IHBsdXNDaGFyKSB7XG4gICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKGJ1Zi5zbGljZShsYXN0SSwgaSksIFwiYXNjaWlcIik7IC8vIFdyaXRlIGRpcmVjdCBjaGFycy5cbiAgICAgICAgICAgICAgICBsYXN0SSA9IGkrMTtcbiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7IC8vIFdlIGRlY29kZSBiYXNlNjQuXG4gICAgICAgICAgICBpZiAoIWJhc2U2NENoYXJzW2J1ZltpXV0pIHsgLy8gQmFzZTY0IGVuZGVkLlxuICAgICAgICAgICAgICAgIGlmIChpID09IGxhc3RJICYmIGJ1ZltpXSA9PSBtaW51c0NoYXIpIHsvLyBcIistXCIgLT4gXCIrXCJcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiK1wiO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBiNjRzdHIgPSBiYXNlNjRBY2N1bSArIGJ1Zi5zbGljZShsYXN0SSwgaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIoYjY0c3RyLCAnYmFzZTY0JyksIFwidXRmMTYtYmVcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGJ1ZltpXSAhPSBtaW51c0NoYXIpIC8vIE1pbnVzIGlzIGFic29yYmVkIGFmdGVyIGJhc2U2NC5cbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuXG4gICAgICAgICAgICAgICAgbGFzdEkgPSBpKzE7XG4gICAgICAgICAgICAgICAgaW5CYXNlNjQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpbkJhc2U2NCkge1xuICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJKSwgXCJhc2NpaVwiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBiNjRzdHIgPSBiYXNlNjRBY2N1bSArIGJ1Zi5zbGljZShsYXN0SSkudG9TdHJpbmcoKTtcblxuICAgICAgICB2YXIgY2FuQmVEZWNvZGVkID0gYjY0c3RyLmxlbmd0aCAtIChiNjRzdHIubGVuZ3RoICUgOCk7IC8vIE1pbmltYWwgY2h1bms6IDIgcXVhZHMgLT4gMngzIGJ5dGVzIC0+IDMgY2hhcnMuXG4gICAgICAgIGJhc2U2NEFjY3VtID0gYjY0c3RyLnNsaWNlKGNhbkJlRGVjb2RlZCk7IC8vIFRoZSByZXN0IHdpbGwgYmUgZGVjb2RlZCBpbiBmdXR1cmUuXG4gICAgICAgIGI2NHN0ciA9IGI2NHN0ci5zbGljZSgwLCBjYW5CZURlY29kZWQpO1xuXG4gICAgICAgIHJlcyArPSB0aGlzLmljb252LmRlY29kZShuZXcgQnVmZmVyKGI2NHN0ciwgJ2Jhc2U2NCcpLCBcInV0ZjE2LWJlXCIpO1xuICAgIH1cblxuICAgIHRoaXMuaW5CYXNlNjQgPSBpbkJhc2U2NDtcbiAgICB0aGlzLmJhc2U2NEFjY3VtID0gYmFzZTY0QWNjdW07XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5VdGY3RGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlcyA9IFwiXCI7XG4gICAgaWYgKHRoaXMuaW5CYXNlNjQgJiYgdGhpcy5iYXNlNjRBY2N1bS5sZW5ndGggPiAwKVxuICAgICAgICByZXMgPSB0aGlzLmljb252LmRlY29kZShuZXcgQnVmZmVyKHRoaXMuYmFzZTY0QWNjdW0sICdiYXNlNjQnKSwgXCJ1dGYxNi1iZVwiKTtcblxuICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTtcbiAgICB0aGlzLmJhc2U2NEFjY3VtID0gJyc7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG4vLyBVVEYtNy1JTUFQIGNvZGVjLlxuLy8gUkZDMzUwMSBTZWMuIDUuMS4zIE1vZGlmaWVkIFVURi03IChodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNTAxI3NlY3Rpb24tNS4xLjMpXG4vLyBEaWZmZXJlbmNlczpcbi8vICAqIEJhc2U2NCBwYXJ0IGlzIHN0YXJ0ZWQgYnkgXCImXCIgaW5zdGVhZCBvZiBcIitcIlxuLy8gICogRGlyZWN0IGNoYXJhY3RlcnMgYXJlIDB4MjAtMHg3RSwgZXhjZXB0IFwiJlwiICgweDI2KVxuLy8gICogSW4gQmFzZTY0LCBcIixcIiBpcyB1c2VkIGluc3RlYWQgb2YgXCIvXCJcbi8vICAqIEJhc2U2NCBtdXN0IG5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudCBkaXJlY3QgY2hhcmFjdGVycy5cbi8vICAqIE5vIGltcGxpY2l0IHNoaWZ0IGJhY2sgZnJvbSBCYXNlNjQgKHNob3VsZCBhbHdheXMgZW5kIHdpdGggJy0nKVxuLy8gICogU3RyaW5nIG11c3QgZW5kIGluIG5vbi1zaGlmdGVkIHBvc2l0aW9uLlxuLy8gICogXCItJlwiIHdoaWxlIGluIGJhc2U2NCBpcyBub3QgYWxsb3dlZC5cblxuXG5leHBvcnRzLnV0ZjdpbWFwID0gVXRmN0lNQVBDb2RlYztcbmZ1bmN0aW9uIFV0ZjdJTUFQQ29kZWMoY29kZWNPcHRpb25zLCBpY29udikge1xuICAgIHRoaXMuaWNvbnYgPSBpY29udjtcbn07XG5cblV0ZjdJTUFQQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBVdGY3SU1BUEVuY29kZXI7XG5VdGY3SU1BUENvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gVXRmN0lNQVBEZWNvZGVyO1xuVXRmN0lNQVBDb2RlYy5wcm90b3R5cGUuYm9tQXdhcmUgPSB0cnVlO1xuXG5cbi8vIC0tIEVuY29kaW5nXG5cbmZ1bmN0aW9uIFV0ZjdJTUFQRW5jb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjtcbiAgICB0aGlzLmluQmFzZTY0ID0gZmFsc2U7XG4gICAgdGhpcy5iYXNlNjRBY2N1bSA9IG5ldyBCdWZmZXIoNik7XG4gICAgdGhpcy5iYXNlNjRBY2N1bUlkeCA9IDA7XG59XG5cblV0ZjdJTUFQRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICB2YXIgaW5CYXNlNjQgPSB0aGlzLmluQmFzZTY0LFxuICAgICAgICBiYXNlNjRBY2N1bSA9IHRoaXMuYmFzZTY0QWNjdW0sXG4gICAgICAgIGJhc2U2NEFjY3VtSWR4ID0gdGhpcy5iYXNlNjRBY2N1bUlkeCxcbiAgICAgICAgYnVmID0gbmV3IEJ1ZmZlcihzdHIubGVuZ3RoKjUgKyAxMCksIGJ1ZklkeCA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdUNoYXIgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKDB4MjAgPD0gdUNoYXIgJiYgdUNoYXIgPD0gMHg3RSkgeyAvLyBEaXJlY3QgY2hhcmFjdGVyIG9yICcmJy5cbiAgICAgICAgICAgIGlmIChpbkJhc2U2NCkge1xuICAgICAgICAgICAgICAgIGlmIChiYXNlNjRBY2N1bUlkeCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmSWR4ICs9IGJ1Zi53cml0ZShiYXNlNjRBY2N1bS5zbGljZSgwLCBiYXNlNjRBY2N1bUlkeCkudG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoL1xcLy9nLCAnLCcpLnJlcGxhY2UoLz0rJC8sICcnKSwgYnVmSWR4KTtcbiAgICAgICAgICAgICAgICAgICAgYmFzZTY0QWNjdW1JZHggPSAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSBtaW51c0NoYXI7IC8vIFdyaXRlICctJywgdGhlbiBnbyB0byBkaXJlY3QgbW9kZS5cbiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWluQmFzZTY0KSB7XG4gICAgICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IHVDaGFyOyAvLyBXcml0ZSBkaXJlY3QgY2hhcmFjdGVyXG5cbiAgICAgICAgICAgICAgICBpZiAodUNoYXIgPT09IGFuZENoYXIpICAvLyBBbXBlcnNhbmQgLT4gJyYtJ1xuICAgICAgICAgICAgICAgICAgICBidWZbYnVmSWR4KytdID0gbWludXNDaGFyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7IC8vIE5vbi1kaXJlY3QgY2hhcmFjdGVyXG4gICAgICAgICAgICBpZiAoIWluQmFzZTY0KSB7XG4gICAgICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IGFuZENoYXI7IC8vIFdyaXRlICcmJywgdGhlbiBnbyB0byBiYXNlNjQgbW9kZS5cbiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5CYXNlNjQpIHtcbiAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bVtiYXNlNjRBY2N1bUlkeCsrXSA9IHVDaGFyID4+IDg7XG4gICAgICAgICAgICAgICAgYmFzZTY0QWNjdW1bYmFzZTY0QWNjdW1JZHgrK10gPSB1Q2hhciAmIDB4RkY7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmFzZTY0QWNjdW1JZHggPT0gYmFzZTY0QWNjdW0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZklkeCArPSBidWYud3JpdGUoYmFzZTY0QWNjdW0udG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoL1xcLy9nLCAnLCcpLCBidWZJZHgpO1xuICAgICAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bUlkeCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pbkJhc2U2NCA9IGluQmFzZTY0O1xuICAgIHRoaXMuYmFzZTY0QWNjdW1JZHggPSBiYXNlNjRBY2N1bUlkeDtcblxuICAgIHJldHVybiBidWYuc2xpY2UoMCwgYnVmSWR4KTtcbn1cblxuVXRmN0lNQVBFbmNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYnVmID0gbmV3IEJ1ZmZlcigxMCksIGJ1ZklkeCA9IDA7XG4gICAgaWYgKHRoaXMuaW5CYXNlNjQpIHtcbiAgICAgICAgaWYgKHRoaXMuYmFzZTY0QWNjdW1JZHggPiAwKSB7XG4gICAgICAgICAgICBidWZJZHggKz0gYnVmLndyaXRlKHRoaXMuYmFzZTY0QWNjdW0uc2xpY2UoMCwgdGhpcy5iYXNlNjRBY2N1bUlkeCkudG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoL1xcLy9nLCAnLCcpLnJlcGxhY2UoLz0rJC8sICcnKSwgYnVmSWR4KTtcbiAgICAgICAgICAgIHRoaXMuYmFzZTY0QWNjdW1JZHggPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmW2J1ZklkeCsrXSA9IG1pbnVzQ2hhcjsgLy8gV3JpdGUgJy0nLCB0aGVuIGdvIHRvIGRpcmVjdCBtb2RlLlxuICAgICAgICB0aGlzLmluQmFzZTY0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwLCBidWZJZHgpO1xufVxuXG5cbi8vIC0tIERlY29kaW5nXG5cbmZ1bmN0aW9uIFV0ZjdJTUFQRGVjb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjtcbiAgICB0aGlzLmluQmFzZTY0ID0gZmFsc2U7XG4gICAgdGhpcy5iYXNlNjRBY2N1bSA9ICcnO1xufVxuXG52YXIgYmFzZTY0SU1BUENoYXJzID0gYmFzZTY0Q2hhcnMuc2xpY2UoKTtcbmJhc2U2NElNQVBDaGFyc1snLCcuY2hhckNvZGVBdCgwKV0gPSB0cnVlO1xuXG5VdGY3SU1BUERlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7XG4gICAgdmFyIHJlcyA9IFwiXCIsIGxhc3RJID0gMCxcbiAgICAgICAgaW5CYXNlNjQgPSB0aGlzLmluQmFzZTY0LFxuICAgICAgICBiYXNlNjRBY2N1bSA9IHRoaXMuYmFzZTY0QWNjdW07XG5cbiAgICAvLyBUaGUgZGVjb2RlciBpcyBtb3JlIGludm9sdmVkIGFzIHdlIG11c3QgaGFuZGxlIGNodW5rcyBpbiBzdHJlYW0uXG4gICAgLy8gSXQgaXMgZm9yZ2l2aW5nLCBjbG9zZXIgdG8gc3RhbmRhcmQgVVRGLTcgKGZvciBleGFtcGxlLCAnLScgaXMgb3B0aW9uYWwgYXQgdGhlIGVuZCkuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoIWluQmFzZTY0KSB7IC8vIFdlJ3JlIGluIGRpcmVjdCBtb2RlLlxuICAgICAgICAgICAgLy8gV3JpdGUgZGlyZWN0IGNoYXJzIHVudGlsICcmJ1xuICAgICAgICAgICAgaWYgKGJ1ZltpXSA9PSBhbmRDaGFyKSB7XG4gICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKGJ1Zi5zbGljZShsYXN0SSwgaSksIFwiYXNjaWlcIik7IC8vIFdyaXRlIGRpcmVjdCBjaGFycy5cbiAgICAgICAgICAgICAgICBsYXN0SSA9IGkrMTtcbiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7IC8vIFdlIGRlY29kZSBiYXNlNjQuXG4gICAgICAgICAgICBpZiAoIWJhc2U2NElNQVBDaGFyc1tidWZbaV1dKSB7IC8vIEJhc2U2NCBlbmRlZC5cbiAgICAgICAgICAgICAgICBpZiAoaSA9PSBsYXN0SSAmJiBidWZbaV0gPT0gbWludXNDaGFyKSB7IC8vIFwiJi1cIiAtPiBcIiZcIlxuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCImXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJLCBpKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJy8nKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIoYjY0c3RyLCAnYmFzZTY0JyksIFwidXRmMTYtYmVcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGJ1ZltpXSAhPSBtaW51c0NoYXIpIC8vIE1pbnVzIG1heSBiZSBhYnNvcmJlZCBhZnRlciBiYXNlNjQuXG4gICAgICAgICAgICAgICAgICAgIGktLTtcblxuICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxO1xuICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYmFzZTY0QWNjdW0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghaW5CYXNlNjQpIHtcbiAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKGJ1Zi5zbGljZShsYXN0SSksIFwiYXNjaWlcIik7IC8vIFdyaXRlIGRpcmVjdCBjaGFycy5cbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgYjY0c3RyID0gYmFzZTY0QWNjdW0gKyBidWYuc2xpY2UobGFzdEkpLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnLycpO1xuXG4gICAgICAgIHZhciBjYW5CZURlY29kZWQgPSBiNjRzdHIubGVuZ3RoIC0gKGI2NHN0ci5sZW5ndGggJSA4KTsgLy8gTWluaW1hbCBjaHVuazogMiBxdWFkcyAtPiAyeDMgYnl0ZXMgLT4gMyBjaGFycy5cbiAgICAgICAgYmFzZTY0QWNjdW0gPSBiNjRzdHIuc2xpY2UoY2FuQmVEZWNvZGVkKTsgLy8gVGhlIHJlc3Qgd2lsbCBiZSBkZWNvZGVkIGluIGZ1dHVyZS5cbiAgICAgICAgYjY0c3RyID0gYjY0c3RyLnNsaWNlKDAsIGNhbkJlRGVjb2RlZCk7XG5cbiAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIoYjY0c3RyLCAnYmFzZTY0JyksIFwidXRmMTYtYmVcIik7XG4gICAgfVxuXG4gICAgdGhpcy5pbkJhc2U2NCA9IGluQmFzZTY0O1xuICAgIHRoaXMuYmFzZTY0QWNjdW0gPSBiYXNlNjRBY2N1bTtcblxuICAgIHJldHVybiByZXM7XG59XG5cblV0ZjdJTUFQRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlcyA9IFwiXCI7XG4gICAgaWYgKHRoaXMuaW5CYXNlNjQgJiYgdGhpcy5iYXNlNjRBY2N1bS5sZW5ndGggPiAwKVxuICAgICAgICByZXMgPSB0aGlzLmljb252LmRlY29kZShuZXcgQnVmZmVyKHRoaXMuYmFzZTY0QWNjdW0sICdiYXNlNjQnKSwgXCJ1dGYxNi1iZVwiKTtcblxuICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTtcbiAgICB0aGlzLmJhc2U2NEFjY3VtID0gJyc7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdXRmNy5qc1xuLy8gbW9kdWxlIGlkID0gMTM4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlwidXNlIHN0cmljdFwiO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoXCJidWZmZXJcIikuQnVmZmVyO1xuXG4vLyBTaW5nbGUtYnl0ZSBjb2RlYy4gTmVlZHMgYSAnY2hhcnMnIHN0cmluZyBwYXJhbWV0ZXIgdGhhdCBjb250YWlucyAyNTYgb3IgMTI4IGNoYXJzIHRoYXRcbi8vIGNvcnJlc3BvbmQgdG8gZW5jb2RlZCBieXRlcyAoaWYgMTI4IC0gdGhlbiBsb3dlciBoYWxmIGlzIEFTQ0lJKS4gXG5cbmV4cG9ydHMuX3NiY3MgPSBTQkNTQ29kZWM7XG5mdW5jdGlvbiBTQkNTQ29kZWMoY29kZWNPcHRpb25zLCBpY29udikge1xuICAgIGlmICghY29kZWNPcHRpb25zKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTQkNTIGNvZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRoZSBkYXRhLlwiKVxuICAgIFxuICAgIC8vIFByZXBhcmUgY2hhciBidWZmZXIgZm9yIGRlY29kaW5nLlxuICAgIGlmICghY29kZWNPcHRpb25zLmNoYXJzIHx8IChjb2RlY09wdGlvbnMuY2hhcnMubGVuZ3RoICE9PSAxMjggJiYgY29kZWNPcHRpb25zLmNoYXJzLmxlbmd0aCAhPT0gMjU2KSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRW5jb2RpbmcgJ1wiK2NvZGVjT3B0aW9ucy50eXBlK1wiJyBoYXMgaW5jb3JyZWN0ICdjaGFycycgKG11c3QgYmUgb2YgbGVuIDEyOCBvciAyNTYpXCIpO1xuICAgIFxuICAgIGlmIChjb2RlY09wdGlvbnMuY2hhcnMubGVuZ3RoID09PSAxMjgpIHtcbiAgICAgICAgdmFyIGFzY2lpU3RyaW5nID0gXCJcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMjg7IGkrKylcbiAgICAgICAgICAgIGFzY2lpU3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XG4gICAgICAgIGNvZGVjT3B0aW9ucy5jaGFycyA9IGFzY2lpU3RyaW5nICsgY29kZWNPcHRpb25zLmNoYXJzO1xuICAgIH1cblxuICAgIHRoaXMuZGVjb2RlQnVmID0gbmV3IEJ1ZmZlcihjb2RlY09wdGlvbnMuY2hhcnMsICd1Y3MyJyk7XG4gICAgXG4gICAgLy8gRW5jb2RpbmcgYnVmZmVyLlxuICAgIHZhciBlbmNvZGVCdWYgPSBuZXcgQnVmZmVyKDY1NTM2KTtcbiAgICBlbmNvZGVCdWYuZmlsbChpY29udi5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUuY2hhckNvZGVBdCgwKSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVjT3B0aW9ucy5jaGFycy5sZW5ndGg7IGkrKylcbiAgICAgICAgZW5jb2RlQnVmW2NvZGVjT3B0aW9ucy5jaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7XG5cbiAgICB0aGlzLmVuY29kZUJ1ZiA9IGVuY29kZUJ1Zjtcbn1cblxuU0JDU0NvZGVjLnByb3RvdHlwZS5lbmNvZGVyID0gU0JDU0VuY29kZXI7XG5TQkNTQ29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBTQkNTRGVjb2RlcjtcblxuXG5mdW5jdGlvbiBTQkNTRW5jb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuZW5jb2RlQnVmID0gY29kZWMuZW5jb2RlQnVmO1xufVxuXG5TQkNTRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzdHIubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKylcbiAgICAgICAgYnVmW2ldID0gdGhpcy5lbmNvZGVCdWZbc3RyLmNoYXJDb2RlQXQoaSldO1xuICAgIFxuICAgIHJldHVybiBidWY7XG59XG5cblNCQ1NFbmNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbn1cblxuXG5mdW5jdGlvbiBTQkNTRGVjb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuZGVjb2RlQnVmID0gY29kZWMuZGVjb2RlQnVmO1xufVxuXG5TQkNTRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHtcbiAgICAvLyBTdHJpbmdzIGFyZSBpbW11dGFibGUgaW4gSlMgLT4gd2UgdXNlIHVjczIgYnVmZmVyIHRvIHNwZWVkIHVwIGNvbXB1dGF0aW9ucy5cbiAgICB2YXIgZGVjb2RlQnVmID0gdGhpcy5kZWNvZGVCdWY7XG4gICAgdmFyIG5ld0J1ZiA9IG5ldyBCdWZmZXIoYnVmLmxlbmd0aCoyKTtcbiAgICB2YXIgaWR4MSA9IDAsIGlkeDIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlkeDEgPSBidWZbaV0qMjsgaWR4MiA9IGkqMjtcbiAgICAgICAgbmV3QnVmW2lkeDJdID0gZGVjb2RlQnVmW2lkeDFdO1xuICAgICAgICBuZXdCdWZbaWR4MisxXSA9IGRlY29kZUJ1ZltpZHgxKzFdO1xuICAgIH1cbiAgICByZXR1cm4gbmV3QnVmLnRvU3RyaW5nKCd1Y3MyJyk7XG59XG5cblNCQ1NEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9zYmNzLWNvZGVjLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIE1hbnVhbGx5IGFkZGVkIGRhdGEgdG8gYmUgdXNlZCBieSBzYmNzIGNvZGVjIGluIGFkZGl0aW9uIHRvIGdlbmVyYXRlZCBvbmUuXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8vIE5vdCBzdXBwb3J0ZWQgYnkgaWNvbnYsIG5vdCBzdXJlIHdoeS5cbiAgICBcIjEwMDI5XCI6IFwibWFjY2VudGV1cm9cIixcbiAgICBcIm1hY2NlbnRldXJvXCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICAgICAgXCJjaGFyc1wiOiBcIsOExIDEgcOJxITDlsOcw6HEhcSMw6TEjcSGxIfDqcW5xbrEjsOtxI/EksSTxJbDs8SXw7TDtsO1w7rEmsSbw7zigKDCsMSYwqPCp+KAosK2w5/CrsKp4oSixJnCqOKJoMSjxK7Er8Sq4omk4omlxKvEtuKIguKIkcWCxLvEvMS9xL7EucS6xYXFhsWDwqziiJrFhMWH4oiGwqvCu+KApsKgxYjFkMOVxZHFjOKAk+KAlOKAnOKAneKAmOKAmcO34peKxY3FlMWVxZjigLnigLrFmcWWxZfFoOKAmuKAnsWhxZrFm8OBxaTFpcONxb3FvsWqw5PDlMWrxa7DmsWvxbDFscWyxbPDncO9xLfFu8WBxbzEosuHXCJcbiAgICB9LFxuXG4gICAgXCI4MDhcIjogXCJjcDgwOFwiLFxuICAgIFwiaWJtODA4XCI6IFwiY3A4MDhcIixcbiAgICBcImNwODA4XCI6IHtcbiAgICAgICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICAgICAgXCJjaGFyc1wiOiBcItCQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgNGA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGP0IHRkdCE0ZTQh9GX0I7RnsKw4oiZwrfiiJrihJbigqzilqDCoFwiXG4gICAgfSxcblxuICAgIC8vIEFsaWFzZXMgb2YgZ2VuZXJhdGVkIGVuY29kaW5ncy5cbiAgICBcImFzY2lpOGJpdFwiOiBcImFzY2lpXCIsXG4gICAgXCJ1c2FzY2lpXCI6IFwiYXNjaWlcIixcbiAgICBcImFuc2l4MzRcIjogXCJhc2NpaVwiLFxuICAgIFwiYW5zaXgzNDE5NjhcIjogXCJhc2NpaVwiLFxuICAgIFwiYW5zaXgzNDE5ODZcIjogXCJhc2NpaVwiLFxuICAgIFwiY3Nhc2NpaVwiOiBcImFzY2lpXCIsXG4gICAgXCJjcDM2N1wiOiBcImFzY2lpXCIsXG4gICAgXCJpYm0zNjdcIjogXCJhc2NpaVwiLFxuICAgIFwiaXNvaXI2XCI6IFwiYXNjaWlcIixcbiAgICBcImlzbzY0NnVzXCI6IFwiYXNjaWlcIixcbiAgICBcImlzbzY0NmlydlwiOiBcImFzY2lpXCIsXG4gICAgXCJ1c1wiOiBcImFzY2lpXCIsXG5cbiAgICBcImxhdGluMVwiOiBcImlzbzg4NTkxXCIsXG4gICAgXCJsYXRpbjJcIjogXCJpc284ODU5MlwiLFxuICAgIFwibGF0aW4zXCI6IFwiaXNvODg1OTNcIixcbiAgICBcImxhdGluNFwiOiBcImlzbzg4NTk0XCIsXG4gICAgXCJsYXRpbjVcIjogXCJpc284ODU5OVwiLFxuICAgIFwibGF0aW42XCI6IFwiaXNvODg1OTEwXCIsXG4gICAgXCJsYXRpbjdcIjogXCJpc284ODU5MTNcIixcbiAgICBcImxhdGluOFwiOiBcImlzbzg4NTkxNFwiLFxuICAgIFwibGF0aW45XCI6IFwiaXNvODg1OTE1XCIsXG4gICAgXCJsYXRpbjEwXCI6IFwiaXNvODg1OTE2XCIsXG5cbiAgICBcImNzaXNvbGF0aW4xXCI6IFwiaXNvODg1OTFcIixcbiAgICBcImNzaXNvbGF0aW4yXCI6IFwiaXNvODg1OTJcIixcbiAgICBcImNzaXNvbGF0aW4zXCI6IFwiaXNvODg1OTNcIixcbiAgICBcImNzaXNvbGF0aW40XCI6IFwiaXNvODg1OTRcIixcbiAgICBcImNzaXNvbGF0aW5jeXJpbGxpY1wiOiBcImlzbzg4NTk1XCIsXG4gICAgXCJjc2lzb2xhdGluYXJhYmljXCI6IFwiaXNvODg1OTZcIixcbiAgICBcImNzaXNvbGF0aW5ncmVla1wiIDogXCJpc284ODU5N1wiLFxuICAgIFwiY3Npc29sYXRpbmhlYnJld1wiOiBcImlzbzg4NTk4XCIsXG4gICAgXCJjc2lzb2xhdGluNVwiOiBcImlzbzg4NTk5XCIsXG4gICAgXCJjc2lzb2xhdGluNlwiOiBcImlzbzg4NTkxMFwiLFxuXG4gICAgXCJsMVwiOiBcImlzbzg4NTkxXCIsXG4gICAgXCJsMlwiOiBcImlzbzg4NTkyXCIsXG4gICAgXCJsM1wiOiBcImlzbzg4NTkzXCIsXG4gICAgXCJsNFwiOiBcImlzbzg4NTk0XCIsXG4gICAgXCJsNVwiOiBcImlzbzg4NTk5XCIsXG4gICAgXCJsNlwiOiBcImlzbzg4NTkxMFwiLFxuICAgIFwibDdcIjogXCJpc284ODU5MTNcIixcbiAgICBcImw4XCI6IFwiaXNvODg1OTE0XCIsXG4gICAgXCJsOVwiOiBcImlzbzg4NTkxNVwiLFxuICAgIFwibDEwXCI6IFwiaXNvODg1OTE2XCIsXG5cbiAgICBcImlzb2lyMTRcIjogXCJpc282NDZqcFwiLFxuICAgIFwiaXNvaXI1N1wiOiBcImlzbzY0NmNuXCIsXG4gICAgXCJpc29pcjEwMFwiOiBcImlzbzg4NTkxXCIsXG4gICAgXCJpc29pcjEwMVwiOiBcImlzbzg4NTkyXCIsXG4gICAgXCJpc29pcjEwOVwiOiBcImlzbzg4NTkzXCIsXG4gICAgXCJpc29pcjExMFwiOiBcImlzbzg4NTk0XCIsXG4gICAgXCJpc29pcjE0NFwiOiBcImlzbzg4NTk1XCIsXG4gICAgXCJpc29pcjEyN1wiOiBcImlzbzg4NTk2XCIsXG4gICAgXCJpc29pcjEyNlwiOiBcImlzbzg4NTk3XCIsXG4gICAgXCJpc29pcjEzOFwiOiBcImlzbzg4NTk4XCIsXG4gICAgXCJpc29pcjE0OFwiOiBcImlzbzg4NTk5XCIsXG4gICAgXCJpc29pcjE1N1wiOiBcImlzbzg4NTkxMFwiLFxuICAgIFwiaXNvaXIxNjZcIjogXCJ0aXM2MjBcIixcbiAgICBcImlzb2lyMTc5XCI6IFwiaXNvODg1OTEzXCIsXG4gICAgXCJpc29pcjE5OVwiOiBcImlzbzg4NTkxNFwiLFxuICAgIFwiaXNvaXIyMDNcIjogXCJpc284ODU5MTVcIixcbiAgICBcImlzb2lyMjI2XCI6IFwiaXNvODg1OTE2XCIsXG5cbiAgICBcImNwODE5XCI6IFwiaXNvODg1OTFcIixcbiAgICBcImlibTgxOVwiOiBcImlzbzg4NTkxXCIsXG5cbiAgICBcImN5cmlsbGljXCI6IFwiaXNvODg1OTVcIixcblxuICAgIFwiYXJhYmljXCI6IFwiaXNvODg1OTZcIixcbiAgICBcImFyYWJpYzhcIjogXCJpc284ODU5NlwiLFxuICAgIFwiZWNtYTExNFwiOiBcImlzbzg4NTk2XCIsXG4gICAgXCJhc21vNzA4XCI6IFwiaXNvODg1OTZcIixcblxuICAgIFwiZ3JlZWtcIiA6IFwiaXNvODg1OTdcIixcbiAgICBcImdyZWVrOFwiIDogXCJpc284ODU5N1wiLFxuICAgIFwiZWNtYTExOFwiIDogXCJpc284ODU5N1wiLFxuICAgIFwiZWxvdDkyOFwiIDogXCJpc284ODU5N1wiLFxuXG4gICAgXCJoZWJyZXdcIjogXCJpc284ODU5OFwiLFxuICAgIFwiaGVicmV3OFwiOiBcImlzbzg4NTk4XCIsXG5cbiAgICBcInR1cmtpc2hcIjogXCJpc284ODU5OVwiLFxuICAgIFwidHVya2lzaDhcIjogXCJpc284ODU5OVwiLFxuXG4gICAgXCJ0aGFpXCI6IFwiaXNvODg1OTExXCIsXG4gICAgXCJ0aGFpOFwiOiBcImlzbzg4NTkxMVwiLFxuXG4gICAgXCJjZWx0aWNcIjogXCJpc284ODU5MTRcIixcbiAgICBcImNlbHRpYzhcIjogXCJpc284ODU5MTRcIixcbiAgICBcImlzb2NlbHRpY1wiOiBcImlzbzg4NTkxNFwiLFxuXG4gICAgXCJ0aXM2MjAwXCI6IFwidGlzNjIwXCIsXG4gICAgXCJ0aXM2MjAyNTI5MVwiOiBcInRpczYyMFwiLFxuICAgIFwidGlzNjIwMjUzMzBcIjogXCJ0aXM2MjBcIixcblxuICAgIFwiMTAwMDBcIjogXCJtYWNyb21hblwiLFxuICAgIFwiMTAwMDZcIjogXCJtYWNncmVla1wiLFxuICAgIFwiMTAwMDdcIjogXCJtYWNjeXJpbGxpY1wiLFxuICAgIFwiMTAwNzlcIjogXCJtYWNpY2VsYW5kXCIsXG4gICAgXCIxMDA4MVwiOiBcIm1hY3R1cmtpc2hcIixcblxuICAgIFwiY3NwYzhjb2RlcGFnZTQzN1wiOiBcImNwNDM3XCIsXG4gICAgXCJjc3BjNzc1YmFsdGljXCI6IFwiY3A3NzVcIixcbiAgICBcImNzcGM4NTBtdWx0aWxpbmd1YWxcIjogXCJjcDg1MFwiLFxuICAgIFwiY3NwY3A4NTJcIjogXCJjcDg1MlwiLFxuICAgIFwiY3NwYzg2MmxhdGluaGVicmV3XCI6IFwiY3A4NjJcIixcbiAgICBcImNwZ3JcIjogXCJjcDg2OVwiLFxuXG4gICAgXCJtc2VlXCI6IFwiY3AxMjUwXCIsXG4gICAgXCJtc2N5cmxcIjogXCJjcDEyNTFcIixcbiAgICBcIm1zYW5zaVwiOiBcImNwMTI1MlwiLFxuICAgIFwibXNncmVla1wiOiBcImNwMTI1M1wiLFxuICAgIFwibXN0dXJrXCI6IFwiY3AxMjU0XCIsXG4gICAgXCJtc2hlYnJcIjogXCJjcDEyNTVcIixcbiAgICBcIm1zYXJhYlwiOiBcImNwMTI1NlwiLFxuICAgIFwid2luYmFsdHJpbVwiOiBcImNwMTI1N1wiLFxuXG4gICAgXCJjcDIwODY2XCI6IFwia29pOHJcIixcbiAgICBcIjIwODY2XCI6IFwia29pOHJcIixcbiAgICBcImlibTg3OFwiOiBcImtvaThyXCIsXG4gICAgXCJjc2tvaThyXCI6IFwia29pOHJcIixcblxuICAgIFwiY3AyMTg2NlwiOiBcImtvaTh1XCIsXG4gICAgXCIyMTg2NlwiOiBcImtvaTh1XCIsXG4gICAgXCJpYm0xMTY4XCI6IFwia29pOHVcIixcblxuICAgIFwic3RyazEwNDgyMDAyXCI6IFwicmsxMDQ4XCIsXG5cbiAgICBcInRjdm41NzEyXCI6IFwidGN2blwiLFxuICAgIFwidGN2bjU3MTIxXCI6IFwidGN2blwiLFxuXG4gICAgXCJnYjE5ODg4MFwiOiBcImlzbzY0NmNuXCIsXG4gICAgXCJjblwiOiBcImlzbzY0NmNuXCIsXG5cbiAgICBcImNzaXNvMTRqaXNjNjIyMHJvXCI6IFwiaXNvNjQ2anBcIixcbiAgICBcImppc2M2MjIwMTk2OXJvXCI6IFwiaXNvNjQ2anBcIixcbiAgICBcImpwXCI6IFwiaXNvNjQ2anBcIixcblxuICAgIFwiY3NocHJvbWFuOFwiOiBcImhwcm9tYW44XCIsXG4gICAgXCJyOFwiOiBcImhwcm9tYW44XCIsXG4gICAgXCJyb21hbjhcIjogXCJocHJvbWFuOFwiLFxuICAgIFwieHJvbWFuOFwiOiBcImhwcm9tYW44XCIsXG4gICAgXCJpYm0xMDUxXCI6IFwiaHByb21hbjhcIixcblxuICAgIFwibWFjXCI6IFwibWFjaW50b3NoXCIsXG4gICAgXCJjc21hY2ludG9zaFwiOiBcIm1hY2ludG9zaFwiLFxufTtcblxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3NiY3MtZGF0YS5qc1xuLy8gbW9kdWxlIGlkID0gMTQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlwidXNlIHN0cmljdFwiO1xuXG4vLyBHZW5lcmF0ZWQgZGF0YSBmb3Igc2JjcyBjb2RlYy4gRG9uJ3QgZWRpdCBtYW51YWxseS4gUmVnZW5lcmF0ZSB1c2luZyBnZW5lcmF0aW9uL2dlbi1zYmNzLmpzIHNjcmlwdC5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBcIjQzN1wiOiBcImNwNDM3XCIsXG4gIFwiNzM3XCI6IFwiY3A3MzdcIixcbiAgXCI3NzVcIjogXCJjcDc3NVwiLFxuICBcIjg1MFwiOiBcImNwODUwXCIsXG4gIFwiODUyXCI6IFwiY3A4NTJcIixcbiAgXCI4NTVcIjogXCJjcDg1NVwiLFxuICBcIjg1NlwiOiBcImNwODU2XCIsXG4gIFwiODU3XCI6IFwiY3A4NTdcIixcbiAgXCI4NThcIjogXCJjcDg1OFwiLFxuICBcIjg2MFwiOiBcImNwODYwXCIsXG4gIFwiODYxXCI6IFwiY3A4NjFcIixcbiAgXCI4NjJcIjogXCJjcDg2MlwiLFxuICBcIjg2M1wiOiBcImNwODYzXCIsXG4gIFwiODY0XCI6IFwiY3A4NjRcIixcbiAgXCI4NjVcIjogXCJjcDg2NVwiLFxuICBcIjg2NlwiOiBcImNwODY2XCIsXG4gIFwiODY5XCI6IFwiY3A4NjlcIixcbiAgXCI4NzRcIjogXCJ3aW5kb3dzODc0XCIsXG4gIFwiOTIyXCI6IFwiY3A5MjJcIixcbiAgXCIxMDQ2XCI6IFwiY3AxMDQ2XCIsXG4gIFwiMTEyNFwiOiBcImNwMTEyNFwiLFxuICBcIjExMjVcIjogXCJjcDExMjVcIixcbiAgXCIxMTI5XCI6IFwiY3AxMTI5XCIsXG4gIFwiMTEzM1wiOiBcImNwMTEzM1wiLFxuICBcIjExNjFcIjogXCJjcDExNjFcIixcbiAgXCIxMTYyXCI6IFwiY3AxMTYyXCIsXG4gIFwiMTE2M1wiOiBcImNwMTE2M1wiLFxuICBcIjEyNTBcIjogXCJ3aW5kb3dzMTI1MFwiLFxuICBcIjEyNTFcIjogXCJ3aW5kb3dzMTI1MVwiLFxuICBcIjEyNTJcIjogXCJ3aW5kb3dzMTI1MlwiLFxuICBcIjEyNTNcIjogXCJ3aW5kb3dzMTI1M1wiLFxuICBcIjEyNTRcIjogXCJ3aW5kb3dzMTI1NFwiLFxuICBcIjEyNTVcIjogXCJ3aW5kb3dzMTI1NVwiLFxuICBcIjEyNTZcIjogXCJ3aW5kb3dzMTI1NlwiLFxuICBcIjEyNTdcIjogXCJ3aW5kb3dzMTI1N1wiLFxuICBcIjEyNThcIjogXCJ3aW5kb3dzMTI1OFwiLFxuICBcIjI4NTkxXCI6IFwiaXNvODg1OTFcIixcbiAgXCIyODU5MlwiOiBcImlzbzg4NTkyXCIsXG4gIFwiMjg1OTNcIjogXCJpc284ODU5M1wiLFxuICBcIjI4NTk0XCI6IFwiaXNvODg1OTRcIixcbiAgXCIyODU5NVwiOiBcImlzbzg4NTk1XCIsXG4gIFwiMjg1OTZcIjogXCJpc284ODU5NlwiLFxuICBcIjI4NTk3XCI6IFwiaXNvODg1OTdcIixcbiAgXCIyODU5OFwiOiBcImlzbzg4NTk4XCIsXG4gIFwiMjg1OTlcIjogXCJpc284ODU5OVwiLFxuICBcIjI4NjAwXCI6IFwiaXNvODg1OTEwXCIsXG4gIFwiMjg2MDFcIjogXCJpc284ODU5MTFcIixcbiAgXCIyODYwM1wiOiBcImlzbzg4NTkxM1wiLFxuICBcIjI4NjA0XCI6IFwiaXNvODg1OTE0XCIsXG4gIFwiMjg2MDVcIjogXCJpc284ODU5MTVcIixcbiAgXCIyODYwNlwiOiBcImlzbzg4NTkxNlwiLFxuICBcIndpbmRvd3M4NzRcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKCrO+/ve+/ve+/ve+/veKApu+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlO+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vcKg4LiB4LiC4LiD4LiE4LiF4LiG4LiH4LiI4LiJ4LiK4LiL4LiM4LiN4LiO4LiP4LiQ4LiR4LiS4LiT4LiU4LiV4LiW4LiX4LiY4LiZ4Lia4Lib4Lic4Lid4Lie4Lif4Lig4Lih4Lii4Lij4Lik4Lil4Lim4Lin4Lio4Lip4Liq4Lir4Lis4Lit4Liu4Liv4Liw4Lix4Liy4Liz4Li04Li14Li24Li34Li44Li54Li677+977+977+977+94Li/4LmA4LmB4LmC4LmD4LmE4LmF4LmG4LmH4LmI4LmJ4LmK4LmL4LmM4LmN4LmO4LmP4LmQ4LmR4LmS4LmT4LmU4LmV4LmW4LmX4LmY4LmZ4Lma4Lmb77+977+977+977+9XCJcbiAgfSxcbiAgXCJ3aW44NzRcIjogXCJ3aW5kb3dzODc0XCIsXG4gIFwiY3A4NzRcIjogXCJ3aW5kb3dzODc0XCIsXG4gIFwid2luZG93czEyNTBcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKCrO+/veKAmu+/veKAnuKApuKAoOKAoe+/veKAsMWg4oC5xZrFpMW9xbnvv73igJjigJnigJzigJ3igKLigJPigJTvv73ihKLFoeKAusWbxaXFvsW6wqDLh8uYxYHCpMSEwqbCp8KowqnFnsKrwqzCrcKuxbvCsMKxy5vFgsK0wrXCtsK3wrjEhcWfwrvEvcudxL7FvMWUw4HDgsSCw4TEucSGw4fEjMOJxJjDi8Saw43DjsSOxJDFg8WHw5PDlMWQw5bDl8WYxa7DmsWww5zDncWiw5/FlcOhw6LEg8OkxLrEh8OnxI3DqcSZw6vEm8Otw67Ej8SRxYTFiMOzw7TFkcO2w7fFmcWvw7rFscO8w73Fo8uZXCJcbiAgfSxcbiAgXCJ3aW4xMjUwXCI6IFwid2luZG93czEyNTBcIixcbiAgXCJjcDEyNTBcIjogXCJ3aW5kb3dzMTI1MFwiLFxuICBcIndpbmRvd3MxMjUxXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLQgtCD4oCa0ZPigJ7igKbigKDigKHigqzigLDQieKAudCK0IzQi9CP0ZLigJjigJnigJzigJ3igKLigJPigJTvv73ihKLRmeKAutGa0ZzRm9GfwqDQjtGe0IjCpNKQwqbCp9CBwqnQhMKrwqzCrcKu0IfCsMKx0IbRltKRwrXCtsK30ZHihJbRlMK70ZjQhdGV0ZfQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj1wiXG4gIH0sXG4gIFwid2luMTI1MVwiOiBcIndpbmRvd3MxMjUxXCIsXG4gIFwiY3AxMjUxXCI6IFwid2luZG93czEyNTFcIixcbiAgXCJ3aW5kb3dzMTI1MlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCaxpLigJ7igKbigKDigKHLhuKAsMWg4oC5xZLvv73Fve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk++/vcW+xbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w79cIlxuICB9LFxuICBcIndpbjEyNTJcIjogXCJ3aW5kb3dzMTI1MlwiLFxuICBcImNwMTI1MlwiOiBcIndpbmRvd3MxMjUyXCIsXG4gIFwid2luZG93czEyNTNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKCrO+/veKAmsaS4oCe4oCm4oCg4oCh77+94oCw77+94oC577+977+977+977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCU77+94oSi77+94oC677+977+977+977+9wqDOhc6GwqPCpMKlwqbCp8Kowqnvv73Cq8Kswq3CruKAlcKwwrHCssKzzoTCtcK2wrfOiM6JzorCu86Mwr3Ojs6PzpDOkc6SzpPOlM6VzpbOl86YzpnOms6bzpzOnc6ezp/OoM6h77+9zqPOpM6lzqbOp86ozqnOqs6rzqzOrc6uzq/OsM6xzrLOs860zrXOts63zrjOuc66zrvOvM69zr7Ov8+Az4HPgs+Dz4TPhc+Gz4fPiM+Jz4rPi8+Mz43Pju+/vVwiXG4gIH0sXG4gIFwid2luMTI1M1wiOiBcIndpbmRvd3MxMjUzXCIsXG4gIFwiY3AxMjUzXCI6IFwid2luZG93czEyNTNcIixcbiAgXCJ3aW5kb3dzMTI1NFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCaxpLigJ7igKbigKDigKHLhuKAsMWg4oC5xZLvv73vv73vv73vv73igJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPvv73vv73FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8Sew5HDksOTw5TDlcOWw5fDmMOZw5rDm8OcxLDFnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/En8Oxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMSxxZ/Dv1wiXG4gIH0sXG4gIFwid2luMTI1NFwiOiBcIndpbmRvd3MxMjU0XCIsXG4gIFwiY3AxMjU0XCI6IFwid2luZG93czEyNTRcIixcbiAgXCJ3aW5kb3dzMTI1NVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCaxpLigJ7igKbigKDigKHLhuKAsO+/veKAue+/ve+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSi77+94oC677+977+977+977+9wqDCocKiwqPigqrCpcKmwqfCqMKpw5fCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnDt8K7wrzCvcK+wr/WsNax1rLWs9a01rXWtta31rjWuda61rvWvNa91r7Wv9eA14HXgteD17DXsdey17PXtO+/ve+/ve+/ve+/ve+/ve+/ve+/vdeQ15HXkteT15TXldeW15fXmNeZ15rXm9ec153Xntef16DXodei16PXpNel16bXp9eo16nXqu+/ve+/veKAjuKAj++/vVwiXG4gIH0sXG4gIFwid2luMTI1NVwiOiBcIndpbmRvd3MxMjU1XCIsXG4gIFwiY3AxMjU1XCI6IFwid2luZG93czEyNTVcIixcbiAgXCJ3aW5kb3dzMTI1NlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs2b7igJrGkuKAnuKApuKAoOKAocuG4oCw2bnigLnFktqG2pjaiNqv4oCY4oCZ4oCc4oCd4oCi4oCT4oCU2qnihKLakeKAusWT4oCM4oCN2rrCoNiMwqLCo8KkwqXCpsKnwqjCqdq+wqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK52JvCu8K8wr3Cvtif24HYodii2KPYpNil2KbYp9io2KnYqtir2KzYrdiu2K/YsNix2LLYs9i02LXYtsOX2LfYuNi52LrZgNmB2YLZg8Og2YTDotmF2YbZh9mIw6fDqMOpw6rDq9mJ2YrDrsOv2YvZjNmN2Y7DtNmP2ZDDt9mRw7nZksO7w7zigI7igI/bklwiXG4gIH0sXG4gIFwid2luMTI1NlwiOiBcIndpbmRvd3MxMjU2XCIsXG4gIFwiY3AxMjU2XCI6IFwid2luZG93czEyNTZcIixcbiAgXCJ3aW5kb3dzMTI1N1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCa77+94oCe4oCm4oCg4oCh77+94oCw77+94oC577+9wqjLh8K477+94oCY4oCZ4oCc4oCd4oCi4oCT4oCU77+94oSi77+94oC677+9wq/Lm++/vcKg77+9wqLCo8Kk77+9wqbCp8OYwqnFlsKrwqzCrcKuw4bCsMKxwrLCs8K0wrXCtsK3w7jCucWXwrvCvMK9wr7DpsSExK7EgMSGw4TDhcSYxJLEjMOJxbnElsSixLbEqsS7xaDFg8WFw5PFjMOVw5bDl8WyxYHFmsWqw5zFu8W9w5/EhcSvxIHEh8Okw6XEmcSTxI3DqcW6xJfEo8S3xKvEvMWhxYTFhsOzxY3DtcO2w7fFs8WCxZvFq8O8xbzFvsuZXCJcbiAgfSxcbiAgXCJ3aW4xMjU3XCI6IFwid2luZG93czEyNTdcIixcbiAgXCJjcDEyNTdcIjogXCJ3aW5kb3dzMTI1N1wiLFxuICBcIndpbmRvd3MxMjU4XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCw77+94oC5xZLvv73vv73vv73vv73igJjigJnigJzigJ3igKLigJPigJTLnOKEou+/veKAusWT77+977+9xbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCxILDhMOFw4bDh8OIw4nDisOLzIDDjcOOw4/EkMORzInDk8OUxqDDlsOXw5jDmcOaw5vDnMavzIPDn8Ogw6HDosSDw6TDpcOmw6fDqMOpw6rDq8yBw63DrsOvxJHDscyjw7PDtMahw7bDt8O4w7nDusO7w7zGsOKCq8O/XCJcbiAgfSxcbiAgXCJ3aW4xMjU4XCI6IFwid2luZG93czEyNThcIixcbiAgXCJjcDEyNThcIjogXCJ3aW5kb3dzMTI1OFwiLFxuICBcImlzbzg4NTkxXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/XCJcbiAgfSxcbiAgXCJjcDI4NTkxXCI6IFwiaXNvODg1OTFcIixcbiAgXCJpc284ODU5MlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgxITLmMWBwqTEvcWawqfCqMWgxZ7FpMW5wq3FvcW7wrDEhcubxYLCtMS+xZvLh8K4xaHFn8WlxbrLncW+xbzFlMOBw4LEgsOExLnEhsOHxIzDicSYw4vEmsONw47EjsSQxYPFh8OTw5TFkMOWw5fFmMWuw5rFsMOcw53FosOfxZXDocOixIPDpMS6xIfDp8SNw6nEmcOrxJvDrcOuxI/EkcWExYjDs8O0xZHDtsO3xZnFr8O6xbHDvMO9xaPLmVwiXG4gIH0sXG4gIFwiY3AyODU5MlwiOiBcImlzbzg4NTkyXCIsXG4gIFwiaXNvODg1OTNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSmy5jCo8Kk77+9xKTCp8KoxLDFnsSexLTCre+/vcW7wrDEp8KywrPCtMK1xKXCt8K4xLHFn8SfxLXCve+/vcW8w4DDgcOC77+9w4TEisSIw4fDiMOJw4rDi8OMw43DjsOP77+9w5HDksOTw5TEoMOWw5fEnMOZw5rDm8OcxazFnMOfw6DDocOi77+9w6TEi8SJw6fDqMOpw6rDq8Osw63DrsOv77+9w7HDssOzw7TEocO2w7fEncO5w7rDu8O8xa3FncuZXCJcbiAgfSxcbiAgXCJjcDI4NTkzXCI6IFwiaXNvODg1OTNcIixcbiAgXCJpc284ODU5NFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgxITEuMWWwqTEqMS7wqfCqMWgxJLEosWmwq3FvcKvwrDEhcubxZfCtMSpxLzLh8K4xaHEk8SjxafFisW+xYvEgMOBw4LDg8OEw4XDhsSuxIzDicSYw4vElsONw47EqsSQxYXFjMS2w5TDlcOWw5fDmMWyw5rDm8OcxajFqsOfxIHDocOiw6PDpMOlw6bEr8SNw6nEmcOrxJfDrcOuxKvEkcWGxY3Et8O0w7XDtsO3w7jFs8O6w7vDvMWpxavLmVwiXG4gIH0sXG4gIFwiY3AyODU5NFwiOiBcImlzbzg4NTk0XCIsXG4gIFwiaXNvODg1OTVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoNCB0ILQg9CE0IXQhtCH0IjQidCK0IvQjMKt0I7Qj9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGP4oSW0ZHRktGT0ZTRldGW0ZfRmNGZ0ZrRm9GcwqfRntGfXCJcbiAgfSxcbiAgXCJjcDI4NTk1XCI6IFwiaXNvODg1OTVcIixcbiAgXCJpc284ODU5NlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg77+977+977+9wqTvv73vv73vv73vv73vv73vv73vv73YjMKt77+977+977+977+977+977+977+977+977+977+977+977+977+92Jvvv73vv73vv73Yn++/vdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22LfYuNi52Lrvv73vv73vv73vv73vv73ZgNmB2YLZg9mE2YXZhtmH2YjZidmK2YvZjNmN2Y7Zj9mQ2ZHZku+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vVwiXG4gIH0sXG4gIFwiY3AyODU5NlwiOiBcImlzbzg4NTk2XCIsXG4gIFwiaXNvODg1OTdcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOKAmOKAmcKj4oKs4oKvwqbCp8KowqnNusKrwqzCre+/veKAlcKwwrHCssKzzoTOhc6GwrfOiM6JzorCu86Mwr3Ojs6PzpDOkc6SzpPOlM6VzpbOl86YzpnOms6bzpzOnc6ezp/OoM6h77+9zqPOpM6lzqbOp86ozqnOqs6rzqzOrc6uzq/OsM6xzrLOs860zrXOts63zrjOuc66zrvOvM69zr7Ov8+Az4HPgs+Dz4TPhc+Gz4fPiM+Jz4rPi8+Mz43Pju+/vVwiXG4gIH0sXG4gIFwiY3AyODU5N1wiOiBcImlzbzg4NTk3XCIsXG4gIFwiaXNvODg1OThcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoO+/vcKiwqPCpMKlwqbCp8KowqnDl8KrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucO3wrvCvMK9wr7vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73igJfXkNeR15LXk9eU15XXlteX15jXmdea15vXnNed157Xn9eg16HXotej16TXpdem16fXqNep16rvv73vv73igI7igI/vv71cIlxuICB9LFxuICBcImNwMjg1OThcIjogXCJpc284ODU5OFwiLFxuICBcImlzbzg4NTk5XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPxJ7DkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zEsMWew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Sfw7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8xLHFn8O/XCJcbiAgfSxcbiAgXCJjcDI4NTk5XCI6IFwiaXNvODg1OTlcIixcbiAgXCJpc284ODU5MTBcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSExJLEosSqxKjEtsKnxLvEkMWgxabFvcKtxarFisKwxIXEk8SjxKvEqcS3wrfEvMSRxaHFp8W+4oCVxavFi8SAw4HDgsODw4TDhcOGxK7EjMOJxJjDi8SWw43DjsOPw5DFhcWMw5PDlMOVw5bFqMOYxbLDmsObw5zDncOew5/EgcOhw6LDo8Okw6XDpsSvxI3DqcSZw6vEl8Otw67Dr8OwxYbFjcOzw7TDtcO2xanDuMWzw7rDu8O8w73DvsS4XCJcbiAgfSxcbiAgXCJjcDI4NjAwXCI6IFwiaXNvODg1OTEwXCIsXG4gIFwiaXNvODg1OTExXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrvv73vv73vv73vv73guL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvvv73vv73vv73vv71cIlxuICB9LFxuICBcImNwMjg2MDFcIjogXCJpc284ODU5MTFcIixcbiAgXCJpc284ODU5MTNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOKAncKiwqPCpOKAnsKmwqfDmMKpxZbCq8Kswq3CrsOGwrDCscKywrPigJzCtcK2wrfDuMK5xZfCu8K8wr3CvsOmxITErsSAxIbDhMOFxJjEksSMw4nFucSWxKLEtsSqxLvFoMWDxYXDk8WMw5XDlsOXxbLFgcWaxarDnMW7xb3Dn8SFxK/EgcSHw6TDpcSZxJPEjcOpxbrEl8SjxLfEq8S8xaHFhMWGw7PFjcO1w7bDt8WzxYLFm8Wrw7zFvMW+4oCZXCJcbiAgfSxcbiAgXCJjcDI4NjAzXCI6IFwiaXNvODg1OTEzXCIsXG4gIFwiaXNvODg1OTE0XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDhuILhuIPCo8SKxIvhuIrCp+G6gMKp4bqC4biL4buywq3CrsW44bie4bifxKDEoeG5gOG5gcK24bmW4bqB4bmX4bqD4bmg4buz4bqE4bqF4bmhw4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/FtMORw5LDk8OUw5XDluG5qsOYw5nDmsObw5zDncW2w5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8W1w7HDssOzw7TDtcO24bmrw7jDucO6w7vDvMO9xbfDv1wiXG4gIH0sXG4gIFwiY3AyODYwNFwiOiBcImlzbzg4NTkxNFwiLFxuICBcImlzbzg4NTkxNVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwqHCosKj4oKswqXFoMKnxaHCqcKqwqvCrMKtwq7Cr8KwwrHCssKzxb3CtcK2wrfFvsK5wrrCu8WSxZPFuMK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w79cIlxuICB9LFxuICBcImNwMjg2MDVcIjogXCJpc284ODU5MTVcIixcbiAgXCJpc284ODU5MTZcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSExIXFgeKCrOKAnsWgwqfFocKpyJjCq8W5wq3FusW7wrDCscSMxYLFveKAncK2wrfFvsSNyJnCu8WSxZPFuMW8w4DDgcOCxILDhMSGw4bDh8OIw4nDisOLw4zDjcOOw4/EkMWDw5LDk8OUxZDDlsWaxbDDmcOaw5vDnMSYyJrDn8Ogw6HDosSDw6TEh8Omw6fDqMOpw6rDq8Osw63DrsOvxJHFhMOyw7PDtMWRw7bFm8Wxw7nDusO7w7zEmcibw79cIlxuICB9LFxuICBcImNwMjg2MDZcIjogXCJpc284ODU5MTZcIixcbiAgXCJjcDQzN1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDpMOgw6XDp8Oqw6vDqMOvw67DrMOEw4XDicOmw4bDtMO2w7LDu8O5w7/DlsOcwqLCo8Kl4oKnxpLDocOtw7PDusOxw5HCqsK6wr/ijJDCrMK9wrzCocKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm00MzdcIjogXCJjcDQzN1wiLFxuICBcImNzaWJtNDM3XCI6IFwiY3A0MzdcIixcbiAgXCJjcDczN1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwizpHOks6TzpTOlc6WzpfOmM6ZzprOm86czp3Ons6fzqDOoc6jzqTOpc6mzqfOqM6pzrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Dz4LPhM+Fz4bPh8+I4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paAz4nOrM6tzq7Pis6vz4zPjc+Lz47Ohs6IzonOis6Mzo7Oj8Kx4oml4omkzqrOq8O34omIwrDiiJnCt+KImuKBv8Ky4pagwqBcIlxuICB9LFxuICBcImlibTczN1wiOiBcImNwNzM3XCIsXG4gIFwiY3NpYm03MzdcIjogXCJjcDczN1wiLFxuICBcImNwNzc1XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLEhsO8w6nEgcOkxKPDpcSHxYLEk8WWxZfEq8W5w4TDhcOJw6bDhsWNw7bEosKixZrFm8OWw5zDuMKjw5jDl8KkxIDEqsOzxbvFvMW64oCdwqbCqcKuwqzCvcK8xYHCq8K74paR4paS4paT4pSC4pSkxITEjMSYxJbilaPilZHilZfilZ3ErsWg4pSQ4pSU4pS04pSs4pSc4pSA4pS8xbLFquKVmuKVlOKVqeKVpuKVoOKVkOKVrMW9xIXEjcSZxJfEr8WhxbPFq8W+4pSY4pSM4paI4paE4paM4paQ4paAw5PDn8WMxYPDtcOVwrXFhMS2xLfEu8S8xYbEksWF4oCZwq3CseKAnMK+wrbCp8O34oCewrDiiJnCt8K5wrPCsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm03NzVcIjogXCJjcDc3NVwiLFxuICBcImNzaWJtNzc1XCI6IFwiY3A3NzVcIixcbiAgXCJjcDg1MFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDpMOgw6XDp8Oqw6vDqMOvw67DrMOEw4XDicOmw4bDtMO2w7LDu8O5w7/DlsOcw7jCo8OYw5fGksOhw63Ds8O6w7HDkcKqwrrCv8KuwqzCvcK8wqHCq8K74paR4paS4paT4pSC4pSkw4HDgsOAwqnilaPilZHilZfilZ3CosKl4pSQ4pSU4pS04pSs4pSc4pSA4pS8w6PDg+KVmuKVlOKVqeKVpuKVoOKVkOKVrMKkw7DDkMOKw4vDiMSxw43DjsOP4pSY4pSM4paI4paEwqbDjOKWgMOTw5/DlMOSw7XDlcK1w77DnsOaw5vDmcO9w53Cr8K0wq3CseKAl8K+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoFwiXG4gIH0sXG4gIFwiaWJtODUwXCI6IFwiY3A4NTBcIixcbiAgXCJjc2libTg1MFwiOiBcImNwODUwXCIsXG4gIFwiY3A4NTJcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOHw7zDqcOiw6TFr8SHw6fFgsOrxZDFkcOuxbnDhMSGw4nEucS6w7TDtsS9xL7FmsWbw5bDnMWkxaXFgcOXxI3DocOtw7PDusSExIXFvcW+xJjEmcKsxbrEjMWfwqvCu+KWkeKWkuKWk+KUguKUpMOBw4LEmsWe4pWj4pWR4pWX4pWdxbvFvOKUkOKUlOKUtOKUrOKUnOKUgOKUvMSCxIPilZrilZTilanilabilaDilZDilazCpMSRxJDEjsOLxI/Fh8ONw47Em+KUmOKUjOKWiOKWhMWixa7iloDDk8Ofw5TFg8WExYjFoMWhxZTDmsWVxbDDvcOdxaPCtMKty53Lm8uHy5jCp8O3wrjCsMKoy5nFscWYxZnilqDCoFwiXG4gIH0sXG4gIFwiaWJtODUyXCI6IFwiY3A4NTJcIixcbiAgXCJjc2libTg1MlwiOiBcImNwODUyXCIsXG4gIFwiY3A4NTVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItGS0ILRk9CD0ZHQgdGU0ITRldCF0ZbQhtGX0IfRmNCI0ZnQidGa0IrRm9CL0ZzQjNGe0I7Rn9CP0Y7QrtGK0KrQsNCQ0LHQkdGG0KbQtNCU0LXQldGE0KTQs9CTwqvCu+KWkeKWkuKWk+KUguKUpNGF0KXQuNCY4pWj4pWR4pWX4pWd0LnQmeKUkOKUlOKUtOKUrOKUnOKUgOKUvNC60JrilZrilZTilanilabilaDilZDilazCpNC70JvQvNCc0L3QndC+0J7Qv+KUmOKUjOKWiOKWhNCf0Y/iloDQr9GA0KDRgdCh0YLQotGD0KPQttCW0LLQktGM0KzihJbCrdGL0KvQt9CX0YjQqNGN0K3RidCp0YfQp8Kn4pagwqBcIlxuICB9LFxuICBcImlibTg1NVwiOiBcImNwODU1XCIsXG4gIFwiY3NpYm04NTVcIjogXCJjcDg1NVwiLFxuICBcImNwODU2XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLXkNeR15LXk9eU15XXlteX15jXmdea15vXnNed157Xn9eg16HXotej16TXpdem16fXqNep16rvv73Co++/vcOX77+977+977+977+977+977+977+977+977+977+9wq7CrMK9wrzvv73Cq8K74paR4paS4paT4pSC4pSk77+977+977+9wqnilaPilZHilZfilZ3CosKl4pSQ4pSU4pS04pSs4pSc4pSA4pS877+977+94pWa4pWU4pWp4pWm4pWg4pWQ4pWswqTvv73vv73vv73vv73vv73vv73vv73vv73vv73ilJjilIzilojiloTCpu+/veKWgO+/ve+/ve+/ve+/ve+/ve+/vcK177+977+977+977+977+977+977+9wq/CtMKtwrHigJfCvsK2wqfDt8K4wrDCqMK3wrnCs8Ky4pagwqBcIlxuICB9LFxuICBcImlibTg1NlwiOiBcImNwODU2XCIsXG4gIFwiY3NpYm04NTZcIjogXCJjcDg1NlwiLFxuICBcImNwODU3XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsSxw4TDhcOJw6bDhsO0w7bDssO7w7nEsMOWw5zDuMKjw5jFnsWfw6HDrcOzw7rDscORxJ7En8K/wq7CrMK9wrzCocKrwrvilpHilpLilpPilILilKTDgcOCw4DCqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzDo8OD4pWa4pWU4pWp4pWm4pWg4pWQ4pWswqTCusKqw4rDi8OI77+9w43DjsOP4pSY4pSM4paI4paEwqbDjOKWgMOTw5/DlMOSw7XDlcK177+9w5fDmsObw5nDrMO/wq/CtMKtwrHvv73CvsK2wqfDt8K4wrDCqMK3wrnCs8Ky4pagwqBcIlxuICB9LFxuICBcImlibTg1N1wiOiBcImNwODU3XCIsXG4gIFwiY3NpYm04NTdcIjogXCJjcDg1N1wiLFxuICBcImNwODU4XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsOsw4TDhcOJw6bDhsO0w7bDssO7w7nDv8OWw5zDuMKjw5jDl8aSw6HDrcOzw7rDscORwqrCusK/wq7CrMK9wrzCocKrwrvilpHilpLilpPilILilKTDgcOCw4DCqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzDo8OD4pWa4pWU4pWp4pWm4pWg4pWQ4pWswqTDsMOQw4rDi8OI4oKsw43DjsOP4pSY4pSM4paI4paEwqbDjOKWgMOTw5/DlMOSw7XDlcK1w77DnsOaw5vDmcO9w53Cr8K0wq3CseKAl8K+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoFwiXG4gIH0sXG4gIFwiaWJtODU4XCI6IFwiY3A4NThcIixcbiAgXCJjc2libTg1OFwiOiBcImNwODU4XCIsXG4gIFwiY3A4NjBcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOHw7zDqcOiw6PDoMOBw6fDqsOKw6jDjcOUw6zDg8OCw4nDgMOIw7TDtcOyw5rDucOMw5XDnMKiwqPDmeKCp8OTw6HDrcOzw7rDscORwqrCusK/w5LCrMK9wrzCocKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjBcIjogXCJjcDg2MFwiLFxuICBcImNzaWJtODYwXCI6IFwiY3A4NjBcIixcbiAgXCJjcDg2MVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDpMOgw6XDp8Oqw6vDqMOQw7DDnsOEw4XDicOmw4bDtMO2w77Du8Odw73DlsOcw7jCo8OY4oKnxpLDocOtw7PDusOBw43Dk8Oawr/ijJDCrMK9wrzCocKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjFcIjogXCJjcDg2MVwiLFxuICBcImNzaWJtODYxXCI6IFwiY3A4NjFcIixcbiAgXCJjcDg2MlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi15DXkdeS15PXlNeV15bXl9eY15nXmteb15zXndee15/XoNeh16LXo9ek16XXpten16jXqdeqwqLCo8Kl4oKnxpLDocOtw7PDusOxw5HCqsK6wr/ijJDCrMK9wrzCocKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjJcIjogXCJjcDg2MlwiLFxuICBcImNzaWJtODYyXCI6IFwiY3A4NjJcIixcbiAgXCJjcDg2M1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDgsOgwrbDp8Oqw6vDqMOvw67igJfDgMKnw4nDiMOKw7TDi8OPw7vDucKkw5TDnMKiwqPDmcObxpLCpsK0w7PDusKowrjCs8Kvw47ijJDCrMK9wrzCvsKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjNcIjogXCJjcDg2M1wiLFxuICBcImNzaWJtODYzXCI6IFwiY3A4NjNcIixcbiAgXCJjcDg2NFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiXFx1MDAwMFxcdTAwMDFcXHUwMDAyXFx1MDAwM1xcdTAwMDRcXHUwMDA1XFx1MDAwNlxcdTAwMDdcXGJcXHRcXG5cXHUwMDBiXFxmXFxyXFx1MDAwZVxcdTAwMGZcXHUwMDEwXFx1MDAxMVxcdTAwMTJcXHUwMDEzXFx1MDAxNFxcdTAwMTVcXHUwMDE2XFx1MDAxN1xcdTAwMThcXHUwMDE5XFx1MDAxYVxcdTAwMWJcXHUwMDFjXFx1MDAxZFxcdTAwMWVcXHUwMDFmICFcXFwiIyTZqiYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f8KwwrfiiJniiJrilpLilIDilILilLzilKTilKzilJzilLTilJDilIzilJTilJjOsuKIns+GwrHCvcK84omIwqvCu++7t++7uO+/ve+/ve+7u++7vO+/vcKgwq3vuoLCo8Kk77qE77+977+977qO77qP77qV77qZ2Izvup3vuqHvuqXZoNmh2aLZo9mk2aXZptmn2ajZqe+7kdib77qx77q177q52J/Cou+6gO+6ge+6g++6he+7iu+6i++6je+6ke+6k++6l++6m++6n++6o++6p++6qe+6q++6re+6r++6s++6t++6u++6v++7ge+7he+7i++7j8KmwqzDt8OX77uJ2YDvu5Pvu5fvu5vvu5/vu6Pvu6fvu6vvu63vu6/vu7Pvur3vu4zvu47vu43vu6Hvub3Zke+7pe+7qe+7rO+7sO+7su+7kO+7le+7te+7tu+7ne+7me+7seKWoO+/vVwiXG4gIH0sXG4gIFwiaWJtODY0XCI6IFwiY3A4NjRcIixcbiAgXCJjc2libTg2NFwiOiBcImNwODY0XCIsXG4gIFwiY3A4NjVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOHw7zDqcOiw6TDoMOlw6fDqsOrw6jDr8Ouw6zDhMOFw4nDpsOGw7TDtsOyw7vDucO/w5bDnMO4wqPDmOKCp8aSw6HDrcOzw7rDscORwqrCusK/4oyQwqzCvcK8wqHCq8Kk4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paAzrHDn86Tz4DOo8+DwrXPhM6mzpjOqc604oiez4bOteKIqeKJocKx4oml4omk4oyg4oyhw7fiiYjCsOKImcK34oia4oG/wrLilqDCoFwiXG4gIH0sXG4gIFwiaWJtODY1XCI6IFwiY3A4NjVcIixcbiAgXCJjc2libTg2NVwiOiBcImNwODY1XCIsXG4gIFwiY3A4NjZcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItCQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgNGA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGP0IHRkdCE0ZTQh9GX0I7RnsKw4oiZwrfiiJrihJbCpOKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjZcIjogXCJjcDg2NlwiLFxuICBcImNzaWJtODY2XCI6IFwiY3A4NjZcIixcbiAgXCJjcDg2OVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi77+977+977+977+977+977+9zobvv73Ct8KswqbigJjigJnOiOKAlc6JzorOqs6M77+977+9zo7Oq8Kpzo/CssKzzqzCo86tzq7Or8+KzpDPjM+NzpHOks6TzpTOlc6WzpfCvc6YzpnCq8K74paR4paS4paT4pSC4pSkzprOm86czp3ilaPilZHilZfilZ3Ons6f4pSQ4pSU4pS04pSs4pSc4pSA4pS8zqDOoeKVmuKVlOKVqeKVpuKVoOKVkOKVrM6jzqTOpc6mzqfOqM6pzrHOss6z4pSY4pSM4paI4paEzrTOteKWgM62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Dz4LPhM6Ewq3Csc+Fz4bPh8Knz4jOhcKwwqjPic+LzrDPjuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjlcIjogXCJjcDg2OVwiLFxuICBcImNzaWJtODY5XCI6IFwiY3A4NjlcIixcbiAgXCJjcDkyMlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CruKAvsKwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/FoMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdxb3Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvxaHDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcW+w79cIlxuICB9LFxuICBcImlibTkyMlwiOiBcImNwOTIyXCIsXG4gIFwiY3NpYm05MjJcIjogXCJjcDkyMlwiLFxuICBcImNwMTA0NlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi77qIw5fDt++jtu+jte+jtO+jt++5scKI4pag4pSC4pSA4pSQ4pSM4pSU4pSY77m577m777m977m/77m377qK77uw77uz77uy77uO77uP77uQ77u277u477u677u8wqDvo7rvo7nvo7jCpO+ju++6i++6ke+6l++6m++6n++6o9iMwq3vuqfvurPZoNmh2aLZo9mk2aXZptmn2ajZqe+6t9ib77q777q/77uK2J/vu4vYodii2KPYpNil2KbYp9io2KnYqtir2KzYrdiu2K/YsNix2LLYs9i02LXYtti377uH2LnYuu+7jO+6gu+6hO+6ju+7k9mA2YHZgtmD2YTZhdmG2YfZiNmJ2YrZi9mM2Y3ZjtmP2ZDZkdmS77uX77ub77uf76O877u177u377u577u777uj77un77us77up77+9XCJcbiAgfSxcbiAgXCJpYm0xMDQ2XCI6IFwiY3AxMDQ2XCIsXG4gIFwiY3NpYm0xMDQ2XCI6IFwiY3AxMDQ2XCIsXG4gIFwiY3AxMTI0XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDQgdCC0pDQhNCF0IbQh9CI0InQitCL0IzCrdCO0I/QkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj+KEltGR0ZLSkdGU0ZXRltGX0ZjRmdGa0ZvRnMKn0Z7Rn1wiXG4gIH0sXG4gIFwiaWJtMTEyNFwiOiBcImNwMTEyNFwiLFxuICBcImNzaWJtMTEyNFwiOiBcImNwMTEyNFwiLFxuICBcImNwMTEyNVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paA0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/QgdGR0pDSkdCE0ZTQhtGW0IfRl8K34oia4oSWwqTilqDCoFwiXG4gIH0sXG4gIFwiaWJtMTEyNVwiOiBcImNwMTEyNVwiLFxuICBcImNzaWJtMTEyNVwiOiBcImNwMTEyNVwiLFxuICBcImNwMTEyOVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwqHCosKjwqTCpcKmwqfFk8KpwqrCq8Kswq3CrsKvwrDCscKywrPFuMK1wrbCt8WSwrnCusK7wrzCvcK+wr/DgMOBw4LEgsOEw4XDhsOHw4jDicOKw4vMgMONw47Dj8SQw5HMicOTw5TGoMOWw5fDmMOZw5rDm8Ocxq/Mg8Ofw6DDocOixIPDpMOlw6bDp8Oow6nDqsOrzIHDrcOuw6/EkcOxzKPDs8O0xqHDtsO3w7jDucO6w7vDvMaw4oKrw79cIlxuICB9LFxuICBcImlibTExMjlcIjogXCJjcDExMjlcIixcbiAgXCJjc2libTExMjlcIjogXCJjcDExMjlcIixcbiAgXCJjcDExMzNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOC6geC6guC6hOC6h+C6iOC6quC6iuC6jeC6lOC6leC6luC6l+C6meC6muC6m+C6nOC6neC6nuC6n+C6oeC6ouC6o+C6peC6p+C6q+C6reC6ru+/ve+/ve+/veC6r+C6sOC6suC6s+C6tOC6teC6tuC6t+C6uOC6ueC6vOC6seC6u+C6ve+/ve+/ve+/veC7gOC7geC7guC7g+C7hOC7iOC7ieC7iuC7i+C7jOC7jeC7hu+/veC7nOC7neKCre+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veC7kOC7keC7kuC7k+C7lOC7leC7luC7l+C7mOC7me+/ve+/vcKiwqzCpu+/vVwiXG4gIH0sXG4gIFwiaWJtMTEzM1wiOiBcImNwMTEzM1wiLFxuICBcImNzaWJtMTEzM1wiOiBcImNwMTEzM1wiLFxuICBcImNwMTE2MVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+94LmI4LiB4LiC4LiD4LiE4LiF4LiG4LiH4LiI4LiJ4LiK4LiL4LiM4LiN4LiO4LiP4LiQ4LiR4LiS4LiT4LiU4LiV4LiW4LiX4LiY4LiZ4Lia4Lib4Lic4Lid4Lie4Lif4Lig4Lih4Lii4Lij4Lik4Lil4Lim4Lin4Lio4Lip4Liq4Lir4Lis4Lit4Liu4Liv4Liw4Lix4Liy4Liz4Li04Li14Li24Li34Li44Li54Li64LmJ4LmK4LmL4oKs4Li/4LmA4LmB4LmC4LmD4LmE4LmF4LmG4LmH4LmI4LmJ4LmK4LmL4LmM4LmN4LmO4LmP4LmQ4LmR4LmS4LmT4LmU4LmV4LmW4LmX4LmY4LmZ4Lma4LmbwqLCrMKmwqBcIlxuICB9LFxuICBcImlibTExNjFcIjogXCJjcDExNjFcIixcbiAgXCJjc2libTExNjFcIjogXCJjcDExNjFcIixcbiAgXCJjcDExNjJcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKCrMKBwoLCg8KE4oCmwobCh8KIwonCisKLwozCjcKOwo/CkOKAmOKAmeKAnOKAneKAouKAk+KAlMKYwpnCmsKbwpzCncKewp/CoOC4geC4guC4g+C4hOC4heC4huC4h+C4iOC4ieC4iuC4i+C4jOC4jeC4juC4j+C4kOC4keC4kuC4k+C4lOC4leC4luC4l+C4mOC4meC4muC4m+C4nOC4neC4nuC4n+C4oOC4oeC4ouC4o+C4pOC4peC4puC4p+C4qOC4qeC4quC4q+C4rOC4reC4ruC4r+C4sOC4seC4suC4s+C4tOC4teC4tuC4t+C4uOC4ueC4uu+/ve+/ve+/ve+/veC4v+C5gOC5geC5guC5g+C5hOC5heC5huC5h+C5iOC5ieC5iuC5i+C5jOC5jeC5juC5j+C5kOC5keC5kuC5k+C5lOC5leC5luC5l+C5mOC5meC5muC5m++/ve+/ve+/ve+/vVwiXG4gIH0sXG4gIFwiaWJtMTE2MlwiOiBcImNwMTE2MlwiLFxuICBcImNzaWJtMTE2MlwiOiBcImNwMTE2MlwiLFxuICBcImNwMTE2M1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwqHCosKj4oKswqXCpsKnxZPCqcKqwqvCrMKtwq7Cr8KwwrHCssKzxbjCtcK2wrfFksK5wrrCu8K8wr3CvsK/w4DDgcOCxILDhMOFw4bDh8OIw4nDisOLzIDDjcOOw4/EkMORzInDk8OUxqDDlsOXw5jDmcOaw5vDnMavzIPDn8Ogw6HDosSDw6TDpcOmw6fDqMOpw6rDq8yBw63DrsOvxJHDscyjw7PDtMahw7bDt8O4w7nDusO7w7zGsOKCq8O/XCJcbiAgfSxcbiAgXCJpYm0xMTYzXCI6IFwiY3AxMTYzXCIsXG4gIFwiY3NpYm0xMTYzXCI6IFwiY3AxMTYzXCIsXG4gIFwibWFjY3JvYXRpYW5cIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsWg4oSiwrTCqOKJoMW9w5jiiJ7CseKJpOKJpeKIhsK14oiC4oiR4oiPxaHiiKvCqsK64oSmxb7DuMK/wqHCrOKImsaS4omIxIbCq8SM4oCmwqDDgMODw5XFksWTxJDigJTigJzigJ3igJjigJnDt+KXiu+/vcKp4oGEwqTigLnigLrDhsK74oCTwrfigJrigJ7igLDDgsSHw4HEjcOIw43DjsOPw4zDk8OUxJHDksOaw5vDmcSxy4bLnMKvz4DDi8uawrjDisOmy4dcIlxuICB9LFxuICBcIm1hY2N5cmlsbGljXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv4oCgwrDCosKjwqfigKLCttCGwq7CqeKEotCC0ZLiiaDQg9GT4oiewrHiiaTiiaXRlsK14oiC0IjQhNGU0IfRl9CJ0ZnQitGa0ZjQhcKs4oiaxpLiiYjiiIbCq8K74oCmwqDQi9Gb0IzRnNGV4oCT4oCU4oCc4oCd4oCY4oCZw7figJ7QjtGe0I/Rn+KEltCB0ZHRj9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGOwqRcIlxuICB9LFxuICBcIm1hY2dyZWVrXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDhMK5wrLDicKzw5bDnM6Fw6DDosOkzoTCqMOnw6nDqMOqw6vCo+KEosOuw6/igKLCveKAsMO0w7bCpsKtw7nDu8O84oCgzpPOlM6YzpvOns6gw5/CrsKpzqPOqsKn4omgwrDOh86RwrHiiaTiiaXCpc6SzpXOls6XzpnOms6czqbOq86ozqnOrM6dwqzOn86h4omIzqTCq8K74oCmwqDOpc6nzobOiMWT4oCT4oCV4oCc4oCd4oCY4oCZw7fOic6KzozOjs6tzq7Or8+Mzo/Pjc6xzrLPiM60zrXPhs6zzrfOuc6+zrrOu868zr3Ov8+Az47Pgc+Dz4TOuM+Jz4LPh8+FzrbPis+LzpDOsO+/vVwiXG4gIH0sXG4gIFwibWFjaWNlbGFuZFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvMOdwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDDhsOY4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK64oSmw6bDuMK/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuOKBhMKkw5DDsMOew77DvcK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLh1wiXG4gIH0sXG4gIFwibWFjcm9tYW5cIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMOGw5jiiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbDpsO4wr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGEwqTigLnigLrvrIHvrILigKHCt+KAmuKAnuKAsMOCw4rDgcOLw4jDjcOOw4/DjMOTw5Tvv73DksOaw5vDmcSxy4bLnMKvy5jLmcuawrjLncuby4dcIlxuICB9LFxuICBcIm1hY3JvbWFuaWFcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMSCxZ7iiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbEg8Wfwr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGEwqTigLnigLrFosWj4oChwrfigJrigJ7igLDDgsOKw4HDi8OIw43DjsOPw4zDk8OU77+9w5LDmsObw5nEscuGy5zCr8uYy5nLmsK4y53Lm8uHXCJcbiAgfSxcbiAgXCJtYWN0aGFpXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCq8K74oCm76KM76KP76KS76KV76KY76KL76KO76KR76KU76KX4oCc4oCd76KZ77+94oCi76KE76KJ76KF76KG76KH76KI76KK76KN76KQ76KT76KW4oCY4oCZ77+9wqDguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrvu7/igIvigJPigJTguL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3ihKLguY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnCrsKp77+977+977+977+9XCJcbiAgfSxcbiAgXCJtYWN0dXJraXNoXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDDhsOY4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK64oSmw6bDuMK/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuMSexJ/EsMSxxZ7Fn+KAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZ77+9y4bLnMKvy5jLmcuawrjLncuby4dcIlxuICB9LFxuICBcIm1hY3VrcmFpbmVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItCQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/igKDCsNKQwqPCp+KAosK20IbCrsKp4oSi0ILRkuKJoNCD0ZPiiJ7CseKJpOKJpdGWwrXSkdCI0ITRlNCH0ZfQidGZ0IrRmtGY0IXCrOKImsaS4omI4oiGwqvCu+KApsKg0IvRm9CM0ZzRleKAk+KAlOKAnOKAneKAmOKAmcO34oCe0I7RntCP0Z/ihJbQgdGR0Y/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjsKkXCJcbiAgfSxcbiAgXCJrb2k4clwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4pSA4pSC4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84paA4paE4paI4paM4paQ4paR4paS4paT4oyg4pag4oiZ4oia4omI4omk4omlwqDijKHCsMKywrfDt+KVkOKVkeKVktGR4pWT4pWU4pWV4pWW4pWX4pWY4pWZ4pWa4pWb4pWc4pWd4pWe4pWf4pWg4pWh0IHilaLilaPilaTilaXilabilafilajilanilarilavilazCqdGO0LDQsdGG0LTQtdGE0LPRhdC40LnQutC70LzQvdC+0L/Rj9GA0YHRgtGD0LbQstGM0YvQt9GI0Y3RidGH0YrQrtCQ0JHQptCU0JXQpNCT0KXQmNCZ0JrQm9Cc0J3QntCf0K/QoNCh0KLQo9CW0JLQrNCr0JfQqNCt0KnQp9CqXCJcbiAgfSxcbiAgXCJrb2k4dVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4pSA4pSC4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84paA4paE4paI4paM4paQ4paR4paS4paT4oyg4pag4oiZ4oia4omI4omk4omlwqDijKHCsMKywrfDt+KVkOKVkeKVktGR0ZTilZTRltGX4pWX4pWY4pWZ4pWa4pWb0pHilZ3ilZ7ilZ/ilaDilaHQgdCE4pWj0IbQh+KVpuKVp+KVqOKVqeKVqtKQ4pWswqnRjtCw0LHRhtC00LXRhNCz0YXQuNC50LrQu9C80L3QvtC/0Y/RgNGB0YLRg9C20LLRjNGL0LfRiNGN0YnRh9GK0K7QkNCR0KbQlNCV0KTQk9Cl0JjQmdCa0JvQnNCd0J7Qn9Cv0KDQodCi0KPQltCS0KzQq9CX0KjQrdCp0KfQqlwiXG4gIH0sXG4gIFwia29pOHJ1XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLilIDilILilIzilJDilJTilJjilJzilKTilKzilLTilLziloDiloTilojilozilpDilpHilpLilpPijKDilqDiiJniiJriiYjiiaTiiaXCoOKMocKwwrLCt8O34pWQ4pWR4pWS0ZHRlOKVlNGW0ZfilZfilZjilZnilZrilZvSkdGe4pWe4pWf4pWg4pWh0IHQhOKVo9CG0IfilabilafilajilanilarSkNCOwqnRjtCw0LHRhtC00LXRhNCz0YXQuNC50LrQu9C80L3QvtC/0Y/RgNGB0YLRg9C20LLRjNGL0LfRiNGN0YnRh9GK0K7QkNCR0KbQlNCV0KTQk9Cl0JjQmdCa0JvQnNCd0J7Qn9Cv0KDQodCi0KPQltCS0KzQq9CX0KjQrdCp0KfQqlwiXG4gIH0sXG4gIFwia29pOHRcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItKb0pPigJrSkuKAnuKApuKAoOKAoe+/veKAsNKz4oC50rLSt9K277+90prigJjigJnigJzigJ3igKLigJPigJTvv73ihKLvv73igLrvv73vv73vv73vv73vv73Tr9Ou0ZHCpNOjwqbCp++/ve+/ve+/vcKrwqzCrcKu77+9wrDCscKy0IHvv73TosK2wrfvv73ihJbvv73Cu++/ve+/ve+/vcKp0Y7QsNCx0YbQtNC10YTQs9GF0LjQudC60LvQvNC90L7Qv9GP0YDRgdGC0YPQttCy0YzRi9C30YjRjdGJ0YfRitCu0JDQkdCm0JTQldCk0JPQpdCY0JnQmtCb0JzQndCe0J/Qr9Cg0KHQotCj0JbQktCs0KvQl9Co0K3QqdCn0KpcIlxuICB9LFxuICBcImFybXNjaWk4XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDvv73Wh9aJKSjCu8Kr4oCULtWdLC3WiuKAptWc1ZvVntSx1aHUstWi1LPVo9S01aTUtdWl1LbVptS31afUuNWo1LnVqdS61arUu9Wr1LzVrNS91a3UvtWu1L/Vr9WA1bDVgdWx1YLVstWD1bPVhNW01YXVtdWG1bbVh9W31YjVuNWJ1bnVitW61YvVu9WM1bzVjdW91Y7VvtWP1b/VkNaA1ZHWgdWS1oLVk9aD1ZTWhNWV1oXVltaG1Zrvv71cIlxuICB9LFxuICBcInJrMTA0OFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi0ILQg+KAmtGT4oCe4oCm4oCg4oCh4oKs4oCw0InigLnQitKa0rrQj9GS4oCY4oCZ4oCc4oCd4oCi4oCT4oCU77+94oSi0ZnigLrRmtKb0rvRn8Kg0rDSsdOYwqTTqMKmwqfQgcKp0pLCq8Kswq3CrtKuwrDCsdCG0ZbTqcK1wrbCt9GR4oSW0pPCu9OZ0qLSo9Kv0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y9cIlxuICB9LFxuICBcInRjdm5cIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIlxcdTAwMDDDmuG7pFxcdTAwMDPhu6rhu6zhu65cXHUwMDA3XFxiXFx0XFxuXFx1MDAwYlxcZlxcclxcdTAwMGVcXHUwMDBmXFx1MDAxMOG7qOG7sOG7suG7tuG7uMOd4bu0XFx1MDAxOFxcdTAwMTlcXHUwMDFhXFx1MDAxYlxcdTAwMWNcXHUwMDFkXFx1MDAxZVxcdTAwMWYgIVxcXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXFxcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn/DgOG6osODw4HhuqDhurbhuqzDiOG6uuG6vMOJ4bq44buGw4zhu4jEqMON4buKw5Lhu47DlcOT4buM4buY4buc4bue4bug4bua4buiw5nhu6bFqMKgxILDgsOKw5TGoMavxJDEg8Oiw6rDtMahxrDEkeG6sMyAzInMg8yBzKPDoOG6o8Ojw6HhuqHhurLhurHhurPhurXhuq/hurThuq7huqbhuqjhuqrhuqThu4DhurfhuqfhuqnhuqvhuqXhuq3DqOG7guG6u+G6vcOp4bq54buB4buD4buF4bq/4buHw6zhu4nhu4Thur7hu5LEqcOt4buLw7Lhu5Thu4/DtcOz4buN4buT4buV4buX4buR4buZ4bud4buf4buh4bub4bujw7nhu5bhu6fFqcO64bul4bur4but4buv4bup4bux4buz4bu34bu5w73hu7Xhu5BcIlxuICB9LFxuICBcImdlb3JnaWFuYWNhZGVteVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgeKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSwo3CjsKPwpDigJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPCncKexbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/4YOQ4YOR4YOS4YOT4YOU4YOV4YOW4YOX4YOY4YOZ4YOa4YOb4YOc4YOd4YOe4YOf4YOg4YOh4YOi4YOj4YOk4YOl4YOm4YOn4YOo4YOp4YOq4YOr4YOs4YOt4YOu4YOv4YOw4YOx4YOy4YOz4YO04YO14YO2w6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w79cIlxuICB9LFxuICBcImdlb3JnaWFucHNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHigJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFksKNwo7Cj8KQ4oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLFoeKAusWTwp3CnsW4wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv+GDkOGDkeGDkuGDk+GDlOGDleGDluGDseGDl+GDmOGDmeGDmuGDm+GDnOGDsuGDneGDnuGDn+GDoOGDoeGDouGDs+GDo+GDpOGDpeGDpuGDp+GDqOGDqeGDquGDq+GDrOGDreGDruGDtOGDr+GDsOGDtcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w79cIlxuICB9LFxuICBcInB0MTU0XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLSltKS067Sk+KAnuKAptK20q7SstKv0qDTotKi0prSutK40pfigJjigJnigJzigJ3igKLigJPigJTSs9K30qHTo9Kj0pvSu9K5wqDQjtGe0IjTqNKY0rDCp9CBwqnTmMKrwqzTr8Ku0pzCsNKx0IbRltKZ06nCtsK30ZHihJbTmcK70ZjSqtKr0p3QkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj1wiXG4gIH0sXG4gIFwidmlzY2lpXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCJcXHUwMDAwXFx1MDAwMeG6slxcdTAwMDNcXHUwMDA04bq04bqqXFx1MDAwN1xcYlxcdFxcblxcdTAwMGJcXGZcXHJcXHUwMDBlXFx1MDAwZlxcdTAwMTBcXHUwMDExXFx1MDAxMlxcdTAwMTPhu7ZcXHUwMDE1XFx1MDAxNlxcdTAwMTdcXHUwMDE44bu4XFx1MDAxYVxcdTAwMWJcXHUwMDFjXFx1MDAxZOG7tFxcdTAwMWYgIVxcXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXFxcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn/huqDhuq7hurDhurbhuqThuqbhuqjhuqzhurzhurjhur7hu4Dhu4Lhu4Thu4bhu5Dhu5Lhu5Thu5bhu5jhu6Lhu5rhu5zhu57hu4rhu47hu4zhu4jhu6bFqOG7pOG7ssOV4bqv4bqx4bq34bql4bqn4bqp4bqt4bq94bq54bq/4buB4buD4buF4buH4buR4buT4buV4buX4bugxqDhu5nhu53hu5/hu4vhu7Dhu6jhu6rhu6zGoeG7m8avw4DDgcOCw4PhuqLEguG6s+G6tcOIw4nDiuG6usOMw43EqOG7s8SQ4bupw5LDk8OU4bqh4bu34bur4butw5nDmuG7ueG7tcOd4buhxrDDoMOhw6LDo+G6o8SD4buv4bqrw6jDqcOq4bq7w6zDrcSp4buJxJHhu7HDssOzw7TDteG7j+G7jeG7pcO5w7rFqeG7p8O94buj4buuXCJcbiAgfSxcbiAgXCJpc282NDZjblwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiXFx1MDAwMFxcdTAwMDFcXHUwMDAyXFx1MDAwM1xcdTAwMDRcXHUwMDA1XFx1MDAwNlxcdTAwMDdcXGJcXHRcXG5cXHUwMDBiXFxmXFxyXFx1MDAwZVxcdTAwMGZcXHUwMDEwXFx1MDAxMVxcdTAwMTJcXHUwMDEzXFx1MDAxNFxcdTAwMTVcXHUwMDE2XFx1MDAxN1xcdTAwMThcXHUwMDE5XFx1MDAxYVxcdTAwMWJcXHUwMDFjXFx1MDAxZFxcdTAwMWVcXHUwMDFmICFcXFwiI8KlJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH3igL5/77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+9XCJcbiAgfSxcbiAgXCJpc282NDZqcFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiXFx1MDAwMFxcdTAwMDFcXHUwMDAyXFx1MDAwM1xcdTAwMDRcXHUwMDA1XFx1MDAwNlxcdTAwMDdcXGJcXHRcXG5cXHUwMDBiXFxmXFxyXFx1MDAwZVxcdTAwMGZcXHUwMDEwXFx1MDAxMVxcdTAwMTJcXHUwMDEzXFx1MDAxNFxcdTAwMTVcXHUwMDE2XFx1MDAxN1xcdTAwMThcXHUwMDE5XFx1MDAxYVxcdTAwMWJcXHUwMDFjXFx1MDAxZFxcdTAwMWVcXHUwMDFmICFcXFwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbwqVdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH3igL5/77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+9XCJcbiAgfSxcbiAgXCJocHJvbWFuOFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kgw4DDgsOIw4rDi8OOw4/CtMuLy4bCqMucw5nDm+KCpMKvw53DvcKww4fDp8ORw7HCocK/wqTCo8KlwqfGksKiw6LDqsO0w7vDocOpw7PDusOgw6jDssO5w6TDq8O2w7zDhcOuw5jDhsOlw63DuMOmw4TDrMOWw5zDicOvw5/DlMOBw4PDo8OQw7DDjcOMw5PDksOVw7XFoMWhw5rFuMO/w57DvsK3wrXCtsK+4oCUwrzCvcKqwrrCq+KWoMK7wrHvv71cIlxuICB9LFxuICBcIm1hY2ludG9zaFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvOKAoMKwwqLCo8Kn4oCiwrbDn8KuwqnihKLCtMKo4omgw4bDmOKInsKx4omk4omlwqXCteKIguKIkeKIj8+A4oirwqrCuuKEpsOmw7jCv8KhwqziiJrGkuKJiOKIhsKrwrvigKbCoMOAw4PDlcWSxZPigJPigJTigJzigJ3igJjigJnDt+KXisO/xbjigYTCpOKAueKAuu+sge+sguKAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLh1wiXG4gIH0sXG4gIFwiYXNjaWlcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIu+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vVwiXG4gIH0sXG4gIFwidGlzNjIwXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73guIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrvv73vv73vv73vv73guL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvvv73vv73vv73vv71cIlxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3NiY3MtZGF0YS1nZW5lcmF0ZWQuanNcbi8vIG1vZHVsZSBpZCA9IDE0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBCdWZmZXIgPSByZXF1aXJlKFwiYnVmZmVyXCIpLkJ1ZmZlcjtcblxuLy8gTXVsdGlieXRlIGNvZGVjLiBJbiB0aGlzIHNjaGVtZSwgYSBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgYnkgMSBvciBtb3JlIGJ5dGVzLlxuLy8gT3VyIGNvZGVjIHN1cHBvcnRzIFVURi0xNiBzdXJyb2dhdGVzLCBleHRlbnNpb25zIGZvciBHQjE4MDMwIGFuZCB1bmljb2RlIHNlcXVlbmNlcy5cbi8vIFRvIHNhdmUgbWVtb3J5IGFuZCBsb2FkaW5nIHRpbWUsIHdlIHJlYWQgdGFibGUgZmlsZXMgb25seSB3aGVuIHJlcXVlc3RlZC5cblxuZXhwb3J0cy5fZGJjcyA9IERCQ1NDb2RlYztcblxudmFyIFVOQVNTSUdORUQgPSAtMSxcbiAgICBHQjE4MDMwX0NPREUgPSAtMixcbiAgICBTRVFfU1RBUlQgID0gLTEwLFxuICAgIE5PREVfU1RBUlQgPSAtMTAwMCxcbiAgICBVTkFTU0lHTkVEX05PREUgPSBuZXcgQXJyYXkoMHgxMDApLFxuICAgIERFRl9DSEFSID0gLTE7XG5cbmZvciAodmFyIGkgPSAwOyBpIDwgMHgxMDA7IGkrKylcbiAgICBVTkFTU0lHTkVEX05PREVbaV0gPSBVTkFTU0lHTkVEO1xuXG5cbi8vIENsYXNzIERCQ1NDb2RlYyByZWFkcyBhbmQgaW5pdGlhbGl6ZXMgbWFwcGluZyB0YWJsZXMuXG5mdW5jdGlvbiBEQkNTQ29kZWMoY29kZWNPcHRpb25zLCBpY29udikge1xuICAgIHRoaXMuZW5jb2RpbmdOYW1lID0gY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZTtcbiAgICBpZiAoIWNvZGVjT3B0aW9ucylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiREJDUyBjb2RlYyBpcyBjYWxsZWQgd2l0aG91dCB0aGUgZGF0YS5cIilcbiAgICBpZiAoIWNvZGVjT3B0aW9ucy50YWJsZSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRW5jb2RpbmcgJ1wiICsgdGhpcy5lbmNvZGluZ05hbWUgKyBcIicgaGFzIG5vIGRhdGEuXCIpO1xuXG4gICAgLy8gTG9hZCB0YWJsZXMuXG4gICAgdmFyIG1hcHBpbmdUYWJsZSA9IGNvZGVjT3B0aW9ucy50YWJsZSgpO1xuXG5cbiAgICAvLyBEZWNvZGUgdGFibGVzOiBNQkNTIC0+IFVuaWNvZGUuXG5cbiAgICAvLyBkZWNvZGVUYWJsZXMgaXMgYSB0cmllLCBlbmNvZGVkIGFzIGFuIGFycmF5IG9mIGFycmF5cyBvZiBpbnRlZ2Vycy4gSW50ZXJuYWwgYXJyYXlzIGFyZSB0cmllIG5vZGVzIGFuZCBhbGwgaGF2ZSBsZW4gPSAyNTYuXG4gICAgLy8gVHJpZSByb290IGlzIGRlY29kZVRhYmxlc1swXS5cbiAgICAvLyBWYWx1ZXM6ID49ICAwIC0+IHVuaWNvZGUgY2hhcmFjdGVyIGNvZGUuIGNhbiBiZSA+IDB4RkZGRlxuICAgIC8vICAgICAgICAgPT0gVU5BU1NJR05FRCAtPiB1bmtub3duL3VuYXNzaWduZWQgc2VxdWVuY2UuXG4gICAgLy8gICAgICAgICA9PSBHQjE4MDMwX0NPREUgLT4gdGhpcyBpcyB0aGUgZW5kIG9mIGEgR0IxODAzMCA0LWJ5dGUgc2VxdWVuY2UuXG4gICAgLy8gICAgICAgICA8PSBOT0RFX1NUQVJUIC0+IGluZGV4IG9mIHRoZSBuZXh0IG5vZGUgaW4gb3VyIHRyaWUgdG8gcHJvY2VzcyBuZXh0IGJ5dGUuXG4gICAgLy8gICAgICAgICA8PSBTRVFfU1RBUlQgIC0+IGluZGV4IG9mIHRoZSBzdGFydCBvZiBhIGNoYXJhY3RlciBjb2RlIHNlcXVlbmNlLCBpbiBkZWNvZGVUYWJsZVNlcS5cbiAgICB0aGlzLmRlY29kZVRhYmxlcyA9IFtdO1xuICAgIHRoaXMuZGVjb2RlVGFibGVzWzBdID0gVU5BU1NJR05FRF9OT0RFLnNsaWNlKDApOyAvLyBDcmVhdGUgcm9vdCBub2RlLlxuXG4gICAgLy8gU29tZXRpbWVzIGEgTUJDUyBjaGFyIGNvcnJlc3BvbmRzIHRvIGEgc2VxdWVuY2Ugb2YgdW5pY29kZSBjaGFycy4gV2Ugc3RvcmUgdGhlbSBhcyBhcnJheXMgb2YgaW50ZWdlcnMgaGVyZS4gXG4gICAgdGhpcy5kZWNvZGVUYWJsZVNlcSA9IFtdO1xuXG4gICAgLy8gQWN0dWFsIG1hcHBpbmcgdGFibGVzIGNvbnNpc3Qgb2YgY2h1bmtzLiBVc2UgdGhlbSB0byBmaWxsIHVwIGRlY29kZSB0YWJsZXMuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXBwaW5nVGFibGUubGVuZ3RoOyBpKyspXG4gICAgICAgIHRoaXMuX2FkZERlY29kZUNodW5rKG1hcHBpbmdUYWJsZVtpXSk7XG5cbiAgICB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZSA9IGljb252LmRlZmF1bHRDaGFyVW5pY29kZTtcblxuICAgIFxuICAgIC8vIEVuY29kZSB0YWJsZXM6IFVuaWNvZGUgLT4gREJDUy5cblxuICAgIC8vIGBlbmNvZGVUYWJsZWAgaXMgYXJyYXkgbWFwcGluZyBmcm9tIHVuaWNvZGUgY2hhciB0byBlbmNvZGVkIGNoYXIuIEFsbCBpdHMgdmFsdWVzIGFyZSBpbnRlZ2VycyBmb3IgcGVyZm9ybWFuY2UuXG4gICAgLy8gQmVjYXVzZSBpdCBjYW4gYmUgc3BhcnNlLCBpdCBpcyByZXByZXNlbnRlZCBhcyBhcnJheSBvZiBidWNrZXRzIGJ5IDI1NiBjaGFycyBlYWNoLiBCdWNrZXQgY2FuIGJlIG51bGwuXG4gICAgLy8gVmFsdWVzOiA+PSAgMCAtPiBpdCBpcyBhIG5vcm1hbCBjaGFyLiBXcml0ZSB0aGUgdmFsdWUgKGlmIDw9MjU2IHRoZW4gMSBieXRlLCBpZiA8PTY1NTM2IHRoZW4gMiBieXRlcywgZXRjLikuXG4gICAgLy8gICAgICAgICA9PSBVTkFTU0lHTkVEIC0+IG5vIGNvbnZlcnNpb24gZm91bmQuIE91dHB1dCBhIGRlZmF1bHQgY2hhci5cbiAgICAvLyAgICAgICAgIDw9IFNFUV9TVEFSVCAgLT4gaXQncyBhbiBpbmRleCBpbiBlbmNvZGVUYWJsZVNlcSwgc2VlIGJlbG93LiBUaGUgY2hhcmFjdGVyIHN0YXJ0cyBhIHNlcXVlbmNlLlxuICAgIHRoaXMuZW5jb2RlVGFibGUgPSBbXTtcbiAgICBcbiAgICAvLyBgZW5jb2RlVGFibGVTZXFgIGlzIHVzZWQgd2hlbiBhIHNlcXVlbmNlIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpcyBlbmNvZGVkIGFzIGEgc2luZ2xlIGNvZGUuIFdlIHVzZSBhIHRyZWUgb2ZcbiAgICAvLyBvYmplY3RzIHdoZXJlIGtleXMgY29ycmVzcG9uZCB0byBjaGFyYWN0ZXJzIGluIHNlcXVlbmNlIGFuZCBsZWFmcyBhcmUgdGhlIGVuY29kZWQgZGJjcyB2YWx1ZXMuIEEgc3BlY2lhbCBERUZfQ0hBUiBrZXlcbiAgICAvLyBtZWFucyBlbmQgb2Ygc2VxdWVuY2UgKG5lZWRlZCB3aGVuIG9uZSBzZXF1ZW5jZSBpcyBhIHN0cmljdCBzdWJzZXF1ZW5jZSBvZiBhbm90aGVyKS5cbiAgICAvLyBPYmplY3RzIGFyZSBrZXB0IHNlcGFyYXRlbHkgZnJvbSBlbmNvZGVUYWJsZSB0byBpbmNyZWFzZSBwZXJmb3JtYW5jZS5cbiAgICB0aGlzLmVuY29kZVRhYmxlU2VxID0gW107XG5cbiAgICAvLyBTb21lIGNoYXJzIGNhbiBiZSBkZWNvZGVkLCBidXQgbmVlZCBub3QgYmUgZW5jb2RlZC5cbiAgICB2YXIgc2tpcEVuY29kZUNoYXJzID0ge307XG4gICAgaWYgKGNvZGVjT3B0aW9ucy5lbmNvZGVTa2lwVmFscylcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlY09wdGlvbnMuZW5jb2RlU2tpcFZhbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB2YWwgPSBjb2RlY09wdGlvbnMuZW5jb2RlU2tpcFZhbHNbaV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgc2tpcEVuY29kZUNoYXJzW3ZhbF0gPSB0cnVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSB2YWwuZnJvbTsgaiA8PSB2YWwudG87IGorKylcbiAgICAgICAgICAgICAgICAgICAgc2tpcEVuY29kZUNoYXJzW2pdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAvLyBVc2UgZGVjb2RlIHRyaWUgdG8gcmVjdXJzaXZlbHkgZmlsbCBvdXQgZW5jb2RlIHRhYmxlcy5cbiAgICB0aGlzLl9maWxsRW5jb2RlVGFibGUoMCwgMCwgc2tpcEVuY29kZUNoYXJzKTtcblxuICAgIC8vIEFkZCBtb3JlIGVuY29kaW5nIHBhaXJzIHdoZW4gbmVlZGVkLlxuICAgIGlmIChjb2RlY09wdGlvbnMuZW5jb2RlQWRkKSB7XG4gICAgICAgIGZvciAodmFyIHVDaGFyIGluIGNvZGVjT3B0aW9ucy5lbmNvZGVBZGQpXG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvZGVjT3B0aW9ucy5lbmNvZGVBZGQsIHVDaGFyKSlcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXRFbmNvZGVDaGFyKHVDaGFyLmNoYXJDb2RlQXQoMCksIGNvZGVjT3B0aW9ucy5lbmNvZGVBZGRbdUNoYXJdKTtcbiAgICB9XG5cbiAgICB0aGlzLmRlZkNoYXJTQiAgPSB0aGlzLmVuY29kZVRhYmxlWzBdW2ljb252LmRlZmF1bHRDaGFyU2luZ2xlQnl0ZS5jaGFyQ29kZUF0KDApXTtcbiAgICBpZiAodGhpcy5kZWZDaGFyU0IgPT09IFVOQVNTSUdORUQpIHRoaXMuZGVmQ2hhclNCID0gdGhpcy5lbmNvZGVUYWJsZVswXVsnPyddO1xuICAgIGlmICh0aGlzLmRlZkNoYXJTQiA9PT0gVU5BU1NJR05FRCkgdGhpcy5kZWZDaGFyU0IgPSBcIj9cIi5jaGFyQ29kZUF0KDApO1xuXG5cbiAgICAvLyBMb2FkICYgY3JlYXRlIEdCMTgwMzAgdGFibGVzIHdoZW4gbmVlZGVkLlxuICAgIGlmICh0eXBlb2YgY29kZWNPcHRpb25zLmdiMTgwMzAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5nYjE4MDMwID0gY29kZWNPcHRpb25zLmdiMTgwMzAoKTsgLy8gTG9hZCBHQjE4MDMwIHJhbmdlcy5cblxuICAgICAgICAvLyBBZGQgR0IxODAzMCBkZWNvZGUgdGFibGVzLlxuICAgICAgICB2YXIgdGhpcmRCeXRlTm9kZUlkeCA9IHRoaXMuZGVjb2RlVGFibGVzLmxlbmd0aDtcbiAgICAgICAgdmFyIHRoaXJkQnl0ZU5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1t0aGlyZEJ5dGVOb2RlSWR4XSA9IFVOQVNTSUdORURfTk9ERS5zbGljZSgwKTtcblxuICAgICAgICB2YXIgZm91cnRoQnl0ZU5vZGVJZHggPSB0aGlzLmRlY29kZVRhYmxlcy5sZW5ndGg7XG4gICAgICAgIHZhciBmb3VydGhCeXRlTm9kZSA9IHRoaXMuZGVjb2RlVGFibGVzW2ZvdXJ0aEJ5dGVOb2RlSWR4XSA9IFVOQVNTSUdORURfTk9ERS5zbGljZSgwKTtcblxuICAgICAgICBmb3IgKHZhciBpID0gMHg4MTsgaSA8PSAweEZFOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBzZWNvbmRCeXRlTm9kZUlkeCA9IE5PREVfU1RBUlQgLSB0aGlzLmRlY29kZVRhYmxlc1swXVtpXTtcbiAgICAgICAgICAgIHZhciBzZWNvbmRCeXRlTm9kZSA9IHRoaXMuZGVjb2RlVGFibGVzW3NlY29uZEJ5dGVOb2RlSWR4XTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAweDMwOyBqIDw9IDB4Mzk7IGorKylcbiAgICAgICAgICAgICAgICBzZWNvbmRCeXRlTm9kZVtqXSA9IE5PREVfU1RBUlQgLSB0aGlyZEJ5dGVOb2RlSWR4O1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAweDgxOyBpIDw9IDB4RkU7IGkrKylcbiAgICAgICAgICAgIHRoaXJkQnl0ZU5vZGVbaV0gPSBOT0RFX1NUQVJUIC0gZm91cnRoQnl0ZU5vZGVJZHg7XG4gICAgICAgIGZvciAodmFyIGkgPSAweDMwOyBpIDw9IDB4Mzk7IGkrKylcbiAgICAgICAgICAgIGZvdXJ0aEJ5dGVOb2RlW2ldID0gR0IxODAzMF9DT0RFXG4gICAgfSAgICAgICAgXG59XG5cbkRCQ1NDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IERCQ1NFbmNvZGVyO1xuREJDU0NvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gREJDU0RlY29kZXI7XG5cbi8vIERlY29kZXIgaGVscGVyc1xuREJDU0NvZGVjLnByb3RvdHlwZS5fZ2V0RGVjb2RlVHJpZU5vZGUgPSBmdW5jdGlvbihhZGRyKSB7XG4gICAgdmFyIGJ5dGVzID0gW107XG4gICAgZm9yICg7IGFkZHIgPiAwOyBhZGRyID4+PSA4KVxuICAgICAgICBieXRlcy5wdXNoKGFkZHIgJiAweEZGKTtcbiAgICBpZiAoYnl0ZXMubGVuZ3RoID09IDApXG4gICAgICAgIGJ5dGVzLnB1c2goMCk7XG5cbiAgICB2YXIgbm9kZSA9IHRoaXMuZGVjb2RlVGFibGVzWzBdO1xuICAgIGZvciAodmFyIGkgPSBieXRlcy5sZW5ndGgtMTsgaSA+IDA7IGktLSkgeyAvLyBUcmF2ZXJzZSBub2RlcyBkZWVwZXIgaW50byB0aGUgdHJpZS5cbiAgICAgICAgdmFyIHZhbCA9IG5vZGVbYnl0ZXNbaV1dO1xuXG4gICAgICAgIGlmICh2YWwgPT0gVU5BU1NJR05FRCkgeyAvLyBDcmVhdGUgbmV3IG5vZGUuXG4gICAgICAgICAgICBub2RlW2J5dGVzW2ldXSA9IE5PREVfU1RBUlQgLSB0aGlzLmRlY29kZVRhYmxlcy5sZW5ndGg7XG4gICAgICAgICAgICB0aGlzLmRlY29kZVRhYmxlcy5wdXNoKG5vZGUgPSBVTkFTU0lHTkVEX05PREUuc2xpY2UoMCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCA8PSBOT0RFX1NUQVJUKSB7IC8vIEV4aXN0aW5nIG5vZGUuXG4gICAgICAgICAgICBub2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbTk9ERV9TVEFSVCAtIHZhbF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiT3ZlcndyaXRlIGJ5dGUgaW4gXCIgKyB0aGlzLmVuY29kaW5nTmFtZSArIFwiLCBhZGRyOiBcIiArIGFkZHIudG9TdHJpbmcoMTYpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG59XG5cblxuREJDU0NvZGVjLnByb3RvdHlwZS5fYWRkRGVjb2RlQ2h1bmsgPSBmdW5jdGlvbihjaHVuaykge1xuICAgIC8vIEZpcnN0IGVsZW1lbnQgb2YgY2h1bmsgaXMgdGhlIGhleCBtYmNzIGNvZGUgd2hlcmUgd2Ugc3RhcnQuXG4gICAgdmFyIGN1ckFkZHIgPSBwYXJzZUludChjaHVua1swXSwgMTYpO1xuXG4gICAgLy8gQ2hvb3NlIHRoZSBkZWNvZGluZyBub2RlIHdoZXJlIHdlJ2xsIHdyaXRlIG91ciBjaGFycy5cbiAgICB2YXIgd3JpdGVUYWJsZSA9IHRoaXMuX2dldERlY29kZVRyaWVOb2RlKGN1ckFkZHIpO1xuICAgIGN1ckFkZHIgPSBjdXJBZGRyICYgMHhGRjtcblxuICAgIC8vIFdyaXRlIGFsbCBvdGhlciBlbGVtZW50cyBvZiB0aGUgY2h1bmsgdG8gdGhlIHRhYmxlLlxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgY2h1bmsubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIHBhcnQgPSBjaHVua1trXTtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXJ0ID09PSBcInN0cmluZ1wiKSB7IC8vIFN0cmluZywgd3JpdGUgYXMtaXMuXG4gICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IHBhcnQubGVuZ3RoOykge1xuICAgICAgICAgICAgICAgIHZhciBjb2RlID0gcGFydC5jaGFyQ29kZUF0KGwrKyk7XG4gICAgICAgICAgICAgICAgaWYgKDB4RDgwMCA8PSBjb2RlICYmIGNvZGUgPCAweERDMDApIHsgLy8gRGVjb2RlIHN1cnJvZ2F0ZVxuICAgICAgICAgICAgICAgICAgICB2YXIgY29kZVRyYWlsID0gcGFydC5jaGFyQ29kZUF0KGwrKyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICgweERDMDAgPD0gY29kZVRyYWlsICYmIGNvZGVUcmFpbCA8IDB4RTAwMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IDB4MTAwMDAgKyAoY29kZSAtIDB4RDgwMCkgKiAweDQwMCArIChjb2RlVHJhaWwgLSAweERDMDApO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbmNvcnJlY3Qgc3Vycm9nYXRlIHBhaXIgaW4gXCIgICsgdGhpcy5lbmNvZGluZ05hbWUgKyBcIiBhdCBjaHVuayBcIiArIGNodW5rWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoMHgwRkYwIDwgY29kZSAmJiBjb2RlIDw9IDB4MEZGRikgeyAvLyBDaGFyYWN0ZXIgc2VxdWVuY2UgKG91ciBvd24gZW5jb2RpbmcgdXNlZClcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IDB4RkZGIC0gY29kZSArIDI7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZXEgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbSA9IDA7IG0gPCBsZW47IG0rKylcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcS5wdXNoKHBhcnQuY2hhckNvZGVBdChsKyspKTsgLy8gU2ltcGxlIHZhcmlhdGlvbjogZG9uJ3Qgc3VwcG9ydCBzdXJyb2dhdGVzIG9yIHN1YnNlcXVlbmNlcyBpbiBzZXEuXG5cbiAgICAgICAgICAgICAgICAgICAgd3JpdGVUYWJsZVtjdXJBZGRyKytdID0gU0VRX1NUQVJUIC0gdGhpcy5kZWNvZGVUYWJsZVNlcS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjb2RlVGFibGVTZXEucHVzaChzZXEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IGNvZGU7IC8vIEJhc2ljIGNoYXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBhcnQgPT09IFwibnVtYmVyXCIpIHsgLy8gSW50ZWdlciwgbWVhbmluZyBpbmNyZWFzaW5nIHNlcXVlbmNlIHN0YXJ0aW5nIHdpdGggcHJldiBjaGFyYWN0ZXIuXG4gICAgICAgICAgICB2YXIgY2hhckNvZGUgPSB3cml0ZVRhYmxlW2N1ckFkZHIgLSAxXSArIDE7XG4gICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IHBhcnQ7IGwrKylcbiAgICAgICAgICAgICAgICB3cml0ZVRhYmxlW2N1ckFkZHIrK10gPSBjaGFyQ29kZSsrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkluY29ycmVjdCB0eXBlICdcIiArIHR5cGVvZiBwYXJ0ICsgXCInIGdpdmVuIGluIFwiICArIHRoaXMuZW5jb2RpbmdOYW1lICsgXCIgYXQgY2h1bmsgXCIgKyBjaHVua1swXSk7XG4gICAgfVxuICAgIGlmIChjdXJBZGRyID4gMHhGRilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW5jb3JyZWN0IGNodW5rIGluIFwiICArIHRoaXMuZW5jb2RpbmdOYW1lICsgXCIgYXQgYWRkciBcIiArIGNodW5rWzBdICsgXCI6IHRvbyBsb25nXCIgKyBjdXJBZGRyKTtcbn1cblxuLy8gRW5jb2RlciBoZWxwZXJzXG5EQkNTQ29kZWMucHJvdG90eXBlLl9nZXRFbmNvZGVCdWNrZXQgPSBmdW5jdGlvbih1Q29kZSkge1xuICAgIHZhciBoaWdoID0gdUNvZGUgPj4gODsgLy8gVGhpcyBjb3VsZCBiZSA+IDB4RkYgYmVjYXVzZSBvZiBhc3RyYWwgY2hhcmFjdGVycy5cbiAgICBpZiAodGhpcy5lbmNvZGVUYWJsZVtoaWdoXSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICB0aGlzLmVuY29kZVRhYmxlW2hpZ2hdID0gVU5BU1NJR05FRF9OT0RFLnNsaWNlKDApOyAvLyBDcmVhdGUgYnVja2V0IG9uIGRlbWFuZC5cbiAgICByZXR1cm4gdGhpcy5lbmNvZGVUYWJsZVtoaWdoXTtcbn1cblxuREJDU0NvZGVjLnByb3RvdHlwZS5fc2V0RW5jb2RlQ2hhciA9IGZ1bmN0aW9uKHVDb2RlLCBkYmNzQ29kZSkge1xuICAgIHZhciBidWNrZXQgPSB0aGlzLl9nZXRFbmNvZGVCdWNrZXQodUNvZGUpO1xuICAgIHZhciBsb3cgPSB1Q29kZSAmIDB4RkY7XG4gICAgaWYgKGJ1Y2tldFtsb3ddIDw9IFNFUV9TVEFSVClcbiAgICAgICAgdGhpcy5lbmNvZGVUYWJsZVNlcVtTRVFfU1RBUlQtYnVja2V0W2xvd11dW0RFRl9DSEFSXSA9IGRiY3NDb2RlOyAvLyBUaGVyZSdzIGFscmVhZHkgYSBzZXF1ZW5jZSwgc2V0IGEgc2luZ2xlLWNoYXIgc3Vic2VxdWVuY2Ugb2YgaXQuXG4gICAgZWxzZSBpZiAoYnVja2V0W2xvd10gPT0gVU5BU1NJR05FRClcbiAgICAgICAgYnVja2V0W2xvd10gPSBkYmNzQ29kZTtcbn1cblxuREJDU0NvZGVjLnByb3RvdHlwZS5fc2V0RW5jb2RlU2VxdWVuY2UgPSBmdW5jdGlvbihzZXEsIGRiY3NDb2RlKSB7XG4gICAgXG4gICAgLy8gR2V0IHRoZSByb290IG9mIGNoYXJhY3RlciB0cmVlIGFjY29yZGluZyB0byBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlcXVlbmNlLlxuICAgIHZhciB1Q29kZSA9IHNlcVswXTtcbiAgICB2YXIgYnVja2V0ID0gdGhpcy5fZ2V0RW5jb2RlQnVja2V0KHVDb2RlKTtcbiAgICB2YXIgbG93ID0gdUNvZGUgJiAweEZGO1xuXG4gICAgdmFyIG5vZGU7XG4gICAgaWYgKGJ1Y2tldFtsb3ddIDw9IFNFUV9TVEFSVCkge1xuICAgICAgICAvLyBUaGVyZSdzIGFscmVhZHkgYSBzZXF1ZW5jZSB3aXRoICAtIHVzZSBpdC5cbiAgICAgICAgbm9kZSA9IHRoaXMuZW5jb2RlVGFibGVTZXFbU0VRX1NUQVJULWJ1Y2tldFtsb3ddXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIFRoZXJlIHdhcyBubyBzZXF1ZW5jZSBvYmplY3QgLSBhbGxvY2F0ZSBhIG5ldyBvbmUuXG4gICAgICAgIG5vZGUgPSB7fTtcbiAgICAgICAgaWYgKGJ1Y2tldFtsb3ddICE9PSBVTkFTU0lHTkVEKSBub2RlW0RFRl9DSEFSXSA9IGJ1Y2tldFtsb3ddOyAvLyBJZiBhIGNoYXIgd2FzIHNldCBiZWZvcmUgLSBtYWtlIGl0IGEgc2luZ2xlLWNoYXIgc3Vic2VxdWVuY2UuXG4gICAgICAgIGJ1Y2tldFtsb3ddID0gU0VRX1NUQVJUIC0gdGhpcy5lbmNvZGVUYWJsZVNlcS5sZW5ndGg7XG4gICAgICAgIHRoaXMuZW5jb2RlVGFibGVTZXEucHVzaChub2RlKTtcbiAgICB9XG5cbiAgICAvLyBUcmF2ZXJzZSB0aGUgY2hhcmFjdGVyIHRyZWUsIGFsbG9jYXRpbmcgbmV3IG5vZGVzIGFzIG5lZWRlZC5cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8IHNlcS5sZW5ndGgtMTsgaisrKSB7XG4gICAgICAgIHZhciBvbGRWYWwgPSBub2RlW3VDb2RlXTtcbiAgICAgICAgaWYgKHR5cGVvZiBvbGRWYWwgPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgbm9kZSA9IG9sZFZhbDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlID0gbm9kZVt1Q29kZV0gPSB7fVxuICAgICAgICAgICAgaWYgKG9sZFZhbCAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIG5vZGVbREVGX0NIQVJdID0gb2xkVmFsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIGxlYWYgdG8gZ2l2ZW4gZGJjc0NvZGUuXG4gICAgdUNvZGUgPSBzZXFbc2VxLmxlbmd0aC0xXTtcbiAgICBub2RlW3VDb2RlXSA9IGRiY3NDb2RlO1xufVxuXG5EQkNTQ29kZWMucHJvdG90eXBlLl9maWxsRW5jb2RlVGFibGUgPSBmdW5jdGlvbihub2RlSWR4LCBwcmVmaXgsIHNraXBFbmNvZGVDaGFycykge1xuICAgIHZhciBub2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbbm9kZUlkeF07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAweDEwMDsgaSsrKSB7XG4gICAgICAgIHZhciB1Q29kZSA9IG5vZGVbaV07XG4gICAgICAgIHZhciBtYkNvZGUgPSBwcmVmaXggKyBpO1xuICAgICAgICBpZiAoc2tpcEVuY29kZUNoYXJzW21iQ29kZV0pXG4gICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBpZiAodUNvZGUgPj0gMClcbiAgICAgICAgICAgIHRoaXMuX3NldEVuY29kZUNoYXIodUNvZGUsIG1iQ29kZSk7XG4gICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IE5PREVfU1RBUlQpXG4gICAgICAgICAgICB0aGlzLl9maWxsRW5jb2RlVGFibGUoTk9ERV9TVEFSVCAtIHVDb2RlLCBtYkNvZGUgPDwgOCwgc2tpcEVuY29kZUNoYXJzKTtcbiAgICAgICAgZWxzZSBpZiAodUNvZGUgPD0gU0VRX1NUQVJUKVxuICAgICAgICAgICAgdGhpcy5fc2V0RW5jb2RlU2VxdWVuY2UodGhpcy5kZWNvZGVUYWJsZVNlcVtTRVFfU1RBUlQgLSB1Q29kZV0sIG1iQ29kZSk7XG4gICAgfVxufVxuXG5cblxuLy8gPT0gRW5jb2RlciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gREJDU0VuY29kZXIob3B0aW9ucywgY29kZWMpIHtcbiAgICAvLyBFbmNvZGVyIHN0YXRlXG4gICAgdGhpcy5sZWFkU3Vycm9nYXRlID0gLTE7XG4gICAgdGhpcy5zZXFPYmogPSB1bmRlZmluZWQ7XG4gICAgXG4gICAgLy8gU3RhdGljIGRhdGFcbiAgICB0aGlzLmVuY29kZVRhYmxlID0gY29kZWMuZW5jb2RlVGFibGU7XG4gICAgdGhpcy5lbmNvZGVUYWJsZVNlcSA9IGNvZGVjLmVuY29kZVRhYmxlU2VxO1xuICAgIHRoaXMuZGVmYXVsdENoYXJTaW5nbGVCeXRlID0gY29kZWMuZGVmQ2hhclNCO1xuICAgIHRoaXMuZ2IxODAzMCA9IGNvZGVjLmdiMTgwMzA7XG59XG5cbkRCQ1NFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHZhciBuZXdCdWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGggKiAodGhpcy5nYjE4MDMwID8gNCA6IDMpKSwgXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSB0aGlzLmxlYWRTdXJyb2dhdGUsXG4gICAgICAgIHNlcU9iaiA9IHRoaXMuc2VxT2JqLCBuZXh0Q2hhciA9IC0xLFxuICAgICAgICBpID0gMCwgaiA9IDA7XG5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAvLyAwLiBHZXQgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICAgIGlmIChuZXh0Q2hhciA9PT0gLTEpIHtcbiAgICAgICAgICAgIGlmIChpID09IHN0ci5sZW5ndGgpIGJyZWFrO1xuICAgICAgICAgICAgdmFyIHVDb2RlID0gc3RyLmNoYXJDb2RlQXQoaSsrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciB1Q29kZSA9IG5leHRDaGFyO1xuICAgICAgICAgICAgbmV4dENoYXIgPSAtMTsgICAgXG4gICAgICAgIH1cblxuICAgICAgICAvLyAxLiBIYW5kbGUgc3Vycm9nYXRlcy5cbiAgICAgICAgaWYgKDB4RDgwMCA8PSB1Q29kZSAmJiB1Q29kZSA8IDB4RTAwMCkgeyAvLyBDaGFyIGlzIG9uZSBvZiBzdXJyb2dhdGVzLlxuICAgICAgICAgICAgaWYgKHVDb2RlIDwgMHhEQzAwKSB7IC8vIFdlJ3ZlIGdvdCBsZWFkIHN1cnJvZ2F0ZS5cbiAgICAgICAgICAgICAgICBpZiAobGVhZFN1cnJvZ2F0ZSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IHVDb2RlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsZWFkU3Vycm9nYXRlID0gdUNvZGU7XG4gICAgICAgICAgICAgICAgICAgIC8vIERvdWJsZSBsZWFkIHN1cnJvZ2F0ZSBmb3VuZC5cbiAgICAgICAgICAgICAgICAgICAgdUNvZGUgPSBVTkFTU0lHTkVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIFdlJ3ZlIGdvdCB0cmFpbCBzdXJyb2dhdGUuXG4gICAgICAgICAgICAgICAgaWYgKGxlYWRTdXJyb2dhdGUgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHVDb2RlID0gMHgxMDAwMCArIChsZWFkU3Vycm9nYXRlIC0gMHhEODAwKSAqIDB4NDAwICsgKHVDb2RlIC0gMHhEQzAwKTtcbiAgICAgICAgICAgICAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IC0xO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEluY29tcGxldGUgc3Vycm9nYXRlIHBhaXIgLSBvbmx5IHRyYWlsIHN1cnJvZ2F0ZSBmb3VuZC5cbiAgICAgICAgICAgICAgICAgICAgdUNvZGUgPSBVTkFTU0lHTkVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChsZWFkU3Vycm9nYXRlICE9PSAtMSkge1xuICAgICAgICAgICAgLy8gSW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpciAtIG9ubHkgbGVhZCBzdXJyb2dhdGUgZm91bmQuXG4gICAgICAgICAgICBuZXh0Q2hhciA9IHVDb2RlOyB1Q29kZSA9IFVOQVNTSUdORUQ7IC8vIFdyaXRlIGFuIGVycm9yLCB0aGVuIGN1cnJlbnQgY2hhci5cbiAgICAgICAgICAgIGxlYWRTdXJyb2dhdGUgPSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDIuIENvbnZlcnQgdUNvZGUgY2hhcmFjdGVyLlxuICAgICAgICB2YXIgZGJjc0NvZGUgPSBVTkFTU0lHTkVEO1xuICAgICAgICBpZiAoc2VxT2JqICE9PSB1bmRlZmluZWQgJiYgdUNvZGUgIT0gVU5BU1NJR05FRCkgeyAvLyBXZSBhcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgc2VxdWVuY2VcbiAgICAgICAgICAgIHZhciByZXNDb2RlID0gc2VxT2JqW3VDb2RlXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzQ29kZSA9PT0gJ29iamVjdCcpIHsgLy8gU2VxdWVuY2UgY29udGludWVzLlxuICAgICAgICAgICAgICAgIHNlcU9iaiA9IHJlc0NvZGU7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc0NvZGUgPT0gJ251bWJlcicpIHsgLy8gU2VxdWVuY2UgZmluaXNoZWQuIFdyaXRlIGl0LlxuICAgICAgICAgICAgICAgIGRiY3NDb2RlID0gcmVzQ29kZTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNDb2RlID09IHVuZGVmaW5lZCkgeyAvLyBDdXJyZW50IGNoYXJhY3RlciBpcyBub3QgcGFydCBvZiB0aGUgc2VxdWVuY2UuXG5cbiAgICAgICAgICAgICAgICAvLyBUcnkgZGVmYXVsdCBjaGFyYWN0ZXIgZm9yIHRoaXMgc2VxdWVuY2VcbiAgICAgICAgICAgICAgICByZXNDb2RlID0gc2VxT2JqW0RFRl9DSEFSXTtcbiAgICAgICAgICAgICAgICBpZiAocmVzQ29kZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGRiY3NDb2RlID0gcmVzQ29kZTsgLy8gRm91bmQuIFdyaXRlIGl0LlxuICAgICAgICAgICAgICAgICAgICBuZXh0Q2hhciA9IHVDb2RlOyAvLyBDdXJyZW50IGNoYXJhY3RlciB3aWxsIGJlIHdyaXR0ZW4gdG9vIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi5cblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFdoYXQgaWYgd2UgaGF2ZSBubyBkZWZhdWx0PyAocmVzQ29kZSA9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZW4sIHdlIHNob3VsZCB3cml0ZSBmaXJzdCBjaGFyIG9mIHRoZSBzZXF1ZW5jZSBhcy1pcyBhbmQgdHJ5IHRoZSByZXN0IHJlY3Vyc2l2ZWx5LlxuICAgICAgICAgICAgICAgICAgICAvLyBEaWRuJ3QgZG8gaXQgZm9yIG5vdyBiZWNhdXNlIG5vIGVuY29kaW5nIGhhcyB0aGlzIHNpdHVhdGlvbiB5ZXQuXG4gICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnRseSwganVzdCBza2lwIHRoZSBzZXF1ZW5jZSBhbmQgd3JpdGUgY3VycmVudCBjaGFyLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlcU9iaiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1Q29kZSA+PSAwKSB7ICAvLyBSZWd1bGFyIGNoYXJhY3RlclxuICAgICAgICAgICAgdmFyIHN1YnRhYmxlID0gdGhpcy5lbmNvZGVUYWJsZVt1Q29kZSA+PiA4XTtcbiAgICAgICAgICAgIGlmIChzdWJ0YWJsZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGRiY3NDb2RlID0gc3VidGFibGVbdUNvZGUgJiAweEZGXTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgaWYgKGRiY3NDb2RlIDw9IFNFUV9TVEFSVCkgeyAvLyBTZXF1ZW5jZSBzdGFydFxuICAgICAgICAgICAgICAgIHNlcU9iaiA9IHRoaXMuZW5jb2RlVGFibGVTZXFbU0VRX1NUQVJULWRiY3NDb2RlXTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRiY3NDb2RlID09IFVOQVNTSUdORUQgJiYgdGhpcy5nYjE4MDMwKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIEdCMTgwMzAgYWxnb3JpdGhtIHRvIGZpbmQgY2hhcmFjdGVyKHMpIHRvIHdyaXRlLlxuICAgICAgICAgICAgICAgIHZhciBpZHggPSBmaW5kSWR4KHRoaXMuZ2IxODAzMC51Q2hhcnMsIHVDb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoaWR4ICE9IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkYmNzQ29kZSA9IHRoaXMuZ2IxODAzMC5nYkNoYXJzW2lkeF0gKyAodUNvZGUgLSB0aGlzLmdiMTgwMzAudUNoYXJzW2lkeF0pO1xuICAgICAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IDB4ODEgKyBNYXRoLmZsb29yKGRiY3NDb2RlIC8gMTI2MDApOyBkYmNzQ29kZSA9IGRiY3NDb2RlICUgMTI2MDA7XG4gICAgICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gMHgzMCArIE1hdGguZmxvb3IoZGJjc0NvZGUgLyAxMjYwKTsgZGJjc0NvZGUgPSBkYmNzQ29kZSAlIDEyNjA7XG4gICAgICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gMHg4MSArIE1hdGguZmxvb3IoZGJjc0NvZGUgLyAxMCk7IGRiY3NDb2RlID0gZGJjc0NvZGUgJSAxMDtcbiAgICAgICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSAweDMwICsgZGJjc0NvZGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIFdyaXRlIGRiY3NDb2RlIGNoYXJhY3Rlci5cbiAgICAgICAgaWYgKGRiY3NDb2RlID09PSBVTkFTU0lHTkVEKVxuICAgICAgICAgICAgZGJjc0NvZGUgPSB0aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZTtcbiAgICAgICAgXG4gICAgICAgIGlmIChkYmNzQ29kZSA8IDB4MTAwKSB7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGRiY3NDb2RlIDwgMHgxMDAwMCkge1xuICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZSA+PiA4OyAgIC8vIGhpZ2ggYnl0ZVxuICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZSAmIDB4RkY7IC8vIGxvdyBieXRlXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlID4+IDE2O1xuICAgICAgICAgICAgbmV3QnVmW2orK10gPSAoZGJjc0NvZGUgPj4gOCkgJiAweEZGO1xuICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZSAmIDB4RkY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNlcU9iaiA9IHNlcU9iajtcbiAgICB0aGlzLmxlYWRTdXJyb2dhdGUgPSBsZWFkU3Vycm9nYXRlO1xuICAgIHJldHVybiBuZXdCdWYuc2xpY2UoMCwgaik7XG59XG5cbkRCQ1NFbmNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5sZWFkU3Vycm9nYXRlID09PSAtMSAmJiB0aGlzLnNlcU9iaiA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm47IC8vIEFsbCBjbGVhbi4gTW9zdCBvZnRlbiBjYXNlLlxuXG4gICAgdmFyIG5ld0J1ZiA9IG5ldyBCdWZmZXIoMTApLCBqID0gMDtcblxuICAgIGlmICh0aGlzLnNlcU9iaikgeyAvLyBXZSdyZSBpbiB0aGUgc2VxdWVuY2UuXG4gICAgICAgIHZhciBkYmNzQ29kZSA9IHRoaXMuc2VxT2JqW0RFRl9DSEFSXTtcbiAgICAgICAgaWYgKGRiY3NDb2RlICE9PSB1bmRlZmluZWQpIHsgLy8gV3JpdGUgYmVnaW5uaW5nIG9mIHRoZSBzZXF1ZW5jZS5cbiAgICAgICAgICAgIGlmIChkYmNzQ29kZSA8IDB4MTAwKSB7XG4gICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgPj4gODsgICAvLyBoaWdoIGJ5dGVcbiAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlICYgMHhGRjsgLy8gbG93IGJ5dGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNlZSB0b2RvIGFib3ZlLlxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VxT2JqID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlYWRTdXJyb2dhdGUgIT09IC0xKSB7XG4gICAgICAgIC8vIEluY29tcGxldGUgc3Vycm9nYXRlIHBhaXIgLSBvbmx5IGxlYWQgc3Vycm9nYXRlIGZvdW5kLlxuICAgICAgICBuZXdCdWZbaisrXSA9IHRoaXMuZGVmYXVsdENoYXJTaW5nbGVCeXRlO1xuICAgICAgICB0aGlzLmxlYWRTdXJyb2dhdGUgPSAtMTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIG5ld0J1Zi5zbGljZSgwLCBqKTtcbn1cblxuLy8gRXhwb3J0IGZvciB0ZXN0aW5nXG5EQkNTRW5jb2Rlci5wcm90b3R5cGUuZmluZElkeCA9IGZpbmRJZHg7XG5cblxuLy8gPT0gRGVjb2RlciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gREJDU0RlY29kZXIob3B0aW9ucywgY29kZWMpIHtcbiAgICAvLyBEZWNvZGVyIHN0YXRlXG4gICAgdGhpcy5ub2RlSWR4ID0gMDtcbiAgICB0aGlzLnByZXZCdWYgPSBuZXcgQnVmZmVyKDApO1xuXG4gICAgLy8gU3RhdGljIGRhdGFcbiAgICB0aGlzLmRlY29kZVRhYmxlcyA9IGNvZGVjLmRlY29kZVRhYmxlcztcbiAgICB0aGlzLmRlY29kZVRhYmxlU2VxID0gY29kZWMuZGVjb2RlVGFibGVTZXE7XG4gICAgdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUgPSBjb2RlYy5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgdGhpcy5nYjE4MDMwID0gY29kZWMuZ2IxODAzMDtcbn1cblxuREJDU0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7XG4gICAgdmFyIG5ld0J1ZiA9IG5ldyBCdWZmZXIoYnVmLmxlbmd0aCoyKSxcbiAgICAgICAgbm9kZUlkeCA9IHRoaXMubm9kZUlkeCwgXG4gICAgICAgIHByZXZCdWYgPSB0aGlzLnByZXZCdWYsIHByZXZCdWZPZmZzZXQgPSB0aGlzLnByZXZCdWYubGVuZ3RoLFxuICAgICAgICBzZXFTdGFydCA9IC10aGlzLnByZXZCdWYubGVuZ3RoLCAvLyBpZHggb2YgdGhlIHN0YXJ0IG9mIGN1cnJlbnQgcGFyc2VkIHNlcXVlbmNlLlxuICAgICAgICB1Q29kZTtcblxuICAgIGlmIChwcmV2QnVmT2Zmc2V0ID4gMCkgLy8gTWFrZSBwcmV2IGJ1ZiBvdmVybGFwIGEgbGl0dGxlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNsaWNlIGxhdGVyLlxuICAgICAgICBwcmV2QnVmID0gQnVmZmVyLmNvbmNhdChbcHJldkJ1ZiwgYnVmLnNsaWNlKDAsIDEwKV0pO1xuICAgIFxuICAgIGZvciAodmFyIGkgPSAwLCBqID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY3VyQnl0ZSA9IChpID49IDApID8gYnVmW2ldIDogcHJldkJ1ZltpICsgcHJldkJ1Zk9mZnNldF07XG5cbiAgICAgICAgLy8gTG9va3VwIGluIGN1cnJlbnQgdHJpZSBub2RlLlxuICAgICAgICB2YXIgdUNvZGUgPSB0aGlzLmRlY29kZVRhYmxlc1tub2RlSWR4XVtjdXJCeXRlXTtcblxuICAgICAgICBpZiAodUNvZGUgPj0gMCkgeyBcbiAgICAgICAgICAgIC8vIE5vcm1hbCBjaGFyYWN0ZXIsIGp1c3QgdXNlIGl0LlxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVDb2RlID09PSBVTkFTU0lHTkVEKSB7IC8vIFVua25vd24gY2hhci5cbiAgICAgICAgICAgIC8vIFRPRE86IENhbGxiYWNrIHdpdGggc2VxLlxuICAgICAgICAgICAgLy92YXIgY3VyU2VxID0gKHNlcVN0YXJ0ID49IDApID8gYnVmLnNsaWNlKHNlcVN0YXJ0LCBpKzEpIDogcHJldkJ1Zi5zbGljZShzZXFTdGFydCArIHByZXZCdWZPZmZzZXQsIGkrMSArIHByZXZCdWZPZmZzZXQpO1xuICAgICAgICAgICAgaSA9IHNlcVN0YXJ0OyAvLyBUcnkgdG8gcGFyc2UgYWdhaW4sIGFmdGVyIHNraXBwaW5nIGZpcnN0IGJ5dGUgb2YgdGhlIHNlcXVlbmNlICgnaScgd2lsbCBiZSBpbmNyZW1lbnRlZCBieSAnZm9yJyBjeWNsZSkuXG4gICAgICAgICAgICB1Q29kZSA9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodUNvZGUgPT09IEdCMTgwMzBfQ09ERSkge1xuICAgICAgICAgICAgdmFyIGN1clNlcSA9IChzZXFTdGFydCA+PSAwKSA/IGJ1Zi5zbGljZShzZXFTdGFydCwgaSsxKSA6IHByZXZCdWYuc2xpY2Uoc2VxU3RhcnQgKyBwcmV2QnVmT2Zmc2V0LCBpKzEgKyBwcmV2QnVmT2Zmc2V0KTtcbiAgICAgICAgICAgIHZhciBwdHIgPSAoY3VyU2VxWzBdLTB4ODEpKjEyNjAwICsgKGN1clNlcVsxXS0weDMwKSoxMjYwICsgKGN1clNlcVsyXS0weDgxKSoxMCArIChjdXJTZXFbM10tMHgzMCk7XG4gICAgICAgICAgICB2YXIgaWR4ID0gZmluZElkeCh0aGlzLmdiMTgwMzAuZ2JDaGFycywgcHRyKTtcbiAgICAgICAgICAgIHVDb2RlID0gdGhpcy5nYjE4MDMwLnVDaGFyc1tpZHhdICsgcHRyIC0gdGhpcy5nYjE4MDMwLmdiQ2hhcnNbaWR4XTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1Q29kZSA8PSBOT0RFX1NUQVJUKSB7IC8vIEdvIHRvIG5leHQgdHJpZSBub2RlLlxuICAgICAgICAgICAgbm9kZUlkeCA9IE5PREVfU1RBUlQgLSB1Q29kZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IFNFUV9TVEFSVCkgeyAvLyBPdXRwdXQgYSBzZXF1ZW5jZSBvZiBjaGFycy5cbiAgICAgICAgICAgIHZhciBzZXEgPSB0aGlzLmRlY29kZVRhYmxlU2VxW1NFUV9TVEFSVCAtIHVDb2RlXTtcbiAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgc2VxLmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgICAgICAgICAgIHVDb2RlID0gc2VxW2tdO1xuICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gdUNvZGUgJiAweEZGO1xuICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gdUNvZGUgPj4gODtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVDb2RlID0gc2VxW3NlcS5sZW5ndGgtMV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWNvbnYtbGl0ZSBpbnRlcm5hbCBlcnJvcjogaW52YWxpZCBkZWNvZGluZyB0YWJsZSB2YWx1ZSBcIiArIHVDb2RlICsgXCIgYXQgXCIgKyBub2RlSWR4ICsgXCIvXCIgKyBjdXJCeXRlKTtcblxuICAgICAgICAvLyBXcml0ZSB0aGUgY2hhcmFjdGVyIHRvIGJ1ZmZlciwgaGFuZGxpbmcgaGlnaGVyIHBsYW5lcyB1c2luZyBzdXJyb2dhdGUgcGFpci5cbiAgICAgICAgaWYgKHVDb2RlID4gMHhGRkZGKSB7IFxuICAgICAgICAgICAgdUNvZGUgLT0gMHgxMDAwMDtcbiAgICAgICAgICAgIHZhciB1Q29kZUxlYWQgPSAweEQ4MDAgKyBNYXRoLmZsb29yKHVDb2RlIC8gMHg0MDApO1xuICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZUxlYWQgJiAweEZGO1xuICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZUxlYWQgPj4gODtcblxuICAgICAgICAgICAgdUNvZGUgPSAweERDMDAgKyB1Q29kZSAlIDB4NDAwO1xuICAgICAgICB9XG4gICAgICAgIG5ld0J1ZltqKytdID0gdUNvZGUgJiAweEZGO1xuICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlID4+IDg7XG5cbiAgICAgICAgLy8gUmVzZXQgdHJpZSBub2RlLlxuICAgICAgICBub2RlSWR4ID0gMDsgc2VxU3RhcnQgPSBpKzE7XG4gICAgfVxuXG4gICAgdGhpcy5ub2RlSWR4ID0gbm9kZUlkeDtcbiAgICB0aGlzLnByZXZCdWYgPSAoc2VxU3RhcnQgPj0gMCkgPyBidWYuc2xpY2Uoc2VxU3RhcnQpIDogcHJldkJ1Zi5zbGljZShzZXFTdGFydCArIHByZXZCdWZPZmZzZXQpO1xuICAgIHJldHVybiBuZXdCdWYuc2xpY2UoMCwgaikudG9TdHJpbmcoJ3VjczInKTtcbn1cblxuREJDU0RlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXQgPSAnJztcblxuICAgIC8vIFRyeSB0byBwYXJzZSBhbGwgcmVtYWluaW5nIGNoYXJzLlxuICAgIHdoaWxlICh0aGlzLnByZXZCdWYubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBTa2lwIDEgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIuXG4gICAgICAgIHJldCArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTtcbiAgICAgICAgdmFyIGJ1ZiA9IHRoaXMucHJldkJ1Zi5zbGljZSgxKTtcblxuICAgICAgICAvLyBQYXJzZSByZW1haW5pbmcgYXMgdXN1YWwuXG4gICAgICAgIHRoaXMucHJldkJ1ZiA9IG5ldyBCdWZmZXIoMCk7XG4gICAgICAgIHRoaXMubm9kZUlkeCA9IDA7XG4gICAgICAgIGlmIChidWYubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJldCArPSB0aGlzLndyaXRlKGJ1Zik7XG4gICAgfVxuXG4gICAgdGhpcy5ub2RlSWR4ID0gMDtcbiAgICByZXR1cm4gcmV0O1xufVxuXG4vLyBCaW5hcnkgc2VhcmNoIGZvciBHQjE4MDMwLiBSZXR1cm5zIGxhcmdlc3QgaSBzdWNoIHRoYXQgdGFibGVbaV0gPD0gdmFsLlxuZnVuY3Rpb24gZmluZElkeCh0YWJsZSwgdmFsKSB7XG4gICAgaWYgKHRhYmxlWzBdID4gdmFsKVxuICAgICAgICByZXR1cm4gLTE7XG5cbiAgICB2YXIgbCA9IDAsIHIgPSB0YWJsZS5sZW5ndGg7XG4gICAgd2hpbGUgKGwgPCByLTEpIHsgLy8gYWx3YXlzIHRhYmxlW2xdIDw9IHZhbCA8IHRhYmxlW3JdXG4gICAgICAgIHZhciBtaWQgPSBsICsgTWF0aC5mbG9vcigoci1sKzEpLzIpO1xuICAgICAgICBpZiAodGFibGVbbWlkXSA8PSB2YWwpXG4gICAgICAgICAgICBsID0gbWlkO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICByID0gbWlkO1xuICAgIH1cbiAgICByZXR1cm4gbDtcbn1cblxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2RiY3MtY29kZWMuanNcbi8vIG1vZHVsZSBpZCA9IDE0MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcblxuLy8gRGVzY3JpcHRpb24gb2Ygc3VwcG9ydGVkIGRvdWJsZSBieXRlIGVuY29kaW5ncyBhbmQgYWxpYXNlcy5cbi8vIFRhYmxlcyBhcmUgbm90IHJlcXVpcmUoKS1kIHVudGlsIHRoZXkgYXJlIG5lZWRlZCB0byBzcGVlZCB1cCBsaWJyYXJ5IGxvYWQuXG4vLyByZXF1aXJlKCktcyBhcmUgZGlyZWN0IHRvIHN1cHBvcnQgQnJvd3NlcmlmeS5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgXG4gICAgLy8gPT0gSmFwYW5lc2UvU2hpZnRKSVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEFsbCBqYXBhbmVzZSBlbmNvZGluZ3MgYXJlIGJhc2VkIG9uIEpJUyBYIHNldCBvZiBzdGFuZGFyZHM6XG4gICAgLy8gSklTIFggMDIwMSAtIFNpbmdsZS1ieXRlIGVuY29kaW5nIG9mIEFTQ0lJICsgwqUgKyBLYW5hIGNoYXJzIGF0IDB4QTEtMHhERi5cbiAgICAvLyBKSVMgWCAwMjA4IC0gTWFpbiBzZXQgb2YgNjg3OSBjaGFyYWN0ZXJzLCBwbGFjZWQgaW4gOTR4OTQgcGxhbmUsIHRvIGJlIGVuY29kZWQgYnkgMiBieXRlcy4gXG4gICAgLy8gICAgICAgICAgICAgIEhhcyBzZXZlcmFsIHZhcmlhdGlvbnMgaW4gMTk3OCwgMTk4MywgMTk5MCBhbmQgMTk5Ny5cbiAgICAvLyBKSVMgWCAwMjEyIC0gU3VwcGxlbWVudGFyeSBwbGFuZSBvZiA2MDY3IGNoYXJzIGluIDk0eDk0IHBsYW5lLiAxOTkwLiBFZmZlY3RpdmVseSBkZWFkLlxuICAgIC8vIEpJUyBYIDAyMTMgLSBFeHRlbnNpb24gYW5kIG1vZGVybiByZXBsYWNlbWVudCBvZiAwMjA4IGFuZCAwMjEyLiBUb3RhbCBjaGFyczogMTEyMzMuXG4gICAgLy8gICAgICAgICAgICAgIDIgcGxhbmVzLCBmaXJzdCBpcyBzdXBlcnNldCBvZiAwMjA4LCBzZWNvbmQgLSByZXZpc2VkIDAyMTIuXG4gICAgLy8gICAgICAgICAgICAgIEludHJvZHVjZWQgaW4gMjAwMCwgcmV2aXNlZCAyMDA0LiBTb21lIGNoYXJhY3RlcnMgYXJlIGluIFVuaWNvZGUgUGxhbmUgMiAoMHgyeHh4eClcblxuICAgIC8vIEJ5dGUgZW5jb2RpbmdzIGFyZTpcbiAgICAvLyAgKiBTaGlmdF9KSVM6IENvbXBhdGlibGUgd2l0aCAwMjAxLCB1c2VzIG5vdCBkZWZpbmVkIGNoYXJzIGluIHRvcCBoYWxmIGFzIGxlYWQgYnl0ZXMgZm9yIGRvdWJsZS1ieXRlXG4gICAgLy8gICAgICAgICAgICAgICBlbmNvZGluZyBvZiAwMjA4LiBMZWFkIGJ5dGUgcmFuZ2VzOiAweDgxLTB4OUYsIDB4RTAtMHhFRjsgVHJhaWwgYnl0ZSByYW5nZXM6IDB4NDAtMHg3RSwgMHg4MC0weDlFLCAweDlGLTB4RkMuXG4gICAgLy8gICAgICAgICAgICAgICBXaW5kb3dzIENQOTMyIGlzIGEgc3VwZXJzZXQgb2YgU2hpZnRfSklTLiBTb21lIGNvbXBhbmllcyBhZGRlZCBtb3JlIGNoYXJzLCBub3RhYmx5IEtEREkuXG4gICAgLy8gICogRVVDLUpQOiAgICBVcCB0byAzIGJ5dGVzIHBlciBjaGFyYWN0ZXIuIFVzZWQgbW9zdGx5IG9uICpuaXhlcy5cbiAgICAvLyAgICAgICAgICAgICAgIDB4MDAtMHg3RiAgICAgICAtIGxvd2VyIHBhcnQgb2YgMDIwMVxuICAgIC8vICAgICAgICAgICAgICAgMHg4RSwgMHhBMS0weERGIC0gdXBwZXIgcGFydCBvZiAwMjAxXG4gICAgLy8gICAgICAgICAgICAgICAoMHhBMS0weEZFKXgyICAgLSAwMjA4IHBsYW5lICg5NHg5NCkuXG4gICAgLy8gICAgICAgICAgICAgICAweDhGLCAoMHhBMS0weEZFKXgyIC0gMDIxMiBwbGFuZSAoOTR4OTQpLlxuICAgIC8vICAqIEpJUyBYIDIwODogNy1iaXQsIGRpcmVjdCBlbmNvZGluZyBvZiAwMjA4LiBCeXRlIHJhbmdlczogMHgyMS0weDdFICg5NCB2YWx1ZXMpLiBVbmNvbW1vbi5cbiAgICAvLyAgICAgICAgICAgICAgIFVzZWQgYXMtaXMgaW4gSVNPMjAyMiBmYW1pbHkuXG4gICAgLy8gICogSVNPMjAyMi1KUDogU3RhdGVmdWwgZW5jb2RpbmcsIHdpdGggZXNjYXBlIHNlcXVlbmNlcyB0byBzd2l0Y2ggYmV0d2VlbiBBU0NJSSwgXG4gICAgLy8gICAgICAgICAgICAgICAgMDIwMS0xOTc2IFJvbWFuLCAwMjA4LTE5NzgsIDAyMDgtMTk4My5cbiAgICAvLyAgKiBJU08yMDIyLUpQLTE6IEFkZHMgZXNjIHNlcSBmb3IgMDIxMi0xOTkwLlxuICAgIC8vICAqIElTTzIwMjItSlAtMjogQWRkcyBlc2Mgc2VxIGZvciBHQjIzMTMtMTk4MCwgS1NYMTAwMS0xOTkyLCBJU084ODU5LTEsIElTTzg4NTktNy5cbiAgICAvLyAgKiBJU08yMDIyLUpQLTM6IEFkZHMgZXNjIHNlcSBmb3IgMDIwMS0xOTc2IEthbmEgc2V0LCAwMjEzLTIwMDAgUGxhbmVzIDEsIDIuXG4gICAgLy8gICogSVNPMjAyMi1KUC0yMDA0OiBBZGRzIDAyMTMtMjAwNCBQbGFuZSAxLlxuICAgIC8vXG4gICAgLy8gQWZ0ZXIgSklTIFggMDIxMyBhcHBlYXJlZCwgU2hpZnRfSklTLTIwMDQsIEVVQy1KSVNYMDIxMyBhbmQgSVNPMjAyMi1KUC0yMDA0IGZvbGxvd2VkLCB3aXRoIGp1c3QgY2hhbmdpbmcgdGhlIHBsYW5lcy5cbiAgICAvL1xuICAgIC8vIE92ZXJhbGwsIGl0IHNlZW1zIHRoYXQgaXQncyBhIG1lc3MgOiggaHR0cDovL3d3dzgucGxhbGEub3IuanAvdGt1Ym90YTEvdW5pY29kZS1zeW1ib2xzLW1hcDIuaHRtbFxuXG4gICAgJ3NoaWZ0amlzJzoge1xuICAgICAgICB0eXBlOiAnX2RiY3MnLFxuICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9zaGlmdGppcy5qc29uJykgfSxcbiAgICAgICAgZW5jb2RlQWRkOiB7J1xcdTAwYTUnOiAweDVDLCAnXFx1MjAzRSc6IDB4N0V9LFxuICAgICAgICBlbmNvZGVTa2lwVmFsczogW3tmcm9tOiAweEVENDAsIHRvOiAweEY5NDB9XSxcbiAgICB9LFxuICAgICdjc3NoaWZ0amlzJzogJ3NoaWZ0amlzJyxcbiAgICAnbXNrYW5qaSc6ICdzaGlmdGppcycsXG4gICAgJ3NqaXMnOiAnc2hpZnRqaXMnLFxuICAgICd3aW5kb3dzMzFqJzogJ3NoaWZ0amlzJyxcbiAgICAnbXMzMWonOiAnc2hpZnRqaXMnLFxuICAgICd4c2ppcyc6ICdzaGlmdGppcycsXG4gICAgJ3dpbmRvd3M5MzInOiAnc2hpZnRqaXMnLFxuICAgICdtczkzMic6ICdzaGlmdGppcycsXG4gICAgJzkzMic6ICdzaGlmdGppcycsXG4gICAgJ2NwOTMyJzogJ3NoaWZ0amlzJyxcblxuICAgICdldWNqcCc6IHtcbiAgICAgICAgdHlwZTogJ19kYmNzJyxcbiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVxdWlyZSgnLi90YWJsZXMvZXVjanAuanNvbicpIH0sXG4gICAgICAgIGVuY29kZUFkZDogeydcXHUwMGE1JzogMHg1QywgJ1xcdTIwM0UnOiAweDdFfSxcbiAgICB9LFxuXG4gICAgLy8gVE9ETzogS0RESSBleHRlbnNpb24gdG8gU2hpZnRfSklTXG4gICAgLy8gVE9ETzogSUJNIENDU0lEIDk0MiA9IENQOTMyLCBidXQgRjAtRjkgY3VzdG9tIGNoYXJzIGFuZCBvdGhlciBjaGFyIGNoYW5nZXMuXG4gICAgLy8gVE9ETzogSUJNIENDU0lEIDk0MyA9IFNoaWZ0X0pJUyA9IENQOTMyIHdpdGggb3JpZ2luYWwgU2hpZnRfSklTIGxvd2VyIDEyOCBjaGFycy5cblxuXG4gICAgLy8gPT0gQ2hpbmVzZS9HQksgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR0JLXG4gICAgLy8gV2UgbW9zdGx5IGltcGxlbWVudCBXM0MgcmVjb21tZW5kYXRpb246IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9lbmNvZGluZy8jZ2JrLWVuY29kZXJcblxuICAgIC8vIE9sZGVzdCBHQjIzMTIgKDE5ODEsIH43NjAwIGNoYXJzKSBpcyBhIHN1YnNldCBvZiBDUDkzNlxuICAgICdnYjIzMTInOiAnY3A5MzYnLFxuICAgICdnYjIzMTI4MCc6ICdjcDkzNicsXG4gICAgJ2diMjMxMjE5ODAnOiAnY3A5MzYnLFxuICAgICdjc2diMjMxMic6ICdjcDkzNicsXG4gICAgJ2NzaXNvNThnYjIzMTI4MCc6ICdjcDkzNicsXG4gICAgJ2V1Y2NuJzogJ2NwOTM2JyxcblxuICAgIC8vIE1pY3Jvc29mdCdzIENQOTM2IGlzIGEgc3Vic2V0IGFuZCBhcHByb3hpbWF0aW9uIG9mIEdCSy5cbiAgICAnd2luZG93czkzNic6ICdjcDkzNicsXG4gICAgJ21zOTM2JzogJ2NwOTM2JyxcbiAgICAnOTM2JzogJ2NwOTM2JyxcbiAgICAnY3A5MzYnOiB7XG4gICAgICAgIHR5cGU6ICdfZGJjcycsXG4gICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJlcXVpcmUoJy4vdGFibGVzL2NwOTM2Lmpzb24nKSB9LFxuICAgIH0sXG5cbiAgICAvLyBHQksgKH4yMjAwMCBjaGFycykgaXMgYW4gZXh0ZW5zaW9uIG9mIENQOTM2IHRoYXQgYWRkZWQgdXNlci1tYXBwZWQgY2hhcnMgYW5kIHNvbWUgb3RoZXIuXG4gICAgJ2diayc6IHtcbiAgICAgICAgdHlwZTogJ19kYmNzJyxcbiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVxdWlyZSgnLi90YWJsZXMvY3A5MzYuanNvbicpLmNvbmNhdChyZXF1aXJlKCcuL3RhYmxlcy9nYmstYWRkZWQuanNvbicpKSB9LFxuICAgIH0sXG4gICAgJ3hnYmsnOiAnZ2JrJyxcbiAgICAnaXNvaXI1OCc6ICdnYmsnLFxuXG4gICAgLy8gR0IxODAzMCBpcyBhbiBhbGdvcml0aG1pYyBleHRlbnNpb24gb2YgR0JLLlxuICAgIC8vIE1haW4gc291cmNlOiBodHRwczovL3d3dy53My5vcmcvVFIvZW5jb2RpbmcvI2diay1lbmNvZGVyXG4gICAgLy8gaHR0cDovL2ljdS1wcm9qZWN0Lm9yZy9kb2NzL3BhcGVycy9nYjE4MDMwLmh0bWxcbiAgICAvLyBodHRwOi8vc291cmNlLmljdS1wcm9qZWN0Lm9yZy9yZXBvcy9pY3UvZGF0YS90cnVuay9jaGFyc2V0L2RhdGEveG1sL2diLTE4MDMwLTIwMDAueG1sXG4gICAgLy8gaHR0cDovL3d3dy5raG5nYWkuY29tL2NoaW5lc2UvY2hhcm1hcC90YmxnYmsucGhwP3BhZ2U9MFxuICAgICdnYjE4MDMwJzoge1xuICAgICAgICB0eXBlOiAnX2RiY3MnLFxuICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9jcDkzNi5qc29uJykuY29uY2F0KHJlcXVpcmUoJy4vdGFibGVzL2diay1hZGRlZC5qc29uJykpIH0sXG4gICAgICAgIGdiMTgwMzA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVxdWlyZSgnLi90YWJsZXMvZ2IxODAzMC1yYW5nZXMuanNvbicpIH0sXG4gICAgICAgIGVuY29kZVNraXBWYWxzOiBbMHg4MF0sXG4gICAgICAgIGVuY29kZUFkZDogeyfigqwnOiAweEEyRTN9LFxuICAgIH0sXG5cbiAgICAnY2hpbmVzZSc6ICdnYjE4MDMwJyxcblxuXG4gICAgLy8gPT0gS29yZWFuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEVVQy1LUiwgS1NfQ181NjAxIGFuZCBLUyBYIDEwMDEgYXJlIGV4YWN0bHkgdGhlIHNhbWUuXG4gICAgJ3dpbmRvd3M5NDknOiAnY3A5NDknLFxuICAgICdtczk0OSc6ICdjcDk0OScsXG4gICAgJzk0OSc6ICdjcDk0OScsXG4gICAgJ2NwOTQ5Jzoge1xuICAgICAgICB0eXBlOiAnX2RiY3MnLFxuICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9jcDk0OS5qc29uJykgfSxcbiAgICB9LFxuXG4gICAgJ2NzZXVja3InOiAnY3A5NDknLFxuICAgICdjc2tzYzU2MDExOTg3JzogJ2NwOTQ5JyxcbiAgICAnZXVja3InOiAnY3A5NDknLFxuICAgICdpc29pcjE0OSc6ICdjcDk0OScsXG4gICAgJ2tvcmVhbic6ICdjcDk0OScsXG4gICAgJ2tzYzU2MDExOTg3JzogJ2NwOTQ5JyxcbiAgICAna3NjNTYwMTE5ODknOiAnY3A5NDknLFxuICAgICdrc2M1NjAxJzogJ2NwOTQ5JyxcblxuXG4gICAgLy8gPT0gQmlnNS9UYWl3YW4vSG9uZyBLb25nID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFRoZXJlIGFyZSBsb3RzIG9mIHRhYmxlcyBmb3IgQmlnNSBhbmQgY3A5NTAuIFBsZWFzZSBzZWUgdGhlIGZvbGxvd2luZyBsaW5rcyBmb3IgaGlzdG9yeTpcbiAgICAvLyBodHRwOi8vbW96dHcub3JnL2RvY3MvYmlnNS8gIGh0dHA6Ly93d3cuaGFpYmxlLmRlL2JydW5vL2NoYXJzZXRzL2NvbnZlcnNpb24tdGFibGVzL0JpZzUuaHRtbFxuICAgIC8vIFZhcmlhdGlvbnMsIGluIHJvdWdobHkgbnVtYmVyIG9mIGRlZmluZWQgY2hhcnM6XG4gICAgLy8gICogV2luZG93cyBDUCA5NTA6IE1pY3Jvc29mdCB2YXJpYW50IG9mIEJpZzUuIENhbm9uaWNhbDogaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy9NSUNTRlQvV0lORE9XUy9DUDk1MC5UWFRcbiAgICAvLyAgKiBXaW5kb3dzIENQIDk1MTogTWljcm9zb2Z0IHZhcmlhbnQgb2YgQmlnNS1IS1NDUy0yMDAxLiBTZWVtcyB0byBiZSBuZXZlciBwdWJsaWMuIGh0dHA6Ly9tZS5hYmVsY2hldW5nLm9yZy9hcnRpY2xlcy9yZXNlYXJjaC93aGF0LWlzLWNwOTUxL1xuICAgIC8vICAqIEJpZzUtMjAwMyAoVGFpd2FuIHN0YW5kYXJkKSBhbG1vc3Qgc3VwZXJzZXQgb2YgY3A5NTAuXG4gICAgLy8gICogVW5pY29kZS1hdC1vbiAoVUFPKSAvIE1vemlsbGEgMS44LiBGYWxsaW5nIG91dCBvZiB1c2Ugb24gdGhlIFdlYi4gTm90IHN1cHBvcnRlZCBieSBvdGhlciBicm93c2Vycy5cbiAgICAvLyAgKiBCaWc1LUhLU0NTICgtMjAwMSwgLTIwMDQsIC0yMDA4KS4gSG9uZyBLb25nIHN0YW5kYXJkLiBcbiAgICAvLyAgICBtYW55IHVuaWNvZGUgY29kZSBwb2ludHMgbW92ZWQgZnJvbSBQVUEgdG8gU3VwcGxlbWVudGFyeSBwbGFuZSAoVSsyWFhYWCkgb3ZlciB0aGUgeWVhcnMuXG4gICAgLy8gICAgUGx1cywgaXQgaGFzIDQgY29tYmluaW5nIHNlcXVlbmNlcy5cbiAgICAvLyAgICBTZWVtcyB0aGF0IE1vemlsbGEgcmVmdXNlZCB0byBzdXBwb3J0IGl0IGZvciAxMCB5cnMuIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjQzMSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTAyOTlcbiAgICAvLyAgICBiZWNhdXNlIGJpZzUtaGtzY3MgaXMgdGhlIG9ubHkgZW5jb2RpbmcgdG8gaW5jbHVkZSBhc3RyYWwgY2hhcmFjdGVycyBpbiBub24tYWxnb3JpdGhtaWMgd2F5LlxuICAgIC8vICAgIEltcGxlbWVudGF0aW9ucyBhcmUgbm90IGNvbnNpc3RlbnQgd2l0aGluIGJyb3dzZXJzOyBzb21ldGltZXMgbGFiZWxlZCBhcyBqdXN0IGJpZzUuXG4gICAgLy8gICAgTVMgSW50ZXJuZXQgRXhwbG9yZXIgc3dpdGNoZXMgZnJvbSBiaWc1IHRvIGJpZzUtaGtzY3Mgd2hlbiBhIHBhdGNoIGFwcGxpZWQuXG4gICAgLy8gICAgR3JlYXQgZGlzY3Vzc2lvbiAmIHJlY2FwIG9mIHdoYXQncyBnb2luZyBvbiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MTI0NzAjYzMxXG4gICAgLy8gICAgSW4gdGhlIGVuY29kZXIsIGl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gc3VwcG9ydCBlbmNvZGluZyBvbGQgUFVBIG1hcHBpbmdzIHRvIEJpZzUgYnl0ZXMgc2VxLXMuXG4gICAgLy8gICAgT2ZmaWNpYWwgc3BlYzogaHR0cDovL3d3dy5vZ2Npby5nb3YuaGsvZW4vYnVzaW5lc3MvdGVjaF9wcm9tb3Rpb24vY2NsaS90ZXJtcy9kb2MvMjAwM2NtcF8yMDA4LnR4dFxuICAgIC8vICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cub2djaW8uZ292LmhrL3RjL2J1c2luZXNzL3RlY2hfcHJvbW90aW9uL2NjbGkvdGVybXMvZG9jL2hrc2NzLTIwMDgtYmlnNS1pc28udHh0XG4gICAgLy8gXG4gICAgLy8gQ3VycmVudCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0byBkZWFsIHdpdGggQmlnNSgtSEtTQ1MpIGlzIGluIHRoZSBFbmNvZGluZyBTdGFuZGFyZCwgaHR0cDovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy8jYmlnNS1lbmNvZGVyXG4gICAgLy8gVW5pY29kZSBtYXBwaW5nIChodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9PQlNPTEVURS9FQVNUQVNJQS9PVEhFUi9CSUc1LlRYVCkgaXMgc2FpZCB0byBiZSB3cm9uZy5cblxuICAgICd3aW5kb3dzOTUwJzogJ2NwOTUwJyxcbiAgICAnbXM5NTAnOiAnY3A5NTAnLFxuICAgICc5NTAnOiAnY3A5NTAnLFxuICAgICdjcDk1MCc6IHtcbiAgICAgICAgdHlwZTogJ19kYmNzJyxcbiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVxdWlyZSgnLi90YWJsZXMvY3A5NTAuanNvbicpIH0sXG4gICAgfSxcblxuICAgIC8vIEJpZzUgaGFzIG1hbnkgdmFyaWF0aW9ucyBhbmQgaXMgYW4gZXh0ZW5zaW9uIG9mIGNwOTUwLiBXZSB1c2UgRW5jb2RpbmcgU3RhbmRhcmQncyBhcyBhIGNvbnNlbnN1cy5cbiAgICAnYmlnNSc6ICdiaWc1aGtzY3MnLFxuICAgICdiaWc1aGtzY3MnOiB7XG4gICAgICAgIHR5cGU6ICdfZGJjcycsXG4gICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJlcXVpcmUoJy4vdGFibGVzL2NwOTUwLmpzb24nKS5jb25jYXQocmVxdWlyZSgnLi90YWJsZXMvYmlnNS1hZGRlZC5qc29uJykpIH0sXG4gICAgICAgIGVuY29kZVNraXBWYWxzOiBbMHhhMmNjXSxcbiAgICB9LFxuXG4gICAgJ2NuYmlnNSc6ICdiaWc1aGtzY3MnLFxuICAgICdjc2JpZzUnOiAnYmlnNWhrc2NzJyxcbiAgICAneHhiaWc1JzogJ2JpZzVoa3NjcycsXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2RiY3MtZGF0YS5qc1xuLy8gbW9kdWxlIGlkID0gMTQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gW1tcIjBcIixcIlxcdTAwMDBcIiwxMjhdLFtcImExXCIsXCLvvaFcIiw2Ml0sW1wiODE0MFwiLFwi44CA44CB44CC77yM77yO44O777ya77yb77yf77yB44Kb44KcwrTvvYDCqO+8vu+/o++8v+ODveODvuOCneOCnuOAg+S7neOAheOAhuOAh+ODvOKAleKAkO+8j++8vO+9nuKIpe+9nOKApuKApeKAmOKAmeKAnOKAne+8iO+8ieOAlOOAle+8u++8ve+9m++9neOAiFwiLDksXCLvvIvvvI3CscOXXCJdLFtcIjgxODBcIixcIsO377yd4omg77yc77ye4omm4omn4oie4oi04pmC4pmAwrDigLLigLPihIPvv6XvvITvv6Dvv6HvvIXvvIPvvIbvvIrvvKDCp+KYhuKYheKXi+KXj+KXjuKXh+KXhuKWoeKWoOKWs+KWsuKWveKWvOKAu+OAkuKGkuKGkOKGkeKGk+OAk1wiXSxbXCI4MWI4XCIsXCLiiIjiiIviiobiiofiioLiioPiiKriiKlcIl0sW1wiODFjOFwiLFwi4oin4oio77+i4oeS4oeU4oiA4oiDXCJdLFtcIjgxZGFcIixcIuKIoOKKpeKMkuKIguKIh+KJoeKJkuKJquKJq+KImuKIveKIneKIteKIq+KIrFwiXSxbXCI4MWYwXCIsXCLihKvigLDima/ima3imarigKDigKHCtlwiXSxbXCI4MWZjXCIsXCLil69cIl0sW1wiODI0ZlwiLFwi77yQXCIsOV0sW1wiODI2MFwiLFwi77yhXCIsMjVdLFtcIjgyODFcIixcIu+9gVwiLDI1XSxbXCI4MjlmXCIsXCLjgYFcIiw4Ml0sW1wiODM0MFwiLFwi44KhXCIsNjJdLFtcIjgzODBcIixcIuODoFwiLDIyXSxbXCI4MzlmXCIsXCLOkVwiLDE2LFwizqNcIiw2XSxbXCI4M2JmXCIsXCLOsVwiLDE2LFwiz4NcIiw2XSxbXCI4NDQwXCIsXCLQkFwiLDUsXCLQgdCWXCIsMjVdLFtcIjg0NzBcIixcItCwXCIsNSxcItGR0LZcIiw3XSxbXCI4NDgwXCIsXCLQvlwiLDE3XSxbXCI4NDlmXCIsXCLilIDilILilIzilJDilJjilJTilJzilKzilKTilLTilLzilIHilIPilI/ilJPilJvilJfilKPilLPilKvilLvilYvilKDilK/ilKjilLfilL/ilJ3ilLDilKXilLjilYJcIl0sW1wiODc0MFwiLFwi4pGgXCIsMTksXCLihaBcIiw5XSxbXCI4NzVmXCIsXCLjjYnjjJTjjKLjjY3jjJjjjKfjjIPjjLbjjZHjjZfjjI3jjKbjjKPjjKvjjYrjjLvjjpzjjp3jjp7jjo7jjo/jj4TjjqFcIl0sW1wiODc3ZVwiLFwi4427XCJdLFtcIjg3ODBcIixcIuOAneOAn+KEluOPjeKEoeOKpFwiLDQsXCLjiLHjiLLjiLnjjb7jjb3jjbziiZLiiaHiiKviiK7iiJHiiJriiqXiiKDiiJ/iir/iiLXiiKniiKpcIl0sW1wiODg5ZlwiLFwi5Lqc5ZSW5aiD6Zi/5ZOA5oSb5oyo5ae26YCi6JG16Iyc56mQ5oKq5o+h5ril5pet6JGm6Iqm6a+15qKT5Zyn5pah5omx5a6b5aeQ6Jm76aO057Wi57a+6a6O5oiW57Kf6KK35a6J5bq15oyJ5pqX5qGI6ZeH6Z6N5p2P5Lul5LyK5L2N5L6d5YGJ5Zuy5aS35aeU5aiB5bCJ5oOf5oSP5oWw5piT5qSF54K655WP55Ww56e757at57ev6IOD6JCO6KGj6KyC6YGV6YG65Yy75LqV5Lql5Z+f6IKy6YOB56Ov5LiA5aOx5rqi6YC456iy6Iyo6IqL6bCv5YWB5Y2w5ZK95ZOh5Zug5ae75byV6aOy5rer6IOk6JStXCJdLFtcIjg5NDBcIixcIumZoumZsOmaoOmfu+WQi+WPs+Wuh+eDj+e+vei/gumbqOWNr+m1nOequuS4keeik+iHvOa4puWYmOWUhOasneiUmumwu+WnpeWOqea1pueTnOmWj+WZguS6kemBi+mbsuiNj+mkjOWPoeWWtuWssOW9seaYoOabs+aghOawuOazs+a0qeeRm+ebiOepjumgtOiLseihm+ipoOmLrea2sueWq+ebiumnheaCpuisgei2iumWsuamjuWOreWGhlwiXSxbXCI4OTgwXCIsXCLlnJLloLDlpYTlrrTlu7bmgKjmjqnmj7Tmsr/mvJTngo7nhJTnhZnnh5XnjL/nuIHoibboi5HolpfpgaDpiZvptJvloanmlrzmsZrnlKXlh7nlpK7lpaXlvoDlv5zmirzml7rmqKrmrKfmrrTnjovnv4HopZbptKzptI7pu4TlsqHmspbojbvlhITlsYvmhrboh4bmobbniaHkuZnkv7rljbjmganmuKnnqY/pn7PkuIvljJbku67kvZXkvL3kvqHkvbPliqDlj6/lmInlpI/lq4Hlrrblr6Hnp5HmmofmnpzmnrbmrYzmsrPngavnj4Lnpo3npr7nqLznrofoirHoi5vojITojbfoj6/oj5PonaboqrLlmKnosqjov6bpgY7pnJ7omorkv4Tls6jmiJHniZnnlLvoh6Xoir3om77os4Dpm4XppJPpp5Xku4vkvJrop6Plm57loYrlo4rlu7vlv6vmgKrmgpTmgaLmh5DmiJLmi5DmlLlcIl0sW1wiOGE0MFwiLFwi6a2B5pmm5qKw5rW354Gw55WM55qG57W16Iql6J+56ZaL6ZqO6LKd5Yex5Yq+5aSW5ZKz5a6z5bSW5oWo5qaC5rav56KN6JOL6KGX6Kmy6Y6n6aq45rWs6aao6JuZ5Z6j5p+/6JuO6YiO5YqD5ZqH5ZCE5buT5ouh5pK55qC85qC45q67542y56K656mr6Kaa6KeS6LWr6LyD6YOt6Zaj6ZqU6Z2p5a2m5bKz5qW96aGN6aGO5o6b56yg5qirXCJdLFtcIjhhODBcIixcIuapv+aitumwjea9n+WJsuWWneaBsOaLrOa0u+a4h+a7keiRm+ikkOi9hOS4lOmwueWPtuakm+aouumehOagquWFnOerg+iSsumHnOmOjOWZm+m0qOagouiMheiQseeypeWIiOiLheeTpuS5vuS+g+WGoOWvkuWIiuWLmOWLp+W3u+WWmuWgquWnpuWujOWumOWvm+W5suW5ueaCo+aEn+aFo+aGvuaPm+aVouafkeahk+ajuuasvuatk+axl+a8oua+l+a9heeSsOeUmOebo+eci+erv+euoeewoee3qee8tue/sOiCneiJpuiOnuims+irjOiyq+mChOmRkemWk+mWkemWoumZpemfk+mkqOiImOS4uOWQq+WyuOW3jOeOqeeZjOecvOWyqee/q+i0i+mbgemgkemhlOmhmOS8geS8juWNseWWnOWZqOWfuuWlh+WsieWvhOWykOW4jOW5vuW/jOaPruacuuaXl+aXouacn+aji+ajhFwiXSxbXCI4YjQwXCIsXCLmqZ/luLDmr4XmsJfmsb3nlb/npYjlraPnqIDntIDlvr3opo/oqJjosrTotbfou4zovJ3po6LpqI7prLzkuoDlgb3lhIDlppPlrpzmiK/mioDmk6zmrLrniqDnlpHnpYfnvqnon7voqrzorbDmjqzoj4rpnqDlkInlkIPllqvmoZTmqZjoqbDnoKfmnbXpu43ljbTlrqLohJromZDpgIbkuJjkuYXku4fkvJHlj4rlkLjlrq7lvJPmgKXmlZFcIl0sW1wiOGI4MFwiLFwi5py95rGC5rGy5rOj54G455CD56m256qu56yI57Sa57O+57Wm5pen54mb5Y675bGF5beo5ouS5oug5oyZ5rig6Jma6Kix6Led6Yu45ryB56am6a2a5Lqo5Lqr5Lqs5L6b5L6g5YOR5YWH56u25YWx5Ye25Y2U5Yyh5Y2/5Y+r5Zas5aKD5bOh5by35b2K5oCv5oGQ5oGt5oyf5pWZ5qmL5rOB54uC54ut55+v6IO46ISF6IiI6JWO6YO36Y+h6Z+/6aWX6ama5Luw5Yed5bCt5pqB5qWt5bGA5puy5qW1546J5qGQ57KB5YOF5Yuk5Z2H5be+6Yym5pak5qyj5qy955C056aB56a9562L57eK6Iq56I+M6KG/6KWf6Ky56L+R6YeR5ZCf6YqA5Lmd5YC25Y+l5Yy654uX546W55+p6Ium6Lqv6aeG6aeI6aeS5YW35oSa6Jme5Zaw56m65YG25a+T6YGH6ZqF5Liy5qub6Yen5bGR5bGIXCJdLFtcIjhjNDBcIixcIuaOmOeqn+ayk+mdtOi9oeeqqueGiumaiOeyguagl+e5sOahkemNrOWLsuWQm+iWq+iok+e+pOi7jemDoeWNpuiiiOelgeS/guWCvuWIkeWFhOWVk+WcreePquWei+WlkeW9ouW+hOaBteaFtuaFp+aGqeaOsuaQuuaVrOaZr+ahgua4k+eVpueoveezu+e1jOe2mee5i+e9q+iMjuiNiuibjeioiOipo+itpui7vemgmum2j+iKuOi/jumvqFwiXSxbXCI4YzgwXCIsXCLliofmiJ/mkoPmv4DpmpnmoYHlgpHmrKDmsbrmvZTnqbTntZDooYDoqKPmnIjku7blgLnlgKblgaXlhbzliLjliaPllqflnI/loIXlq4zlu7rmhrLmh7jmi7PmjbLmpJzmqKnnib3niqznjK7noJTnoa/ntbnnnIzogqnopovorJnos6Lou5LpgaPpjbXpmbrpoZXpqJPpubjlhYPljp/ljrPlubvlvKbmuJvmupDnjoTnj77ntYPoiLfoqIDoq7rpmZDkuY7lgIvlj6Tlkbzlm7rlp5HlraTlt7HluqvlvKfmiLjmlYXmnq/muZbni5Dns4roorTogqHog6Hoj7DomY7oqofot6jpiLfpm4fpoafpvJPkupTkupLkvI3ljYjlkYnlkL7lqK/lvozlvqHmgp/moqfmqo7nkZrnooHoqp7oqqTorbfphpDkuZ7pr4nkuqTkvbzkvq/lgJnlgJblhYnlhazlip/lirnli77ljprlj6PlkJFcIl0sW1wiOGQ0MFwiLFwi5ZCO5ZaJ5Z2R5Z6i5aW95a2U5a2d5a6P5bel5ben5be35bm45bqD5bqa5bq35byY5oGS5oWM5oqX5ouY5o6n5pS75piC5pmD5pu05p2t5qCh5qKX5qeL5rGf5rSq5rWp5riv5rqd55Sy55qH56Gs56i/57Og57SF57SY57We57ax6ICV6ICD6IKv6IKx6IWU6IaP6Iiq6I2S6KGM6KGh6Kyb6LKi6LO86YOK6YW16Ymx56C/6Yu86Zak6ZmNXCJdLFtcIjhkODBcIixcIumghemmmemrmOm0u+WJm+WKq+WPt+WQiOWjleaLt+a/oOixqui9n+m6ueWFi+WIu+WRiuWbveepgOmFt+m1oOm7kueNhOa8ieiFsOeUkeW/veaDmumqqOeLm+i+vOatpOmgg+S7iuWbsOWdpOWivuWpmuaBqOaHh+aYj+aYhuagueaisea3t+eXlee0uuiJrumtguS6m+S9kOWPieWUhuW1r+W3puW3ruafu+aymeeRs+egguipkOmOluijn+WdkOW6p+aMq+WCteWCrOWGjeacgOWTieWhnuWmu+WusOW9qeaJjeaOoeagveats+a4iOeBvemHh+eKgOegleegpuelreaWjue0sOiPnOijgei8iemam+WJpOWcqOadkOe9quiyoeWGtOWdgumYquWguuamiuiCtOWSsuW0juWfvOeilem3uuS9nOWJiuWSi+aQvuaYqOaclOafteeqhOetlue0oumMr+ahnOmureesueWMmeWGiuWIt1wiXSxbXCI4ZTQwXCIsXCLlr5/mi7bmkq7mk6bmnK3mrrrolqnpm5HnmpDpr5bmjYzpjIbprqvnmr/mmZLkuInlgpjlj4LlsbHmg6jmkpLmlaPmoZ/nh6bnj4rnlKPnrpfnuoLompXoroPos5vphbjppJDmlqzmmqvmrovku5Xku5TkvLrkvb/liLrlj7jlj7Lll6Plm5vlo6vlp4vlp4nlp7/lrZDlsY3luILluKvlv5fmgJ3mjIfmlK/lrZzmlq/mlr3ml6jmnp3mraJcIl0sW1wiOGU4MFwiLFwi5q275rCP542F56WJ56eB57O457SZ57Sr6IKi6ISC6Iez6KaW6Kme6Kmp6Kmm6KqM6Kuu6LOH6LOc6ZuM6aO85q2v5LqL5Ly85L6N5YWQ5a2X5a+65oWI5oyB5pmC5qyh5ruL5rK754i+55K955eU56OB56S66ICM6ICz6Ieq6JKU6L6e5rGQ6bm/5byP6K2Y6bSr56u66Lu45a6N6Zur5LiD5Y+x5Z+35aSx5auJ5a6k5oKJ5rm/5ryG55a+6LOq5a6f6JSA56+g5YGy5p+06Iqd5bGh6JWK57ie6IiO5YaZ5bCE5o2o6LWm5pac54Wu56S+57SX6ICF6Kyd6LuK6YGu6JuH6YKq5YCf5Yu65bC65p2T54G854i16YWM6YeI6Yyr6Iul5a+C5byx5oO55Li75Y+W5a6I5omL5pyx5q6K54up54+g56iu6IWr6Laj6YWS6aaW5YSS5Y+X5ZGq5a+/5o6I5qi557as6ZyA5Zua5Y+O5ZGoXCJdLFtcIjhmNDBcIixcIuWul+WwseW3nuS/ruaEgeaLvua0suengOeni+e1gue5jee/kuiHreiIn+iSkOihhuilsuiukOi5tOi8r+mAsemFi+mFrOmbhumGnOS7gOS9j+WFheWNgeW+k+aIjuaflOaxgea4i+eNo+e4pumHjemKg+WPlOWkmeWuv+a3keelnee4rueym+WhvueGn+WHuuihk+i/sOS/iuWzu+aYpeeerOero+iInOmnv+WHhuW+quaXrOalr+auiea3s1wiXSxbXCI4ZjgwXCIsXCLmupbmvaTnm77ntJTlt6HpgbXphofpoIblh6bliJ3miYDmmpHmm5nmuJrlurbnt5LnvbLmm7jolq/ol7foq7jliqnlj5nlpbPluo/lvpDmgZXpi6TpmaTlgrflhJ/li53ljKDljYflj6zlk6jllYbllLHlmJflpajlpr7lqLzlrrXlsIblsI/lsJHlsJrluoTluorlu6DlvbDmib/mioTmi5vmjozmjbfmmIfmmIzmmK3mmbbmnb7moqLmqJ/mqLXmsrzmtojmuInmuZjnhLznhKbnhafnl4fnnIHnoZ3npIHnpaXnp7Dnq6DnrJHnsqfntLnogpboj5bokovolYnooZ3oo7PoqJ/oqLzoqZToqbPosaHos57phqTpiabpjb7pkJjpmpzpnpjkuIrkuIjkuJ7kuZflhpflibDln47loLTlo4zlrKLluLjmg4Xmk77mnaHmnZbmtYTnirbnlbPnqaPokrjorbLphrjpjKDlmLHln7Tpo75cIl0sW1wiOTA0MFwiLFwi5out5qSN5q6W54et57mU6IG36Imy6Kem6aOf6J2V6L6x5bC75Ly45L+h5L615ZSH5aig5a+d5a+p5b+D5oWO5oyv5paw5pmL5qOu5qab5rW45rex55Sz55a555yf56We56em57Sz6Iej6Iqv6Jaq6Kaq6Ki66Lqr6L6b6YCy6Yed6ZyH5Lq65LuB5YiD5aG15aOs5bCL55Sa5bC96IWO6KiK6L+F6Zmj6Z2t56yl6KuP6aCI6YWi5Zuz5Y6oXCJdLFtcIjkwODBcIixcIumAl+WQueWeguW4peaOqOawtOeCiuedoeeyi+e/oOihsOmBgumFlOmMkOmMmOmaj+eRnumrhOW0h+W1qeaVsOaeoui2qOmbm+aNruadieakmeiPhemgl+mbgOijvua+hOaRuuWvuOS4lueArOeVneaYr+WHhOWItuWLouWnk+W+geaAp+aIkOaUv+aVtOaYn+aZtOajsuagluato+a4heeJsueUn+ebm+eyvuiBluWjsOijveilv+iqoOiqk+iri+mAnemGkumdkumdmeaWieeojuiEhumau+W4reaDnOaImuaWpeaYlOaekOefs+epjeexjee4vuiEiuiyrOi1pOi3oei5n+eiqeWIh+aLmeaOpeaRguaKmOioreeqg+evgOiqrOmbque1tuiIjOidieS7meWFiOWNg+WNoOWuo+WwguWwluW3neaIpuaJh+aSsOagk+agtOaziea1hea0l+afk+a9nOeFjueFveaXi+epv+euree3mlwiXSxbXCI5MTQwXCIsXCLnuYrnvqjohbroiJvoiLnolqboqa7os47ot7Xpgbjpgbfpiq3pipHploPprq7liY3lloTmvLjnhLblhajnpoXnuZXohrPns47lmYzloZHlsqjmjqrmm77mm73mpZrni5nnlo/nlo7npI7npZbnp5/nspfntKDntYTomIfoqLTpmLvpgaHpvKDlg6flibXlj4zlj6LlgInllqrlo67lpY/niL3lrovlsaTljJ3mg6Pmg7PmjZzmjoPmjL/mjrtcIl0sW1wiOTE4MFwiLFwi5pON5pep5pu55bej5qeN5qe95ryV54el5LqJ55ep55u456qT57Of57eP57ac6IGh6I2J6I2Y6JGs6JK86Je76KOF6LWw6YCB6YGt6Y6X6Zyc6aiS5YOP5aKX5oaO6IeT6JS16LSI6YCg5L+D5YG05YmH5Y2z5oGv5o2J5p2f5ris6Laz6YCf5L+X5bGe6LOK5peP57aa5Y2S6KKW5YW25o+D5a2Y5a2r5bCK5pCN5p2R6YGc5LuW5aSa5aSq5rGw6KmR5ZS+5aCV5aal5oOw5omT5p+B6Ii15qWV6ZmA6aeE6aio5L2T5aCG5a++6ICQ5bKx5biv5b6F5oCg5oWL5oi05pu/5rOw5rue6IOO6IW/6IuU6KKL6LK46YCA6YCu6ZqK6bub6a+b5Luj5Y+w5aSn56ys6YaN6aGM6be55rud54Cn5Y2T5ZWE5a6F5omY5oqe5ouT5rKi5r+v55Ci6KiX6ZC45r+B6Ku+6Iy45Yen6Ju45Y+qXCJdLFtcIjkyNDBcIixcIuWPqeS9humBlOi+sOWlquiEseW3veerqui+v+ajmuiwt+eLuOmxiOaoveiqsOS4ueWNmOWYhuWdpuaLheaOouaXpuatjua3oea5m+eCreefreerr+euque2u+iAveiDhuibi+iqlemNm+Wbo+Wjh+W8vuaWreaaluaqgOauteeUt+irh+WApOefpeWcsOW8m+aBpeaZuuaxoOeXtOeomue9ruiHtOicmOmBhemms+evieeVnOerueetkeiThFwiXSxbXCI5MjgwXCIsXCLpgJDnp6nnqpLojLblq6HnnYDkuK3ku7Llrpnlv6Dmir3mmLzmn7Hms6jomavoobfoqLvphY7pi7Ppp5DmqJfngKbnjKroi6fokZfosq/kuIHlhYblh4vllovlr7XluJbluLPluoHlvJTlvLXlvavlvrTmh7LmjJHmmqLmnJ3mva7niZLnlLrnnLrogbTohLnohbjonbboqr/oq5zotoXot7PpiprplbfpoILps6Xli4XmjZfnm7TmnJXmsojnj43os4Ppjq7pmbPmtKXlopzmpI7mp4zov73pjprnl5vpgJrloZrmoILmjrTmp7vkvYPmvKzmn5jovrvolKbntrTpjZTmpL/mvbDlnarlo7flrKzntKzniKrlkIrph6PptrTkuq3kvY7lgZzlgbXliYPosp7lkYjloKTlrprluJ3lupXluq3lu7flvJ/mgozmirXmjLrmj5Dmoq/msYDnoofnpo7nqIvnt6DoiYfoqILoq6bouYTpgJNcIl0sW1wiOTM0MFwiLFwi6YK46YSt6YeY6byO5rOl5pGY5pOi5pW15ru055qE56yb6YGp6Y+R5rq65ZOy5b655pKk6L2N6L+t6YmE5YW45aGr5aSp5bGV5bqX5re757qP55Sc6LK86Lui6aGb54K55Lyd5q6/5r6x55Sw6Zu75YWO5ZCQ5aC15aGX5aas5bGg5b6S5paX5p2c5rih55m76I+f6LOt6YCU6YO96Y2N56Cl56C65Yqq5bqm5Zyf5aW05oCS5YCS5YWa5YasXCJdLFtcIjkzODBcIixcIuWHjeWIgOWUkOWhlOWhmOWll+WuleWztuW2i+aCvOaKleaQreadseahg+aivOajn+ebl+a3mOa5r+a2m+eBr+eHiOW9k+eXmOelt+etieetlOetkuezlue1seWIsOiRo+iVqeiXpOiojuishOixhui4j+mAg+mAj+mQmemZtumgremosOmXmOWDjeWLleWQjOWgguWwjuaGp+aSnua0nuees+erpeiDtOiQhOmBk+mKheWzoOm0h+WMv+W+l+W+s+a2nOeJueedo+emv+evpOavkueLrOiqreagg+apoeWHuOeqgeaktOWxiumztuiLq+WvhemFieeAnuWZuOWxr+aDh+aVpuayjOixmumBgemgk+WRkeabh+mIjeWliOmCo+WGheS5jeWHquiWmeisjueBmOaNuumNi+aloummtOe4hOeVt+WNl+aloOi7n+mbo+axneS6jOWwvOW8kOi/qeWMguizkeiCieiZueW7v+aXpeS5s+WFpVwiXSxbXCI5NDQwXCIsXCLlpoLlsL/pn67ku7vlporlv43oqo3mv6HnprDnpaLlr6fokbHnjKvnhrHlubTlv7Xmjbvmkprnh4PnspjkuYPlu7zkuYvln5zlmqLmgqnmv4PntI3og73ohLPohr/ovrLoppfomqTlt7Tmiormkq3opofmnbfms6LmtL7nkLbnoLTlqYbnvbXoiq3ppqzkv7Plu4Pmi53mjpLmlZfmna/nm4PniYzog4zogrrovKnphY3lgI3ln7nlqpLmooVcIl0sW1wiOTQ4MFwiLFwi5qWz54Wk54u96LK35aOy6LOg6Zmq6YCZ6J2/56ek55+n6JCp5Lyv5Yml5Y2a5ouN5p+P5rOK55m9566U57KV6Ii26JaE6L+r5pud5ryg54iG57ib6I6r6aeB6bqm5Ye9566x56Gy56646IKH562I5quo5bmh6IKM55WR55Wg5YWr6Ymi5rqM55m66YaX6auq5LyQ572w5oqc562P6Zal6bOp5Zm65aGZ6Juk6Zq85Ly05Yik5Y2K5Y+N5Y+b5biG5pCs5paR5p2/5rC+5rGO54mI54qv54+t55WU57mB6Iis6Jep6LKp56+E6YeG54Wp6aCS6aOv5oy95pmp55Wq55uk56OQ6JWD6Juu5Yyq5Y2R5ZCm5aaD5bqH5b285oKy5omJ5om55oqr5paQ5q+U5rOM55ay55qu56KR56eY57eL57236IKl6KKr6Kq56LK76YG/6Z2e6aOb5qiL57C45YKZ5bC+5b6u5p6H5q+Y55C155yJ576OXCJdLFtcIjk1NDBcIixcIum8u+afiueol+WMueeWi+mrreW9puiGneiPseiCmOW8vOW/heeVouethumAvOahp+Wnq+Wqm+e0kOeZvuisrOS/teW9quaomeawt+a8gueTouelqOihqOipleixueW7n+aPj+eXheenkuiLl+mMqOmLsuiSnOibremwreWTgeW9rOaWjOa1nOeAleiyp+izk+mgu+aVj+eTtuS4jeS7mOWfoOWkq+WppuWvjOWGqOW4g+W6nOaAluaJtuaVt1wiXSxbXCI5NTgwXCIsXCLmlqfmma7mta7niLbnrKbohZDohproipnorZzosqDos6botbTpmJzpmYTkvq7mkqvmraboiJ7okaHolarpg6jlsIHmpZPpoqjokbrolZfkvI/lia/lvqnluYXmnI3npo/ohbnopIfopobmt7XlvJfmiZXmsrjku4/nianprpLliIblkLvlmbTlorPmhqTmia7nhJrlpa7nsonns57ntJvpm7DmlofogZ7kuJnkvbXlhbXloYDluaPlubPlvIrmn4TkuKbolL3plonpmZvnsbPpoIHlg7vlo4HnmZbnoqfliKXnnqXolJHnroblgY/lpInniYfnr4fnt6jovrrov5TpgY3kvr/li4nlqKnlvIHpnq3kv53oiJfpi6rlnIPmjZXmrannlKvoo5zovJTnqYLli5/lopPmhZXmiIrmmq7mr43nsL/oj6nlgKPkv7jljIXlkYbloLHlpYnlrp3ls7Dls6/ltKnlupbmirHmjafmlL7mlrnmnItcIl0sW1wiOTY0MFwiLFwi5rOV5rOh54O556Cy57ir6IOe6Iqz6JCM6JOs6JyC6KSS6Kiq6LGK6YKm6YuS6aO96bOz6bWs5LmP5Lqh5YKN5YmW5Z2K5aao5bi95b+Y5b+Z5oi/5pq05pyb5p+Q5qOS5YaS57Sh6IKq6Iao6KyA6LKM6LK/6Ym+6Ziy5ZCg6aCs5YyX5YOV5Y2c5aKo5pKy5py054mn552m56mG6Yem5YuD5rKh5q6G5aCA5bmM5aWU5pys57+75Yeh55uGXCJdLFtcIjk2ODBcIixcIuaRqeejqOmtlOm6u+Wfi+WmueaYp+aemuavjuWTqeanmeW5leiGnOaelemuquafvumxkuahneS6puS/o+WPiOaKueacq+ayq+i/hOS+ree5rem6v+S4h+aFoua6gOa8q+iUk+WRs+acqumtheW3s+euleWyrOWvhuicnOa5iuiTkeeolOiEiOWmmeeyjeawkeecoOWLmeWkoueEoeeJn+efm+mcp+m1oeaki+Wpv+WomOWGpeWQjeWRveaYjuebn+i/t+mKmOmztOWnqueJnea7heWFjeajiee2v+e3rOmdoum6uuaRuOaooeiMguWmhOWtn+avm+eMm+ebsue2suiAl+iSmeWEsuacqOm7meebruadouWLv+mkheWwpOaIu+exvuiysOWVj+aCtue0i+mWgOWMgeS5n+WGtuWknOeIuuiAtumHjuW8peefouWOhOW9uee0hOiWrOios+i6jemdluafs+iWrumRk+aEieaEiOayueeZklwiXSxbXCI5NzQwXCIsXCLoq63ovLjllK/kvZHlhKrli4flj4vlrqXlub3mgqDmhoLmj5bmnInmn5rmuafmtoznjLbnjLfnlLHnpZDoo5XoqpjpgYrpgpHpg7Xpm4Tono3lpJXkuojkvZnkuI7oqonovL/poJDlgq3lubzlppblrrnlurjmj5rmj7rmk4Hmm5zmpYrmp5jmtIvmurbnhpTnlKjnqq/nvorogIDokYnok4nopoHorKHouIrpgaXpmb3ppIrmhb7mipHmrLJcIl0sW1wiOTc4MFwiLFwi5rKD5rW057+M57+85reA576F6J666KO45p2l6I6x6aC86Zu35rSb57Wh6JC96YWq5Lmx5Y215bWQ5qyE5r+r6JeN6Jit6Kan5Yip5ZCP5bGl5p2O5qKo55CG55KD55ei6KOP6KOh6YeM6Zui6Zm45b6L546H56uL6JGO5o6g55Wl5YqJ5rWB5rqc55CJ55WZ56Gr57KS6ZqG56uc6b6N5L625oWu5peF6Jmc5LqG5Lqu5YOa5Lih5YeM5a+u5paZ5qKB5ra854yf55mC556t56ic57On6Imv6KuS6YG86YeP6Zm16aCY5Yqb57eR5YCr5Y6Y5p6X5reL54eQ55Cz6Ieo6Lyq6Zqj6bGX6bqf55Gg5aGB5raZ57Sv6aGe5Luk5Ly25L6L5Ya35Yqx5ba65oCc546y56S86IuT6Yi06Zq36Zu26ZyK6bqX6b2i5pqm5q205YiX5Yqj54OI6KOC5buJ5oGL5oaQ5ryj54WJ57C+57e06IGvXCJdLFtcIjk4NDBcIixcIuiTrumAo+mMrOWRgumtr+ark+eCieizgui3r+mcsuWKtOWpgeW7iuW8hOacl+alvOamlOa1qua8j+eJoueLvOevreiAgeiBvuidi+mDjuWFrem6k+emhOiCi+mMsuirluWAreWSjOipseatquizhOiEh+aDkeaeoOm3suS6meS6mOmwkOipq+iXgeiVqOakgOa5vueil+iFlVwiXSxbXCI5ODlmXCIsXCLlvIzkuJDkuJXkuKrkuLHkuLbkuLzkuL/kuYLkuZbkuZjkuoLkuoXosavkuoroiJLlvI3kuo7kup7kup/kuqDkuqLkurDkurPkurbku47ku43ku4Tku4bku4Lku5fku57ku63ku5/ku7fkvInkvZrkvLDkvZvkvZ3kvZfkvYfkvbbkvojkvo/kvpjkvbvkvankvbDkvpHkva/kvobkvpblhJjkv5Tkv5/kv47kv5jkv5vkv5Hkv5rkv5Dkv6Tkv6XlgJrlgKjlgJTlgKrlgKXlgIXkvJzkv7blgKHlgKnlgKzkv77kv6/lgJHlgIblgYPlgYfmnIPlgZXlgZDlgYjlgZrlgZblgazlgbjlgoDlgprlgoXlgrTlgrJcIl0sW1wiOTk0MFwiLFwi5YOJ5YOK5YKz5YOC5YOW5YOe5YOl5YOt5YOj5YOu5YO55YO15YSJ5YSB5YSC5YSW5YSV5YSU5YSa5YSh5YS65YS35YS85YS75YS/5YWA5YWS5YWM5YWU5YWi56u45YWp5YWq5YWu5YaA5YaC5ZuY5YaM5YaJ5YaP5YaR5YaT5YaV5YaW5Yak5Yam5Yai5Yap5Yaq5Yar5Yaz5Yax5Yay5Yaw5Ya15Ya95YeF5YeJ5Yeb5Yeg6JmV5Yep5YetXCJdLFtcIjk5ODBcIixcIuWHsOWHteWHvuWIhOWIi+WIlOWIjuWIp+WIquWIruWIs+WIueWJj+WJhOWJi+WJjOWJnuWJlOWJquWJtOWJqeWJs+WJv+WJveWKjeWKlOWKkuWJseWKiOWKkei+qOi+p+WKrOWKreWKvOWKteWLgeWLjeWLl+WLnuWLo+WLpumjreWLoOWLs+WLteWLuOWLueWMhuWMiOeUuOWMjeWMkOWMj+WMleWMmuWMo+WMr+WMseWMs+WMuOWNgOWNhuWNheS4l+WNieWNjeWHluWNnuWNqeWNruWkmOWNu+WNt+WOguWOluWOoOWOpuWOpeWOruWOsOWOtuWPg+ewkumbmeWPn+abvOeHruWPruWPqOWPreWPuuWQgeWQveWRgOWQrOWQreWQvOWQruWQtuWQqeWQneWRjuWSj+WRteWSjuWRn+WRseWRt+WRsOWSkuWRu+WSgOWRtuWShOWSkOWShuWTh+WSouWSuOWSpeWSrOWThOWTiOWSqFwiXSxbXCI5YTQwXCIsXCLlkqvlk4LlkqTlkr7lkrzlk5jlk6Xlk6bllI/llJTlk73lk67lk63lk7rlk6LllLnllYDllaPllYzllK7llZzllYXllZbllZfllLjllLPllZ3llpnlloDlkq/llorllp/llbvllb7llpjllp7llq7llbzlloPllqnllofllqjll5rll4Xll5/ll4Tll5zll6Tll5TlmJTll7flmJbll77ll73lmJvll7nlmY7lmZDnh5/lmLTlmLblmLLlmLhcIl0sW1wiOWE4MFwiLFwi5Zmr5Zmk5Ziv5Zms5Zmq5ZqG5ZqA5ZqK5Zqg5ZqU5ZqP5Zql5Zqu5Zq25Zq05ZuC5Zq85ZuB5ZuD5ZuA5ZuI5ZuO5ZuR5ZuT5ZuX5Zuu5Zu55ZyA5Zu/5ZyE5ZyJ5ZyI5ZyL5ZyN5ZyT5ZyY5ZyW5ZeH5Zyc5Zym5Zy35Zy45Z2O5Zy75Z2A5Z2P5Z2p5Z+A5Z6I5Z2h5Z2/5Z6J5Z6T5Z6g5Z6z5Z6k5Z6q5Z6w5Z+D5Z+G5Z+U5Z+S5Z+T5aCK5Z+W5Z+j5aCL5aCZ5aCd5aGy5aCh5aGi5aGL5aGw5q+A5aGS5aC95aG55aKF5aK55aKf5aKr5aK65aOe5aK75aK45aKu5aOF5aOT5aOR5aOX5aOZ5aOY5aOl5aOc5aOk5aOf5aOv5aO65aO55aO75aO85aO95aSC5aSK5aSQ5aSb5qKm5aSl5aSs5aSt5aSy5aS45aS+56uS5aWV5aWQ5aWO5aWa5aWY5aWi5aWg5aWn5aWs5aWpXCJdLFtcIjliNDBcIixcIuWluOWmgeWmneS9nuS+q+Wmo+WmsuWnhuWnqOWnnOWmjeWnmeWnmuWopeWon+WokeWonOWoieWomuWpgOWprOWpieWoteWotuWpouWpquWqmuWqvOWqvuWri+WrguWqveWro+Wrl+WrpuWrqeWrluWruuWru+WsjOWsi+WsluWssuWrkOWsquWstuWsvuWtg+WtheWtgOWtkeWtleWtmuWtm+WtpeWtqeWtsOWts+WtteWtuOaWiOWtuuWugFwiXSxbXCI5YjgwXCIsXCLlroPlrqblrrjlr4Plr4flr4nlr5Tlr5Dlr6Tlr6blr6Llr57lr6Xlr6vlr7Dlr7blr7PlsIXlsIflsIjlsI3lsJPlsKDlsKLlsKjlsLjlsLnlsYHlsYblsY7lsZPlsZDlsY/lrbHlsazlsa7kuaLlsbblsbnlsozlspHlspTlppvlsqvlsrvlsrblsrzlsrfls4Xlsr7ls4fls5nls6nls73ls7rls63ltozls6rltIvltJXltJfltZzltJ/ltJvltJHltJTltKLltJrltJnltJjltYzltZLltY7ltYvltazltbPltbbltofltoTltoLltqLltp3ltqzltq7ltr3ltpDltrfltrzlt4nlt43lt5Plt5Llt5blt5vlt6vlt7Llt7XluIvluJrluJnluJHluJvluLbluLfluYTluYPluYDluY7luZfluZTluZ/luaLluaTluYflubXlubblubrpurzlub/luqDlu4Hlu4Llu4jlu5Dlu49cIl0sW1wiOWM0MFwiLFwi5buW5buj5bud5bua5bub5bui5buh5buo5bup5bus5bux5buz5buw5bu05bu45bu+5byD5byJ5b2d5b2c5byL5byR5byW5byp5byt5by45b2B5b2I5b2M5b2O5byv5b2R5b2W5b2X5b2Z5b2h5b2t5b2z5b235b6D5b6C5b2/5b6K5b6I5b6R5b6H5b6e5b6Z5b6Y5b6g5b6o5b6t5b685b+W5b+75b+k5b+45b+x5b+d5oKz5b+/5oCh5oGgXCJdLFtcIjljODBcIixcIuaAmeaAkOaAqeaAjuaAseaAm+aAleaAq+aApuaAj+aAuuaBmuaBgeaBquaBt+aBn+aBiuaBhuaBjeaBo+aBg+aBpOaBguaBrOaBq+aBmeaCgeaCjeaDp+aCg+aCmuaChOaCm+aCluaCl+aCkuaCp+aCi+aDoeaCuOaDoOaDk+aCtOW/sOaCveaDhuaCteaDmOaFjeaEleaEhuaDtuaDt+aEgOaDtOaDuuaEg+aEoeaDu+aDseaEjeaEjuaFh+aEvuaEqOaEp+aFiuaEv+aEvOaErOaEtOaEveaFguaFhOaFs+aFt+aFmOaFmeaFmuaFq+aFtOaFr+aFpeaFseaFn+aFneaFk+aFteaGmeaGluaGh+aGrOaGlOaGmuaGiuaGkeaGq+aGruaHjOaHiuaHieaHt+aHiOaHg+aHhuaGuuaHi+e9ueaHjeaHpuaHo+aHtuaHuuaHtOaHv+aHveaHvOaHvuaIgOaIiOaIieaIjeaIjOaIlOaIm1wiXSxbXCI5ZDQwXCIsXCLmiJ7miKHmiKrmiK7miLDmiLLmiLPmiYHmiY7miZ7miaPmiZvmiaDmiajmibzmioLmionmib7mipLmipPmipbmi5TmioPmipTmi5fmi5Hmirvmi4/mi7/mi4bmk5Tmi4jmi5zmi4zmi4rmi4Lmi4fmipvmi4nmjIzmi67mi7HmjKfmjILmjIjmi6/mi7XmjZDmjL7mjY3mkJzmjY/mjpbmjo7mjoDmjqvmjbbmjqPmjo/mjonmjp/mjrXmjatcIl0sW1wiOWQ4MFwiLFwi5o2p5o6+5o+p5o+A5o+G5o+j5o+J5o+S5o+25o+E5pCW5pC05pCG5pCT5pCm5pC25pSd5pCX5pCo5pCP5pGn5pGv5pG25pGO5pSq5pKV5pKT5pKl5pKp5pKI5pK85pOa5pOS5pOF5pOH5pK75pOY5pOC5pOx5pOn6IiJ5pOg5pOh5oqs5pOj5pOv5pSs5pO25pO05pOy5pO65pSA5pO95pSY5pSc5pSF5pSk5pSj5pSr5pS05pS15pS35pS25pS455WL5pWI5pWW5pWV5pWN5pWY5pWe5pWd5pWy5pW45paC5paD6K6K5pab5paf5par5pa35peD5peG5peB5peE5peM5peS5peb5peZ5peg5peh5pex5p2y5piK5piD5pe75p2z5pi15pi25pi05pic5pmP5pmE5pmJ5pmB5pme5pmd5pmk5pmn5pmo5pmf5pmi5pmw5pqD5pqI5pqO5pqJ5pqE5pqY5pqd5puB5pq55puJ5pq+5pq8XCJdLFtcIjllNDBcIixcIuabhOaauOabluabmuaboOaYv+abpuabqeabsOabteabt+acj+acluacnuacpuacp+mcuOacruacv+actuadgeacuOact+adhuadnuadoOadmeado+adpOaeieadsOaeqeadvOadquaejOaei+aepuaeoeaeheaet+afr+aetOafrOaes+afqeaeuOafpOafnuafneafouafruaeueafjuafhuafp+aqnOagnuahhuagqeahgOahjeagsuahjlwiXSxbXCI5ZTgwXCIsXCLmorPmoKvmoZnmoaPmobfmob/mop/moo/moq3mopTmop3mopvmooPmqq7mornmobTmorXmoqDmorrmpI/moo3mob7mpIHmo4rmpIjmo5jmpKLmpKbmo6HmpIzmo43mo5Tmo6fmo5XmpLbmpJLmpITmo5fmo6PmpKXmo7nmo6Dmo6/mpKjmpKrmpJrmpKPmpKHmo4bmpbnmpbfmpZzmpbjmpavmpZTmpb7mpa7mpLnmpbTmpL3mpZnmpLDmpaHmpZ7mpZ3mpoHmparmprLmpq7mp5Dmpr/mp4Hmp5Pmpr7mp47lr6jmp4rmp53mprvmp4PmpqfmqK7mppHmpqDmppzmppXmprTmp57mp6jmqILmqJvmp7/mrIrmp7nmp7Lmp6fmqIXmprHmqJ7mp63mqJTmp6vmqIrmqJLmq4HmqKPmqJPmqYTmqIzmqbLmqLbmqbjmqYfmqaLmqZnmqabmqYjmqLjmqKLmqpDmqo3mqqDmqoTmqqLmqqNcIl0sW1wiOWY0MFwiLFwi5qqX6JiX5qq75quD5quC5qq45qqz5qqs5que5quR5quf5qqq5qua5quq5qu75qyF6JiW5qu65qyS5qyW6ayx5qyf5qy45qy355uc5qy56aOu5q2H5q2D5q2J5q2Q5q2Z5q2U5q2b5q2f5q2h5q245q255q2/5q6A5q6E5q6D5q6N5q6Y5q6V5q6e5q6k5q6q5q6r5q6v5q6y5q6x5q6z5q635q685q+G5q+L5q+T5q+f5q+s5q+r5q+z5q+vXCJdLFtcIjlmODBcIixcIum6vuawiOawk+awlOawm+awpOawo+axnuaxleaxouaxquayguayjeaymuaygeaym+axvuaxqOaxs+aykuaykOazhOazseazk+ayveazl+azheazneayruayseayvuayuuazm+azr+azmeazqua0n+ihjea0tua0q+a0vea0uOa0mea0tea0s+a0kua0jOa1o+a2k+a1pOa1mua1uea1mea2jua2lea/pOa2hea3uea4lea4iua2tea3h+a3pua2uOa3hua3rOa3nua3jOa3qOa3kua3hea3uua3mea3pOa3lea3qua3rua4rea5rua4rua4mea5sua5n+a4vua4o+a5q+a4q+a5tua5jea4n+a5g+a4uua5jua4pOa7v+a4nea4uOa6gua6qua6mOa7iea6t+a7k+a6vea6r+a7hOa6sua7lOa7lea6j+a6pea7gua6n+a9gea8keeBjOa7rOa7uOa7vua8v+a7sua8sea7r+a8sua7jFwiXSxbXCJlMDQwXCIsXCLmvL7mvJPmu7fmvobmvbrmvbjmvoHmvoDmva/mvZvmv7Pmva3mvoLmvbzmvZjmvo7mvpHmv4LmvabmvrPmvqPmvqHmvqTmvrnmv4bmvqrmv5/mv5Xmv6zmv5Tmv5jmv7Hmv67mv5vngInngIvmv7rngJHngIHngI/mv77ngJvngJrmvbTngJ3ngJjngJ/ngLDngL7ngLLngZHngaPngpnngpLngq/ng7HngqzngrjngrPngq7ng5/ng4vng51cIl0sW1wiZTA4MFwiLFwi54OZ54SJ54O954Sc54SZ54Wl54WV54aI54Wm54Wi54WM54WW54Ws54aP54e754aE54aV54ao54as54eX54a554a+54eS54eJ54eU54eO54eg54es54en54e154e854e554e/54iN54iQ54ib54io54it54is54iw54iy54i754i854i/54mA54mG54mL54mY54m054m+54qC54qB54qH54qS54qW54qi54qn54q554qy54uD54uG54uE54uO54uS54ui54ug54uh54u554u35YCP54yX54yK54yc54yW54yd54y054yv54yp54yl54y+542O542P6buY542X542q542o542w542454215427542654+I546z54+O546754+A54+l54+u54+e55Ki55CF55Gv55Cl54+455Cy55C655GV55C/55Gf55GZ55GB55Gc55Gp55Gw55Gj55Gq55G255G+55KL55Ke55Kn55OK55OP55OU54+xXCJdLFtcImUxNDBcIixcIueToOeTo+eTp+eTqeeTrueTsueTsOeTseeTuOeTt+eUhOeUg+eUheeUjOeUjueUjeeUleeUk+eUnueUpueUrOeUvOeVhOeVjeeViueVieeVm+eVhueVmueVqeeVpOeVp+eVq+eVreeVuOeVtueWhueWh+eVtOeWiueWieeWgueWlOeWmueWneeWpeeWo+eXgueWs+eXg+eWteeWveeWuOeWvOeWseeXjeeXiueXkueXmeeXo+eXnueXvueXv1wiXSxbXCJlMTgwXCIsXCLnl7znmIHnl7Dnl7rnl7Lnl7PnmIvnmI3nmInnmJ/nmKfnmKDnmKHnmKLnmKTnmLTnmLDnmLvnmYfnmYjnmYbnmZznmZjnmaHnmaLnmajnmannmarnmafnmaznmbDnmbLnmbbnmbjnmbznmoDnmoPnmojnmovnmo7nmpbnmpPnmpnnmprnmrDnmrTnmrjnmrnnmrrnm4Lnm43nm5bnm5Lnm57nm6Hnm6Xnm6fnm6romK/nm7vnnIjnnIfnnITnnKnnnKTnnJ7nnKXnnKbnnJvnnLfnnLjnnYfnnZrnnajnnavnnZvnnaXnnb/nnb7nnbnnno7nnovnnpHnnqDnnp7nnrDnnrbnnrnnnr/nnrznnr3nnrvnn4fnn43nn5fnn5rnn5znn6Pnn67nn7znoIznoJLnpKbnoKDnpKrnoYXnoo7nobTnoobnobznoprnooznoqPnorXnoqrnoq/no5Hno4bno4vno5Tnor7norzno4Xno4rno6xcIl0sW1wiZTI0MFwiLFwi56On56Oa56O956O056SH56SS56SR56SZ56Ss56Sr56WA56Wg56WX56Wf56Wa56WV56WT56W656W/56aK56ad56an6b2L56aq56au56az56a556a656eJ56eV56en56es56eh56ej56iI56iN56iY56iZ56ig56if56aA56ix56i756i+56i356mD56mX56mJ56mh56mi56mp6b6d56mw56m556m956qI56qX56qV56qY56qW56qp56uI56qwXCJdLFtcImUyODBcIixcIueqtuerheerhOeqv+mCg+erh+eriuerjeerj+erleerk+ermeermuerneeroeerouerpuerreersOesguesj+esiueshuess+esmOesmeesnuesteesqOestuetkOetuueshOetjeesi+etjOetheetteetpeettOetp+etsOetseetrOetrueuneeumOeun+eujeeunOeumueui+eukueuj+etneeumeevi+evgeevjOevj+eutOevhuevneevqeewkeewlOevpuevpeexoOewgOewh+ewk+evs+evt+ewl+ewjeevtuewo+ewp+ewquewn+ewt+ewq+ewveexjOexg+exlOexj+exgOexkOexmOexn+expOexluexpeexrOexteeyg+eykOeypOeyreeyoueyq+eyoeeyqOeys+eysueyseeyrueyueeyveezgOezheezguezmOezkueznOezoumsu+ezr+ezsueztOeztuezuue0hlwiXSxbXCJlMzQwXCIsXCLntILntJzntJXntIrntYXntYvntK7ntLLntL/ntLXntYbntbPntZbntY7ntbLntajnta7ntY/ntaPntpPntonntZvnto/ntb3ntpvntrrntq7ntqPntrXnt4fntr3ntqvnuL3ntqLntq/nt5zntrjntp/ntrDnt5jnt53nt6Tnt57nt7vnt7Lnt6HnuIXnuIrnuKPnuKHnuJLnuLHnuJ/nuInnuIvnuKLnuYbnuabnuLvnuLXnuLnnuYPnuLdcIl0sW1wiZTM4MFwiLFwi57iy57i657mn57md57mW57me57mZ57ma57m557mq57mp57m857m757qD57eV57m96L6u57m/57qI57qJ57qM57qS57qQ57qT57qU57qW57qO57qb57qc57y457y6572F572M572N572O572Q572R572V572U572Y572f572g572o572p572n5724576C576G576D576I576H576M576U576e576d576a576j576v576y5765576u576257646K2x57+F57+G57+K57+V57+U57+h57+m57+p57+z57+56aOc6ICG6ICE6ICL6ICS6ICY6ICZ6ICc6ICh6ICo6IC/6IC76IGK6IGG6IGS6IGY6IGa6IGf6IGi6IGo6IGz6IGy6IGw6IG26IG56IG96IG/6IKE6IKG6IKF6IKb6IKT6IKa6IKt5YaQ6IKs6IOb6IOl6IOZ6IOd6IOE6IOa6IOW6ISJ6IOv6IOx6ISb6ISp6ISj6ISv6IWLXCJdLFtcImU0NDBcIixcIumai+iFhuiEvuiFk+iFkeiDvOiFseiFruiFpeiFpuiFtOiGg+iGiOiGiuiGgOiGguiGoOiGleiGpOiGo+iFn+iGk+iGqeiGsOiGteiGvuiGuOiGveiHgOiHguiGuuiHieiHjeiHkeiHmeiHmOiHiOiHmuiHn+iHoOiHp+iHuuiHu+iHvuiIgeiIguiIheiIh+iIiuiIjeiIkOiIluiIqeiIq+iIuOiIs+iJgOiJmeiJmOiJneiJmuiJn+iJpFwiXSxbXCJlNDgwXCIsXCLoiaLoiajoiaroiavoiK7oibHoibfoibjoib7oio3oipLoiqvoip/oirvoiqzoi6Hoi6Poi5/oi5Loi7Toi7Poi7rojpPojIPoi7voi7noi57ojIboi5zojInoi5nojLXojLTojJbojLLojLHojYDojLnojZDojYXojK/ojKvojJfojJjojoXojprojqrojp/ojqLojpbojKPojo7ojofojorojbzojrXojbPojbXojqDojonojqjoj7TokJPoj6voj47oj73okIPoj5jokIvoj4Hoj7fokIfoj6Doj7LokI3okKLokKDojr3okLjolIboj7voka3okKrokLzolZrokoTokbfokavokq3oka7okoLokanokYbokKzoka/okbnokLXok4rokaLokrnokr/okp/ok5nok43okrvok5rok5Dok4Hok4bok5bokqHolKHok7/ok7TolJfolJjolKzolJ/olJXolJTok7zolYDolaPolZjolYhcIl0sW1wiZTU0MFwiLFwi6JWB6JiC6JWL6JWV6JaA6Jak6JaI6JaR6JaK6Jao6JWt6JaU6Jab6Jeq6JaH6Jac6JW36JW+6JaQ6JeJ6Ja66JeP6Ja56JeQ6JeV6Jed6Jel6Jec6Je56JiK6JiT6JiL6Je+6Je66JiG6Jii6Jia6Jiw6Ji/6JmN5LmV6JmU6Jmf6Jmn6Jmx6JqT6Jqj6Jqp6Jqq6JqL6JqM6Jq26Jqv6JuE6JuG6Jqw6JuJ6KCj6Jqr6JuU6Jue6Jup6JusXCJdLFtcImU1ODBcIixcIuibn+ibm+ibr+ickuichuiciOicgOicg+ibu+ickeicieicjeibueiciuictOicv+ict+icu+icpeicqeicmuidoOidn+iduOidjOidjuidtOidl+idqOidruidmeidk+ido+idquigheieouien+ieguier+ifi+ieveifgOifkOmbluieq+ifhOies+ifh+ifhuieu+ifr+ifsuifoOigj+igjeifvuiftuift+igjuifkuigkeigluigleigouigoeigseigtuigueigp+igu+ihhOihguihkuihmeihnuihouihq+iigeihvuiinuihteihveiiteihsuiiguiil+iikuiiruiimeiiouiijeiipOiisOiiv+iiseijg+ijhOijlOijmOijmeijneijueikguijvOijtOijqOijsuikhOikjOikiuikk+ilg+iknuikpeikquikq+ilgeilhOiku+iktuikuOiljOikneiloOilnlwiXSxbXCJlNjQwXCIsXCLopabopaTopa3oparopa/opbTopbfopb7opoPopojoporoppPoppjopqHopqnopqbopqzopq/oprLoprropr3opr/op4Dop5rop5zop53op6fop7Top7joqIPoqJboqJDoqIzoqJvoqJ3oqKXoqLboqYHoqZvoqZLoqYboqYjoqbzoqa3oqazoqaLoqoXoqoLoqoToqqjoqqHoqpHoqqXoqqboqproqqPoq4Toq43oq4Loq5roq6voq7Poq6dcIl0sW1wiZTY4MFwiLFwi6Kuk6Kux6KyU6Kug6Kui6Ku36Kue6Kub6KyM6KyH6Kya6Kuh6KyW6KyQ6KyX6Kyg6Kyz6Z6r6Kym6Kyr6Ky+6Kyo6K2B6K2M6K2P6K2O6K2J6K2W6K2b6K2a6K2r6K2f6K2s6K2v6K206K296K6A6K6M6K6O6K6S6K6T6K6W6K6Z6K6a6LC66LGB6LC/6LGI6LGM6LGO6LGQ6LGV6LGi6LGs6LG46LG66LKC6LKJ6LKF6LKK6LKN6LKO6LKU6LG86LKY5oid6LKt6LKq6LK96LKy6LKz6LKu6LK26LOI6LOB6LOk6LOj6LOa6LO96LO66LO76LSE6LSF6LSK6LSH6LSP6LSN6LSQ6b2O6LST6LON6LSU6LSW6LWn6LWt6LWx6LWz6LaB6LaZ6LeC6La+6La66LeP6Lea6LeW6LeM6Leb6LeL6Leq6Ler6Lef6Lej6Le86LiI6LiJ6Le/6Lid6Lie6LiQ6Lif6LmC6Li16Liw6Li06LmKXCJdLFtcImU3NDBcIixcIui5h+i5iei5jOi5kOi5iOi5mei5pOi5oOi4qui5o+i5lei5tui5sui5vOi6gei6h+i6hei6hOi6i+i6iui6k+i6kei6lOi6mei6qui6oei6rOi6sOi7hui6sei6vui7hei7iOi7i+i7m+i7o+i7vOi7u+i7q+i7vui8iui8hei8lei8kui8mei8k+i8nOi8n+i8m+i8jOi8pui8s+i8u+i8uei9hei9gui8vui9jOi9iei9hui9jui9l+i9nFwiXSxbXCJlNzgwXCIsXCLovaLovaPovaTovpzovp/ovqPovq3ovq/ovrfov5rov6Xov6Lov6rov6/pgofov7TpgIXov7nov7rpgJHpgJXpgKHpgI3pgJ7pgJbpgIvpgKfpgLbpgLXpgLnov7jpgY/pgZDpgZHpgZLpgI7pgYnpgL7pgZbpgZjpgZ7pgajpga/pgbbpmqjpgbLpgoLpgb3pgoHpgoDpgorpgonpgo/pgqjpgq/pgrHpgrXpg6Lpg6TmiYjpg5vphILphJLphJnphLLphLDphYrphZbphZjphaPphaXphanphbPphbLphovphonphoLphqLphqvphq/phqrphrXphrTphrrph4Dph4Hph4nph4vph5Dph5bph5/ph6Hph5vph7zph7Xph7bpiJ7ph7/piJTpiKzpiJXpiJHpiZ7piZfpiYXpiYnpiaTpiYjpipXpiL/piYvpiZDpipzpipbpipPpipvpiZrpi4/pirnpirfpi6npjI/pi7rpjYTpjK5cIl0sW1wiZTg0MFwiLFwi6YyZ6Yyi6Yya6Yyj6Yy66Yy16Yy76Y2c6Y2g6Y286Y2u6Y2W6Y6w6Y6s6Y6t6Y6U6Y656Y+W6Y+X6Y+o6Y+l6Y+Y6Y+D6Y+d6Y+Q6Y+I6Y+k6ZCa6ZCU6ZCT6ZCD6ZCH6ZCQ6ZC26ZCr6ZC16ZCh6ZC66ZGB6ZGS6ZGE6ZGb6ZGg6ZGi6ZGe6ZGq6Yip6ZGw6ZG16ZG36ZG96ZGa6ZG86ZG+6ZKB6ZG/6ZaC6ZaH6ZaK6ZaU6ZaW6ZaY6ZaZXCJdLFtcImU4ODBcIixcIumWoOmWqOmWp+mWremWvOmWu+mWuemWvumXiua/tumXg+mXjemXjOmXlemXlOmXlumXnOmXoemXpemXoumYoemYqOmYrumYr+mZgumZjOmZj+mZi+mZt+mZnOmZnumZnemZn+mZpumZsumZrOmajemamOmalemal+maqumap+masemasumasOmatOmatumauOmauembjumbi+mbiembjeiljembnOmcjemblembuemchOmchumciOmck+mcjumckemcj+mclumcmemcpOmcqumcsOmcuemcvemcvumdhOmdhumdiOmdgumdiemdnOmdoOmdpOmdpumdqOWLkumdq+mdsemduemehemdvOmegemduumehumei+mej+mekOmenOmeqOmepumeo+mes+metOmfg+mfhumfiOmfi+mfnOmfrem9j+mfsuern+mftumftemgj+mgjOmguOmgpOmgoemgt+mgvemhhumhj+mhi+mhq+mhr+mhsFwiXSxbXCJlOTQwXCIsXCLpobHpobTpobPpoqrpoq/porHporbpo4Tpo4Ppo4bpo6npo6vppIPppInppJLppJTppJjppKHppJ3ppJ7ppKTppKDppKzppK7ppL3ppL7ppYLppYnppYXppZDppYvppZHppZLppYzppZXpppfpppjppqXppq3ppq7pprzpp5/pp5vpp53pp5jpp5Hpp63pp67pp7Hpp7Lpp7vpp7jpqIHpqI/pqIXpp6LpqJnpqKvpqLfpqYXpqYLpqYDpqYNcIl0sW1wiZTk4MFwiLFwi6ai+6amV6amN6amb6amX6amf6ami6aml6amk6amp6amr6amq6aqt6aqw6aq86auA6auP6auR6auT6auU6aue6auf6aui6auj6aum6auv6aur6auu6au06aux6au36au76ayG6ayY6aya6ayf6ayi6ayj6ayl6ayn6ayo6ayp6ayq6ayu6ayv6ayy6a2E6a2D6a2P6a2N6a2O6a2R6a2Y6a206a6T6a6D6a6R6a6W6a6X6a6f6a6g6a6o6a606a+A6a+K6a656a+G6a+P6a+R6a+S6a+j6a+i6a+k6a+U6a+h6bC66a+y6a+x6a+w6bCV6bCU6bCJ6bCT6bCM6bCG6bCI6bCS6bCK6bCE6bCu6bCb6bCl6bCk6bCh6bCw6bGH6bCy6bGG6bC+6bGa6bGg6bGn6bG26bG46bOn6bOs6bOw6bSJ6bSI6bOr6bSD6bSG6bSq6bSm6bav6bSj6bSf6bWE6bSV6bSS6bWB6bS/6bS+6bWG6bWIXCJdLFtcImVhNDBcIixcIum1nem1num1pOm1kem1kOm1mem1sum2iem2h+m2q+m1r+m1uum2mum2pOm2qem2sum3hOm3gem2u+m2uOm2uum3hum3j+m3gum3mem3k+m3uOm3pum3rem3r+m3vem4mum4m+m4num5tem5uem5vem6gem6iOm6i+m6jOm6kum6lem6kem6nem6pem6qem6uOm6qum6remdoem7jOm7jum7j+m7kOm7lOm7nOm7num7nem7oOm7pem7qOm7r1wiXSxbXCJlYTgwXCIsXCLpu7Tpu7bpu7fpu7npu7vpu7zpu73pvIfpvIjnmrfpvJXpvKHpvKzpvL7pvYrpvZLpvZTpvaPpvZ/pvaDpvaHpvabpvafpvazpvarpvbfpvbLpvbbpvpXpvpzpvqDloK/mp4fpgZnnkaTlh5znhplcIl0sW1wiZWQ0MFwiLFwi57qK6KSc6Y2I6YqI6JOc5L+J54K75pix5qOI6Yu55pu75b2F5Lio5Luh5Lu85LyA5LyD5Ly55L2W5L6S5L6K5L6a5L6U5L+N5YGA5YCi5L+/5YCe5YGG5YGw5YGC5YKU5YO05YOY5YWK5YWk5Yad5Ya+5Yes5YiV5Yqc5Yqm5YuA5Yub5YyA5YyH5Yyk5Y2y5Y6T5Y6y5Y+d76iO5ZKc5ZKK5ZKp5ZO/5ZaG5Z2Z5Z2l5Z6s5Z+I5Z+H76iPXCJdLFtcImVkODBcIixcIu+okOWinuWisuWki+Wlk+Wlm+WlneWlo+WmpOWmuuWtluWvgOeUr+WvmOWvrOWwnuWypuWyuuWzteW0p+W1k++okeW1guW1reW2uOW2ueW3kOW8oeW8tOW9p+W+t+W/nuaBneaCheaCiuaDnuaDleaEoOaDsuaEkeaEt+aEsOaGmOaIk+aKpuaPteaRoOaSneaTjuaVjuaYgOaYleaYu+aYieaYruaYnuaYpOaZpeaZl+aZme+okuaZs+aameaaoOaasuaav+abuuacju+kqeadpuaeu+ahkuafgOaggeahhOajj++ok+alqO+olOammOanouaosOapq+aphuaps+apvuarouarpOavluawv+axnOayhuaxr+azmua0hOa2h+a1r+a2lua2rOa3j+a3uOa3sua3vOa4uea5nOa4p+a4vOa6v+a+iOa+tea/teeAheeAh+eAqOeCheeCq+eEj+eEhOeFnOeFhueFh++oleeHgeeHvueKsVwiXSxbXCJlZTQwXCIsXCLnir7njKTvqJbnjbfnjr3nj4nnj5bnj6Pnj5LnkIfnj7XnkKbnkKrnkKnnkK7nkaLnkonnkp/nlIHnla/nmoLnmpznmp7nmpvnmqbvqJfnnYbliq/noKHnoY7noaTnobrnpLDvqJjvqJnvqJrnppTvqJvnppvnq5Hnq6fvqJznq6vnrp7vqJ3ntYjntZzntrfntqDnt5bnuZLnvYfnvqHvqJ7ojIHojaLojb/oj4foj7bokYjokrTolZPolZlcIl0sW1wiZWU4MFwiLFwi6JWr76if6Jaw76ig76ih6KCH6KO16KiS6Ki36Km56Kqn6Kq+6Kuf76ii6Ku26K2T6K2/6LOw6LO06LSS6LW276ij6LuP76ik76il6YGn6YOe76im6YSV6YSn6Yea6YeX6Yee6Yet6Yeu6Yek6Yel6YiG6YiQ6YiK6Yi66YmA6Yi86YmO6YmZ6YmR6Yi56Ymn6Yqn6Ym36Ym46Yun6YuX6YuZ6YuQ76in6YuV6Yug6YuT6Yyl6Yyh6Yu776io6Yye6Yu/6Yyd6YyC6Y2w6Y2X6Y6k6Y+G6Y+e6Y+46ZCx6ZGF6ZGI6ZaS76ec76ip6Zqd6Zqv6Zyz6Zy76Z2D6Z2N6Z2P6Z2R6Z2V6aGX6aGl76iq76ir6aSn76is6aae6amO6auZ6auc6a216a2y6a6P6a6x6a676bCA6bWw6bWr76it6biZ6buRXCJdLFtcImVlZWZcIixcIuKFsFwiLDksXCLvv6Lvv6TvvIfvvIJcIl0sW1wiZjA0MFwiLFwi7oCAXCIsNjJdLFtcImYwODBcIixcIu6Av1wiLDEyNF0sW1wiZjE0MFwiLFwi7oK8XCIsNjJdLFtcImYxODBcIixcIu6Du1wiLDEyNF0sW1wiZjI0MFwiLFwi7oW4XCIsNjJdLFtcImYyODBcIixcIu6Gt1wiLDEyNF0sW1wiZjM0MFwiLFwi7oi0XCIsNjJdLFtcImYzODBcIixcIu6Js1wiLDEyNF0sW1wiZjQ0MFwiLFwi7ouwXCIsNjJdLFtcImY0ODBcIixcIu6Mr1wiLDEyNF0sW1wiZjU0MFwiLFwi7o6sXCIsNjJdLFtcImY1ODBcIixcIu6Pq1wiLDEyNF0sW1wiZjY0MFwiLFwi7pGoXCIsNjJdLFtcImY2ODBcIixcIu6Sp1wiLDEyNF0sW1wiZjc0MFwiLFwi7pSkXCIsNjJdLFtcImY3ODBcIixcIu6Vo1wiLDEyNF0sW1wiZjg0MFwiLFwi7pegXCIsNjJdLFtcImY4ODBcIixcIu6Yn1wiLDEyNF0sW1wiZjk0MFwiLFwi7pqcXCJdLFtcImZhNDBcIixcIuKFsFwiLDksXCLihaBcIiw5LFwi77+i77+k77yH77yC44ix4oSW4oSh4oi157qK6KSc6Y2I6YqI6JOc5L+J54K75pix5qOI6Yu55pu75b2F5Lio5Luh5Lu85LyA5LyD5Ly55L2W5L6S5L6K5L6a5L6U5L+N5YGA5YCi5L+/5YCe5YGG5YGw5YGC5YKU5YO05YOY5YWKXCJdLFtcImZhODBcIixcIuWFpOWGneWGvuWHrOWIleWKnOWKpuWLgOWLm+WMgOWMh+WMpOWNsuWOk+WOsuWPne+ojuWSnOWSiuWSqeWTv+WWhuWdmeWdpeWerOWfiOWfh++oj++okOWinuWisuWki+Wlk+Wlm+WlneWlo+WmpOWmuuWtluWvgOeUr+WvmOWvrOWwnuWypuWyuuWzteW0p+W1k++okeW1guW1reW2uOW2ueW3kOW8oeW8tOW9p+W+t+W/nuaBneaCheaCiuaDnuaDleaEoOaDsuaEkeaEt+aEsOaGmOaIk+aKpuaPteaRoOaSneaTjuaVjuaYgOaYleaYu+aYieaYruaYnuaYpOaZpeaZl+aZme+okuaZs+aameaaoOaasuaav+abuuacju+kqeadpuaeu+ahkuafgOaggeahhOajj++ok+alqO+olOammOanouaosOapq+aphuaps+apvuarouarpOavluawv+axnOayhuaxr+azmua0hOa2h+a1r1wiXSxbXCJmYjQwXCIsXCLmtpbmtqzmt4/mt7jmt7Lmt7zmuLnmuZzmuKfmuLzmur/mvojmvrXmv7XngIXngIfngKjngoXngqvnhI/nhITnhZznhYbnhYfvqJXnh4Hnh77nirHnir7njKTvqJbnjbfnjr3nj4nnj5bnj6Pnj5LnkIfnj7XnkKbnkKrnkKnnkK7nkaLnkonnkp/nlIHnla/nmoLnmpznmp7nmpvnmqbvqJfnnYbliq/noKHnoY7noaTnobrnpLDvqJjvqJlcIl0sW1wiZmI4MFwiLFwi76ia56aU76ib56ab56uR56un76ic56ur566e76id57WI57Wc57a357ag57eW57mS572H576h76ie6IyB6I2i6I2/6I+H6I+26JGI6JK06JWT6JWZ6JWr76if6Jaw76ig76ih6KCH6KO16KiS6Ki36Km56Kqn6Kq+6Kuf76ii6Ku26K2T6K2/6LOw6LO06LSS6LW276ij6LuP76ik76il6YGn6YOe76im6YSV6YSn6Yea6YeX6Yee6Yet6Yeu6Yek6Yel6YiG6YiQ6YiK6Yi66YmA6Yi86YmO6YmZ6YmR6Yi56Ymn6Yqn6Ym36Ym46Yun6YuX6YuZ6YuQ76in6YuV6Yug6YuT6Yyl6Yyh6Yu776io6Yye6Yu/6Yyd6YyC6Y2w6Y2X6Y6k6Y+G6Y+e6Y+46ZCx6ZGF6ZGI6ZaS76ec76ip6Zqd6Zqv6Zyz6Zy76Z2D6Z2N6Z2P6Z2R6Z2V6aGX6aGl76iq76ir6aSn76is6aae6amO6auZXCJdLFtcImZjNDBcIixcIumrnOmttemtsumuj+musemuu+mwgOm1sOm1q++orem4mem7kVwiXV1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdGFibGVzL3NoaWZ0amlzLmpzb25cbi8vIG1vZHVsZSBpZCA9IDE0NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IFtbXCIwXCIsXCJcXHUwMDAwXCIsMTI3XSxbXCI4ZWExXCIsXCLvvaFcIiw2Ml0sW1wiYTFhMVwiLFwi44CA44CB44CC77yM77yO44O777ya77yb77yf77yB44Kb44KcwrTvvYDCqO+8vu+/o++8v+ODveODvuOCneOCnuOAg+S7neOAheOAhuOAh+ODvOKAleKAkO+8j++8vO+9nuKIpe+9nOKApuKApeKAmOKAmeKAnOKAne+8iO+8ieOAlOOAle+8u++8ve+9m++9neOAiFwiLDksXCLvvIvvvI3CscOXw7fvvJ3iiaDvvJzvvJ7iiabiiafiiJ7iiLTimYLimYDCsOKAsuKAs+KEg++/pe+8hO+/oO+/oe+8he+8g++8hu+8iu+8oMKn4piG4piF4peL4peP4peO4peHXCJdLFtcImEyYTFcIixcIuKXhuKWoeKWoOKWs+KWsuKWveKWvOKAu+OAkuKGkuKGkOKGkeKGk+OAk1wiXSxbXCJhMmJhXCIsXCLiiIjiiIviiobiiofiioLiioPiiKriiKlcIl0sW1wiYTJjYVwiLFwi4oin4oio77+i4oeS4oeU4oiA4oiDXCJdLFtcImEyZGNcIixcIuKIoOKKpeKMkuKIguKIh+KJoeKJkuKJquKJq+KImuKIveKIneKIteKIq+KIrFwiXSxbXCJhMmYyXCIsXCLihKvigLDima/ima3imarigKDigKHCtlwiXSxbXCJhMmZlXCIsXCLil69cIl0sW1wiYTNiMFwiLFwi77yQXCIsOV0sW1wiYTNjMVwiLFwi77yhXCIsMjVdLFtcImEzZTFcIixcIu+9gVwiLDI1XSxbXCJhNGExXCIsXCLjgYFcIiw4Ml0sW1wiYTVhMVwiLFwi44KhXCIsODVdLFtcImE2YTFcIixcIs6RXCIsMTYsXCLOo1wiLDZdLFtcImE2YzFcIixcIs6xXCIsMTYsXCLPg1wiLDZdLFtcImE3YTFcIixcItCQXCIsNSxcItCB0JZcIiwyNV0sW1wiYTdkMVwiLFwi0LBcIiw1LFwi0ZHQtlwiLDI1XSxbXCJhOGExXCIsXCLilIDilILilIzilJDilJjilJTilJzilKzilKTilLTilLzilIHilIPilI/ilJPilJvilJfilKPilLPilKvilLvilYvilKDilK/ilKjilLfilL/ilJ3ilLDilKXilLjilYJcIl0sW1wiYWRhMVwiLFwi4pGgXCIsMTksXCLihaBcIiw5XSxbXCJhZGMwXCIsXCLjjYnjjJTjjKLjjY3jjJjjjKfjjIPjjLbjjZHjjZfjjI3jjKbjjKPjjKvjjYrjjLvjjpzjjp3jjp7jjo7jjo/jj4TjjqFcIl0sW1wiYWRkZlwiLFwi442744Cd44Cf4oSW44+N4oSh44qkXCIsNCxcIuOIseOIsuOIueONvuONveONvOKJkuKJoeKIq+KIruKIkeKImuKKpeKIoOKIn+KKv+KIteKIqeKIqlwiXSxbXCJiMGExXCIsXCLkupzllJblqIPpmL/lk4DmhJvmjKjlp7bpgKLokbXojJznqZDmgqrmj6HmuKXml63okaboiqbpr7XmopPlnKfmlqHmibHlrpvlp5Dombvpo7TntaLntr7pro7miJbnsp/oorflronlurXmjInmmpfmoYjpl4fpno3mnY/ku6XkvIrkvY3kvp3lgYnlm7LlpLflp5TlqIHlsInmg5/mhI/mhbDmmJPmpIXngrrnlY/nlbDnp7vntq3nt6/og4PokI7ooaPorILpgZXpgbrljLvkupXkuqXln5/ogrLpg4Hno6/kuIDlo7HmuqLpgLjnqLLojKjoiovpsK/lhYHljbDlkr3lk6Hlm6Dlp7vlvJXpo7Lmt6vog6TolK1cIl0sW1wiYjFhMVwiLFwi6Zmi6Zmw6Zqg6Z+75ZCL5Y+z5a6H54OP57696L+C6Zuo5Y2v6bWc56q65LiR56KT6Ie85rim5ZiY5ZSE5qyd6JSa6bC75ael5Y6p5rWm55Oc6ZaP5ZmC5LqR6YGL6Zuy6I2P6aSM5Y+h5Za25ayw5b2x5pig5puz5qCE5rC45rOz5rSp55Gb55uI56mO6aC06Iux6KGb6Kmg6Yut5ray55ar55uK6aeF5oKm6KyB6LaK6Zay5qaO5Y6t5YaG5ZyS5aCw5aWE5a605bu25oCo5o6p5o+05rK/5ryU54KO54SU54WZ54eV54y/57iB6Im26IuR6JaX6YGg6Ymb6bSb5aGp5pa85rGa55Sl5Ye55aSu5aWl5b6A5b+cXCJdLFtcImIyYTFcIixcIuaKvOaXuuaoquasp+autOeOi+e/geillum0rOm0jum7hOWyoeayluiNu+WEhOWxi+aGtuiHhuahtueJoeS5meS/uuWNuOaBqea4qeepj+mfs+S4i+WMluS7ruS9leS8veS+oeS9s+WKoOWPr+WYieWkj+WrgeWutuWvoeenkeaah+aenOaetuatjOays+eBq+ePguemjeemvueovOeuh+iKseiLm+iMhOiNt+iPr+iPk+idpuiqsuWYqeiyqOi/pumBjumcnuiaiuS/hOWzqOaIkeeJmeeUu+iHpeiKveibvuizgOmbhemkk+mnleS7i+S8muino+WbnuWhiuWjiuW7u+W/q+aAquaClOaBouaHkOaIkuaLkOaUuVwiXSxbXCJiM2ExXCIsXCLprYHmmabmorDmtbfngbDnlYznmobntbXoiqXon7nplovpmo7osp3lh7Hlir7lpJblkrPlrrPltJbmhajmpoLmtq/noo3ok4vooZfoqbLpjqfpqrjmtazppqjom5nlnqPmn7/om47piI7lioPlmoflkITlu5Pmi6HmkrnmoLzmoLjmrrvnjbLnorrnqavopprop5LotavovIPpg63plqPpmpTpnanlrablsrPmpb3poY3poY7mjpvnrKDmqKvmqb/morbpsI3mvZ/libLllp3mgbDmi6zmtLvmuIfmu5HokZvopJDovYTkuJTpsLnlj7bmpJvmqLrpnoTmoKrlhZznq4PokrLph5zpjozlmZvptKjmoKLojIXokLFcIl0sW1wiYjRhMVwiLFwi57Kl5YiI6IuF55Om5Lm+5L6D5Yag5a+S5YiK5YuY5Yun5be75Zaa5aCq5aem5a6M5a6Y5a+b5bmy5bm55oKj5oSf5oWj5oa+5o+b5pWi5p+R5qGT5qO65qy+5q2T5rGX5ryi5r6X5r2F55Kw55SY55uj55yL56u/566h57Ch57ep57y257+w6IKd6Imm6I6e6Kaz6KuM6LKr6YKE6ZGR6ZaT6ZaR6Zai6Zml6Z+T6aSo6IiY5Li45ZCr5bK45beM546p55mM55y85bKp57+r6LSL6ZuB6aCR6aGU6aGY5LyB5LyO5Y2x5Zac5Zmo5Z+65aWH5ayJ5a+E5bKQ5biM5bm+5b+M5o+u5py65peX5pei5pyf5qOL5qOEXCJdLFtcImI1YTFcIixcIuapn+W4sOavheawl+axveeVv+eliOWto+eogOe0gOW+veimj+iomOiytOi1t+i7jOi8nemjoumojumsvOS6gOWBveWEgOWmk+WunOaIr+aKgOaTrOasuueKoOeWkeelh+e+qeifu+iqvOitsOaOrOiPiumeoOWQieWQg+WWq+ahlOapmOipsOegp+adtem7jeWNtOWuouiEmuiZkOmAhuS4mOS5heS7h+S8keWPiuWQuOWuruW8k+aApeaVkeacveaxguaxsuazo+eBuOeQg+eptueqruesiOe0muezvue1puaXp+eJm+WOu+WxheW3qOaLkuaLoOaMmea4oOiZmuiosei3nemLuOa8geempumtmuS6qOS6q+S6rFwiXSxbXCJiNmExXCIsXCLkvpvkvqDlg5HlhYfnq7blhbHlh7bljZTljKHljb/lj6vllqzlooPls6HlvLflvYrmgK/mgZDmga3mjJ/mlZnmqYvms4Hni4Lni63nn6/og7johIXoiIjolY7pg7fpj6Hpn7/ppZfpqZrku7Dlh53lsK3mmoHmpa3lsYDmm7LmpbXnjonmoZDnsoHlg4Xli6TlnYflt77pjKbmlqTmrKPmrL3nkLTnpoHnpr3nrYvnt4roirnoj4zoob/opZ/orLnov5Hph5HlkJ/pioDkuZ3lgLblj6XljLrni5fnjpbnn6noi6bouq/pp4bpp4jpp5LlhbfmhJromZ7llrDnqbrlgbblr5PpgYfpmoXkuLLmq5vph6flsZHlsYhcIl0sW1wiYjdhMVwiLFwi5o6Y56qf5rKT6Z206L2h56qq54aK6ZqI57KC5qCX57mw5qGR6Y2s5Yuy5ZCb6Jar6KiT576k6LuN6YOh5Y2m6KKI56WB5L+C5YK+5YiR5YWE5ZWT5Zyt54+q5Z6L5aWR5b2i5b6E5oG15oW25oWn5oap5o6y5pC65pWs5pmv5qGC5riT55Wm56i957O757WM57aZ57mL572r6IyO6I2K6JuN6KiI6Kmj6K2m6Lu96aCa6baP6Iq46L+O6a+o5YqH5oif5pKD5r+A6ZqZ5qGB5YKR5qyg5rG65r2U56m057WQ6KGA6Kij5pyI5Lu25YC55YCm5YGl5YW85Yi45Ymj5Zan5ZyP5aCF5auM5bu65oay5oe45ouz5o2yXCJdLFtcImI4YTFcIixcIuaknOaoqeeJveeKrOeMrueglOehr+e1ueecjOiCqeimi+ismeizoui7kumBo+mNtemZuumhlemok+m5uOWFg+WOn+WOs+W5u+W8pua4m+a6kOeOhOePvue1g+iIt+iogOiruumZkOS5juWAi+WPpOWRvOWbuuWnkeWtpOW3seW6q+W8p+aIuOaVheaer+a5lueLkOeziuiitOiCoeiDoeiPsOiZjuiqh+i3qOmIt+mbh+mhp+m8k+S6lOS6kuS8jeWNiOWRieWQvuWor+W+jOW+oeaCn+aip+aqjueRmueigeiqnuiqpOitt+mGkOS5numvieS6pOS9vOS+r+WAmeWAluWFieWFrOWKn+WKueWLvuWOmuWPo+WQkVwiXSxbXCJiOWExXCIsXCLlkI7llonlnZHlnqLlpb3lrZTlrZ3lro/lt6Xlt6flt7flubjluoPluprlurflvJjmgZLmhYzmipfmi5jmjqfmlLvmmILmmYPmm7Tmna3moKHmopfmp4vmsZ/mtKrmtanmuK/mup3nlLLnmofnoaznqL/ns6DntIXntJjntZ7ntrHogJXogIPogq/ogrHohZToho/oiKrojZLooYzooaHorJvosqLos7zpg4rphbXpibHnoL/pi7zplqTpmY3poIXpppnpq5jptLvliZvliqvlj7flkIjlo5Xmi7fmv6DosarovZ/purnlhYvliLvlkYrlm73nqYDphbfptaDpu5LnjYTmvInohbDnlJHlv73mg5rpqqjni5vovrxcIl0sW1wiYmFhMVwiLFwi5q2k6aCD5LuK5Zuw5Z2k5aK+5ama5oGo5oeH5piP5piG5qC55qKx5re355eV57S66Imu6a2C5Lqb5L2Q5Y+J5ZSG5bWv5bem5beu5p+75rKZ55Gz56CC6KmQ6Y6W6KOf5Z2Q5bqn5oyr5YK15YKs5YaN5pyA5ZOJ5aGe5aa75a6w5b2p5omN5o6h5qC95q2z5riI54G96YeH54qA56CV56Cm56Wt5paO57Sw6I+c6KOB6LyJ6Zqb5Ymk5Zyo5p2Q572q6LKh5Ya05Z2C6Ziq5aC65qaK6IK05ZKy5bSO5Z+856KV6be65L2c5YmK5ZKL5pC+5pio5pyU5p+156qE562W57Si6Yyv5qGc6a6t56y55YyZ5YaK5Yi3XCJdLFtcImJiYTFcIixcIuWvn+aLtuaSruaTpuacreauuuiWqembkeeakOmvluaNjOmMhumuq+eav+aZkuS4ieWCmOWPguWxseaDqOaSkuaVo+ahn+eHpuePiueUo+eul+e6guialeiug+izm+mFuOmkkOaWrOaaq+aui+S7leS7lOS8uuS9v+WIuuWPuOWPsuWXo+Wbm+Wjq+Wni+WnieWnv+WtkOWxjeW4guW4q+W/l+aAneaMh+aUr+WtnOaWr+aWveaXqOaeneatouatu+awj+eNheelieengeezuOe0mee0q+iCouiEguiHs+imluipnuipqeippuiqjOirruizh+iznOmbjOmjvOatr+S6i+S8vOS+jeWFkOWtl+WvuuaFiOaMgeaZglwiXSxbXCJiY2ExXCIsXCLmrKHmu4vmsrvniL7nkr3nl5Tno4HnpLrogIzogLPoh6rokpTovp7msZDpub/lvI/orZjptKvnq7rou7jlro3pm6vkuIPlj7Hln7flpLHlq4nlrqTmgonmub/mvIbnlr7os6rlrp/olIDnr6DlgbLmn7Toip3lsaHolYrnuJ7oiI7lhpnlsITmjajotabmlpznha7npL7ntJfogIXorJ3ou4rpga7om4fpgqrlgJ/li7rlsLrmnZPngbzniLXphYzph4jpjKvoi6Xlr4LlvLHmg7nkuLvlj5blrojmiYvmnLHmrorni6nnj6DnqK7ohavotqPphZLpppblhJLlj5flkarlr7/mjojmqLnntqzpnIDlm5rlj47lkahcIl0sW1wiYmRhMVwiLFwi5a6X5bCx5bee5L+u5oSB5ou+5rSy56eA56eL57WC57mN57+S6Iet6Iif6JKQ6KGG6KWy6K6Q6Lm06Lyv6YCx6YWL6YWs6ZuG6Yac5LuA5L2P5YWF5Y2B5b6T5oiO5p+U5rGB5riL542j57im6YeN6YqD5Y+U5aSZ5a6/5reR56Wd57iu57Kb5aG+54af5Ye66KGT6L+w5L+K5bO75pil556s56uj6Iic6ae/5YeG5b6q5pes5qWv5q6J5rez5rqW5r2k55u+57SU5beh6YG16YaH6aCG5Yem5Yid5omA5pqR5puZ5ria5bq257eS572y5pu46Jav6Je36Ku45Yqp5Y+Z5aWz5bqP5b6Q5oGV6Yuk6Zmk5YK35YSfXCJdLFtcImJlYTFcIixcIuWLneWMoOWNh+WPrOWTqOWVhuWUseWYl+WlqOWmvuWovOWuteWwhuWwj+WwkeWwmuW6hOW6iuW7oOW9sOaJv+aKhOaLm+aOjOaNt+aYh+aYjOaYreaZtuadvuaiouaon+aoteayvOa2iOa4iea5mOeEvOeEpueFp+eXh+ecgeehneekgeelpeensOeroOeskeeyp+e0ueiCluiPluiSi+iVieihneijs+ion+iovOiplOips+ixoeiznumGpOmJpumNvumQmOmanOmemOS4iuS4iOS4nuS5l+WGl+WJsOWfjuWgtOWjjOWsouW4uOaDheaTvuadoeadlua1hOeKtueVs+epo+iSuOitsumGuOmMoOWYseWftOmjvlwiXSxbXCJiZmExXCIsXCLmi63mpI3mrpbnh63nuZTogbfoibLop6bpo5/onZXovrHlsLvkvLjkv6HkvrXllIflqKDlr53lr6nlv4PmhY7mjK/mlrDmmYvmo67mppvmtbjmt7HnlLPnlrnnnJ/npZ7np6bntLPoh6Poiq/olqropqroqLrouqvovpvpgLLph53pnIfkurrku4HliIPlobXlo6zlsIvnlJrlsL3ohY7oqIrov4XpmaPpna3nrKXoq4/poIjphaLlm7PljqjpgJflkLnlnoLluKXmjqjmsLTngornnaHnsovnv6DoobDpgYLphZTpjJDpjJjpmo/nkZ7pq4TltIfltanmlbDmnqLotqjpm5vmja7mnYnmpJnoj4XpoJfpm4Doo75cIl0sW1wiYzBhMVwiLFwi5r6E5pG65a+45LiW54Cs55Wd5piv5YeE5Yi25Yui5aeT5b6B5oCn5oiQ5pS/5pW05pif5pm05qOy5qCW5q2j5riF54my55Sf55ub57K+6IGW5aOw6KO96KW/6Kqg6KqT6KuL6YCd6YaS6Z2S6Z2Z5paJ56iO6ISG6Zq75bit5oOc5oia5pal5piU5p6Q55+z56mN57GN57i+6ISK6LKs6LWk6Leh6Lmf56Kp5YiH5ouZ5o6l5pGC5oqY6Kit56qD56+A6Kqs6Zuq57W26IiM6J2J5LuZ5YWI5Y2D5Y2g5a6j5bCC5bCW5bed5oim5omH5pKw5qCT5qC05rOJ5rWF5rSX5p+T5r2c54WO54W95peL56m/566t57eaXCJdLFtcImMxYTFcIixcIue5iue+qOiFuuiIm+iIueiWpuipruizjui3temBuOmBt+mKremKkemWg+muruWJjeWWhOa8uOeEtuWFqOemhee5leiGs+ezjuWZjOWhkeWyqOaOquabvuabvealmueLmeeWj+eWjuekjuelluenn+eyl+e0oOe1hOiYh+iotOmYu+mBoem8oOWDp+WJteWPjOWPouWAieWWquWjruWlj+eIveWui+WxpOWMneaDo+aDs+aNnOaOg+aMv+aOu+aTjeaXqeabueW3o+anjeanvea8leeHpeS6ieeXqeebuOeqk+ezn+e3j+e2nOiBoeiNieiNmOiRrOiSvOiXu+ijhei1sOmAgemBremOl+mcnOmokuWDj+Wil+aGjlwiXSxbXCJjMmExXCIsXCLoh5PolLXotIjpgKDkv4PlgbTliYfljbPmga/mjYnmnZ/muKzotrPpgJ/kv5flsZ7os4rml4/ntprljZLoopblhbbmj4PlrZjlravlsIrmkI3mnZHpgZzku5blpJrlpKrmsbDoqZHllL7loJXlpqXmg7DmiZPmn4HoiLXmpZXpmYDpp4TpqKjkvZPloIblr77ogJDlsrHluK/lvoXmgKDmhYvmiLTmm7/ms7Dmu57og47ohb/oi5TooovosrjpgIDpgK7pmorpu5vpr5vku6Plj7DlpKfnrKzpho3poYzpt7nmu53ngKfljZPllYTlroXmiZjmip7mi5PmsqLmv6/nkKLoqJfpkLjmv4Hoq77ojLjlh6fom7jlj6pcIl0sW1wiYzNhMVwiLFwi5Y+p5L2G6YGU6L6w5aWq6ISx5be956uq6L6/5qOa6LC354u46bGI5qi96Kqw5Li55Y2Y5ZiG5Z2m5ouF5o6i5pem5q2O5reh5rmb54Kt55+t56uv566q57a76IC96IOG6JuL6KqV6Y2b5Zuj5aOH5by+5pat5pqW5qqA5q6155S36KuH5YCk55+l5Zyw5byb5oGl5pm65rGg55e056ia572u6Ie06JyY6YGF6aaz56+J55Wc56u5562R6JOE6YCQ56ep56qS6Iy25auh552A5Lit5Luy5a6Z5b+g5oq95pi85p+x5rOo6Jmr6KG36Ki76YWO6Yuz6aeQ5qiX54Cm54yq6Iun6JGX6LKv5LiB5YWG5YeL5ZaL5a+1XCJdLFtcImM0YTFcIixcIuW4luW4s+W6geW8lOW8teW9q+W+tOaHsuaMkeaaouacnea9rueJkueUuuecuuiBtOiEueiFuOidtuiqv+irnOi2hei3s+mKmumVt+mggumzpeWLheaNl+ebtOacleayiOePjeizg+mOrumZs+a0peWinOakjuanjOi/vemOmueXm+mAmuWhmuagguaOtOanu+S9g+a8rOafmOi+u+iUpue2tOmNlOakv+a9sOWdquWjt+WsrOe0rOeIquWQiumHo+m2tOS6reS9juWBnOWBteWJg+iynuWRiOWgpOWumuW4neW6leW6reW7t+W8n+aCjOaKteaMuuaPkOair+axgOeih+emjueoi+e3oOiJh+ioguirpui5hOmAk1wiXSxbXCJjNWExXCIsXCLpgrjphK3ph5jpvI7ms6XmkZjmk6LmlbXmu7TnmoTnrJvpganpj5Hmurrlk7LlvrnmkqTovY3ov63piYTlhbjloavlpKnlsZXlupfmt7vnuo/nlJzosrzou6LpoZvngrnkvJ3mrr/mvrHnlLDpm7vlhY7lkJDloLXloZflpqzlsaDlvpLmlpfmnZzmuKHnmbvoj5/os63pgJTpg73pjY3noKXnoLrliqrluqblnJ/lpbTmgJLlgJLlhZrlhqzlh43liIDllJDloZTloZjlpZflrpXls7bltovmgrzmipXmkK3mnbHmoYPmorzmo5/nm5fmt5jmua/mtpvnga/nh4jlvZPnl5jnpbfnrYnnrZTnrZLns5bntbHliLBcIl0sW1wiYzZhMVwiLFwi6JGj6JWp6Jek6KiO6KyE6LGG6LiP6YCD6YCP6ZCZ6Zm26aCt6aiw6ZeY5YON5YuV5ZCM5aCC5bCO5oan5pKe5rSe556z56ul6IO06JCE6YGT6YqF5bOg6bSH5Yy/5b6X5b6z5rac54m5552j56a/56+k5q+S54us6Kqt5qCD5qmh5Ye456qB5qS05bGK6bO26Iur5a+F6YWJ54Ce5Zm45bGv5oOH5pWm5rKM6LGa6YGB6aCT5ZGR5puH6YiN5aWI6YKj5YaF5LmN5Yeq6JaZ6KyO54GY5o266Y2L5qWi6aa057iE55W35Y2X5qWg6Luf6Zuj5rGd5LqM5bC85byQ6L+p5YyC6LOR6IKJ6Jm55bu/5pel5Lmz5YWlXCJdLFtcImM3YTFcIixcIuWmguWwv+mfruS7u+WmiuW/jeiqjea/oeemsOelouWvp+iRseeMq+eGseW5tOW/teaNu+aSmueHg+eymOS5g+W7vOS5i+WfnOWaouaCqea/g+e0jeiDveiEs+iGv+i+suiml+iapOW3tOaKiuaSreimh+adt+azoua0vueQtuegtOWphue9teiKremmrOS/s+W7g+aLneaOkuaVl+adr+ebg+eJjOiDjOiCuui8qemFjeWAjeWfueWqkuaiheals+eFpOeLveiyt+WjsuizoOmZqumAmeidv+enpOefp+iQqeS8r+WJpeWNmuaLjeafj+aziueZveeulOeyleiItuiWhOi/q+abnea8oOeIhue4m+iOq+mngem6plwiXSxbXCJjOGExXCIsXCLlh73nrrHnobLnrrjogofnrYjmq6jluaHogoznlZHnlaDlhavpiaLmuoznmbrphpfpq6rkvJDnvbDmipznrY/plqXps6nlmbrloZnom6TpmrzkvLTliKTljYrlj43lj5vluIbmkKzmlpHmnb/msL7msY7niYjniq/nj63nlZTnuYHoiKzol6nosqnnr4Tph4bnhanpoJLpo6/mjL3mmannlarnm6Tno5DolYPom67ljKrljZHlkKblpoPluoflvbzmgrLmiYnmibnmiqvmlpDmr5Tms4znlrLnmq7nopHnp5jnt4vnvbfogqXooqvoqrnosrvpgb/pnZ7po5vmqIvnsLjlgpnlsL7lvq7mnofmr5jnkLXnnInnvo5cIl0sW1wiYzlhMVwiLFwi6by75p+K56iX5Yy555aL6aut5b2m6Iad6I+x6IKY5by85b+F55Wi562G6YC85qGn5aer5aqb57SQ55m+6Kys5L+15b2q5qiZ5rC35ryC55Oi56Wo6KGo6KmV6LG55buf5o+P55eF56eS6IuX6Yyo6Yuy6JKc6Jut6bCt5ZOB5b2s5paM5rWc54CV6LKn6LOT6aC75pWP55O25LiN5LuY5Z+g5aSr5amm5a+M5Yao5biD5bqc5oCW5om25pW35pan5pmu5rWu54i256ym6IWQ6Iaa6IqZ6K2c6LKg6LOm6LW06Zic6ZmE5L6u5pKr5q2m6Iie6JGh6JWq6YOo5bCB5qWT6aKo6JG66JWX5LyP5Ymv5b6p5bmF5pyNXCJdLFtcImNhYTFcIixcIuemj+iFueikh+imhua3teW8l+aJleayuOS7j+eJqemukuWIhuWQu+WZtOWis+aGpOaJrueEmuWlrueyieeznue0m+mbsOaWh+iBnuS4meS9teWFteWhgOW5o+W5s+W8iuafhOS4puiUvemWiemZm+exs+mggeWDu+WjgeeZlueip+WIpeeepeiUkeeuhuWBj+WkieeJh+evh+e3qOi+uui/lOmBjeS+v+WLieWoqeW8gemereS/neiIl+mLquWcg+aNleatqeeUq+ijnOi8lOepguWLn+Wik+aFleaIiuaaruavjeewv+iPqeWAo+S/uOWMheWRhuWgseWlieWuneWzsOWzr+W0qeW6luaKseaNp+aUvuaWueaci1wiXSxbXCJjYmExXCIsXCLms5Xms6Hng7nnoLLnuKvog57oirPokIzok6zonILopJLoqKrosYrpgqbpi5Lpo73ps7PptazkuY/kuqHlgo3liZblnYrlpqjluL3lv5jlv5nmiL/mmrTmnJvmn5Dmo5LlhpLntKHogqrohqjorIDosozosr/pib7pmLLlkKDpoKzljJflg5XljZzloqjmkrLmnLTniafnnabnqYbph6bli4PmsqHmrobloIDluYzlpZTmnKznv7vlh6Hnm4bmkanno6jprZTpurvln4vlprnmmKfmnprmr47lk6nmp5nluZXohpzmnpXprqrmn77psZLmoZ3kuqbkv6Plj4jmirnmnKvmsqvov4Tkvq3nua3pur/kuIfmhaLmuoBcIl0sW1wiY2NhMVwiLFwi5ryr6JST5ZGz5pyq6a2F5bez566V5bKs5a+G6Jyc5rmK6JOR56iU6ISI5aaZ57KN5rCR55yg5YuZ5aSi54Sh54mf55+b6Zyn6bWh5qSL5am/5aiY5Yal5ZCN5ZG95piO55uf6L+36YqY6bO05aeq54md5ruF5YWN5qOJ57a/57es6Z2i6bq65pG45qih6IyC5aaE5a2f5q+b54yb55uy57ay6ICX6JKZ5YSy5pyo6buZ55uu5p2i5Yu/6aSF5bCk5oi757G+6LKw5ZWP5oK257SL6ZaA5YyB5Lmf5Ya25aSc54i66IC26YeO5byl55+i5Y6E5b2557SE6Jas6Kiz6LqN6Z2W5p+z6Jau6ZGT5oSJ5oSI5rK555mSXCJdLFtcImNkYTFcIixcIuirrei8uOWUr+S9keWEquWLh+WPi+WupeW5veaCoOaGguaPluacieafmua5p+a2jOeMtueMt+eUseelkOijleiqmOmBiumCkemDtembhOiejeWkleS6iOS9meS4juiqiei8v+mgkOWCreW5vOWmluWuueW6uOaPmuaPuuaTgeabnOaliuanmOa0i+a6tueGlOeUqOeqr+e+iuiAgOiRieiTieimgeisoei4iumBpemZvemkiuaFvuaKkeassuayg+a1tOe/jOe/vOa3gOe+heieuuijuOadpeiOsemgvOmbt+a0m+e1oeiQvemFquS5seWNteW1kOashOa/q+iXjeiYreimp+WIqeWQj+WxpeadjuaiqOeQhueSg1wiXSxbXCJjZWExXCIsXCLnl6Loo4/oo6Hph4zpm6Lpmbjlvovnjofnq4vokY7mjqDnlaXlionmtYHmupznkInnlZnnoavnspLpmobnq5zpvo3kvrbmha7ml4XomZzkuobkuq7lg5rkuKHlh4zlr67mlpnmooHmtrznjJ/nmYLnnq3nqJzns6foia/oq5Lpgbzph4/pmbXpoJjlipvnt5HlgKvljpjmnpfmt4vnh5DnkLPoh6jovKrpmqPpsZfpup/nkaDloYHmtpnntK/poZ7ku6TkvLbkvovlhrflirHltrrmgJznjrLnpLzoi5PpiLTpmrfpm7bpnIrpupfpvaLmmqbmrbTliJfliqPng4joo4Llu4nmgYvmhpDmvKPnhYnnsL7nt7Toga9cIl0sW1wiY2ZhMVwiLFwi6JOu6YCj6Yys5ZGC6a2v5quT54KJ6LOC6Lev6Zyy5Yq05amB5buK5byE5pyX5qW85qaU5rWq5ryP54mi54u856+t6ICB6IG+6J2L6YOO5YWt6bqT56aE6IKL6Yyy6KuW5YCt5ZKM6Kmx5q2q6LOE6ISH5oOR5p6g6bey5LqZ5LqY6bCQ6Kmr6JeB6JWo5qSA5rm+56KX6IWVXCJdLFtcImQwYTFcIixcIuW8jOS4kOS4leS4quS4seS4tuS4vOS4v+S5guS5luS5mOS6guS6heixq+S6iuiIkuW8jeS6juS6nuS6n+S6oOS6ouS6sOS6s+S6tuS7juS7jeS7hOS7huS7guS7l+S7nuS7reS7n+S7t+S8ieS9muS8sOS9m+S9neS9l+S9h+S9tuS+iOS+j+S+mOS9u+S9qeS9sOS+keS9r+S+huS+luWEmOS/lOS/n+S/juS/mOS/m+S/keS/muS/kOS/pOS/peWAmuWAqOWAlOWAquWApeWAheS8nOS/tuWAoeWAqeWArOS/vuS/r+WAkeWAhuWBg+WBh+acg+WBleWBkOWBiOWBmuWBluWBrOWBuOWCgOWCmuWCheWCtOWCslwiXSxbXCJkMWExXCIsXCLlg4nlg4rlgrPlg4Llg5blg57lg6Xlg63lg6Plg67lg7nlg7XlhInlhIHlhILlhJblhJXlhJTlhJrlhKHlhLrlhLflhLzlhLvlhL/lhYDlhZLlhYzlhZTlhaLnq7jlhanlharlha7lhoDlhoLlm5jlhozlhonlho/lhpHlhpPlhpXlhpblhqTlhqblhqLlhqnlhqrlhqvlhrPlhrHlhrLlhrDlhrXlhr3lh4Xlh4nlh5vlh6DomZXlh6nlh63lh7Dlh7Xlh77liITliIvliJTliI7liKfliKrliK7liLPliLnliY/liYTliYvliYzliZ7liZTliarlibTlianlibPlib/lib3lio3lipTlipLlibHliojlipHovqhcIl0sW1wiZDJhMVwiLFwi6L6n5Yqs5Yqt5Yq85Yq15YuB5YuN5YuX5Yue5Yuj5Yum6aOt5Yug5Yuz5Yu15Yu45Yu55YyG5YyI55S45YyN5YyQ5YyP5YyV5Yya5Yyj5Yyv5Yyx5Yyz5Yy45Y2A5Y2G5Y2F5LiX5Y2J5Y2N5YeW5Y2e5Y2p5Y2u5aSY5Y275Y235Y6C5Y6W5Y6g5Y6m5Y6l5Y6u5Y6w5Y625Y+D57CS6ZuZ5Y+f5pu854eu5Y+u5Y+o5Y+t5Y+65ZCB5ZC95ZGA5ZCs5ZCt5ZC85ZCu5ZC25ZCp5ZCd5ZGO5ZKP5ZG15ZKO5ZGf5ZGx5ZG35ZGw5ZKS5ZG75ZKA5ZG25ZKE5ZKQ5ZKG5ZOH5ZKi5ZK45ZKl5ZKs5ZOE5ZOI5ZKoXCJdLFtcImQzYTFcIixcIuWSq+WTguWSpOWSvuWSvOWTmOWTpeWTpuWUj+WUlOWTveWTruWTreWTuuWTouWUueWVgOWVo+WVjOWUruWVnOWVheWVluWVl+WUuOWUs+WVneWWmeWWgOWSr+WWiuWWn+WVu+WVvuWWmOWWnuWWruWVvOWWg+WWqeWWh+WWqOWXmuWXheWXn+WXhOWXnOWXpOWXlOWYlOWXt+WYluWXvuWXveWYm+WXueWZjuWZkOeHn+WYtOWYtuWYsuWYuOWZq+WZpOWYr+WZrOWZquWahuWagOWaiuWaoOWalOWaj+WapeWaruWatuWatOWbguWavOWbgeWbg+WbgOWbiOWbjuWbkeWbk+Wbl+WbruWbueWcgOWbv+WchOWciVwiXSxbXCJkNGExXCIsXCLlnIjlnIvlnI3lnJPlnJjlnJbll4flnJzlnKblnLflnLjlnY7lnLvlnYDlnY/lnanln4DlnojlnaHlnb/lnonlnpPlnqDlnrPlnqTlnqrlnrDln4Pln4bln5Tln5Lln5PloIrln5bln6PloIvloJnloJ3lobLloKHloaLloYvlobDmr4DloZLloL3lobnlooXlornlop/loqvlorrlo57lorvlorjloq7lo4Xlo5Plo5Hlo5flo5nlo5jlo6Xlo5zlo6Tlo5/lo6/lo7rlo7nlo7vlo7zlo73lpILlpIrlpJDlpJvmoqblpKXlpKzlpK3lpLLlpLjlpL7nq5LlpZXlpZDlpY7lpZrlpZjlpaLlpaDlpaflpazlpalcIl0sW1wiZDVhMVwiLFwi5aW45aaB5aad5L2e5L6r5aaj5aay5aeG5aeo5aec5aaN5aeZ5aea5ail5aif5aiR5aic5aiJ5aia5amA5ams5amJ5ai15ai25ami5amq5aqa5aq85aq+5auL5auC5aq95auj5auX5aum5aup5auW5au65au75ayM5ayL5ayW5ayy5auQ5ayq5ay25ay+5a2D5a2F5a2A5a2R5a2V5a2a5a2b5a2l5a2p5a2w5a2z5a215a245paI5a265a6A5a6D5a6m5a645a+D5a+H5a+J5a+U5a+Q5a+k5a+m5a+i5a+e5a+l5a+r5a+w5a+25a+z5bCF5bCH5bCI5bCN5bCT5bCg5bCi5bCo5bC45bC55bGB5bGG5bGO5bGTXCJdLFtcImQ2YTFcIixcIuWxkOWxj+WtseWxrOWxruS5ouWxtuWxueWyjOWykeWylOWmm+Wyq+Wyu+WytuWyvOWyt+WzheWyvuWzh+WzmeWzqeWzveWzuuWzreW2jOWzquW0i+W0leW0l+W1nOW0n+W0m+W0keW0lOW0ouW0muW0meW0mOW1jOW1kuW1juW1i+W1rOW1s+W1tuW2h+W2hOW2guW2ouW2neW2rOW2ruW2veW2kOW2t+W2vOW3ieW3jeW3k+W3kuW3luW3m+W3q+W3suW3teW4i+W4muW4meW4keW4m+W4tuW4t+W5hOW5g+W5gOW5juW5l+W5lOW5n+W5ouW5pOW5h+W5teW5tuW5uum6vOW5v+W6oOW7geW7guW7iOW7kOW7j1wiXSxbXCJkN2ExXCIsXCLlu5blu6Plu53lu5rlu5vlu6Llu6Hlu6jlu6nlu6zlu7Hlu7Plu7Dlu7Tlu7jlu77lvIPlvInlvZ3lvZzlvIvlvJHlvJblvKnlvK3lvLjlvYHlvYjlvYzlvY7lvK/lvZHlvZblvZflvZnlvaHlva3lvbPlvbflvoPlvoLlvb/lvorlvojlvpHlvoflvp7lvpnlvpjlvqDlvqjlvq3lvrzlv5blv7vlv6Tlv7jlv7Hlv53mgrPlv7/mgKHmgaDmgJnmgJDmgKnmgI7mgLHmgJvmgJXmgKvmgKbmgI/mgLrmgZrmgYHmgarmgbfmgZ/mgYrmgYbmgY3mgaPmgYPmgaTmgYLmgazmgavmgZnmgoHmgo3mg6fmgoPmgppcIl0sW1wiZDhhMVwiLFwi5oKE5oKb5oKW5oKX5oKS5oKn5oKL5oOh5oK45oOg5oOT5oK05b+w5oK95oOG5oK15oOY5oWN5oSV5oSG5oO25oO35oSA5oO05oO65oSD5oSh5oO75oOx5oSN5oSO5oWH5oS+5oSo5oSn5oWK5oS/5oS85oSs5oS05oS95oWC5oWE5oWz5oW35oWY5oWZ5oWa5oWr5oW05oWv5oWl5oWx5oWf5oWd5oWT5oW15oaZ5oaW5oaH5oas5oaU5oaa5oaK5oaR5oar5oau5oeM5oeK5oeJ5oe35oeI5oeD5oeG5oa65oeL57255oeN5oem5oej5oe25oe65oe05oe/5oe95oe85oe+5oiA5oiI5oiJ5oiN5oiM5oiU5oibXCJdLFtcImQ5YTFcIixcIuaInuaIoeaIquaIruaIsOaIsuaIs+aJgeaJjuaJnuaJo+aJm+aJoOaJqOaJvOaKguaKieaJvuaKkuaKk+aKluaLlOaKg+aKlOaLl+aLkeaKu+aLj+aLv+aLhuaTlOaLiOaLnOaLjOaLiuaLguaLh+aKm+aLieaMjOaLruaLseaMp+aMguaMiOaLr+aLteaNkOaMvuaNjeaQnOaNj+aOluaOjuaOgOaOq+aNtuaOo+aOj+aOieaOn+aOteaNq+aNqeaOvuaPqeaPgOaPhuaPo+aPieaPkuaPtuaPhOaQluaQtOaQhuaQk+aQpuaQtuaUneaQl+aQqOaQj+aRp+aRr+aRtuaRjuaUquaSleaSk+aSpeaSqeaSiOaSvFwiXSxbXCJkYWExXCIsXCLmk5rmk5Lmk4Xmk4fmkrvmk5jmk4Lmk7Hmk6foiInmk6Dmk6Hmiqzmk6Pmk6/mlKzmk7bmk7Tmk7Lmk7rmlIDmk73mlJjmlJzmlIXmlKTmlKPmlKvmlLTmlLXmlLfmlLbmlLjnlYvmlYjmlZbmlZXmlY3mlZjmlZ7mlZ3mlbLmlbjmloLmloPorormlpvmlp/mlqvmlrfml4Pml4bml4Hml4Tml4zml5Lml5vml5nml6Dml6Hml7HmnbLmmIrmmIPml7vmnbPmmLXmmLbmmLTmmJzmmY/mmYTmmYnmmYHmmZ7mmZ3mmaTmmafmmajmmZ/mmaLmmbDmmoPmmojmmo7mmonmmoTmmpjmmp3mm4Hmmrnmm4nmmr7mmrxcIl0sW1wiZGJhMVwiLFwi5puE5pq45puW5pua5pug5pi/5pum5pup5puw5pu15pu35pyP5pyW5pye5pym5pyn6Zy45pyu5py/5py25p2B5py45py35p2G5p2e5p2g5p2Z5p2j5p2k5p6J5p2w5p6p5p285p2q5p6M5p6L5p6m5p6h5p6F5p635p+v5p605p+s5p6z5p+p5p645p+k5p+e5p+d5p+i5p+u5p655p+O5p+G5p+n5qqc5qCe5qGG5qCp5qGA5qGN5qCy5qGO5qKz5qCr5qGZ5qGj5qG35qG/5qKf5qKP5qKt5qKU5qKd5qKb5qKD5qqu5qK55qG05qK15qKg5qK65qSP5qKN5qG+5qSB5qOK5qSI5qOY5qSi5qSm5qOh5qSM5qONXCJdLFtcImRjYTFcIixcIuajlOajp+ajleaktuakkuakhOajl+ajo+akpeajueajoOajr+akqOakquakmuako+akoeajhualuealt+alnOaluOalq+allOalvualruakuealtOakvealmeaksOaloealnualneamgealquamsuamruankOamv+angeank+amvuanjuWvqOaniuanneamu+ang+amp+aoruamkeamoOamnOamleamtOannuanqOaoguaom+anv+asiuanueansuanp+aoheamseaonuanreaolOanq+aoiuaokuargeaoo+aok+aphOaojOapsuaotuapuOaph+apouapmeappuapiOaouOaoouaqkOaqjeaqoOaqhOaqouaqo1wiXSxbXCJkZGExXCIsXCLmqpfomJfmqrvmq4Pmq4LmqrjmqrPmqqzmq57mq5Hmq5/mqqrmq5rmq6rmq7vmrIXomJbmq7rmrJLmrJbprLHmrJ/mrLjmrLfnm5zmrLnpo67mrYfmrYPmrYnmrZDmrZnmrZTmrZvmrZ/mraHmrbjmrbnmrb/mroDmroTmroPmro3mrpjmrpXmrp7mrqTmrqrmrqvmrq/mrrLmrrHmrrPmrrfmrrzmr4bmr4vmr5Pmr5/mr6zmr6vmr7Pmr6/pur7msIjmsJPmsJTmsJvmsKTmsKPmsZ7msZXmsaLmsarmsoLmso3msprmsoHmspvmsb7msajmsbPmspLmspDms4Tms7Hms5Pmsr3ms5fms4Xms53msq7msrHmsr5cIl0sW1wiZGVhMVwiLFwi5rK65rOb5rOv5rOZ5rOq5rSf6KGN5rS25rSr5rS95rS45rSZ5rS15rSz5rSS5rSM5rWj5raT5rWk5rWa5rW55rWZ5raO5raV5r+k5raF5re55riV5riK5ra15reH5rem5ra45reG5res5ree5reM5reo5reS5reF5re65reZ5rek5reV5req5reu5rit5rmu5riu5riZ5rmy5rmf5ri+5rij5rmr5rir5rm25rmN5rif5rmD5ri65rmO5rik5ru/5rid5ri45rqC5rqq5rqY5ruJ5rq35ruT5rq95rqv5ruE5rqy5ruU5ruV5rqP5rql5ruC5rqf5r2B5ryR54GM5rus5ru45ru+5ry/5ruy5ryx5ruv5ryy5ruMXCJdLFtcImRmYTFcIixcIua8vua8k+a7t+a+hua9uua9uOa+gea+gOa9r+a9m+a/s+a9rea+gua9vOa9mOa+jua+kea/gua9pua+s+a+o+a+oea+pOa+uea/hua+qua/n+a/lea/rOa/lOa/mOa/sea/rua/m+eAieeAi+a/uueAkeeAgeeAj+a/vueAm+eAmua9tOeAneeAmOeAn+eAsOeAvueAsueBkeeBo+eCmeeCkueCr+eDseeCrOeCuOeCs+eCrueDn+eDi+eDneeDmeeEieeDveeEnOeEmeeFpeeFleeGiOeFpueFoueFjOeFlueFrOeGj+eHu+eGhOeGleeGqOeGrOeHl+eGueeGvueHkueHieeHlOeHjueHoOeHrOeHp+eHteeHvFwiXSxbXCJlMGExXCIsXCLnh7nnh7/niI3niJDniJvniKjniK3niKzniLDniLLniLvniLzniL/niYDniYbniYvniZjnibTnib7nioLnioHniofnipLnipbniqLniqfnirnnirLni4Pni4bni4Tni47ni5Lni6Lni6Dni6Hni7nni7flgI/njJfnjIrnjJznjJbnjJ3njLTnjK/njKnnjKXnjL7njY7njY/pu5jnjZfnjarnjajnjbDnjbjnjbXnjbvnjbrnj4jnjrPnj47njrvnj4Dnj6Xnj67nj57nkqLnkIXnka/nkKXnj7jnkLLnkLrnkZXnkL/nkZ/nkZnnkYHnkZznkannkbDnkaPnkarnkbbnkb7nkovnkp7nkqfnk4rnk4/nk5Tnj7FcIl0sW1wiZTFhMVwiLFwi55Og55Oj55On55Op55Ou55Oy55Ow55Ox55O455O355SE55SD55SF55SM55SO55SN55SV55ST55Se55Sm55Ss55S855WE55WN55WK55WJ55Wb55WG55Wa55Wp55Wk55Wn55Wr55Wt55W455W255aG55aH55W055aK55aJ55aC55aU55aa55ad55al55aj55eC55az55eD55a155a955a455a855ax55eN55eK55eS55eZ55ej55ee55e+55e/55e855iB55ew55e655ey55ez55iL55iN55iJ55if55in55ig55ih55ii55ik55i055iw55i755mH55mI55mG55mc55mY55mh55mi55mo55mp55mq55mn55ms55mwXCJdLFtcImUyYTFcIixcIueZsueZtueZuOeZvOeagOeag+eaiOeai+eajuealueak+eameeamueasOeatOeauOeaueeauuebguebjeebluebkuebnueboeebpeebp+ebquiYr+ebu+eciOech+echOecqeecpOecnuecpeecpuecm+ect+ecuOedh+edmuedqOedq+edm+edpeedv+edvuedueeejueei+eekeeeoOeenueesOeetueeueeev+eevOeeveeeu+efh+efjeefl+efmuefnOefo+efruefvOegjOegkuekpuegoOekquehheeijuehtOeihuehvOeimueijOeio+eiteeiqueir+ejkeejhueji+ejlOeivueivOejheejiuejrFwiXSxbXCJlM2ExXCIsXCLno6fno5rno73no7TnpIfnpJLnpJHnpJnnpKznpKvnpYDnpaDnpZfnpZ/npZrnpZXnpZPnpbrnpb/npornpp3npqfpvYvnpqrnpq7nprPnprnnprrnp4nnp5Xnp6fnp6znp6Hnp6PnqIjnqI3nqJjnqJnnqKDnqJ/npoDnqLHnqLvnqL7nqLfnqYPnqZfnqYnnqaHnqaLnqanpvp3nqbDnqbnnqb3nqojnqpfnqpXnqpjnqpbnqqnnq4jnqrDnqrbnq4Xnq4Tnqr/pgoPnq4fnq4rnq43nq4/nq5Xnq5Pnq5nnq5rnq53nq6Hnq6Lnq6bnq63nq7DnrILnrI/nrIrnrIbnrLPnrJjnrJnnrJ7nrLXnrKjnrLbnrZBcIl0sW1wiZTRhMVwiLFwi562656yE562N56yL562M562F5621562l5620562n562w562x562s562u566d566Y566f566N566c566a566L566S566P562d566Z56+L56+B56+M56+P566056+G56+d56+p57CR57CU56+m56+l57Gg57CA57CH57CT56+z56+357CX57CN56+257Cj57Cn57Cq57Cf57C357Cr57C957GM57GD57GU57GP57GA57GQ57GY57Gf57Gk57GW57Gl57Gs57G157KD57KQ57Kk57Kt57Ki57Kr57Kh57Ko57Kz57Ky57Kx57Ku57K557K957OA57OF57OC57OY57OS57Oc57Oi6ay757Ov57Oy57O057O257O657SGXCJdLFtcImU1YTFcIixcIue0gue0nOe0lee0iue1hee1i+e0rue0sue0v+e0tee1hue1s+e1lue1jue1sue1qOe1rue1j+e1o+e2k+e2iee1m+e2j+e1vee2m+e2uue2rue2o+e2tee3h+e2vee2q+e4vee2oue2r+e3nOe2uOe2n+e2sOe3mOe3nee3pOe3nue3u+e3sue3oee4hee4iue4o+e4oee4kue4see4n+e4iee4i+e4oue5hue5pue4u+e4tee4uee5g+e4t+e4sue4uue5p+e5nee5lue5nue5mee5mue5uee5que5qee5vOe5u+e6g+e3lee5vei+rue5v+e6iOe6iee6jOe6kue6kOe6k+e6lOe6lue6jue6m+e6nOe8uOe8ulwiXSxbXCJlNmExXCIsXCLnvYXnvYznvY3nvY7nvZDnvZHnvZXnvZTnvZjnvZ/nvaDnvajnvannvafnvbjnvoLnvobnvoPnvojnvofnvoznvpTnvp7nvp3nvprnvqPnvq/nvrLnvrnnvq7nvrbnvrjorbHnv4Xnv4bnv4rnv5Xnv5Tnv6Hnv6bnv6nnv7Pnv7npo5zogIbogITogIvogJLogJjogJnogJzogKHogKjogL/ogLvogYrogYbogZLogZjogZrogZ/ogaLogajogbPogbLogbDogbbogbnogb3ogb/ogoTogobogoXogpvogpPogprogq3lhpDogqzog5vog6Xog5nog53og4Tog5rog5bohInog6/og7HohJvohKnohKPohK/ohYtcIl0sW1wiZTdhMVwiLFwi6ZqL6IWG6IS+6IWT6IWR6IO86IWx6IWu6IWl6IWm6IW06IaD6IaI6IaK6IaA6IaC6Iag6IaV6Iak6Iaj6IWf6IaT6Iap6Iaw6Ia16Ia+6Ia46Ia96IeA6IeC6Ia66IeJ6IeN6IeR6IeZ6IeY6IeI6Iea6Ief6Ieg6Ien6Ie66Ie76Ie+6IiB6IiC6IiF6IiH6IiK6IiN6IiQ6IiW6Iip6Iir6Ii46Iiz6ImA6ImZ6ImY6Imd6Ima6Imf6Imk6Imi6Imo6Imq6Imr6Iiu6Imx6Im36Im46Im+6IqN6IqS6Iqr6Iqf6Iq76Iqs6Iuh6Iuj6Iuf6IuS6Iu06Iuz6Iu66I6T6IyD6Iu76Iu56Iue6IyG6Iuc6IyJ6IuZXCJdLFtcImU4YTFcIixcIuiMteiMtOiMluiMsuiMseiNgOiMueiNkOiNheiMr+iMq+iMl+iMmOiOheiOmuiOquiOn+iOouiOluiMo+iOjuiOh+iOiuiNvOiOteiNs+iNteiOoOiOieiOqOiPtOiQk+iPq+iPjuiPveiQg+iPmOiQi+iPgeiPt+iQh+iPoOiPsuiQjeiQouiQoOiOveiQuOiUhuiPu+iRreiQquiQvOiVmuiShOiRt+iRq+iSreiRruiSguiRqeiRhuiQrOiRr+iRueiQteiTiuiRouiSueiSv+iSn+iTmeiTjeiSu+iTmuiTkOiTgeiThuiTluiSoeiUoeiTv+iTtOiUl+iUmOiUrOiUn+iUleiUlOiTvOiVgOiVo+iVmOiViFwiXSxbXCJlOWExXCIsXCLolYHomILolYvolZXoloDolqTolojolpHolorolqjola3olpTolpvol6rolofolpzolbfolb7olpDol4nolrrol4/olrnol5Dol5Xol53ol6Xol5zol7nomIromJPomIvol77ol7romIbomKLomJromLDomL/omY3kuZXomZTomZ/omafombHompPomqPomqnomqromovomozomrbomq/om4Tom4bomrDom4nooKPomqvom5Tom57om6nom6zom5/om5vom6/onJLonIbonIjonIDonIPom7vonJHonInonI3om7nonIronLTonL/onLfonLvonKXonKnonJronaDonZ/onbjonYzonY7onbTonZfonajona7onZlcIl0sW1wiZWFhMVwiLFwi6J2T6J2j6J2q6KCF6J6i6J6f6J6C6J6v6J+L6J696J+A6J+Q6ZuW6J6r6J+E6J6z6J+H6J+G6J676J+v6J+y6J+g6KCP6KCN6J++6J+26J+36KCO6J+S6KCR6KCW6KCV6KCi6KCh6KCx6KC26KC56KCn6KC76KGE6KGC6KGS6KGZ6KGe6KGi6KGr6KKB6KG+6KKe6KG16KG96KK16KGy6KKC6KKX6KKS6KKu6KKZ6KKi6KKN6KKk6KKw6KK/6KKx6KOD6KOE6KOU6KOY6KOZ6KOd6KO56KSC6KO86KO06KOo6KOy6KSE6KSM6KSK6KST6KWD6KSe6KSl6KSq6KSr6KWB6KWE6KS76KS26KS46KWM6KSd6KWg6KWeXCJdLFtcImViYTFcIixcIuilpuilpOilreilquilr+iltOilt+ilvuimg+imiOimiuimk+immOimoeimqeimpuimrOimr+imsuimuuimveimv+ingOinmuinnOinneinp+intOinuOiog+ioluiokOiojOiom+ioneiopeiotuipgeipm+ipkuiphuipiOipvOipreiprOipouiqheiqguiqhOiqqOiqoeiqkeiqpeiqpuiqmuiqo+irhOirjeirguirmuirq+irs+irp+irpOirseislOiroOirouirt+irnuirm+isjOish+ismuiroeisluiskOisl+isoOiss+meq+ispuisq+isvuisqOitgeitjOitj+itjuitieitluitm+itmuitq1wiXSxbXCJlY2ExXCIsXCLorZ/orazora/orbTorb3oroDorozoro7orpLorpPorpborpnorprosLrosYHosL/osYjosYzosY7osZDosZXosaLosazosbjosbrosoLosonosoXosoroso3oso7ospTosbzospjmiJ3osq3osqrosr3osrLosrPosq7osrbos4jos4Hos6Tos6Pos5ros73os7ros7votITotIXotIrotIfotI/otI3otJDpvY7otJPos43otJTotJbotafota3otbHotbPotoHotpnot4Lotr7otrrot4/ot5rot5bot4zot5vot4vot6rot6vot5/ot6Pot7zouIjouInot7/ouJ3ouJ7ouJDouJ/ouYLouLXouLDouLTouYpcIl0sW1wiZWRhMVwiLFwi6LmH6LmJ6LmM6LmQ6LmI6LmZ6Lmk6Lmg6Liq6Lmj6LmV6Lm26Lmy6Lm86LqB6LqH6LqF6LqE6LqL6LqK6LqT6LqR6LqU6LqZ6Lqq6Lqh6Lqs6Lqw6LuG6Lqx6Lq+6LuF6LuI6LuL6Lub6Luj6Lu86Lu76Lur6Lu+6LyK6LyF6LyV6LyS6LyZ6LyT6Lyc6Lyf6Lyb6LyM6Lym6Lyz6Ly76Ly56L2F6L2C6Ly+6L2M6L2J6L2G6L2O6L2X6L2c6L2i6L2j6L2k6L6c6L6f6L6j6L6t6L6v6L636L+a6L+l6L+i6L+q6L+v6YKH6L+06YCF6L+56L+66YCR6YCV6YCh6YCN6YCe6YCW6YCL6YCn6YC26YC16YC56L+4XCJdLFtcImVlYTFcIixcIumBj+mBkOmBkemBkumAjumBiemAvumBlumBmOmBnumBqOmBr+mBtumaqOmBsumCgumBvemCgemCgOmCiumCiemCj+mCqOmCr+mCsemCtemDoumDpOaJiOmDm+mEgumEkumEmemEsumEsOmFiumFlumFmOmFo+mFpemFqemFs+mFsumGi+mGiemGgumGoumGq+mGr+mGqumGtemGtOmGuumHgOmHgemHiemHi+mHkOmHlumHn+mHoemHm+mHvOmHtemHtumInumHv+mIlOmIrOmIlemIkemJnumJl+mJhemJiemJpOmJiOmKlemIv+mJi+mJkOmKnOmKlumKk+mKm+mJmumLj+mKuemKt+mLqemMj+mLuumNhOmMrlwiXSxbXCJlZmExXCIsXCLpjJnpjKLpjJrpjKPpjLrpjLXpjLvpjZzpjaDpjbzpja7pjZbpjrDpjqzpjq3pjpTpjrnpj5bpj5fpj6jpj6Xpj5jpj4Ppj53pj5Dpj4jpj6TpkJrpkJTpkJPpkIPpkIfpkJDpkLbpkKvpkLXpkKHpkLrpkYHpkZLpkYTpkZvpkaDpkaLpkZ7pkarpiKnpkbDpkbXpkbfpkb3pkZrpkbzpkb7pkoHpkb/ploLplofplorplpTplpbplpjplpnplqDplqjplqfplq3plrzplrvplrnplr7pl4rmv7bpl4Ppl43pl4zpl5Xpl5Tpl5bpl5zpl6Hpl6Xpl6LpmKHpmKjpmK7pmK/pmYLpmYzpmY/pmYvpmbfpmZzpmZ5cIl0sW1wiZjBhMVwiLFwi6Zmd6Zmf6Zmm6Zmy6Zms6ZqN6ZqY6ZqV6ZqX6Zqq6Zqn6Zqx6Zqy6Zqw6Zq06Zq26Zq46Zq56ZuO6ZuL6ZuJ6ZuN6KWN6Zuc6ZyN6ZuV6Zu56ZyE6ZyG6ZyI6ZyT6ZyO6ZyR6ZyP6ZyW6ZyZ6Zyk6Zyq6Zyw6Zy56Zy96Zy+6Z2E6Z2G6Z2I6Z2C6Z2J6Z2c6Z2g6Z2k6Z2m6Z2o5YuS6Z2r6Z2x6Z256Z6F6Z286Z6B6Z266Z6G6Z6L6Z6P6Z6Q6Z6c6Z6o6Z6m6Z6j6Z6z6Z606Z+D6Z+G6Z+I6Z+L6Z+c6Z+t6b2P6Z+y56uf6Z+26Z+16aCP6aCM6aC46aCk6aCh6aC36aC96aGG6aGP6aGL6aGr6aGv6aGwXCJdLFtcImYxYTFcIixcIumhsemhtOmhs+miqumir+misemitumjhOmjg+mjhumjqemjq+mkg+mkiemkkumklOmkmOmkoemknemknumkpOmkoOmkrOmkrumkvemkvumlgumliemlhemlkOmli+mlkemlkumljOmllemml+mmmOmmpemmremmrummvOmnn+mnm+mnnemnmOmnkemnremnrumnsemnsumnu+mnuOmogemoj+mohemnoumomemoq+mot+mphempgumpgOmpg+movumplempjempm+mpl+mpn+mpoumppemppOmpqempq+mpqumqremqsOmqvOmrgOmrj+mrkemrk+mrlOmrnumrn+mroumro+mrpumrr+mrq+mrrumrtOmrsemrt1wiXSxbXCJmMmExXCIsXCLpq7vprIbprJjprJrprJ/prKLprKPprKXprKfprKjprKnprKrprK7prK/prLLprYTprYPprY/prY3prY7prZHprZjprbTprpPproPprpHprpbprpfprp/prqDprqjprrTpr4Dpr4rprrnpr4bpr4/pr5Hpr5Lpr6Ppr6Lpr6Tpr5Tpr6HpsLrpr7Lpr7Hpr7DpsJXpsJTpsInpsJPpsIzpsIbpsIjpsJLpsIrpsITpsK7psJvpsKXpsKTpsKHpsLDpsYfpsLLpsYbpsL7psZrpsaDpsafpsbbpsbjps6fps6zps7DptInptIjps6vptIPptIbptKrptKbptq/ptKPptJ/ptYTptJXptJLptYHptL/ptL7ptYbptYhcIl0sW1wiZjNhMVwiLFwi6bWd6bWe6bWk6bWR6bWQ6bWZ6bWy6baJ6baH6bar6bWv6bW66baa6bak6bap6bay6beE6beB6ba76ba46ba66beG6beP6beC6beZ6beT6be46bem6bet6bev6be96bia6bib6bie6bm16bm56bm96bqB6bqI6bqL6bqM6bqS6bqV6bqR6bqd6bql6bqp6bq46bqq6bqt6Z2h6buM6buO6buP6buQ6buU6buc6bue6bud6bug6bul6buo6buv6bu06bu26bu36bu56bu76bu86bu96byH6byI55q36byV6byh6bys6by+6b2K6b2S6b2U6b2j6b2f6b2g6b2h6b2m6b2n6b2s6b2q6b236b2y6b226b6V6b6c6b6gXCJdLFtcImY0YTFcIixcIuWgr+anh+mBmeeRpOWHnOeGmVwiXSxbXCJmOWExXCIsXCLnuoropJzpjYjpiojok5zkv4nngrvmmLHmo4jpi7nmm7vlvYXkuKjku6Hku7zkvIDkvIPkvLnkvZbkvpLkvorkvprkvpTkv43lgYDlgKLkv7/lgJ7lgYblgbDlgYLlgpTlg7Tlg5jlhYrlhaTlhp3lhr7lh6zliJXlipzliqbli4Dli5vljIDljIfljKTljbLljpPljrLlj53vqI7lkpzlkorlkqnlk7/lloblnZnlnaXlnqzln4jln4fvqI/vqJDlop7lorLlpIvlpZPlpZvlpZ3lpaPlpqTlprrlrZblr4DnlK/lr5jlr6zlsJ7lsqblsrrls7XltKfltZPvqJHltYLlta3ltrjltrnlt5DlvKHlvLTlvaflvrdcIl0sW1wiZmFhMVwiLFwi5b+e5oGd5oKF5oKK5oOe5oOV5oSg5oOy5oSR5oS35oSw5oaY5oiT5oqm5o+15pGg5pKd5pOO5pWO5piA5piV5pi75piJ5piu5pie5pik5pml5pmX5pmZ76iS5pmz5pqZ5pqg5pqy5pq/5pu65pyO76Sp5p2m5p675qGS5p+A5qCB5qGE5qOP76iT5qWo76iU5qaY5qei5qiw5qmr5qmG5qmz5qm+5qui5quk5q+W5rC/5rGc5rKG5rGv5rOa5rSE5raH5rWv5raW5ras5reP5re45rey5re85ri55rmc5rin5ri85rq/5r6I5r615r+154CF54CH54Co54KF54Kr54SP54SE54Wc54WG54WH76iV54eB54e+54qxXCJdLFtcImZiYTFcIixcIueKvueMpO+olueNt+eOveePieePluePo+ePkueQh+ePteeQpueQqueQqeeQrueRoueSieeSn+eUgeeVr+eagueanOeanueam+eapu+ol+edhuWKr+egoeehjuehpOehuueksO+omO+ome+omuemlO+om+emm+erkeerp++onOerq+eunu+onee1iOe1nOe2t+e2oOe3lue5kue9h+e+oe+onuiMgeiNouiNv+iPh+iPtuiRiOiStOiVk+iVmeiVq++on+iWsO+ooO+ooeigh+ijteiokuiot+ipueiqp+iqvuirn++oouirtuitk+itv+izsOiztOi0kui1tu+oo+i7j++opO+opemBp+mDnu+opumElemEp+mHmlwiXSxbXCJmY2ExXCIsXCLph5fph57ph63ph67ph6Tph6XpiIbpiJDpiIrpiLrpiYDpiLzpiY7piZnpiZHpiLnpiafpiqfpibfpibjpi6fpi5fpi5npi5DvqKfpi5Xpi6Dpi5PpjKXpjKHpi7vvqKjpjJ7pi7/pjJ3pjILpjbDpjZfpjqTpj4bpj57pj7jpkLHpkYXpkYjplpLvp5zvqKnpmp3pmq/pnLPpnLvpnYPpnY3pnY/pnZHpnZXpoZfpoaXvqKrvqKvppKfvqKzppp7pqY7pq5npq5zprbXprbLpro/prrHprrvpsIDptbDptavvqK3puJnpu5FcIl0sW1wiZmNmMVwiLFwi4oWwXCIsOSxcIu+/ou+/pO+8h++8glwiXSxbXCI4ZmEyYWZcIixcIsuYy4fCuMuZy53Cr8uby5rvvZ7OhM6FXCJdLFtcIjhmYTJjMlwiLFwiwqHCpsK/XCJdLFtcIjhmYTJlYlwiLFwiwrrCqsKpwq7ihKLCpOKEllwiXSxbXCI4ZmE2ZTFcIixcIs6GzojOic6KzqpcIl0sW1wiOGZhNmU3XCIsXCLOjFwiXSxbXCI4ZmE2ZTlcIixcIs6OzqtcIl0sW1wiOGZhNmVjXCIsXCLOj1wiXSxbXCI4ZmE2ZjFcIixcIs6szq3Ors6vz4rOkM+Mz4LPjc+LzrDPjlwiXSxbXCI4ZmE3YzJcIixcItCCXCIsMTAsXCLQjtCPXCJdLFtcIjhmYTdmMlwiLFwi0ZJcIiwxMCxcItGe0Z9cIl0sW1wiOGZhOWExXCIsXCLDhsSQXCJdLFtcIjhmYTlhNFwiLFwixKZcIl0sW1wiOGZhOWE2XCIsXCLEslwiXSxbXCI4ZmE5YThcIixcIsWBxL9cIl0sW1wiOGZhOWFiXCIsXCLFisOYxZJcIl0sW1wiOGZhOWFmXCIsXCLFpsOeXCJdLFtcIjhmYTljMVwiLFwiw6bEkcOwxKfEscSzxLjFgsWAxYnFi8O4xZPDn8Wnw75cIl0sW1wiOGZhYWExXCIsXCLDgcOAw4TDgsSCx43EgMSEw4XDg8SGxIjEjMOHxIrEjsOJw4jDi8OKxJrElsSSxJhcIl0sW1wiOGZhYWJhXCIsXCLEnMSexKLEoMSkw43DjMOPw47Hj8SwxKrErsSoxLTEtsS5xL3Eu8WDxYfFhcORw5PDksOWw5THkcWQxYzDlcWUxZjFlsWaxZzFoMWexaTFosOaw5nDnMObxazHk8WwxarFssWuxajHl8ebx5nHlcW0w53FuMW2xbnFvcW7XCJdLFtcIjhmYWJhMVwiLFwiw6HDoMOkw6LEg8eOxIHEhcOlw6PEh8SJxI3Dp8SLxI/DqcOow6vDqsSbxJfEk8SZx7XEncSfXCJdLFtcIjhmYWJiZFwiLFwixKHEpcOtw6zDr8Oux5BcIl0sW1wiOGZhYmM1XCIsXCLEq8SvxKnEtcS3xLrEvsS8xYTFiMWGw7HDs8Oyw7bDtMeSxZHFjcO1xZXFmcWXxZvFncWhxZ/FpcWjw7rDucO8w7vFrceUxbHFq8Wzxa/FqceYx5zHmseWxbXDvcO/xbfFusW+xbxcIl0sW1wiOGZiMGExXCIsXCLkuILkuITkuIXkuIzkuJLkuJ/kuKPkuKTkuKjkuKvkuK7kuK/kuLDkuLXkuYDkuYHkuYTkuYfkuZHkuZrkuZzkuaPkuajkuankubTkubXkubnkub/kuo3kupbkupfkup3kuq/kurnku4Pku5Dku5rku5vku6Dku6Hku6Lku6jku6/ku7Hku7Pku7Xku73ku77ku7/kvIDkvILkvIPkvIjkvIvkvIzkvJLkvJXkvJbkvJfkvJnkvK7kvLHkvaDkvLPkvLXkvLfkvLnkvLvkvL7kvYDkvYLkvYjkvYnkvYvkvYzkvZLkvZTkvZbkvZjkvZ/kvaPkvarkvazkva7kvbHkvbfkvbjkvbnkvbrkvb3kvb7kvoHkvoLkvoRcIl0sW1wiOGZiMWExXCIsXCLkvoXkvonkvorkvozkvo7kvpDkvpLkvpPkvpTkvpfkvpnkvprkvp7kvp/kvrLkvrfkvrnkvrvkvrzkvr3kvr7kv4Dkv4Hkv4Xkv4bkv4jkv4nkv4vkv4zkv43kv4/kv5Lkv5zkv6Dkv6Lkv7Dkv7Lkv7zkv73kv7/lgIDlgIHlgITlgIflgIrlgIzlgI7lgJDlgJPlgJflgJjlgJvlgJzlgJ3lgJ7lgKLlgKflgK7lgLDlgLLlgLPlgLXlgYDlgYHlgYLlgYXlgYblgYrlgYzlgY7lgZHlgZLlgZPlgZflgZnlgZ/lgaDlgaLlgaPlgablgaflgarlga3lgbDlgbHlgLvlgoHlgoPlgoTlgoblgorlgo7lgo/lgpBcIl0sW1wiOGZiMmExXCIsXCLlgpLlgpPlgpTlgpblgpvlgpzlgp5cIiw0LFwi5YKq5YKv5YKw5YK55YK65YK95YOA5YOD5YOE5YOH5YOM5YOO5YOQ5YOT5YOU5YOY5YOc5YOd5YOf5YOi5YOk5YOm5YOo5YOp5YOv5YOx5YO25YO65YO+5YSD5YSG5YSH5YSI5YSL5YSM5YSN5YSO5YOy5YSQ5YSX5YSZ5YSb5YSc5YSd5YSe5YSj5YSn5YSo5YSs5YSt5YSv5YSx5YSz5YS05YS15YS45YS55YWC5YWK5YWP5YWT5YWV5YWX5YWY5YWf5YWk5YWm5YW+5YaD5YaE5YaL5YaO5YaY5Yad5Yah5Yaj5Yat5Ya45Ya65Ya85Ya+5Ya/5YeCXCJdLFtcIjhmYjNhMVwiLFwi5YeI5YeP5YeR5YeS5YeT5YeV5YeY5Yee5Yei5Yel5Yeu5Yey5Yez5Ye05Ye35YiB5YiC5YiF5YiS5YiT5YiV5YiW5YiY5Yii5Yio5Yix5Yiy5Yi15Yi85YmF5YmJ5YmV5YmX5YmY5Yma5Ymc5Ymf5Ymg5Ymh5Ymm5Ymu5Ym35Ym45Ym55YqA5YqC5YqF5YqK5YqM5YqT5YqV5YqW5YqX5YqY5Yqa5Yqc5Yqk5Yql5Yqm5Yqn5Yqv5Yqw5Yq25Yq35Yq45Yq65Yq75Yq95YuA5YuE5YuG5YuI5YuM5YuP5YuR5YuU5YuW5Yub5Yuc5Yuh5Yul5Yuo5Yup5Yuq5Yus5Yuw5Yux5Yu05Yu25Yu35YyA5YyD5YyK5YyLXCJdLFtcIjhmYjRhMVwiLFwi5YyM5YyR5YyT5YyY5Yyb5Yyc5Yye5Yyf5Yyl5Yyn5Yyo5Yyp5Yyr5Yys5Yyt5Yyw5Yyy5Yy15Yy85Yy95Yy+5Y2C5Y2M5Y2L5Y2Z5Y2b5Y2h5Y2j5Y2l5Y2s5Y2t5Y2y5Y255Y2+5Y6D5Y6H5Y6I5Y6O5Y6T5Y6U5Y6Z5Y6d5Y6h5Y6k5Y6q5Y6r5Y6v5Y6y5Y605Y615Y635Y645Y665Y695Y+A5Y+F5Y+P5Y+S5Y+T5Y+V5Y+a5Y+d5Y+e5Y+g5Y+m5Y+n5Y+15ZCC5ZCT5ZCa5ZCh5ZCn5ZCo5ZCq5ZCv5ZCx5ZC05ZC15ZGD5ZGE5ZGH5ZGN5ZGP5ZGe5ZGi5ZGk5ZGm5ZGn5ZGp5ZGr5ZGt5ZGu5ZG05ZG/XCJdLFtcIjhmYjVhMVwiLFwi5ZKB5ZKD5ZKF5ZKI5ZKJ5ZKN5ZKR5ZKV5ZKW5ZKc5ZKf5ZKh5ZKm5ZKn5ZKp5ZKq5ZKt5ZKu5ZKx5ZK35ZK55ZK65ZK75ZK/5ZOG5ZOK5ZON5ZOO5ZOg5ZOq5ZOs5ZOv5ZO25ZO85ZO+5ZO/5ZSA5ZSB5ZSF5ZSI5ZSJ5ZSM5ZSN5ZSO5ZSV5ZSq5ZSr5ZSy5ZS15ZS25ZS75ZS85ZS95ZWB5ZWH5ZWJ5ZWK5ZWN5ZWQ5ZWR5ZWY5ZWa5ZWb5ZWe5ZWg5ZWh5ZWk5ZWm5ZW/5ZaB5ZaC5ZaG5ZaI5ZaO5ZaP5ZaR5ZaS5ZaT5ZaU5ZaX5Zaj5Zak5Zat5Zay5Za/5ZeB5ZeD5ZeG5ZeJ5ZeL5ZeM5ZeO5ZeR5ZeSXCJdLFtcIjhmYjZhMVwiLFwi5ZeT5ZeX5ZeY5Zeb5Zee5Zei5Zep5Ze25Ze/5ZiF5ZiI5ZiK5ZiNXCIsNSxcIuWYmeWYrOWYsOWYs+WYteWYt+WYueWYu+WYvOWYveWYv+WZgOWZgeWZg+WZhOWZhuWZieWZi+WZjeWZj+WZlOWZnuWZoOWZoeWZouWZo+WZpuWZqeWZreWZr+WZseWZsuWZteWahOWaheWaiOWai+WajOWaleWameWamuWaneWanuWan+WapuWap+WaqOWaqeWaq+WarOWareWaseWas+Wat+WavuWbheWbieWbiuWbi+Wbj+WbkOWbjOWbjeWbmeWbnOWbneWbn+WboeWbpFwiLDQsXCLlm7Hlm6vlm61cIl0sW1wiOGZiN2ExXCIsXCLlm7blm7flnIHlnILlnIflnIrlnIzlnJHlnJXlnJrlnJvlnJ3lnKDlnKLlnKPlnKTlnKXlnKnlnKrlnKzlnK7lnK/lnLPlnLTlnL3lnL7lnL/lnYXlnYblnYzlnY3lnZLlnaLlnaXlnaflnajlnavlna1cIiw0LFwi5Z2z5Z205Z215Z235Z255Z265Z275Z285Z2+5Z6B5Z6D5Z6M5Z6U5Z6X5Z6Z5Z6a5Z6c5Z6d5Z6e5Z6f5Z6h5Z6V5Z6n5Z6o5Z6p5Z6s5Z645Z695Z+H5Z+I5Z+M5Z+P5Z+V5Z+d5Z+e5Z+k5Z+m5Z+n5Z+p5Z+t5Z+w5Z+15Z+25Z+45Z+95Z++5Z+/5aCD5aCE5aCI5aCJ5Z+hXCJdLFtcIjhmYjhhMVwiLFwi5aCM5aCN5aCb5aCe5aCf5aCg5aCm5aCn5aCt5aCy5aC55aC/5aGJ5aGM5aGN5aGP5aGQ5aGV5aGf5aGh5aGk5aGn5aGo5aG45aG85aG/5aKA5aKB5aKH5aKI5aKJ5aKK5aKM5aKN5aKP5aKQ5aKU5aKW5aKd5aKg5aKh5aKi5aKm5aKp5aKx5aKy5aOE5aK85aOC5aOI5aON5aOO5aOQ5aOS5aOU5aOW5aOa5aOd5aOh5aOi5aOp5aOz5aSF5aSG5aSL5aSM5aSS5aST5aSU6JmB5aSd5aSh5aSj5aSk5aSo5aSv5aSw5aSz5aS15aS25aS/5aWD5aWG5aWS5aWT5aWZ5aWb5aWd5aWe5aWf5aWh5aWj5aWr5aWtXCJdLFtcIjhmYjlhMVwiLFwi5aWv5aWy5aW15aW25aW55aW75aW85aaL5aaM5aaO5aaS5aaV5aaX5aaf5aak5aan5aat5aau5aav5aaw5aaz5aa35aa65aa85aeB5aeD5aeE5aeI5aeK5aeN5aeS5aed5aee5aef5aej5aek5aen5aeu5aev5aex5aey5ae05ae35aiA5aiE5aiM5aiN5aiO5aiS5aiT5aie5aij5aik5ain5aio5aiq5ait5aiw5amE5amF5amH5amI5amM5amQ5amV5ame5amj5aml5amn5amt5am35am65am75am+5aqL5aqQ5aqT5aqW5aqZ5aqc5aqe5aqf5aqg5aqi5aqn5aqs5aqx5aqy5aqz5aq15aq45aq65aq75aq/XCJdLFtcIjhmYmFhMVwiLFwi5auE5auG5auI5auP5aua5auc5aug5aul5auq5auu5au15au25au95ayA5ayB5ayI5ayX5ay05ayZ5ayb5ayd5ayh5ayl5ayt5ay45a2B5a2L5a2M5a2S5a2W5a2e5a2o5a2u5a2v5a285a295a2+5a2/5a6B5a6E5a6G5a6K5a6O5a6Q5a6R5a6T5a6U5a6W5a6o5a6p5a6s5a6t5a6v5a6x5a6y5a635a665a685a+A5a+B5a+N5a+P5a+WXCIsNCxcIuWvoOWvr+WvseWvtOWvveWwjOWwl+WwnuWwn+Wwo+WwpuWwqeWwq+WwrOWwruWwsOWwsuWwteWwtuWxmeWxmuWxnOWxouWxo+Wxp+WxqOWxqVwiXSxbXCI4ZmJiYTFcIixcIuWxreWxsOWxtOWxteWxuuWxu+WxvOWxveWyh+WyiOWyiuWyj+WykuWyneWyn+WyoOWyouWyo+WypuWyquWysuWytOWyteWyuuWzieWzi+WzkuWzneWzl+WzruWzseWzsuWztOW0geW0huW0jeW0kuW0q+W0o+W0pOW0puW0p+W0seW0tOW0ueW0veW0v+W1guW1g+W1huW1iOW1leW1keW1meW1iuW1n+W1oOW1oeW1ouW1pOW1quW1reW1sOW1ueW1uuW1vuW1v+W2geW2g+W2iOW2iuW2kuW2k+W2lOW2leW2meW2m+W2n+W2oOW2p+W2q+W2sOW2tOW2uOW2ueW3g+W3h+W3i+W3kOW3juW3mOW3meW3oOW3pFwiXSxbXCI4ZmJjYTFcIixcIuW3qeW3uOW3ueW4gOW4h+W4jeW4kuW4lOW4leW4mOW4n+W4oOW4ruW4qOW4suW4teW4vuW5i+W5kOW5ieW5keW5luW5mOW5m+W5nOW5nuW5qOW5qlwiLDQsXCLlubDluoDluovluo7luqLluqTluqXluqjluqrluqzlurHlurPlur3lur7lur/lu4blu4zlu4vlu47lu5Hlu5Llu5Tlu5Xlu5zlu57lu6Xlu6vlvILlvIblvIflvIjlvI7lvJnlvJzlvJ3lvKHlvKLlvKPlvKTlvKjlvKvlvKzlvK7lvLDlvLTlvLblvLvlvL3lvL/lvYDlvYTlvYXlvYflvY3lvZDlvZTlvZjlvZvlvaDlvaPlvaTlvadcIl0sW1wiOGZiZGExXCIsXCLlva/lvbLlvbTlvbXlvbjlvbrlvb3lvb7lvonlvo3lvo/lvpblvpzlvp3lvqLlvqflvqvlvqTlvqzlvq/lvrDlvrHlvrjlv4Tlv4flv4jlv4nlv4vlv5BcIiw0LFwi5b+e5b+h5b+i5b+o5b+p5b+q5b+s5b+t5b+u5b+v5b+y5b+z5b+25b+65b+85oCH5oCK5oCN5oCT5oCU5oCX5oCY5oCa5oCf5oCk5oCt5oCz5oC15oGA5oGH5oGI5oGJ5oGM5oGR5oGU5oGW5oGX5oGd5oGh5oGn5oGx5oG+5oG/5oKC5oKG5oKI5oKK5oKO5oKR5oKT5oKV5oKY5oKd5oKe5oKi5oKk5oKl5oKo5oKw5oKx5oK3XCJdLFtcIjhmYmVhMVwiLFwi5oK75oK+5oOC5oOE5oOI5oOJ5oOK5oOL5oOO5oOP5oOU5oOV5oOZ5oOb5oOd5oOe5oOi5oOl5oOy5oO15oO45oO85oO95oSC5oSH5oSK5oSM5oSQXCIsNCxcIuaEluaEl+aEmeaEnOaEnuaEouaEquaEq+aEsOaEseaEteaEtuaEt+aEueaFgeaFheaFhuaFieaFnuaFoOaFrOaFsuaFuOaFu+aFvOaFv+aGgOaGgeaGg+aGhOaGi+aGjeaGkuaGk+aGl+aGmOaGnOaGneaGn+aGoOaGpeaGqOaGquaGreaGuOaGueaGvOaHgOaHgeaHguaHjuaHj+aHleaHnOaHneaHnuaHn+aHoeaHouaHp+aHqeaHpVwiXSxbXCI4ZmJmYTFcIixcIuaHrOaHreaHr+aIgeaIg+aIhOaIh+aIk+aIleaInOaIoOaIouaIo+aIp+aIqeaIq+aIueaIveaJguaJg+aJhOaJhuaJjOaJkOaJkeaJkuaJlOaJluaJmuaJnOaJpOaJreaJr+aJs+aJuuaJveaKjeaKjuaKj+aKkOaKpuaKqOaKs+aKtuaKt+aKuuaKvuaKv+aLhOaLjuaLleaLluaLmuaLquaLsuaLtOaLvOaLveaMg+aMhOaMiuaMi+aMjeaMkOaMk+aMluaMmOaMqeaMquaMreaMteaMtuaMueaMvOaNgeaNguaNg+aNhOaNhuaNiuaNi+aNjuaNkuaNk+aNlOaNmOaNm+aNpeaNpuaNrOaNreaNseaNtOaNtVwiXSxbXCI4ZmMwYTFcIixcIuaNuOaNvOaNveaNv+aOguaOhOaOh+aOiuaOkOaOlOaOleaOmeaOmuaOnuaOpOaOpuaOreaOruaOr+aOveaPgeaPheaPiOaPjuaPkeaPk+aPlOaPleaPnOaPoOaPpeaPquaPrOaPsuaPs+aPteaPuOaPueaQieaQiuaQkOaQkuaQlOaQmOaQnuaQoOaQouaQpOaQpeaQqeaQquaQr+aQsOaQteaQveaQv+aRi+aRj+aRkeaRkuaRk+aRlOaRmuaRm+aRnOaRneaRn+aRoOaRoeaRo+aRreaRs+aRtOaRu+aRveaSheaSh+aSj+aSkOaSkeaSmOaSmeaSm+aSneaSn+aSoeaSo+aSpuaSqOaSrOaSs+aSveaSvuaSv1wiXSxbXCI4ZmMxYTFcIixcIuaThOaTieaTiuaTi+aTjOaTjuaTkOaTkeaTleaTl+aTpOaTpeaTqeaTquaTreaTsOaTteaTt+aTu+aTv+aUgeaUhOaUiOaUieaUiuaUj+aUk+aUlOaUluaUmeaUm+aUnuaUn+aUouaUpuaUqeaUruaUseaUuuaUvOaUveaVg+aVh+aVieaVkOaVkuaVlOaVn+aVoOaVp+aVq+aVuuaVveaWgeaWheaWiuaWkuaWleaWmOaWneaWoOaWo+aWpuaWruaWsuaWs+aWtOaWv+aXguaXiOaXieaXjuaXkOaXlOaXluaXmOaXn+aXsOaXsuaXtOaXteaXueaXvuaXv+aYgOaYhOaYiOaYieaYjeaYkeaYkuaYleaYluaYnVwiXSxbXCI4ZmMyYTFcIixcIuaYnuaYoeaYouaYo+aYpOaYpuaYqeaYquaYq+aYrOaYruaYsOaYseaYs+aYueaYt+aZgOaZheaZhuaZiuaZjOaZkeaZjuaZl+aZmOaZmeaZm+aZnOaZoOaZoeabu+aZquaZq+aZrOaZvuaZs+aZteaZv+aZt+aZuOaZueaZu+aagOaZvOaai+aajOaajeaakOaakuaameaamuaam+aanOaan+aaoOaapOaareaaseaasuaateaau+aav+abgOabguabg+abiOabjOabjuabj+ablOabm+abn+abqOabq+abrOabruabuuacheach+acjuack+acmeacnOacoOacouacs+acvuadheadh+adiOadjOadlOadleadnVwiXSxbXCI4ZmMzYTFcIixcIuadpuadrOadruadtOadtuadu+aegeaehOaejuaej+aekeaek+aeluaemOaemeaem+aesOaeseaesuaeteaeu+aevOaeveafueafgOafguafg+afheafiOafieafkuafl+afmeafnOafoeafpuafsOafsuaftuaft+ahkuaglOagmeagneagn+agqOagp+agrOagreagr+agsOagseags+agu+agv+ahhOahheahiuahjOahleahl+ahmOahm+ahq+ahrlwiLDQsXCLmobXmobnmobrmobvmobzmooLmooTmoobmoojmopbmopjmoprmopzmoqHmoqPmoqXmoqnmoqrmoq7morLmorvmo4Xmo4jmo4zmo49cIl0sW1wiOGZjNGExXCIsXCLmo5Dmo5Hmo5Pmo5bmo5nmo5zmo53mo6Xmo6jmo6rmo6vmo6zmo63mo7Dmo7Hmo7Xmo7bmo7vmo7zmo73mpIbmpInmpIrmpJDmpJHmpJPmpJbmpJfmpLHmpLPmpLXmpLjmpLvmpYLmpYXmpYnmpY7mpZfmpZvmpaPmpaTmpaXmpabmpajmpanmpazmpbDmpbHmpbLmpbrmpbvmpb/mpoDmpo3mppLmppbmppjmpqHmpqXmpqbmpqjmpqvmpq3mpq/mprfmprjmprrmprzmp4Xmp4jmp5Hmp5bmp5fmp6Lmp6Xmp67mp6/mp7Hmp7Pmp7Xmp77mqIDmqIHmqIPmqI/mqJHmqJXmqJrmqJ3mqKDmqKTmqKjmqLDmqLJcIl0sW1wiOGZjNWExXCIsXCLmqLTmqLfmqLvmqL7mqL/mqYXmqYbmqYnmqYrmqY7mqZDmqZHmqZLmqZXmqZbmqZvmqaTmqafmqarmqbHmqbPmqb7mqoHmqoPmqobmqofmqonmqovmqpHmqpvmqp3mqp7mqp/mqqXmqqvmqq/mqrDmqrHmqrTmqr3mqr7mqr/mq4bmq4nmq4jmq4zmq5Dmq5Tmq5Xmq5bmq5zmq53mq6Tmq6fmq6zmq7Dmq7Hmq7Lmq7zmq73mrILmrIPmrIbmrIfmrInmrI/mrJDmrJHmrJfmrJvmrJ7mrKTmrKjmrKvmrKzmrK/mrLXmrLbmrLvmrL/mrYbmrYrmrY3mrZLmrZbmrZjmrZ3mraDmrafmravmra7mrbDmrbXmrb1cIl0sW1wiOGZjNmExXCIsXCLmrb7mroLmroXmrpfmrpvmrp/mrqDmrqLmrqPmrqjmrqnmrqzmrq3mrq7mrrDmrrjmrrnmrr3mrr7mr4Pmr4Tmr4nmr4zmr5bmr5rmr6Hmr6Pmr6bmr6fmr67mr7Hmr7fmr7nmr7/msILmsITmsIXmsInmsI3msI7msJDmsJLmsJnmsJ/msKbmsKfmsKjmsKzmsK7msLPmsLXmsLbmsLrmsLvmsL/msYrmsYvmsY3msY/msZLmsZTmsZnmsZvmsZzmsavmsa3msa/msbTmsbbmsbjmsbnmsbvmsoXmsobmsofmsonmspTmspXmspfmspjmspzmsp/msrDmsrLmsrTms4Lms4bms43ms4/ms5Dms5Hms5Lms5Tms5ZcIl0sW1wiOGZjN2ExXCIsXCLms5rms5zms6Dms6fms6nms6vms6zms67ms7Lms7TmtITmtIfmtIrmtI7mtI/mtJHmtJPmtJrmtKbmtKfmtKjmsafmtK7mtK/mtLHmtLnmtLzmtL/mtZfmtZ7mtZ/mtaHmtaXmtafmta/mtbDmtbzmtoLmtofmtpHmtpLmtpTmtpbmtpfmtpjmtqrmtqzmtrTmtrfmtrnmtr3mtr/mt4Tmt4jmt4rmt47mt4/mt5bmt5vmt53mt5/mt6Dmt6Lmt6Xmt6nmt6/mt7Dmt7Tmt7bmt7zmuIDmuITmuJ7muKLmuKfmuLLmuLbmuLnmuLvmuLzmuYTmuYXmuYjmuYnmuYvmuY/muZHmuZLmuZPmuZTmuZfmuZzmuZ3muZ5cIl0sW1wiOGZjOGExXCIsXCLmuaLmuaPmuajmubPmubvmub3muo3mupPmupnmuqDmuqfmuq3muq7murHmurPmurvmur/mu4Dmu4Hmu4Pmu4fmu4jmu4rmu43mu47mu4/mu6vmu63mu67mu7nmu7vmu73mvITmvIjmvIrmvIzmvI3mvJbmvJjmvJrmvJvmvKbmvKnmvKrmvK/mvLDmvLPmvLbmvLvmvLzmvK3mvY/mvZHmvZLmvZPmvZfmvZnmvZrmvZ3mvZ7mvaHmvaLmvajmvazmvb3mvb7mvoPmvofmvojmvovmvozmvo3mvpDmvpLmvpPmvpTmvpbmvprmvp/mvqDmvqXmvqbmvqfmvqjmvq7mvq/mvrDmvrXmvrbmvrzmv4Xmv4fmv4jmv4pcIl0sW1wiOGZjOWExXCIsXCLmv5rmv57mv6jmv6nmv7Dmv7Xmv7nmv7zmv73ngIDngIXngIbngIfngI3ngJfngKDngKPngK/ngLTngLfngLnngLzngYPngYTngYjngYnngYrngYvngZTngZXngZ3ngZ7ngY7ngaTngaXngaznga7ngbXngbbngb7ngoHngoXngobngpRcIiw0LFwi54Kb54Kk54Kr54Kw54Kx54K054K354OK54OR54OT54OU54OV54OW54OY54Oc54Ok54O654SDXCIsNCxcIueEi+eEjOeEj+eEnueEoOeEq+eEreeEr+eEsOeEseeEuOeFgeeFheeFhueFh+eFiueFi+eFkOeFkueFl+eFmueFnOeFnueFoFwiXSxbXCI4ZmNhYTFcIixcIueFqOeFueeGgOeGheeGh+eGjOeGkueGmueGm+eGoOeGoueGr+eGsOeGsueGs+eGuueGv+eHgOeHgeeHhOeHi+eHjOeHk+eHlueHmeeHmueHnOeHuOeHvueIgOeIh+eIiOeIieeIk+eIl+eImueIneeIn+eIpOeIq+eIr+eItOeIuOeIueeJgeeJgueJg+eJheeJjueJj+eJkOeJk+eJleeJlueJmueJnOeJnueJoOeJo+eJqOeJq+eJrueJr+eJseeJt+eJuOeJu+eJvOeJv+eKhOeKieeKjeeKjueKk+eKm+eKqOeKreeKrueKseeKtOeKvueLgeeLh+eLieeLjOeLleeLlueLmOeLn+eLpeeLs+eLtOeLuueLu1wiXSxbXCI4ZmNiYTFcIixcIueLvueMgueMhOeMheeMh+eMi+eMjeeMkueMk+eMmOeMmeeMnueMoueMpOeMp+eMqOeMrOeMseeMsueMteeMuueMu+eMveeNg+eNjeeNkOeNkueNlueNmOeNneeNnueNn+eNoOeNpueNp+eNqeeNq+eNrOeNrueNr+eNseeNt+eNueeNvOeOgOeOgeeOg+eOheeOhueOjueOkOeOk+eOleeOl+eOmOeOnOeOnueOn+eOoOeOoueOpeeOpueOqueOq+eOreeOteeOt+eOueeOvOeOveeOv+ePheePhuePieePi+ePjOePj+ePkuePk+ePluePmeePneePoeePo+ePpuePp+ePqeePtOePteePt+ePueePuuePu+ePvVwiXSxbXCI4ZmNjYTFcIixcIuePv+eQgOeQgeeQhOeQh+eQiueQkeeQmueQm+eQpOeQpueQqFwiLDksXCLnkLnnkYDnkYPnkYTnkYbnkYfnkYvnkY3nkZHnkZLnkZfnkZ3nkaLnkabnkafnkajnkavnka3nka7nkbHnkbLnkoDnkoHnkoXnkobnkofnkonnko/nkpDnkpHnkpLnkpjnkpnnkprnkpznkp/nkqDnkqHnkqPnkqbnkqjnkqnnkqrnkqvnkq7nkq/nkrHnkrLnkrXnkrnnkrvnkr/nk4jnk4nnk4znk5Dnk5Pnk5jnk5rnk5vnk57nk5/nk6Tnk6jnk6rnk6vnk6/nk7Tnk7rnk7vnk7znk7/nlIZcIl0sW1wiOGZjZGExXCIsXCLnlJLnlJbnlJfnlKDnlKHnlKTnlKfnlKnnlKrnlK/nlLbnlLnnlL3nlL7nlL/nlYDnlYPnlYfnlYjnlY7nlZDnlZLnlZfnlZ7nlZ/nlaHnla/nlbHnlblcIiw1LFwi55aB55aF55aQ55aS55aT55aV55aZ55ac55ai55ak55a055a655a/55eA55eB55eE55eG55eM55eO55eP55eX55ec55ef55eg55eh55ek55en55es55eu55ev55ex55e555iA55iC55iD55iE55iH55iI55iK55iM55iP55iS55iT55iV55iW55iZ55ib55ic55id55ie55ij55il55im55ip55it55iy55iz55i155i455i5XCJdLFtcIjhmY2VhMVwiLFwi55i655i855mK55mA55mB55mD55mE55mF55mJ55mL55mV55mZ55mf55mk55ml55mt55mu55mv55mx55m055qB55qF55qM55qN55qV55qb55qc55qd55qf55qg55qiXCIsNixcIueaqueareeaveebgeebheebieebi+ebjOebjueblOebmeeboOebpuebqOebrOebsOebseebtuebueebvOecgOechueciuecjueckueclOecleecl+ecmeecmuecnOecouecqOecreecruecr+ectOecteectuecueecveecvuedguedheedhuediuedjeedjuedj+edkuedluedl+ednOednuedn+edoOedolwiXSxbXCI4ZmNmYTFcIixcIuedpOedp+edquedrOedsOedsueds+edtOeduuedveeegOeehOeejOeejeeelOeeleeelueemueen+eeoueep+eequeerueer+eeseeeteeevuefg+efieefkeefkuefleefmeefnuefn+efoOefpOefpuefquefrOefsOefseeftOefuOefu+egheeghuegieegjeegjuegkeegneegoeegouego+egreegruegsOegteegt+ehg+ehhOehh+ehiOehjOehjuehkuehnOehnuehoOehoeeho+ehpOehqOehquehruehuuehvueiiueij+eilOeimOeioeeineeinuein+eipOeiqOeirOeireeisOeiseeisueis1wiXSxbXCI4ZmQwYTFcIixcIueiu+eiveeiv+ejh+ejiOejieejjOejjuejkuejk+ejleejluejpOejm+ejn+ejoOejoeejpuejquejsuejs+ekgOejtuejt+ejuueju+ejv+ekhuekjOekkOekmueknOeknuekn+ekoOekpeekp+ekqeekreekseektOekteeku+ekveekv+elhOelheelhueliueli+elj+elkeellOelmOelm+elnOelp+elqeelq+elsuelueelu+elvOelvuemi+emjOemkeemk+emlOemleemluemmOemm+emnOemoeemqOemqeemq+emr+emseemtOemuOemu+enguenhOenh+eniOeniuenj+enlOenluenmuenneennlwiXSxbXCI4ZmQxYTFcIixcIuenoOenouenpeenquenq+enreenseenuOenvOeogueog+eoh+eoieeoiueojOeokeeoleeom+eonueooeeop+eoq+eoreeor+eosOeotOeoteeouOeoueeouuephOepheeph+epiOepjOepleepluepmeepnOepneepn+epoOeppeepp+epquepreepteepuOepvueqgOeqgueqheeqhueqiueqi+eqkOeqkeeqlOeqnueqoOeqo+eqrOeqs+eqteequeequ+eqvOerhuerieerjOerjuerkeerm+erqOerqeerq+errOerseertOeru+erveervuesh+eslOesn+eso+esp+esqeesquesq+esreesruesr+essFwiXSxbXCI4ZmQyYTFcIixcIuesseestOesveesv+etgOetgeeth+etjuetleetoOetpOetpuetqeetquetreetr+etsuets+ett+euhOeuieeujueukOeukeeulueum+eunueuoOeupeeurOeur+eusOeusueuteeutueuuueuu+euvOeuveevguevheeviOeviuevlOevluevl+evmeevmuevm+evqOevquevsuevtOevteevuOevueevuuevvOevvuewgeewguewg+ewhOewhuewieewi+ewjOewjuewj+ewmeewm+ewoOewpeewpuewqOewrOewseews+ewtOewtuewueewuuexhuexiuexleexkeexkuexk+exmVwiLDVdLFtcIjhmZDNhMVwiLFwi57Gh57Gj57Gn57Gp57Gt57Gu57Gw57Gy57G557G857G957KG57KH57KP57KU57Ke57Kg57Km57Kw57K257K357K657K757K857K/57OE57OH57OI57OJ57ON57OP57OT57OU57OV57OX57OZ57Oa57Od57Om57Op57Or57O157SD57SH57SI57SJ57SP57SR57SS57ST57SW57Sd57Se57Sj57Sm57Sq57St57Sx57S857S957S+57WA57WB57WH57WI57WN57WR57WT57WX57WZ57Wa57Wc57Wd57Wl57Wn57Wq57Ww57W457W657W757W/57aB57aC57aD57aF57aG57aI57aL57aM57aN57aR57aW57aX57adXCJdLFtcIjhmZDRhMVwiLFwi57ae57am57an57aq57az57a257a357a557eCXCIsNCxcIue3jOe3jee3jue3l+e3mee4gOe3oue3pee3pue3que3q+e3ree3see3tee3tue3uee3uue4iOe4kOe4kee4lee4l+e4nOe4nee4oOe4p+e4qOe4rOe4ree4r+e4s+e4tue4v+e5hOe5hee5h+e5jue5kOe5kue5mOe5n+e5oee5oue5pee5q+e5rue5r+e5s+e5uOe5vue6gee6hue6h+e6iue6jee6kee6lee6mOe6mue6nee6nue8vOe8u+e8vee8vue8v+e9g+e9hOe9h+e9j+e9kue9k+e9m+e9nOe9nee9oee9o+e9pOe9pee9pue9rVwiXSxbXCI4ZmQ1YTFcIixcIue9see9vee9vue9v+e+gOe+i+e+jee+j+e+kOe+kee+lue+l+e+nOe+oee+oue+pue+que+ree+tOe+vOe+v+e/gOe/g+e/iOe/jue/j+e/m+e/n+e/o+e/pee/qOe/rOe/rue/r+e/sue/uue/vee/vue/v+iAh+iAiOiAiuiAjeiAjuiAj+iAkeiAk+iAlOiAluiAneiAnuiAn+iAoOiApOiApuiArOiAruiAsOiAtOiAteiAt+iAueiAuuiAvOiAvuiBgOiBhOiBoOiBpOiBpuiBreiBseiBteiCgeiCiOiCjuiCnOiCnuiCpuiCp+iCq+iCuOiCueiDiOiDjeiDj+iDkuiDlOiDleiDl+iDmOiDoOiDreiDrlwiXSxbXCI4ZmQ2YTFcIixcIuiDsOiDsuiDs+iDtuiDueiDuuiDvuiEg+iEi+iEluiEl+iEmOiEnOiEnuiEoOiEpOiEp+iErOiEsOiEteiEuuiEvOiFheiFh+iFiuiFjOiFkuiFl+iFoOiFoeiFp+iFqOiFqeiFreiFr+iFt+iGgeiGkOiGhOiGheiGhuiGi+iGjuiGluiGmOiGm+iGnuiGouiGruiGsuiGtOiGu+iHi+iHg+iHheiHiuiHjuiHj+iHleiHl+iHm+iHneiHnuiHoeiHpOiHq+iHrOiHsOiHseiHsuiHteiHtuiHuOiHueiHveiHv+iIgOiIg+iIj+iIk+iIlOiImeiImuiIneiIoeiIouiIqOiIsuiItOiIuuiJg+iJhOiJheiJhlwiXSxbXCI4ZmQ3YTFcIixcIuiJi+iJjuiJj+iJkeiJluiJnOiJoOiJo+iJp+iJreiJtOiJu+iJveiJv+iKgOiKgeiKg+iKhOiKh+iKieiKiuiKjuiKkeiKlOiKluiKmOiKmuiKm+iKoOiKoeiKo+iKpOiKp+iKqOiKqeiKquiKruiKsOiKsuiKtOiKt+iKuuiKvOiKvuiKv+iLhuiLkOiLleiLmuiLoOiLouiLpOiLqOiLquiLreiLr+iLtuiLt+iLveiLvuiMgOiMgeiMh+iMiOiMiuiMi+iNlOiMm+iMneiMnuiMn+iMoeiMouiMrOiMreiMruiMsOiMs+iMt+iMuuiMvOiMveiNguiNg+iNhOiNh+iNjeiNjuiNkeiNleiNluiNl+iNsOiNuFwiXSxbXCI4ZmQ4YTFcIixcIuiNveiNv+iOgOiOguiOhOiOhuiOjeiOkuiOlOiOleiOmOiOmeiOm+iOnOiOneiOpuiOp+iOqeiOrOiOvuiOv+iPgOiPh+iPieiPj+iPkOiPkeiPlOiPneiNk+iPqOiPquiPtuiPuOiPueiPvOiQgeiQhuiQiuiQj+iQkeiQleiQmeiOreiQr+iQueiRheiRh+iRiOiRiuiRjeiRj+iRkeiRkuiRluiRmOiRmeiRmuiRnOiRoOiRpOiRpeiRp+iRquiRsOiRs+iRtOiRtuiRuOiRvOiRveiSgeiSheiSkuiSk+iSleiSnuiSpuiSqOiSqeiSquiSr+iSseiStOiSuuiSveiSvuiTgOiTguiTh+iTiOiTjOiTj+iTk1wiXSxbXCI4ZmQ5YTFcIixcIuiTnOiTp+iTquiTr+iTsOiTseiTsuiTt+iUsuiTuuiTu+iTveiUguiUg+iUh+iUjOiUjuiUkOiUnOiUnuiUouiUo+iUpOiUpeiUp+iUquiUq+iUr+iUs+iUtOiUtuiUv+iVhuiVj1wiLDQsXCLolZbolZnolZxcIiw2LFwi6JWk6JWr6JWv6JW56JW66JW76JW96JW/6JaB6JaF6JaG6JaJ6JaL6JaM6JaP6JaT6JaY6Jad6Jaf6Jag6Jai6Jal6Jan6Ja06Ja26Ja36Ja46Ja86Ja96Ja+6Ja/6JeC6JeH6JeK6JeL6JeO6Jat6JeY6Jea6Jef6Jeg6Jem6Jeo6Jet6Jez6Je26Je8XCJdLFtcIjhmZGFhMVwiLFwi6Je/6JiA6JiE6JiF6JiN6JiO6JiQ6JiR6JiS6JiY6JiZ6Jib6Jie6Jih6Jin6Jip6Ji26Ji46Ji66Ji86Ji96JmA6JmC6JmG6JmS6JmT6JmW6JmX6JmY6JmZ6Jmd6JmgXCIsNCxcIuiZqeiZrOiZr+iZteiZtuiZt+iZuuiajeiakeialuiamOiamuianOiaoeiapuiap+iaqOiareiaseias+iatOiateiat+iauOiaueiav+ibgOibgeibg+ibheibkeibkuibleibl+ibmuibnOiboOibo+ibpeibp+iaiOibuuibvOibveichOicheich+ici+icjuicj+ickOick+iclOicmeicnuicn+icoeico1wiXSxbXCI4ZmRiYTFcIixcIuicqOicruicr+icseicsuicueicuuicvOicveicvuidgOidg+idheidjeidmOidneidoeidpOidpeidr+idseidsuidu+ieg1wiLDYsXCLonovonozonpDonpPonpXonpfonpjonpnonp7onqDonqPonqfonqzonq3onq7onrHonrXonr7onr/on4Hon4jon4non4ron47on5Xon5bon5non5ron5zon5/on6Lon6Pon6Ton6ron6von63on7Hon7Pon7jon7ron7/ooIHooIPooIbooInooIrooIvooJDooJnooJLooJPooJTooJjooJrooJvooJzooJ7ooJ/ooKjooK3ooK7ooLDooLLooLVcIl0sW1wiOGZkY2ExXCIsXCLooLrooLzooYHooYPooYXooYjooYnooYrooYvooY7ooZHooZXooZbooZjooZrooZzooZ/ooaDooaTooanoobHoobnoobvoooDoopjooproopvoopzoop/ooqDooqjooqroorroor3oor7oo4Doo4pcIiw0LFwi6KOR6KOS6KOT6KOb6KOe6KOn6KOv6KOw6KOx6KO16KO36KSB6KSG6KSN6KSO6KSP6KSV6KSW6KSY6KSZ6KSa6KSc6KSg6KSm6KSn6KSo6KSw6KSx6KSy6KS16KS56KS66KS+6KWA6KWC6KWF6KWG6KWJ6KWP6KWS6KWX6KWa6KWb6KWc6KWh6KWi6KWj6KWr6KWu6KWw6KWz6KW16KW6XCJdLFtcIjhmZGRhMVwiLFwi6KW76KW86KW96KaJ6KaN6KaQ6KaU6KaV6Kab6Kac6Kaf6Kag6Kal6Kaw6Ka06Ka16Ka26Ka36Ka86KeUXCIsNCxcIuinpeinqeinq+inreinseins+intuinueinveinv+iohOioheioh+ioj+iokeiokuiolOioleionuiooOioouiopOiopuioq+iorOior+ioteiot+ioveiovuipgOipg+ipheiph+ipieipjeipjuipk+ipluipl+ipmOipnOipneipoeippeipp+ipteiptuipt+ipueipuuipu+ipvuipv+iqgOiqg+iqhuiqi+iqj+iqkOiqkuiqluiql+iqmeiqn+iqp+iqqeiqruiqr+iqs1wiXSxbXCI4ZmRlYTFcIixcIuiqtuiqt+iqu+iqvuirg+irhuiriOirieiriuirkeirk+irlOirleirl+irneirn+irrOirsOirtOirteirtuirvOirv+isheishuisi+iskeisnOisnuisn+isiuisreissOist+isvOitglwiLDQsXCLorYjorZLorZPorZTorZnorY3orZ7oraPora3orbborbjorbnorbzorb7oroHoroToroXorovoro3oro/orpTorpXorpzorp7orp/osLjosLnosL3osL7osYXosYfosYnosYvosY/osZHosZPosZTosZfosZjosZvosZ3osZnosaPosaTosabosajosanosa3osbPosbXosbbosbvosb7osoZcIl0sW1wiOGZkZmExXCIsXCLosofosovospDospLospPospnospvospzosqTosrnosrros4Xos4bos4nos4vos4/os5bos5Xos5nos53os6Hos6jos6zos6/os7Dos7Los7Xos7fos7jos77os7/otIHotIPotInotJLotJfotJvotaXotanotazota7otb/otoLotoTotojoto3otpDotpHotpXotp7otp/otqDotqbotqvotqzotq/otrLotrXotrfotrnotrvot4Dot4Xot4bot4fot4jot4rot47ot5Hot5Tot5Xot5fot5not6Tot6Xot6fot6zot7Dotrzot7Hot7Lot7Tot73ouIHouITouIXouIbouIvouJHouJTouJbouKDouKHouKJcIl0sW1wiOGZlMGExXCIsXCLouKPouKbouKfouLHouLPouLbouLfouLjouLnouL3ouYDouYHouYvouY3ouY7ouY/ouZTouZvouZzouZ3ouZ7ouaHouaLouanouazoua3oua/oubDoubHoubnoubroubvouoLouoPouonoupDoupLoupXouproupvoup3oup7ouqLouqfouqnouq3ouq7ourPourXourrourvou4Dou4Hou4Pou4Tou4fou4/ou5Hou5Tou5zou6jou67ou7Dou7Hou7fou7nou7rou63ovIDovILovIfovIjovI/ovJDovJbovJfovJjovJ7ovKDovKHovKPovKXovKfovKjovKzovK3ovK7ovLTovLXovLbovLfovLrovYDovYFcIl0sW1wiOGZlMWExXCIsXCLovYPovYfovY/ovZFcIiw0LFwi6L2Y6L2d6L2e6L2l6L6d6L6g6L6h6L6k6L6l6L6m6L616L626L646L6+6L+A6L+B6L+G6L+K6L+L6L+N6L+Q6L+S6L+T6L+V6L+g6L+j6L+k6L+o6L+u6L+x6L+16L+26L+76L++6YCC6YCE6YCI6YCM6YCY6YCb6YCo6YCp6YCv6YCq6YCs6YCt6YCz6YC06YC36YC/6YGD6YGE6YGM6YGb6YGd6YGi6YGm6YGn6YGs6YGw6YG06YG56YKF6YKI6YKL6YKM6YKO6YKQ6YKV6YKX6YKY6YKZ6YKb6YKg6YKh6YKi6YKl6YKw6YKy6YKz6YK06YK26YK96YOM6YK+6YODXCJdLFtcIjhmZTJhMVwiLFwi6YOE6YOF6YOH6YOI6YOV6YOX6YOY6YOZ6YOc6YOd6YOf6YOl6YOS6YO26YOr6YOv6YOw6YO06YO+6YO/6YSA6YSE6YSF6YSG6YSI6YSN6YSQ6YSU6YSW6YSX6YSY6YSa6YSc6YSe6YSg6YSl6YSi6YSj6YSn6YSp6YSu6YSv6YSx6YS06YS26YS36YS56YS66YS86YS96YWD6YWH6YWI6YWP6YWT6YWX6YWZ6YWa6YWb6YWh6YWk6YWn6YWt6YW06YW56YW66YW76YaB6YaD6YaF6YaG6YaK6YaO6YaR6YaT6YaU6YaV6YaY6Yae6Yah6Yam6Yao6Yas6Yat6Yau6Yaw6Yax6Yay6Yaz6Ya26Ya76Ya86Ya96Ya/XCJdLFtcIjhmZTNhMVwiLFwi6YeC6YeD6YeF6YeT6YeU6YeX6YeZ6Yea6Yee6Yek6Yel6Yep6Yeq6YesXCIsNSxcIumHt+mHuemHu+mHvemIgOmIgemIhOmIhemIhumIh+mIiemIiumIjOmIkOmIkumIk+mIlumImOmInOmInemIo+mIpOmIpemIpumIqOmIrumIr+mIsOmIs+mItemItumIuOmIuemIuumIvOmIvumJgOmJgumJg+mJhumJh+mJiumJjemJjumJj+mJkemJmOmJmemJnOmJnemJoOmJoemJpemJp+mJqOmJqemJrumJr+mJsOmJtVwiLDQsXCLpibvpibzpib3pib/piojpionpiorpio3pio7pipLpipdcIl0sW1wiOGZlNGExXCIsXCLpipnpip/piqDpiqTpiqXpiqfpiqjpiqvpiq/pirLpirbpirjpirrpirvpirzpir3pir9cIiw0LFwi6YuF6YuG6YuH6YuI6YuL6YuM6YuN6YuO6YuQ6YuT6YuV6YuX6YuY6YuZ6Yuc6Yud6Yuf6Yug6Yuh6Yuj6Yul6Yun6Yuo6Yus6Yuu6Yuw6Yu56Yu76Yu/6YyA6YyC6YyI6YyN6YyR6YyU6YyV6Yyc6Yyd6Yye6Yyf6Yyh6Yyk6Yyl6Yyn6Yyp6Yyq6Yyz6Yy06Yy26Yy36Y2H6Y2I6Y2J6Y2Q6Y2R6Y2S6Y2V6Y2X6Y2Y6Y2a6Y2e6Y2k6Y2l6Y2n6Y2p6Y2q6Y2t6Y2v6Y2w6Y2x6Y2z6Y206Y22XCJdLFtcIjhmZTVhMVwiLFwi6Y266Y296Y2/6Y6A6Y6B6Y6C6Y6I6Y6K6Y6L6Y6N6Y6P6Y6S6Y6V6Y6Y6Y6b6Y6e6Y6h6Y6j6Y6k6Y6m6Y6o6Y6r6Y606Y616Y626Y666Y6p6Y+B6Y+E6Y+F6Y+G6Y+H6Y+JXCIsNCxcIumPk+mPmemPnOmPnumPn+mPoumPpumPp+mPuemPt+mPuOmPuumPu+mPvemQgemQgumQhOmQiOmQiemQjemQjumQj+mQlemQlumQl+mQn+mQrumQr+mQsemQsumQs+mQtOmQu+mQv+mQvemRg+mRhemRiOmRiumRjOmRlemRmemRnOmRn+mRoemRo+mRqOmRq+mRremRrumRr+mRsemRsumShOmSg+mVuOmVuVwiXSxbXCI4ZmU2YTFcIixcIumVvumWhOmWiOmWjOmWjemWjumWnemWnumWn+mWoemWpumWqemWq+mWrOmWtOmWtumWuumWvemWv+mXhumXiOmXiemXi+mXkOmXkemXkumXk+mXmemXmumXnemXnumXn+mXoOmXpOmXpumYnemYnumYoumYpOmYpemYpumYrOmYsemYs+mYt+mYuOmYuemYuumYvOmYvemZgemZkumZlOmZlumZl+mZmOmZoemZrumZtOmZu+mZvOmZvumZv+magemagumag+mahOmaiemakemalumamumaneman+mapOmapemapumaqemarumar+mas+mauumbiumbkuW2sumbmOmbmumbnembnumbn+mbqembr+mbsembuumcglwiXSxbXCI4ZmU3YTFcIixcIumcg+mchemciemcmumcm+mcnemcoemcoumco+mcqOmcsemcs+mdgemdg+mdiumdjumdj+mdlemdl+mdmOmdmumdm+mdo+mdp+mdqumdrumds+mdtumdt+mduOmdu+mdvemdv+megOmeiemelemelumel+memememumenumen+meoumerOmerumesemesumetemetumeuOmeuemeuumevOmevumev+mfgemfhOmfhemfh+mfiemfiumfjOmfjemfjumfkOmfkemflOmfl+mfmOmfmemfnemfnumfoOmfm+mfoemfpOmfr+mfsemftOmft+mfuOmfuumgh+mgiumgmemgjemgjumglOmglumgnOmgnumgoOmgo+mgplwiXSxbXCI4ZmU4YTFcIixcIumgq+mgrumgr+mgsOmgsumgs+mgtemgpemgvumhhOmhh+mhiumhkemhkumhk+mhlumhl+mhmemhmumhoumho+mhpemhpumhqumhrOmiq+miremirumisOmitOmit+miuOmiuumiu+miv+mjgumjhemjiOmjjOmjoemjo+mjpemjpumjp+mjqumjs+mjtumkgumkh+mkiOmkkemklemklumkl+mkmumkm+mknOmkn+mkoumkpumkp+mkq+mksVwiLDQsXCLppLnppLrppLvppLzppYDppYHppYbppYfppYjppY3ppY7ppZTppZjppZnppZvppZzppZ7ppZ/ppaDpppvppp3ppp/ppqbpprDpprHpprLpprVcIl0sW1wiOGZlOWExXCIsXCLpprnpprrppr3ppr/pp4Ppp4npp5Ppp5Tpp5npp5rpp5zpp57pp6fpp6rpp6vpp6zpp7Dpp7Tpp7Xpp7npp73pp77pqILpqIPpqITpqIvpqIzpqJDpqJHpqJbpqJ7pqKDpqKLpqKPpqKTpqKfpqK3pqK7pqLPpqLXpqLbpqLjpqYfpqYHpqYTpqYrpqYvpqYzpqY7pqZHpqZTpqZbpqZ3pqqrpqqzpqq7pqq/pqrLpqrTpqrXpqrbpqrnpqrvpqr7pqr/pq4Hpq4Ppq4bpq4jpq47pq5Dpq5Lpq5Xpq5bpq5fpq5vpq5zpq6Dpq6Tpq6Xpq6fpq6npq6zpq7Lpq7Ppq7Xpq7npq7rpq73pq79cIiw0XSxbXCI4ZmVhYTFcIixcIumshOmshemsiOmsiemsi+msjOmsjemsjumskOmskumslumsmemsm+msnOmsoOmspumsq+msremss+mstOmstemst+msuemsuumsvemtiOmti+mtjOmtlemtlumtl+mtm+mtnumtoemto+mtpemtpumtqOmtqlwiLDQsXCLprbPprbXprbfprbjprbnprb/proDproTproXprobprofpronprorprovpro3pro/prpDprpTprprprp3prp7prqbprqfprqnprqzprrDprrHprrLprrfprrjprrvprrzprr7prr/pr4Hpr4fpr4jpr47pr5Dpr5fpr5jpr53pr5/pr6Xpr6fpr6rpr6vpr6/pr7Ppr7fpr7hcIl0sW1wiOGZlYmExXCIsXCLpr7npr7rpr73pr7/psIDpsILpsIvpsI/psJHpsJbpsJjpsJnpsJrpsJzpsJ7psKLpsKPpsKZcIiw0LFwi6bCx6bC16bC26bC36bC96bGB6bGD6bGE6bGF6bGJ6bGK6bGO6bGP6bGQ6bGT6bGU6bGW6bGY6bGb6bGd6bGe6bGf6bGj6bGp6bGq6bGc6bGr6bGo6bGu6bGw6bGy6bG16bG36bG76bOm6bOy6bO36bO56bSL6bSC6bSR6bSX6bSY6bSc6bSd6bSe6bSv6bSw6bSy6bSz6bS06bS66bS86bWF6bS96bWC6bWD6bWH6bWK6bWT6bWU6bWf6bWj6bWi6bWl6bWp6bWq6bWr6bWw6bW26bW36bW7XCJdLFtcIjhmZWNhMVwiLFwi6bW86bW+6baD6baE6baG6baK6baN6baO6baS6baT6baV6baW6baX6baY6bah6baq6bas6bau6bax6ba16ba56ba86ba/6beD6beH6beJ6beK6beU6beV6beW6beX6bea6bee6bef6beg6bel6ben6bep6ber6beu6bew6bez6be06be+6biK6biC6biH6biO6biQ6biR6biS6biV6biW6biZ6bic6bid6bm66bm76bm86bqA6bqC6bqD6bqE6bqF6bqH6bqO6bqP6bqW6bqY6bqb6bqe6bqk6bqo6bqs6bqu6bqv6bqw6bqz6bq06bq16buG6buI6buL6buV6buf6buk6bun6bus6but6buu6buw6bux6buy6bu1XCJdLFtcIjhmZWRhMVwiLFwi6bu46bu/6byC6byD6byJ6byP6byQ6byR6byS6byU6byW6byX6byZ6bya6byb6byf6byi6bym6byq6byr6byv6byx6byy6by06by36by56by66by86by96by/6b2B6b2DXCIsNCxcIum9k+m9lem9lum9l+m9mOm9mum9nem9num9qOm9qem9rVwiLDQsXCLpvbPpvbXpvbrpvb3pvo/pvpDpvpHpvpLpvpTpvpbpvpfpvp7pvqHpvqLpvqPpvqVcIl1dXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9ldWNqcC5qc29uXG4vLyBtb2R1bGUgaWQgPSAxNDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSB7XCJ1Q2hhcnNcIjpbMTI4LDE2NSwxNjksMTc4LDE4NCwyMTYsMjI2LDIzNSwyMzgsMjQ0LDI0OCwyNTEsMjUzLDI1OCwyNzYsMjg0LDMwMCwzMjUsMzI5LDMzNCwzNjQsNDYzLDQ2NSw0NjcsNDY5LDQ3MSw0NzMsNDc1LDQ3Nyw1MDYsNTk0LDYxMCw3MTIsNzE2LDczMCw5MzAsOTM4LDk2Miw5NzAsMTAyNiwxMTA0LDExMDYsODIwOSw4MjE1LDgyMTgsODIyMiw4MjMxLDgyNDEsODI0NCw4MjQ2LDgyNTIsODM2NSw4NDUyLDg0NTQsODQ1OCw4NDcxLDg0ODIsODU1Niw4NTcwLDg1OTYsODYwMiw4NzEzLDg3MjAsODcyMiw4NzI2LDg3MzEsODczNyw4NzQwLDg3NDIsODc0OCw4NzUxLDg3NjAsODc2Niw4Nzc3LDg3ODEsODc4Nyw4ODAyLDg4MDgsODgxNiw4ODU0LDg4NTgsODg3MCw4ODk2LDg5NzksOTMyMiw5MzcyLDk1NDgsOTU4OCw5NjE2LDk2MjIsOTYzNCw5NjUyLDk2NjIsOTY3Miw5Njc2LDk2ODAsOTcwMiw5NzM1LDk3MzgsOTc5Myw5Nzk1LDExOTA2LDExOTA5LDExOTEzLDExOTE3LDExOTI4LDExOTQ0LDExOTQ3LDExOTUxLDExOTU2LDExOTYwLDExOTY0LDExOTc5LDEyMjg0LDEyMjkyLDEyMzEyLDEyMzE5LDEyMzMwLDEyMzUxLDEyNDM2LDEyNDQ3LDEyNTM1LDEyNTQzLDEyNTg2LDEyODQyLDEyODUwLDEyOTY0LDEzMjAwLDEzMjE1LDEzMjE4LDEzMjUzLDEzMjYzLDEzMjY3LDEzMjcwLDEzMzg0LDEzNDI4LDEzNzI3LDEzODM5LDEzODUxLDE0NjE3LDE0NzAzLDE0ODAxLDE0ODE2LDE0OTY0LDE1MTgzLDE1NDcxLDE1NTg1LDE2NDcxLDE2NzM2LDE3MjA4LDE3MzI1LDE3MzMwLDE3Mzc0LDE3NjIzLDE3OTk3LDE4MDE4LDE4MjEyLDE4MjE4LDE4MzAxLDE4MzE4LDE4NzYwLDE4ODExLDE4ODE0LDE4ODIwLDE4ODIzLDE4ODQ0LDE4ODQ4LDE4ODcyLDE5NTc2LDE5NjIwLDE5NzM4LDE5ODg3LDQwODcwLDU5MjQ0LDU5MzM2LDU5MzY3LDU5NDEzLDU5NDE3LDU5NDIzLDU5NDMxLDU5NDM3LDU5NDQzLDU5NDUyLDU5NDYwLDU5NDc4LDU5NDkzLDYzNzg5LDYzODY2LDYzODk0LDYzOTc2LDYzOTg2LDY0MDE2LDY0MDE4LDY0MDIxLDY0MDI1LDY0MDM0LDY0MDM3LDY0MDQyLDY1MDc0LDY1MDkzLDY1MTA3LDY1MTEyLDY1MTI3LDY1MTMyLDY1Mzc1LDY1NTEwLDY1NTM2XSxcImdiQ2hhcnNcIjpbMCwzNiwzOCw0NSw1MCw4MSw4OSw5NSw5NiwxMDAsMTAzLDEwNCwxMDUsMTA5LDEyNiwxMzMsMTQ4LDE3MiwxNzUsMTc5LDIwOCwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDM0MSw0MjgsNDQzLDU0NCw1NDUsNTU4LDc0MSw3NDIsNzQ5LDc1MCw4MDUsODE5LDgyMCw3OTIyLDc5MjQsNzkyNSw3OTI3LDc5MzQsNzk0Myw3OTQ0LDc5NDUsNzk1MCw4MDYyLDgxNDgsODE0OSw4MTUyLDgxNjQsODE3NCw4MjM2LDgyNDAsODI2Miw4MjY0LDgzNzQsODM4MCw4MzgxLDgzODQsODM4OCw4MzkwLDgzOTIsODM5Myw4Mzk0LDgzOTYsODQwMSw4NDA2LDg0MTYsODQxOSw4NDI0LDg0MzcsODQzOSw4NDQ1LDg0ODIsODQ4NSw4NDk2LDg1MjEsODYwMyw4OTM2LDg5NDYsOTA0Niw5MDUwLDkwNjMsOTA2Niw5MDc2LDkwOTIsOTEwMCw5MTA4LDkxMTEsOTExMyw5MTMxLDkxNjIsOTE2NCw5MjE4LDkyMTksMTEzMjksMTEzMzEsMTEzMzQsMTEzMzYsMTEzNDYsMTEzNjEsMTEzNjMsMTEzNjYsMTEzNzAsMTEzNzIsMTEzNzUsMTEzODksMTE2ODIsMTE2ODYsMTE2ODcsMTE2OTIsMTE2OTQsMTE3MTQsMTE3MTYsMTE3MjMsMTE3MjUsMTE3MzAsMTE3MzYsMTE5ODIsMTE5ODksMTIxMDIsMTIzMzYsMTIzNDgsMTIzNTAsMTIzODQsMTIzOTMsMTIzOTUsMTIzOTcsMTI1MTAsMTI1NTMsMTI4NTEsMTI5NjIsMTI5NzMsMTM3MzgsMTM4MjMsMTM5MTksMTM5MzMsMTQwODAsMTQyOTgsMTQ1ODUsMTQ2OTgsMTU1ODMsMTU4NDcsMTYzMTgsMTY0MzQsMTY0MzgsMTY0ODEsMTY3MjksMTcxMDIsMTcxMjIsMTczMTUsMTczMjAsMTc0MDIsMTc0MTgsMTc4NTksMTc5MDksMTc5MTEsMTc5MTUsMTc5MTYsMTc5MzYsMTc5MzksMTc5NjEsMTg2NjQsMTg3MDMsMTg4MTQsMTg5NjIsMTkwNDMsMzM0NjksMzM0NzAsMzM0NzEsMzM0ODQsMzM0ODUsMzM0OTAsMzM0OTcsMzM1MDEsMzM1MDUsMzM1MTMsMzM1MjAsMzM1MzYsMzM1NTAsMzc4NDUsMzc5MjEsMzc5NDgsMzgwMjksMzgwMzgsMzgwNjQsMzgwNjUsMzgwNjYsMzgwNjksMzgwNzUsMzgwNzYsMzgwNzgsMzkxMDgsMzkxMDksMzkxMTMsMzkxMTQsMzkxMTUsMzkxMTYsMzkyNjUsMzkzOTQsMTg5MDAwXX1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdGFibGVzL2diMTgwMzAtcmFuZ2VzLmpzb25cbi8vIG1vZHVsZSBpZCA9IDE0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IFtbXCIwXCIsXCJcXHUwMDAwXCIsMTI3XSxbXCI4MTQxXCIsXCLqsILqsIPqsIXqsIbqsItcIiw0LFwi6rCY6rCe6rCf6rCh6rCi6rCj6rClXCIsNixcIuqwruqwsuqws+qwtFwiXSxbXCI4MTYxXCIsXCLqsLXqsLbqsLfqsLrqsLvqsL3qsL7qsL/qsYFcIiw5LFwi6rGM6rGOXCIsNSxcIuqxlVwiXSxbXCI4MTgxXCIsXCLqsZbqsZfqsZnqsZrqsZvqsZ1cIiwxOCxcIuqxsuqxs+qxteqxtuqxueqxu1wiLDQsXCLqsoLqsofqsojqso3qso7qso/qspHqspLqspPqspVcIiw2LFwi6rKe6rKiXCIsNSxcIuqyq+qyreqyruqysVwiLDYsXCLqsrrqsr7qsr/qs4Dqs4Lqs4Pqs4Xqs4bqs4fqs4nqs4rqs4vqs41cIiw3LFwi6rOW6rOYXCIsNyxcIuqzouqzo+qzpeqzpuqzqeqzq+qzreqzruqzsuqztOqzt1wiLDQsXCLqs77qs7/qtIHqtILqtIPqtIXqtIdcIiw0LFwi6rSO6rSQ6rSS6rSTXCJdLFtcIjgyNDFcIixcIuq0lOq0leq0luq0l+q0meq0muq0m+q0neq0nuq0n+q0oVwiLDcsXCLqtKrqtKvqtK5cIiw1XSxbXCI4MjYxXCIsXCLqtLbqtLfqtLnqtLrqtLvqtL1cIiw2LFwi6rWG6rWI6rWKXCIsNSxcIuq1keq1kuq1k+q1leq1luq1l1wiXSxbXCI4MjgxXCIsXCLqtZlcIiw3LFwi6rWi6rWkXCIsNyxcIuq1ruq1r+q1seq1suq1t+q1uOq1ueq1uuq1vuq2gOq2g1wiLDQsXCLqtorqtovqto3qto7qto/qtpFcIiwxMCxcIuq2nlwiLDUsXCLqtqVcIiwxNyxcIuq2uFwiLDcsXCLqt4Lqt4Pqt4Xqt4bqt4fqt4lcIiw2LFwi6reS6reUXCIsNyxcIuq3neq3nuq3n+q3oeq3ouq3o+q3pVwiLDE4XSxbXCI4MzQxXCIsXCLqt7rqt7vqt73qt77quIJcIiw1LFwi6riK6riM6riOXCIsNSxcIuq4lVwiLDddLFtcIjgzNjFcIixcIuq4nVwiLDE4LFwi6riy6riz6ri16ri26ri56ri76ri8XCJdLFtcIjgzODFcIixcIuq4veq4vuq4v+q5guq5hOq5h+q5iOq5ieq5i+q5j+q5keq5kuq5k+q5leq5l1wiLDQsXCLquZ7quaLquaPquaTquabquafquarquavqua3qua7qua/qubFcIiw2LFwi6rm66rm+XCIsNSxcIuq6hlwiLDUsXCLquo1cIiw0NixcIuq6v+q7geq7guq7g+q7hVwiLDYsXCLqu47qu5JcIiw1LFwi6rua6rub6rudXCIsOF0sW1wiODQ0MVwiLFwi6rum6run6rup6ruq6rus6ruuXCIsNSxcIuq7teq7tuq7t+q7ueq7uuq7u+q7vVwiLDhdLFtcIjg0NjFcIixcIuq8huq8ieq8iuq8i+q8jOq8juq8j+q8kVwiLDE4XSxbXCI4NDgxXCIsXCLqvKRcIiw3LFwi6ryu6ryv6ryx6ryz6ry1XCIsNixcIuq8vuq9gOq9hOq9heq9huq9h+q9ilwiLDUsXCLqvZFcIiwxMCxcIuq9nlwiLDUsXCLqvaZcIiwxOCxcIuq9ulwiLDUsXCLqvoHqvoLqvoPqvoXqvobqvofqvolcIiw2LFwi6r6S6r6T6r6U6r6WXCIsNSxcIuq+nVwiLDI2LFwi6r666r676r696r6+XCJdLFtcIjg1NDFcIixcIuq+v+q/gVwiLDUsXCLqv4rqv4zqv49cIiw0LFwi6r+VXCIsNixcIuq/nVwiLDRdLFtcIjg1NjFcIixcIuq/olwiLDUsXCLqv6pcIiw1LFwi6r+y6r+z6r+16r+26r+36r+5XCIsNixcIuuAguuAg1wiXSxbXCI4NTgxXCIsXCLrgIVcIiw2LFwi64CN64CO64CP64CR64CS64CT64CVXCIsNixcIuuAnlwiLDksXCLrgKlcIiwyNixcIuuBhuuBh+uBieuBi+uBjeuBj+uBkOuBkeuBkuuBluuBmOuBmuuBm+uBnOuBnlwiLDI5LFwi64G+64G/64KB64KC64KD64KFXCIsNixcIuuCjuuCkOuCklwiLDUsXCLrgpvrgp3rgp7rgqPrgqRcIl0sW1wiODY0MVwiLFwi64Kl64Km64Kn64Kq64Kw64Ky64K264K364K564K664K764K9XCIsNixcIuuDhuuDilwiLDUsXCLrg5JcIl0sW1wiODY2MVwiLFwi64OT64OV64OW64OX64OZXCIsNixcIuuDoeuDouuDo+uDpOuDplwiLDEwXSxbXCI4NjgxXCIsXCLrg7FcIiwyMixcIuuEiuuEjeuEjuuEj+uEkeuElOuEleuEluuEl+uEmuuEnlwiLDQsXCLrhKbrhKfrhKnrhKrrhKvrhK1cIiw2LFwi64S264S6XCIsNSxcIuuFguuFg+uFheuFhuuFh+uFiVwiLDYsXCLrhZLrhZPrhZbrhZfrhZnrhZrrhZvrhZ3rhZ7rhZ/rhaFcIiwyMixcIuuFuuuFu+uFveuFvuuFv+uGgeuGg1wiLDQsXCLrhorrhozrho7rho/rhpDrhpHrhpXrhpbrhpfrhpnrhprrhpvrhp1cIl0sW1wiODc0MVwiLFwi64aeXCIsOSxcIuuGqVwiLDE1XSxbXCI4NzYxXCIsXCLrhrlcIiwxOCxcIuuHjeuHjuuHj+uHkeuHkuuHk+uHlVwiXSxbXCI4NzgxXCIsXCLrh5ZcIiw1LFwi64ee64egXCIsNyxcIuuHquuHq+uHreuHruuHr+uHsVwiLDcsXCLrh7rrh7zrh75cIiw1LFwi64iG64iH64iJ64iK64iNXCIsNixcIuuIluuImOuImlwiLDUsXCLriKFcIiwxOCxcIuuItVwiLDYsXCLriL1cIiwyNixcIuuJmeuJmuuJm+uJneuJnuuJn+uJoVwiLDYsXCLriapcIiw0XSxbXCI4ODQxXCIsXCLria9cIiw0LFwi64m2XCIsNSxcIuuJvVwiLDYsXCLriobriofriojriopcIiw0XSxbXCI4ODYxXCIsXCLrio/ripLripPripXripbripfriptcIiw0LFwi64qi64qk64qn64qo64qp64qr64qt64qu64qv64qx64qy64qz64q164q264q3XCJdLFtcIjg4ODFcIixcIuuKuFwiLDE1LFwi64uK64uL64uN64uO64uP64uR64uTXCIsNCxcIuuLmuuLnOuLnuuLn+uLoOuLoeuLo+uLp+uLqeuLquuLsOuLseuLsuuLtuuLvOuLveuLvuuMguuMg+uMheuMhuuMh+uMiVwiLDYsXCLrjJLrjJZcIiw1LFwi64ydXCIsNTQsXCLrjZfrjZnrjZrrjZ3rjaDrjaHrjaLrjaNcIl0sW1wiODk0MVwiLFwi642m642o642q642s642t642v642y642z6421642264236425XCIsNixcIuuOguuOhlwiLDUsXCLrjo1cIl0sW1wiODk2MVwiLFwi646O646P646R646S646T646VXCIsMTAsXCLrjqJcIiw1LFwi646p646q646r646tXCJdLFtcIjg5ODFcIixcIuuOrlwiLDIxLFwi64+G64+H64+J64+K64+N64+P64+R64+S64+T64+W64+Y64+a64+c64+e64+f64+h64+i64+j64+l64+m64+n64+pXCIsMTgsXCLrj71cIiwxOCxcIuuQkVwiLDYsXCLrkJnrkJrrkJvrkJ3rkJ7rkJ/rkKFcIiw2LFwi65Cq65CsXCIsNyxcIuuQtVwiLDE1XSxbXCI4YTQxXCIsXCLrkYVcIiwxMCxcIuuRkuuRk+uRleuRluuRl+uRmVwiLDYsXCLrkaLrkaTrkaZcIl0sW1wiOGE2MVwiLFwi65GnXCIsNCxcIuuRrVwiLDE4LFwi65KB65KCXCJdLFtcIjhhODFcIixcIuuSg1wiLDQsXCLrkolcIiwxOSxcIuuSnlwiLDUsXCLrkqXrkqbrkqfrkqnrkqrrkqvrkq1cIiw3LFwi65K265K465K6XCIsNSxcIuuTgeuTguuTg+uTheuThuuTh+uTiVwiLDYsXCLrk5Hrk5Lrk5Prk5Trk5ZcIiw1LFwi65Oe65Of65Oh65Oi65Ol65OnXCIsNCxcIuuTruuTsOuTslwiLDUsXCLrk7lcIiwyNixcIuuUluuUl+uUmeuUmuuUnVwiXSxbXCI4YjQxXCIsXCLrlJ5cIiw1LFwi65Sm65SrXCIsNCxcIuuUsuuUs+uUteuUtuuUt+uUuVwiLDYsXCLrlYLrlYZcIl0sW1wiOGI2MVwiLFwi65WH65WI65WJ65WK65WO65WP65WR65WS65WT65WVXCIsNixcIuuVnuuVolwiLDhdLFtcIjhiODFcIixcIuuVq1wiLDUyLFwi65ai65aj65al65am65an65ap65as65at65au65av65ay65a2XCIsNCxcIuuWvuuWv+uXgeuXguuXg+uXhVwiLDYsXCLrl47rl5JcIiw1LFwi65eZXCIsMTgsXCLrl61cIiwxOF0sW1wiOGM0MVwiLFwi65iAXCIsMTUsXCLrmJLrmJPrmJXrmJbrmJfrmJlcIiw0XSxbXCI4YzYxXCIsXCLrmJ5cIiw2LFwi65imXCIsNSxcIuuYrVwiLDYsXCLrmLVcIiw1XSxbXCI4YzgxXCIsXCLrmLtcIiwxMixcIuuZiVwiLDI2LFwi65ml65mm65mn65mpXCIsNTAsXCLrmp7rmp/rmqHrmqLrmqPrmqVcIiw1LFwi65qt65qu65qv65qw65qyXCIsMTZdLFtcIjhkNDFcIixcIuubg1wiLDE2LFwi65uVXCIsOF0sW1wiOGQ2MVwiLFwi65ueXCIsMTcsXCLrm7Hrm7Lrm7Prm7Xrm7brm7frm7nrm7pcIl0sW1wiOGQ4MVwiLFwi65u7XCIsNCxcIuucguucg+uchOuchlwiLDMzLFwi65yq65yr65yt65yu65yxXCIsNixcIuucuuucvFwiLDcsXCLrnYXrnYbrnYfrnYnrnYrrnYvrnY1cIiw2LFwi652WXCIsOSxcIuudoeudouudo+udpeudpuudp+udqVwiLDYsXCLrnbLrnbTrnbZcIiw1LFwi652+652/656B656C656D656FXCIsNixcIuuejuuek+uelOueleuemuuem+ueneuenlwiXSxbXCI4ZTQxXCIsXCLrnp/rnqFcIiw2LFwi656q656uXCIsNSxcIuuetuuet+ueuVwiLDhdLFtcIjhlNjFcIixcIuufglwiLDQsXCLrn4jrn4pcIiwxOV0sW1wiOGU4MVwiLFwi65+eXCIsMTMsXCLrn67rn6/rn7Hrn7Lrn7Prn7VcIiw2LFwi65++66CCXCIsNCxcIuugiuugi+ugjeugjuugj+ugkVwiLDYsXCLroJrroJzroJ5cIiw1LFwi66Cm66Cn66Cp66Cq66Cr66CtXCIsNixcIuugtuugulwiLDUsXCLroYHroYLroYProYVcIiwxMSxcIuuhkuuhlFwiLDcsXCLroZ7roZ/roaHroaLroaProaVcIiw2LFwi66Gu66Gw66GyXCIsNSxcIuuhueuhuuuhu+uhvVwiLDddLFtcIjhmNDFcIixcIuuihVwiLDcsXCLroo5cIiwxN10sW1wiOGY2MVwiLFwi66KgXCIsNyxcIuuiqVwiLDYsXCLrorHrorLrorProrXrorbrorfrorlcIiw0XSxbXCI4ZjgxXCIsXCLror7ror/ro4Lro4Tro4ZcIiw1LFwi66ON66OO66OP66OR66OS66OT66OVXCIsNyxcIuujnuujoOujolwiLDUsXCLro6rro6vro63ro67ro6/ro7FcIiw2LFwi66O666O866O+XCIsNSxcIuukhVwiLDE4LFwi66SZXCIsNixcIuukoVwiLDI2LFwi66S+66S/66WB66WC66WD66WFXCIsNixcIuuljeuljuulkOulklwiLDVdLFtcIjkwNDFcIixcIuulmuulm+ulneulnuuln+uloVwiLDYsXCLrparrpazrpa5cIiw1LFwi66W266W366W566W666W766W9XCJdLFtcIjkwNjFcIixcIuulvlwiLDUsXCLrpobrpojrpovrpozrpo9cIiwxNV0sW1wiOTA4MVwiLFwi66afXCIsMTIsXCLrpq7rpq/rprHrprLrprPrprVcIiw2LFwi66a+66eA66eCXCIsNSxcIuuniuuni+unjeunk1wiLDQsXCLrp5rrp5zrp5/rp6Drp6Lrp6brp6frp6nrp6rrp6vrp61cIiw2LFwi66e266e7XCIsNCxcIuuoglwiLDUsXCLrqIlcIiwxMSxcIuuollwiLDMzLFwi66i666i766i966i+66i/66mB66mD66mE66mF66mGXCJdLFtcIjkxNDFcIixcIuuph+upiuupjOupj+upkOupkeupkuupluupl+upmeupmuupm+upnVwiLDYsXCLrqabrqapcIiw1XSxbXCI5MTYxXCIsXCLrqbLrqbPrqbXrqbbrqbfrqblcIiw5LFwi66qG66qI66qJ66qK66qL66qNXCIsNV0sW1wiOTE4MVwiLFwi66qTXCIsMjAsXCLrqqrrqq3rqq7rqq/rqrHrqrNcIiw0LFwi66q666q866q+XCIsNSxcIuurheurhuurh+uriVwiLDE0LFwi66uaXCIsMzMsXCLrq73rq77rq7/rrIHrrILrrIPrrIVcIiw3LFwi66yO66yQ66ySXCIsNSxcIuusmeusmuusm+usneusnuusn+usoVwiLDZdLFtcIjkyNDFcIixcIuusqOusquusrFwiLDcsXCLrrLfrrLnrrLrrrL9cIiw0LFwi662G662I662K662L662M662O662R662SXCJdLFtcIjkyNjFcIixcIuutk+utleutluutl+utmVwiLDcsXCLrraLrraRcIiw3LFwi662tXCIsNF0sW1wiOTI4MVwiLFwi662yXCIsMjEsXCLrronrrorrrovrro3rro7rro/rrpFcIiwxOCxcIuuupeuupuuup+uuqeuuquuuq+uurVwiLDYsXCLrrrXrrrbrrrhcIiw3LFwi66+B66+C66+D66+F66+G66+H66+JXCIsNixcIuuvkeuvkuuvlFwiLDM1LFwi66+666+766+966++67CBXCJdLFtcIjkzNDFcIixcIuuwg1wiLDQsXCLrsIrrsI7rsJDrsJLrsJPrsJnrsJrrsKDrsKHrsKLrsKPrsKbrsKjrsKrrsKvrsKzrsK7rsK/rsLLrsLPrsLVcIl0sW1wiOTM2MVwiLFwi67C267C367C5XCIsNixcIuuxguuxhuuxh+uxiOuxiuuxi+uxjuuxj+uxkVwiLDhdLFtcIjkzODFcIixcIuuxmuuxm+uxnOuxnlwiLDM3LFwi67KG67KH67KJ67KK67KN67KPXCIsNCxcIuuyluuymOuym1wiLDQsXCLrsqLrsqPrsqXrsqbrsqlcIiw2LFwi67Ky67K2XCIsNSxcIuuyvuuyv+uzgeuzguuzg+uzhVwiLDcsXCLrs47rs5Lrs5Prs5Trs5brs5frs5nrs5rrs5vrs51cIiwyMixcIuuzt+uzueuzuuuzu+uzvVwiXSxbXCI5NDQxXCIsXCLrs75cIiw1LFwi67SG67SI67SKXCIsNSxcIuu0keu0kuu0k+u0lVwiLDhdLFtcIjk0NjFcIixcIuu0nlwiLDUsXCLrtKVcIiw2LFwi67StXCIsMTJdLFtcIjk0ODFcIixcIuu0ulwiLDUsXCLrtYFcIiw2LFwi67WK67WL67WN67WO67WP67WRXCIsNixcIuu1mlwiLDksXCLrtaXrtabrtafrtalcIiwyMixcIuu2guu2g+u2heu2huu2i1wiLDQsXCLrtpLrtpTrtpbrtpfrtpjrtpvrtp1cIiw2LFwi67alXCIsMTAsXCLrtrFcIiw2LFwi67a5XCIsMjRdLFtcIjk1NDFcIixcIuu3kuu3k+u3luu3l+u3meu3muu3m+u3nVwiLDExLFwi67eqXCIsNSxcIuu3sVwiXSxbXCI5NTYxXCIsXCLrt7Lrt7Prt7Xrt7brt7frt7lcIiw2LFwi67iB67iC67iE67iGXCIsNSxcIuu4juu4j+u4keu4kuu4k1wiXSxbXCI5NTgxXCIsXCLruJVcIiw2LFwi67ie67igXCIsMzUsXCLruYbruYfruYnruYrruYvruY3ruY9cIiw0LFwi67mW67mY67mc67md67me67mf67mi67mj67ml67mm67mn67mp67mrXCIsNCxcIuu5suu5tlwiLDQsXCLrub7rub/ruoHruoLruoPruoVcIiw2LFwi67qO67qSXCIsNSxcIuu6mlwiLDEzLFwi67qpXCIsMTRdLFtcIjk2NDFcIixcIuu6uFwiLDIzLFwi67uS67uTXCJdLFtcIjk2NjFcIixcIuu7leu7luu7mVwiLDYsXCLru6Hru6Lru6ZcIiw1LFwi67utXCIsOF0sW1wiOTY4MVwiLFwi67u2XCIsMTAsXCLrvIJcIiw1LFwi67yKXCIsMTMsXCLrvJrrvJ5cIiwzMyxcIuu9guu9g+u9heu9huu9h+u9iVwiLDYsXCLrvZLrvZPrvZTrvZZcIiw0NF0sW1wiOTc0MVwiLFwi676DXCIsMTYsXCLrvpVcIiw4XSxbXCI5NzYxXCIsXCLrvp5cIiwxNyxcIuu+sVwiLDddLFtcIjk3ODFcIixcIuu+uVwiLDExLFwi67+GXCIsNSxcIuu/juu/j+u/keu/kuu/k+u/lVwiLDYsXCLrv53rv57rv6Drv6JcIiw4OSxcIuyAveyAvuyAv1wiXSxbXCI5ODQxXCIsXCLsgYBcIiwxNixcIuyBklwiLDUsXCLsgZnsgZrsgZtcIl0sW1wiOTg2MVwiLFwi7IGd7IGe7IGf7IGhXCIsNixcIuyBqlwiLDE1XSxbXCI5ODgxXCIsXCLsgbpcIiwyMSxcIuyCkuyCk+yCleyCluyCl+yCmVwiLDYsXCLsgqLsgqTsgqZcIiw1LFwi7IKu7IKx7IKy7IK3XCIsNCxcIuyCvuyDguyDg+yDhOyDhuyDh+yDiuyDi+yDjeyDjuyDj+yDkVwiLDYsXCLsg5rsg55cIiw1LFwi7IOm7IOn7IOp7IOq7IOr7IOtXCIsNixcIuyDtuyDuOyDulwiLDUsXCLshIHshILshIPshIXshIbshIfshIlcIiw2LFwi7ISR7ISS7IST7ISU7ISWXCIsNSxcIuyEoeyEouyEpeyEqOyEqeyEquyEq+yErlwiXSxbXCI5OTQxXCIsXCLshLLshLPshLTshLXshLfshLrshLvshL3shL7shL/shYFcIiw2LFwi7IWK7IWOXCIsNSxcIuyFluyFl1wiXSxbXCI5OTYxXCIsXCLshZnshZrshZvshZ1cIiw2LFwi7IWm7IWqXCIsNSxcIuyFseyFsuyFs+yFteyFtuyFt+yFueyFuuyFu1wiXSxbXCI5OTgxXCIsXCLshbxcIiw4LFwi7IaGXCIsNSxcIuyGj+yGkeyGkuyGk+yGleyGl1wiLDQsXCLshp7shqDshqLshqPshqTshqbshqfshqrshqvshq3shq7shq/shrFcIiwxMSxcIuyGvlwiLDUsXCLsh4Xsh4bsh4fsh4nsh4rsh4vsh41cIiw2LFwi7IeV7IeW7IeZXCIsNixcIuyHoeyHouyHo+yHpeyHpuyHp+yHqVwiLDYsXCLsh7Lsh7RcIiw3LFwi7Ie+7Ie/7IiB7IiC7IiD7IiFXCIsNixcIuyIjuyIkOyIklwiLDUsXCLsiJrsiJvsiJ3siJ7siKHsiKLsiKNcIl0sW1wiOWE0MVwiLFwi7Iik7Iil7Iim7Iin7Iiq7Iis7Iiu7Iiw7Iiz7Ii1XCIsMTZdLFtcIjlhNjFcIixcIuyJhuyJh+yJiVwiLDYsXCLsiZLsiZPsiZXsiZbsiZfsiZlcIiw2LFwi7Imh7Imi7Imj7Imk7ImmXCJdLFtcIjlhODFcIixcIuyJp1wiLDQsXCLsia7sia/sibHsibLsibPsibVcIiw2LFwi7Im+7IqA7IqCXCIsNSxcIuyKilwiLDUsXCLsipFcIiw2LFwi7IqZ7Iqa7Iqc7IqeXCIsNSxcIuyKpuyKp+yKqeyKquyKq+yKrlwiLDUsXCLsirbsirjsirpcIiwzMyxcIuyLnuyLn+yLoeyLouyLpVwiLDUsXCLsi67si7Dsi7Lsi7Psi7Tsi7Xsi7fsi7rsi73si77si7/sjIFcIiw2LFwi7IyK7IyL7IyO7IyPXCJdLFtcIjliNDFcIixcIuyMkOyMkeyMkuyMluyMl+yMmeyMmuyMm+yMnVwiLDYsXCLsjKbsjKfsjKpcIiw4XSxbXCI5YjYxXCIsXCLsjLNcIiwxNyxcIuyNhlwiLDddLFtcIjliODFcIixcIuyNjlwiLDI1LFwi7I2q7I2r7I2t7I2u7I2v7I2x7I2zXCIsNCxcIuyNuuyNu+yNvlwiLDUsXCLsjoXsjobsjofsjonsjorsjovsjo1cIiw1MCxcIuyPgVwiLDIyLFwi7I+aXCJdLFtcIjljNDFcIixcIuyPm+yPneyPnuyPoeyPo1wiLDQsXCLsj6rsj6vsj6zsj65cIiw1LFwi7I+27I+37I+5XCIsNV0sW1wiOWM2MVwiLFwi7I+/XCIsOCxcIuyQiVwiLDYsXCLskJFcIiw5XSxbXCI5YzgxXCIsXCLskJtcIiw4LFwi7JClXCIsNixcIuyQreyQruyQr+yQseyQsuyQs+yQtVwiLDYsXCLskL5cIiw5LFwi7JGJXCIsMjYsXCLskabskafskanskarskavska1cIiw2LFwi7JG27JG37JG47JG6XCIsNSxcIuySgVwiLDE4LFwi7JKVXCIsNixcIuySnVwiLDEyXSxbXCI5ZDQxXCIsXCLskqpcIiwxMyxcIuySueySuuySu+ySvVwiLDhdLFtcIjlkNjFcIixcIuyThlwiLDI1XSxbXCI5ZDgxXCIsXCLsk6BcIiw4LFwi7JOqXCIsNSxcIuyTsuyTs+yTteyTtuyTt+yTueyTu+yTvOyTveyTvuyUglwiLDksXCLslI3slI7slI/slJHslJLslJPslJVcIiw2LFwi7JSdXCIsMTAsXCLslKrslKvslK3slK7slK/slLFcIiw2LFwi7JS67JS87JS+XCIsNSxcIuyVhuyVh+yVi+yVj+yVkOyVkeyVkuyVluyVmuyVm+yVnOyVn+yVouyVo+yVpeyVpuyVp+yVqVwiLDYsXCLslbLslbZcIiw1LFwi7JW+7JW/7JaB7JaC7JaD7JaF7JaG7JaI7JaJ7JaK7JaL7JaO7JaQ7JaS7JaT7JaUXCJdLFtcIjllNDFcIixcIuyWluyWmeyWmuyWm+yWneyWnuyWn+yWoVwiLDcsXCLslqpcIiw5LFwi7Ja2XCJdLFtcIjllNjFcIixcIuyWt+yWuuyWv1wiLDQsXCLsl4vsl43sl4/sl5Lsl5Psl5Xsl5bsl5fsl5lcIiw2LFwi7Jei7Jek7Jem7JenXCJdLFtcIjllODFcIixcIuyXqOyXqeyXquyXq+yXr+yXseyXsuyXs+yXteyXuOyXueyXuuyXu+yYguyYg+yYhOyYieyYiuyYi+yYjeyYjuyYj+yYkVwiLDYsXCLsmJrsmJ1cIiw2LFwi7Jim7Jin7Jip7Jiq7Jir7Jiv7Jix7Jiy7Ji27Ji47Ji67Ji87Ji97Ji+7Ji/7JmC7JmD7JmF7JmG7JmH7JmJXCIsNixcIuyZkuyZllwiLDUsXCLsmZ7smZ/smaFcIiwxMCxcIuyZreyZruyZsOyZslwiLDUsXCLsmbrsmbvsmb3smb7smb/smoFcIiw2LFwi7JqK7JqM7JqOXCIsNSxcIuyaluyal+yameyamuyam+yanVwiLDYsXCLsmqZcIl0sW1wiOWY0MVwiLFwi7Jqo7JqqXCIsNSxcIuyasuyas+yateyatuyat+yau1wiLDQsXCLsm4Lsm4Tsm4ZcIiw1LFwi7JuOXCJdLFtcIjlmNjFcIixcIuybj+ybkeybkuybk+yblVwiLDYsXCLsm57sm5/sm6JcIiw1LFwi7Juq7Jur7Jut7Juu7Juv7Jux7JuyXCJdLFtcIjlmODFcIixcIuybs1wiLDQsXCLsm7rsm7vsm7zsm75cIiw1LFwi7JyG7JyH7JyJ7JyK7JyL7JyNXCIsNixcIuycluycmOycmlwiLDUsXCLsnKLsnKPsnKXsnKbsnKfsnKlcIiw2LFwi7Jyy7Jy07Jy27Jy47Jy57Jy67Jy77Jy+7Jy/7J2B7J2C7J2D7J2FXCIsNCxcIuydi+ydjuydkOydmeydmuydm+ydneydnuydn+ydoVwiLDYsXCLsnansnarsnaxcIiw3LFwi7J227J237J257J267J277J2/7J6A7J6B7J6C7J6G7J6L7J6M7J6N7J6P7J6S7J6T7J6V7J6Z7J6bXCIsNCxcIuyeouyep1wiLDQsXCLsnq7snq/snrHsnrLsnrPsnrXsnrbsnrdcIl0sW1wiYTA0MVwiLFwi7J647J657J667J677J6+7J+CXCIsNSxcIuyfiuyfi+yfjeyfj+yfkVwiLDYsXCLsn5nsn5rsn5vsn5xcIl0sW1wiYTA2MVwiLFwi7J+eXCIsNSxcIuyfpeyfpuyfp+yfqeyfquyfq+yfrVwiLDEzXSxbXCJhMDgxXCIsXCLsn7tcIiw0LFwi7KCC7KCD7KCF7KCG7KCH7KCJ7KCLXCIsNCxcIuygkuyglOygl1wiLDQsXCLsoJ7soJ/soKHsoKLsoKPsoKVcIiw2LFwi7KCu7KCw7KCyXCIsNSxcIuygueyguuygu+ygveygvuygv+yhgVwiLDYsXCLsoYrsoYvsoY5cIiw1LFwi7KGVXCIsMjYsXCLsobLsobPsobXsobbsobfsobnsobtcIiw0LFwi7KKC7KKE7KKI7KKJ7KKK7KKOXCIsNSxcIuyilVwiLDcsXCLsop7soqDsoqLsoqPsoqRcIl0sW1wiYTE0MVwiLFwi7KKl7KKm7KKn7KKpXCIsMTgsXCLsor7sor/so4Dso4FcIl0sW1wiYTE2MVwiLFwi7KOC7KOD7KOF7KOG7KOH7KOJ7KOK7KOL7KONXCIsNixcIuyjluyjmOyjmlwiLDUsXCLso6Lso6Pso6VcIl0sW1wiYTE4MVwiLFwi7KOmXCIsMTQsXCLso7ZcIiw1LFwi7KO+7KO/7KSB7KSC7KSD7KSHXCIsNCxcIuykjuOAgOOAgeOAgsK34oCl4oCmwqjjgIPCreKAleKIpe+8vOKIvOKAmOKAmeKAnOKAneOAlOOAleOAiFwiLDksXCLCscOXw7fiiaDiiaTiiaXiiJ7iiLTCsOKAsuKAs+KEg+KEq++/oO+/oe+/peKZguKZgOKIoOKKpeKMkuKIguKIh+KJoeKJksKn4oC74piG4piF4peL4peP4peO4peH4peG4pah4pag4paz4pay4pa94pa84oaS4oaQ4oaR4oaT4oaU44CT4omq4omr4oia4oi94oid4oi14oir4ois4oiI4oiL4oqG4oqH4oqC4oqD4oiq4oip4oin4oio77+iXCJdLFtcImEyNDFcIixcIuykkOykklwiLDUsXCLspJlcIiwxOF0sW1wiYTI2MVwiLFwi7KStXCIsNixcIuyktVwiLDE4XSxbXCJhMjgxXCIsXCLspYhcIiw3LFwi7KWS7KWT7KWV7KWW7KWX7KWZXCIsNixcIuylouylpFwiLDcsXCLspa3spa7spa/ih5Lih5TiiIDiiIPCtO+9nsuHy5jLncuay5nCuMubwqHCv8uQ4oiu4oiR4oiPwqTihInigLDil4Hil4DilrfilrbimaTimaDimaHimaXimafimaPiipnil4jilqPil5Dil5HilpLilqTilqXilqjilqfilqbilqnimajimI/imI7imJzimJ7CtuKAoOKAoeKGleKGl+KGmeKGluKGmOKZreKZqeKZquKZrOOJv+OInOKEluOPh+KEouOPguOPmOKEoeKCrMKuXCJdLFtcImEzNDFcIixcIuylseylsuyls+yltVwiLDYsXCLspb1cIiwxMCxcIuymiuymi+ymjeymjuymj1wiXSxbXCJhMzYxXCIsXCLsppFcIiw2LFwi7Kaa7Kac7KaeXCIsMTZdLFtcImEzODFcIixcIuymr1wiLDE2LFwi7KeC7KeD7KeF7KeG7KeJ7KeLXCIsNCxcIuynkuynlOynl+ynmOynm++8gVwiLDU4LFwi77+m77y9XCIsMzIsXCLvv6NcIl0sW1wiYTQ0MVwiLFwi7Kee7Kef7Keh7Kej7Kel7Kem7Keo7Kep7Keq7Ker7Keu7KeyXCIsNSxcIuynuuynu+ynveynvuynv+yogeyoguyog+yohFwiXSxbXCJhNDYxXCIsXCLsqIXsqIbsqIfsqIrsqI5cIiw1LFwi7KiV7KiW7KiX7KiZXCIsMTJdLFtcImE0ODFcIixcIuyopuyop+yoqOyoqlwiLDI4LFwi44SxXCIsOTNdLFtcImE1NDFcIixcIuyph1wiLDQsXCLsqY7sqY/sqZHsqZLsqZPsqZVcIiw2LFwi7Kme7KmiXCIsNSxcIuypqeypqlwiXSxbXCJhNTYxXCIsXCLsqatcIiwxNyxcIuypvlwiLDUsXCLsqoXsqoZcIl0sW1wiYTU4MVwiLFwi7KqHXCIsMTYsXCLsqplcIiwxNCxcIuKFsFwiLDldLFtcImE1YjBcIixcIuKFoFwiLDldLFtcImE1YzFcIixcIs6RXCIsMTYsXCLOo1wiLDZdLFtcImE1ZTFcIixcIs6xXCIsMTYsXCLPg1wiLDZdLFtcImE2NDFcIixcIuyqqFwiLDE5LFwi7Kq+7Kq/7KuB7KuC7KuD7KuFXCJdLFtcImE2NjFcIixcIuyrhlwiLDUsXCLsq47sq5Dsq5Lsq5Tsq5Xsq5bsq5fsq5pcIiw1LFwi7KuhXCIsNl0sW1wiYTY4MVwiLFwi7Kuo7Kup7Kuq7Kur7KutXCIsNixcIuyrtVwiLDE4LFwi7KyJ7KyK4pSA4pSC4pSM4pSQ4pSY4pSU4pSc4pSs4pSk4pS04pS84pSB4pSD4pSP4pST4pSb4pSX4pSj4pSz4pSr4pS74pWL4pSg4pSv4pSo4pS34pS/4pSd4pSw4pSl4pS44pWC4pSS4pSR4pSa4pSZ4pSW4pSV4pSO4pSN4pSe4pSf4pSh4pSi4pSm4pSn4pSp4pSq4pSt4pSu4pSx4pSy4pS14pS24pS54pS64pS94pS+4pWA4pWB4pWDXCIsN10sW1wiYTc0MVwiLFwi7KyLXCIsNCxcIuyskeyskuysk+ysleysluysl+ysmVwiLDYsXCLsrKJcIiw3XSxbXCJhNzYxXCIsXCLsrKpcIiwyMixcIuytguytg+ythFwiXSxbXCJhNzgxXCIsXCLsrYXsrYbsrYfsrYrsrYvsrY3srY7srY/srZFcIiw2LFwi7K2a7K2b7K2c7K2eXCIsNSxcIuytpVwiLDcsXCLjjpXjjpbjjpfihJPjjpjjj4TjjqPjjqTjjqXjjqbjjplcIiw5LFwi44+K446N446O446P44+P446I446J44+I446n446o446wXCIsOSxcIuOOgFwiLDQsXCLjjrpcIiw1LFwi446QXCIsNCxcIuKEpuOPgOOPgeOOiuOOi+OOjOOPluOPheOOreOOruOOr+OPm+OOqeOOquOOq+OOrOOPneOPkOOPk+OPg+OPieOPnOOPhlwiXSxbXCJhODQxXCIsXCLsra1cIiwxMCxcIuytulwiLDE0XSxbXCJhODYxXCIsXCLsrolcIiwxOCxcIuyunVwiLDZdLFtcImE4ODFcIixcIuyupFwiLDE5LFwi7K65XCIsMTEsXCLDhsOQwqrEplwiXSxbXCJhOGE2XCIsXCLEslwiXSxbXCJhOGE4XCIsXCLEv8WBw5jFksK6w57FpsWKXCJdLFtcImE4YjFcIixcIuOJoFwiLDI3LFwi4pOQXCIsMjUsXCLikaBcIiwxNCxcIsK94oWT4oWUwrzCvuKFm+KFnOKFneKFnlwiXSxbXCJhOTQxXCIsXCLsr4VcIiwxNCxcIuyvlVwiLDEwXSxbXCJhOTYxXCIsXCLsr6Dsr6Hsr6Lsr6Psr6Xsr6bsr6jsr6pcIiwxOF0sW1wiYTk4MVwiLFwi7K+9XCIsMTQsXCLssI7ssI/ssJHssJLssJPssJVcIiw2LFwi7LCe7LCf7LCg7LCj7LCkw6bEkcOwxKfEscSzxLjFgMWCw7jFk8Ofw77Fp8WLxYnjiIBcIiwyNyxcIuKSnFwiLDI1LFwi4pG0XCIsMTQsXCLCucKywrPigbTigb/igoHigoLigoPigoRcIl0sW1wiYWE0MVwiLFwi7LCl7LCm7LCq7LCr7LCt7LCv7LCxXCIsNixcIuywuuywv1wiLDQsXCLssYbssYfssYnssYrssYvssY3ssY5cIl0sW1wiYWE2MVwiLFwi7LGPXCIsNCxcIuyxluyxmlwiLDUsXCLssaHssaLssaPssaXssafssalcIiw2LFwi7LGx7LGyXCJdLFtcImFhODFcIixcIuyxs+yxtOyxtlwiLDI5LFwi44GBXCIsODJdLFtcImFiNDFcIixcIuyylOyyleyyluyyl+yymuyym+yyneyynuyyn+yyoVwiLDYsXCLssqrssq5cIiw1LFwi7LK27LK37LK5XCJdLFtcImFiNjFcIixcIuyyuuyyu+yyvVwiLDYsXCLss4bss4jss4pcIiw1LFwi7LOR7LOS7LOT7LOVXCIsNV0sW1wiYWI4MVwiLFwi7LObXCIsOCxcIuyzpVwiLDYsXCLss63ss67ss6/ss7FcIiwxMixcIuOCoVwiLDg1XSxbXCJhYzQxXCIsXCLss77ss7/stIDstIJcIiw1LFwi7LSK7LSL7LSN7LSO7LSP7LSRXCIsNixcIuy0muy0nOy0nuy0n+y0oFwiXSxbXCJhYzYxXCIsXCLstKHstKLstKPstKXstKbstKfstKnstKrstKvstK1cIiwxMSxcIuy0ulwiLDRdLFtcImFjODFcIixcIuy0v1wiLDI4LFwi7LWd7LWe7LWf0JBcIiw1LFwi0IHQllwiLDI1XSxbXCJhY2QxXCIsXCLQsFwiLDUsXCLRkdC2XCIsMjVdLFtcImFkNDFcIixcIuy1oey1ouy1o+y1pVwiLDYsXCLsta7stbDstbJcIiw1LFwi7LW5XCIsN10sW1wiYWQ2MVwiLFwi7LaBXCIsNixcIuy2iVwiLDEwLFwi7LaW7LaX7LaZ7Laa7Lab7Lad7Lae7LafXCJdLFtcImFkODFcIixcIuy2oOy2oey2ouy2o+y2puy2qOy2qlwiLDUsXCLstrFcIiwxOCxcIuy3hVwiXSxbXCJhZTQxXCIsXCLst4ZcIiw1LFwi7LeN7LeO7LeP7LeRXCIsMTZdLFtcImFlNjFcIixcIuy3olwiLDUsXCLst6nst6rst6vst63st67st6/st7FcIiw2LFwi7Le67Le87Le+XCIsNF0sW1wiYWU4MVwiLFwi7LiD7LiF7LiG7LiH7LiJ7LiK7LiL7LiNXCIsNixcIuy4ley4luy4l+y4mOy4mlwiLDUsXCLsuKLsuKPsuKXsuKbsuKfsuKnsuKrsuKtcIl0sW1wiYWY0MVwiLFwi7Lis7Lit7Liu7Liv7Liy7Li07Li2XCIsMTldLFtcImFmNjFcIixcIuy5ilwiLDEzLFwi7Lma7Lmb7Lmd7Lme7LmiXCIsNSxcIuy5quy5rFwiXSxbXCJhZjgxXCIsXCLsua5cIiw1LFwi7Lm27Lm37Lm57Lm67Lm77Lm9XCIsNixcIuy6huy6iOy6ilwiLDUsXCLsupLsupPsupXsupbsupfsuplcIl0sW1wiYjA0MVwiLFwi7LqaXCIsNSxcIuy6ouy6plwiLDUsXCLsuq5cIiwxMl0sW1wiYjA2MVwiLFwi7Lq7XCIsNSxcIuy7glwiLDE5XSxbXCJiMDgxXCIsXCLsu5ZcIiwxMyxcIuy7puy7p+y7qey7quy7rVwiLDYsXCLsu7bsu7pcIiw1LFwi6rCA6rCB6rCE6rCH6rCI6rCJ6rCK6rCQXCIsNyxcIuqwmVwiLDQsXCLqsKDqsKTqsKzqsK3qsK/qsLDqsLHqsLjqsLnqsLzqsYDqsYvqsY3qsZTqsZjqsZzqsbDqsbHqsbTqsbfqsbjqsbrqsoDqsoHqsoPqsoTqsoXqsobqsonqsorqsovqsozqspDqspTqspzqsp3qsp/qsqDqsqHqsqjqsqnqsqrqsqzqsq/qsrDqsrjqsrnqsrvqsrzqsr3qs4Hqs4Tqs4jqs4zqs5Xqs5fqs6Dqs6Hqs6Tqs6fqs6jqs6rqs6zqs6/qs7Dqs7Hqs7Pqs7Xqs7bqs7zqs73qtIDqtITqtIZcIl0sW1wiYjE0MVwiLFwi7LyC7LyD7LyF7LyG7LyH7LyJXCIsNixcIuy8kuy8lOy8llwiLDUsXCLsvJ3svJ7svJ/svKHsvKLsvKNcIl0sW1wiYjE2MVwiLFwi7LylXCIsNixcIuy8ruy8slwiLDUsXCLsvLlcIiwxMV0sW1wiYjE4MVwiLFwi7L2FXCIsMTQsXCLsvZbsvZfsvZnsvZrsvZvsvZ1cIiw2LFwi7L2m7L2o7L2q7L2r7L2s6rSM6rSN6rSP6rSR6rSY6rSc6rSg6rSp6rSs6rSt6rS06rS16rS46rS86rWE6rWF6rWH6rWJ6rWQ6rWU6rWY6rWh6rWj6rWs6rWt6rWw6rWz6rW06rW16rW26rW76rW86rW96rW/6raB6raC6raI6raJ6raM6raQ6rac6rad6rak6ra36reA6reB6reE6reI6reQ6reR6reT6rec6reg6rek6re46re56re86re/6riA6riB6riI6riJ6riL6riN6riU6riw6rix6ri06ri36ri46ri66rmA6rmB6rmD6rmF6rmG6rmK6rmM6rmN6rmO6rmQ6rmU6rmW6rmc6rmd6rmf6rmg6rmh6rml6rmo6rmp6rms6rmw6rm4XCJdLFtcImIyNDFcIixcIuy9rey9ruy9r+y9suy9s+y9tey9tuy9t+y9uVwiLDYsXCLsvoHsvoLsvoPsvoTsvoZcIiw1LFwi7L6NXCJdLFtcImIyNjFcIixcIuy+jlwiLDE4LFwi7L6iXCIsNSxcIuy+qVwiXSxbXCJiMjgxXCIsXCLsvqpcIiw1LFwi7L6xXCIsMTgsXCLsv4VcIiw2LFwi6rm56rm76rm86rm96rqE6rqF6rqM6rq86rq96rq+6ruA6ruE6ruM6ruN6ruP6ruQ6ruR6ruY6ruZ6ruc6ruo6rur6rut6ru06ru46ru86ryH6ryI6ryN6ryQ6rys6ryt6ryw6ryy6ry06ry86ry96ry/6r2B6r2C6r2D6r2I6r2J6r2Q6r2c6r2d6r2k6r2l6r256r6A6r6E6r6I6r6Q6r6R6r6V6r6c6r646r656r686r+A6r+H6r+I6r+J6r+L6r+N6r+O6r+U6r+c6r+o6r+p6r+w6r+x6r+06r+464CA64CB64CE64CM64CQ64CU64Cc64Cd64Co64GE64GF64GI64GK64GM64GO64GT64GU64GV64GX64GZXCJdLFtcImIzNDFcIixcIuy/jFwiLDE5LFwi7L+i7L+j7L+l7L+m7L+n7L+pXCJdLFtcImIzNjFcIixcIuy/qlwiLDUsXCLsv7Lsv7Tsv7ZcIiw1LFwi7L+97L++7L+/7YCB7YCC7YCD7YCFXCIsNV0sW1wiYjM4MVwiLFwi7YCLXCIsNSxcIu2AklwiLDUsXCLtgJlcIiwxOSxcIuuBneuBvOuBveuCgOuChOuCjOuCjeuCj+uCkeuCmOuCmeuCmuuCnOuCn+uCoOuCoeuCouuCqOuCqeuCq1wiLDQsXCLrgrHrgrPrgrTrgrXrgrjrgrzrg4Trg4Xrg4frg4jrg4nrg5Drg5Hrg5Trg5jrg6Drg6XrhIjrhInrhIvrhIzrhJDrhJLrhJPrhJjrhJnrhJvrhJzrhJ3rhKPrhKTrhKXrhKjrhKzrhLTrhLXrhLfrhLjrhLnrhYDrhYHrhYTrhYjrhZDrhZHrhZTrhZXrhZjrhZzrhaDrhbjrhbnrhbzrhoDrhoLrhojrhonrhovrho3rhpLrhpPrhpTrhpjrhpzrhqjrh4zrh5Drh5Trh5zrh51cIl0sW1wiYjQ0MVwiLFwi7YCuXCIsNSxcIu2Atu2At+2Aue2Auu2Au+2AvVwiLDYsXCLtgYbtgYjtgYpcIiw1XSxbXCJiNDYxXCIsXCLtgZHtgZLtgZPtgZXtgZbtgZftgZlcIiw2LFwi7YGhXCIsMTAsXCLtga7tga9cIl0sW1wiYjQ4MVwiLFwi7YGx7YGy7YGz7YG1XCIsNixcIu2Bvu2Bv+2CgO2CglwiLDE4LFwi64ef64eo64ep64es64ew64e564e764e964iE64iF64iI64iL64iM64iU64iV64iX64iZ64ig64i064i864mY64mc64mg64mo64mp64m064m164m864qE64qF64qJ64qQ64qR64qU64qY64qZ64qa64qg64qh64qj64ql64qm64qq64qs64qw64q064uI64uJ64uM64uQ64uS64uY64uZ64ub64ud64ui64uk64ul64um64uo64urXCIsNCxcIuuLs+uLtOuLteuLt1wiLDQsXCLri7/rjIDrjIHrjITrjIjrjJDrjJHrjJPrjJTrjJXrjJzrjZTrjZXrjZbrjZjrjZvrjZzrjZ7rjZ/rjaTrjaVcIl0sW1wiYjU0MVwiLFwi7YKVXCIsMTQsXCLtgqbtgqftgqntgqrtgqvtgq1cIiw1XSxbXCJiNTYxXCIsXCLtgrPtgrbtgrjtgrpcIiw1LFwi7YOC7YOD7YOF7YOG7YOH7YOKXCIsNSxcIu2Dku2DllwiLDRdLFtcImI1ODFcIixcIu2Dm+2Dnu2Dn+2Doe2Dou2Do+2DpVwiLDYsXCLtg67tg7JcIiw1LFwi7YO5XCIsMTEsXCLrjafrjanrjavrja7rjbDrjbHrjbTrjbjrjoDrjoHrjoPrjoTrjoXrjozrjpDrjpTrjqDrjqHrjqjrjqzrj4Trj4Xrj4jrj4vrj4zrj47rj5Drj5Trj5Xrj5frj5nrj5vrj53rj6Drj6Trj6jrj7zrkJDrkJjrkJzrkKDrkKjrkKnrkKvrkLTrkZDrkZHrkZTrkZjrkaDrkaHrkaPrkaXrkazrkoDrkojrkp3rkqTrkqjrkqzrkrXrkrfrkrnrk4Drk4Trk4jrk5Drk5Xrk5zrk53rk6Drk6Prk6Trk6brk6zrk63rk6/rk7Hrk7jrlJTrlJXrlJjrlJvrlJzrlKTrlKXrlKfrlKjrlKnrlKrrlLDrlLHrlLTrlLhcIl0sW1wiYjY0MVwiLFwi7YSFXCIsNyxcIu2EjlwiLDE3XSxbXCJiNjYxXCIsXCLthKBcIiwxNSxcIu2Esu2Es+2Ete2Etu2Et+2Eue2Eu+2EvO2Eve2EvlwiXSxbXCJiNjgxXCIsXCLthL/thYLthYZcIiw1LFwi7YWO7YWP7YWR7YWS7YWT7YWVXCIsNixcIu2Fnu2FoO2FolwiLDUsXCLthantharthavtha3rlYDrlYHrlYPrlYTrlYXrlYvrlYzrlY3rlZDrlZTrlZzrlZ3rlZ/rlaDrlaHrlqDrlqHrlqTrlqjrlqrrlqvrlrDrlrHrlrPrlrTrlrXrlrvrlrzrlr3rl4Drl4Trl4zrl43rl4/rl5Drl5Hrl5jrl6zrmJDrmJHrmJTrmJjrmKXrmKzrmLTrmYjrmaTrmajrmpzrmp3rmqDrmqTrmqvrmqzrmrHrm5Trm7Drm7Trm7jrnIDrnIHrnIXrnKjrnKnrnKzrnK/rnLDrnLjrnLnrnLvrnYTrnYjrnYzrnZTrnZXrnaDrnaTrnajrnbDrnbHrnbPrnbXrnbzrnb3rnoDrnoTrnozrno3rno/rnpDrnpHrnpLrnpbrnpdcIl0sW1wiYjc0MVwiLFwi7YWuXCIsMTMsXCLthb1cIiw2LFwi7YaF7YaG7YaH7YaJ7YaKXCJdLFtcImI3NjFcIixcIu2Gi1wiLDIwLFwi7Yai7Yaj7Yal7Yam7YanXCJdLFtcImI3ODFcIixcIu2GqVwiLDYsXCLthrLthrTthrbthrfthrjthrnthrvthr3thr7thr/th4FcIiwxNCxcIuuemOuemeuenOueoOueqOueqeueq+uerOuereuetOueteueuOufh+ufieufrOufreufsOuftOufvOufveufv+uggOuggeugh+ugiOugieugjOugkOugmOugmeugm+ugneugpOugpeugqOugrOugtOugteugt+uguOugueuhgOuhhOuhkeuhk+uhnOuhneuhoOuhpOuhrOuhreuhr+uhseuhuOuhvOuijeuiqOuisOuitOuiuOujgOujgeujg+ujheujjOujkOujlOujneujn+ujoeujqOujqeujrOujsOujuOujueuju+ujveukhOukmOukoOukvOukveulgOulhOuljOulj+ulkeulmOulmeulnOuloOulqOulqVwiXSxbXCJiODQxXCIsXCLth5BcIiw3LFwi7YeZXCIsMTddLFtcImI4NjFcIixcIu2Hq1wiLDgsXCLth7Xth7bth7fth7lcIiwxM10sW1wiYjg4MVwiLFwi7YiI7YiKXCIsNSxcIu2IkVwiLDI0LFwi66Wr66Wt66W066W166W466W866aE66aF66aH66aJ66aK66aN66aO66as66at66aw66a066a866a966a/66eB66eI66eJ66eM66eOXCIsNCxcIuunmOunmeunm+unneunnuunoeuno+unpOunpeunqOunrOuntOunteunt+unuOunueunuuuogOuogeuoiOuoleuouOuoueuovOupgOupguupiOupieupi+upjeupjuupk+uplOupleupmOupnOuppOuppeupp+upqOupqeupsOupseuptOupuOuqg+uqhOuqheuqh+uqjOuqqOuqqeuqq+uqrOuqsOuqsuuquOuqueuqu+uqveurhOuriOurmOurmeurvFwiXSxbXCJiOTQxXCIsXCLtiKrtiKvtiK7tiK/tiLHtiLLtiLPtiLVcIiw2LFwi7Yi+7YmA7YmCXCIsNSxcIu2Jie2Jiu2Ji+2JjFwiXSxbXCJiOTYxXCIsXCLtiY1cIiwxNCxcIu2JnVwiLDYsXCLtiaXtiabtiaftiahcIl0sW1wiYjk4MVwiLFwi7YmpXCIsMjIsXCLtioLtioPtioXtiobtioftiontiortiovtiozrrIDrrITrrI3rrI/rrJHrrJjrrJzrrKDrrKnrrKvrrLTrrLXrrLbrrLjrrLvrrLzrrL3rrL7rrYTrrYXrrYfrrYnrrY3rrY/rrZDrrZTrrZjrraHrraPrrazrrojrrozrrpDrrqTrrqjrrqzrrrTrrrfrr4Drr4Trr4jrr5Drr5Prr7jrr7nrr7zrr7/rsIDrsILrsIjrsInrsIvrsIzrsI3rsI/rsJHrsJRcIiw0LFwi67CbXCIsNCxcIuuwpOuwpeuwp+uwqeuwreuwsOuwseuwtOuwuOuxgOuxgeuxg+uxhOuxheuxieuxjOuxjeuxkOuxneuyhOuyheuyiOuyi+uyjOuyjuuylOuyleuyl1wiXSxbXCJiYTQxXCIsXCLtio3tio7tio/tipLtipPtipTtipZcIiw1LFwi7Yqd7Yqe7Yqf7Yqh7Yqi7Yqj7YqlXCIsNixcIu2KrVwiXSxbXCJiYTYxXCIsXCLtiq7tiq/tirDtirJcIiw1LFwi7Yq67Yq77Yq97Yq+7YuB7YuDXCIsNCxcIu2Liu2LjFwiLDVdLFtcImJhODFcIixcIu2Lku2Lk+2Lle2Llu2Ll+2Lme2Lmu2Lm+2LnVwiLDYsXCLti6ZcIiw5LFwi7Yuy7Yuz7Yu17Yu27Yu37Yu57Yu667KZ67Ka67Kg67Kh67Kk67Kn67Ko67Kw67Kx67Kz67K067K167K867K967OA67OE67ON67OP67OQ67OR67OV67OY67Oc67O067O167O267O467O867SE67SF67SH67SJ67SQ67SU67Sk67Ss67WA67WI67WJ67WM67WQ67WY67WZ67Wk67Wo67aA67aB67aE67aH67aI67aJ67aK67aQ67aR67aT67aV67aZ67aa67ac67ak67aw67a467eU67eV67eY67ec67ep67ew67e067e467iA67iD67iF67iM67iN67iQ67iU67ic67id67if67mE67mF67mI67mM67mO67mU67mV67mX67mZ67ma67mb67mg67mh67mkXCJdLFtcImJiNDFcIixcIu2Lu1wiLDQsXCLtjILtjITtjIZcIiw1LFwi7YyP7YyR7YyS7YyT7YyV7YyXXCIsNCxcIu2Mnu2Mou2Mo1wiXSxbXCJiYjYxXCIsXCLtjKTtjKbtjKftjKrtjKvtjK3tjK7tjK/tjLFcIiw2LFwi7Yy67Yy+XCIsNSxcIu2Nhu2Nh+2NiO2NiVwiXSxbXCJiYjgxXCIsXCLtjYpcIiwzMSxcIuu5qOu5quu5sOu5seu5s+u5tOu5teu5u+u5vOu5veu6gOu6hOu6jOu6jeu6j+u6kOu6keu6mOu6meu6qOu7kOu7keu7lOu7l+u7mOu7oOu7o+u7pOu7peu7rOu8geu8iOu8ieu8mOu8meu8m+u8nOu8neu9gOu9geu9hOu9iOu9kOu9keu9leu+lOu+sOu/heu/jOu/jeu/kOu/lOu/nOu/n+u/oeyAvOyBkeyBmOyBnOyBoOyBqOyBqeyCkOyCkeyClOyCmOyCoOyCoeyCo+yCpeyCrOyCreyCr+yCsOyCs+yCtOyCteyCtuyCvOyCveyCv+yDgOyDgeyDheyDiOyDieyDjOyDkOyDmOyDmeyDm+yDnOyDneyDpFwiXSxbXCJiYzQxXCIsXCLtjapcIiwxNyxcIu2Nvu2Nv+2Oge2Ogu2Og+2Ohe2Ohu2Oh1wiXSxbXCJiYzYxXCIsXCLtjojtjontjortjovtjo7tjpJcIiw1LFwi7Y6a7Y6b7Y6d7Y6e7Y6f7Y6hXCIsNixcIu2Oqu2OrO2OrlwiXSxbXCJiYzgxXCIsXCLtjq9cIiw0LFwi7Y617Y627Y637Y657Y667Y677Y69XCIsNixcIu2Phu2Ph+2PilwiLDUsXCLtj5FcIiw1LFwi7IOl7IOo7IOs7IO07IO17IO37IO57ISA7ISE7ISI7ISQ7ISV7IScXCIsNCxcIuyEo+yEpOyEpuyEp+yErOyEreyEr+yEsOyEseyEtuyEuOyEueyEvOyFgOyFiOyFieyFi+yFjOyFjeyFlOyFleyFmOyFnOyFpOyFpeyFp+yFqOyFqeyFsOyFtOyFuOyGheyGjOyGjeyGjuyGkOyGlOyGluyGnOyGneyGn+yGoeyGpeyGqOyGqeyGrOyGsOyGveyHhOyHiOyHjOyHlOyHl+yHmOyHoOyHpOyHqOyHsOyHseyHs+yHvOyHveyIgOyIhOyIjOyIjeyIj+yIkeyImOyImeyInOyIn+yIoOyIqOyIqeyIq+yIrVwiXSxbXCJiZDQxXCIsXCLtj5ftj5lcIiw3LFwi7Y+i7Y+kXCIsNyxcIu2Pru2Pr+2Pse2Psu2Ps+2Pte2Ptu2Pt1wiXSxbXCJiZDYxXCIsXCLtj7jtj7ntj7rtj7vtj77tkIDtkIJcIiw1LFwi7ZCJXCIsMTNdLFtcImJkODFcIixcIu2Ql1wiLDUsXCLtkJ5cIiwyNSxcIuyIr+yIseyIsuyItOyJiOyJkOyJkeyJlOyJmOyJoOyJpeyJrOyJreyJsOyJtOyJvOyJveyJv+yKgeyKiOyKieyKkOyKmOyKm+yKneyKpOyKpeyKqOyKrOyKreyKtOyKteyKt+yKueyLnOyLneyLoOyLo+yLpOyLq+yLrOyLreyLr+yLseyLtuyLuOyLueyLu+yLvOyMgOyMiOyMieyMjOyMjeyMk+yMlOyMleyMmOyMnOyMpOyMpeyMqOyMqeyNheyNqOyNqeyNrOyNsOyNsuyNuOyNueyNvOyNveyOhOyOiOyOjOyPgOyPmOyPmeyPnOyPn+yPoOyPouyPqOyPqeyPreyPtOyPteyPuOyQiOyQkOyQpOyQrOyQsFwiXSxbXCJiZTQxXCIsXCLtkLhcIiw3LFwi7ZGB7ZGC7ZGD7ZGFXCIsMTRdLFtcImJlNjFcIixcIu2RlFwiLDcsXCLtkZ3tkZ7tkZ/tkaHtkaLtkaPtkaVcIiw3LFwi7ZGu7ZGw7ZGx7ZGyXCJdLFtcImJlODFcIixcIu2Rs1wiLDQsXCLtkbrtkbvtkb3tkb7tkoHtkoNcIiw0LFwi7ZKK7ZKM7ZKOXCIsNSxcIu2SlVwiLDgsXCLskLTskLzskL3skYjskaTskaXskajskazskbTskbXskbnskoDskpTskpzskrjskrzsk6nsk7Dsk7Hsk7Tsk7jsk7rsk7/slIDslIHslIzslJDslJTslJzslKjslKnslKzslLDslLjslLnslLvslL3slYTslYXslYjslYnslYrslYzslY3slY7slZPslZTslZXslZfslZjslZnslZ3slZ7slaDslaHslaTslajslbDslbHslbPslbTslbXslbzslb3sloDsloTslofslozslo3slo/slpHslpXslpfslpjslpzslqDslqnslrTslrXslrjslrnslrvslrzslr3slr7sl4RcIiw2LFwi7JeM7JeOXCJdLFtcImJmNDFcIixcIu2SnlwiLDEwLFwi7ZKqXCIsMTRdLFtcImJmNjFcIixcIu2SuVwiLDE4LFwi7ZON7ZOO7ZOP7ZOR7ZOS7ZOT7ZOVXCJdLFtcImJmODFcIixcIu2TllwiLDUsXCLtk53tk57tk6BcIiw3LFwi7ZOp7ZOq7ZOr7ZOt7ZOu7ZOv7ZOxXCIsNixcIu2Tue2Tuu2TvOyXkOyXkeyXlOyXmOyXoOyXoeyXo+yXpeyXrOyXreyXruyXsOyXtOyXtuyXt+yXvFwiLDUsXCLsmIXsmIbsmIfsmIjsmIzsmJDsmJjsmJnsmJvsmJzsmKTsmKXsmKjsmKzsmK3smK7smLDsmLPsmLTsmLXsmLfsmLnsmLvsmYDsmYHsmYTsmYjsmZDsmZHsmZPsmZTsmZXsmZzsmZ3smaDsmazsma/smbHsmbjsmbnsmbzsmoDsmojsmonsmovsmo3smpTsmpXsmpjsmpzsmqTsmqXsmqfsmqnsmrDsmrHsmrTsmrjsmrnsmrrsm4Dsm4Hsm4Psm4Xsm4zsm43sm5Dsm5Tsm5zsm53sm6Dsm6Hsm6hcIl0sW1wiYzA0MVwiLFwi7ZO+XCIsNSxcIu2Uhe2Uhu2Uh+2Uie2Uiu2Ui+2UjVwiLDYsXCLtlJbtlJhcIiw1XSxbXCJjMDYxXCIsXCLtlJ5cIiwyNV0sW1wiYzA4MVwiLFwi7ZS47ZS57ZS67ZS77ZS+7ZS/7ZWB7ZWC7ZWD7ZWFXCIsNixcIu2Vju2VkO2VklwiLDUsXCLtlZrtlZvtlZ3tlZ7tlZ/tlaHtlaLtlaPsm6nsm6zsm7Dsm7jsm7nsm73snITsnIXsnIjsnIzsnJTsnJXsnJfsnJnsnKDsnKHsnKTsnKjsnLDsnLHsnLPsnLXsnLfsnLzsnL3snYDsnYTsnYrsnYzsnY3snY/snZFcIiw3LFwi7J2c7J2g7J2o7J2r7J207J217J247J287J297J2+7J6D7J6E7J6F7J6H7J6I7J6J7J6K7J6O7J6Q7J6R7J6U7J6W7J6X7J6Y7J6a7J6g7J6h7J6j7J6k7J6l7J6m7J6s7J6t7J6w7J607J687J697J6/7J+A7J+B7J+I7J+J7J+M7J+O7J+Q7J+Y7J+d7J+k7J+o7J+s7KCA7KCB7KCE7KCI7KCKXCJdLFtcImMxNDFcIixcIu2VpO2Vpu2Vp+2Vqu2VrO2VrlwiLDUsXCLtlbbtlbftlbntlbrtlbvtlb1cIiw2LFwi7ZaG7ZaK7ZaLXCJdLFtcImMxNjFcIixcIu2WjO2Wje2Wju2Wj+2WkVwiLDE5LFwi7Zam7ZanXCJdLFtcImMxODFcIixcIu2WqFwiLDMxLFwi7KCQ7KCR7KCT7KCV7KCW7KCc7KCd7KCg7KCk7KCs7KCt7KCv7KCx7KC47KC87KGA7KGI7KGJ7KGM7KGN7KGU7KGw7KGx7KG07KG47KG67KKA7KKB7KKD7KKF7KKG7KKH7KKL7KKM7KKN7KKU7KKd7KKf7KKh7KKo7KK87KK97KOE7KOI7KOM7KOU7KOV7KOX7KOZ7KOg7KOh7KOk7KO17KO87KO97KSA7KSE7KSF7KSG7KSM7KSN7KSP7KSR7KSY7KSs7KS07KWQ7KWR7KWU7KWY7KWg7KWh7KWj7KWs7KWw7KW07KW87KaI7KaJ7KaM7KaQ7KaY7KaZ7Kab7Kad7KeA7KeB7KeE7KeH7KeI7KeK7KeQ7KeR7KeTXCJdLFtcImMyNDFcIixcIu2Xiu2Xi+2Xje2Xju2Xj+2Xke2Xk1wiLDQsXCLtl5rtl5ztl55cIiw1LFwi7Zem7Zen7Zep7Zeq7Zer7Zet7ZeuXCJdLFtcImMyNjFcIixcIu2Xr1wiLDQsXCLtl7btl7jtl7pcIiw1LFwi7ZiC7ZiD7ZiF7ZiG7ZiH7ZiJXCIsNixcIu2YklwiXSxbXCJjMjgxXCIsXCLtmJZcIiw1LFwi7Zid7Zie7Zif7Zih7Zii7Zij7ZilXCIsNyxcIu2YrlwiLDksXCLtmLrtmLvsp5Xsp5bsp5nsp5rsp5zsp53sp6Dsp6Lsp6Tsp6fsp6zsp63sp6/sp7Dsp7Hsp7jsp7nsp7zsqIDsqIjsqInsqIvsqIzsqI3sqJTsqJjsqKnsqYzsqY3sqZDsqZTsqZzsqZ3sqZ/sqaDsqaHsqajsqb3sqoTsqpjsqrzsqr3sq4Dsq4Tsq4zsq43sq4/sq5Hsq5Psq5jsq5nsq6Dsq6zsq7TsrIjsrJDsrJTsrJjsrKDsrKHsrYHsrYjsrYnsrYzsrZDsrZjsrZnsrZ3sraTsrbjsrbnsrpzsrrjsr5Tsr6Tsr6fsr6nssIzssI3ssJDssJTssJzssJ3ssKHssKLssKfssKjssKnssKzssK7ssLDssLjssLnssLtcIl0sW1wiYzM0MVwiLFwi7Zi97Zi+7Zi/7ZmB7ZmC7ZmD7ZmE7ZmG7ZmH7ZmK7ZmM7ZmO7ZmP7ZmQ7ZmS7ZmT7ZmW7ZmX7ZmZ7Zma7Zmb7ZmdXCIsNF0sW1wiYzM2MVwiLFwi7ZmiXCIsNCxcIu2ZqO2ZqlwiLDUsXCLtmbLtmbPtmbVcIiwxMV0sW1wiYzM4MVwiLFwi7ZqB7ZqC7ZqE7ZqGXCIsNSxcIu2aju2aj+2ake2aku2ak+2alVwiLDcsXCLtmp7tmqDtmqJcIiw1LFwi7Zqp7Zqq7LC87LC97LC+7LGE7LGF7LGI7LGM7LGU7LGV7LGX7LGY7LGZ7LGg7LGk7LGm7LGo7LGw7LG17LKY7LKZ7LKc7LKg7LKo7LKp7LKr7LKs7LKt7LK07LK17LK47LK87LOE7LOF7LOH7LOJ7LOQ7LOU7LOk7LOs7LOw7LSB7LSI7LSJ7LSM7LSQ7LSY7LSZ7LSb7LSd7LSk7LSo7LSs7LS57LWc7LWg7LWk7LWs7LWt7LWv7LWx7LW47LaI7LaU7LaV7LaY7Lac7Lak7Lal7Lan7Lap7Law7LeE7LeM7LeQ7Leo7Les7Lew7Le47Le57Le77Le97LiE7LiI7LiM7LiU7LiZ7Lig7Lih7Lik7Lio7Liw7Lix7Liz7Li1XCJdLFtcImM0NDFcIixcIu2aq+2are2aru2ar+2asVwiLDcsXCLtmrrtmrxcIiw3LFwi7ZuG7ZuH7ZuJ7ZuK7ZuLXCJdLFtcImM0NjFcIixcIu2bje2bju2bj+2bkO2bku2bk+2ble2blu2bmO2bmlwiLDUsXCLtm6Htm6Ltm6Ptm6Xtm6btm6ftm6lcIiw0XSxbXCJjNDgxXCIsXCLtm67tm6/tm7Htm7Ltm7Ptm7Ttm7ZcIiw1LFwi7Zu+7Zu/7ZyB7ZyC7ZyD7ZyFXCIsMTEsXCLtnJLtnJPtnJTsuZjsuZnsuZzsuZ/suaDsuaHsuajsuansuavsua3subTsubXsubjsubzsuoTsuoXsuofsuonsupDsupHsupTsupjsuqDsuqHsuqPsuqTsuqXsuqzsuq3su4Hsu6Tsu6Xsu6jsu6vsu6zsu7Tsu7Xsu7fsu7jsu7nsvIDsvIHsvITsvIjsvJDsvJHsvJPsvJXsvJzsvKDsvKTsvKzsvK3svK/svLDsvLHsvLjsvZTsvZXsvZjsvZzsvaTsvaXsvafsvansvbDsvbHsvbTsvbjsvoDsvoXsvozsvqHsvqjsvrDsv4Tsv6Dsv6Hsv6Tsv6jsv7Dsv7Hsv7Psv7Xsv7ztgIDtgITtgJHtgJjtgK3tgLTtgLXtgLjtgLxcIl0sW1wiYzU0MVwiLFwi7ZyV7ZyW7ZyX7Zya7Zyb7Zyd7Zye7Zyf7ZyhXCIsNixcIu2cqu2crO2crlwiLDUsXCLtnLbtnLftnLlcIl0sW1wiYzU2MVwiLFwi7Zy67Zy77Zy9XCIsNixcIu2dhe2dhu2diO2dilwiLDUsXCLtnZLtnZPtnZXtnZpcIiw0XSxbXCJjNTgxXCIsXCLtnZ/tnaLtnaTtnabtnaftnajtnartnavtna3tna7tna/tnbHtnbLtnbPtnbVcIiw2LFwi7Z2+7Z2/7Z6A7Z6CXCIsNSxcIu2eiu2ei+2BhO2Bhe2Bh+2Bie2BkO2BlO2BmO2BoO2BrO2Bre2BsO2BtO2BvO2Bve2Cge2CpO2Cpe2CqO2CrO2CtO2Cte2Ct+2Cue2DgO2Dge2DhO2DiO2Die2DkO2Dke2Dk+2DlO2Dle2DnO2Dne2DoO2DpO2DrO2Dre2Dr+2DsO2Dse2DuO2Eje2EsO2Ese2EtO2EuO2Euu2FgO2Fge2Fg+2FhO2Fhe2FjO2Fje2FkO2FlO2FnO2Fne2Fn+2Foe2FqO2FrO2FvO2GhO2GiO2GoO2Goe2GpO2GqO2GsO2Gse2Gs+2Gte2Guu2GvO2HgO2HmO2HtO2HuO2Ih+2Iie2IkO2IrO2Ire2IsO2ItO2IvO2Ive2Iv+2Jge2JiO2JnFwiXSxbXCJjNjQxXCIsXCLtno3tno7tno/tnpFcIiw2LFwi7Z6a7Z6c7Z6eXCIsNV0sW1wiYzZhMVwiLFwi7Ymk7YqA7YqB7YqE7YqI7YqQ7YqR7YqV7Yqc7Yqg7Yqk7Yqs7Yqx7Yq47Yq57Yq87Yq/7YuA7YuC7YuI7YuJ7YuL7YuU7YuY7Yuc7Yuk7Yul7Yuw7Yux7Yu07Yu47YyA7YyB7YyD7YyF7YyM7YyN7YyO7YyQ7YyU7YyW7Yyc7Yyd7Yyf7Yyg7Yyh7Yyl7Yyo7Yyp7Yys7Yyw7Yy47Yy57Yy77Yy87Yy97Y2E7Y2F7Y287Y297Y6A7Y6E7Y6M7Y6N7Y6P7Y6Q7Y6R7Y6Y7Y6Z7Y6c7Y6g7Y6o7Y6p7Y6r7Y6t7Y607Y647Y687Y+E7Y+F7Y+I7Y+J7Y+Q7Y+Y7Y+h7Y+j7Y+s7Y+t7Y+w7Y+07Y+87Y+97Y+/7ZCBXCJdLFtcImM3YTFcIixcIu2QiO2Qne2RgO2RhO2RnO2RoO2RpO2Rre2Rr+2RuO2Rue2RvO2Rv+2SgO2Sgu2SiO2Sie2Si+2Sje2SlO2Sqe2TjO2TkO2TlO2TnO2Tn+2TqO2TrO2TsO2TuO2Tu+2Tve2UhO2UiO2UjO2UlO2Ule2Ul+2UvO2Uve2VgO2VhO2VjO2Vje2Vj+2Vke2VmO2Vme2VnO2VoO2Vpe2VqO2Vqe2Vq+2Vre2VtO2Vte2VuO2VvO2WhO2Whe2Wh+2WiO2Wie2WkO2Wpe2XiO2Xie2XjO2XkO2Xku2XmO2Xme2Xm+2Xne2XpO2Xpe2XqO2XrO2XtO2Xte2Xt+2Xue2YgO2Yge2YhO2YiO2YkO2Yke2Yk+2YlO2Yle2YnO2YoFwiXSxbXCJjOGExXCIsXCLtmKTtmK3tmLjtmLntmLztmYDtmYXtmYjtmYntmYvtmY3tmZHtmZTtmZXtmZjtmZztmaftmantmbDtmbHtmbTtmoPtmoXtmoztmo3tmpDtmpTtmp3tmp/tmqHtmqjtmqztmrDtmrntmrvtm4Ttm4Xtm4jtm4ztm5Htm5Ttm5ftm5ntm6Dtm6Ttm6jtm7Dtm7Xtm7ztm73tnIDtnITtnJHtnJjtnJntnJztnKDtnKjtnKntnKvtnK3tnLTtnLXtnLjtnLztnYTtnYftnYntnZDtnZHtnZTtnZbtnZftnZjtnZntnaDtnaHtnaPtnaXtnantnaztnbDtnbTtnbztnb3tnoHtnojtnontnoztnpDtnpjtnpntnpvtnp1cIl0sW1wiY2FhMVwiLFwi5Ly95L2z5YGH5YO55Yqg5Y+v5ZG15ZOl5ZiJ5auB5a625pqH5p625p635p+v5q2M54+C55eC56i86Iub6IyE6KGX6KKI6Ki26LOI6LeP6Lu76L+m6aeV5Yi75Y205ZCE5oGq5oWk5q6854+P6ISa6Ka66KeS6Zaj5L6D5YiK5aK+5aW45aem5bmy5bm55oeH5o+A5p2G5p+s5qG/5r6X55mO55yL56O156iI56u/57Ch6IKd6Imu6Imx6Kur6ZaT5Lmr5Zad5pu35ri056Kj56ut6JGb6KSQ6J2O6Z6o5YuY5Z2O5aCq5bWM5oSf5oa+5oih5pWi5p+R5qmE5rib55SY55az55uj556w57S66YKv6ZGR6ZGS6b6VXCJdLFtcImNiYTFcIixcIuWMo+WyrOeUsuiDm+mJgOmWmOWJm+WgiOWnnOWyoeW0l+W6t+W8uuW9iuaFt+axn+eVuueWhuezoOe1s+e2see+jOiFlOiIoeiWkeilgeism+mLvOmZjemxh+S7i+S7t+WAi+WHseWhj+aEt+aEvuaFqOaUueanqua8keeWpeeahueblueuh+iKpeiTi++kgOmOp+mWi+WWgOWuouWdke+kgeeys+e+uemGteWAqOWOu+WxheW3qOaLkuaNruaTmuaTp+a4oOeCrOelm+i3nei4nu+kgumBvemJhemLuOS5vuS7tuWBpeW3vuW7uuaEhuall+iFseiZlOi5h+mNtemoq+S5nuWCkeadsOahgOWEieWKjeWKkuaqolwiXSxbXCJjY2ExXCIsXCLnnrzpiJDpu5TliqvmgK/ov7LlgYjmhqnmj63mk4rmoLzmqoTmv4DohojopqHpmpTloIXnib3niqznlITntbnnua3ogqnopovorbTpgaPptZHmionmsbrmvZTntZDnvLroqKPlhbzmhYrnrp3orJnpiZfpjozkuqzkv5PlgJ7lgr7lhIbli4Hli43ljb/lnbDlooPluprlvpHmhbbmhqzmk47mlazmma/mmrvmm7TmopfmtofngoXng7Hnkp/nkqXnk4rnl5nnoazno6znq5/nq7bntYXntpPogJXogL/ohJvojpborabovJXpgJXpj6HpoIPpoLjpqZrpr6jkv4LllZPloLrlpZHlraPlsYbmgrjmiJLmoYLmorBcIl0sW1wiY2RhMVwiLFwi5qOo5rqq55WM55m456OO56i957O757mr57m86KiI6Kqh6LC/6ZqO6beE5Y+k5Y+p5ZGK5ZGx5Zu65aeR5a2k5bC75bqr5ou35pS35pWF5pWy5pqg5p6v5qeB5rK955e855qQ552+56i/576U6ICD6IKh6IaP6Ium6Iu96I+w6JeB6KCx6KK06Kql76SD6L6c6Yyu6ZuH6aGn6auY6byT5ZOt5pab5puy5qKP56mA6LC36bWg5Zuw5Z2k5bSR5piG5qKx5qON5ru+55Co6KKe6a+k5rGo76SE6aqo5L6b5YWs5YWx5Yqf5a2U5bel5oGQ5oGt5oux5o6n5pS754+Z56m66Jqj6LKi6Z6P5Liy5a+h5oiI5p6c55OcXCJdLFtcImNlYTFcIixcIuenkeiPk+iqh+iqsui3qOmBjumNi+mhhuW7k+anqOiXv+mDre+kheWGoOWumOWvrOaFo+ajuuasvueBjOeQr+eTmOeuoee9kOiPheingOiyq+mXnOmkqOWIruaBneaLrOmAguS+iuWFieWMoeWjmeW7o+aboOa0uOeCmueLguePluetkOiDsemRm+WNpuaOm+e9q+S5luWCgOWhiuWjnuaAquaEp+aLkOankOmtgeWuj+e0mOiCsei9n+S6pOWDkeWSrOWWrOWsjOW2oOW3p+aUquaVjuagoeapi+eLoeeajuefr+e1nue/ueiGoOiVjuibn+i8g+i9jumDiumkg+mplemuq+S4mOS5heS5neS7h+S/seWFt+WLvlwiXSxbXCJjZmExXCIsXCLljYDlj6Plj6Xlko7lmJTlnbXlnqLlr4fltoflu5Dmh7zmi5jmlZHmnrjmn6nmp4vmrZDmr4bmr6zmsYLmup3ngbjni5fnjpbnkIPnnr/nn6nnqbbntb/ogInoh7zoiIXoiIroi5/ooaLorLPos7zou4DpgJHpgrHpiaTpirbpp5LpqYXps6npt5fpvpzlnIvlsYDoj4rpnqDpnqvpurTlkJvnqpjnvqToo5nou43pg6HloIDlsYjmjpjnqp/lrq7lvJPnqbnnqq7oio7ouqzlgKbliLjli7jljbflnIjmi7PmjbLmrIrmt4PnnLfljqXnjZfolajoubbpl5XmnLrmq4PmvbDoqa3ou4zppYvvpIbmmbfmrbjosrRcIl0sW1wiZDBhMVwiLFwi6ay876SH5Y+r5Zyt5aWO5o+G5qe754+q56GF56q656uF57O+6JG16KaP6LWz6YC16Zao5Yu75Z2H55WH562g6I+M6Yie76SI5qmY5YWL5YmL5YqH5oif5qOY5qW16ZqZ5YOF5Yqk5Yuk5oeD5pak5qC55qe/55G+562L6Iq56I+r6Kay6Ky56L+R6aWJ76SJ5LuK5aaX5pOS5piR5qqO55C056aB56a96Iqp6KG+6KG/6KWf76SK6Yym5LyL5Y+K5oCl5omx5rGy57Sa57Wm5LqY5YWi55+c6IKv5LyB5LyO5YW25YaA5Zec5Zmo5Zy75Z+65Z+85aSU5aWH5aaT5a+E5bKQ5bSO5bex5bm+5b+M5oqA5peX5pejXCJdLFtcImQxYTFcIixcIuacnuacn+adnuaji+ajhOapn+asuuawo+axveaygua3h+eOmOeQpueQqueSgueSo+eVuOeVv+eigeejr+elgeelh+eliOeluueulee0gOe2uue+iOiAhuiAreiCjOiomOitj+ixiOi1t+mMoemMpOmjoumlkemojumoj+mppem6kue3iuS9tuWQieaLruahlOmHkeWWq+WEuu+ki++kjOWonOaHpu+kjeaLj+aLv++kjlwiLDUsXCLpgqPvpJRcIiw0LFwi6Ku+76SZ76Sa76Sb76Sc5pqW76Sd54WW76Se76Sf6Zuj76Sg5o2P5o265Y2X76Sh5p6P5qWg5rmz76Si55S376Sj76Sk76SlXCJdLFtcImQyYTFcIixcIue0je+kpu+kp+ihsuWbiuWomO+kqFwiLDQsXCLkuYPvpK3lhaflpYjmn7DogJDvpK7lpbPlubTmkprnp4rlv7Xmgazmi4jmjbvlr6flr5fliqrvpK/lpbTlvKnmgJLvpLDvpLHvpLLnkZnvpLNcIiw1LFwi6aeR76S5XCIsMTAsXCLmv4PvpYTvpYXohr/ovrLmg7HvpYbvpYfohabvpYjvpYnlsL/vpYpcIiw3LFwi5aup6Kil5p2757SQ76WSXCIsNSxcIuiDve+lmO+lmeWwvOazpeWMv+a6uuWkmuiMtlwiXSxbXCJkM2ExXCIsXCLkuLnkurbkvYbllq7lnJjlo4flvZbmlrfml6bmqoDmrrXmuY3nn63nq6/nsJ7nt57om4voopLphLLpjZvmkrvmvr7njbrnlrjpgZTllZblnY3mhrrmk5Tmm4fmt6HmuZvmva3mvrnnl7DogYPohr3olYHopoPoq4forZrpjJ/mspPnlZPnrZTouI/pgZ3llJDloILloZjluaLmiIfmkp7mo6Dnlbbns5bonrPpu6jku6Plnojlna7lpKflsI3lsrHluLblvoXmiLTmk6HnjrPoh7rooovosrjpmorpu5vlroXlvrfmgrPlgJLliIDliLDlnJbloLXloZflsI7lsaDls7bltovluqblvpLmgrzmjJHmjonmkJfmoYNcIl0sW1wiZDRhMVwiLFwi5qO55quC5reY5rih5ruU5r+k54e+55uc552556ax56i76JCE6Kap6LOt6Lez6LmI6YCD6YCU6YGT6YO96Y2N6Zm26Z+c5q+S54CG54mY54qi542o552j56a/56+k57qb6K6A5aKp5oOH5pWm5pe95pq+5rKM54Se54eJ6LGa6aCT5Lmt56qB5Lud5Yas5YeN5YuV5ZCM5oan5p2x5qGQ5qOf5rSe5r2855a8556z56ul6IO06JGj6YqF5YWc5paX5p2c5p6T55eY56uH6I2z76Wa6LGG6YCX6aCt5bGv6IeA6Iqa6YGB6YGv6YiN5b6X5bad5qmZ54eI55m7562J6Jek6KyE6YSn6aiw5ZaH5oe276Wb55mp576FXCJdLFtcImQ1YTFcIixcIuiYv+ieuuijuOmCj++lnOa0m+eDmeePnue1oeiQve+lnemFqumnse+lnuS6guWNteashOaskueAvueIm+iYrem4nuWJjOi+o+W1kOaTpeaUrOaslua/q+exg+e6nOiXjeilpOimveaLieiHmOign+W7iuacl+a1queLvOeQheeRr+iegumDnuS+huW0jeW+oOiQiuWGt+aOoOeVpeS6ruWAhuWFqeWHieaigeaokeeyrueyseezp+iJr+irkui8m+mHj+S+tuWEt+WLteWRguW7rOaFruaIvuaXhearmua/vuekquiXnOigo+mWrempoumpqum6l+m7juWKm+abhuatt+eAneekq+i9oumdguaGkOaIgOaUo+a8o1wiXSxbXCJkNmExXCIsXCLnhYnnkonnt7Toga/ok67ovKbpgKPpjYrlhr3liJfliqPmtIzng4joo4Llu4nmloLmrq7mv4LnsL7njbXku6TkvLblm7nvpZ/lsrrltrrmgJznjrLnrK3nvprnv47ogYbpgJ7piLTpm7bpnYjpoJjpvaHkvovmvqfnpq7phrTpmrfli57vpaDmkojmk4Tmq5PmvZ7ngJjniJDnm6fogIHomIbomZzot6/ovIXpnLLpra/pt7rpubXnooznpb/ntqDoj4npjITpub/pupPoq5blo5/lvITmnKfngKfnk4/nsaDogb7lhKHngKjniaLno4ros4Los5ros7Tpm7fkuoblg5rlr67lu5bmlpnnh47nmYLnnq3ogYrok7xcIl0sW1wiZDdhMVwiLFwi6YG86ayn6b6N5aOY5amB5bGi5qiT5rea5ryP55i757Sv57i36JSe6KS46Y+k6ZmL5YqJ5peS5p+z5qa05rWB5rqc54CP55CJ55Gg55WZ55ik56Gr6Kys6aGe5YWt5oiu6Zm45L6W5YCr5bSZ5req57a46Lyq5b6L5oWE5qCX76Wh6ZqG5YuS6IKL5Yec5YeM5qWe56ic57a+6I+x6Zm15L+a5Yip5Y6Y5ZCP5ZSO5bGl5oKn5p2O5qKo5rWs54qB54u455CG55KD76Wi55ei57Gs572557646I6J6KOP6KOh6YeM6YeQ6Zui6a+J5ZCd5r2+54eQ55KY6Je66Lqq6Zqj6bGX6bqf5p6X5reL55Cz6Ieo6ZyW56CsXCJdLFtcImQ4YTFcIixcIueri+esoOeykuaRqeeRqueXsueivOejqOmmrOmtlOm6u+WvnuW5lea8oOiGnOiOq+mCiOS4h+WNjeWoqeW3kuW9juaFouaMveaZqeabvOa7v+a8q+eBo+eenuiQrOiUk+igu+i8k+mlhemwu+WUnOaKueacq+ayq+iMieilqumduuS6oeWmhOW/mOW/meacm+e2sue9lOiKkuiMq+iOvei8numCmeWfi+WmueWqkuWvkOaYp+aemuaiheavj+eFpOe9teiyt+izo+mCgemtheiEiOiyiumZjOmpgOm6peWtn+awk+eMm+ebsuebn+iQjOWGquimk+WFjeWGleWLieajieaylOechOecoOe2v+e3rOmdoum6tea7hVwiXSxbXCJkOWExXCIsXCLolJHlhqXlkI3lkb3mmI7mmp3mpKfmup/nmr/nnpHojJfok4Lonp/phanpipjps7ToooLkvq7lhpLli5/lp4bluL3mhZXmkbjmkbnmmq7mn5DmqKHmr43mr5vniZ/niaHnkYHnnLjnn5vogJfoirzojIXorIDorKjosozmnKjmspDniafnm67nnabnqYbptqnmrb/mspLlpKLmnKbokpnlja/lopPlppnlu5/mj4/mmLTmnbPmuLrnjKvnq5foi5fpjKjli5nlt6vmhq7mh4vmiIrmi4fmkqvml6DmpZnmrabmr4vnhKHnj7fnlZ3nuYboiJ7ojILolaroqqPosr/pnKfptaHloqjpu5jlgJHliI7lkLvllY/mlodcIl0sW1wiZGFhMVwiLFwi5rG257SK57SL6IGe6JqK6ZaA6Zuv5Yu/5rKV54mp5ZGz5aqa5bC+5bWL5b2M5b6u5pyq5qK25qWj5ri85rmE55yJ57Gz576O6JaH6KyO6L+36Z2h6bu05bK35oK25oSN5oar5pWP5pe75pe85rCR5rOv546f54+J57eh6ZaU5a+G6Jyc6KyQ5Ymd5Y2a5ouN5pCP5pKy5py05qi45rOK54+A55Ke566U57KV57ib6IaK6Ii26JaE6L+r6Zu56aeB5Ly05Y2K5Y+N5Y+b5ouM5pCs5pSA5paR5qeD5rOu5r2Y54+t55WU55ii55uk55u856OQ56O756Ss57WG6Iis6J+g6L+U6aCS6aOv5YuD5ouU5pKl5rik5r2RXCJdLFtcImRiYTFcIixcIueZvOi3i+mGsemJoumrrumtg+WAo+WCjeWdiuWmqOWwqOW5h+W9t+aIv+aUvuaWueaXgeaYieaei+amnOa7guejhee0oeiCquiGgOiIq+iKs+iSoeiajOioquisl+mCpumYsum+kOWAjeS/s++lo+WfueW+mOaLnOaOkuadr+a5g+eEmeebg+iDjOiDmuijtOijteikmeizoOi8qemFjemZquS8r+S9sOW4m+afj+agoueZveeZvumthOW5oeaoiueFqeeHlOeVqu+lpOe5geiVg+iXqemjnOS8kOetj+e9sOmWpeWHoeW4huaiteawvuaxjuazm+eKr+evhOiMg+azleeQuuWDu+WKiOWjgeaTmOaql+eSp+eZllwiXSxbXCJkY2ExXCIsXCLnoqfomJfpl6LpnLnvpaXljZ7lvIHororovqjovq/pgorliKXnnqXpsYnpvIjkuJnlgILlhbXlsZvlubfmmJ7mmLrmn4Tmo4XngrPnlIHnl4Xnp4nnq53ovKfppKDpqIjkv53loKHloLHlr7bmma7mraXmtJHmubrmvb3nj6TnlKvoj6noo5zopJPorZzovJTkvI/lg5XljJDljZzlrpPlvqnmnI3npo/ohbnojK/olJTopIfopobovLnovLvppqXpsJLmnKzkubbkv7jlpYnlsIHls6/ls7Dmjafmo5Lng73nhqLnkKvnuKvok6zonILpgKLpi5Lps7PkuI3ku5jkv6/lgoXliZblia/lkKblkpDln6DlpKvlqaZcIl0sW1wiZGRhMVwiLFwi5a2a5a215a+M5bqc76Wm5om25pW35pan5rWu5rql54i256ym57C/57y26IWQ6IWR6Iaa6ImA6IqZ6I6p6KiD6LKg6LOm6LO76LW06La66YOo6Yec6Zic6ZmE6aeZ6bOn5YyX5YiG5ZCp5Zm05aKz5aWU5aWu5b+/5oak5omu5piQ5rG+54Sa55uG57KJ57Oe57Sb6Iqs6LOB6Zuw76Wn5L2b5byX5b2/5ouC5bSp5pyL5qOa56G857mD6bWs5LiV5YKZ5YyV5Yyq5Y2R5aaD5ami5bqH5oKy5oaK5omJ5om55paQ5p6H5qan5q+U5q+W5q+X5q+Y5rK476Wo55C155e656CS56KR56eV56eY57KD57eL57+h6IKlXCJdLFtcImRlYTFcIixcIuiEvuiHguiPsuicmuijqOiqueitrOiyu+mEmemdnumjm+m8u+WarOWsquW9rOaWjOaqs+aur+a1nOa/seeAleeJneeOreiyp+izk+mgu+aGkeawt+iBmOmogeS5jeS6i+S6m+S7leS8uuS8vOS9v+S/n+WDv+WPsuWPuOWUhuWXo+Wbm+Wjq+WlouWokeWvq+WvuuWwhOW3s+W4q+W+meaAneaNqOaWnOaWr+aftuafu+aireatu+aymeazl+a4o+eAieeNheegguekvuelgOeloOengeevqee0l+e1suiChuiIjeiOjuiTkeibh+ijn+ipkOipnuisneiznOi1pui+remCqumjvOmnn+m6neWJiu+lqeaclO+lqlwiXSxbXCJkZmExXCIsXCLlgpjliKrlsbHmlaPmsZXnj4rnlKPnlp3nrpfokpzphbjpnLDkubfmkpLmrrrnhZ7olqnkuInvpavmnYnmo67muJfoip/olJjooavmj7fmvoHpiJLpoq/kuIrlgrflg4/lhJ/llYbllqrlmJflrYDlsJnls6DluLjluorluqDlu4Lmg7PmoZHmqaHmuZjniL3niYDni4Dnm7jnpaXnrrHnv5Too7Pop7ToqbPosaHos57pnJzloZ7nkr3os73ll4fvpaznqaHntKLoibLnibLnlJ/nlKXvpa3nrJnlooXlo7vltrzluo/lurblvpDmgZXmipLmjb/mlY3mmpHmm5nmm7jmoJbmo7LnioDnkZ7nra7nta7nt5bnvbJcIl0sW1wiZTBhMVwiLFwi6IOl6IiS6Jav6KW/6KqT6YCd6Yuk6buN6byg5aSV5aWt5bit5oOc5piU5pmz5p6Q5rGQ5reF5r2f55+z56Kp6JOG6YeL6Yyr5LuZ5YOK5YWI5ZaE5ayL5a6j5omH5pW+5peL5riy54W955CB55GE55KH55K/55ms56aq57ea57mV576o6IW66Iaz6Ii56Jia6J+s6Km16Lej6YG46YqR6ZCl6aWN6a6u5Y2o5bGR5qWU5rOE5rSp5rir6IiM6Jab6KS76Kit6Kqq6Zuq6b2n5Ymh5pq55q6y57qW6J++6LSN6ZaD6Zmd5pSd5raJ54eu76Wu5Z+O5aeT5a6s5oCn5oO65oiQ5pif5pmf54yp54+555ub55yB562sXCJdLFtcImUxYTFcIixcIuiBluiBsuiFpeiqoOmGkuS4luWLouatsua0l+eoheesuee0sO+lr+iysOWPrOWYr+WhkeWuteWwj+WwkeW3ouaJgOaOg+aQlOaYreais+ayvOa2iOa6r+eAn+eCpOeHkueUpueWj+eWjueYmeeskeevoOewq+e0oOe0ueiUrOiVreiYh+iotOmAjemBoemCtemKt+mftumot+S/l+WxrOadn+a2keeyn+e6jOislui0lumAn+Wtq+W3veaQjeiTgOmBnOmjoeeOh+Wui+aCmuadvua3nuion+iqpumAgemgjOWIt++lsOeBkeeijumOluihsOmHl+S/ruWPl+WXveWbmuWeguWjveWrguWuiOWyq+WzgOW4peaEgVwiXSxbXCJlMmExXCIsXCLmiI3miYvmjojmkJzmlLbmlbjmqLnmrormsLTmtJnmvLHnh6fni6nnjbjnkIfnkrLnmKbnnaHnp4DnqZfnq6rnsrnnto/ntqznuaHnvp7ohKnojLHokpDok5rol6roopboqrDorpDovLjpgYLpgoPphazpipbpirnpmovpmqfpmqjpm5bpnIDpoIjpppbpq5PprJrlj5Tlob7lpJnlrbDlrr/mt5HmvZrnhp/nkKHnkrnogoXoj73lt6HlvoflvqrmgYLml6zmoJLmpa/mqZPmronmtLXmt7Pnj6Pnm77nnqznrY3ntJTohKPoiJzojYDok7TolaPoqaLoq4TphofpjJ7poIbpprTmiIzooZPov7DpiaXltIfltKdcIl0sW1wiZTNhMVwiLFwi5bWp55Gf6Iad6J2o5r+V5ou+57+S6KS26KWy5Lie5LmY5YOn5Yud5Y2H5om/5piH57mp6KCF6Zme5L6N5YyZ5Zi25aeL5aqk5bC45bGO5bGN5biC5byR5oGD5pa95piv5pmC5p6+5p+054yc55+i56S657+F6JKU6JON6KaW6Kmm6Kmp6Kuh6LGV6LG65Z+05a+U5byP5oGv5out5qSN5q6W5rmc54aE56+S6J2V6K2Y6Lu+6aOf6aO+5Ly45L6B5L+h5ZG75aig5a645oS85paw5pmo54e855Sz56We57Sz6IWO6Iej6I6Y6Jaq6JeO6JyD6KiK6Lqr6L6b76Wx6L+F5aSx5a6k5a+m5oKJ5a+p5bCL5b+D5rKBXCJdLFtcImU0YTFcIixcIu+lsua3seeAi+eUmuiKr+irtuS7gOWNge+ls+mbmeawj+S6nuS/hOWFkuWVnuWopeWzqOaIkeeJmeiKveiOquibvuihmeionemYv+mbhemkk+m0iem1neWgiuWys+W2veW5hOaDoeaEleaPoeaogua4pemEgumNlOmhjumwkOm9t+WuieWyuOaMieaZj+ahiOecvOmbgemejemhlOmun+aWoeisgei7i+mWvOWUteWyqeW3luW6teaal+eZjOiPtOmXh+Wjk+aKvOeLjum0qOS7sOWkruaAj+aYu+aug+enp+m0puWOk+WTgOWfg+W0luaEm+ablua2r+eijeiJvumamOmdhOWOhOaJvOaOlua2sue4iuiFi+mhjVwiXSxbXCJlNWExXCIsXCLmq7vnvYzptq/puJrkuZ/lgLvlhrblpJzmg7nmj7bmpLDniLrogLbvpbTph47lvLHvpbXvpbbntIToi6Xoka/okrvol6Xouo3vpbfkva/vpbjvpbnlo6TlrYPmgZnmj5rmlJjmla3mmpjvpbrmpYrmqKPmtIvngIHnhaznl5LnmI3nprPnqbDvpbvnvorvpbzopYTvpb3orpPph4Dpmb3vpb7ppIrlnITlvqHmlrzmvIHnmIDnpqboqp7ppq3prZrpvazlhITmhrbmipHmqo3oh4blgYPloLDlvabnhInoqIDoq7rlrbzomJbkv7rlhLzlmrTlpYTmjqnmt7nltqrmpa3lhobkuojkvZnvpb/vpoDvpoHlpoLvpoJcIl0sW1wiZTZhMVwiLFwi76aD5q2f5rGd76aE55K156SW76aF6IiH6ImF6Iy56Ly/6L2d76aG6aSY76aH76aI76aJ5Lqm76aK5Z+f5b255piT76aL76aM55ar57m56K2v76aN6YCG6amb5Zql5aCn5ae45aif5a6076aO5bu276aP76aQ5o2Q5oy776aR5qS95rKH5rK/5raO5raT5re15ryU76aS54Of54S254WZ76aT54eD54eV76aU56GP56Gv76aV562157ej76aW57iv76aX6KGN6Luf76aY76aZ76aa6Ymb76ab6bO276ac76ad76ae5oKF5raF76af54ax76ag76ah6Zax5Y6t76ai76aj76ak5p+T76al54KO54Sw55Cw6Im26IuSXCJdLFtcImU3YTFcIixcIu+mpumWu+mrpem5veabhO+mp+eHgeiRie+mqO+mqeWhi++mqu+mq+W2uOW9se+mrOaYoOaajualueamruawuOazs+a4tua9gea/mueAm+eAr+eFkOeHn+eNsO+mreeRm++mrueTlOebiOepjue6k++mr++msOiLseipoOi/ju+msemNiO+msumcme+ms++mtOS5guWAqu+mteWIiOWPoeabs+axrea/iueMiuedv+epouiKruiXneiYgu+mtuijlOipo+itveixq++mt+mKs++muOmck+mgkOS6lOS8jeS/ieWCsuWNiOWQvuWQs+WXmuWhouWiuuWlp+Wom+WvpOaCn++mueaHiuaVluaXv+aZpOaip+axmua+s1wiXSxbXCJlOGExXCIsXCLng4/nhqznjZLnrb3onIjoqqTpsLLpvIflsYvmsoPnjYTnjonpiLrmuqvnkaXnmJ/nqannuJXomIrlhYDlo4Xmk4Hnk67nlJXnmbDnv4HpgpXpm43ppZTmuKbnk6bnqqnnqqroh6Xom5nonbjoqJvlqYnlrozlrpvmoqHmpIDmtaPnjqnnkJPnkKznopfnt6nnv6vohJjohZXojp7osYzpmK7poJHmm7DlvoDml7rmnonmsarnjovlgK3lqIPmrarnn67lpJbltazlt43njKXnlY/vprrvprvlg6Xlh7nloK/lpK3lppblp5rlr6Xvprzvpr3ltqLmi5fmkJbmkpPmk77vpr7mm5zvpr/mqYjvp4Dnh7/nkaTvp4FcIl0sW1wiZTlhMVwiLFwi56qI56qv57mH57me6ICA6IWw76eC6J+v6KaB6Kyg6YGZ76eD6YKA6aWS5oW+5qyy5rW057if6KSl6L6x5L+R5YKt5YaX5YuH5Z+H5aKJ5a655bq45oWC5qaV5raM5rmn5rq254aU55Gi55So55Ss6IGz6Iy46JOJ6LiK6Y6U6Y+e76eE5LqO5L2R5YG25YSq5Y+I5Y+L5Y+z5a6H5a+T5bCk5oSa5oaC5pe054mb546X55GA55uC56WQ56aR56a557SG57696IqL6JeV6Jme6L+C6YGH6YO16Yeq6ZqF6Zuo6Zup5YuW5b2n5pet5pix5qCv54Wc56i26YOB6aCK5LqR76eF5qmS5q6e5r6Q54aJ6ICY6Iq46JWTXCJdLFtcImVhYTFcIixcIumBi+malembsumfu+iUmumsseS6kOeGiumbhOWFg+WOn+WToeWck+WckuWeo+Wqm+WrhOWvg+aAqOaEv+aPtOayhea0uea5sua6kOeIsOeMv+eRl+iLkeiigei9hemBoO+nhumZoumhmOm0m+aciOi2iumJnuS9jeWBieWDnuWNseWcjeWnlOWogeWwieaFsOaakOa4reeIsueRi+e3r+iDg+iQjuiRpuiUv+idn+ihm+ikmOisgumBlemfi+mtj+S5s+S+keWEkuWFqu+nh+WUr+WWqeWtuuWupeW5vOW5veW6vuaCoOaDn+aEiOaEieaPhOaUuOacie+niOaflOafmu+niealoealouayuea0p++niua4uO+ni1wiXSxbXCJlYmExXCIsXCLmv6HnjLbnjLfvp4znkZznlLHvp43nmZLvp47vp4/ntq3oh77okLjoo5Xoqpjoq5voq63ouLDouYLpgYrpgL7pgbrphYnph4npja7vp5Dvp5HloInvp5Lmr5PogonogrLvp5Pvp5TlhYHlpavlsLnvp5Xvp5bmvaTnjqfog6TotIfvp5fpiJfplo/vp5jvp5nvp5rvp5vogb/miI7ngJzntajono3vp5zlnqDmganmhYfmrrfoqr7pioDpmrHkuZnlkJ/mt6volK3pmbDpn7Ppo67mj5bms6PpgpHlh53mh4nohrrpt7nkvp3lgJrlhIDlrpzmhI/mh7/mk6zmpIXmr4XnlpHnn6PnvqnoiaTolo/on7vooaPoqrxcIl0sW1wiZWNhMVwiLFwi6K2w6Yar5LqM5Lul5LyK76ed76ee5aS35aeo76ef5bey5byb5b2b5oCh76eg76eh76ei76ej54i+54+l76ek55Ww55eN76el56e776em6ICM6ICz6IKE6Iuh6I2R76en76eo6LK96LKz6YKH76ep76eq6aO06aSM76er76es54C355uK57+K57+M57+86Kya5Lq65LuB5YiD5Y2w76et5ZK95Zug5ae75a+F5byV5b+N5rmu76eu76ev57Wq6Iy176ew6JqT6KqN76ex6Z2t6Z2376ey76ez5LiA5L2a5L2+5aO55pel5rqi6YC46Y6w6aa55Lu75aOs5aaK5aeZ5oGB76e076e156iU76e26I2P6LOD5YWl5Y2EXCJdLFtcImVkYTFcIixcIu+nt++nuO+nueS7jeWJqeWtleiKv+S7lOWIuuWSqOWnieWnv+WtkOWtl+WtnOaBo+aFiOa7i+eCmeeFrueOhueTt+eWteejgee0q+iAheiHquiMqOiUl+iXieirruizh+mbjOS9nOWLuuWavOaWq+aYqOeBvOeCuOeItee2veiKjemFjOmbgOm1suWtseajp+aumOa9uuebnuWykeaaq+a9m+eutOewquigtumbnOS4iOS7l+WMoOWgtOWiu+Wjr+WlrOWwh+W4s+W6hOW8teaOjOaasuadluaon+aqo+asjOa8v+eJhu+nuueNkOeSi+eroOeyp+iFuOiHn+iHp+iOiuiRrOiUo+iWlOiXj+ijnei0k+mGrOmVt1wiXSxbXCJlZWExXCIsXCLpmpzlho3lk4nlnKjlrrDmiY3mnZDmoL3mopPmuL3mu5Pngb3nuKHoo4HosqHovInpvYvpvY7niK3nro/oq43pjJrkvYfkvY7lhLLlkoDlp5DlupXmirXmnbXmpa7mqJfmsq7muJrni5nnjKrnlr3nrrjntLXoi6foj7nokZfol7foqZvosq/ouofpgJnpgrjpm47pvZ/li6PlkIrlq6Hlr4LmkZjmlbXmu7Tni4Tvp7vnmoTnqY3nrJvnsY3nuL7nv5/ojbvorKvos4rotaTot6HouZ/ov6rov7npganpj5HkvYPkvbrlgrPlhajlhbjliY3liarloaHlobzlpaDlsIjlsZXlu5vmgpvmiLDmoJPmrr/msIjmvrFcIl0sW1wiZWZhMVwiLFwi54WO55Cg55Sw55S455WR55my562M566L566t56+G57qP6Kmu6Ly+6L2J6Yi/6YqT6Yyi6ZCr6Zu76aGa6aGr6aSe5YiH5oiq5oqY5rWZ55mk56uK56+A57W25Y2g5bK+5bqX5ry454K557KY6ZyR6a6O6bue5o6l5pG66J225LiB5LqV5Lqt5YGc5YG15ZGI5aeD5a6a5bmA5bqt5bu35b6B5oOF5oy65pS/5pW05peM5pm25pm45p++5qWo5qqJ5q2j5rGA5reA5reo5rif5rme54Ce54Kh546O54+955S6552b56KH56aO56iL56m957K+57aO6ImH6KiC6Kuq6LKe6YSt6YWK6YeY6Ymm6YuM6Yyg6ZyG6Z2WXCJdLFtcImYwYTFcIixcIumdnOmggum8juWItuWKkeWVvOWgpOW4neW8n+aCjOaPkOair+a/n+elreesrOiHjeiWuuijveiruOi5hOmGjemZpOmam+mcvemhjOm9iuS/juWFhuWHi+WKqeWYsuW8lOW9q+aOquaTjeaXqeaZgeabuuabueacneaineajl+anvea8lea9rueFp+eHpeeIqueSquecuuelluelmuenn+eooOeqleeyl+ezn+e1hOe5sOiCh+iXu+iapOiplOiqv+i2mei6gemAoOmBremHo+mYu+mblemzpeaXj+ewh+i2s+mPg+WtmOWwiuWNkuaLmeeMneWAp+Wul+W+nuaCsOaFq+ajlea3meeQrueorue1gue2nOe4seiFq1wiXSxbXCJmMWExXCIsXCLouKrouLXpjb7pkJjkvZDlnZDlt6bluqfmjKvnvarkuLvkvY/kvo/lgZrlp53og4Tlkarlkajll77lpY/lrpnlt57lu5rmmZ3mnLHmn7HmoKrms6jmtLLmuYrmvo3ngrfnj6DnlofnsYzntILntKzntqLoiJ/om5voqLvoqoXotbDouorovLPpgLHphY7phZLpkYTpp5Dnq7nnsqXkv4rlhIHlh4bln4jlr6/ls7vmmZnmqL3mtZrmupbmv6znhIznla/nq6PooKLpgKHpgbXpm4vpp7/ojIHkuK3ku7LooYbph43ljb3mq5vmpavmsYHokbrlop7mho7mm77mi6/ng53nlJHnl4fnuZLokrjorYnotIjkuYvlj6pcIl0sW1wiZjJhMVwiLFwi5ZKr5Zyw5Z2A5b+X5oyB5oyH5pGv5pSv5peo5pm65p6d5p6z5q2i5rGg5rKa5rys55+l56Cl56WJ56WX57SZ6IKi6ISC6Iez6Iqd6Iq36JyY6KqM76e86LSE6La+6YGy55u056iZ56i357mU6IG35ZSH5ZeU5aG15oyv5pCi5pmJ5pmL5qGt5qab5q6E5rSl5rqx54+N55Go55Kh55Wb55a555uh55ye556L56em57iJ57id6Ie76JSv6KKX6Ki66LOR6Lur6L6w6YCy6Y6t6Zmj6Zmz6ZyH5L6E5Y+x5aeq5auJ5biZ5qGO55OG55a+56ep56qS6Iaj6Jut6LOq6LeM6L+t5paf5pyV76e95Z+35r2X57ed6LyvXCJdLFtcImYzYTFcIixcIumPtumbhuW+teaHsua+hOS4lOS+mOWAn+WPieWXn+W1r+W3ruasoeatpOeji+eumu+nvui5iei7iumBruaNieaQvuedgOeqhOmMr+mRv+m9quaSsOa+r+eHpueSqOeTmuerhOewkue6gueysue6mOiumui0iumRvemkkOmljOWIueWvn+aTpuacree0ruWDreWPg+WhueaFmOaFmeaHuuaWrOermeiukuiuluWAieWAoeWJteWUseWovOW7oOW9sOaEtOaVnuaYjOaYtuaaouanjea7hOa8sueMlueYoeeqk+iEueiJmeiPluiSvOWCteWfsOWvgOWvqOW9qeaOoeegpue2teiPnOiUoemHh+mHteWGiuafteetllwiXSxbXCJmNGExXCIsXCLosqzlh4Tlprvmgr3omZXlgJzvp7/liZTlsLrmhb3miJrmi5Pmk7LmlqXmu4znmKDohIrouaDpmZ/pmrvku5/ljYPllpjlpKnlt53mk4Xms4nmt7rnjpTnqb/oiJvolqbos6TouJDpgbfph6fpl6HpmKHpn4blh7jlk7LlloblvrnmkqTmvojntrTovJ/ovY3pkLXlg4nlsJbmsr7mt7vnlJvnnrvnsL3nsaToqbnoq4LloJ7lpr7luJbmjbfniZLnlornnavoq5zosrzovJLlu7PmmbTmt7jogb3oj4Hoq4vpnZHpr5bvqIDliYPmm7/mtpXmu6/nt6Doq6bpgK7pgZ7pq5TliJ3lib/lk6jmhpTmioTmi5vmoqJcIl0sW1wiZjVhMVwiLFwi5qSS5qWa5qi154KS54Sm56Gd56SB56SO56eS56iN6IKW6Im46IuV6I2J6JWJ6LKC6LaF6YWi6YaL6Yau5L+D5ZuR54et55+X6JyA6Ke45a+45b+W5p2R6YKo5Y+i5aGa5a+15oKk5oaB5pGg57i96IGw6JSl6YqD5pKu5YKs5bSU5pyA5aKc5oq95o6o5qSO5qW45qie5rmr55q656eL6Iq76JCp6KuP6Lao6L+96YSS6YWL6Yac6YyQ6YyY6Y6a6Zub6ai26bCN5LiR55Wc56Wd56u6562R56+J57iu6JOE6LmZ6Lm06Lu46YCQ5pil5qS/55GD5Ye65pyu6buc5YWF5b+g5rKW6J+y6KGd6KG35oK06Ia16JCDXCJdLFtcImY2YTFcIixcIui0heWPluWQueWYtOWotuWwseeCiue/oOiBmuiEhuiHrei2o+mGiempn+m3suWBtOS7hOWOoOaDu+a4rOWxpOS+iOWApOWXpOWzmeW5n+aBpeailOayu+a3hOeGvueXlOeXtOeZoeeomuepiee3h+e3u+e9ruiHtOiaqei8nOmbiemms+m9kuWJh+WLhemjreimquS4g+afkua8huS+teWvouaeleayiOa1uOeQm+egp+mHnemNvOifhOenpOeoseW/q+S7luWSpOWUvuWiruWmpeaDsOaJk+aLluactualleiItemZgOmmsemnneWArOWNk+WVhOWdvO+ogeaJmO+oguaTouaZq+afnea/gea/r+eQoueQuOiol1wiXSxbXCJmN2ExXCIsXCLpkLjlkZHlmIblnablvYjmhprmrY7ngZjngq3ntrvoqpXlparohKvmjqLnnIjogL3osqrloZTmkK3mprvlrpXluJHmua/vqIPolanlhYzlj7DlpKrmgKDmhYvmrobmsbDms7DnrJ7og47oi5Tot4bpgrDporHvqITmk4fmvqTmkpHmlITlhY7lkJDlnJ/oqI7mhZ/mobbvqIXnl5vnrZLntbHpgJrloIbmp4zohb/opKrpgIDpoLnlgbjlpZflpqzmipXpgI/prKrmhZ3nibnpl5blnaHlqYblt7Tmiormkq3mk7rmnbfms6LmtL7niKznkLbnoLTnvbfoiq3ot5vpoJfliKTlnYLmnb/niYjnk6PosqnovqbpiJFcIl0sW1wiZjhhMVwiLFwi6Ziq5YWr5Y+t5o2M5L2p5ZSE5oKW5pWX5rKb5rW/54mM54u956iX6KaH6LKd5b2t5r6O54O56Iao5oSO5L6/5YGP5omB54mH56+H57eo57+p6YGN6Z6t6aiZ6LK25Z2q5bmz5p6w6JCN6KmV5ZCg5ayW5bmj5bui5byK5paD6IK66JS96ZaJ6Zmb5L2I5YyF5YyN5YyP5ZKG5ZO65ZyD5biD5oCW5oqb5oqx5o2V76iG5rOh5rWm55ax56Cy6IOe6ISv6Iue6JGh6JKy6KKN6KSS6YCL6Yuq6aO96a6R5bmF5pq05pud54CR54iG76iH5L+15Ym95b2q5oWT5p2T5qiZ5ryC55Oi56Wo6KGo6LG56aOH6aOE6amDXCJdLFtcImY5YTFcIixcIuWTgeeon+alk+irt+ixiumiqOmmruW9vOaKq+eWsuearuiiq+mBv+mZguWMueW8vOW/heazjOePjOeVoueWi+ethuiLvummneS5j+mAvOS4i+S9leWOpuWkj+W7iOaYsOays+eRleiNt+idpuizgOmBkOmcnumwleWjkeWtuOiZkOislOm2tOWvkuaBqOaCjeaXseaxl+a8oua+o+eAmue9lee/sOmWkemWkumZkOmfk+WJsui9hOWHveWQq+WSuOWVo+WWiuaqu+a2tee3mOiJpumKnOmZt+m5ueWQiOWTiOebkuibpOmWpOmXlOmZnOS6ouS8ieWnruWrpuW3t+aBkuaKl+adreahgeayhua4r+e8uOiCm+iIqlwiXSxbXCJmYWExXCIsXCLvqIjvqInpoIXkuqXlgZXlkrPlnpPlpZrlranlrrPmh4jmpbfmtbfngKPon7nop6PoqbLoq6fpgoLpp63pqrjlir7moLjlgJblubjmnY/ojYfooYzkuqvlkJHlmq7nj6bphJXpn7/ppInppZfpppnlmZPlop/omZvoqLHmhrLmq7bnjbvou5LmrYfpmqrpqZflpZXniIDotavpnankv5Tls7TlvKbmh7jmmZvms6vngqvnjoTnjrnnj77nnKnnnY3ntYPntaLnuKPoiLfooZLvqIros6LpiYnpoa/lrZHnqbTooYDpoIHlq4zkv6DljZTlpL7ls73mjL7mtbnni7nohIXohIfojqLpi4/poLDkuqjlhYTliJHlnotcIl0sW1wiZmJhMVwiLFwi5b2i5rOC5ruO54CF54GQ54Kv54aS54+p55Gp6I2K6J6i6KGh6YCI6YKi6Y6j6aao5YWu5b2X5oOg5oWn5pqz6JWZ6LmK6Yav6Z6L5LmO5LqS5ZG85aOV5aO65aW95bK15byn5oi25omI5piK5pmn5q+r5rWp5reP5rmW5ru45r6U5r+g5r+p54Gd54uQ55Cl55Ga55Og55qT56Wc57OK57ie6IOh6Iqm6JGr6JK/6JmO6Jmf6J206K236LGq6Y6s6aCA6aGl5oOR5oiW6YW35ama5piP5re35ri+55C/6a2C5b+95oOa56yP5ZOE5byY5rGe5rOT5rSq54OY57SF6Jm56KiM6bS75YyW5ZKM5ayF5qi654Gr55W1XCJdLFtcImZjYTFcIixcIuemjeemvuiKseiPr+ipseitgeiyqOmdtO+oi+aTtOaUq+eiuueiu+epq+S4uOWWmuWlkOWupuW5u+aCo+aPm+atoeaZpeahk+a4meeFpeeSsOe0iOmChOmpqemwpea0u+a7keeMvuixgemXiuWHsOW5jOW+qOaBjeaDtuaEsOaFjOaZg+aZhOampeazgea5n+a7iea9oueFjOeSnOeah+evgeewp+iNkuidl+mBkemajem7g+WMr+WbnuW7u+W+iuaBouaClOaHt+aZpuacg+aqnOa3rua+rueBsOeNque5quiGvuiMtOiblOiqqOizhOWKg+eNsuWuluapq+mQhOWTruWahuWtneaViOaWheabieain+a2jea3hlwiXSxbXCJmZGExXCIsXCLniLvogrTphbXpqY3kvq/lgJnljprlkI7lkLzllonll4XluL/lvozmnL3nhabnj53pgIXli5vli7PloaTlo47nhITnho/nh7volrDoqJPmmojolqjllqfmmoTnhYrokLHljYnllpnmr4HlvZnlvr3mj67mmonnhYfoq7HovJ3pur7kvJHmkLrng4vnlabomafmgaTorY7pt7jlhYflh7bljIjmtLbog7jpu5HmmJXmrKPngpjnl5XlkIPlsbnntIfoqJbmrKDmrL3mrYblkLjmgbDmtL3nv5XoiIjlg5blh57llpzlmavlm43lp6zlrInluIzmhpnmhpjmiLHmmZ7mm6bnhpnnhrnnhrrniqfnpqfnqIDnvrLoqbBcIl1dXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9jcDk0OS5qc29uXG4vLyBtb2R1bGUgaWQgPSAxNDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBbW1wiODc0MFwiLFwi5I+w5LCy5JiD5Jam5JW48KeJp+S1t+SWs/CnsrHks6Lwp7OF466V5Jy25J2E5LGH5LGA8KSKv/CjmJfwp42S8Ka6i/Cng5LksZfwqo2R5J2P5Jea5LKF8KexrOS0h+SqpOSaofCmrKPniKXwpamU8KGpo/CjuIbwo72h5pmN5Zu7XCJdLFtcIjg3NjdcIixcIue2leWknfCorrnjt7TpnLTwp6+v5a+b8KG1nuWqpOOYpfCpurDlq5Hlrrfls7zmna7olpPwqaWF55Gh55Kd46G18KG1k/Cjmp7wpoCh47usXCJdLFtcIjg3YTFcIixcIvClo57jq7Xnq7zpvpfwpIWh8KikjfCjh6rwoKqK8KOJnuSMiuiShOm+lumQr+SksOiYk+WilumdiumImOenkOeosuaZoOaoqeiineeRjOevheaegueorOWJj+mBhuOTpuePhPCltrnnk4bpv4flnrPkpK/lkYzkhLHwo5qO5aCY56my8Ketpeiuj+SarvCmuojkhoHwpbaZ566u8KKSvOm/iPCik4HwopOJ8KKTjOm/ieiUhPCjlrvkgrTpv4rkk6Hwqre/5ouB54Gu6b+LXCJdLFtcIjg4NDBcIixcIuOHgFwiLDQsXCLwoISM44eF8KCDkfCgg43jh4bjh4fwoIOL8KG/qOOHiPCgg4rjh4njh4rjh4vjh4zwoISO44eN44eOxIDDgceNw4DEksOJxJrDiMWMw5PHkcOS4L+/w4rMhOG6vuC/v8OKzIzhu4DDisSBw6HHjsOgyZHEk8OpxJvDqMSrw63HkMOsxY3Ds8eSw7LFq8O6x5TDuceWx5jHmlwiXSxbXCI4OGExXCIsXCLHnMO84L+/w6rMhOG6v+C/v8OqzIzhu4HDqsmh4o+a4o+bXCJdLFtcIjg5NDBcIixcIvCqjqnwoYWFXCJdLFtcIjg5NDNcIixcIuaUilwiXSxbXCI4OTQ2XCIsXCLkuL3mu53ptY7ph59cIl0sW1wiODk0Y1wiLFwi8KecteaSkeS8muS8qOS+qOWFluWFtOWGnOWHpOWKoeWKqOWMu+WNjuWPkeWPmOWbouWjsOWkhOWkh+WksuWktOWtpuWunuWun+WymuW6huaAu+aWieafvuaghOahpea1jueCvOeUtee6pOe6rOe6uue7h+e7j+e7n+e8hue8t+iJuuiLj+iNr+inhuiuvuivoui9pui9p+i9rlwiXSxbXCI4OWExXCIsXCLnkJHns7znt43mpYbnq4nliKdcIl0sW1wiODlhYlwiLFwi6YaM56K46YWe6IK8XCJdLFtcIjg5YjBcIixcIui0i+iDtvCgp6dcIl0sW1wiODliNVwiLFwi6IKf6buH5LON6beJ6biM5LC+8Km3tvCngI7puIrwqoSz45eBXCJdLFtcIjg5YzFcIixcIua6muiIvueUmVwiXSxbXCI4OWM1XCIsXCLkpJHpqazpqo/pvpnnpofwqJGs8KG3ivCgl5Dwoqum5Lik5LqB5LqA5LqH5Lq/5Lur5Ly345GM5L6947mI5YCD5YKI45G945KT45Kl5YaG5aSF5Yeb5Ye85YiF5LqJ5Ym55YqQ5Yyn45eH5Y6p45WR5Y6w45WT5Y+C5ZCj45Wt45Wy45qB5ZKT5ZKj5ZK05ZK55ZOQ5ZOv5ZSY5ZSj5ZSo45aY5ZS/45al45a/5ZeX45eFXCJdLFtcIjhhNDBcIixcIvCntoTllKVcIl0sW1wiOGE0M1wiLFwi8KCxgvCgtJXwpYSr5ZaQ8KKzhuOnrPCgjYHouYbwpLa48KmTpeSBk/Cogr7nnbrworC446i05J+V8KiFnfCmp7LwpLeq5pOd8KC1vPCgvrTwoLOV8KGDtOaSjei5vvCgupbwoLCL8KC9pPCisqnwqImW8KSTk1wiXSxbXCI4YTY0XCIsXCLwoLWG8KmpjfCog6nkn7TwpLqn8KKzgumqsuOpp/Cpl7Tjv63jlIbwpYuH8KmflPCno4jworWE6bWu6aCVXCJdLFtcIjhhNzZcIixcIuSPmfCmgqXmkrTlk6PworWM8KKvivChgbfjp7vwoYGvXCJdLFtcIjhhYTFcIixcIvCmm5rwppyW8KemoOaTqvClgZLwoLGD6Lmo8KKGofCorYzwoJyxXCJdLFtcIjhhYWNcIixcIuSgi/Cghqnjv7rlobPworaNXCJdLFtcIjhhYjJcIixcIvCkl4jwoJO88KaCl/CgvYzwoLaW5ZW55IK75I66XCJdLFtcIjhhYmJcIixcIuSqtPCiqabwoYKd6Iaq6aO18KC2nOaNueOnvvCinbXot4DlmqHmkbzjuYNcIl0sW1wiOGFjOVwiLFwi8KqYgfCguInwoquP8KKziVwiXSxbXCI4YWNlXCIsXCLwoYOI8KOnguOmkuOohvCoipvjlbjwpbmJ8KKDh+WZkvCgvLHworKy8KmcoOOSvOawvfCkuLtcIl0sW1wiOGFkZlwiLFwi8KeVtPCiuovwooiI8KqZm/Cos43woLm68KCwtPCmoJznvpPwoYOP8KKgg/CipLnjl7vwpYej8KC6jPCgvo3woLqq476T8KC8sPCgtYfwoYWP8KC5jFwiXSxbXCI4YWY2XCIsXCLwoLqr8KCuqfCgtYjwoYOA8KGEveO/ufCimpbmkLLwoL6tXCJdLFtcIjhiNDBcIixcIvCjj7Twp5i58KKvjvCgtb7woLW/8KKxkfCisZXjqJjwoLqY8KGDh/CgvK7wqpiy8KatkPCos5LwqLaZ8KiziumWquWTjOiLhOWWuVwiXSxbXCI4YjU1XCIsXCLwqbuD6bCm6aq28KednvCit67nhYDoha3og6zlsJzwppWy6IS0456X5Y2f8KiCvemGtvCgu7rwoLiP8KC5t/Cgu7vjl53wpLer45iJ8KCzluWar/CinrXwoYOJ8KC4kPCgubjwoYG48KGFiPCoiIfwoZGV8KC5ufCkuZDworak5amU8KGAnfChgJ7woYO18KGDtuWenPCguJFcIl0sW1wiOGJhMVwiLFwi8KealPCoi43woL618KC5u/Clhb7jnIPwoL628KGGgPCli5jwqoq98KSnmvChoLrwpIW38KiJvOWimeWJqOOYmvClnL3nrrLlrajkoIDkrKzpvKfkp6fpsJ/pro3wpa208KOEveWXu+OXsuWaieS4qOWkgvChr4Hwr6G46Z2R8KCChuS5m+S6u+OUvuWwo+W9keW/hOOjuuaJjOaUteatuuawteawuueBrOeIq+S4rOeKrfCko6nnvZLnpLvns7nnvZPwpomq45OBXCJdLFtcIjhiZGVcIixcIvCmjYvogILogoDwppiS8KalkeWNneihpOingfCnorLorqDotJ3pkoXplbjplb/pl6jwqLiP6Z+m6aG16aOO6aOe6aWj8KmgkOmxvOm4n+m7hOatr++kh+S4t/CggofpmJ3miLfpkqJcIl0sW1wiOGM0MFwiLFwi5YC75re+8Kmxs+m+puO3ieiij/CkhY7ngbfls7XkrKDwpYeN45WZ8KW0sOaEovCoqLLovqfph7bnhpHmnJnnjrrwo4qB8KqEh+Oyi/ChpoDkrJDno6TnkILlhq7wqJyP5ICJ5qmj8KqKuuSIo+iYj/Cgqa/nqKrwqaWH8KirqumdleeBjeWMpPCigb7pj7Tnm5nwqKej6b6n55+d5Lqj5L+w5YK85Liv5LyX6b6o5ZC057aL5aKS5aOQ8KG2tuW6kuW6meW/gvCinJLmlotcIl0sW1wiOGNhMVwiLFwi8KOPueakmeapg/CjsaPms79cIl0sW1wiOGNhN1wiLFwi54iA8KSUheeOjOO7m/CkqJPlrJXnkrnoroPwpbKk8KWaleeqk+evrOezg+e5rOiLuOiWl+m+qeiikOm+qui6uem+q+i/j+iVn+mnoOmIoem+rPCotrnwoZC/5IGx5Iqi5aiaXCJdLFtcIjhjYzlcIixcIumhqOadq+SJtuWcvVwiXSxbXCI4Y2NlXCIsXCLol5bwpKW76Iq/8KeEjeSygfCmtbTltbvwpqyV8Ka+vum+rem+ruWulum+r+abp+e5m+a5l+eniuO2iOSTg/CjiZbwop6W5I6a5JS2XCJdLFtcIjhjZTZcIixcIuWzlfCjrJroq7nlsbjjtJLwo5WR5bW46b6y54WX5JWY8KSDrPChuKPksbfjpbjjkYrwoIak8KaxgeirjOS+tPCgiLnlpr/ohazpoZbwqaO65by7XCJdLFtcIjhkNDBcIixcIvCgrp9cIl0sW1wiOGQ0MlwiLFwi8KKHgfCopa3khILkmrvwqYG547yH6b6z8KqGteSDuOOfluSbt/CmsYbkhbzwqJqy8KePv+SVreOjlPClkprklaHklJvktonksbvktbbkl6rjv4jwpKyP45mh5JOe5JK95Iet5bS+5bWI5bWW47e846CP5bak5ba546Cg46C45bmC5bq95byl5b6D46SI46SU46S/46WN5oOX5oS95bOl46aJ5oa35oa55oeP46a45ois5oqQ5oul5oyY46e45ZqxXCJdLFtcIjhkYTFcIixcIuOog+aPouaPu+aQh+aRmuOpi+aTgOW0leWYoem+n+Oql+aWhuOqveaXv+aZk+OrsuaakuOsouacluOtguaepOaggOOtmOahiuaihOOtsuOtseOtu+akiealg+eJnOalpOamn+amheOuvOanluOvneappeaptOapseaqguOvrOaqmeOvsuaqq+aqtearlOartuaugeavgeavquaxteayquOzi+a0gua0hua0pua2geOzr+a2pOa2sea4lea4mOa4qea6hvCop4Dmurvmu6Lmu5rpvb/mu6jmu6nmvKTmvLTjtYbwo72B5r6B5r6+47Wq47W154a35bKZ47aK54Cs47aR54GQ54GU54Gv54G/54KJ8KCMpeSPgeOXsfCgu5hcIl0sW1wiOGU0MFwiLFwi8KO7l+WevvCmu5PnhL7wpZ+g45mO5qai8KivqeWttOepifClo6HwqZOZ56ml56m98KWmrOequ+eqsOerguerg+eHkfCmko3kh4rnq5rnq53nq6rkh6/lkrLwpbCB56yL562V56yp8KWMjvCls77nrqLnra/ojpzwpa608Kaxv+evkOiQoeeukueuuPCltKDjtq3wpbGl6JKS56+657CG57C18KWzgeexhOeyg/CkooLnsqbmmb3wpJW457OJ57OH57Om57G057Oz57O157OOXCJdLFtcIjhlYTFcIixcIue5p+SUnfCmuYTntZ3wpruW55KN57aJ57ar54S157az57eS8KSBl/CmgKnnt6TjtJPnt7XwoZ+557el8KiNree4nfCmhKHwpoWa57mu57qS5Iyr6ZGs57in572A572B572H56S28KaLkOmnoee+l/CmjZHnvqPwoZmh8KCBqOSVnPCjnabklIPwqIy657+68KaSieiAheiAiOiAneiAqOiAr/CqgofwprOD6IC76IC86IGh8KKclOSmifCmmKbwo7ej8KabqOacpeiCp/CoqYjohIfohJrlorDwopu25rG/8KaSmPCkvrjmk6fwoZKK6IiY8KGhnuapk/CkqaXwpKqV5JG66Iip8KCsjfCmqZLwo7W+5L+58KGTveiTouiNovCmrIrwpKan8KOUsPChnbPwo7e46Iqq5qSb8K+mlOSHm1wiXSxbXCI4ZjQwXCIsXCLolYvoi5DojJrwoLiW8KGetOObgfCjhb3wo5Wa6Im76Iui6IyY8KO6i/CmtqPwpqyF8Kaul/Cjl47jtr/ojJ3ll6zojoXklIvwpral6I6s6I+B6I+T45G+8Ka7lOapl+iVmuOSlvCmuYLworuv6JGY8KWvpOiRseO3k+STpOaqp+iRivCjsrXnpZjokqjwpq6W8Ka5t/CmuYPok57okI/ojpHkkqDokpPok6TwpbKR5ImA8KWzgOSVg+iUtOWrsvCmupnklKfolbPklJbmnr/omJZcIl0sW1wiOGZhMVwiLFwi8KiYpfComLvol4Hwp4KI6JiC8KGWgvCng43wr6ay5JWq6Jio45mI8KGiouWPt/Cnjpromb7onbHwqoO46J+u8KKwp+ieseifmuigj+WZoeiZrOahluSYj+ihheihhvCnl6Dwo7a58KeXpOihnuiinOSZm+iitOiiteaPgeijheedt/CnnI/opofoporopqbopqnopqfoprzwqKil6Ken8KekpPCnqr3oqpznnpPph77oqpDwp6mZ56up8KesuvCjvo/knJPwp6y454W86KyM6Kyf8KWQsPCllaXorL/orYzorY3oqqnwpKm66K6Q6K6b6Kqv8KGbn+SYleihj+iym/CntZTwp7aP8K+nlOOcpfCntZPos5bwp7aY8Ke2vei0kui0g/ChpJDos5vngZzotJHwpLOJ47uQ6LW3XCJdLFtcIjkwNDBcIixcIui2qfCogILwoYCU8KSmiuOtvPCohrzwp4SM56un6Lqt6Lq26LuD6YuU6LyZ6Lyt8KiNpfCokJLovqXpjIPwqoqf8KCpkOi+s+SkqvCop57wqJS98KO2u+W7uPCjiaLov7nwqoCU8KiavPColIHwooyl46aA8Ka7l+mAt/ColLzwp6q+6YGh8KiVrPComIvpgqjwqJyT6YOE8KibpumCrumDvemFp+OrsOmGqemHhOeyrPCopLPwobqJ6YiO5rKf6YmB6Ymi8KWWuemKufCoq4bwo7Kb8KisjPCll5tcIl0sW1wiOTBhMVwiLFwi8KC0semMrOmNq/Coq6HwqK+r54KP5auD8KirovCoq6XkpaXpiYTwqK+s8KiwufCor7/pjbPpkZvourzploXplqbpkKbplqDmv7bkirnwopm68KibmPChibzwo7iu5Kef5rCc6Zm76ZqW5IWs6Zqj8Ka7leaHmumatuejtfCoq6Dpmr3lj4zkpqHwprK48KCJtPCmkJDwqYKv8KmDpfCkq5HwoaSV8KOMiumcseiZgumctuSoj+SUveSWhfCkq6nngbXlrYHpnJvpnZzwqYeV6Z2X5a2K8KmHq+mdn+mQpeWDkPCjgrfwo4K86Z6J6Z6f6Z6x6Z6+6Z+A6Z+S6Z+g8KWRrOmfrueQnPCpkLPpn7/pn7XwqZCd8KeluuSrkemgtOmgs+mhi+mhpuOsjvCnhbXjtZHwoJiw8KSFnFwiXSxbXCI5MTQwXCIsXCLwpZyG6aOK6aK36aOI6aOH5Ku/8Ka0p/Chm5PllrDpo6Hpo6bpo6zpjbjppLnwpKip5K2y8Kmhl/CppIXpp7XpqIzpqLvpqJDpqZjwpZyl45uE8KmCsfCpr5Xpq6Dpq6LwqayF6au05LCO6ayU6ayt8KiYgOWAtOmstPCmpqjjo4Pwo4G96a2Q6a2A8Km0vuWphfChoaPpro7wpImL6bCC6a+/6bCM8Km5qOm3lPCpvrfwqoaS8KqGq/Cqg6HwqoSj8KqHn+m1vum2g/CqhLTpuI7moohcIl0sW1wiOTFhMVwiLFwi6beE8KKFm/CqhpPwqoig8KGku/CqiLPptLnwqoK58KqKtOm6kOm6lem6num6ouS0tOm6qum6r/CkjaTpu4HjraDjp6XjtJ3kvLLjnr7wqLCr6byC6byI5K6W6ZCk8Ka2oum8l+m8lum8ueWan+Waium9hemmuPCpgovpn7Lokb/pvaLpvannq5zpvo7niJbkrr7wpKW18KSmu+eFt/Ckp7jwpI2I8KSpkeeOnvCor5rwoaO656af8KilvvCouLbpjanpj7PwqKmE6Yus6Y6B6Y+L8KilrPCkkrnniJfju6vnnbLnqYPng5DwpJGz8KSPuOeFvvChn6/ngqPwoaK+8KOWmeO7h/ChooXwpZCv8KGfuOOcovChm7vwoaC545uh8KGdtPCho5Hwpb2L45yj8KGbgOWdm/CkqKXwoY++8KGKqFwiXSxbXCI5MjQwXCIsXCLwoY+G8KGStuiUg/CjmqbolIPokZXwpKaU8KeFpfCjuLHwpZWc8KO7u/CngZLkk7Two5uu8KmmnfCmvKbmn7njnLPjsJXjt6floazwoaSi5qCQ5IGX8KOcv/Ckg6HwpIKL8KSEj/CmsKHlk4vlmp7wppqx5ZqS8KC/n/CgrqjwoLiN6Y+G8Kisk+mOnOS7uOWEq+OgmfCkkLbkurzwoJGl8KCNv+S9i+S+ivClmZHlqajwoIar8KCPi+OmmfCgjIrwoJCU45C15Lyp8KCLgPCourPwoIm16Kua8KCIjOS6mFwiXSxbXCI5MmExXCIsXCLlg43lhI3kvqLkvIPwpKiO8KO6iuS9guWAruWBrOWCgeS/jOS/peWBmOWDvOWFmeWFm+WFneWFnua5tvCjlpXwo7i58KO6v+a1svChooTwo7qJ5Yao5YeD8KCXoOSTnfCgkqPwoJKS8KCSkei1uvCoqpzwoJyO5YmZ5Yqk8KChs+WLoemNruSZuueGjPCkjozwoLCg8KSmrPChg6Tmp5HwoLid55G547ue55KZ55CU55GW546Y5K6O8KSqvPCkgo3lj5DjloTniI/wpIOJ5Za08KCNheWTjfCgr4blnJ3piZ3pm7Tpjabln53lno3lnb/jmL7lo4vlqpnwqKmG8KGbuvChna/woZyQ5ais5aa46YqP5am+5auP5aiS8KWlhvChp7PwoaGh8KSKleObtea0heeRg+WoofCluoNcIl0sW1wiOTM0MFwiLFwi5aqB8Kivl/CgkJPpj6DnkozwoYyD54SF5KWy6ZCI8Kinu+mOveOeoOWwnuWynuW5nuW5iPChppbwoaW88KOrruW7jeWtj/ChpIPwoaSE45yB8KGioOObnfChm77jm5PohKrwqKmH8KG2uvCjkbLwqKao5byM5byO8KGkp/ChnqvlqavwoZy75a2E6JiU8KeXveihoOaBvvCioaDwopir5b+b47q48KKWr/Cilr7wqYKI8Ka9s+aHgPCggL7woIGG8KKYm+aGmeaGmOaBtfCispvworSH8KSblPCphY1cIl0sW1wiOTNhMVwiLFwi5pGx8KSZpfCirarjqKnwoqyi8KORkPCpo6rworm45oy38KqRm+aStuaMseaPkfCkp6PworWn5oqk8KKyoeaQu+aVq+alsuOvtPCjgo7wo4qt8KSmifCjiqvllI3wo4ug8KGjmfCpkL/mm47wo4qJ8KOGs+OroOSGkPClloTwqKyi8KWWj/Chm7zwpZWb8KWQpeejrvCjhIPwoaCq8KOItOORpPCjiI/wo4aC8KSLieaajvCmtKTmmavkrpPmmLDwp6Gw8KG3q+aZo/Cji5Lwo4uh5pie8KWhsuOjkfCjoLrwo568466Z8KOeovCjj77nk5Djrpbmno/wpJiq5qK25qCe46+E5qq+46Gj8KOflfCkkofmqLPmqZLmq4nmrIXwoaSS5pSR5qKY5qmM46+X5qm65q2X8KO/gPCjsprpjqDpi7LwqK+q8Kiri1wiXSxbXCI5NDQwXCIsXCLpionwqICe8KinnOmRp+a2pea8i/Ckp6zmtafwo72/47aP5riE8KSAvOWovea4iuWhh+a0pOehgueEu/CkjJrwpIm254Ox54mQ54qH54qU8KSej/CknKXlhbnwpKqk8KCXq+eRuvCju7jwo5mf8KSpivCkpJfwpb+h47yG47qx8KSrn/CosKPwo7y15oKn47uz55OM55C86Y6H55C35JKf8Ka3quSVkeeWg+O9o/Cks5nwpLSG472Y55WV55mz8KqXhuOsmeeRqPCoq4zwpKar8KSmjuOru1wiXSxbXCI5NGExXCIsXCLjt43wpKmO47u/8KSnhfCko7Pph7rlnLLpjYLwqKuj8KGhpOWDn/CliKHwpYen55248KOIsuecjuecj+edu/Ckmpfwo56B46me8KSjsOeQuOeSm+O6v/CkqrrwpKuH5IOI8KSqlvCmhq7pjIfwpZaB56Ce56KN56KI56OS54+Q56WZ8KedgfClm6PkhI7nppvokpbnpqXmqK3wo7u656i656e05IWu8KGbpuSEsumIteensfCgtYzwpKaM8KCKmfCjtrrwoZ2u45aX5ZWr45Ww45qq8KCHlPCgsI3nq6LlqZnwopu18KWqr/ClqpzlqI3woImb56Ow5aiq8KWvhuervuSHueexneexreSIkfClrrPwpbq88KW6puezjfCkp7nwoZ6w57KO57G857Ku5qqy57ec57iH57eT572O8KaJoVwiXSxbXCI5NTQwXCIsXCLwpoWc8KetiOe2l/CluoLkiarwpq218KCkluaflvCggY7wo5eP5Z+E8KaQkvCmj7jwpKWi57+d56yn8KCgrPClq6nwpbWD56yM8KW4jumnpuiZhempo+aonPCjkL/jp6LwpKe38KaWremon/CmlqDokoDwp4Sn8KazkeSTquiEt+SQguiDhuiEieiFgvCmnrTpo4PwpqmC6Imi6Iml8KapkeiRk/CmtqfomJDwp4ib5aqG5IW/8KGhgOWsq/ChoqHlq6TwoaOY6Jqg8K+mvPCjto/ooK3wp5Ci5aiCXCJdLFtcIjk1YTFcIixcIuihruS9heiih+iiv+ijpuilpeiljfClmoPopZTwp56F8KeehPCor7XwqK+Z8KiunPCop7njuq3okqPkm7Xkm4/jn7LoqL3oqJzwqZGI5b2N6Yir8KSKhOaXlOeEqeeDhPChoYXpta3osp/os6nwp7ec5aaa55+D5aew5I2u45uU6Liq6Lqn8KSwiei8sOi9iuSLtOaxmOa+u/CijKHkopvmvbnmuovwoZ+a6a+p45q18KSkr+mCu+mCl+WVseSkhumGu+mQhPCoqYvkgaLwqKu86ZCn8KiwnfCosLvok6XoqKvplpnplqfplpfplpbwqLS055GF47uC8KSjv/CkqYLwpI+q47un8KOIpemaj/Cou6fwqLmm8Ki5peO7jPCkp63wpKm48KO/rueQkueRq+O7vOmdgfCpgrBcIl0sW1wiOTY0MFwiLFwi5qGH5Kid8KmCk/Cln5/pnZ3pjajwqKaJ8KiwpvCorK/wpo6+6Yq65ayR6K2p5KS854+58KSIm+mem+mdsemkuPCgvKblt4HwqK+F8KSqsumgn/Cpk5rpi7bwqZeX6Yel5JOA8KitkPCkqafwqK2k6aOc8KipheO8gOmIquSkpeiQlOmku+mljfCnrIbjt73pppvkra/ppqrpqZzwqK2l8KWjiOaqj+mooeWrvumor/Cpo7HkrpDwqaWI6aa85K695K6X6Y295aGy8KGMguWgovCkprhcIl0sW1wiOTZhMVwiLFwi8KGTqOehhPCinJ/wo7a45qOF47W96ZGY46Sn5oWQ8KKegfCipavmhIfpsY/psZPpsbvpsLXpsJDprb/pr4/wqbit6a6f8KqHtfCqg77ptKHksq7wpISE6biY5LKw6bSM8KqGtPCqg63wqoOz8Kmkr+m2peiSvfCmuJLwpr+f8KauguiXvOSUs/CmtqTwprqE8Ka3sOiQoOiXrvCmuIDwo5+X8KaBpOenovCjlpzwo5mA5KSt8KSnnuO1oumPm+mKvumNiPCgir/nornpibfpkY3kv6TjkYDpgaTwpZWd56C956GU56K256GL8KGdl/Cjh4nwpKWB45qa5L2y5r+a5r+Z54Ce54Ce5ZCU8KSGteWeu+Wjs+Weium0luWfl+eEtOOSr/Ckhqznh6vwprGA8KS+l+WsqPChnrXwqKmJXCJdLFtcIjk3NDBcIixcIuaEjOWrjuWoi+SKvPCkkojjnKzkrbvwqKe86Y676Y648KGjlvCgvJ3okbLwprOA8KGQk/Cki7rworCm8KSPgeWmlPCjtrfwpp2B57ao8KaFm/CmgqTwpKa58KSmi/Cop7rpi6Xnj6Lju6nnkrTwqK2j8KGin+O7ofCkqrPmq5jnj7Pnj7vju5bwpKi+8KSqlPChn5nwpKmm8KCOp/ChkKTwpKel55GI8KSklueCpfCkpbbpioTnj6bpjZ/woJO+6Yyx8KirjvCoqJbpjobwqK+n8KWXleSktfCoqoLnhatcIl0sW1wiOTdhMVwiLFwi8KSlg/Cgs7/lmqTwoJia8KCvq/CgsrjllILnp4TwoZ+657e+8KGbgvCkqZDwoaGS5JSu6ZCB45yK8KirgPCkpq3lprDwoaK/8KGig/CnkoTlqqHjm6Lwo7Wb45qw6Ymf5am58KiqgfChoaLpjbTjs43woKq05KqW46aK5YO047Wp47WM8KGOnOeFteSLu/CoiJjmuI/wqYOk5JOr5rWX8Ke5j+eBp+ayr+OzlvCjv63wo7it5riC5ryM47Wv8KCPteeVkeOavOOTiOSagOO7muShseWnhOmJruSkvui9gfCosJzwpq+A5aCS5Z+I45uW8KGRkueDvvCkjaLwpKmx8KK/o/ChirDwoo695qK55qWn8KGOmPCjk6Xwp6+08KObn/CoqoPwo5+W8KOPuvCksp/mqJrwo5qt8Kayt+iQvuSTn+STjlwiXSxbXCI5ODQwXCIsXCLwprSm8Ka1kfCmsoLwpr+e5ryX8KeEieiMvfChnLroj63wprKA8KeBk/Chn5vlponlqoLwoZ6z5amh5amx8KGkhfCkh7zjnK3lp6/woZy845uH54aO6Y6Q5pqa8KSKpeWpruWoq/CkipPmqKvwo7u58KectvCkkZvwpIuK54Sd8KSJmfCop6HkvrDwprSo5bOC8KSTjvCnuY3wpI695qiM8KSJlvChjITngqbnhLPwpI+p47al5rOf8K+gpfCkqY/nuaXlp6vltK/jt7PlvZzwpKmd8KGfn+e2pOiQplwiXSxbXCI5OGExXCIsXCLlkoXwo6u68KOMgPCgiJTlnb7woKOV8KCYmeO/pfChvp7wqoq254CD8KmFm+W1sOeOj+ezk/CoqZnwqZCg5L+I57+n54uN54yQ8KertOeMuOeMufClm7bnjYHnjYjjuqnwp6yY6YGs54e18KSjsuePoeiHtuO7iuecjOO7keayouWbveeQmeeQnueQn+O7ouO7sOO7tOO7uueTk+O8juO9k+eVgueVreeVsueWjeO9vOeXiOeXnOO/gOeZjeO/l+eZtOO/nOeZuvCkvZznhojlmKPopoDloankgJ3nnYPkgLnmnaHkgYXjl5vnnpjkgarkga/lsZ7nnr7nn4vlo7LnoJjngrnnoJzkgqjnoLnnoYfnoZHnoabokYjwpZS156Sz5qCD56Sy5ISDXCJdLFtcIjk5NDBcIixcIuSEieemkeemmei+u+eohui+vOSFp+eqkeSGsueqvOiJueSHhOerj+erm+SHj+S4oeetouetrOetu+ewkuewm+SJoOSJuuexu+eynOSKjOeyuOSKlOezrei+k+eDgPCgs4/nt4/nt5Tnt5Dnt73nvq7nvrTnip/kjpfogKDogKXnrLnogK7ogLHogZTjt4zlnrTngqDogrfog6nkj63ohIznjKrohI7ohJLnlaDohJTkkIHjrLnohZbohZnohZpcIl0sW1wiOTlhMVwiLFwi5JCT5aC66IW86IaE5JCl6IaT5JCt6Ial5Z+v6IeB6Iek6ImU5JKP6Iqm6Im26IuK6IuY6Iu/5JKw6I2X6Zmp5qaK6JCF54O16JGk5oOj6JKI5JSE6JK+6JOh6JO46JSQ6JS46JWS5JS76JWv6JWw6Jeg5JW36Jmy6JqS6Jqy6Juv6ZmF6J6L5JiG5JiX6KKu6KO/6KSk6KWH6KaR8Kelp+ioqeiouOiqlOiqtOixkeizlOizsui0nOSemOWhn+i3g+SfreS7rui4uuWXmOWdlOi5seWXtei6sOSgt+i7jui7oui7pOi7rei7sui+t+i/gei/iui/jOmAs+mnhOSiremjoOmIk+SknumIqOmJmOmJq+mKsemKrumKv1wiXSxbXCI5YTQwXCIsXCLpi6Ppi6vpi7Ppi7Tpi73pjYPpjoTpjq3kpYXkpZHpur/pkJfljIHpkJ3pkK3pkL7kparpkZTpkbnplK3plqLkpqfpl7TpmLPkp6XmnqDkqKTpnYDkqLXpnrLpn4LlmZTkq6Tmg6jpornkrJnpo7HloYTppI7ppJnlhrTppJzppLfppYLppZ3ppaLkrbDpp4Xkrp3pqLzprI/nqoPpranproHpr53pr7Hpr7Tksa3psKDjna/woa+C6bWJ6bC6XCJdLFtcIjlhYTFcIixcIum7vuWZkOm2k+m2vem3gOm3vOmTtui+tum5u+m6rOm6sem6vem7humTnOm7oum7sem7uOeriOm9hPCggpTwoIq38KCOoOakmumTg+WmrPCgk5floYDpk4HjnrnwoJeV8KCYlfCgmbbwoZq65Z2X54Wz8KCrgvCgq43woK6/5ZGq8K+gu/Cgr4vlkp7woK+78KCwu/CgsZPwoLGl8KCxvOaDp/Cgso3lmbrwoLK18KCznfCgs63woLWv8KC2svCgt4jmpZXpsK/onqXwoLiE8KC4jvCgu5fwoL6Q8KC8rfCgubPlsKDwoL685biL8KGBnPChgY/woYG25pye8KGBu/ChgojwoYKW45mH8KGCv/Chg5PwoYSv8KGEu+WNpOiSrfChi6PwoY218KGMtuiugfChlbfwoZiZ8KGfg/Chn4fkubjngrvwoaCt8KGlqlwiXSxbXCI5YjQwXCIsXCLwoait8KGphfChsKrwobGw8KGyrPChu4jmi4PwobuV8KG8leeGmOahlfCigYXmp6njm4jwoom88KKPl/Cij7rwopyq8KKhsfCipY/oi73woqWn8KKmk/Ciq5XopqXwoquo6L6g8KKsjumeuPCirL/poYfpqr3worGMXCJdLFtcIjliNjJcIixcIvCisojworK38KWvqPCitIjworSS8KK2t/CitpXwormC8KK9tPCiv4zwo4Cz8KOBpvCjjJ/wo4+e5b6x5pmI5pq/8KepufCjlafwo5ez54iB8KSmuuefl/CjmJrwo5yW57qH8KCNhuWiteacjlwiXSxbXCI5YmExXCIsXCLmpJjwo6qn8KeZl/Clv6Lwo7iR8KO6ufCnl77wooKa5KOQ5Kq48KSEmfCoqprwpIuu8KSMjfCkgLvwpIy08KSOlvCkqYXwoJeK5YeS8KCYkeWmn/Chuqjjrr7wo7O/8KSQhPCkk5blnojwpJm046ab8KScr/Col6jwqaeJ452i8KKHg+itnvCorY7pp5bwpKCS8KSju/CkqJXniInwpKuA8KCxuOWlpfCkuqXwpL6G8KCduei7mvClgKzlio/lnL/nhbHwpYqZ8KWQmfCjvYrwpKqn5Za88KWRhvClka7wpq2S6YeU45Gz8KWUv/CnmLLwpZWe5JyY8KWVovCllabwpZ+H8KSkv/CloZ3lgabjk7vwo4+M5oOe8KWkg+SdvPCopYjwpaqu8KWuifClsIbwobaQ5Z6h54WR5r628KaEgvCnsJLpgZbwpoay8KS+muitovCmkILwppGKXCJdLFtcIjljNDBcIixcIuW1m/Cmr7fovLbwppKE8KGknOirqvCkp7bwppKI8KO/r/CmlJLkr4Dwppa/8KaatfCinJvpkaXwpZ+h5oaV5ain8K+jjeS+u+WaufCklKHwppu85Lmq8KSktOmZlua2j/Cmsr3jmJjopbfwpp6Z8KahrvCmkJHwpqGe54ef8Kajh+etgvCpg4DwoKiR8KakpumEhPCmpLnnqYXpt7Dwpqe66aim8KaoreOZn/CmkanwoICh56aD8KaotPCmrZvltKzwo5SZ6I+P8KauneSbkPCmsqTnlLvooaXwprau5aK2XCJdLFtcIjljYTFcIixcIuOcnPCilo3wp4GL8KeHjeOxlPCnioDwp4qF6YqB8KKFuvCniovpjLDwp4um8KSnkOawuemSn/CnkZDwoLu46KCn6KO18KKkpvCokbPwoZ6x5rq48KSoqvChoKDjpqTjmrnlsJDnp6PklL/mmrbwqbKt8KmipOilg/Cnn4zwp6GY5ZuW5IOf8KGYiuOmofCjnK/wqIOo8KGPheeGreiNpvCnp53wqYao5amn5LK38KeCr/Copqvwp6e98KeoivCnrIvwp7Wm8KSFuuetg+elvvCogInmvrXwqouf5qiD8KiMmOWOovCmuIfpjr/moLbpnZ3wqIWv8KiAo/CmprXwoY+t8KOIr/CogYjltoXwqLCw8KiCg+Wclemgo/CopYnltqvwpKaI5pa+5qeV5Y+S8KSqpfCjvoHjsJHmnLbwqIKQ8KiDtPCohK7wob6h8KiFj1wiXSxbXCI5ZDQwXCIsXCLwqIaJ8KiGr/CoiJrwqIyG8KiMr/Cojorjl4rwqJGo8KiaquSjuuaPpvCopZbnoIjpiZXwqKa45I+y8Kinp+SPn/Cop6jwqK2G8KivlOWnuPCosInovIvwqL+F8KmDrOetkfCphJDwqYS847e38KmFnvCkq4rov5Dnio/lmovwqZOn8KmXqfCplrDwqZa48KmcsvCpo5HwqaWJ8KmlqvCpp4Pwqaio8KmsjvCptZrwqbab57qf8Km7uPCpvKPksqTplYfwqoqT54ai8KqLv+S2kemAkvCql4vktpzwoLKc6L6+5ZeBXCJdLFtcIjlkYTFcIixcIui+uvCikrDovrnwpKqT5JSJ57m/5r2W5qqx5Luq45Ok8KisrPCnop3jnLrouoDwoZ+18KiApPCorazwqK6Z8KeovvCmmq/jt6vwp5mV8KOyt/ClmLXwpaWW5Lqa8KW6gfCmiZjlmr/woLmt6LiO5a2t8KO6iPCksp7mj57mi5DwoZ+28KGhu+aUsOWYrfClsYrlkJrwpYyR47eG8Km2mOSxveWYouWYnue9ifClu5jlpbXwo7WA6J2w5Lic8KC/qvCgtYnwo5q66ISX6bWe6LSY55i76bGF55mO55656Y2F5ZCy6IWI6Iu35Zil6ISy6JCY6IK95Zeq56Wi5ZmD5ZCW8KC6neOXjuWYheWXseabsfCoi6LjmK3nlLTll7DllrrlkpfllbLwoLGB8KCyluW7kPClhYjwoLm28KKxolwiXSxbXCI5ZTQwXCIsXCLwoLqi6bqr57Wa5Zee8KGBteaKnemdreWSlOizjeeHtumFtuaPvOaOueaPvuWVqfCirYPpsbLworqz5Yaa45Of8KC2p+WGp+WRjeWUnuWUk+eZpui4rfCmoornlrHogrbooITonoboo4fohrbokJzwoYOB5JOs54yE8KSchuWukOiMi/CmopPlmbvwopu08Ke0r/CkhqPwp7Wz8Ka7kPCnirbphbDwoYeZ6YiI8KOzvPCqmqnwoLqs8KC7ueeJpvChsqLknY7wpL+C8Ke/ufCgv6vkg7pcIl0sW1wiOWVhMVwiLFwi6bGd5pSf8KK2oOSjs/Ckn6DwqbW88KC/rPCguIrmgaLwp5aj8KC/rVwiXSxbXCI5ZWFkXCIsXCLwpoGI8KGGh+eGo+e6jum1kOS4muS4hOOVt+WsjeaysuWNp+OarOOnnOWNveOapfCkmJjloprwpK2u6Iit5ZGL5Z6q8KWqlfCgpblcIl0sW1wiOWVjNVwiLFwi46mS8KKRpeeNtPCpuqzktInpr63wo7O+8Km8sOSxm/CkvqnwqZae8Km/nuiRnPCjtrbwp4qy8Kaes/CjnKDmjK7ntKXwo7u38KO4rOOoqumAiOWLjOO5tOOZuuSXqfCgko7nmYDlq7DwoLq256G68Ke8ruWip+SCv+WZvOmui+W1tOeZlPCqkLTpuoXks6Hnl7njn7vmhJnwo4Oa8KSPslwiXSxbXCI5ZWY1XCIsXCLlmZ3woYqp5Z6n8KSlo/CpuIbliLTwp4Ku45at5rGK6bW8XCJdLFtcIjlmNDBcIixcIuexlumsueWfnvChnazlsZPmk5PwqZOQ8KaMtfCnhaTomq3woLSo8Ka0ovCkq6LwoLWxXCJdLFtcIjlmNGZcIixcIuWHvvChvI/lto7pnIPwobeR6bqB6YGM56yf6ayC5bOR566j5omo5oy16au/56+P6ayq57G+6ayu57GC57KG6bCV56+86ayJ6byX6bCb8KSkvum9muWVs+Wvg+S/vem6mOS/suWJoOO4huWLkeWdp+WBluWmt+W4kumfiOm2q+i9nOWRqemetOmlgOmeuuWMrOaEsFwiXSxbXCI5ZmExXCIsXCLmpKzlj5rpsIrptILksLvpmYHmpoDlgqbnlYbwoZ2t6aea5YmzXCJdLFtcIjlmYWVcIixcIumFmemagemFnFwiXSxbXCI5ZmIyXCIsXCLphZHwqLqX5o2/8Ka0o+ariuWYkemGjueVuuaKhfCgj7znjY/nsbDwpbCh8KOzvVwiXSxbXCI5ZmMxXCIsXCLwpKSZ55uW6a6d5Liq8KCzlOiOvuihglwiXSxbXCI5ZmM5XCIsXCLlsYrmp4Dlg63lnbrliJ/lt7Xku47msLHwoIey5Ly55ZKc5ZOa5Yqa6LaC45e+5byM45ezXCJdLFtcIjlmZGJcIixcIuatkumFvOm+pemul+mgrumitOmquum6qOm6hOeFuueslFwiXSxbXCI5ZmU3XCIsXCLmr7rooJjnvbhcIl0sW1wiOWZlYlwiLFwi5Zig8KqZiui5t+m9k1wiXSxbXCI5ZmYwXCIsXCLot5TouY/puJzouIHmioLwqI296Lio6Lm156uT8KSpt+eovuejmOazquipp+eYh1wiXSxbXCJhMDQwXCIsXCLwqKma6bym5rOO6J+W55eD8KqKsuehk/CvoYDotIzni6LnjbHorK3njILnk7Hos6vwpKq76Jiv5b666KKg5JK3XCJdLFtcImEwNTVcIixcIvChoLvwpriFXCJdLFtcImEwNThcIixcIuipvvCilJtcIl0sW1wiYTA1YlwiLFwi5oO955mn6auX6bWE6Y2u6a6P6J+1XCJdLFtcImEwNjNcIixcIuigj+izt+eMrOmcoemusOOXlueKsuSwh+exkemlivCmhZnmhZnksITpupbmhb1cIl0sW1wiYTA3M1wiLFwi5Z2f5oWv5oqm5oi55ouO46mc5oei5Y6q8KOPteaNpOagguOXklwiXSxbXCJhMGExXCIsXCLltZfwqK+C6L+a8Ki4uVwiXSxbXCJhMGE2XCIsXCLlg5nwobWG56SG5Yyy6Zi48KC8u+SBpVwiXSxbXCJhMGFlXCIsXCLnn75cIl0sW1wiYTBiMFwiLFwi57OC8KW8muezmueoreiBpuiBo+e1jeeUheeTsuimlOiImuacjOiBovCnkobogZvnk7DohIPnnKToponwpp+M55WT8Ka7keieqeifjuiHiOiejOipieiyreitg+ecq+eTuOiTmuOYteamsui2plwiXSxbXCJhMGQ0XCIsXCLopqnnkajmtrnon4HwpICR55On47eb54W25oKk5oac47OR54Wi5oG3XCJdLFtcImEwZTJcIixcIue9sfCorK3niZDmg6nkrb7liKDjsJjwo7OH8KW7l/CnmZbwpZSx8KGlhPChi77wqaSD8Ka3nPCngq3ls4Hwpoat8Kioj/CjmbfwoIOu8KahhvCkvI7klaLlrJ/wpo2M6b2Q6bqm8KaJq1wiXSxbXCJhM2MwXCIsXCLikIBcIiwzMSxcIuKQoVwiXSxbXCJjNmExXCIsXCLikaBcIiw5LFwi4pG0XCIsOSxcIuKFsFwiLDksXCLkuLbkuL/kuoXkuqDlhoLlhpblhqvli7nljLjljanljrblpIrlroDlt5vivLPlub/lu7TlvZDlvaHmlLTml6DnlpLnmbbovrXpmrbCqMuG44O944O+44Kd44Ke44CD5Lud44CF44CG44CH44O877y777y94py944GBXCIsMjNdLFtcImM3NDBcIixcIuOBmVwiLDU4LFwi44Kh44Ki44Kj44KkXCJdLFtcImM3YTFcIixcIuOCpVwiLDgxLFwi0JBcIiw1LFwi0IHQllwiLDRdLFtcImM4NDBcIixcItCbXCIsMjYsXCLRkdC2XCIsMjUsXCLih6fihrjihrnjh4/woIOM5Lma8KCCiuWIguSSkVwiXSxbXCJjOGExXCIsXCLpvrDlhojpvrHwp5iHXCJdLFtcImM4Y2RcIixcIu+/ou+/pO+8h++8guOIseKEluKEoeOCm+OCnOK6gOK6hOK6huK6h+K6iOK6iuK6jOK6jeK6leK6nOK6neK6peK6p+K6quK6rOK6ruK6tuK6vOK6vuK7huK7iuK7jOK7jeK7j+K7luK7l+K7nuK7o1wiXSxbXCJjOGY1XCIsXCLKg8mQyZvJlMm1xZPDuMWLyorJqlwiXSxbXCJmOWZlXCIsXCLvv61cIl0sW1wiZmE0MFwiLFwi8KCVh+mLm/Cgl5/wo7+F6JWM5Iq154+v5Ya145mJ8KSlgvCop6TpjYTwoaeb6Iuu8KOziOegvOadhOaLn/CkpLPwqKaq8KCKoPCmrrPwoYyF5L6r8KKTreWAiPCmtKnwp6qE8KOYgPCkqrHwopST5YCp8KCNvuW+pPCgjoDwoI2H5rub8KCQn+WBveWEgeORuuWEjumhrOOdg+iQlvCkpqTwoJKH5YWg8KOOtOWFqvCgr7/wooO88KCLpfCilLDwoJaO8KOIs/ChpoPlroLonb3woJaz8KOymeWGsuWGuFwiXSxbXCJmYWExXCIsXCLptLTlh4nlh4/lh5Hjs5zlh5PwpKqm5Yaz5Yei5Y2C5Yet6I+N5qS+8KOcreW9u+WIi+WIpuWIvOWKteWJl+WKlOWKueWLheewleiVguWLoOiYjfCmrJPljIXwqKue5ZWJ5ruZ8KO+gPCgpZTwo7+s5Yyz5Y2E8KCvouazi/ChnKbmoJvnj5XmgYrjuqrjo4zwoZuo54ed5JKi5Y2t5Y208Kiaq+WNvuWNv/ChlpbwoZiT55+m5Y6T8Kiqm+WOoOWOq+WOrueOp/ClnbLjvZnnjpzlj4Hlj4XmsYnkuYnln77lj5njqqvwoK6P5Y+g8KO/q/CitqPlj7bwoLG35ZCT54G55ZSr5pmX5rWb5ZGt8Katk/CgtbTllZ3lko/lkqTknqbwoZyN8KC7neO2tPCgtY1cIl0sW1wiZmI0MFwiLFwi8KimvPCimpjllYfks63lkK/nkJfllobllqnlmIXwoaOX8KSAuuSVkvCkkLXmmrPwoYK05Zi35puN8KOKiuaapOaareWZjeWZj+ejseWbsemeh+WPvuWcgOWbr+WbrfCorabjmKPwoYmP5Z2G8KSGpeaxrueCi+WdguOasfCmsb7ln6bwoZCW5aCD8KGRlPCkjaPloKbwpK+15aGc5aKq45Wh5aOg5aOc8KGIvOWju+Wvv+Wdg/CqhZDwpIm46Y+T45ah5aSf5qKm45uD5rmZXCJdLFtcImZiYTFcIixcIvChmL7lqKTllZPwoZqS6JSF5aeJ8KC1jvCmsoHwprSq8KGfnOWnmfChn7vwoZ6y8Ka2pua1sfChoKjwoZuV5ae58Ka5heWqq+Wpo+ObpvCkpqnlqbfjnIjlqpbnkaXlq5Pwpr6h8KKVlOO2hfChpJHjnLLwoZq45bqD5YuQ5a225paI5a288KeojuSAhOShnfCgiITlr5XmhaDwoai08KWnjPCglqXlr7Plrp3ktJDlsIXwoa2E5bCT54+O5bCU8KGypfCmrKjlsYnko53lsoXls6nls6/ltovwobe58KG4t+W0kOW0mOW1hvChuqTlsrrlt5foi7zjoK3wpKSB8KKBifCihbPoiofjoLbjr4LluK7mqorlubXlubrwpJK88KCzk+WOpuS6t+W7kOWOqPChnbHluInlu7TwqJKCXCJdLFtcImZjNDBcIixcIuW7ueW7u+OioOW7vOagvumQm+W8jfCgh4Hwr6KU46ue5KKu8KGMuuW8uvCmoojwoo+Q5b2Y8KKRseW9o+mevfCmua7lvbLpjYDwqKi25b6n5ba247Wf8KWJkPChvarwp4O48KKZqOmHlvCgip7wqKip5oCx5pqF8KGht+Olo+O3h+OYueWekPCinrTnpbHjuYDmgp7mgqTmgrPwpKaC8KSmj/CnqZPnkqTlg6HlqqDmhaTokKTmhYLwr6Km8Ka7kuaGgeWHtPCgmZbmhoflrqrwo763XCJdLFtcImZjYTFcIixcIvCioZ/mh5PwqK6d8KmlneaHkOOksvCipoDwoqOB5oCj5oWc5pSe5o6L8KCEmOaLhfChnbDmi5XworiN5o2s8KSnn+Ool+aQuOaPuPChjo7woZ+85pKQ5r6K8KK4tumglPCkgozwpZyd5pOh5pOl6ZG746mm5pC646mX5pWN5ryW8KSoqPCkqKPmloXmla3mlZ/wo4G+5pa18KSlgOSst+aXkeSDmPChoKnml6Dml6Plv5/wo5CA5piY8KOHt/Cjh7jmmYTwo4ak8KOGpeaZi/CgubXmmafwpYem5pmz5pm08KG4vfCjiLHwqJe08KOHiPCljJPnn4XwoqO36aak5pyC8KSOnPCkqKHjrKvmp7rwo5+C5p2e5p2n5p2i8KSHjfCpg63mn5fkk6nmoKLmuZDpiLzmoIHwo4+m8Ka2oOahnVwiXSxbXCJmZDQwXCIsXCLwo5Gv5qeh5qiL8Kirn+als+ajg/Cjl43mpIHmpIDjtLLjqIHwo5i8466A5p6s5qWh8KipiuSLvOaktuammOOuofCgj4nojaPlgpDmp7nwo5mZ8KKEquaphfCjnIPmqp3jr7PmnrHmq4jwqYac47CN5qyd8KCko+aDnuasteattPCin43murXwo6ub8KCOtfChpZjjnYDlkKHwo62a5q+h8KO7vOavnOawt/CikovwpKOx8KatkeaxmuiIpuaxufCjtrzkk4Xwo7a98KSGpPCkpIzwpKSAXCJdLFtcImZkYTFcIixcIvCjs4njm6Xjs6vwoLSy6a6D8KOHufCikpHnvo/moLfwprSl8Ka2ofCmt6vmtpbmtZzmubzmvITwpKW/8KSChfCmubLolLPwpr205YeH5rKc5rid6JCu8Kisoea4r/CjuK/nkZPwo76C56eM5rmP5aqR8KOBi+a/uOOcjea+nfCjuLDmu7rwoZKX8KSAveSVlemPsOa9hOa9nOO1jua9tPCphbDjtLvmvp/wpIWE5r+T8KSCkfCkhZXwpIC58KO/sPCjvrTwpIS/5Yef8KSFlvCkhZfwpIWA8KaHneeBi+eBvueCp+eCgeeDjOeDleeDlueDn+SEhOO3qOeGtOeGlvCkibfnhKvnhYXlqojnhYrnha7lspzwpI2l54WP6Y2i8KSLgeeErPCkkZrwpKin8KSooueGuvCor6jngr3niI5cIl0sW1wiZmU0MFwiLFwi6ZGC54iV5aSR6ZGD54ik6Y2B8KWYheeIrueJgPCkpbTmor3niZXniZfjuZXwo4GE5qCN5ry954qC54yq54yr8KSgo/CooKvko63wqKCE54yo54yu54+P546q8KCwuvCmqK7nj4nnkYnwpIei8KGbp/CkqKTmmKPjm4XwpKa38KSmjfCkp7vnj7fnkJXmpIPwpKim55C58KCXg+O7l+eRnPCioq3nkaDwqLqy55GH54+k55G26I6555Gs45yw55G06Y+x5qis55KC5KWT8KSqjFwiXSxbXCJmZWExXCIsXCLwpIWf8KSpufCoro/lrYbwqLCD8KGinueTiPChpojnlI7nk6nnlJ7wqLuZ8KGpi+Wvl/CouqzpjoXnlY3nlYrnlafnla7wpL6C47yE8KS0k+eWjueRneeWnueWtOeYgueYrOeZkeeZj+eZr+eZtvCmj7XnmpDoh6/jn7jwpqSR8Kakjueaoeeapeeat+ebjPCmvp/okaLwpYKd8KWFvfChuJznnJ7nnKbnnYDmkq/wpYig552Y8KOKrOeer/CopaTwqKWo8KGbgeeftOegifChjbbwpKiS5qOK56Kv56OH56OT6Zql56Su8KWXoOejl+ektOeisfCnmIzovrjoooTwqKyr8KaCg/CimJznpobopIDmpILnpoDwpaGX56ad8KesueekvOemqea4qvCnhKbjuqjnp4bwqYSN56eUXCJdXVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvYmlnNS1hZGRlZC5qc29uXG4vLyBtb2R1bGUgaWQgPSAxNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKFwiYnVmZmVyXCIpLkJ1ZmZlcixcbiAgICBUcmFuc2Zvcm0gPSByZXF1aXJlKFwic3RyZWFtXCIpLlRyYW5zZm9ybTtcblxuXG4vLyA9PSBFeHBvcnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpY29udikge1xuICAgIFxuICAgIC8vIEFkZGl0aW9uYWwgUHVibGljIEFQSS5cbiAgICBpY29udi5lbmNvZGVTdHJlYW0gPSBmdW5jdGlvbiBlbmNvZGVTdHJlYW0oZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJY29udkxpdGVFbmNvZGVyU3RyZWFtKGljb252LmdldEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpY29udi5kZWNvZGVTdHJlYW0gPSBmdW5jdGlvbiBkZWNvZGVTdHJlYW0oZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBJY29udkxpdGVEZWNvZGVyU3RyZWFtKGljb252LmdldERlY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpY29udi5zdXBwb3J0c1N0cmVhbXMgPSB0cnVlO1xuXG5cbiAgICAvLyBOb3QgcHVibGlzaGVkIHlldC5cbiAgICBpY29udi5JY29udkxpdGVFbmNvZGVyU3RyZWFtID0gSWNvbnZMaXRlRW5jb2RlclN0cmVhbTtcbiAgICBpY29udi5JY29udkxpdGVEZWNvZGVyU3RyZWFtID0gSWNvbnZMaXRlRGVjb2RlclN0cmVhbTtcbiAgICBpY29udi5fY29sbGVjdCA9IEljb252TGl0ZURlY29kZXJTdHJlYW0ucHJvdG90eXBlLmNvbGxlY3Q7XG59O1xuXG5cbi8vID09IEVuY29kZXIgc3RyZWFtID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmZ1bmN0aW9uIEljb252TGl0ZUVuY29kZXJTdHJlYW0oY29udiwgb3B0aW9ucykge1xuICAgIHRoaXMuY29udiA9IGNvbnY7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0aW9ucy5kZWNvZGVTdHJpbmdzID0gZmFsc2U7IC8vIFdlIGFjY2VwdCBvbmx5IHN0cmluZ3MsIHNvIHdlIGRvbid0IG5lZWQgdG8gZGVjb2RlIHRoZW0uXG4gICAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0aW9ucyk7XG59XG5cbkljb252TGl0ZUVuY29kZXJTdHJlYW0ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShUcmFuc2Zvcm0ucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHsgdmFsdWU6IEljb252TGl0ZUVuY29kZXJTdHJlYW0gfVxufSk7XG5cbkljb252TGl0ZUVuY29kZXJTdHJlYW0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbihjaHVuaywgZW5jb2RpbmcsIGRvbmUpIHtcbiAgICBpZiAodHlwZW9mIGNodW5rICE9ICdzdHJpbmcnKVxuICAgICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoXCJJY29udiBlbmNvZGluZyBzdHJlYW0gbmVlZHMgc3RyaW5ncyBhcyBpdHMgaW5wdXQuXCIpKTtcbiAgICB0cnkge1xuICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LndyaXRlKGNodW5rKTtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoKSB0aGlzLnB1c2gocmVzKTtcbiAgICAgICAgZG9uZSgpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBkb25lKGUpO1xuICAgIH1cbn1cblxuSWNvbnZMaXRlRW5jb2RlclN0cmVhbS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24oZG9uZSkge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciByZXMgPSB0aGlzLmNvbnYuZW5kKCk7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkgdGhpcy5wdXNoKHJlcyk7XG4gICAgICAgIGRvbmUoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZG9uZShlKTtcbiAgICB9XG59XG5cbkljb252TGl0ZUVuY29kZXJTdHJlYW0ucHJvdG90eXBlLmNvbGxlY3QgPSBmdW5jdGlvbihjYikge1xuICAgIHZhciBjaHVua3MgPSBbXTtcbiAgICB0aGlzLm9uKCdlcnJvcicsIGNiKTtcbiAgICB0aGlzLm9uKCdkYXRhJywgZnVuY3Rpb24oY2h1bmspIHsgY2h1bmtzLnB1c2goY2h1bmspOyB9KTtcbiAgICB0aGlzLm9uKCdlbmQnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgY2IobnVsbCwgQnVmZmVyLmNvbmNhdChjaHVua3MpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbn1cblxuXG4vLyA9PSBEZWNvZGVyIHN0cmVhbSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5mdW5jdGlvbiBJY29udkxpdGVEZWNvZGVyU3RyZWFtKGNvbnYsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmNvbnYgPSBjb252O1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIG9wdGlvbnMuZW5jb2RpbmcgPSB0aGlzLmVuY29kaW5nID0gJ3V0ZjgnOyAvLyBXZSBvdXRwdXQgc3RyaW5ncy5cbiAgICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFRyYW5zZm9ybS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogSWNvbnZMaXRlRGVjb2RlclN0cmVhbSB9XG59KTtcblxuSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uKGNodW5rLCBlbmNvZGluZywgZG9uZSkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGNodW5rKSlcbiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKFwiSWNvbnYgZGVjb2Rpbmcgc3RyZWFtIG5lZWRzIGJ1ZmZlcnMgYXMgaXRzIGlucHV0LlwiKSk7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29udi53cml0ZShjaHVuayk7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkgdGhpcy5wdXNoKHJlcywgdGhpcy5lbmNvZGluZyk7XG4gICAgICAgIGRvbmUoKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZG9uZShlKTtcbiAgICB9XG59XG5cbkljb252TGl0ZURlY29kZXJTdHJlYW0ucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LmVuZCgpO1xuICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHRoaXMucHVzaChyZXMsIHRoaXMuZW5jb2RpbmcpOyAgICAgICAgICAgICAgICBcbiAgICAgICAgZG9uZSgpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBkb25lKGUpO1xuICAgIH1cbn1cblxuSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUuY29sbGVjdCA9IGZ1bmN0aW9uKGNiKSB7XG4gICAgdmFyIHJlcyA9ICcnO1xuICAgIHRoaXMub24oJ2Vycm9yJywgY2IpO1xuICAgIHRoaXMub24oJ2RhdGEnLCBmdW5jdGlvbihjaHVuaykgeyByZXMgKz0gY2h1bms7IH0pO1xuICAgIHRoaXMub24oJ2VuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBjYihudWxsLCByZXMpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xufVxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9saWIvc3RyZWFtcy5qc1xuLy8gbW9kdWxlIGlkID0gMTQ5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlwidXNlIHN0cmljdFwiO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoXCJidWZmZXJcIikuQnVmZmVyO1xuXG4vLyA9PSBFeHRlbmQgTm9kZSBwcmltaXRpdmVzIHRvIHVzZSBpY29udi1saXRlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpY29udikge1xuICAgIHZhciBvcmlnaW5hbCA9IHVuZGVmaW5lZDsgLy8gUGxhY2UgdG8ga2VlcCBvcmlnaW5hbCBtZXRob2RzLlxuXG4gICAgLy8gTm9kZSBhdXRob3JzIHJld3JvdGUgQnVmZmVyIGludGVybmFscyB0byBtYWtlIGl0IGNvbXBhdGlibGUgd2l0aFxuICAgIC8vIFVpbnQ4QXJyYXkgYW5kIHdlIGNhbm5vdCBwYXRjaCBrZXkgZnVuY3Rpb25zIHNpbmNlIHRoZW4uXG4gICAgaWNvbnYuc3VwcG9ydHNOb2RlRW5jb2RpbmdzRXh0ZW5zaW9uID0gIShuZXcgQnVmZmVyKDApIGluc3RhbmNlb2YgVWludDhBcnJheSk7XG5cbiAgICBpY29udi5leHRlbmROb2RlRW5jb2RpbmdzID0gZnVuY3Rpb24gZXh0ZW5kTm9kZUVuY29kaW5ncygpIHtcbiAgICAgICAgaWYgKG9yaWdpbmFsKSByZXR1cm47XG4gICAgICAgIG9yaWdpbmFsID0ge307XG5cbiAgICAgICAgaWYgKCFpY29udi5zdXBwb3J0c05vZGVFbmNvZGluZ3NFeHRlbnNpb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJBQ1RJT04gTkVFREVEOiByZXF1aXJlKCdpY29udi1saXRlJykuZXh0ZW5kTm9kZUVuY29kaW5ncygpIGlzIG5vdCBzdXBwb3J0ZWQgaW4geW91ciB2ZXJzaW9uIG9mIE5vZGVcIik7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiU2VlIG1vcmUgaW5mbyBhdCBodHRwczovL2dpdGh1Yi5jb20vYXNodHVjaGtpbi9pY29udi1saXRlL3dpa2kvTm9kZS12NC1jb21wYXRpYmlsaXR5XCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5vZGVOYXRpdmVFbmNvZGluZ3MgPSB7XG4gICAgICAgICAgICAnaGV4JzogdHJ1ZSwgJ3V0ZjgnOiB0cnVlLCAndXRmLTgnOiB0cnVlLCAnYXNjaWknOiB0cnVlLCAnYmluYXJ5JzogdHJ1ZSwgXG4gICAgICAgICAgICAnYmFzZTY0JzogdHJ1ZSwgJ3VjczInOiB0cnVlLCAndWNzLTInOiB0cnVlLCAndXRmMTZsZSc6IHRydWUsICd1dGYtMTZsZSc6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgQnVmZmVyLmlzTmF0aXZlRW5jb2RpbmcgPSBmdW5jdGlvbihlbmMpIHtcbiAgICAgICAgICAgIHJldHVybiBlbmMgJiYgbm9kZU5hdGl2ZUVuY29kaW5nc1tlbmMudG9Mb3dlckNhc2UoKV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyAtLSBTbG93QnVmZmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIHZhciBTbG93QnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuU2xvd0J1ZmZlcjtcblxuICAgICAgICBvcmlnaW5hbC5TbG93QnVmZmVyVG9TdHJpbmcgPSBTbG93QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZztcbiAgICAgICAgU2xvd0J1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbihlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICAgICAgICAgICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAvLyBVc2UgbmF0aXZlIGNvbnZlcnNpb24gd2hlbiBwb3NzaWJsZVxuICAgICAgICAgICAgaWYgKEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuU2xvd0J1ZmZlclRvU3RyaW5nLmNhbGwodGhpcywgZW5jb2RpbmcsIHN0YXJ0LCBlbmQpO1xuXG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHVzZSBvdXIgZGVjb2RpbmcgbWV0aG9kLlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGFydCA9PSAndW5kZWZpbmVkJykgc3RhcnQgPSAwO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmQgPT0gJ3VuZGVmaW5lZCcpIGVuZCA9IHRoaXMubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIGljb252LmRlY29kZSh0aGlzLnNsaWNlKHN0YXJ0LCBlbmQpLCBlbmNvZGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICBvcmlnaW5hbC5TbG93QnVmZmVyV3JpdGUgPSBTbG93QnVmZmVyLnByb3RvdHlwZS53cml0ZTtcbiAgICAgICAgU2xvd0J1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAgICAgICAgICAgLy8gU3VwcG9ydCBib3RoIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZylcbiAgICAgICAgICAgIC8vIGFuZCB0aGUgbGVnYWN5IChzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aClcbiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nID0gbGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHsgIC8vIGxlZ2FjeVxuICAgICAgICAgICAgICAgIHZhciBzd2FwID0gZW5jb2Rpbmc7XG4gICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbGVuZ3RoO1xuICAgICAgICAgICAgICAgIGxlbmd0aCA9IHN3YXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9mZnNldCA9ICtvZmZzZXQgfHwgMDtcbiAgICAgICAgICAgIHZhciByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldDtcbiAgICAgICAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gcmVtYWluaW5nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSArbGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gcmVtYWluaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgLy8gVXNlIG5hdGl2ZSBjb252ZXJzaW9uIHdoZW4gcG9zc2libGVcbiAgICAgICAgICAgIGlmIChCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyhlbmNvZGluZykpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLlNsb3dCdWZmZXJXcml0ZS5jYWxsKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKTtcblxuICAgICAgICAgICAgaWYgKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdhdHRlbXB0IHRvIHdyaXRlIGJleW9uZCBidWZmZXIgYm91bmRzJyk7XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdXNlIG91ciBlbmNvZGluZyBtZXRob2QuXG4gICAgICAgICAgICB2YXIgYnVmID0gaWNvbnYuZW5jb2RlKHN0cmluZywgZW5jb2RpbmcpO1xuICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGggPCBsZW5ndGgpIGxlbmd0aCA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgICAgICBidWYuY29weSh0aGlzLCBvZmZzZXQsIDAsIGxlbmd0aCk7XG4gICAgICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLS0gQnVmZmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgIG9yaWdpbmFsLkJ1ZmZlcklzRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZztcbiAgICAgICAgQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbihlbmNvZGluZykge1xuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSB8fCBpY29udi5lbmNvZGluZ0V4aXN0cyhlbmNvZGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICBvcmlnaW5hbC5CdWZmZXJCeXRlTGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGg7XG4gICAgICAgIEJ1ZmZlci5ieXRlTGVuZ3RoID0gU2xvd0J1ZmZlci5ieXRlTGVuZ3RoID0gZnVuY3Rpb24oc3RyLCBlbmNvZGluZykge1xuICAgICAgICAgICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAvLyBVc2UgbmF0aXZlIGNvbnZlcnNpb24gd2hlbiBwb3NzaWJsZVxuICAgICAgICAgICAgaWYgKEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuQnVmZmVyQnl0ZUxlbmd0aC5jYWxsKHRoaXMsIHN0ciwgZW5jb2RpbmcpO1xuXG4gICAgICAgICAgICAvLyBTbG93LCBJIGtub3csIGJ1dCB3ZSBkb24ndCBoYXZlIGEgYmV0dGVyIHdheSB5ZXQuXG4gICAgICAgICAgICByZXR1cm4gaWNvbnYuZW5jb2RlKHN0ciwgZW5jb2RpbmcpLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9yaWdpbmFsLkJ1ZmZlclRvU3RyaW5nID0gQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZztcbiAgICAgICAgQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gICAgICAgICAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZyB8fCAndXRmOCcpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlXG4gICAgICAgICAgICBpZiAoQnVmZmVyLmlzTmF0aXZlRW5jb2RpbmcoZW5jb2RpbmcpKVxuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5CdWZmZXJUb1N0cmluZy5jYWxsKHRoaXMsIGVuY29kaW5nLCBzdGFydCwgZW5kKTtcblxuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb3VyIGRlY29kaW5nIG1ldGhvZC5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhcnQgPT0gJ3VuZGVmaW5lZCcpIHN0YXJ0ID0gMDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kID09ICd1bmRlZmluZWQnKSBlbmQgPSB0aGlzLmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiBpY29udi5kZWNvZGUodGhpcy5zbGljZShzdGFydCwgZW5kKSwgZW5jb2RpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgb3JpZ2luYWwuQnVmZmVyV3JpdGUgPSBCdWZmZXIucHJvdG90eXBlLndyaXRlO1xuICAgICAgICBCdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHtcbiAgICAgICAgICAgIHZhciBfb2Zmc2V0ID0gb2Zmc2V0LCBfbGVuZ3RoID0gbGVuZ3RoLCBfZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgICAgICAgICAgIC8vIFN1cHBvcnQgYm90aCAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpXG4gICAgICAgICAgICAvLyBhbmQgdGhlIGxlZ2FjeSAoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpXG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgICAgICAgICAgICAgIGlmICghaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7ICAvLyBsZWdhY3lcbiAgICAgICAgICAgICAgICB2YXIgc3dhcCA9IGVuY29kaW5nO1xuICAgICAgICAgICAgICAgIGVuY29kaW5nID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IGxlbmd0aDtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBzd2FwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZyB8fCAndXRmOCcpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlXG4gICAgICAgICAgICBpZiAoQnVmZmVyLmlzTmF0aXZlRW5jb2RpbmcoZW5jb2RpbmcpKVxuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5CdWZmZXJXcml0ZS5jYWxsKHRoaXMsIHN0cmluZywgX29mZnNldCwgX2xlbmd0aCwgX2VuY29kaW5nKTtcblxuICAgICAgICAgICAgb2Zmc2V0ID0gK29mZnNldCB8fCAwO1xuICAgICAgICAgICAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSByZW1haW5pbmc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxlbmd0aCA9ICtsZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSByZW1haW5pbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2F0dGVtcHQgdG8gd3JpdGUgYmV5b25kIGJ1ZmZlciBib3VuZHMnKTtcblxuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb3VyIGVuY29kaW5nIG1ldGhvZC5cbiAgICAgICAgICAgIHZhciBidWYgPSBpY29udi5lbmNvZGUoc3RyaW5nLCBlbmNvZGluZyk7XG4gICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCA8IGxlbmd0aCkgbGVuZ3RoID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGJ1Zi5jb3B5KHRoaXMsIG9mZnNldCwgMCwgbGVuZ3RoKTtcbiAgICAgICAgICAgIHJldHVybiBsZW5ndGg7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFNldCBfY2hhcnNXcml0dGVuLlxuICAgICAgICB9XG5cblxuICAgICAgICAvLyAtLSBSZWFkYWJsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgIGlmIChpY29udi5zdXBwb3J0c1N0cmVhbXMpIHtcbiAgICAgICAgICAgIHZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJ3N0cmVhbScpLlJlYWRhYmxlO1xuXG4gICAgICAgICAgICBvcmlnaW5hbC5SZWFkYWJsZVNldEVuY29kaW5nID0gUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nO1xuICAgICAgICAgICAgUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RW5jb2RpbmcoZW5jLCBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIG91ciBvd24gZGVjb2RlciwgaXQgaGFzIHRoZSBzYW1lIGludGVyZmFjZS5cbiAgICAgICAgICAgICAgICAvLyBXZSBjYW5ub3QgdXNlIG9yaWdpbmFsIGZ1bmN0aW9uIGFzIGl0IGRvZXNuJ3QgaGFuZGxlIEJPTS1zLlxuICAgICAgICAgICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IGljb252LmdldERlY29kZXIoZW5jLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nID0gZW5jO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBSZWFkYWJsZS5wcm90b3R5cGUuY29sbGVjdCA9IGljb252Ll9jb2xsZWN0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGljb252LWxpdGUgTm9kZSBwcmltaXRpdmUgZXh0ZW5zaW9ucy5cbiAgICBpY29udi51bmRvRXh0ZW5kTm9kZUVuY29kaW5ncyA9IGZ1bmN0aW9uIHVuZG9FeHRlbmROb2RlRW5jb2RpbmdzKCkge1xuICAgICAgICBpZiAoIWljb252LnN1cHBvcnRzTm9kZUVuY29kaW5nc0V4dGVuc2lvbilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFvcmlnaW5hbClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInJlcXVpcmUoJ2ljb252LWxpdGUnKS51bmRvRXh0ZW5kTm9kZUVuY29kaW5ncygpOiBOb3RoaW5nIHRvIHVuZG87IGV4dGVuZE5vZGVFbmNvZGluZ3MoKSBpcyBub3QgY2FsbGVkLlwiKVxuXG4gICAgICAgIGRlbGV0ZSBCdWZmZXIuaXNOYXRpdmVFbmNvZGluZztcblxuICAgICAgICB2YXIgU2xvd0J1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLlNsb3dCdWZmZXI7XG5cbiAgICAgICAgU2xvd0J1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBvcmlnaW5hbC5TbG93QnVmZmVyVG9TdHJpbmc7XG4gICAgICAgIFNsb3dCdWZmZXIucHJvdG90eXBlLndyaXRlID0gb3JpZ2luYWwuU2xvd0J1ZmZlcldyaXRlO1xuXG4gICAgICAgIEJ1ZmZlci5pc0VuY29kaW5nID0gb3JpZ2luYWwuQnVmZmVySXNFbmNvZGluZztcbiAgICAgICAgQnVmZmVyLmJ5dGVMZW5ndGggPSBvcmlnaW5hbC5CdWZmZXJCeXRlTGVuZ3RoO1xuICAgICAgICBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gb3JpZ2luYWwuQnVmZmVyVG9TdHJpbmc7XG4gICAgICAgIEJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBvcmlnaW5hbC5CdWZmZXJXcml0ZTtcblxuICAgICAgICBpZiAoaWNvbnYuc3VwcG9ydHNTdHJlYW1zKSB7XG4gICAgICAgICAgICB2YXIgUmVhZGFibGUgPSByZXF1aXJlKCdzdHJlYW0nKS5SZWFkYWJsZTtcblxuICAgICAgICAgICAgUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gb3JpZ2luYWwuUmVhZGFibGVTZXRFbmNvZGluZztcbiAgICAgICAgICAgIGRlbGV0ZSBSZWFkYWJsZS5wcm90b3R5cGUuY29sbGVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9yaWdpbmFsID0gdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2xpYi9leHRlbmQtbm9kZS5qc1xuLy8gbW9kdWxlIGlkID0gMTUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZWUtZmlyc3RcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmaXJzdFxuXG4vKipcbiAqIEdldCB0aGUgZmlyc3QgZXZlbnQgaW4gYSBzZXQgb2YgZXZlbnQgZW1pdHRlcnMgYW5kIGV2ZW50IHBhaXJzLlxuICpcbiAqIEBwYXJhbSB7YXJyYXl9IHN0dWZmXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBkb25lXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZmlyc3Qoc3R1ZmYsIGRvbmUpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHN0dWZmKSlcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmcgbXVzdCBiZSBhbiBhcnJheSBvZiBbZWUsIGV2ZW50cy4uLl0gYXJyYXlzJylcblxuICB2YXIgY2xlYW51cHMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R1ZmYubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYXJyID0gc3R1ZmZbaV1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpIHx8IGFyci5sZW5ndGggPCAyKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZWFjaCBhcnJheSBtZW1iZXIgbXVzdCBiZSBbZWUsIGV2ZW50cy4uLl0nKVxuXG4gICAgdmFyIGVlID0gYXJyWzBdXG5cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8IGFyci5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIGV2ZW50ID0gYXJyW2pdXG4gICAgICB2YXIgZm4gPSBsaXN0ZW5lcihldmVudCwgY2FsbGJhY2spXG5cbiAgICAgIC8vIGxpc3RlbiB0byB0aGUgZXZlbnRcbiAgICAgIGVlLm9uKGV2ZW50LCBmbilcbiAgICAgIC8vIHB1c2ggdGhpcyBsaXN0ZW5lciB0byB0aGUgbGlzdCBvZiBjbGVhbnVwc1xuICAgICAgY2xlYW51cHMucHVzaCh7XG4gICAgICAgIGVlOiBlZSxcbiAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICBmbjogZm4sXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgIGNsZWFudXAoKVxuICAgIGRvbmUuYXBwbHkobnVsbCwgYXJndW1lbnRzKVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICB2YXIgeFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xlYW51cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHggPSBjbGVhbnVwc1tpXVxuICAgICAgeC5lZS5yZW1vdmVMaXN0ZW5lcih4LmV2ZW50LCB4LmZuKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRodW5rKGZuKSB7XG4gICAgZG9uZSA9IGZuXG4gIH1cblxuICB0aHVuay5jYW5jZWwgPSBjbGVhbnVwXG5cbiAgcmV0dXJuIHRodW5rXG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBldmVudCBsaXN0ZW5lci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbGlzdGVuZXIoZXZlbnQsIGRvbmUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIG9uZXZlbnQoYXJnMSkge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpXG4gICAgdmFyIGVlID0gdGhpc1xuICAgIHZhciBlcnIgPSBldmVudCA9PT0gJ2Vycm9yJ1xuICAgICAgPyBhcmcxXG4gICAgICA6IG51bGxcblxuICAgIC8vIGNvcHkgYXJncyB0byBwcmV2ZW50IGFyZ3VtZW50cyBlc2NhcGluZyBzY29wZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXVxuICAgIH1cblxuICAgIGRvbmUoZXJyLCBlZSwgZXZlbnQsIGFyZ3MpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9lZS1maXJzdC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTUxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInpsaWJcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJ6bGliXCJcbi8vIG1vZHVsZSBpZCA9IDE1MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIG1lZGlhLXR5cGVyXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggKiggXCI7XCIgcGFyYW1ldGVyICkgaW4gUkZDIDI2MTYgc2VjIDMuN1xuICpcbiAqIHBhcmFtZXRlciAgICAgPSB0b2tlbiBcIj1cIiAoIHRva2VuIHwgcXVvdGVkLXN0cmluZyApXG4gKiB0b2tlbiAgICAgICAgID0gMSo8YW55IENIQVIgZXhjZXB0IENUTHMgb3Igc2VwYXJhdG9ycz5cbiAqIHNlcGFyYXRvcnMgICAgPSBcIihcIiB8IFwiKVwiIHwgXCI8XCIgfCBcIj5cIiB8IFwiQFwiXG4gKiAgICAgICAgICAgICAgIHwgXCIsXCIgfCBcIjtcIiB8IFwiOlwiIHwgXCJcXFwiIHwgPFwiPlxuICogICAgICAgICAgICAgICB8IFwiL1wiIHwgXCJbXCIgfCBcIl1cIiB8IFwiP1wiIHwgXCI9XCJcbiAqICAgICAgICAgICAgICAgfCBcIntcIiB8IFwifVwiIHwgU1AgfCBIVFxuICogcXVvdGVkLXN0cmluZyA9ICggPFwiPiAqKHFkdGV4dCB8IHF1b3RlZC1wYWlyICkgPFwiPiApXG4gKiBxZHRleHQgICAgICAgID0gPGFueSBURVhUIGV4Y2VwdCA8XCI+PlxuICogcXVvdGVkLXBhaXIgICA9IFwiXFxcIiBDSEFSXG4gKiBDSEFSICAgICAgICAgID0gPGFueSBVUy1BU0NJSSBjaGFyYWN0ZXIgKG9jdGV0cyAwIC0gMTI3KT5cbiAqIFRFWFQgICAgICAgICAgPSA8YW55IE9DVEVUIGV4Y2VwdCBDVExzLCBidXQgaW5jbHVkaW5nIExXUz5cbiAqIExXUyAgICAgICAgICAgPSBbQ1JMRl0gMSooIFNQIHwgSFQgKVxuICogQ1JMRiAgICAgICAgICA9IENSIExGXG4gKiBDUiAgICAgICAgICAgID0gPFVTLUFTQ0lJIENSLCBjYXJyaWFnZSByZXR1cm4gKDEzKT5cbiAqIExGICAgICAgICAgICAgPSA8VVMtQVNDSUkgTEYsIGxpbmVmZWVkICgxMCk+XG4gKiBTUCAgICAgICAgICAgID0gPFVTLUFTQ0lJIFNQLCBzcGFjZSAoMzIpPlxuICogU0hUICAgICAgICAgICA9IDxVUy1BU0NJSSBIVCwgaG9yaXpvbnRhbC10YWIgKDkpPlxuICogQ1RMICAgICAgICAgICA9IDxhbnkgVVMtQVNDSUkgY29udHJvbCBjaGFyYWN0ZXIgKG9jdGV0cyAwIC0gMzEpIGFuZCBERUwgKDEyNyk+XG4gKiBPQ1RFVCAgICAgICAgID0gPGFueSA4LWJpdCBzZXF1ZW5jZSBvZiBkYXRhPlxuICovXG52YXIgcGFyYW1SZWdFeHAgPSAvOyAqKFshIyQlJidcXCpcXCtcXC1cXC4wLTlBLVpcXF5fYGEtelxcfH5dKykgKj0gKihcIig/OlsgIVxcdTAwMjMtXFx1MDA1YlxcdTAwNWQtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl18XFxcXFtcXHUwMDIwLVxcdTAwN2VdKSpcInxbISMkJSYnXFwqXFwrXFwtXFwuMC05QS1aXFxeX2BhLXpcXHx+XSspICovZztcbnZhciB0ZXh0UmVnRXhwID0gL15bXFx1MDAyMC1cXHUwMDdlXFx1MDA4MC1cXHUwMGZmXSskL1xudmFyIHRva2VuUmVnRXhwID0gL15bISMkJSYnXFwqXFwrXFwtXFwuMC05QS1aXFxeX2BhLXpcXHx+XSskL1xuXG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCBxdW90ZWQtcGFpciBpbiBSRkMgMjYxNlxuICpcbiAqIHF1b3RlZC1wYWlyID0gXCJcXFwiIENIQVJcbiAqIENIQVIgICAgICAgID0gPGFueSBVUy1BU0NJSSBjaGFyYWN0ZXIgKG9jdGV0cyAwIC0gMTI3KT5cbiAqL1xudmFyIHFlc2NSZWdFeHAgPSAvXFxcXChbXFx1MDAwMC1cXHUwMDdmXSkvZztcblxuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggY2hhcnMgdGhhdCBtdXN0IGJlIHF1b3RlZC1wYWlyIGluIFJGQyAyNjE2XG4gKi9cbnZhciBxdW90ZVJlZ0V4cCA9IC8oW1xcXFxcIl0pL2c7XG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHR5cGUgaW4gUkZDIDY4MzhcbiAqXG4gKiB0eXBlLW5hbWUgPSByZXN0cmljdGVkLW5hbWVcbiAqIHN1YnR5cGUtbmFtZSA9IHJlc3RyaWN0ZWQtbmFtZVxuICogcmVzdHJpY3RlZC1uYW1lID0gcmVzdHJpY3RlZC1uYW1lLWZpcnN0ICoxMjZyZXN0cmljdGVkLW5hbWUtY2hhcnNcbiAqIHJlc3RyaWN0ZWQtbmFtZS1maXJzdCAgPSBBTFBIQSAvIERJR0lUXG4gKiByZXN0cmljdGVkLW5hbWUtY2hhcnMgID0gQUxQSEEgLyBESUdJVCAvIFwiIVwiIC8gXCIjXCIgL1xuICogICAgICAgICAgICAgICAgICAgICAgICAgIFwiJFwiIC8gXCImXCIgLyBcIi1cIiAvIFwiXlwiIC8gXCJfXCJcbiAqIHJlc3RyaWN0ZWQtbmFtZS1jaGFycyA9LyBcIi5cIiA7IENoYXJhY3RlcnMgYmVmb3JlIGZpcnN0IGRvdCBhbHdheXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBzcGVjaWZ5IGEgZmFjZXQgbmFtZVxuICogcmVzdHJpY3RlZC1uYW1lLWNoYXJzID0vIFwiK1wiIDsgQ2hhcmFjdGVycyBhZnRlciBsYXN0IHBsdXMgYWx3YXlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgc3BlY2lmeSBhIHN0cnVjdHVyZWQgc3ludGF4IHN1ZmZpeFxuICogQUxQSEEgPSAgJXg0MS01QSAvICV4NjEtN0EgICA7IEEtWiAvIGEtelxuICogRElHSVQgPSAgJXgzMC0zOSAgICAgICAgICAgICA7IDAtOVxuICovXG52YXIgc3VidHlwZU5hbWVSZWdFeHAgPSAvXltBLVphLXowLTldW0EtWmEtejAtOSEjJCZeXy4tXXswLDEyNn0kL1xudmFyIHR5cGVOYW1lUmVnRXhwID0gL15bQS1aYS16MC05XVtBLVphLXowLTkhIyQmXl8tXXswLDEyNn0kL1xudmFyIHR5cGVSZWdFeHAgPSAvXiAqKFtBLVphLXowLTldW0EtWmEtejAtOSEjJCZeXy1dezAsMTI2fSlcXC8oW0EtWmEtejAtOV1bQS1aYS16MC05ISMkJl5fListXXswLDEyNn0pICokLztcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdCA9IGZvcm1hdFxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlXG5cbi8qKlxuICogRm9ybWF0IG9iamVjdCB0byBtZWRpYSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0KG9iaikge1xuICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IG9iaiBpcyByZXF1aXJlZCcpXG4gIH1cblxuICB2YXIgcGFyYW1ldGVycyA9IG9iai5wYXJhbWV0ZXJzXG4gIHZhciBzdWJ0eXBlID0gb2JqLnN1YnR5cGVcbiAgdmFyIHN1ZmZpeCA9IG9iai5zdWZmaXhcbiAgdmFyIHR5cGUgPSBvYmoudHlwZVxuXG4gIGlmICghdHlwZSB8fCAhdHlwZU5hbWVSZWdFeHAudGVzdCh0eXBlKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgdHlwZScpXG4gIH1cblxuICBpZiAoIXN1YnR5cGUgfHwgIXN1YnR5cGVOYW1lUmVnRXhwLnRlc3Qoc3VidHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1YnR5cGUnKVxuICB9XG5cbiAgLy8gZm9ybWF0IGFzIHR5cGUvc3VidHlwZVxuICB2YXIgc3RyaW5nID0gdHlwZSArICcvJyArIHN1YnR5cGVcblxuICAvLyBhcHBlbmQgK3N1ZmZpeFxuICBpZiAoc3VmZml4KSB7XG4gICAgaWYgKCF0eXBlTmFtZVJlZ0V4cC50ZXN0KHN1ZmZpeCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VmZml4JylcbiAgICB9XG5cbiAgICBzdHJpbmcgKz0gJysnICsgc3VmZml4XG4gIH1cblxuICAvLyBhcHBlbmQgcGFyYW1ldGVyc1xuICBpZiAocGFyYW1ldGVycyAmJiB0eXBlb2YgcGFyYW1ldGVycyA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcGFyYW1cbiAgICB2YXIgcGFyYW1zID0gT2JqZWN0LmtleXMocGFyYW1ldGVycykuc29ydCgpXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgcGFyYW0gPSBwYXJhbXNbaV1cblxuICAgICAgaWYgKCF0b2tlblJlZ0V4cC50ZXN0KHBhcmFtKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHBhcmFtZXRlciBuYW1lJylcbiAgICAgIH1cblxuICAgICAgc3RyaW5nICs9ICc7ICcgKyBwYXJhbSArICc9JyArIHFzdHJpbmcocGFyYW1ldGVyc1twYXJhbV0pXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cmluZ1xufVxuXG4vKipcbiAqIFBhcnNlIG1lZGlhIHR5cGUgdG8gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gc3RyaW5nXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHBhcnNlKHN0cmluZykge1xuICBpZiAoIXN0cmluZykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHN0cmluZyBpcyByZXF1aXJlZCcpXG4gIH1cblxuICAvLyBzdXBwb3J0IHJlcS9yZXMtbGlrZSBvYmplY3RzIGFzIGFyZ3VtZW50XG4gIGlmICh0eXBlb2Ygc3RyaW5nID09PSAnb2JqZWN0Jykge1xuICAgIHN0cmluZyA9IGdldGNvbnRlbnR0eXBlKHN0cmluZylcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHN0cmluZyBpcyByZXF1aXJlZCB0byBiZSBhIHN0cmluZycpXG4gIH1cblxuICB2YXIgaW5kZXggPSBzdHJpbmcuaW5kZXhPZignOycpXG4gIHZhciB0eXBlID0gaW5kZXggIT09IC0xXG4gICAgPyBzdHJpbmcuc3Vic3RyKDAsIGluZGV4KVxuICAgIDogc3RyaW5nXG5cbiAgdmFyIGtleVxuICB2YXIgbWF0Y2hcbiAgdmFyIG9iaiA9IHNwbGl0VHlwZSh0eXBlKVxuICB2YXIgcGFyYW1zID0ge31cbiAgdmFyIHZhbHVlXG5cbiAgcGFyYW1SZWdFeHAubGFzdEluZGV4ID0gaW5kZXhcblxuICB3aGlsZSAobWF0Y2ggPSBwYXJhbVJlZ0V4cC5leGVjKHN0cmluZykpIHtcbiAgICBpZiAobWF0Y2guaW5kZXggIT09IGluZGV4KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHBhcmFtZXRlciBmb3JtYXQnKVxuICAgIH1cblxuICAgIGluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aFxuICAgIGtleSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKClcbiAgICB2YWx1ZSA9IG1hdGNoWzJdXG5cbiAgICBpZiAodmFsdWVbMF0gPT09ICdcIicpIHtcbiAgICAgIC8vIHJlbW92ZSBxdW90ZXMgYW5kIGVzY2FwZXNcbiAgICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgLnN1YnN0cigxLCB2YWx1ZS5sZW5ndGggLSAyKVxuICAgICAgICAucmVwbGFjZShxZXNjUmVnRXhwLCAnJDEnKVxuICAgIH1cblxuICAgIHBhcmFtc1trZXldID0gdmFsdWVcbiAgfVxuXG4gIGlmIChpbmRleCAhPT0gLTEgJiYgaW5kZXggIT09IHN0cmluZy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHBhcmFtZXRlciBmb3JtYXQnKVxuICB9XG5cbiAgb2JqLnBhcmFtZXRlcnMgPSBwYXJhbXNcblxuICByZXR1cm4gb2JqXG59XG5cbi8qKlxuICogR2V0IGNvbnRlbnQtdHlwZSBmcm9tIHJlcS9yZXMgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH1cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldGNvbnRlbnR0eXBlKG9iaikge1xuICBpZiAodHlwZW9mIG9iai5nZXRIZWFkZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyByZXMtbGlrZVxuICAgIHJldHVybiBvYmouZ2V0SGVhZGVyKCdjb250ZW50LXR5cGUnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmouaGVhZGVycyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyByZXEtbGlrZVxuICAgIHJldHVybiBvYmouaGVhZGVycyAmJiBvYmouaGVhZGVyc1snY29udGVudC10eXBlJ11cbiAgfVxufVxuXG4vKipcbiAqIFF1b3RlIGEgc3RyaW5nIGlmIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBxc3RyaW5nKHZhbCkge1xuICB2YXIgc3RyID0gU3RyaW5nKHZhbClcblxuICAvLyBubyBuZWVkIHRvIHF1b3RlIHRva2Vuc1xuICBpZiAodG9rZW5SZWdFeHAudGVzdChzdHIpKSB7XG4gICAgcmV0dXJuIHN0clxuICB9XG5cbiAgaWYgKHN0ci5sZW5ndGggPiAwICYmICF0ZXh0UmVnRXhwLnRlc3Qoc3RyKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgcGFyYW1ldGVyIHZhbHVlJylcbiAgfVxuXG4gIHJldHVybiAnXCInICsgc3RyLnJlcGxhY2UocXVvdGVSZWdFeHAsICdcXFxcJDEnKSArICdcIidcbn1cblxuLyoqXG4gKiBTaW1wbHkgXCJ0eXBlL3N1YnR5cGUrc2lmZnhcIiBpbnRvIHBhcnRzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNwbGl0VHlwZShzdHJpbmcpIHtcbiAgdmFyIG1hdGNoID0gdHlwZVJlZ0V4cC5leGVjKHN0cmluZy50b0xvd2VyQ2FzZSgpKVxuXG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIG1lZGlhIHR5cGUnKVxuICB9XG5cbiAgdmFyIHR5cGUgPSBtYXRjaFsxXVxuICB2YXIgc3VidHlwZSA9IG1hdGNoWzJdXG4gIHZhciBzdWZmaXhcblxuICAvLyBzdWZmaXggYWZ0ZXIgbGFzdCArXG4gIHZhciBpbmRleCA9IHN1YnR5cGUubGFzdEluZGV4T2YoJysnKVxuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgc3VmZml4ID0gc3VidHlwZS5zdWJzdHIoaW5kZXggKyAxKVxuICAgIHN1YnR5cGUgPSBzdWJ0eXBlLnN1YnN0cigwLCBpbmRleClcbiAgfVxuXG4gIHZhciBvYmogPSB7XG4gICAgdHlwZTogdHlwZSxcbiAgICBzdWJ0eXBlOiBzdWJ0eXBlLFxuICAgIHN1ZmZpeDogc3VmZml4XG4gIH1cblxuICByZXR1cm4gb2JqXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbWVkaWEtdHlwZXIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIG1pbWUtZGJcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZGIuanNvbicpXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbWltZS1kYi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTU0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0ge1wiYXBwbGljYXRpb24vMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vM2dwZGFzaC1xb2UtcmVwb3J0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uLzNncHAtaW1zK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2EybFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2FjdGl2ZW1lc3NhZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9hbHRvLWNvc3RtYXAranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9hbHRvLWNvc3RtYXBmaWx0ZXIranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9hbHRvLWRpcmVjdG9yeStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRjb3N0K2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vYWx0by1lbmRwb2ludGNvc3RwYXJhbXMranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50cHJvcCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRwcm9wcGFyYW1zK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vYWx0by1lcnJvcitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2FsdG8tbmV0d29ya21hcCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2FsdG8tbmV0d29ya21hcGZpbHRlcitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2FtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2FuZHJldy1pbnNldFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImV6XCJdfSxcImFwcGxpY2F0aW9uL2FwcGxlZmlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2FwcGxpeHdhcmVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImF3XCJdfSxcImFwcGxpY2F0aW9uL2F0ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2F0ZnhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9hdG9tK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJhdG9tXCJdfSxcImFwcGxpY2F0aW9uL2F0b21jYXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYXRvbWNhdFwiXX0sXCJhcHBsaWNhdGlvbi9hdG9tZGVsZXRlZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9hdG9taWNtYWlsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vYXRvbXN2Yyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhdG9tc3ZjXCJdfSxcImFwcGxpY2F0aW9uL2F0eG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vYXV0aC1wb2xpY3kreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vYmFjbmV0LXhkZCt6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9iYXRjaC1zbXRwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vYmRvY1wiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImJkb2NcIl19LFwiYXBwbGljYXRpb24vYmVlcCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jYWxlbmRhcitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2NhbGVuZGFyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NhbGwtY29tcGxldGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NhbHMtMTg0MFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2Nib3JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jY2NleFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NjbXAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY2N4bWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2N4bWxcIl19LFwiYXBwbGljYXRpb24vY2RmeCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jZG1pLWNhcGFiaWxpdHlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjZG1pYVwiXX0sXCJhcHBsaWNhdGlvbi9jZG1pLWNvbnRhaW5lclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNkbWljXCJdfSxcImFwcGxpY2F0aW9uL2NkbWktZG9tYWluXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2RtaWRcIl19LFwiYXBwbGljYXRpb24vY2RtaS1vYmplY3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjZG1pb1wiXX0sXCJhcHBsaWNhdGlvbi9jZG1pLXF1ZXVlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2RtaXFcIl19LFwiYXBwbGljYXRpb24vY2RuaVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NlYVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NlYS0yMDE4K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NlbGxtbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jZndcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jbHVlX2luZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY21zXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY25ycCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jb2FwLWdyb3VwK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vY29hcC1wYXlsb2FkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY29tbW9uZ3JvdW5kXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY29uZmVyZW5jZS1pbmZvK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2Nvc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jb3NlLWtleVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2Nvc2Uta2V5LXNldFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NwbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jc3JhdHRyc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NzdGEreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY3N0YWRhdGEreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY3N2bStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2N1LXNlZW1lXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjdVwiXX0sXCJhcHBsaWNhdGlvbi9jeWJlcmNhc2hcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9kYXJ0XCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9kYXNoK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1wZFwiXX0sXCJhcHBsaWNhdGlvbi9kYXNoZGVsdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9kYXZtb3VudCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkYXZtb3VudFwiXX0sXCJhcHBsaWNhdGlvbi9kY2EtcmZ0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZGNkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZGVjLWR4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZGlhbG9nLWluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZGljb21cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9kaWNvbStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2RpY29tK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2RpaVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2RpdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2Ruc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2RvY2Jvb2sreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJkYmtcIl19LFwiYXBwbGljYXRpb24vZHNrcHAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZHNzYytkZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkc3NjXCJdfSxcImFwcGxpY2F0aW9uL2Rzc2MreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieGRzc2NcIl19LFwiYXBwbGljYXRpb24vZHZjc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2VjbWFzY3JpcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiZWNtYVwiXX0sXCJhcHBsaWNhdGlvbi9lZGktY29uc2VudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2VkaS14MTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcImFwcGxpY2F0aW9uL2VkaWZhY3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcImFwcGxpY2F0aW9uL2VmaVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLmNvbW1lbnQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuY29udHJvbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5kZXZpY2VpbmZvK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLmVjYWxsLm1zZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLnByb3ZpZGVyaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5zZXJ2aWNlaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5zdWJzY3JpYmVyaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS52ZWRzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2VtbWEreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZW1tYVwiXX0sXCJhcHBsaWNhdGlvbi9lbW90aW9ubWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZW5jYXBydHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lcHAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZXB1Yit6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlcHViXCJdfSxcImFwcGxpY2F0aW9uL2VzaG9wXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZXhpXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZXhpXCJdfSxcImFwcGxpY2F0aW9uL2Zhc3RpbmZvc2V0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZmFzdHNvYXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9mZHQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZmhpcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9maWRvLnRydXN0ZWQtYXBwcytqc29uXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9maXRzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZm9udC1zZm50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZm9udC10ZHBmclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBmclwiXX0sXCJhcHBsaWNhdGlvbi9mb250LXdvZmZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIndvZmZcIl19LFwiYXBwbGljYXRpb24vZnJhbWV3b3JrLWF0dHJpYnV0ZXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZ2VvK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiZ2VvanNvblwiXX0sXCJhcHBsaWNhdGlvbi9nZW8ranNvbi1zZXFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9nZW94YWNtbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9nbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ21sXCJdfSxcImFwcGxpY2F0aW9uL2dweCt4bWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImdweFwiXX0sXCJhcHBsaWNhdGlvbi9neGZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImd4ZlwiXX0sXCJhcHBsaWNhdGlvbi9nemlwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJnelwiXX0sXCJhcHBsaWNhdGlvbi9oMjI0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaGVsZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9oanNvblwiOntcImV4dGVuc2lvbnNcIjpbXCJoanNvblwiXX0sXCJhcHBsaWNhdGlvbi9odHRwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaHlwZXJzdHVkaW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzdGtcIl19LFwiYXBwbGljYXRpb24vaWJlLWtleS1yZXF1ZXN0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2liZS1wa2ctcmVwbHkreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaWJlLXBwLWRhdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9pZ2VzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaW0taXNjb21wb3NpbmcreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaW5kZXhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9pbmRleC5jbWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9pbmRleC5vYmpcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9pbmRleC5yZXNwb25zZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2luZGV4LnZuZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2lua21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImlua1wiLFwiaW5rbWxcIl19LFwiYXBwbGljYXRpb24vaW90cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2lwZml4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaXBmaXhcIl19LFwiYXBwbGljYXRpb24vaXBwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaXN1cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2l0cyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiamFyXCIsXCJ3YXJcIixcImVhclwiXX0sXCJhcHBsaWNhdGlvbi9qYXZhLXNlcmlhbGl6ZWQtb2JqZWN0XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInNlclwiXX0sXCJhcHBsaWNhdGlvbi9qYXZhLXZtXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImNsYXNzXCJdfSxcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNoYXJzZXRcIjpcIlVURi04XCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImpzXCIsXCJtanNcIl19LFwiYXBwbGljYXRpb24vamYyZmVlZCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2pvc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9qb3NlK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vanJkK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vanNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY2hhcnNldFwiOlwiVVRGLThcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wianNvblwiLFwibWFwXCJdfSxcImFwcGxpY2F0aW9uL2pzb24tcGF0Y2granNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9qc29uLXNlcVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2pzb241XCI6e1wiZXh0ZW5zaW9uc1wiOltcImpzb241XCJdfSxcImFwcGxpY2F0aW9uL2pzb25tbCtqc29uXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wianNvbm1sXCJdfSxcImFwcGxpY2F0aW9uL2p3aytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2p3ay1zZXQranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9qd3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9rcG1sLXJlcXVlc3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24va3BtbC1yZXNwb25zZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9sZCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImpzb25sZFwiXX0sXCJhcHBsaWNhdGlvbi9sZ3IreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbGluay1mb3JtYXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9sb2FkLWNvbnRyb2wreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbG9zdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJsb3N0eG1sXCJdfSxcImFwcGxpY2F0aW9uL2xvc3RzeW5jK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2x4ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21hYy1iaW5oZXg0MFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImhxeFwiXX0sXCJhcHBsaWNhdGlvbi9tYWMtY29tcGFjdHByb1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY3B0XCJdfSxcImFwcGxpY2F0aW9uL21hY3dyaXRlaWlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYWRzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1hZHNcIl19LFwiYXBwbGljYXRpb24vbWFuaWZlc3QranNvblwiOntcImNoYXJzZXRcIjpcIlVURi04XCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcIndlYm1hbmlmZXN0XCJdfSxcImFwcGxpY2F0aW9uL21hcmNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtcmNcIl19LFwiYXBwbGljYXRpb24vbWFyY3htbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtcmN4XCJdfSxcImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWFcIixcIm5iXCIsXCJtYlwiXX0sXCJhcHBsaWNhdGlvbi9tYXRobWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWF0aG1sXCJdfSxcImFwcGxpY2F0aW9uL21hdGhtbC1jb250ZW50K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21hdGhtbC1wcmVzZW50YXRpb24reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWJtcy1hc3NvY2lhdGVkLXByb2NlZHVyZS1kZXNjcmlwdGlvbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYm1zLWRlcmVnaXN0ZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWJtcy1lbnZlbG9wZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYm1zLW1zayt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYm1zLW1zay1yZXNwb25zZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYm1zLXByb3RlY3Rpb24tZGVzY3JpcHRpb24reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWJtcy1yZWNlcHRpb24tcmVwb3J0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21ibXMtcmVnaXN0ZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWJtcy1yZWdpc3Rlci1yZXNwb25zZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYm1zLXNjaGVkdWxlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21ibXMtdXNlci1zZXJ2aWNlLWRlc2NyaXB0aW9uK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21ib3hcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtYm94XCJdfSxcImFwcGxpY2F0aW9uL21lZGlhLXBvbGljeS1kYXRhc2V0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21lZGlhX2NvbnRyb2wreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWVkaWFzZXJ2ZXJjb250cm9sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1zY21sXCJdfSxcImFwcGxpY2F0aW9uL21lcmdlLXBhdGNoK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vbWV0YWxpbmsreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtZXRhbGlua1wiXX0sXCJhcHBsaWNhdGlvbi9tZXRhbGluazQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWV0YTRcIl19LFwiYXBwbGljYXRpb24vbWV0cyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtZXRzXCJdfSxcImFwcGxpY2F0aW9uL21mNFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21pa2V5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbW10LXVzZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tb2RzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1vZHNcIl19LFwiYXBwbGljYXRpb24vbW9zcy1rZXlzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbW9zcy1zaWduYXR1cmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tb3Nza2V5LWRhdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tb3Nza2V5LXJlcXVlc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tcDIxXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibTIxXCIsXCJtcDIxXCJdfSxcImFwcGxpY2F0aW9uL21wNFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1wNHNcIixcIm00cFwiXX0sXCJhcHBsaWNhdGlvbi9tcGVnNC1nZW5lcmljXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbXBlZzQtaW9kXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbXBlZzQtaW9kLXhtdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21yYi1jb25zdW1lcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tcmItcHVibGlzaCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tc2MtaXZyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21zYy1taXhlcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tc3dvcmRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImRvY1wiLFwiZG90XCJdfSxcImFwcGxpY2F0aW9uL211ZCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL214ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm14ZlwiXX0sXCJhcHBsaWNhdGlvbi9uLXF1YWRzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbi10cmlwbGVzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbmFzZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL25ld3MtY2hlY2tncm91cHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9uZXdzLWdyb3VwaW5mb1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL25ld3MtdHJhbnNtaXNzaW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbmxzbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbm9kZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL25zc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL29jc3AtcmVxdWVzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL29jc3AtcmVzcG9uc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImJpblwiLFwiZG1zXCIsXCJscmZcIixcIm1hclwiLFwic29cIixcImRpc3RcIixcImRpc3R6XCIsXCJwa2dcIixcImJwa1wiLFwiZHVtcFwiLFwiZWxjXCIsXCJkZXBsb3lcIixcImV4ZVwiLFwiZGxsXCIsXCJkZWJcIixcImRtZ1wiLFwiaXNvXCIsXCJpbWdcIixcIm1zaVwiLFwibXNwXCIsXCJtc21cIixcImJ1ZmZlclwiXX0sXCJhcHBsaWNhdGlvbi9vZGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvZGFcIl19LFwiYXBwbGljYXRpb24vb2R4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vb2VicHMtcGFja2FnZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvcGZcIl19LFwiYXBwbGljYXRpb24vb2dnXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJvZ3hcIl19LFwiYXBwbGljYXRpb24vb21kb2MreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJvbWRvY1wiXX0sXCJhcHBsaWNhdGlvbi9vbmVub3RlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJvbmV0b2NcIixcIm9uZXRvYzJcIixcIm9uZXRtcFwiLFwib25lcGtnXCJdfSxcImFwcGxpY2F0aW9uL294cHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJveHBzXCJdfSxcImFwcGxpY2F0aW9uL3AycC1vdmVybGF5K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3Bhcml0eWZlY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3Bhc3Nwb3J0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcGF0Y2gtb3BzLWVycm9yK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhlclwiXX0sXCJhcHBsaWNhdGlvbi9wZGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInBkZlwiXX0sXCJhcHBsaWNhdGlvbi9wZHhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wZ3AtZW5jcnlwdGVkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJwZ3BcIl19LFwiYXBwbGljYXRpb24vcGdwLWtleXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wZ3Atc2lnbmF0dXJlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYXNjXCIsXCJzaWdcIl19LFwiYXBwbGljYXRpb24vcGljcy1ydWxlc1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicHJmXCJdfSxcImFwcGxpY2F0aW9uL3BpZGYreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcGlkZi1kaWZmK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3BrY3MxMFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInAxMFwiXX0sXCJhcHBsaWNhdGlvbi9wa2NzMTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wa2NzNy1taW1lXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicDdtXCIsXCJwN2NcIl19LFwiYXBwbGljYXRpb24vcGtjczctc2lnbmF0dXJlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicDdzXCJdfSxcImFwcGxpY2F0aW9uL3BrY3M4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicDhcIl19LFwiYXBwbGljYXRpb24vcGtjczgtZW5jcnlwdGVkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcGtpeC1hdHRyLWNlcnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhY1wiXX0sXCJhcHBsaWNhdGlvbi9wa2l4LWNlcnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjZXJcIl19LFwiYXBwbGljYXRpb24vcGtpeC1jcmxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjcmxcIl19LFwiYXBwbGljYXRpb24vcGtpeC1wa2lwYXRoXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGtpcGF0aFwiXX0sXCJhcHBsaWNhdGlvbi9wa2l4Y21wXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGtpXCJdfSxcImFwcGxpY2F0aW9uL3Bscyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwbHNcIl19LFwiYXBwbGljYXRpb24vcG9jLXNldHRpbmdzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiYWlcIixcImVwc1wiLFwicHNcIl19LFwiYXBwbGljYXRpb24vcHBzcC10cmFja2VyK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vcHJvYmxlbStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3Byb2JsZW0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcHJvdmVuYW5jZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wcnMuYWx2ZXN0cmFuZC50aXRyYXgtc2hlZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wcnMuY3d3XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY3d3XCJdfSxcImFwcGxpY2F0aW9uL3Bycy5ocHViK3ppcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3Bycy5ucHJlbmRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wcnMucGx1Y2tlclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3Bycy5yZGYteG1sLWNyeXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcHJzLnhzZit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wc2tjK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBza2N4bWxcIl19LFwiYXBwbGljYXRpb24vcXNpZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3JhbWwreWFtbFwiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wicmFtbFwiXX0sXCJhcHBsaWNhdGlvbi9yYXB0b3JmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9yZGFwK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vcmRmK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJyZGZcIl19LFwiYXBwbGljYXRpb24vcmVnaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJyaWZcIl19LFwiYXBwbGljYXRpb24vcmVsYXgtbmctY29tcGFjdC1zeW50YXhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJybmNcIl19LFwiYXBwbGljYXRpb24vcmVtb3RlLXByaW50aW5nXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcmVwdXRvbitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3Jlc291cmNlLWxpc3RzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInJsXCJdfSxcImFwcGxpY2F0aW9uL3Jlc291cmNlLWxpc3RzLWRpZmYreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicmxkXCJdfSxcImFwcGxpY2F0aW9uL3JmYyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9yaXNjb3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9ybG1pK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3Jscy1zZXJ2aWNlcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJyc1wiXX0sXCJhcHBsaWNhdGlvbi9yb3V0ZS1hcGQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcm91dGUtcy10c2lkK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3JvdXRlLXVzZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9ycGtpLWdob3N0YnVzdGVyc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdiclwiXX0sXCJhcHBsaWNhdGlvbi9ycGtpLW1hbmlmZXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWZ0XCJdfSxcImFwcGxpY2F0aW9uL3Jwa2ktcHVibGljYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9ycGtpLXJvYVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInJvYVwiXX0sXCJhcHBsaWNhdGlvbi9ycGtpLXVwZG93blwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3JzZCt4bWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInJzZFwiXX0sXCJhcHBsaWNhdGlvbi9yc3MreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wicnNzXCJdfSxcImFwcGxpY2F0aW9uL3J0ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJydGZcIl19LFwiYXBwbGljYXRpb24vcnRwbG9vcGJhY2tcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9ydHhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zYW1sYXNzZXJ0aW9uK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NhbWxtZXRhZGF0YSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zYm1sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNibWxcIl19LFwiYXBwbGljYXRpb24vc2NhaXAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2NpbStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNjcVwiXX0sXCJhcHBsaWNhdGlvbi9zY3ZwLWN2LXJlc3BvbnNlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2NzXCJdfSxcImFwcGxpY2F0aW9uL3NjdnAtdnAtcmVxdWVzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNwcVwiXX0sXCJhcHBsaWNhdGlvbi9zY3ZwLXZwLXJlc3BvbnNlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3BwXCJdfSxcImFwcGxpY2F0aW9uL3NkcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNkcFwiXX0sXCJhcHBsaWNhdGlvbi9zZXAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2VwLWV4aVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3Nlc3Npb24taW5mb1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NldC1wYXltZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2V0LXBheW1lbnQtaW5pdGlhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNldHBheVwiXX0sXCJhcHBsaWNhdGlvbi9zZXQtcmVnaXN0cmF0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2V0LXJlZ2lzdHJhdGlvbi1pbml0aWF0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2V0cmVnXCJdfSxcImFwcGxpY2F0aW9uL3NnbWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zZ21sLW9wZW4tY2F0YWxvZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NoZit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzaGZcIl19LFwiYXBwbGljYXRpb24vc2lldmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zaW1wbGUtZmlsdGVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NpbXBsZS1tZXNzYWdlLXN1bW1hcnlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zaW1wbGVzeW1ib2xjb250YWluZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zbGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NtaWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zbWlsK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNtaVwiLFwic21pbFwiXX0sXCJhcHBsaWNhdGlvbi9zbXB0ZTMzNm1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zb2FwK2Zhc3RpbmZvc2V0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc29hcCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vc3BhcnFsLXF1ZXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicnFcIl19LFwiYXBwbGljYXRpb24vc3BhcnFsLXJlc3VsdHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3J4XCJdfSxcImFwcGxpY2F0aW9uL3NwaXJpdHMtZXZlbnQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc3FsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc3Jnc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdyYW1cIl19LFwiYXBwbGljYXRpb24vc3Jncyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJncnhtbFwiXX0sXCJhcHBsaWNhdGlvbi9zcnUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3J1XCJdfSxcImFwcGxpY2F0aW9uL3NzZGwreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzc2RsXCJdfSxcImFwcGxpY2F0aW9uL3NzbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3NtbFwiXX0sXCJhcHBsaWNhdGlvbi90YW1wLWFwZXgtdXBkYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGFtcC1hcGV4LXVwZGF0ZS1jb25maXJtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGFtcC1jb21tdW5pdHktdXBkYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGFtcC1jb21tdW5pdHktdXBkYXRlLWNvbmZpcm1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi90YW1wLWVycm9yXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGFtcC1zZXF1ZW5jZS1hZGp1c3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi90YW1wLXNlcXVlbmNlLWFkanVzdC1jb25maXJtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGFtcC1zdGF0dXMtcXVlcnlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi90YW1wLXN0YXR1cy1yZXNwb25zZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RhbXAtdXBkYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGFtcC11cGRhdGUtY29uZmlybVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RhclwiOntcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdGVpK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInRlaVwiLFwidGVpY29ycHVzXCJdfSxcImFwcGxpY2F0aW9uL3RocmF1ZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0ZmlcIl19LFwiYXBwbGljYXRpb24vdGltZXN0YW1wLXF1ZXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGltZXN0YW1wLXJlcGx5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGltZXN0YW1wZWQtZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInRzZFwiXX0sXCJhcHBsaWNhdGlvbi90bmF1dGhsaXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdHJpZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3R0bWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdHZlLXRyaWdnZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi91bHBmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi91cmMtZ3Jwc2hlZXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdXJjLXJlc3NoZWV0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3VyYy10YXJnZXRkZXNjK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3VyYy11aXNvY2tldGRlc2MreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdmNhcmQranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92Y2FyZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92ZW1taVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZpdmlkZW5jZS5zY3JpcHRmaWxlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhcHBsaWNhdGlvbi92bmQuMTAwMG1pbmRzLmRlY2lzaW9uLW1vZGVsK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLXByb3NlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLXByb3NlLXBjM2NoK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLXYyeC1sb2NhbC1zZXJ2aWNlLWluZm9ybWF0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAuYWNjZXNzLXRyYW5zZmVyLWV2ZW50cyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5ic2YreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAuZ21vcCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1hZmZpbGlhdGlvbi1jb21tYW5kK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LWZsb29yLXJlcXVlc3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNwdHQtaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1sb2NhdGlvbi1pbmZvK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LW1ibXMtdXNhZ2UtaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1zaWduZWQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAubWlkLWNhbGwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LWxhcmdlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGxiXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy1zbWFsbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBzYlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctdmFyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicHZiXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNtc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNtcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zcnZjYy1leHQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAuc3J2Y2MtaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zdGF0ZS1hbmQtZXZlbnQtaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC51c3NkK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi5iY21jc2luZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAyLnNtc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi50Y2FwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widGNhcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuM2xpZ2h0c3NvZnR3YXJlLmltYWdlc2NhbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zbS5wb3N0LWl0LW5vdGVzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicHduXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hY2NwYWMuc2ltcGx5LmFzb1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImFzb1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5pbXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpbXBcIl19LFwiYXBwbGljYXRpb24vdm5kLmFjdWNvYm9sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYWN1XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hY3Vjb3JwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYXRjXCIsXCJhY3V0Y1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWlyLWFwcGxpY2F0aW9uLWluc3RhbGxlci1wYWNrYWdlK3ppcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYWlyXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5mbGFzaC5tb3ZpZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5mb3Jtc2NlbnRyYWwuZmNkdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZjZHRcIl19LFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZ4cFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZ4cFwiLFwiZnhwbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUucGFydGlhbC11cGxvYWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGRwK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhkcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhmZGZcIl19LFwiYXBwbGljYXRpb24vdm5kLmFldGhlci5pbXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYWgtYmFyY29kZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5haGVhZC5zcGFjZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImFoZWFkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5haXJ6aXAuZmlsZXNlY3VyZS5hemZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhemZcIl19LFwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6c1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImF6c1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuYW1hZGV1cytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2tcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImF6d1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuYW1hem9uLm1vYmk4LWVib29rXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmFtZXJpY2FuZHluYW1pY3MuYWNjXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYWNjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hbWlnYS5hbWlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhbWlcIl19LFwiYXBwbGljYXRpb24vdm5kLmFtdW5kc2VuLm1hemUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmFuZHJvaWQucGFja2FnZS1hcmNoaXZlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImFwa1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuYW5raVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5hbnNlci13ZWItY2VydGlmaWNhdGUtaXNzdWUtaW5pdGlhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNpaVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWZ1bmRzLXRyYW5zZmVyLWluaXRpYXRpb25cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImZ0aVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYW50aXguZ2FtZS1jb21wb25lbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhdHhcIl19LFwiYXBwbGljYXRpb24vdm5kLmFwYWNoZS50aHJpZnQuYmluYXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmFwYWNoZS50aHJpZnQuY29tcGFjdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUudGhyaWZ0Lmpzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYXBpK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmFwb3RoZWtlbmRlLnJlc2VydmF0aW9uK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLmluc3RhbGxlcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtcGtnXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibTN1OFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUucGtwYXNzXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wicGtwYXNzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hcmFzdHJhLnN3aVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5hcmlzdGFuZXR3b3Jrcy5zd2lcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzd2lcIl19LFwiYXBwbGljYXRpb24vdm5kLmFydHNxdWFyZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5hc3RyYWVhLXNvZnR3YXJlLmlvdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpb3RhXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hdWRpb2dyYXBoXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYWVwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hdXRvcGFja2FnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5hdmFsb24ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuYXZpc3Rhcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYmFsc2FtaXEuYm1tbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYmFsc2FtaXEuYm1wclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5iYmYudXNwLm1zZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5iYmYudXNwLm1zZytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5iZWtpdHp1ci1zdGVjaCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5iaW50Lm1lZC1jb250ZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmJpb3BheC5yZGYreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmJsaW5rLWlkYi12YWx1ZS13cmFwcGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmJsdWVpY2UubXVsdGlwYXNzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXBtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ibHVldG9vdGguZXAub29iXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmJsdWV0b290aC5sZS5vb2JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYm1pXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYm1pXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5idXNpbmVzc29iamVjdHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJyZXBcIl19LFwiYXBwbGljYXRpb24vdm5kLmNhYi1qc2NyaXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmNhbm9uLWNwZGxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY2Fub24tbGlwc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jYXBhc3lzdGVtcy1wZytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5jZW5kaW8udGhpbmxpbmMuY2xpZW50Y29uZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jZW50dXJ5LXN5c3RlbXMudGNwX3N0cmVhbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jaGVtZHJhdyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjZHhtbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY2hlc3MtcGduXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmNoaXBudXRzLmthcmFva2UtbW1kXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibW1kXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jaW5kZXJlbGxhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2R5XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jaXJwYWNrLmlzZG4tZXh0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmNpdGF0aW9uc3R5bGVzLnN0eWxlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jbGF5bW9yZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNsYVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY2xvYW50by5ycDlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJycDlcIl19LFwiYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjNGdcIixcImM0ZFwiLFwiYzRmXCIsXCJjNHBcIixcImM0dVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImMxMWFtY1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZy1wa2dcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjMTFhbXpcIl19LFwiYXBwbGljYXRpb24vdm5kLmNvZmZlZXNjcmlwdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jb2xsYWJpby54b2RvY3VtZW50cy5kb2N1bWVudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jb2xsYWJpby54b2RvY3VtZW50cy5kb2N1bWVudC10ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jb2xsYWJpby54b2RvY3VtZW50cy5wcmVzZW50YXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY29sbGFiaW8ueG9kb2N1bWVudHMucHJlc2VudGF0aW9uLXRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmNvbGxhYmlvLnhvZG9jdW1lbnRzLnNwcmVhZHNoZWV0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmNvbGxhYmlvLnhvZG9jdW1lbnRzLnNwcmVhZHNoZWV0LXRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuY29sbGVjdGlvbi5kb2MranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuY29sbGVjdGlvbi5uZXh0K2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmNvbWljYm9vayt6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY29taWNib29rLXJhclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jb21tZXJjZS1iYXR0ZWxsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jb21tb25zcGFjZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNzcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY29udGFjdC5jbXNnXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2RiY21zZ1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuY29yZW9zLmlnbml0aW9uK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmNvc21vY2FsbGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY21jXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2xreFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5rZXlib2FyZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNsa2tcIl19LFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIucGFsZXR0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNsa3BcIl19LFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIudGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjbGt0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLndvcmRiYW5rXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2xrd1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuY3JpdGljYWx0b29scy53YnMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid2JzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jdGMtcG9zbWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwbWxcIl19LFwiYXBwbGljYXRpb24vdm5kLmN0Y3Qud3MreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcGRmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcG9zdHNjcmlwdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBwZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBwZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1yYXN0ZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1yYXdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY3VybFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jdXJsLmNhclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY2FyXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jdXJsLnBjdXJsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJwY3VybFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY3lhbi5kZWFuLnJvb3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmN5YmFua1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kMmwuY291cnNlcGFja2FnZTFwMCt6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZGFydFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJkYXJ0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kYXRhLXZpc2lvbi5yZHpcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJyZHpcIl19LFwiYXBwbGljYXRpb24vdm5kLmRhdGFwYWNrYWdlK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmRhdGFyZXNvdXJjZStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5kZWJpYW4uYmluYXJ5LXBhY2thZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZGVjZS5kYXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widXZmXCIsXCJ1dnZmXCIsXCJ1dmRcIixcInV2dmRcIl19LFwiYXBwbGljYXRpb24vdm5kLmRlY2UudHRtbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1dnRcIixcInV2dnRcIl19LFwiYXBwbGljYXRpb24vdm5kLmRlY2UudW5zcGVjaWZpZWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1dnhcIixcInV2dnhcIl19LFwiYXBwbGljYXRpb24vdm5kLmRlY2UuemlwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widXZ6XCIsXCJ1dnZ6XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kZW5vdm8uZmNzZWxheW91dC1saW5rXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZmVfbGF1bmNoXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kZXNtdW1lLW1vdmllXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmRlc211bWUubW92aWVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kaXItYmkucGxhdGUtZGwtbm9zdWZmaXhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZG0uZGVsZWdhdGlvbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZG5hXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZG5hXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kb2N1bWVudCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5kb2xieS5tbHBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1scFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubW9iaWxlLjFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubW9iaWxlLjJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZG9yZW1pci5zY29yZWNsb3VkLWJpbmFyeS1kb2N1bWVudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kcGdyYXBoXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZHBnXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kcmVhbWZhY3RvcnlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkZmFjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kcml2ZStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5kcy1rZXlwb2ludFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wia3B4eFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR0Zy5sb2NhbC5mbGFzaFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdGcubG9jYWwuaHRtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYWl0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuZHZialwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuZXNnY29udGFpbmVyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjZGZ0bm90aWZhY2Nlc3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNlc2dhY2Nlc3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNlc2dhY2Nlc3MyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjZXNncGRkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjcm9hbWluZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXB0di5hbGZlYy1iYXNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcHR2LmFsZmVjLWVuaGFuY2VtZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1hZ2dyZWdhdGUtcm9vdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWNvbnRhaW5lcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWdlbmVyaWMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pYS1tc2dsaXN0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaWEtcmVnaXN0cmF0aW9uLXJlcXVlc3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pYS1yZWdpc3RyYXRpb24tcmVzcG9uc2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pbml0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIucGZyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5zZXJ2aWNlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3ZjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5keHJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHluYWdlb1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdlb1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZHpyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVhc3lrYXJhb2tlLmNkZ2Rvd25sb2FkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVjZGlzLXVwZGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lY2lwLnJscFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uY2hhcnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtYWdcIl19LFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5maWxlcmVxdWVzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uZmlsZXVwZGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uc2VyaWVzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXNyZXF1ZXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXN1cGRhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZWZpLmltZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lZmkuaXNvXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVtY2xpZW50LmFjY2Vzc3JlcXVlc3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVubGl2ZW5cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJubWxcIl19LFwiYXBwbGljYXRpb24vdm5kLmVucGhhc2UuZW52b3lcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXByaW50cy5kYXRhK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5lc2ZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlc2ZcIl19LFwiYXBwbGljYXRpb24vdm5kLmVwc29uLm1zZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1zZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZXBzb24ucXVpY2thbmltZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInFhbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc2FsdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNsdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc3NmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3NmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5lcmljc3Nvbi5xdWlja2NhbGxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXNwYXNzLWVzcGFzcyt6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXN6aWdubzMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZXMzXCIsXCJldDNcIl19LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuYW9jK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmFzaWMtZSt6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5hc2ljLXMremlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuY3VnK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZjb21tYW5kK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZkaXNjb3ZlcnkreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnByb2ZpbGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnNhZC1iYyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2FkLWNvZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2FkLW5wdnIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnNlcnZpY2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnN5bmMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnVlcHJvZmlsZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5tY2lkK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLm1oZWc1XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kub3ZlcmxvYWQtY29udHJvbC1wb2xpY3ktZGF0YXNldCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5wc3RuK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnNjaSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5zaW1zZXJ2cyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS50aW1lc3RhbXAtdG9rZW5cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS50c2wreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kudHNsLmRlclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldWRvcmEuZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldm9sdi5lY2lnLnByb2ZpbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXZvbHYuZWNpZy5zZXR0aW5nc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldm9sdi5lY2lnLnRoZW1lXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV6cGl4LWFsYnVtXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZXoyXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5lenBpeC1wYWNrYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZXozXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mLXNlY3VyZS5tb2JpbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZmFzdGNvcHktZGlzay1pbWFnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5mZGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmZGZcIl19LFwiYXBwbGljYXRpb24vdm5kLmZkc24ubXNlZWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtc2VlZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZmRzbi5zZWVkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2VlZFwiLFwiZGF0YWxlc3NcIl19LFwiYXBwbGljYXRpb24vdm5kLmZmc25zXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmZpbG1pdC56ZmNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZmludHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZmlyZW1vbmtleXMuY2xvdWRjZWxsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmZsb2dyYXBoaXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJncGhcIl19LFwiYXBwbGljYXRpb24vdm5kLmZsdXh0aW1lLmNsaXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmdGNcIl19LFwiYXBwbGljYXRpb24vdm5kLmZvbnQtZm9udGZvcmdlLXNmZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5mcmFtZW1ha2VyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZm1cIixcImZyYW1lXCIsXCJtYWtlclwiLFwiYm9va1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnJvZ2Fucy5mbmNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmbmNcIl19LFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMubHRmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibHRmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mc2Mud2VibGF1bmNoXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZnNjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib2FzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9hMlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvYTNcIl19LFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNncFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZnNVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c3Byc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImJoMlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmFydC1leFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guYXJ0NFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZGRkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZGRkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieGR3XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmJpbmRlclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhiZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrcy5jb250YWluZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmhicGxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZnV0LW1pc25ldFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5mdXp6eXNoZWV0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZnpzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5nZW5vbWF0aXgudHV4ZWRvXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widHhkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5nZW8ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvY3ViZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEuZmlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdnYlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEudG9vbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdndFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvbWV0cnktZXhwbG9yZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJnZXhcIixcImdyZVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvbmV4dFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImd4dFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvcGxhblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImcyd1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ2Vvc3BhY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJnM3dcIl19LFwiYXBwbGljYXRpb24vdm5kLmdlcmJlclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5nbG9iYWxwbGF0Zm9ybS5jYXJkLWNvbnRlbnQtbWd0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmdsb2JhbHBsYXRmb3JtLmNhcmQtY29udGVudC1tZ3QtcmVzcG9uc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZ214XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ214XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5kb2N1bWVudFwiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImdkb2NcIl19LFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnByZXNlbnRhdGlvblwiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImdzbGlkZXNcIl19LFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnNwcmVhZHNoZWV0XCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiZ3NoZWV0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJrbWxcIl19LFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1lYXJ0aC5rbXpcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImttelwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLmUtZm9ybSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLmUtZm9ybSt6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZ292LnNrLnhtbGRhdGFjb250YWluZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmdyYWZlcVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdxZlwiLFwiZ3FzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ncmlkbXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWFjY291bnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJnYWNcIl19LFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1oZWxwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ2hmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaWRlbnRpdHktbWVzc2FnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdpbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWluamVjdG9yXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ3J2XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC1tZXNzYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ3RtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC10ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInRwbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXZjYXJkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widmNnXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5oYWwranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuaGFsK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImhhbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaGFuZGhlbGQtZW50ZXJ0YWlubWVudCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ6bW1cIl19LFwiYXBwbGljYXRpb24vdm5kLmhiY2lcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJoYmNpXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5oYytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5oY2wtYmlyZXBvcnRzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmhkdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5oZXJva3UranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuaGhlLmxlc3Nvbi1wbGF5ZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJsZXNcIl19LFwiYXBwbGljYXRpb24vdm5kLmhwLWhwZ2xcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJocGdsXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGlkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaHBpZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaHAtaHBzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaHBzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1qbHl0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiamx0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1wY2xcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwY2xcIl19LFwiYXBwbGljYXRpb24vdm5kLmhwLXBjbHhsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGNseGxcIl19LFwiYXBwbGljYXRpb24vdm5kLmh0dHBob25lXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmh5ZHJvc3RhdGl4LnNvZi1kYXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2ZkLWhkc3R4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5oeXBlci1pdGVtK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmh5cGVyZHJpdmUranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuaHpuLTNkLWNyb3Nzd29yZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pYm0uYWZwbGluZWRhdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaWJtLmVsZWN0cm9uaWMtbWVkaWFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaWJtLm1pbmlwYXlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtcHlcIl19LFwiYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhZnBcIixcImxpc3RhZnBcIixcImxpc3QzODIwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pYm0ucmlnaHRzLW1hbmFnZW1lbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpcm1cIl19LFwiYXBwbGljYXRpb24vdm5kLmlibS5zZWN1cmUtY29udGFpbmVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2NcIl19LFwiYXBwbGljYXRpb24vdm5kLmljY3Byb2ZpbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpY2NcIixcImljbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaWVlZS4xOTA1XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlnbG9hZGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaWdsXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pbWFnZW1ldGVyLmZvbGRlcit6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaW1hZ2VtZXRlci5pbWFnZSt6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaXZwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpdnVcIl19LFwiYXBwbGljYXRpb24vdm5kLmltcy5pbXNjY3YxcDFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaW1zLmltc2NjdjFwMlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pbXMuaW1zY2N2MXAzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmltcy5saXMudjIucmVzdWx0K2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmltcy5sdGkudjIudG9vbGNvbnN1bWVycHJvZmlsZStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xwcm94eStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xwcm94eS5pZCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xzZXR0aW5ncytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xzZXR0aW5ncy5zaW1wbGUranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuaW5mb3JtZWRjb250cm9sLnJtcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaW5mb3JtaXgtdmlzaW9uYXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmluZm90ZWNoLnByb2plY3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaW5mb3RlY2gucHJvamVjdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaW5ub3BhdGgud2FtcC5ub3RpZmljYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaW5zb3JzLmlnbVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImlnbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhwd1wiLFwieHB4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcmdlb1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImkyZ1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJ0cnVzdC5kaWdpYm94XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmludGVydHJ1c3Qubm5jcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFib1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInFib1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuaW50dS5xZnhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJxZnhcIl19LFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIuY2F0YWxvZ2l0ZW0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIuY29uY2VwdGl0ZW0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIua25vd2xlZGdlaXRlbSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5uZXdzaXRlbSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5uZXdzbWVzc2FnZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5wYWNrYWdlaXRlbSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaXB0Yy5nMi5wbGFubmluZ2l0ZW0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlwdW5wbHVnZ2VkLnJjcHJvZmlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInJjcHJvZmlsZVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaXJlcG9zaXRvcnkucGFja2FnZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpcnBcIl19LFwiYXBwbGljYXRpb24vdm5kLmlzLXhwclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhwclwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaXNhYy5mY3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmY3NcIl19LFwiYXBwbGljYXRpb24vdm5kLmphbVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImphbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtZGlyZWN0b3J5LXNlcnZpY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtanBuc3RvcmUtd2FrZXVwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXBheW1lbnQtd2FrZXVwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXJlZ2lzdHJhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1yZWdpc3RyYXRpb24td2FrZXVwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXNldHN0b3JlLXdha2V1cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC12ZXJpZmljYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtdmVyaWZpY2F0aW9uLXdha2V1cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5qY3AuamF2YW1lLm1pZGxldC1ybXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJybXNcIl19LFwiYXBwbGljYXRpb24vdm5kLmppc3BcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJqaXNwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5qb29zdC5qb2RhLWFyY2hpdmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJqb2RhXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5qc2suaXNkbi1uZ25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQua2Fob290elwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImt0elwiLFwia3RyXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2FyYm9uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wia2FyYm9uXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2NoYXJ0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2hydFwiXX0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmtmb3JtdWxhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wia2ZvXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2l2aW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmbHdcIl19LFwiYXBwbGljYXRpb24vdm5kLmtkZS5rb250b3VyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wia29uXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImtwclwiLFwia3B0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua3NwcmVhZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImtzcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmt3b3JkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wia3dkXCIsXCJrd3RcIl19LFwiYXBwbGljYXRpb24vdm5kLmtlbmFtZWFhcHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJodGtlXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5raWRzcGlyYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJraWFcIl19LFwiYXBwbGljYXRpb24vdm5kLmtpbmFyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wia25lXCIsXCJrbnBcIl19LFwiYXBwbGljYXRpb24vdm5kLmtvYW5cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJza3BcIixcInNrZFwiLFwic2t0XCIsXCJza21cIl19LFwiYXBwbGljYXRpb24vdm5kLmtvZGFrLWRlc2NyaXB0b3JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzc2VcIl19LFwiYXBwbGljYXRpb24vdm5kLmxhcy5sYXMranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQubGFzLmxhcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJsYXN4bWxcIl19LFwiYXBwbGljYXRpb24vdm5kLmxpYmVydHktcmVxdWVzdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZGVza3RvcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImxiZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZXhjaGFuZ2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibGJlXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy0xLTItM1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIjEyM1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtYXBwcm9hY2hcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhcHJcIl19LFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWZyZWVsYW5jZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInByZVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtbm90ZXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJuc2ZcIl19LFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLW9yZ2FuaXplclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9yZ1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtc2NyZWVuY2FtXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2NtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy13b3JkcHJvXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibHdwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tYWNwb3J0cy5wb3J0cGtnXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicG9ydHBrZ1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubWFwYm94LXZlY3Rvci10aWxlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0uYWN0aW9udG9rZW4reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0uY29uZnRva2VuK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLmxpY2Vuc2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0ubWRjZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tYXNvbitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5tYXhtaW5kLm1heG1pbmQtZGJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubWNkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWNkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tZWRjYWxjZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1jMVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubWVkaWFzdGF0aW9uLmNka2V5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2RrZXlcIl19LFwiYXBwbGljYXRpb24vdm5kLm1lcmlkaWFuLXNsaW5nc2hvdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tZmVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXdmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tZm1wXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWZtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5taWNybytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5taWNyb2dyYWZ4LmZsb1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZsb1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5pZ3hcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpZ3hcIl19LFwiYXBwbGljYXRpb24vdm5kLm1pY3Jvc29mdC5wb3J0YWJsZS1leGVjdXRhYmxlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1pY3Jvc29mdC53aW5kb3dzLnRodW1ibmFpbC1jYWNoZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5taWVsZStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5taWZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtaWZcIl19LFwiYXBwbGljYXRpb24vdm5kLm1pbmlzb2Z0LWhwMzAwMC1zYXZlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1pdHN1YmlzaGkubWlzdHktZ3VhcmQudHJ1c3R3ZWJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLmRhZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRhZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLmRpc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRpc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1ia1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1ia1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1xeVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1xeVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1zbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1zbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLnBsY1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBsY1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLnR4ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInR4ZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQubW9waHVuLmFwcGxpY2F0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXBuXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uY2VydGlmaWNhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtcGNcIl19LFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuYWRzaVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuZmlzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS5nb3RhcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUua21yXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS50dGNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLndlbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5pcHJtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ4dWxcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLTNtZmRvY3VtZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLWFydGdhbHJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2lsXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1hc2ZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtY2FiLWNvbXByZXNzZWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjYWJcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLWNvbG9yLmljY3Byb2ZpbGVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wieGxzXCIsXCJ4bG1cIixcInhsYVwiLFwieGxjXCIsXCJ4bHRcIixcInhsd1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYWRkaW4ubWFjcm9lbmFibGVkLjEyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieGxhbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQuYmluYXJ5Lm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhsc2JcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhsc21cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhsdG1cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiZW90XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1odG1saGVscFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNobVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtaW1zXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaW1zXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1scm1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJscm1cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmV4K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInRobXhcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLW9wZW50eXBlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLm1zLW91dGxvb2tcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJtc2dcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXBhY2thZ2Uub2JmdXNjYXRlZC1vcGVudHlwZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLXBraS5zZWNjYXRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNhdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtcGtpLnN0bFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3RsXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wbGF5cmVhZHkuaW5pdGlhdG9yK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJwcHRcIixcInBwc1wiLFwicG90XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LmFkZGluLm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBwYW1cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQucHJlc2VudGF0aW9uLm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBwdG1cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGUubWFjcm9lbmFibGVkLjEyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2xkbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZXNob3cubWFjcm9lbmFibGVkLjEyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicHBzbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC50ZW1wbGF0ZS5tYWNyb2VuYWJsZWQuMTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwb3RtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcmludGRldmljZWNhcGFiaWxpdGllcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtcHJpbnRpbmcucHJpbnR0aWNrZXQreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtcHJpbnRzY2hlbWF0aWNrZXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLXByb2plY3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtcHBcIixcIm1wdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtdG5lZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13aW5kb3dzLmRldmljZXBhaXJpbmdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5ud3ByaW50aW5nLm9vYlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13aW5kb3dzLnByaW50ZXJwYWlyaW5nXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLXdpbmRvd3Mud3NkLm9vYlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5saWMtY2hsZy1yZXFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubGljLXJlc3BcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubWV0ZXItY2hsZy1yZXFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubWV0ZXItcmVzcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLmRvY3VtZW50Lm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRvY21cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZG90bVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtd29ya3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3cHNcIixcIndrc1wiLFwid2NtXCIsXCJ3ZGJcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXdwbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndwbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInhwc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubXNhLWRpc2staW1hZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXNlcVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1zZXFcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zaWduXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm11bHRpYWQuY3JlYXRvclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tdWx0aWFkLmNyZWF0b3IuY2lmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm11c2ljLW5pZmZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXVzaWNpYW5cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtdXNcIl19LFwiYXBwbGljYXRpb24vdm5kLm11dmVlLnN0eWxlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXN0eVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXluZmNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0YWdsZXRcIl19LFwiYXBwbGljYXRpb24vdm5kLm5jZC5jb250cm9sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5jZC5yZWZlcmVuY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubmVhcnN0Lmluditqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5uZXJ2YW5hXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5ldGZweFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5uZXVyb2xhbmd1YWdlLm5sdVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm5sdVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubmludGVuZG8ubml0cm8ucm9tXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5pbnRlbmRvLnNuZXMucm9tXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5pdGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJudGZcIixcIm5pdGZcIl19LFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LWRpcmVjdG9yeVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm5uZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtc2VhbGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibm5zXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC13ZWJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJubndcIl19LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmNhdGFsb2dzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmNvbm1sK3dieG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmNvbm1sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5pcHR2LmNvbmZpZyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEuaXNkcy1yYWRpby1wcmVzZXRzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmxhbmRtYXJrK3dieG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmxhbmRtYXJrK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5sYW5kbWFya2NvbGxlY3Rpb24reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5hYyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmRhdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJuZ2RhdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLnN5bWJpYW4uaW5zdGFsbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm4tZ2FnZVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEubmNkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnBjZCt3YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5wY2QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnJhZGlvLXByZXNldFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInJwc3RcIl19LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnJhZGlvLXByZXNldHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJycHNzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZG1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlZG1cIl19LFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkeFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImVkeFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZXh0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZXh0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuY29udGVudC1zaGFyZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuZmlsZS10cmFuc2ZlclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwub2d3X3JlbW90ZS1hY2Nlc3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLnNpcC10YV9yZW1vdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLnNpcC10YV90Y3Bfc3RyZWFtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9kY1wiXX0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmNoYXJ0LXRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib3RjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZGF0YWJhc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvZGJcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib2RmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZm9ybXVsYS10ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9kZnRcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wib2RnXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3MtdGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvdGdcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9kaVwiXX0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmltYWdlLXRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib3RpXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJvZHBcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24tdGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvdHBcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wib2RzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQtdGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvdHNcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJvZHRcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LW1hc3RlclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9kbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtdGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvdHRcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LXdlYlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm90aFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub2JuXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9jZitjYm9yXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9mdG4ubDEwbitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmNvbnRlbnRhY2Nlc3Nkb3dubG9hZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub2lwZi5jb250ZW50YWNjZXNzc3RyZWFtaW5nK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmNzcGctaGV4YmluYXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9pcGYuZGFlLnN2Zyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub2lwZi5kYWUueGh0bWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9pcGYubWlwcHZjb250cm9sbWVzc2FnZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub2lwZi5wYWUuZ2VtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9pcGYuc3BkaXNjb3ZlcnkreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9pcGYuc3BkbGlzdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub2lwZi51ZXByb2ZpbGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9pcGYudXNlcnByb2ZpbGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9scGMtc3VnYXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4b1wiXX0sXCJhcHBsaWNhdGlvbi92bmQub21hLXNjd3MtY29uZmlnXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS1zY3dzLWh0dHAtcmVxdWVzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1odHRwLXJlc3BvbnNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5hc3NvY2lhdGVkLXByb2NlZHVyZS1wYXJhbWV0ZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5kcm0tdHJpZ2dlcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LmltZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0Lmx0a21cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0Lm5vdGlmaWNhdGlvbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnByb3Zpc2lvbmluZ3RyaWdnZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnYm9vdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc2dkZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnZHVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNpbXBsZS1zeW1ib2wtY29udGFpbmVyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zbWFydGNhcmQtdHJpZ2dlcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNwcm92K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc3RrbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLWFkZHJlc3MtYm9vayt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1mZWF0dXJlLWhhbmRsZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItcGNjK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXN1YnMtaW52aXRlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXVzZXItcHJlZnMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5kY2RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmRjZGNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmRkMit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkZDJcIl19LFwiYXBwbGljYXRpb24vdm5kLm9tYS5kcm0ucmlzZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmdyb3VwLXVzYWdlLWxpc3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5sd20ybStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEubHdtMm0rdGx2XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5wYWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuZGV0YWlsZWQtcHJvZ3Jlc3MtcmVwb3J0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmZpbmFsLXJlcG9ydCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5ncm91cHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuaW52b2NhdGlvbi1kZXNjcmlwdG9yK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLm9wdGltaXplZC1wcm9ncmVzcy1yZXBvcnQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5wdXNoXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5zY2lkbS5tZXNzYWdlcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLnhjYXAtZGlyZWN0b3J5K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWFkcy1lbWFpbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZmlsZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZm9sZGVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWFsb2Mtc3VwbC1pbml0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9uZXBhZ2VyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9uZXBhZ2VydGFtcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbmVwYWdlcnRhbXhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub25lcGFnZXJ0YXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub25lcGFnZXJ0YXRwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9uZXBhZ2VydGF0eFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVuYmxveC5nYW1lK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVuYmxveC5nYW1lLWJpbmFyeVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVuZXllLm9lYlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVub2ZmaWNlb3JnLmV4dGVuc2lvblwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wib3h0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVuc3RyZWV0bWFwLmRhdGEreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbS1wcm9wZXJ0aWVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b214bWxwcm9wZXJ0aWVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydHNoYXBlcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1jb2xvcnMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtZGF0YSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1sYXlvdXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtc3R5bGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLmNvbW1lbnRhdXRob3JzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5jb21tZW50cyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuaGFuZG91dG1hc3Rlcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwubm90ZXNtYXN0ZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLm5vdGVzc2xpZGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wicHB0eFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uLm1haW4reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNwcm9wcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzbGR4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVsYXlvdXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlbWFzdGVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3dcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwcHN4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3cubWFpbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGV1cGRhdGVpbmZvK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50YWJsZXN0eWxlcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGFncyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwb3R4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZS5tYWluK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC52aWV3cHJvcHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2FsY2NoYWluK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNoYXJ0c2hlZXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29tbWVudHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY29ubmVjdGlvbnMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZGlhbG9nc2hlZXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuZXh0ZXJuYWxsaW5rK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Y2FjaGVkZWZpbml0aW9uK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Y2FjaGVyZWNvcmRzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90dGFibGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucXVlcnl0YWJsZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbmhlYWRlcnMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25sb2creG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkc3RyaW5ncyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wieGxzeFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0bWV0YWRhdGEreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRhYmxlc2luZ2xlY2VsbHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4bHR4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlLm1haW4reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudXNlcm5hbWVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnZvbGF0aWxlZGVwZW5kZW5jaWVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lb3ZlcnJpZGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnZtbGRyYXdpbmdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5jb21tZW50cyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiZG9jeFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudC5nbG9zc2FyeSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudC5tYWluK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmVuZG5vdGVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmZvbnR0YWJsZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5mb290ZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZm9vdG5vdGVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLm51bWJlcmluZyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5zZXR0aW5ncyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5zdHlsZXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkb3R4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlLm1haW4reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwud2Vic2V0dGluZ3MreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UuY29yZS1wcm9wZXJ0aWVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmRpZ2l0YWwtc2lnbmF0dXJlLXhtbHNpZ25hdHVyZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcmFjbGUucmVzb3VyY2UranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQub3JhbmdlLmluZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vc2EubmV0ZGVwbG95XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9zZ2VvLm1hcGd1aWRlLnBhY2thZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtZ3BcIl19LFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuYnVuZGxlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuZHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3NnaS5zdWJzeXN0ZW1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlc2FcIl19LFwiYXBwbGljYXRpb24vdm5kLm90cHMuY3Qta2lwK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5veGxpLmNvdW50Z3JhcGhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucGFnZXJkdXR5K2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLnBhbG1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwZGJcIixcInBxYVwiLFwib3ByY1wiXX0sXCJhcHBsaWNhdGlvbi92bmQucGFub3BseVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5wYW9zK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5wYW9zLnhtbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24vdm5kLnBhdGVudGRpdmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucGF3YWFmaWxlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGF3XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5wY29zXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnBnLmZvcm1hdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInN0clwiXX0sXCJhcHBsaWNhdGlvbi92bmQucGcub3Nhc2xpXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZWk2XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5waWFjY2Vzcy5hcHBsaWNhdGlvbi1saWNlbmNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnBpY3NlbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImVmaWZcIl19LFwiYXBwbGljYXRpb24vdm5kLnBtaS53aWRnZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3Z1wiXX0sXCJhcHBsaWNhdGlvbi92bmQucG9jLmdyb3VwLWFkdmVydGlzZW1lbnQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnBvY2tldGxlYXJuXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGxmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI2XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGJkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI2LXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyN1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI3LXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNzVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNzUtc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5wcmVtaW5ldFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5wcmV2aWV3c3lzdGVtcy5ib3hcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJib3hcIl19LFwiYXBwbGljYXRpb24vdm5kLnByb3RldXMubWFnYXppbmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtZ3pcIl19LFwiYXBwbGljYXRpb24vdm5kLnB1Ymxpc2hhcmUtZGVsdGEtdHJlZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInFwc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQucHZpLnB0aWQxXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicHRpZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQucHdnLW11bHRpcGxleGVkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnB3Zy14aHRtbC1wcmludCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucXVhbGNvbW0uYnJldy1hcHAtcmVzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnF1YXJhbnRhaW5lbmV0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnF1YXJrLnF1YXJreHByZXNzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicXhkXCIsXCJxeHRcIixcInF3ZFwiLFwicXd0XCIsXCJxeGxcIixcInF4YlwiXX0sXCJhcHBsaWNhdGlvbi92bmQucXVvYmplY3QtcXVveGRvY3VtZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubW9tbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1jb25mK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQtY29ubit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LWRpYWxvZyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LXN0cmVhbSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWNvbmYreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2creG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctYmFzZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1mYXgtZGV0ZWN0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWZheC1zZW5kcmVjdit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1ncm91cCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1zcGVlY2greG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctdHJhbnNmb3JtK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYWluc3Rvci5kYXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhcGlkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yZWFsdm5jLmJlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImJlZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXhsXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5yZWNvcmRhcmUubXVzaWN4bWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXVzaWN4bWxcIl19LFwiYXBwbGljYXRpb24vdm5kLnJlbmxlYXJuLnJscHJpbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmVzdGZ1bCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5yaWcuY3J5cHRvbm90ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNyeXB0b25vdGVcIl19LFwiYXBwbGljYXRpb24vdm5kLnJpbS5jb2RcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNvZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJybVwiXX0sXCJhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhLXZiclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicm12YlwiXX0sXCJhcHBsaWNhdGlvbi92bmQucm91dGU2Ni5saW5rNjYreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibGluazY2XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ycy0yNzR4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJ1Y2t1cy5kb3dubG9hZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zM3Ntc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zYWlsaW5ndHJhY2tlci50cmFja1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInN0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zYm0uY2lkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNibS5taWQyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNjcmlidXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLjNkZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuY3NmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5kb2NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLmVtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQubWh0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5uZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLnBwdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQudGlmZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQueGxzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLmh0bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwucGRmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNlZW1haWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzZWVcIl19LFwiYXBwbGljYXRpb24vdm5kLnNlbWFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzZW1hXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zZW1kXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2VtZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc2VtZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNlbWZcIl19LFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm1kYXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaWZtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5mb3JtdGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpdHBcIl19LFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmludGVyY2hhbmdlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaWlmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5wYWNrYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaXBrXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zaWdyb2suc2Vzc2lvblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zaW10ZWNoLW1pbmRtYXBwZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0d2RcIixcInR3ZHNcIl19LFwiYXBwbGljYXRpb24vdm5kLnNpcmVuK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLnNtYWZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtbWZcIl19LFwiYXBwbGljYXRpb24vdm5kLnNtYXJ0Lm5vdGVib29rXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNtYXJ0LnRlYWNoZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0ZWFjaGVyXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zb2Z0d2FyZTYwMi5maWxsZXIuZm9ybSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0teG1sLXppcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zb2xlbnQuc2RrbSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzZGttXCIsXCJzZGtkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5keHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkeHBcIl19LFwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLnNmc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNmc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3FsaXRlM1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zc3MtY29kXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNzcy1kdGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc3NzLW50ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uY2FsY1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2RjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uZHJhd1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2RhXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uaW1wcmVzc1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2RkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ubWF0aFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic21mXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzZHdcIixcInZvclwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlci1nbG9iYWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNnbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3RlcG1hbmlhLnBhY2thZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzbXppcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3RlcG1hbmlhLnN0ZXBjaGFydFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdHJlZXQtc3RyZWFtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnN1bi53YWRsK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ3YWRsXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmNhbGNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInN4Y1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjLnRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzdGNcIl19LFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhd1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3hkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcudGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInN0ZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzeGlcIl19LFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzcy50ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3RpXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLm1hdGhcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInN4bVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInN4d1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXIuZ2xvYmFsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzeGdcIl19LFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzdHdcIl19LFwiYXBwbGljYXRpb24vdm5kLnN1cy1jYWxlbmRhclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInN1c1wiLFwic3VzcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3ZkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3ZkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zd2lmdHZpZXctaWNzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnN5bWJpYW4uaW5zdGFsbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2lzXCIsXCJzaXN4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieHNtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0rd2J4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJiZG1cIl19LFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4ZG1cIl19LFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbS5ub3RpZmljYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtZGRmK3dieG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbWRkZit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtdG5kcyt3YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG10bmRzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZHMubm90aWZpY2F0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnRhYmxlc2NoZW1hK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLnRhby5pbnRlbnQtbW9kdWxlLWFyY2hpdmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0YW9cIl19LFwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBjYXBcIixcImNhcFwiLFwiZG1wXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC50bWQubWVkaWFmbGV4LmFwaSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnRtb2JpbGUtbGl2ZXR2XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widG1vXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC50cmkub25lc291cmNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnRyaWQudHB0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widHB0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC50cmlzY2FwZS5teHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJteHNcIl19LFwiYXBwbGljYXRpb24vdm5kLnRydWVhcHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0cmFcIl19LFwiYXBwbGljYXRpb24vdm5kLnRydWVkb2NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudWJpc29mdC53ZWJwbGF5ZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudWZkbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInVmZFwiLFwidWZkbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQudWlxLnRoZW1lXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widXR6XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC51bWFqaW5cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1bWpcIl19LFwiYXBwbGljYXRpb24vdm5kLnVuaXR5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widW5pdHl3ZWJcIl19LFwiYXBwbGljYXRpb24vdm5kLnVvbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widW9tbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5hbGVydFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmFsZXJ0LXdieG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYmVhcmVyLWNob2ljZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmJlYXJlci1jaG9pY2Utd2J4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jYWNoZW9wXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuY2FjaGVvcC13YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmNoYW5uZWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jaGFubmVsLXdieG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3Qtd2J4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0Y21kXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdGNtZC13YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LnNpZ25hbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cmktbWFwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnZhbHZlLnNvdXJjZS5tYXRlcmlhbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC52Y3hcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ2Y3hcIl19LFwiYXBwbGljYXRpb24vdm5kLnZkLXN0dWR5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnZlY3RvcndvcmtzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnZlbCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC52ZXJpbWF0cml4LnZjYXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudmlkc29mdC52aWRjb25mZXJlbmNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnZpc2lvXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widnNkXCIsXCJ2c3RcIixcInZzc1wiLFwidnN3XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC52aXNpb25hcnlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ2aXNcIl19LFwiYXBwbGljYXRpb24vdm5kLnZpdmlkZW5jZS5zY3JpcHRmaWxlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnZzZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInZzZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQud2FwLnNpY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC53YXAuc2xjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLndhcC53YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndieG1sXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC53YXAud21sY1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndtbGNcIl19LFwiYXBwbGljYXRpb24vdm5kLndhcC53bWxzY3JpcHRjXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid21sc2NcIl19LFwiYXBwbGljYXRpb24vdm5kLndlYnR1cmJvXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid3RiXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC53ZmEucDJwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLndmYS53c2NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQud2luZG93cy5kZXZpY2VwYWlyaW5nXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLndtY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC53bWYuYm9vdHN0cmFwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ubWF0aGVtYXRpY2FcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQud29sZnJhbS5tYXRoZW1hdGljYS5wYWNrYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ucGxheWVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibmJwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC53b3JkcGVyZmVjdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndwZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQud3FkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid3FkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC53cnEtaHAzMDAwLWxhYmVsbGVkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnd0LnN0ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInN0ZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQud3YuY3NwK3dieG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnd2LmNzcCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQud3Yuc3NwK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC54YWNtbCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC54YXJhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieGFyXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC54ZmRsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieGZkbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQueGZkbC53ZWJmb3JtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnhtaSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQueG1waWUuY3BrZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5kcGtnXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnhtcGllLnBsYW5cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQueG1waWUucHBrZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS54bGltXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1kaWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJodmRcIl19LFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1zY3JpcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJodnNcIl19LFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi12b2ljZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImh2cFwiXX0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9zZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdC5vc2ZwdmcreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib3NmcHZnXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEucmVtb3RlLXNldHVwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5zbWFmLWF1ZGlvXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2FmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1waHJhc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzcGZcIl19LFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS50aHJvdWdoLW5nblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEudHVubmVsLXVkcGVuY2FwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnlhb3dlbWVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQueWVsbG93cml2ZXItY3VzdG9tLW1lbnVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjbXBcIl19LFwiYXBwbGljYXRpb24vdm5kLnlvdXR1YmUueXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuenVsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiemlyXCIsXCJ6aXJ6XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC56emF6ei5kZWNrK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInphelwiXX0sXCJhcHBsaWNhdGlvbi92b2ljZXhtbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ2eG1sXCJdfSxcImFwcGxpY2F0aW9uL3ZvdWNoZXItY21zK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdnEtcnRjcHhyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vd2FzbVwiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wid2FzbVwiXX0sXCJhcHBsaWNhdGlvbi93YXRjaGVyaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi93ZWJwdXNoLW9wdGlvbnMranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi93aG9pc3BwLXF1ZXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vd2hvaXNwcC1yZXNwb25zZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3dpZGdldFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndndFwiXX0sXCJhcHBsaWNhdGlvbi93aW5obHBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImhscFwiXX0sXCJhcHBsaWNhdGlvbi93aXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vd29yZHBlcmZlY3Q1LjFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi93c2RsK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndzZGxcIl19LFwiYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid3Nwb2xpY3lcIl19LFwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIjd6XCJdfSxcImFwcGxpY2F0aW9uL3gtYWJpd29yZFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYWJ3XCJdfSxcImFwcGxpY2F0aW9uL3gtYWNlLWNvbXByZXNzZWRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImFjZVwiXX0sXCJhcHBsaWNhdGlvbi94LWFtZlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2VcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImRtZ1wiXX0sXCJhcHBsaWNhdGlvbi94LWFyalwiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImFyalwiXX0sXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhYWJcIixcIngzMlwiLFwidTMyXCIsXCJ2b3hcIl19LFwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLW1hcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYWFtXCJdfSxcImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1zZWdcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImFhc1wiXX0sXCJhcHBsaWNhdGlvbi94LWJjcGlvXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJiY3Bpb1wiXX0sXCJhcHBsaWNhdGlvbi94LWJkb2NcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJiZG9jXCJdfSxcImFwcGxpY2F0aW9uL3gtYml0dG9ycmVudFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widG9ycmVudFwiXX0sXCJhcHBsaWNhdGlvbi94LWJsb3JiXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJibGJcIixcImJsb3JiXCJdfSxcImFwcGxpY2F0aW9uL3gtYnppcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJielwiXX0sXCJhcHBsaWNhdGlvbi94LWJ6aXAyXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImJ6MlwiLFwiYm96XCJdfSxcImFwcGxpY2F0aW9uL3gtY2JyXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjYnJcIixcImNiYVwiLFwiY2J0XCIsXCJjYnpcIixcImNiN1wiXX0sXCJhcHBsaWNhdGlvbi94LWNkbGlua1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widmNkXCJdfSxcImFwcGxpY2F0aW9uL3gtY2ZzLWNvbXByZXNzZWRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNmc1wiXX0sXCJhcHBsaWNhdGlvbi94LWNoYXRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNoYXRcIl19LFwiYXBwbGljYXRpb24veC1jaGVzcy1wZ25cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInBnblwiXX0sXCJhcHBsaWNhdGlvbi94LWNocm9tZS1leHRlbnNpb25cIjp7XCJleHRlbnNpb25zXCI6W1wiY3J4XCJdfSxcImFwcGxpY2F0aW9uL3gtY29jb2FcIjp7XCJzb3VyY2VcIjpcIm5naW54XCIsXCJleHRlbnNpb25zXCI6W1wiY2NvXCJdfSxcImFwcGxpY2F0aW9uL3gtY29tcHJlc3NcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3gtY29uZmVyZW5jZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibnNjXCJdfSxcImFwcGxpY2F0aW9uL3gtY3Bpb1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY3Bpb1wiXX0sXCJhcHBsaWNhdGlvbi94LWNzaFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY3NoXCJdfSxcImFwcGxpY2F0aW9uL3gtZGViXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwiYXBwbGljYXRpb24veC1kZWJpYW4tcGFja2FnZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZGViXCIsXCJ1ZGViXCJdfSxcImFwcGxpY2F0aW9uL3gtZGdjLWNvbXByZXNzZWRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImRnY1wiXX0sXCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJkaXJcIixcImRjclwiLFwiZHhyXCIsXCJjc3RcIixcImNjdFwiLFwiY3h0XCIsXCJ3M2RcIixcImZnZFwiLFwic3dhXCJdfSxcImFwcGxpY2F0aW9uL3gtZG9vbVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid2FkXCJdfSxcImFwcGxpY2F0aW9uL3gtZHRibmN4K3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibmN4XCJdfSxcImFwcGxpY2F0aW9uL3gtZHRib29rK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZHRiXCJdfSxcImFwcGxpY2F0aW9uL3gtZHRicmVzb3VyY2UreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJyZXNcIl19LFwiYXBwbGljYXRpb24veC1kdmlcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiZHZpXCJdfSxcImFwcGxpY2F0aW9uL3gtZW52b3lcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImV2eVwiXX0sXCJhcHBsaWNhdGlvbi94LWV2YVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZXZhXCJdfSxcImFwcGxpY2F0aW9uL3gtZm9udC1iZGZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImJkZlwiXX0sXCJhcHBsaWNhdGlvbi94LWZvbnQtZG9zXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhcHBsaWNhdGlvbi94LWZvbnQtZnJhbWVtYWtlclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24veC1mb250LWdob3N0c2NyaXB0XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJnc2ZcIl19LFwiYXBwbGljYXRpb24veC1mb250LWxpYmdyeFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24veC1mb250LWxpbnV4LXBzZlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicHNmXCJdfSxcImFwcGxpY2F0aW9uL3gtZm9udC1wY2ZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInBjZlwiXX0sXCJhcHBsaWNhdGlvbi94LWZvbnQtc25mXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzbmZcIl19LFwiYXBwbGljYXRpb24veC1mb250LXNwZWVkb1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24veC1mb250LXN1bm9zLW5ld3NcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicGZhXCIsXCJwZmJcIixcInBmbVwiLFwiYWZtXCJdfSxcImFwcGxpY2F0aW9uL3gtZm9udC12Zm9udFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24veC1mcmVlYXJjXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhcmNcIl19LFwiYXBwbGljYXRpb24veC1mdXR1cmVzcGxhc2hcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNwbFwiXX0sXCJhcHBsaWNhdGlvbi94LWdjYS1jb21wcmVzc2VkXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJnY2FcIl19LFwiYXBwbGljYXRpb24veC1nbHVseFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widWx4XCJdfSxcImFwcGxpY2F0aW9uL3gtZ251bWVyaWNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImdudW1lcmljXCJdfSxcImFwcGxpY2F0aW9uL3gtZ3JhbXBzLXhtbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZ3JhbXBzXCJdfSxcImFwcGxpY2F0aW9uL3gtZ3RhclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZ3RhclwiXX0sXCJhcHBsaWNhdGlvbi94LWd6aXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3gtaGRmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJoZGZcIl19LFwiYXBwbGljYXRpb24veC1odHRwZC1waHBcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInBocFwiXX0sXCJhcHBsaWNhdGlvbi94LWluc3RhbGwtaW5zdHJ1Y3Rpb25zXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJpbnN0YWxsXCJdfSxcImFwcGxpY2F0aW9uL3gtaXNvOTY2MC1pbWFnZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiaXNvXCJdfSxcImFwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlLWRpZmZcIjp7XCJzb3VyY2VcIjpcIm5naW54XCIsXCJleHRlbnNpb25zXCI6W1wiamFyZGlmZlwiXX0sXCJhcHBsaWNhdGlvbi94LWphdmEtam5scC1maWxlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImpubHBcIl19LFwiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0XCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi94LWxhdGV4XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImxhdGV4XCJdfSxcImFwcGxpY2F0aW9uL3gtbHVhLWJ5dGVjb2RlXCI6e1wiZXh0ZW5zaW9uc1wiOltcImx1YWNcIl19LFwiYXBwbGljYXRpb24veC1semgtY29tcHJlc3NlZFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibHpoXCIsXCJsaGFcIl19LFwiYXBwbGljYXRpb24veC1tYWtlc2VsZlwiOntcInNvdXJjZVwiOlwibmdpbnhcIixcImV4dGVuc2lvbnNcIjpbXCJydW5cIl19LFwiYXBwbGljYXRpb24veC1taWVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1pZVwiXX0sXCJhcHBsaWNhdGlvbi94LW1vYmlwb2NrZXQtZWJvb2tcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInByY1wiLFwibW9iaVwiXX0sXCJhcHBsaWNhdGlvbi94LW1wZWd1cmxcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJhcHBsaWNhdGlvbi94LW1zLWFwcGxpY2F0aW9uXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhcHBsaWNhdGlvblwiXX0sXCJhcHBsaWNhdGlvbi94LW1zLXNob3J0Y3V0XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJsbmtcIl19LFwiYXBwbGljYXRpb24veC1tcy13bWRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIndtZFwiXX0sXCJhcHBsaWNhdGlvbi94LW1zLXdtelwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid216XCJdfSxcImFwcGxpY2F0aW9uL3gtbXMteGJhcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wieGJhcFwiXX0sXCJhcHBsaWNhdGlvbi94LW1zYWNjZXNzXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtZGJcIl19LFwiYXBwbGljYXRpb24veC1tc2JpbmRlclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wib2JkXCJdfSxcImFwcGxpY2F0aW9uL3gtbXNjYXJkZmlsZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY3JkXCJdfSxcImFwcGxpY2F0aW9uL3gtbXNjbGlwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjbHBcIl19LFwiYXBwbGljYXRpb24veC1tc2Rvcy1wcm9ncmFtXCI6e1wiZXh0ZW5zaW9uc1wiOltcImV4ZVwiXX0sXCJhcHBsaWNhdGlvbi94LW1zZG93bmxvYWRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImV4ZVwiLFwiZGxsXCIsXCJjb21cIixcImJhdFwiLFwibXNpXCJdfSxcImFwcGxpY2F0aW9uL3gtbXNtZWRpYXZpZXdcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm12YlwiLFwibTEzXCIsXCJtMTRcIl19LFwiYXBwbGljYXRpb24veC1tc21ldGFmaWxlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ3bWZcIixcIndtelwiLFwiZW1mXCIsXCJlbXpcIl19LFwiYXBwbGljYXRpb24veC1tc21vbmV5XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtbnlcIl19LFwiYXBwbGljYXRpb24veC1tc3B1Ymxpc2hlclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicHViXCJdfSxcImFwcGxpY2F0aW9uL3gtbXNzY2hlZHVsZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2NkXCJdfSxcImFwcGxpY2F0aW9uL3gtbXN0ZXJtaW5hbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widHJtXCJdfSxcImFwcGxpY2F0aW9uL3gtbXN3cml0ZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid3JpXCJdfSxcImFwcGxpY2F0aW9uL3gtbmV0Y2RmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJuY1wiLFwiY2RmXCJdfSxcImFwcGxpY2F0aW9uL3gtbnMtcHJveHktYXV0b2NvbmZpZ1wiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wicGFjXCJdfSxcImFwcGxpY2F0aW9uL3gtbnpiXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJuemJcIl19LFwiYXBwbGljYXRpb24veC1wZXJsXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcInBsXCIsXCJwbVwiXX0sXCJhcHBsaWNhdGlvbi94LXBpbG90XCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcInByY1wiLFwicGRiXCJdfSxcImFwcGxpY2F0aW9uL3gtcGtjczEyXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInAxMlwiLFwicGZ4XCJdfSxcImFwcGxpY2F0aW9uL3gtcGtjczctY2VydGlmaWNhdGVzXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJwN2JcIixcInNwY1wiXX0sXCJhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRyZXFyZXNwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJwN3JcIl19LFwiYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJyYXJcIl19LFwiYXBwbGljYXRpb24veC1yZWRoYXQtcGFja2FnZS1tYW5hZ2VyXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcInJwbVwiXX0sXCJhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtc1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicmlzXCJdfSxcImFwcGxpY2F0aW9uL3gtc2VhXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcInNlYVwiXX0sXCJhcHBsaWNhdGlvbi94LXNoXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wic2hcIl19LFwiYXBwbGljYXRpb24veC1zaGFyXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzaGFyXCJdfSxcImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInN3ZlwiXX0sXCJhcHBsaWNhdGlvbi94LXNpbHZlcmxpZ2h0LWFwcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wieGFwXCJdfSxcImFwcGxpY2F0aW9uL3gtc3FsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzcWxcIl19LFwiYXBwbGljYXRpb24veC1zdHVmZml0XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInNpdFwiXX0sXCJhcHBsaWNhdGlvbi94LXN0dWZmaXR4XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzaXR4XCJdfSxcImFwcGxpY2F0aW9uL3gtc3VicmlwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzcnRcIl19LFwiYXBwbGljYXRpb24veC1zdjRjcGlvXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzdjRjcGlvXCJdfSxcImFwcGxpY2F0aW9uL3gtc3Y0Y3JjXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzdjRjcmNcIl19LFwiYXBwbGljYXRpb24veC10M3ZtLWltYWdlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ0M1wiXX0sXCJhcHBsaWNhdGlvbi94LXRhZHNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImdhbVwiXX0sXCJhcHBsaWNhdGlvbi94LXRhclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInRhclwiXX0sXCJhcHBsaWNhdGlvbi94LXRjbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widGNsXCIsXCJ0a1wiXX0sXCJhcHBsaWNhdGlvbi94LXRleFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widGV4XCJdfSxcImFwcGxpY2F0aW9uL3gtdGV4LXRmbVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widGZtXCJdfSxcImFwcGxpY2F0aW9uL3gtdGV4aW5mb1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widGV4aW5mb1wiLFwidGV4aVwiXX0sXCJhcHBsaWNhdGlvbi94LXRnaWZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9ialwiXX0sXCJhcHBsaWNhdGlvbi94LXVzdGFyXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ1c3RhclwiXX0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtaGRkXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJoZGRcIl19LFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LW92YVwiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wib3ZhXCJdfSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmZcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcIm92ZlwiXX0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmJveFwiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1widmJveFwiXX0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmJveC1leHRwYWNrXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1widmJveC1leHRwYWNrXCJdfSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12ZGlcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInZkaVwiXX0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmhkXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ2aGRcIl19LFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZtZGtcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInZtZGtcIl19LFwiYXBwbGljYXRpb24veC13YWlzLXNvdXJjZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3JjXCJdfSxcImFwcGxpY2F0aW9uL3gtd2ViLWFwcC1tYW5pZmVzdCtqc29uXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ3ZWJhcHBcIl19LFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJkZXJcIixcImNydFwiLFwicGVtXCJdfSxcImFwcGxpY2F0aW9uL3gteGZpZ1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZmlnXCJdfSxcImFwcGxpY2F0aW9uL3gteGxpZmYreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ4bGZcIl19LFwiYXBwbGljYXRpb24veC14cGluc3RhbGxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wieHBpXCJdfSxcImFwcGxpY2F0aW9uL3gteHpcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInh6XCJdfSxcImFwcGxpY2F0aW9uL3gtem1hY2hpbmVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInoxXCIsXCJ6MlwiLFwiejNcIixcIno0XCIsXCJ6NVwiLFwiejZcIixcIno3XCIsXCJ6OFwiXX0sXCJhcHBsaWNhdGlvbi94NDAwLWJwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24veGFjbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24veGFtbCt4bWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInhhbWxcIl19LFwiYXBwbGljYXRpb24veGNhcC1hdHQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24veGNhcC1jYXBzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3hjYXAtZGlmZit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4ZGZcIl19LFwiYXBwbGljYXRpb24veGNhcC1lbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi94Y2FwLWVycm9yK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3hjYXAtbnMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24veGNvbi1jb25mZXJlbmNlLWluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24veGNvbi1jb25mZXJlbmNlLWluZm8tZGlmZit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi94ZW5jK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhlbmNcIl19LFwiYXBwbGljYXRpb24veGh0bWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInhodG1sXCIsXCJ4aHRcIl19LFwiYXBwbGljYXRpb24veGh0bWwtdm9pY2UreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhcHBsaWNhdGlvbi94bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wieG1sXCIsXCJ4c2xcIixcInhzZFwiLFwicm5nXCJdfSxcImFwcGxpY2F0aW9uL3htbC1kdGRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiZHRkXCJdfSxcImFwcGxpY2F0aW9uL3htbC1leHRlcm5hbC1wYXJzZWQtZW50aXR5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24veG1sLXBhdGNoK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3htcHAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24veG9wK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ4b3BcIl19LFwiYXBwbGljYXRpb24veHByb2MreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ4cGxcIl19LFwiYXBwbGljYXRpb24veHNsdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4c2x0XCJdfSxcImFwcGxpY2F0aW9uL3hzcGYreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ4c3BmXCJdfSxcImFwcGxpY2F0aW9uL3h2K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm14bWxcIixcInhodm1sXCIsXCJ4dm1sXCIsXCJ4dm1cIl19LFwiYXBwbGljYXRpb24veWFuZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInlhbmdcIl19LFwiYXBwbGljYXRpb24veWFuZy1kYXRhK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24veWFuZy1kYXRhK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3lhbmctcGF0Y2granNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi95YW5nLXBhdGNoK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3lpbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ5aW5cIl19LFwiYXBwbGljYXRpb24vemlwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ6aXBcIl19LFwiYXBwbGljYXRpb24vemxpYlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvLzMya2FkcGNtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vM2dwcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiM2dwcFwiXX0sXCJhdWRpby8zZ3BwMlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2FjM1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2FkcGNtXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhZHBcIl19LFwiYXVkaW8vYW1yXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vYW1yLXdiXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vYW1yLXdiK1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2FwdHhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9hc2NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9hdHJhYy1hZHZhbmNlZC1sb3NzbGVzc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2F0cmFjLXhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9hdHJhYzNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9iYXNpY1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiYXVcIixcInNuZFwiXX0sXCJhdWRpby9idjE2XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vYnYzMlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2NsZWFybW9kZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2NuXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZGF0MTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9kbHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9kc3ItZXMyMDExMDhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9kc3ItZXMyMDIwNTBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9kc3ItZXMyMDIyMTFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9kc3ItZXMyMDIyMTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9kdlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2R2aTRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9lYWMzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZW5jYXBydHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyYy1xY3BcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjMFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2V2cmMxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyY2JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjYjBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjYjFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjbndcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjbncwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyY253MVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2V2cmN3YlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2V2cmN3YjBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjd2IxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZndkcmVkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZzcxMS0wXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZzcxOVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MjJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nNzIyMVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MjNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nNzI2LTE2XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZzcyNi0yNFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MjYtMzJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nNzI2LTQwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZzcyOFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MjlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nNzI5MVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MjlkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZzcyOWVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nc21cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nc20tZWZyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZ3NtLWhyLTA4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vaWxiY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2lwLW1yX3YyLjVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9pc2FjXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhdWRpby9sMTZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9sMjBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9sMjRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcImF1ZGlvL2w4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vbHBjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vbWVscFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL21lbHAxMjAwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vbWVscDI0MDBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9tZWxwNjAwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vbWlkaVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibWlkXCIsXCJtaWRpXCIsXCJrYXJcIixcInJtaVwiXX0sXCJhdWRpby9tb2JpbGUteG1mXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vbXAzXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wibXAzXCJdfSxcImF1ZGlvL21wNFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wibTRhXCIsXCJtcDRhXCJdfSxcImF1ZGlvL21wNGEtbGF0bVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL21wYVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL21wYS1yb2J1c3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9tcGVnXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJtcGdhXCIsXCJtcDJcIixcIm1wMmFcIixcIm1wM1wiLFwibTJhXCIsXCJtM2FcIl19LFwiYXVkaW8vbXBlZzQtZ2VuZXJpY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL211c2VwYWNrXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhdWRpby9vZ2dcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIm9nYVwiLFwib2dnXCIsXCJzcHhcIl19LFwiYXVkaW8vb3B1c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3Bhcml0eWZlY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3BjbWFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9wY21hLXdiXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vcGNtdVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3BjbXUtd2JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9wcnMuc2lkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vcWNlbHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9yYXB0b3JmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9yZWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ydHAtZW5jLWFlc2NtMTI4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vcnRwLW1pZGlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ydHBsb29wYmFja1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3J0eFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3MzbVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiczNtXCJdfSxcImF1ZGlvL3NpbGtcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNpbFwiXX0sXCJhdWRpby9zbXZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9zbXYtcWNwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vc212MFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3NwLW1pZGlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9zcGVleFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3QxNDBjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdDM4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdGVsZXBob25lLWV2ZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdG9uZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3VlbWNsaXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby91bHBmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92ZHZpXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm1yLXdiXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLjNncHAuaXVmcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC40c2JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuYXVkaW9rb3pcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuY2VscFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5jaXNjby5uc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuY21sZXMucmFkaW8tZXZlbnRzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmNucy5hbnAxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmNucy5pbmYxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmRlY2UuYXVkaW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1dmFcIixcInV2dmFcIl19LFwiYXVkaW8vdm5kLmRpZ2l0YWwtd2luZHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlb2xcIl19LFwiYXVkaW8vdm5kLmRsbmEuYWR0c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5kb2xieS5oZWFhYy4xXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmRvbGJ5LmhlYWFjLjJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuZG9sYnkubWxwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmRvbGJ5Lm1wc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5kb2xieS5wbDJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuZG9sYnkucGwyeFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5kb2xieS5wbDJ6XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmRvbGJ5LnB1bHNlLjFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuZHJhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZHJhXCJdfSxcImF1ZGlvL3ZuZC5kdHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkdHNcIl19LFwiYXVkaW8vdm5kLmR0cy5oZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImR0c2hkXCJdfSxcImF1ZGlvL3ZuZC5kdmIuZmlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5ldmVyYWQucGxqXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmhucy5hdWRpb1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5sdWNlbnQudm9pY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJsdnBcIl19LFwiYXVkaW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weWFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJweWFcIl19LFwiYXVkaW8vdm5kLm5va2lhLm1vYmlsZS14bWZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQubm9ydGVsLnZia1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDQ4MDBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlY2VscDQ4MDBcIl19LFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwNzQ3MFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImVjZWxwNzQ3MFwiXX0sXCJhdWRpby92bmQubnVlcmEuZWNlbHA5NjAwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZWNlbHA5NjAwXCJdfSxcImF1ZGlvL3ZuZC5vY3RlbC5zYmNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQucHJlc29udXMubXVsdGl0cmFja1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5xY2VscFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5yaGV0b3JleC4zMmthZHBjbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5yaXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJyaXBcIl19LFwiYXVkaW8vdm5kLnJuLXJlYWxhdWRpb1wiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcImF1ZGlvL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5tcGVnXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLnZteC5jdnNkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLndhdmVcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJhdWRpby92b3JiaXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcImF1ZGlvL3ZvcmJpcy1jb25maWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby93YXZcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ3YXZcIl19LFwiYXVkaW8vd2F2ZVwiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIndhdlwiXX0sXCJhdWRpby93ZWJtXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIndlYmFcIl19LFwiYXVkaW8veC1hYWNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiYWFjXCJdfSxcImF1ZGlvL3gtYWlmZlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYWlmXCIsXCJhaWZmXCIsXCJhaWZjXCJdfSxcImF1ZGlvL3gtY2FmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImNhZlwiXX0sXCJhdWRpby94LWZsYWNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImZsYWNcIl19LFwiYXVkaW8veC1tNGFcIjp7XCJzb3VyY2VcIjpcIm5naW54XCIsXCJleHRlbnNpb25zXCI6W1wibTRhXCJdfSxcImF1ZGlvL3gtbWF0cm9za2FcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1rYVwiXX0sXCJhdWRpby94LW1wZWd1cmxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm0zdVwiXX0sXCJhdWRpby94LW1zLXdheFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid2F4XCJdfSxcImF1ZGlvL3gtbXMtd21hXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ3bWFcIl19LFwiYXVkaW8veC1wbi1yZWFsYXVkaW9cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInJhbVwiLFwicmFcIl19LFwiYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJybXBcIl19LFwiYXVkaW8veC1yZWFsYXVkaW9cIjp7XCJzb3VyY2VcIjpcIm5naW54XCIsXCJleHRlbnNpb25zXCI6W1wicmFcIl19LFwiYXVkaW8veC10dGFcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImF1ZGlvL3gtd2F2XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ3YXZcIl19LFwiYXVkaW8veG1cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInhtXCJdfSxcImNoZW1pY2FsL3gtY2R4XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjZHhcIl19LFwiY2hlbWljYWwveC1jaWZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNpZlwiXX0sXCJjaGVtaWNhbC94LWNtZGZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNtZGZcIl19LFwiY2hlbWljYWwveC1jbWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNtbFwiXX0sXCJjaGVtaWNhbC94LWNzbWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNzbWxcIl19LFwiY2hlbWljYWwveC1wZGJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImNoZW1pY2FsL3gteHl6XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ4eXpcIl19LFwiZm9udC9jb2xsZWN0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widHRjXCJdfSxcImZvbnQvb3RmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcIm90ZlwiXX0sXCJmb250L3NmbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJmb250L3R0ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInR0ZlwiXX0sXCJmb250L3dvZmZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3b2ZmXCJdfSxcImZvbnQvd29mZjJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3b2ZmMlwiXX0sXCJpbWFnZS9hY2VzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2UvYXBuZ1wiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImFwbmdcIl19LFwiaW1hZ2UvYm1wXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImJtcFwiXX0sXCJpbWFnZS9jZ21cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjZ21cIl19LFwiaW1hZ2UvZGljb20tcmxlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2UvZW1mXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2UvZml0c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL2czZmF4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZzNcIl19LFwiaW1hZ2UvZ2lmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJnaWZcIl19LFwiaW1hZ2UvaWVmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaWVmXCJdfSxcImltYWdlL2psc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL2pwMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wianAyXCIsXCJqcGcyXCJdfSxcImltYWdlL2pwZWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImpwZWdcIixcImpwZ1wiLFwianBlXCJdfSxcImltYWdlL2pwbVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wianBtXCJdfSxcImltYWdlL2pweFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wianB4XCIsXCJqcGZcIl19LFwiaW1hZ2Uva3R4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wia3R4XCJdfSxcImltYWdlL25hcGxwc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3BqcGVnXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwiaW1hZ2UvcG5nXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJwbmdcIl19LFwiaW1hZ2UvcHJzLmJ0aWZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJidGlmXCJdfSxcImltYWdlL3Bycy5wdGlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS9wd2ctcmFzdGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvc2dpXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzZ2lcIl19LFwiaW1hZ2Uvc3ZnK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJzdmdcIixcInN2Z3pcIl19LFwiaW1hZ2UvdDM4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2UvdGlmZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1widGlmZlwiLFwidGlmXCJdfSxcImltYWdlL3RpZmYtZnhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS92bmQuYWRvYmUucGhvdG9zaG9wXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInBzZFwiXX0sXCJpbWFnZS92bmQuYWlyemlwLmFjY2VsZXJhdG9yLmF6dlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC5jbnMuaW5mMlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC5kZWNlLmdyYXBoaWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1dmlcIixcInV2dmlcIixcInV2Z1wiLFwidXZ2Z1wiXX0sXCJpbWFnZS92bmQuZGp2dVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRqdnVcIixcImRqdlwiXX0sXCJpbWFnZS92bmQuZHZiLnN1YnRpdGxlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3ViXCJdfSxcImltYWdlL3ZuZC5kd2dcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkd2dcIl19LFwiaW1hZ2Uvdm5kLmR4ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImR4ZlwiXX0sXCJpbWFnZS92bmQuZmFzdGJpZHNoZWV0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZmJzXCJdfSxcImltYWdlL3ZuZC5mcHhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmcHhcIl19LFwiaW1hZ2Uvdm5kLmZzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZzdFwiXX0sXCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1tbXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtbXJcIl19LFwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtcmxjXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicmxjXCJdfSxcImltYWdlL3ZuZC5nbG9iYWxncmFwaGljcy5wZ2JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS92bmQubWljcm9zb2Z0Lmljb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS92bmQubWl4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvdm5kLm1vemlsbGEuYXBuZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC5tcy1tb2RpXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWRpXCJdfSxcImltYWdlL3ZuZC5tcy1waG90b1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid2RwXCJdfSxcImltYWdlL3ZuZC5uZXQtZnB4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibnB4XCJdfSxcImltYWdlL3ZuZC5yYWRpYW5jZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC5zZWFsZWQucG5nXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLmdpZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5qcGdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS92bmQuc3ZmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvdm5kLnRlbmNlbnQudGFwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvdm5kLnZhbHZlLnNvdXJjZS50ZXh0dXJlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvdm5kLndhcC53Ym1wXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid2JtcFwiXX0sXCJpbWFnZS92bmQueGlmZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhpZlwiXX0sXCJpbWFnZS92bmQuemJydXNoLnBjeFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3dlYnBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIndlYnBcIl19LFwiaW1hZ2Uvd21mXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2UveC0zZHNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIjNkc1wiXX0sXCJpbWFnZS94LWNtdS1yYXN0ZXJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInJhc1wiXX0sXCJpbWFnZS94LWNteFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY214XCJdfSxcImltYWdlL3gtZnJlZWhhbmRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImZoXCIsXCJmaGNcIixcImZoNFwiLFwiZmg1XCIsXCJmaDdcIl19LFwiaW1hZ2UveC1pY29uXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiaWNvXCJdfSxcImltYWdlL3gtam5nXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcImpuZ1wiXX0sXCJpbWFnZS94LW1yc2lkLWltYWdlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzaWRcIl19LFwiaW1hZ2UveC1tcy1ibXBcIjp7XCJzb3VyY2VcIjpcIm5naW54XCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImJtcFwiXX0sXCJpbWFnZS94LXBjeFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicGN4XCJdfSxcImltYWdlL3gtcGljdFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicGljXCIsXCJwY3RcIl19LFwiaW1hZ2UveC1wb3J0YWJsZS1hbnltYXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInBubVwiXX0sXCJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicGJtXCJdfSxcImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicGdtXCJdfSxcImltYWdlL3gtcG9ydGFibGUtcGl4bWFwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJwcG1cIl19LFwiaW1hZ2UveC1yZ2JcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInJnYlwiXX0sXCJpbWFnZS94LXRnYVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widGdhXCJdfSxcImltYWdlL3gteGJpdG1hcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wieGJtXCJdfSxcImltYWdlL3gteGNmXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwiaW1hZ2UveC14cGl4bWFwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ4cG1cIl19LFwiaW1hZ2UveC14d2luZG93ZHVtcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wieHdkXCJdfSxcIm1lc3NhZ2UvY3BpbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibWVzc2FnZS9kaXNwb3NpdGlvbi1ub3RpZmljYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkaXNwb3NpdGlvbi1ub3RpZmljYXRpb25cIl19LFwibWVzc2FnZS9leHRlcm5hbC1ib2R5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibWVzc2FnZS9mZWVkYmFjay1yZXBvcnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtZXNzYWdlL2dsb2JhbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInU4bXNnXCJdfSxcIm1lc3NhZ2UvZ2xvYmFsLWRlbGl2ZXJ5LXN0YXR1c1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInU4ZHNuXCJdfSxcIm1lc3NhZ2UvZ2xvYmFsLWRpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInU4bWRuXCJdfSxcIm1lc3NhZ2UvZ2xvYmFsLWhlYWRlcnNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1OGhkclwiXX0sXCJtZXNzYWdlL2h0dHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcIm1lc3NhZ2UvaW1kbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwibWVzc2FnZS9uZXdzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibWVzc2FnZS9wYXJ0aWFsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJtZXNzYWdlL3JmYzgyMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJlbWxcIixcIm1pbWVcIl19LFwibWVzc2FnZS9zLWh0dHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtZXNzYWdlL3NpcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1lc3NhZ2Uvc2lwZnJhZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1lc3NhZ2UvdHJhY2tpbmctc3RhdHVzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibWVzc2FnZS92bmQuc2kuc2ltcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1lc3NhZ2Uvdm5kLndmYS53c2NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3c2NcIl19LFwibW9kZWwvM21mXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibW9kZWwvZ2x0Zitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImdsdGZcIl19LFwibW9kZWwvZ2x0Zi1iaW5hcnlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiZ2xiXCJdfSxcIm1vZGVsL2lnZXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImlnc1wiLFwiaWdlc1wiXX0sXCJtb2RlbC9tZXNoXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJtc2hcIixcIm1lc2hcIixcInNpbG9cIl19LFwibW9kZWwvdm5kLmNvbGxhZGEreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZGFlXCJdfSxcIm1vZGVsL3ZuZC5kd2ZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkd2ZcIl19LFwibW9kZWwvdm5kLmZsYXRsYW5kLjNkbWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtb2RlbC92bmQuZ2RsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ2RsXCJdfSxcIm1vZGVsL3ZuZC5ncy1nZGxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcIm1vZGVsL3ZuZC5ncy5nZGxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtb2RlbC92bmQuZ3R3XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ3R3XCJdfSxcIm1vZGVsL3ZuZC5tb21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1vZGVsL3ZuZC5tdHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtdHNcIl19LFwibW9kZWwvdm5kLm9wZW5nZXhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LmJpbmFyeVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQudGV4dFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1vZGVsL3ZuZC5yb3NldHRlLmFubm90YXRlZC1kYXRhLW1vZGVsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibW9kZWwvdm5kLnZhbHZlLnNvdXJjZS5jb21waWxlZC1tYXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtb2RlbC92bmQudnR1XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widnR1XCJdfSxcIm1vZGVsL3ZybWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIndybFwiLFwidnJtbFwiXX0sXCJtb2RlbC94M2QrYmluYXJ5XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIngzZGJcIixcIngzZGJ6XCJdfSxcIm1vZGVsL3gzZCtmYXN0aW5mb3NldFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1vZGVsL3gzZCt2cm1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIngzZHZcIixcIngzZHZ6XCJdfSxcIm1vZGVsL3gzZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wieDNkXCIsXCJ4M2R6XCJdfSxcIm1vZGVsL3gzZC12cm1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibXVsdGlwYXJ0L2FsdGVybmF0aXZlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJtdWx0aXBhcnQvYXBwbGVkb3VibGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtdWx0aXBhcnQvYnl0ZXJhbmdlc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm11bHRpcGFydC9kaWdlc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtdWx0aXBhcnQvZW5jcnlwdGVkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJtdWx0aXBhcnQvaGVhZGVyLXNldFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm11bHRpcGFydC9taXhlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwibXVsdGlwYXJ0L211bHRpbGluZ3VhbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm11bHRpcGFydC9wYXJhbGxlbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm11bHRpcGFydC9yZWxhdGVkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJtdWx0aXBhcnQvcmVwb3J0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibXVsdGlwYXJ0L3NpZ25lZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwibXVsdGlwYXJ0L3ZuZC5iaW50Lm1lZC1wbHVzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibXVsdGlwYXJ0L3ZvaWNlLW1lc3NhZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L2NhY2hlLW1hbmlmZXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImFwcGNhY2hlXCIsXCJtYW5pZmVzdFwiXX0sXCJ0ZXh0L2NhbGVuZGFyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaWNzXCIsXCJpZmJcIl19LFwidGV4dC9jYWxlbmRlclwiOntcImNvbXByZXNzaWJsZVwiOnRydWV9LFwidGV4dC9jbWRcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlfSxcInRleHQvY29mZmVlc2NyaXB0XCI6e1wiZXh0ZW5zaW9uc1wiOltcImNvZmZlZVwiLFwibGl0Y29mZmVlXCJdfSxcInRleHQvY3NzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjaGFyc2V0XCI6XCJVVEYtOFwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJjc3NcIl19LFwidGV4dC9jc3ZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiY3N2XCJdfSxcInRleHQvY3N2LXNjaGVtYVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvZGlyZWN0b3J5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9kbnNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L2VjbWFzY3JpcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L2VuY2FwcnRwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9lbnJpY2hlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvZndkcmVkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9ncmFtbWFyLXJlZi1saXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9odG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImh0bWxcIixcImh0bVwiLFwic2h0bWxcIl19LFwidGV4dC9qYWRlXCI6e1wiZXh0ZW5zaW9uc1wiOltcImphZGVcIl19LFwidGV4dC9qYXZhc2NyaXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcInRleHQvamNyLWNuZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvanN4XCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJqc3hcIl19LFwidGV4dC9sZXNzXCI6e1wiZXh0ZW5zaW9uc1wiOltcImxlc3NcIl19LFwidGV4dC9tYXJrZG93blwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJtYXJrZG93blwiLFwibWRcIl19LFwidGV4dC9tYXRobWxcIjp7XCJzb3VyY2VcIjpcIm5naW54XCIsXCJleHRlbnNpb25zXCI6W1wibW1sXCJdfSxcInRleHQvbWl6YXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L24zXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcIm4zXCJdfSxcInRleHQvcGFyYW1ldGVyc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvcGFyaXR5ZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9wbGFpblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ0eHRcIixcInRleHRcIixcImNvbmZcIixcImRlZlwiLFwibGlzdFwiLFwibG9nXCIsXCJpblwiLFwiaW5pXCJdfSxcInRleHQvcHJvdmVuYW5jZS1ub3RhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvcHJzLmZhbGxlbnN0ZWluLnJzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvcHJzLmxpbmVzLnRhZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRzY1wiXX0sXCJ0ZXh0L3Bycy5wcm9wLmxvZ2ljXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9yYXB0b3JmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3JlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvcmZjODIyLWhlYWRlcnNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3JpY2h0ZXh0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInJ0eFwiXX0sXCJ0ZXh0L3J0ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJydGZcIl19LFwidGV4dC9ydHAtZW5jLWFlc2NtMTI4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9ydHBsb29wYmFja1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvcnR4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9zZ21sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2dtbFwiLFwic2dtXCJdfSxcInRleHQvc2hleFwiOntcImV4dGVuc2lvbnNcIjpbXCJzaGV4XCJdfSxcInRleHQvc2xpbVwiOntcImV4dGVuc2lvbnNcIjpbXCJzbGltXCIsXCJzbG1cIl19LFwidGV4dC9zdHJpbmdzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9zdHlsdXNcIjp7XCJleHRlbnNpb25zXCI6W1wic3R5bHVzXCIsXCJzdHlsXCJdfSxcInRleHQvdDE0MFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1widHN2XCJdfSxcInRleHQvdHJvZmZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0XCIsXCJ0clwiLFwicm9mZlwiLFwibWFuXCIsXCJtZVwiLFwibXNcIl19LFwidGV4dC90dXJ0bGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0dGxcIl19LFwidGV4dC91bHBmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3VyaS1saXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInVyaVwiLFwidXJpc1wiLFwidXJsc1wiXX0sXCJ0ZXh0L3ZjYXJkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInZjYXJkXCJdfSxcInRleHQvdm5kLmFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5hYmNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5hc2NpaS1hcnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5jdXJsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY3VybFwiXX0sXCJ0ZXh0L3ZuZC5jdXJsLmRjdXJsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJkY3VybFwiXX0sXCJ0ZXh0L3ZuZC5jdXJsLm1jdXJsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtY3VybFwiXX0sXCJ0ZXh0L3ZuZC5jdXJsLnNjdXJsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzY3VybFwiXX0sXCJ0ZXh0L3ZuZC5kZWJpYW4uY29weXJpZ2h0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQuZG1jbGllbnRzY3JpcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5kdmIuc3VidGl0bGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzdWJcIl19LFwidGV4dC92bmQuZXNtZXJ0ZWMudGhlbWUtZGVzY3JpcHRvclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvdm5kLmZseVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZseVwiXX0sXCJ0ZXh0L3ZuZC5mbWkuZmxleHN0b3JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmbHhcIl19LFwidGV4dC92bmQuZ3JhcGh2aXpcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJndlwiXX0sXCJ0ZXh0L3ZuZC5pbjNkLjNkbWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCIzZG1sXCJdfSxcInRleHQvdm5kLmluM2Quc3BvdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNwb3RcIl19LFwidGV4dC92bmQuaXB0Yy5uZXdzbWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5pcHRjLm5pdGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5sYXRleC16XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQubW90b3JvbGEucmVmbGV4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQubXMtbWVkaWFwYWNrYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQubmV0MnBob25lLmNvbW1jZW50ZXIuY29tbWFuZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvdm5kLnJhZGlzeXMubXNtbC1iYXNpYy1sYXlvdXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5zaS51cmljYXRhbG9ndWVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5zdW4uajJtZS5hcHAtZGVzY3JpcHRvclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImphZFwiXX0sXCJ0ZXh0L3ZuZC50cm9sbHRlY2gubGluZ3Vpc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC53YXAuc2lcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC53YXAuc2xcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC53YXAud21sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid21sXCJdfSxcInRleHQvdm5kLndhcC53bWxzY3JpcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3bWxzXCJdfSxcInRleHQvdnR0XCI6e1wiY2hhcnNldFwiOlwiVVRGLThcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1widnR0XCJdfSxcInRleHQveC1hc21cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNcIixcImFzbVwiXX0sXCJ0ZXh0L3gtY1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY1wiLFwiY2NcIixcImN4eFwiLFwiY3BwXCIsXCJoXCIsXCJoaFwiLFwiZGljXCJdfSxcInRleHQveC1jb21wb25lbnRcIjp7XCJzb3VyY2VcIjpcIm5naW54XCIsXCJleHRlbnNpb25zXCI6W1wiaHRjXCJdfSxcInRleHQveC1mb3J0cmFuXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJmXCIsXCJmb3JcIixcImY3N1wiLFwiZjkwXCJdfSxcInRleHQveC1nd3QtcnBjXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1wbGF0ZVwiOntcImV4dGVuc2lvbnNcIjpbXCJoYnNcIl19LFwidGV4dC94LWphdmEtc291cmNlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJqYXZhXCJdfSxcInRleHQveC1qcXVlcnktdG1wbFwiOntcImNvbXByZXNzaWJsZVwiOnRydWV9LFwidGV4dC94LWx1YVwiOntcImV4dGVuc2lvbnNcIjpbXCJsdWFcIl19LFwidGV4dC94LW1hcmtkb3duXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJta2RcIl19LFwidGV4dC94LW5mb1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibmZvXCJdfSxcInRleHQveC1vcG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJvcG1sXCJdfSxcInRleHQveC1vcmdcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcIm9yZ1wiXX0sXCJ0ZXh0L3gtcGFzY2FsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJwXCIsXCJwYXNcIl19LFwidGV4dC94LXByb2Nlc3NpbmdcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInBkZVwiXX0sXCJ0ZXh0L3gtc2Fzc1wiOntcImV4dGVuc2lvbnNcIjpbXCJzYXNzXCJdfSxcInRleHQveC1zY3NzXCI6e1wiZXh0ZW5zaW9uc1wiOltcInNjc3NcIl19LFwidGV4dC94LXNldGV4dFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZXR4XCJdfSxcInRleHQveC1zZnZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNmdlwiXX0sXCJ0ZXh0L3gtc3VzZS15bXBcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInltcFwiXX0sXCJ0ZXh0L3gtdXVlbmNvZGVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInV1XCJdfSxcInRleHQveC12Y2FsZW5kYXJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInZjc1wiXX0sXCJ0ZXh0L3gtdmNhcmRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInZjZlwiXX0sXCJ0ZXh0L3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ4bWxcIl19LFwidGV4dC94bWwtZXh0ZXJuYWwtcGFyc2VkLWVudGl0eVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQveWFtbFwiOntcImV4dGVuc2lvbnNcIjpbXCJ5YW1sXCIsXCJ5bWxcIl19LFwidmlkZW8vMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vM2dwcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIjNncFwiLFwiM2dwcFwiXX0sXCJ2aWRlby8zZ3BwLXR0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vM2dwcDJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCIzZzJcIl19LFwidmlkZW8vYm1wZWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9idDY1NlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL2NlbGJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9kdlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL2VuY2FwcnRwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vaDI2MVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImgyNjFcIl19LFwidmlkZW8vaDI2M1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImgyNjNcIl19LFwidmlkZW8vaDI2My0xOTk4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vaDI2My0yMDAwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vaDI2NFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImgyNjRcIl19LFwidmlkZW8vaDI2NC1yY2RvXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vaDI2NC1zdmNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9oMjY1XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vaXNvLnNlZ21lbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9qcGVnXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wianBndlwiXX0sXCJ2aWRlby9qcGVnMjAwMFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL2pwbVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wianBtXCIsXCJqcGdtXCJdfSxcInZpZGVvL21qMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1qMlwiLFwibWpwMlwiXX0sXCJ2aWRlby9tcDFzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vbXAycFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL21wMnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0c1wiXX0sXCJ2aWRlby9tcDRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIm1wNFwiLFwibXA0dlwiLFwibXBnNFwiXX0sXCJ2aWRlby9tcDR2LWVzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vbXBlZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wibXBlZ1wiLFwibXBnXCIsXCJtcGVcIixcIm0xdlwiLFwibTJ2XCJdfSxcInZpZGVvL21wZWc0LWdlbmVyaWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9tcHZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9udlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL29nZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wib2d2XCJdfSxcInZpZGVvL3Bhcml0eWZlY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3BvaW50ZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9xdWlja3RpbWVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInF0XCIsXCJtb3ZcIl19LFwidmlkZW8vcmFwdG9yZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vcmF3XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vcnRwLWVuYy1hZXNjbTEyOFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3J0cGxvb3BiYWNrXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vcnR4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vc21wdGUyOTFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9zbXB0ZTI5Mm1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby91bHBmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92YzFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuY2N0dlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5kZWNlLmhkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widXZoXCIsXCJ1dnZoXCJdfSxcInZpZGVvL3ZuZC5kZWNlLm1vYmlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInV2bVwiLFwidXZ2bVwiXX0sXCJ2aWRlby92bmQuZGVjZS5tcDRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuZGVjZS5wZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInV2cFwiLFwidXZ2cFwiXX0sXCJ2aWRlby92bmQuZGVjZS5zZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInV2c1wiLFwidXZ2c1wiXX0sXCJ2aWRlby92bmQuZGVjZS52aWRlb1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInV2dlwiLFwidXZ2dlwiXX0sXCJ2aWRlby92bmQuZGlyZWN0di5tcGVnXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLmRpcmVjdHYubXBlZy10dHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuZGxuYS5tcGVnLXR0c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5kdmIuZmlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImR2YlwiXX0sXCJ2aWRlby92bmQuZnZ0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZnZ0XCJdfSxcInZpZGVvL3ZuZC5obnMudmlkZW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuaXB0dmZvcnVtLjFkcGFyaXR5ZmVjLTEwMTBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuaXB0dmZvcnVtLjFkcGFyaXR5ZmVjLTIwMDVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuaXB0dmZvcnVtLjJkcGFyaXR5ZmVjLTEwMTBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuaXB0dmZvcnVtLjJkcGFyaXR5ZmVjLTIwMDVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuaXB0dmZvcnVtLnR0c2F2Y1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5pcHR2Zm9ydW0udHRzbXBlZzJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQubW90b3JvbGEudmlkZW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQubW90b3JvbGEudmlkZW9wXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLm1wZWd1cmxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJteHVcIixcIm00dVwiXX0sXCJ2aWRlby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5dlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInB5dlwiXX0sXCJ2aWRlby92bmQubm9raWEuaW50ZXJsZWF2ZWQtbXVsdGltZWRpYVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5ub2tpYS5tcDR2clwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5ub2tpYS52aWRlb3ZvaXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQub2JqZWN0dmlkZW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQucmFkZ2FtZXR0b29scy5iaW5rXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLnJhZGdhbWV0dG9vbHMuc21hY2tlclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5zZWFsZWQubXBlZzFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuc2VhbGVkLm1wZWc0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLnNlYWxlZC5zd2ZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwubW92XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLnV2dnUubXA0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widXZ1XCIsXCJ1dnZ1XCJdfSxcInZpZGVvL3ZuZC52aXZvXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widml2XCJdfSxcInZpZGVvL3ZwOFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3dlYm1cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wid2VibVwiXX0sXCJ2aWRlby94LWY0dlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZjR2XCJdfSxcInZpZGVvL3gtZmxpXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJmbGlcIl19LFwidmlkZW8veC1mbHZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiZmx2XCJdfSxcInZpZGVvL3gtbTR2XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtNHZcIl19LFwidmlkZW8veC1tYXRyb3NrYVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJta3ZcIixcIm1rM2RcIixcIm1rc1wiXX0sXCJ2aWRlby94LW1uZ1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibW5nXCJdfSxcInZpZGVvL3gtbXMtYXNmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhc2ZcIixcImFzeFwiXX0sXCJ2aWRlby94LW1zLXZvYlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widm9iXCJdfSxcInZpZGVvL3gtbXMtd21cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIndtXCJdfSxcInZpZGVvL3gtbXMtd212XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIndtdlwiXX0sXCJ2aWRlby94LW1zLXdteFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid214XCJdfSxcInZpZGVvL3gtbXMtd3Z4XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ3dnhcIl19LFwidmlkZW8veC1tc3ZpZGVvXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhdmlcIl19LFwidmlkZW8veC1zZ2ktbW92aWVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1vdmllXCJdfSxcInZpZGVvL3gtc212XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzbXZcIl19LFwieC1jb25mZXJlbmNlL3gtY29vbHRhbGtcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImljZVwiXX0sXCJ4LXNoYWRlci94LWZyYWdtZW50XCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJ4LXNoYWRlci94LXZlcnRleFwiOntcImNvbXByZXNzaWJsZVwiOnRydWV9fVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9taW1lLWRiL2RiLmpzb25cbi8vIG1vZHVsZSBpZCA9IDE1NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGJvZHktcGFyc2VyXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciBieXRlcyA9IHJlcXVpcmUoJ2J5dGVzJylcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2JvZHktcGFyc2VyOnJhdycpXG52YXIgcmVhZCA9IHJlcXVpcmUoJy4uL3JlYWQnKVxudmFyIHR5cGVpcyA9IHJlcXVpcmUoJ3R5cGUtaXMnKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcmF3XG5cbi8qKlxuICogQ3JlYXRlIGEgbWlkZGxld2FyZSB0byBwYXJzZSByYXcgYm9kaWVzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiByYXcgKG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9XG5cbiAgdmFyIGluZmxhdGUgPSBvcHRzLmluZmxhdGUgIT09IGZhbHNlXG4gIHZhciBsaW1pdCA9IHR5cGVvZiBvcHRzLmxpbWl0ICE9PSAnbnVtYmVyJ1xuICAgID8gYnl0ZXMucGFyc2Uob3B0cy5saW1pdCB8fCAnMTAwa2InKVxuICAgIDogb3B0cy5saW1pdFxuICB2YXIgdHlwZSA9IG9wdHMudHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJ1xuICB2YXIgdmVyaWZ5ID0gb3B0cy52ZXJpZnkgfHwgZmFsc2VcblxuICBpZiAodmVyaWZ5ICE9PSBmYWxzZSAmJiB0eXBlb2YgdmVyaWZ5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIHZlcmlmeSBtdXN0IGJlIGZ1bmN0aW9uJylcbiAgfVxuXG4gIC8vIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBjaGVja2luZyBmdW5jdGlvblxuICB2YXIgc2hvdWxkUGFyc2UgPSB0eXBlb2YgdHlwZSAhPT0gJ2Z1bmN0aW9uJ1xuICAgID8gdHlwZUNoZWNrZXIodHlwZSlcbiAgICA6IHR5cGVcblxuICBmdW5jdGlvbiBwYXJzZSAoYnVmKSB7XG4gICAgcmV0dXJuIGJ1ZlxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHJhd1BhcnNlciAocmVxLCByZXMsIG5leHQpIHtcbiAgICBpZiAocmVxLl9ib2R5KSB7XG4gICAgICBkZWJ1ZygnYm9keSBhbHJlYWR5IHBhcnNlZCcpXG4gICAgICBuZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJlcS5ib2R5ID0gcmVxLmJvZHkgfHwge31cblxuICAgIC8vIHNraXAgcmVxdWVzdHMgd2l0aG91dCBib2RpZXNcbiAgICBpZiAoIXR5cGVpcy5oYXNCb2R5KHJlcSkpIHtcbiAgICAgIGRlYnVnKCdza2lwIGVtcHR5IGJvZHknKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBkZWJ1ZygnY29udGVudC10eXBlICVqJywgcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKVxuXG4gICAgLy8gZGV0ZXJtaW5lIGlmIHJlcXVlc3Qgc2hvdWxkIGJlIHBhcnNlZFxuICAgIGlmICghc2hvdWxkUGFyc2UocmVxKSkge1xuICAgICAgZGVidWcoJ3NraXAgcGFyc2luZycpXG4gICAgICBuZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHJlYWRcbiAgICByZWFkKHJlcSwgcmVzLCBuZXh0LCBwYXJzZSwgZGVidWcsIHtcbiAgICAgIGVuY29kaW5nOiBudWxsLFxuICAgICAgaW5mbGF0ZTogaW5mbGF0ZSxcbiAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICAgIHZlcmlmeTogdmVyaWZ5XG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgc2ltcGxlIHR5cGUgY2hlY2tlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cblxuZnVuY3Rpb24gdHlwZUNoZWNrZXIgKHR5cGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrVHlwZSAocmVxKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odHlwZWlzKHJlcSwgdHlwZSkpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9saWIvdHlwZXMvcmF3LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBib2R5LXBhcnNlclxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgYnl0ZXMgPSByZXF1aXJlKCdieXRlcycpXG52YXIgY29udGVudFR5cGUgPSByZXF1aXJlKCdjb250ZW50LXR5cGUnKVxudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnYm9keS1wYXJzZXI6dGV4dCcpXG52YXIgcmVhZCA9IHJlcXVpcmUoJy4uL3JlYWQnKVxudmFyIHR5cGVpcyA9IHJlcXVpcmUoJ3R5cGUtaXMnKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gdGV4dFxuXG4vKipcbiAqIENyZWF0ZSBhIG1pZGRsZXdhcmUgdG8gcGFyc2UgdGV4dCBib2RpZXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHRleHQgKG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9XG5cbiAgdmFyIGRlZmF1bHRDaGFyc2V0ID0gb3B0cy5kZWZhdWx0Q2hhcnNldCB8fCAndXRmLTgnXG4gIHZhciBpbmZsYXRlID0gb3B0cy5pbmZsYXRlICE9PSBmYWxzZVxuICB2YXIgbGltaXQgPSB0eXBlb2Ygb3B0cy5saW1pdCAhPT0gJ251bWJlcidcbiAgICA/IGJ5dGVzLnBhcnNlKG9wdHMubGltaXQgfHwgJzEwMGtiJylcbiAgICA6IG9wdHMubGltaXRcbiAgdmFyIHR5cGUgPSBvcHRzLnR5cGUgfHwgJ3RleHQvcGxhaW4nXG4gIHZhciB2ZXJpZnkgPSBvcHRzLnZlcmlmeSB8fCBmYWxzZVxuXG4gIGlmICh2ZXJpZnkgIT09IGZhbHNlICYmIHR5cGVvZiB2ZXJpZnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gdmVyaWZ5IG11c3QgYmUgZnVuY3Rpb24nKVxuICB9XG5cbiAgLy8gY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9uXG4gIHZhciBzaG91bGRQYXJzZSA9IHR5cGVvZiB0eXBlICE9PSAnZnVuY3Rpb24nXG4gICAgPyB0eXBlQ2hlY2tlcih0eXBlKVxuICAgIDogdHlwZVxuXG4gIGZ1bmN0aW9uIHBhcnNlIChidWYpIHtcbiAgICByZXR1cm4gYnVmXG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gdGV4dFBhcnNlciAocmVxLCByZXMsIG5leHQpIHtcbiAgICBpZiAocmVxLl9ib2R5KSB7XG4gICAgICBkZWJ1ZygnYm9keSBhbHJlYWR5IHBhcnNlZCcpXG4gICAgICBuZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJlcS5ib2R5ID0gcmVxLmJvZHkgfHwge31cblxuICAgIC8vIHNraXAgcmVxdWVzdHMgd2l0aG91dCBib2RpZXNcbiAgICBpZiAoIXR5cGVpcy5oYXNCb2R5KHJlcSkpIHtcbiAgICAgIGRlYnVnKCdza2lwIGVtcHR5IGJvZHknKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBkZWJ1ZygnY29udGVudC10eXBlICVqJywgcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKVxuXG4gICAgLy8gZGV0ZXJtaW5lIGlmIHJlcXVlc3Qgc2hvdWxkIGJlIHBhcnNlZFxuICAgIGlmICghc2hvdWxkUGFyc2UocmVxKSkge1xuICAgICAgZGVidWcoJ3NraXAgcGFyc2luZycpXG4gICAgICBuZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIGdldCBjaGFyc2V0XG4gICAgdmFyIGNoYXJzZXQgPSBnZXRDaGFyc2V0KHJlcSkgfHwgZGVmYXVsdENoYXJzZXRcblxuICAgIC8vIHJlYWRcbiAgICByZWFkKHJlcSwgcmVzLCBuZXh0LCBwYXJzZSwgZGVidWcsIHtcbiAgICAgIGVuY29kaW5nOiBjaGFyc2V0LFxuICAgICAgaW5mbGF0ZTogaW5mbGF0ZSxcbiAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICAgIHZlcmlmeTogdmVyaWZ5XG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgY2hhcnNldCBvZiBhIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0Q2hhcnNldCAocmVxKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChjb250ZW50VHlwZS5wYXJzZShyZXEpLnBhcmFtZXRlcnMuY2hhcnNldCB8fCAnJykudG9Mb3dlckNhc2UoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBzaW1wbGUgdHlwZSBjaGVja2VyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuXG5mdW5jdGlvbiB0eXBlQ2hlY2tlciAodHlwZSkge1xuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tUeXBlIChyZXEpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0eXBlaXMocmVxLCB0eXBlKSlcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2JvZHktcGFyc2VyL2xpYi90eXBlcy90ZXh0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBib2R5LXBhcnNlclxuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgYnl0ZXMgPSByZXF1aXJlKCdieXRlcycpXG52YXIgY29udGVudFR5cGUgPSByZXF1aXJlKCdjb250ZW50LXR5cGUnKVxudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnaHR0cC1lcnJvcnMnKVxudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnYm9keS1wYXJzZXI6dXJsZW5jb2RlZCcpXG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdib2R5LXBhcnNlcicpXG52YXIgcmVhZCA9IHJlcXVpcmUoJy4uL3JlYWQnKVxudmFyIHR5cGVpcyA9IHJlcXVpcmUoJ3R5cGUtaXMnKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gdXJsZW5jb2RlZFxuXG4vKipcbiAqIENhY2hlIG9mIHBhcnNlciBtb2R1bGVzLlxuICovXG5cbnZhciBwYXJzZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuXG4vKipcbiAqIENyZWF0ZSBhIG1pZGRsZXdhcmUgdG8gcGFyc2UgdXJsZW5jb2RlZCBib2RpZXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gdXJsZW5jb2RlZCAob3B0aW9ucykge1xuICB2YXIgb3B0cyA9IG9wdGlvbnMgfHwge31cblxuICAvLyBub3RpY2UgYmVjYXVzZSBvcHRpb24gZGVmYXVsdCB3aWxsIGZsaXAgaW4gbmV4dCBtYWpvclxuICBpZiAob3B0cy5leHRlbmRlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZGVwcmVjYXRlKCd1bmRlZmluZWQgZXh0ZW5kZWQ6IHByb3ZpZGUgZXh0ZW5kZWQgb3B0aW9uJylcbiAgfVxuXG4gIHZhciBleHRlbmRlZCA9IG9wdHMuZXh0ZW5kZWQgIT09IGZhbHNlXG4gIHZhciBpbmZsYXRlID0gb3B0cy5pbmZsYXRlICE9PSBmYWxzZVxuICB2YXIgbGltaXQgPSB0eXBlb2Ygb3B0cy5saW1pdCAhPT0gJ251bWJlcidcbiAgICA/IGJ5dGVzLnBhcnNlKG9wdHMubGltaXQgfHwgJzEwMGtiJylcbiAgICA6IG9wdHMubGltaXRcbiAgdmFyIHR5cGUgPSBvcHRzLnR5cGUgfHwgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgdmFyIHZlcmlmeSA9IG9wdHMudmVyaWZ5IHx8IGZhbHNlXG5cbiAgaWYgKHZlcmlmeSAhPT0gZmFsc2UgJiYgdHlwZW9mIHZlcmlmeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiB2ZXJpZnkgbXVzdCBiZSBmdW5jdGlvbicpXG4gIH1cblxuICAvLyBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIHF1ZXJ5IHBhcnNlclxuICB2YXIgcXVlcnlwYXJzZSA9IGV4dGVuZGVkXG4gICAgPyBleHRlbmRlZHBhcnNlcihvcHRzKVxuICAgIDogc2ltcGxlcGFyc2VyKG9wdHMpXG5cbiAgLy8gY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9uXG4gIHZhciBzaG91bGRQYXJzZSA9IHR5cGVvZiB0eXBlICE9PSAnZnVuY3Rpb24nXG4gICAgPyB0eXBlQ2hlY2tlcih0eXBlKVxuICAgIDogdHlwZVxuXG4gIGZ1bmN0aW9uIHBhcnNlIChib2R5KSB7XG4gICAgcmV0dXJuIGJvZHkubGVuZ3RoXG4gICAgICA/IHF1ZXJ5cGFyc2UoYm9keSlcbiAgICAgIDoge31cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiB1cmxlbmNvZGVkUGFyc2VyIChyZXEsIHJlcywgbmV4dCkge1xuICAgIGlmIChyZXEuX2JvZHkpIHtcbiAgICAgIGRlYnVnKCdib2R5IGFscmVhZHkgcGFyc2VkJylcbiAgICAgIG5leHQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcmVxLmJvZHkgPSByZXEuYm9keSB8fCB7fVxuXG4gICAgLy8gc2tpcCByZXF1ZXN0cyB3aXRob3V0IGJvZGllc1xuICAgIGlmICghdHlwZWlzLmhhc0JvZHkocmVxKSkge1xuICAgICAgZGVidWcoJ3NraXAgZW1wdHkgYm9keScpXG4gICAgICBuZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGRlYnVnKCdjb250ZW50LXR5cGUgJWonLCByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ10pXG5cbiAgICAvLyBkZXRlcm1pbmUgaWYgcmVxdWVzdCBzaG91bGQgYmUgcGFyc2VkXG4gICAgaWYgKCFzaG91bGRQYXJzZShyZXEpKSB7XG4gICAgICBkZWJ1Zygnc2tpcCBwYXJzaW5nJylcbiAgICAgIG5leHQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gYXNzZXJ0IGNoYXJzZXRcbiAgICB2YXIgY2hhcnNldCA9IGdldENoYXJzZXQocmVxKSB8fCAndXRmLTgnXG4gICAgaWYgKGNoYXJzZXQgIT09ICd1dGYtOCcpIHtcbiAgICAgIGRlYnVnKCdpbnZhbGlkIGNoYXJzZXQnKVxuICAgICAgbmV4dChjcmVhdGVFcnJvcig0MTUsICd1bnN1cHBvcnRlZCBjaGFyc2V0IFwiJyArIGNoYXJzZXQudG9VcHBlckNhc2UoKSArICdcIicsIHtcbiAgICAgICAgY2hhcnNldDogY2hhcnNldCxcbiAgICAgICAgdHlwZTogJ2NoYXJzZXQudW5zdXBwb3J0ZWQnXG4gICAgICB9KSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHJlYWRcbiAgICByZWFkKHJlcSwgcmVzLCBuZXh0LCBwYXJzZSwgZGVidWcsIHtcbiAgICAgIGRlYnVnOiBkZWJ1ZyxcbiAgICAgIGVuY29kaW5nOiBjaGFyc2V0LFxuICAgICAgaW5mbGF0ZTogaW5mbGF0ZSxcbiAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICAgIHZlcmlmeTogdmVyaWZ5XG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgZXh0ZW5kZWQgcXVlcnkgcGFyc2VyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKi9cblxuZnVuY3Rpb24gZXh0ZW5kZWRwYXJzZXIgKG9wdGlvbnMpIHtcbiAgdmFyIHBhcmFtZXRlckxpbWl0ID0gb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdCAhPT0gdW5kZWZpbmVkXG4gICAgPyBvcHRpb25zLnBhcmFtZXRlckxpbWl0XG4gICAgOiAxMDAwXG4gIHZhciBwYXJzZSA9IHBhcnNlcigncXMnKVxuXG4gIGlmIChpc05hTihwYXJhbWV0ZXJMaW1pdCkgfHwgcGFyYW1ldGVyTGltaXQgPCAxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIHBhcmFtZXRlckxpbWl0IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGlzRmluaXRlKHBhcmFtZXRlckxpbWl0KSkge1xuICAgIHBhcmFtZXRlckxpbWl0ID0gcGFyYW1ldGVyTGltaXQgfCAwXG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gcXVlcnlwYXJzZSAoYm9keSkge1xuICAgIHZhciBwYXJhbUNvdW50ID0gcGFyYW1ldGVyQ291bnQoYm9keSwgcGFyYW1ldGVyTGltaXQpXG5cbiAgICBpZiAocGFyYW1Db3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWJ1ZygndG9vIG1hbnkgcGFyYW1ldGVycycpXG4gICAgICB0aHJvdyBjcmVhdGVFcnJvcig0MTMsICd0b28gbWFueSBwYXJhbWV0ZXJzJywge1xuICAgICAgICB0eXBlOiAncGFyYW1ldGVycy50b28ubWFueSdcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdmFyIGFycmF5TGltaXQgPSBNYXRoLm1heCgxMDAsIHBhcmFtQ291bnQpXG5cbiAgICBkZWJ1ZygncGFyc2UgZXh0ZW5kZWQgdXJsZW5jb2RpbmcnKVxuICAgIHJldHVybiBwYXJzZShib2R5LCB7XG4gICAgICBhbGxvd1Byb3RvdHlwZXM6IHRydWUsXG4gICAgICBhcnJheUxpbWl0OiBhcnJheUxpbWl0LFxuICAgICAgZGVwdGg6IEluZmluaXR5LFxuICAgICAgcGFyYW1ldGVyTGltaXQ6IHBhcmFtZXRlckxpbWl0XG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgY2hhcnNldCBvZiBhIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0Q2hhcnNldCAocmVxKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChjb250ZW50VHlwZS5wYXJzZShyZXEpLnBhcmFtZXRlcnMuY2hhcnNldCB8fCAnJykudG9Mb3dlckNhc2UoKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG59XG5cbi8qKlxuICogQ291bnQgdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzLCBzdG9wcGluZyBvbmNlIGxpbWl0IHJlYWNoZWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9keVxuICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJhbWV0ZXJDb3VudCAoYm9keSwgbGltaXQpIHtcbiAgdmFyIGNvdW50ID0gMFxuICB2YXIgaW5kZXggPSAwXG5cbiAgd2hpbGUgKChpbmRleCA9IGJvZHkuaW5kZXhPZignJicsIGluZGV4KSkgIT09IC0xKSB7XG4gICAgY291bnQrK1xuICAgIGluZGV4KytcblxuICAgIGlmIChjb3VudCA9PT0gbGltaXQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY291bnRcbn1cblxuLyoqXG4gKiBHZXQgcGFyc2VyIGZvciBtb2R1bGUgbmFtZSBkeW5hbWljYWxseS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZXIgKG5hbWUpIHtcbiAgdmFyIG1vZCA9IHBhcnNlcnNbbmFtZV1cblxuICBpZiAobW9kICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gbW9kLnBhcnNlXG4gIH1cblxuICAvLyB0aGlzIHVzZXMgYSBzd2l0Y2ggZm9yIHN0YXRpYyByZXF1aXJlIGFuYWx5c2lzXG4gIHN3aXRjaCAobmFtZSkge1xuICAgIGNhc2UgJ3FzJzpcbiAgICAgIG1vZCA9IHJlcXVpcmUoJ3FzJylcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncXVlcnlzdHJpbmcnOlxuICAgICAgbW9kID0gcmVxdWlyZSgncXVlcnlzdHJpbmcnKVxuICAgICAgYnJlYWtcbiAgfVxuXG4gIC8vIHN0b3JlIHRvIHByZXZlbnQgaW52b2tpbmcgcmVxdWlyZSgpXG4gIHBhcnNlcnNbbmFtZV0gPSBtb2RcblxuICByZXR1cm4gbW9kLnBhcnNlXG59XG5cbi8qKlxuICogR2V0IHRoZSBzaW1wbGUgcXVlcnkgcGFyc2VyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKi9cblxuZnVuY3Rpb24gc2ltcGxlcGFyc2VyIChvcHRpb25zKSB7XG4gIHZhciBwYXJhbWV0ZXJMaW1pdCA9IG9wdGlvbnMucGFyYW1ldGVyTGltaXQgIT09IHVuZGVmaW5lZFxuICAgID8gb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdFxuICAgIDogMTAwMFxuICB2YXIgcGFyc2UgPSBwYXJzZXIoJ3F1ZXJ5c3RyaW5nJylcblxuICBpZiAoaXNOYU4ocGFyYW1ldGVyTGltaXQpIHx8IHBhcmFtZXRlckxpbWl0IDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBwYXJhbWV0ZXJMaW1pdCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChpc0Zpbml0ZShwYXJhbWV0ZXJMaW1pdCkpIHtcbiAgICBwYXJhbWV0ZXJMaW1pdCA9IHBhcmFtZXRlckxpbWl0IHwgMFxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXJ5cGFyc2UgKGJvZHkpIHtcbiAgICB2YXIgcGFyYW1Db3VudCA9IHBhcmFtZXRlckNvdW50KGJvZHksIHBhcmFtZXRlckxpbWl0KVxuXG4gICAgaWYgKHBhcmFtQ291bnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVidWcoJ3RvbyBtYW55IHBhcmFtZXRlcnMnKVxuICAgICAgdGhyb3cgY3JlYXRlRXJyb3IoNDEzLCAndG9vIG1hbnkgcGFyYW1ldGVycycsIHtcbiAgICAgICAgdHlwZTogJ3BhcmFtZXRlcnMudG9vLm1hbnknXG4gICAgICB9KVxuICAgIH1cblxuICAgIGRlYnVnKCdwYXJzZSB1cmxlbmNvZGluZycpXG4gICAgcmV0dXJuIHBhcnNlKGJvZHksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB7bWF4S2V5czogcGFyYW1ldGVyTGltaXR9KVxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBzaW1wbGUgdHlwZSBjaGVja2VyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuXG5mdW5jdGlvbiB0eXBlQ2hlY2tlciAodHlwZSkge1xuICByZXR1cm4gZnVuY3Rpb24gY2hlY2tUeXBlIChyZXEpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0eXBlaXMocmVxLCB0eXBlKSlcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2JvZHktcGFyc2VyL2xpYi90eXBlcy91cmxlbmNvZGVkLmpzXG4vLyBtb2R1bGUgaWQgPSAxNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgZm9ybWF0cyA9IHJlcXVpcmUoJy4vZm9ybWF0cycpO1xuXG52YXIgYXJyYXlQcmVmaXhHZW5lcmF0b3JzID0ge1xuICAgIGJyYWNrZXRzOiBmdW5jdGlvbiBicmFja2V0cyhwcmVmaXgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBmdW5jLW5hbWUtbWF0Y2hpbmdcbiAgICAgICAgcmV0dXJuIHByZWZpeCArICdbXSc7XG4gICAgfSxcbiAgICBpbmRpY2VzOiBmdW5jdGlvbiBpbmRpY2VzKHByZWZpeCwga2V5KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZnVuYy1uYW1lLW1hdGNoaW5nXG4gICAgICAgIHJldHVybiBwcmVmaXggKyAnWycgKyBrZXkgKyAnXSc7XG4gICAgfSxcbiAgICByZXBlYXQ6IGZ1bmN0aW9uIHJlcGVhdChwcmVmaXgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBmdW5jLW5hbWUtbWF0Y2hpbmdcbiAgICAgICAgcmV0dXJuIHByZWZpeDtcbiAgICB9XG59O1xuXG52YXIgdG9JU08gPSBEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZztcblxudmFyIGRlZmF1bHRzID0ge1xuICAgIGRlbGltaXRlcjogJyYnLFxuICAgIGVuY29kZTogdHJ1ZSxcbiAgICBlbmNvZGVyOiB1dGlscy5lbmNvZGUsXG4gICAgZW5jb2RlVmFsdWVzT25seTogZmFsc2UsXG4gICAgc2VyaWFsaXplRGF0ZTogZnVuY3Rpb24gc2VyaWFsaXplRGF0ZShkYXRlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZnVuYy1uYW1lLW1hdGNoaW5nXG4gICAgICAgIHJldHVybiB0b0lTTy5jYWxsKGRhdGUpO1xuICAgIH0sXG4gICAgc2tpcE51bGxzOiBmYWxzZSxcbiAgICBzdHJpY3ROdWxsSGFuZGxpbmc6IGZhbHNlXG59O1xuXG52YXIgc3RyaW5naWZ5ID0gZnVuY3Rpb24gc3RyaW5naWZ5KCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtbmFtZS1tYXRjaGluZ1xuICAgIG9iamVjdCxcbiAgICBwcmVmaXgsXG4gICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICBzdHJpY3ROdWxsSGFuZGxpbmcsXG4gICAgc2tpcE51bGxzLFxuICAgIGVuY29kZXIsXG4gICAgZmlsdGVyLFxuICAgIHNvcnQsXG4gICAgYWxsb3dEb3RzLFxuICAgIHNlcmlhbGl6ZURhdGUsXG4gICAgZm9ybWF0dGVyLFxuICAgIGVuY29kZVZhbHVlc09ubHlcbikge1xuICAgIHZhciBvYmogPSBvYmplY3Q7XG4gICAgaWYgKHR5cGVvZiBmaWx0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb2JqID0gZmlsdGVyKHByZWZpeCwgb2JqKTtcbiAgICB9IGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgb2JqID0gc2VyaWFsaXplRGF0ZShvYmopO1xuICAgIH0gZWxzZSBpZiAob2JqID09PSBudWxsKSB7XG4gICAgICAgIGlmIChzdHJpY3ROdWxsSGFuZGxpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBlbmNvZGVyICYmICFlbmNvZGVWYWx1ZXNPbmx5ID8gZW5jb2RlcihwcmVmaXgsIGRlZmF1bHRzLmVuY29kZXIpIDogcHJlZml4O1xuICAgICAgICB9XG5cbiAgICAgICAgb2JqID0gJyc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvYmogPT09ICdudW1iZXInIHx8IHR5cGVvZiBvYmogPT09ICdib29sZWFuJyB8fCB1dGlscy5pc0J1ZmZlcihvYmopKSB7XG4gICAgICAgIGlmIChlbmNvZGVyKSB7XG4gICAgICAgICAgICB2YXIga2V5VmFsdWUgPSBlbmNvZGVWYWx1ZXNPbmx5ID8gcHJlZml4IDogZW5jb2RlcihwcmVmaXgsIGRlZmF1bHRzLmVuY29kZXIpO1xuICAgICAgICAgICAgcmV0dXJuIFtmb3JtYXR0ZXIoa2V5VmFsdWUpICsgJz0nICsgZm9ybWF0dGVyKGVuY29kZXIob2JqLCBkZWZhdWx0cy5lbmNvZGVyKSldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbZm9ybWF0dGVyKHByZWZpeCkgKyAnPScgKyBmb3JtYXR0ZXIoU3RyaW5nKG9iaikpXTtcbiAgICB9XG5cbiAgICB2YXIgdmFsdWVzID0gW107XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG5cbiAgICB2YXIgb2JqS2V5cztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXIpKSB7XG4gICAgICAgIG9iaktleXMgPSBmaWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBvYmpLZXlzID0gc29ydCA/IGtleXMuc29ydChzb3J0KSA6IGtleXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmpLZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpLZXlzW2ldO1xuXG4gICAgICAgIGlmIChza2lwTnVsbHMgJiYgb2JqW2tleV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgdmFsdWVzID0gdmFsdWVzLmNvbmNhdChzdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgb2JqW2tleV0sXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVBcnJheVByZWZpeChwcmVmaXgsIGtleSksXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICAgICAgICAgICAgICBzdHJpY3ROdWxsSGFuZGxpbmcsXG4gICAgICAgICAgICAgICAgc2tpcE51bGxzLFxuICAgICAgICAgICAgICAgIGVuY29kZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICAgICAgYWxsb3dEb3RzLFxuICAgICAgICAgICAgICAgIHNlcmlhbGl6ZURhdGUsXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVyLFxuICAgICAgICAgICAgICAgIGVuY29kZVZhbHVlc09ubHlcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWVzID0gdmFsdWVzLmNvbmNhdChzdHJpbmdpZnkoXG4gICAgICAgICAgICAgICAgb2JqW2tleV0sXG4gICAgICAgICAgICAgICAgcHJlZml4ICsgKGFsbG93RG90cyA/ICcuJyArIGtleSA6ICdbJyArIGtleSArICddJyksXG4gICAgICAgICAgICAgICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICAgICAgICAgICAgICBzdHJpY3ROdWxsSGFuZGxpbmcsXG4gICAgICAgICAgICAgICAgc2tpcE51bGxzLFxuICAgICAgICAgICAgICAgIGVuY29kZXIsXG4gICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICAgICAgYWxsb3dEb3RzLFxuICAgICAgICAgICAgICAgIHNlcmlhbGl6ZURhdGUsXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVyLFxuICAgICAgICAgICAgICAgIGVuY29kZVZhbHVlc09ubHlcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlcztcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgb3B0cykge1xuICAgIHZhciBvYmogPSBvYmplY3Q7XG4gICAgdmFyIG9wdGlvbnMgPSBvcHRzID8gdXRpbHMuYXNzaWduKHt9LCBvcHRzKSA6IHt9O1xuXG4gICAgaWYgKG9wdGlvbnMuZW5jb2RlciAhPT0gbnVsbCAmJiBvcHRpb25zLmVuY29kZXIgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucy5lbmNvZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0VuY29kZXIgaGFzIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgdmFyIGRlbGltaXRlciA9IHR5cGVvZiBvcHRpb25zLmRlbGltaXRlciA9PT0gJ3VuZGVmaW5lZCcgPyBkZWZhdWx0cy5kZWxpbWl0ZXIgOiBvcHRpb25zLmRlbGltaXRlcjtcbiAgICB2YXIgc3RyaWN0TnVsbEhhbmRsaW5nID0gdHlwZW9mIG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nID09PSAnYm9vbGVhbicgPyBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA6IGRlZmF1bHRzLnN0cmljdE51bGxIYW5kbGluZztcbiAgICB2YXIgc2tpcE51bGxzID0gdHlwZW9mIG9wdGlvbnMuc2tpcE51bGxzID09PSAnYm9vbGVhbicgPyBvcHRpb25zLnNraXBOdWxscyA6IGRlZmF1bHRzLnNraXBOdWxscztcbiAgICB2YXIgZW5jb2RlID0gdHlwZW9mIG9wdGlvbnMuZW5jb2RlID09PSAnYm9vbGVhbicgPyBvcHRpb25zLmVuY29kZSA6IGRlZmF1bHRzLmVuY29kZTtcbiAgICB2YXIgZW5jb2RlciA9IHR5cGVvZiBvcHRpb25zLmVuY29kZXIgPT09ICdmdW5jdGlvbicgPyBvcHRpb25zLmVuY29kZXIgOiBkZWZhdWx0cy5lbmNvZGVyO1xuICAgIHZhciBzb3J0ID0gdHlwZW9mIG9wdGlvbnMuc29ydCA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMuc29ydCA6IG51bGw7XG4gICAgdmFyIGFsbG93RG90cyA9IHR5cGVvZiBvcHRpb25zLmFsbG93RG90cyA9PT0gJ3VuZGVmaW5lZCcgPyBmYWxzZSA6IG9wdGlvbnMuYWxsb3dEb3RzO1xuICAgIHZhciBzZXJpYWxpemVEYXRlID0gdHlwZW9mIG9wdGlvbnMuc2VyaWFsaXplRGF0ZSA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMuc2VyaWFsaXplRGF0ZSA6IGRlZmF1bHRzLnNlcmlhbGl6ZURhdGU7XG4gICAgdmFyIGVuY29kZVZhbHVlc09ubHkgPSB0eXBlb2Ygb3B0aW9ucy5lbmNvZGVWYWx1ZXNPbmx5ID09PSAnYm9vbGVhbicgPyBvcHRpb25zLmVuY29kZVZhbHVlc09ubHkgOiBkZWZhdWx0cy5lbmNvZGVWYWx1ZXNPbmx5O1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mb3JtYXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIG9wdGlvbnMuZm9ybWF0ID0gZm9ybWF0c1snZGVmYXVsdCddO1xuICAgIH0gZWxzZSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmb3JtYXRzLmZvcm1hdHRlcnMsIG9wdGlvbnMuZm9ybWF0KSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGZvcm1hdCBvcHRpb24gcHJvdmlkZWQuJyk7XG4gICAgfVxuICAgIHZhciBmb3JtYXR0ZXIgPSBmb3JtYXRzLmZvcm1hdHRlcnNbb3B0aW9ucy5mb3JtYXRdO1xuICAgIHZhciBvYmpLZXlzO1xuICAgIHZhciBmaWx0ZXI7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGZpbHRlciA9IG9wdGlvbnMuZmlsdGVyO1xuICAgICAgICBvYmogPSBmaWx0ZXIoJycsIG9iaik7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbnMuZmlsdGVyKSkge1xuICAgICAgICBmaWx0ZXIgPSBvcHRpb25zLmZpbHRlcjtcbiAgICAgICAgb2JqS2V5cyA9IGZpbHRlcjtcbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IFtdO1xuXG4gICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnIHx8IG9iaiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgdmFyIGFycmF5Rm9ybWF0O1xuICAgIGlmIChvcHRpb25zLmFycmF5Rm9ybWF0IGluIGFycmF5UHJlZml4R2VuZXJhdG9ycykge1xuICAgICAgICBhcnJheUZvcm1hdCA9IG9wdGlvbnMuYXJyYXlGb3JtYXQ7XG4gICAgfSBlbHNlIGlmICgnaW5kaWNlcycgaW4gb3B0aW9ucykge1xuICAgICAgICBhcnJheUZvcm1hdCA9IG9wdGlvbnMuaW5kaWNlcyA/ICdpbmRpY2VzJyA6ICdyZXBlYXQnO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGFycmF5Rm9ybWF0ID0gJ2luZGljZXMnO1xuICAgIH1cblxuICAgIHZhciBnZW5lcmF0ZUFycmF5UHJlZml4ID0gYXJyYXlQcmVmaXhHZW5lcmF0b3JzW2FycmF5Rm9ybWF0XTtcblxuICAgIGlmICghb2JqS2V5cykge1xuICAgICAgICBvYmpLZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICB9XG5cbiAgICBpZiAoc29ydCkge1xuICAgICAgICBvYmpLZXlzLnNvcnQoc29ydCk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvYmpLZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpLZXlzW2ldO1xuXG4gICAgICAgIGlmIChza2lwTnVsbHMgJiYgb2JqW2tleV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5cyA9IGtleXMuY29uY2F0KHN0cmluZ2lmeShcbiAgICAgICAgICAgIG9ialtrZXldLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZ2VuZXJhdGVBcnJheVByZWZpeCxcbiAgICAgICAgICAgIHN0cmljdE51bGxIYW5kbGluZyxcbiAgICAgICAgICAgIHNraXBOdWxscyxcbiAgICAgICAgICAgIGVuY29kZSA/IGVuY29kZXIgOiBudWxsLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgIGFsbG93RG90cyxcbiAgICAgICAgICAgIHNlcmlhbGl6ZURhdGUsXG4gICAgICAgICAgICBmb3JtYXR0ZXIsXG4gICAgICAgICAgICBlbmNvZGVWYWx1ZXNPbmx5XG4gICAgICAgICkpO1xuICAgIH1cblxuICAgIHZhciBqb2luZWQgPSBrZXlzLmpvaW4oZGVsaW1pdGVyKTtcbiAgICB2YXIgcHJlZml4ID0gb3B0aW9ucy5hZGRRdWVyeVByZWZpeCA9PT0gdHJ1ZSA/ICc/JyA6ICcnO1xuXG4gICAgcmV0dXJuIGpvaW5lZC5sZW5ndGggPiAwID8gcHJlZml4ICsgam9pbmVkIDogJyc7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9zdHJpbmdpZnkuanNcbi8vIG1vZHVsZSBpZCA9IDE1OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgICBhbGxvd0RvdHM6IGZhbHNlLFxuICAgIGFsbG93UHJvdG90eXBlczogZmFsc2UsXG4gICAgYXJyYXlMaW1pdDogMjAsXG4gICAgZGVjb2RlcjogdXRpbHMuZGVjb2RlLFxuICAgIGRlbGltaXRlcjogJyYnLFxuICAgIGRlcHRoOiA1LFxuICAgIHBhcmFtZXRlckxpbWl0OiAxMDAwLFxuICAgIHBsYWluT2JqZWN0czogZmFsc2UsXG4gICAgc3RyaWN0TnVsbEhhbmRsaW5nOiBmYWxzZVxufTtcblxudmFyIHBhcnNlVmFsdWVzID0gZnVuY3Rpb24gcGFyc2VRdWVyeVN0cmluZ1ZhbHVlcyhzdHIsIG9wdGlvbnMpIHtcbiAgICB2YXIgb2JqID0ge307XG4gICAgdmFyIGNsZWFuU3RyID0gb3B0aW9ucy5pZ25vcmVRdWVyeVByZWZpeCA/IHN0ci5yZXBsYWNlKC9eXFw/LywgJycpIDogc3RyO1xuICAgIHZhciBsaW1pdCA9IG9wdGlvbnMucGFyYW1ldGVyTGltaXQgPT09IEluZmluaXR5ID8gdW5kZWZpbmVkIDogb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdDtcbiAgICB2YXIgcGFydHMgPSBjbGVhblN0ci5zcGxpdChvcHRpb25zLmRlbGltaXRlciwgbGltaXQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgcGFydCA9IHBhcnRzW2ldO1xuXG4gICAgICAgIHZhciBicmFja2V0RXF1YWxzUG9zID0gcGFydC5pbmRleE9mKCddPScpO1xuICAgICAgICB2YXIgcG9zID0gYnJhY2tldEVxdWFsc1BvcyA9PT0gLTEgPyBwYXJ0LmluZGV4T2YoJz0nKSA6IGJyYWNrZXRFcXVhbHNQb3MgKyAxO1xuXG4gICAgICAgIHZhciBrZXksIHZhbDtcbiAgICAgICAgaWYgKHBvcyA9PT0gLTEpIHtcbiAgICAgICAgICAgIGtleSA9IG9wdGlvbnMuZGVjb2RlcihwYXJ0LCBkZWZhdWx0cy5kZWNvZGVyKTtcbiAgICAgICAgICAgIHZhbCA9IG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nID8gbnVsbCA6ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAga2V5ID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQuc2xpY2UoMCwgcG9zKSwgZGVmYXVsdHMuZGVjb2Rlcik7XG4gICAgICAgICAgICB2YWwgPSBvcHRpb25zLmRlY29kZXIocGFydC5zbGljZShwb3MgKyAxKSwgZGVmYXVsdHMuZGVjb2Rlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhcy5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgb2JqW2tleV0gPSBbXS5jb25jYXQob2JqW2tleV0pLmNvbmNhdCh2YWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqW2tleV0gPSB2YWw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2JqO1xufTtcblxudmFyIHBhcnNlT2JqZWN0ID0gZnVuY3Rpb24gKGNoYWluLCB2YWwsIG9wdGlvbnMpIHtcbiAgICB2YXIgbGVhZiA9IHZhbDtcblxuICAgIGZvciAodmFyIGkgPSBjaGFpbi5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgb2JqO1xuICAgICAgICB2YXIgcm9vdCA9IGNoYWluW2ldO1xuXG4gICAgICAgIGlmIChyb290ID09PSAnW10nKSB7XG4gICAgICAgICAgICBvYmogPSBbXTtcbiAgICAgICAgICAgIG9iaiA9IG9iai5jb25jYXQobGVhZik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmogPSBvcHRpb25zLnBsYWluT2JqZWN0cyA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcbiAgICAgICAgICAgIHZhciBjbGVhblJvb3QgPSByb290LmNoYXJBdCgwKSA9PT0gJ1snICYmIHJvb3QuY2hhckF0KHJvb3QubGVuZ3RoIC0gMSkgPT09ICddJyA/IHJvb3Quc2xpY2UoMSwgLTEpIDogcm9vdDtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IHBhcnNlSW50KGNsZWFuUm9vdCwgMTApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICFpc05hTihpbmRleClcbiAgICAgICAgICAgICAgICAmJiByb290ICE9PSBjbGVhblJvb3RcbiAgICAgICAgICAgICAgICAmJiBTdHJpbmcoaW5kZXgpID09PSBjbGVhblJvb3RcbiAgICAgICAgICAgICAgICAmJiBpbmRleCA+PSAwXG4gICAgICAgICAgICAgICAgJiYgKG9wdGlvbnMucGFyc2VBcnJheXMgJiYgaW5kZXggPD0gb3B0aW9ucy5hcnJheUxpbWl0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgb2JqID0gW107XG4gICAgICAgICAgICAgICAgb2JqW2luZGV4XSA9IGxlYWY7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9ialtjbGVhblJvb3RdID0gbGVhZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxlYWYgPSBvYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxlYWY7XG59O1xuXG52YXIgcGFyc2VLZXlzID0gZnVuY3Rpb24gcGFyc2VRdWVyeVN0cmluZ0tleXMoZ2l2ZW5LZXksIHZhbCwgb3B0aW9ucykge1xuICAgIGlmICghZ2l2ZW5LZXkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybSBkb3Qgbm90YXRpb24gdG8gYnJhY2tldCBub3RhdGlvblxuICAgIHZhciBrZXkgPSBvcHRpb25zLmFsbG93RG90cyA/IGdpdmVuS2V5LnJlcGxhY2UoL1xcLihbXi5bXSspL2csICdbJDFdJykgOiBnaXZlbktleTtcblxuICAgIC8vIFRoZSByZWdleCBjaHVua3NcblxuICAgIHZhciBicmFja2V0cyA9IC8oXFxbW15bXFxdXSpdKS87XG4gICAgdmFyIGNoaWxkID0gLyhcXFtbXltcXF1dKl0pL2c7XG5cbiAgICAvLyBHZXQgdGhlIHBhcmVudFxuXG4gICAgdmFyIHNlZ21lbnQgPSBicmFja2V0cy5leGVjKGtleSk7XG4gICAgdmFyIHBhcmVudCA9IHNlZ21lbnQgPyBrZXkuc2xpY2UoMCwgc2VnbWVudC5pbmRleCkgOiBrZXk7XG5cbiAgICAvLyBTdGFzaCB0aGUgcGFyZW50IGlmIGl0IGV4aXN0c1xuXG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIC8vIElmIHdlIGFyZW4ndCB1c2luZyBwbGFpbiBvYmplY3RzLCBvcHRpb25hbGx5IHByZWZpeCBrZXlzXG4gICAgICAgIC8vIHRoYXQgd291bGQgb3ZlcndyaXRlIG9iamVjdCBwcm90b3R5cGUgcHJvcGVydGllc1xuICAgICAgICBpZiAoIW9wdGlvbnMucGxhaW5PYmplY3RzICYmIGhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIHBhcmVudCkpIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBrZXlzLnB1c2gocGFyZW50KTtcbiAgICB9XG5cbiAgICAvLyBMb29wIHRocm91Z2ggY2hpbGRyZW4gYXBwZW5kaW5nIHRvIHRoZSBhcnJheSB1bnRpbCB3ZSBoaXQgZGVwdGhcblxuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAoKHNlZ21lbnQgPSBjaGlsZC5leGVjKGtleSkpICE9PSBudWxsICYmIGkgPCBvcHRpb25zLmRlcHRoKSB7XG4gICAgICAgIGkgKz0gMTtcbiAgICAgICAgaWYgKCFvcHRpb25zLnBsYWluT2JqZWN0cyAmJiBoYXMuY2FsbChPYmplY3QucHJvdG90eXBlLCBzZWdtZW50WzFdLnNsaWNlKDEsIC0xKSkpIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAga2V5cy5wdXNoKHNlZ21lbnRbMV0pO1xuICAgIH1cblxuICAgIC8vIElmIHRoZXJlJ3MgYSByZW1haW5kZXIsIGp1c3QgYWRkIHdoYXRldmVyIGlzIGxlZnRcblxuICAgIGlmIChzZWdtZW50KSB7XG4gICAgICAgIGtleXMucHVzaCgnWycgKyBrZXkuc2xpY2Uoc2VnbWVudC5pbmRleCkgKyAnXScpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZU9iamVjdChrZXlzLCB2YWwsIG9wdGlvbnMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc3RyLCBvcHRzKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBvcHRzID8gdXRpbHMuYXNzaWduKHt9LCBvcHRzKSA6IHt9O1xuXG4gICAgaWYgKG9wdGlvbnMuZGVjb2RlciAhPT0gbnVsbCAmJiBvcHRpb25zLmRlY29kZXIgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb3B0aW9ucy5kZWNvZGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0RlY29kZXIgaGFzIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgb3B0aW9ucy5pZ25vcmVRdWVyeVByZWZpeCA9IG9wdGlvbnMuaWdub3JlUXVlcnlQcmVmaXggPT09IHRydWU7XG4gICAgb3B0aW9ucy5kZWxpbWl0ZXIgPSB0eXBlb2Ygb3B0aW9ucy5kZWxpbWl0ZXIgPT09ICdzdHJpbmcnIHx8IHV0aWxzLmlzUmVnRXhwKG9wdGlvbnMuZGVsaW1pdGVyKSA/IG9wdGlvbnMuZGVsaW1pdGVyIDogZGVmYXVsdHMuZGVsaW1pdGVyO1xuICAgIG9wdGlvbnMuZGVwdGggPSB0eXBlb2Ygb3B0aW9ucy5kZXB0aCA9PT0gJ251bWJlcicgPyBvcHRpb25zLmRlcHRoIDogZGVmYXVsdHMuZGVwdGg7XG4gICAgb3B0aW9ucy5hcnJheUxpbWl0ID0gdHlwZW9mIG9wdGlvbnMuYXJyYXlMaW1pdCA9PT0gJ251bWJlcicgPyBvcHRpb25zLmFycmF5TGltaXQgOiBkZWZhdWx0cy5hcnJheUxpbWl0O1xuICAgIG9wdGlvbnMucGFyc2VBcnJheXMgPSBvcHRpb25zLnBhcnNlQXJyYXlzICE9PSBmYWxzZTtcbiAgICBvcHRpb25zLmRlY29kZXIgPSB0eXBlb2Ygb3B0aW9ucy5kZWNvZGVyID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucy5kZWNvZGVyIDogZGVmYXVsdHMuZGVjb2RlcjtcbiAgICBvcHRpb25zLmFsbG93RG90cyA9IHR5cGVvZiBvcHRpb25zLmFsbG93RG90cyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5hbGxvd0RvdHMgOiBkZWZhdWx0cy5hbGxvd0RvdHM7XG4gICAgb3B0aW9ucy5wbGFpbk9iamVjdHMgPSB0eXBlb2Ygb3B0aW9ucy5wbGFpbk9iamVjdHMgPT09ICdib29sZWFuJyA/IG9wdGlvbnMucGxhaW5PYmplY3RzIDogZGVmYXVsdHMucGxhaW5PYmplY3RzO1xuICAgIG9wdGlvbnMuYWxsb3dQcm90b3R5cGVzID0gdHlwZW9mIG9wdGlvbnMuYWxsb3dQcm90b3R5cGVzID09PSAnYm9vbGVhbicgPyBvcHRpb25zLmFsbG93UHJvdG90eXBlcyA6IGRlZmF1bHRzLmFsbG93UHJvdG90eXBlcztcbiAgICBvcHRpb25zLnBhcmFtZXRlckxpbWl0ID0gdHlwZW9mIG9wdGlvbnMucGFyYW1ldGVyTGltaXQgPT09ICdudW1iZXInID8gb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdCA6IGRlZmF1bHRzLnBhcmFtZXRlckxpbWl0O1xuICAgIG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nID0gdHlwZW9mIG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nID09PSAnYm9vbGVhbicgPyBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA6IGRlZmF1bHRzLnN0cmljdE51bGxIYW5kbGluZztcblxuICAgIGlmIChzdHIgPT09ICcnIHx8IHN0ciA9PT0gbnVsbCB8fCB0eXBlb2Ygc3RyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5wbGFpbk9iamVjdHMgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XG4gICAgfVxuXG4gICAgdmFyIHRlbXBPYmogPSB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJyA/IHBhcnNlVmFsdWVzKHN0ciwgb3B0aW9ucykgOiBzdHI7XG4gICAgdmFyIG9iaiA9IG9wdGlvbnMucGxhaW5PYmplY3RzID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHt9O1xuXG4gICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBrZXlzIGFuZCBzZXR1cCB0aGUgbmV3IG9iamVjdFxuXG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh0ZW1wT2JqKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgICAgIHZhciBuZXdPYmogPSBwYXJzZUtleXMoa2V5LCB0ZW1wT2JqW2tleV0sIG9wdGlvbnMpO1xuICAgICAgICBvYmogPSB1dGlscy5tZXJnZShvYmosIG5ld09iaiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHV0aWxzLmNvbXBhY3Qob2JqKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvcXMvbGliL3BhcnNlLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBtZXJnZS1kZXNjcmlwdG9yc1xuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBtZXJnZVxuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHlcblxuLyoqXG4gKiBNZXJnZSB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgb2YgYHNyY2AgaW50byBgZGVzdGBcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGVzdCBPYmplY3QgdG8gYWRkIGRlc2NyaXB0b3JzIHRvXG4gKiBAcGFyYW0ge29iamVjdH0gc3JjIE9iamVjdCB0byBjbG9uZSBkZXNjcmlwdG9ycyBmcm9tXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtyZWRlZmluZT10cnVlXSBSZWRlZmluZSBgZGVzdGAgcHJvcGVydGllcyB3aXRoIGBzcmNgIHByb3BlcnRpZXNcbiAqIEByZXR1cm5zIHtvYmplY3R9IFJlZmVyZW5jZSB0byBkZXN0XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gbWVyZ2UoZGVzdCwgc3JjLCByZWRlZmluZSkge1xuICBpZiAoIWRlc3QpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBkZXN0IGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICghc3JjKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgc3JjIGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIGlmIChyZWRlZmluZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gRGVmYXVsdCB0byB0cnVlXG4gICAgcmVkZWZpbmUgPSB0cnVlXG4gIH1cblxuICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhzcmMpLmZvckVhY2goZnVuY3Rpb24gZm9yRWFjaE93blByb3BlcnR5TmFtZShuYW1lKSB7XG4gICAgaWYgKCFyZWRlZmluZSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRlc3QsIG5hbWUpKSB7XG4gICAgICAvLyBTa2lwIGRlc3JpcHRvclxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ29weSBkZXNjcmlwdG9yXG4gICAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNyYywgbmFtZSlcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGVzdCwgbmFtZSwgZGVzY3JpcHRvcilcbiAgfSlcblxuICByZXR1cm4gZGVzdFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL21lcmdlLWRlc2NyaXB0b3JzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxMyBSb21hbiBTaHR5bG1hblxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBmaW5hbGhhbmRsZXIgPSByZXF1aXJlKCdmaW5hbGhhbmRsZXInKTtcbnZhciBSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcicpO1xudmFyIG1ldGhvZHMgPSByZXF1aXJlKCdtZXRob2RzJyk7XG52YXIgbWlkZGxld2FyZSA9IHJlcXVpcmUoJy4vbWlkZGxld2FyZS9pbml0Jyk7XG52YXIgcXVlcnkgPSByZXF1aXJlKCcuL21pZGRsZXdhcmUvcXVlcnknKTtcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2V4cHJlc3M6YXBwbGljYXRpb24nKTtcbnZhciBWaWV3ID0gcmVxdWlyZSgnLi92aWV3Jyk7XG52YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcbnZhciBjb21waWxlRVRhZyA9IHJlcXVpcmUoJy4vdXRpbHMnKS5jb21waWxlRVRhZztcbnZhciBjb21waWxlUXVlcnlQYXJzZXIgPSByZXF1aXJlKCcuL3V0aWxzJykuY29tcGlsZVF1ZXJ5UGFyc2VyO1xudmFyIGNvbXBpbGVUcnVzdCA9IHJlcXVpcmUoJy4vdXRpbHMnKS5jb21waWxlVHJ1c3Q7XG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdleHByZXNzJyk7XG52YXIgZmxhdHRlbiA9IHJlcXVpcmUoJ2FycmF5LWZsYXR0ZW4nKTtcbnZhciBtZXJnZSA9IHJlcXVpcmUoJ3V0aWxzLW1lcmdlJyk7XG52YXIgcmVzb2x2ZSA9IHJlcXVpcmUoJ3BhdGgnKS5yZXNvbHZlO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnc2V0cHJvdG90eXBlb2YnKVxudmFyIHNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xuXG4vKipcbiAqIEFwcGxpY2F0aW9uIHByb3RvdHlwZS5cbiAqL1xuXG52YXIgYXBwID0gZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8qKlxuICogVmFyaWFibGUgZm9yIHRydXN0IHByb3h5IGluaGVyaXRhbmNlIGJhY2stY29tcGF0XG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciB0cnVzdFByb3h5RGVmYXVsdFN5bWJvbCA9ICdAQHN5bWJvbDp0cnVzdF9wcm94eV9kZWZhdWx0JztcblxuLyoqXG4gKiBJbml0aWFsaXplIHRoZSBzZXJ2ZXIuXG4gKlxuICogICAtIHNldHVwIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICogICAtIHNldHVwIGRlZmF1bHQgbWlkZGxld2FyZVxuICogICAtIHNldHVwIHJvdXRlIHJlZmxlY3Rpb24gbWV0aG9kc1xuICpcbiAqIEBwcml2YXRlXG4gKi9cblxuYXBwLmluaXQgPSBmdW5jdGlvbiBpbml0KCkge1xuICB0aGlzLmNhY2hlID0ge307XG4gIHRoaXMuZW5naW5lcyA9IHt9O1xuICB0aGlzLnNldHRpbmdzID0ge307XG5cbiAgdGhpcy5kZWZhdWx0Q29uZmlndXJhdGlvbigpO1xufTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKiBAcHJpdmF0ZVxuICovXG5cbmFwcC5kZWZhdWx0Q29uZmlndXJhdGlvbiA9IGZ1bmN0aW9uIGRlZmF1bHRDb25maWd1cmF0aW9uKCkge1xuICB2YXIgZW52ID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ2RldmVsb3BtZW50JztcblxuICAvLyBkZWZhdWx0IHNldHRpbmdzXG4gIHRoaXMuZW5hYmxlKCd4LXBvd2VyZWQtYnknKTtcbiAgdGhpcy5zZXQoJ2V0YWcnLCAnd2VhaycpO1xuICB0aGlzLnNldCgnZW52JywgZW52KTtcbiAgdGhpcy5zZXQoJ3F1ZXJ5IHBhcnNlcicsICdleHRlbmRlZCcpO1xuICB0aGlzLnNldCgnc3ViZG9tYWluIG9mZnNldCcsIDIpO1xuICB0aGlzLnNldCgndHJ1c3QgcHJveHknLCBmYWxzZSk7XG5cbiAgLy8gdHJ1c3QgcHJveHkgaW5oZXJpdCBiYWNrLWNvbXBhdFxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5zZXR0aW5ncywgdHJ1c3RQcm94eURlZmF1bHRTeW1ib2wsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6IHRydWVcbiAgfSk7XG5cbiAgZGVidWcoJ2Jvb3RpbmcgaW4gJXMgbW9kZScsIGVudik7XG5cbiAgdGhpcy5vbignbW91bnQnLCBmdW5jdGlvbiBvbm1vdW50KHBhcmVudCkge1xuICAgIC8vIGluaGVyaXQgdHJ1c3QgcHJveHlcbiAgICBpZiAodGhpcy5zZXR0aW5nc1t0cnVzdFByb3h5RGVmYXVsdFN5bWJvbF0gPT09IHRydWVcbiAgICAgICYmIHR5cGVvZiBwYXJlbnQuc2V0dGluZ3NbJ3RydXN0IHByb3h5IGZuJ10gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnNldHRpbmdzWyd0cnVzdCBwcm94eSddO1xuICAgICAgZGVsZXRlIHRoaXMuc2V0dGluZ3NbJ3RydXN0IHByb3h5IGZuJ107XG4gICAgfVxuXG4gICAgLy8gaW5oZXJpdCBwcm90b3NcbiAgICBzZXRQcm90b3R5cGVPZih0aGlzLnJlcXVlc3QsIHBhcmVudC5yZXF1ZXN0KVxuICAgIHNldFByb3RvdHlwZU9mKHRoaXMucmVzcG9uc2UsIHBhcmVudC5yZXNwb25zZSlcbiAgICBzZXRQcm90b3R5cGVPZih0aGlzLmVuZ2luZXMsIHBhcmVudC5lbmdpbmVzKVxuICAgIHNldFByb3RvdHlwZU9mKHRoaXMuc2V0dGluZ3MsIHBhcmVudC5zZXR0aW5ncylcbiAgfSk7XG5cbiAgLy8gc2V0dXAgbG9jYWxzXG4gIHRoaXMubG9jYWxzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAvLyB0b3AtbW9zdCBhcHAgaXMgbW91bnRlZCBhdCAvXG4gIHRoaXMubW91bnRwYXRoID0gJy8nO1xuXG4gIC8vIGRlZmF1bHQgbG9jYWxzXG4gIHRoaXMubG9jYWxzLnNldHRpbmdzID0gdGhpcy5zZXR0aW5ncztcblxuICAvLyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgdGhpcy5zZXQoJ3ZpZXcnLCBWaWV3KTtcbiAgdGhpcy5zZXQoJ3ZpZXdzJywgcmVzb2x2ZSgndmlld3MnKSk7XG4gIHRoaXMuc2V0KCdqc29ucCBjYWxsYmFjayBuYW1lJywgJ2NhbGxiYWNrJyk7XG5cbiAgaWYgKGVudiA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdGhpcy5lbmFibGUoJ3ZpZXcgY2FjaGUnKTtcbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAncm91dGVyJywge1xuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1xcJ2FwcC5yb3V0ZXJcXCcgaXMgZGVwcmVjYXRlZCFcXG5QbGVhc2Ugc2VlIHRoZSAzLnggdG8gNC54IG1pZ3JhdGlvbiBndWlkZSBmb3IgZGV0YWlscyBvbiBob3cgdG8gdXBkYXRlIHlvdXIgYXBwLicpO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vKipcbiAqIGxhemlseSBhZGRzIHRoZSBiYXNlIHJvdXRlciBpZiBpdCBoYXMgbm90IHlldCBiZWVuIGFkZGVkLlxuICpcbiAqIFdlIGNhbm5vdCBhZGQgdGhlIGJhc2Ugcm91dGVyIGluIHRoZSBkZWZhdWx0Q29uZmlndXJhdGlvbiBiZWNhdXNlXG4gKiBpdCByZWFkcyBhcHAgc2V0dGluZ3Mgd2hpY2ggbWlnaHQgYmUgc2V0IGFmdGVyIHRoYXQgaGFzIHJ1bi5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5hcHAubGF6eXJvdXRlciA9IGZ1bmN0aW9uIGxhenlyb3V0ZXIoKSB7XG4gIGlmICghdGhpcy5fcm91dGVyKSB7XG4gICAgdGhpcy5fcm91dGVyID0gbmV3IFJvdXRlcih7XG4gICAgICBjYXNlU2Vuc2l0aXZlOiB0aGlzLmVuYWJsZWQoJ2Nhc2Ugc2Vuc2l0aXZlIHJvdXRpbmcnKSxcbiAgICAgIHN0cmljdDogdGhpcy5lbmFibGVkKCdzdHJpY3Qgcm91dGluZycpXG4gICAgfSk7XG5cbiAgICB0aGlzLl9yb3V0ZXIudXNlKHF1ZXJ5KHRoaXMuZ2V0KCdxdWVyeSBwYXJzZXIgZm4nKSkpO1xuICAgIHRoaXMuX3JvdXRlci51c2UobWlkZGxld2FyZS5pbml0KHRoaXMpKTtcbiAgfVxufTtcblxuLyoqXG4gKiBEaXNwYXRjaCBhIHJlcSwgcmVzIHBhaXIgaW50byB0aGUgYXBwbGljYXRpb24uIFN0YXJ0cyBwaXBlbGluZSBwcm9jZXNzaW5nLlxuICpcbiAqIElmIG5vIGNhbGxiYWNrIGlzIHByb3ZpZGVkLCB0aGVuIGRlZmF1bHQgZXJyb3IgaGFuZGxlcnMgd2lsbCByZXNwb25kXG4gKiBpbiB0aGUgZXZlbnQgb2YgYW4gZXJyb3IgYnViYmxpbmcgdGhyb3VnaCB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqL1xuXG5hcHAuaGFuZGxlID0gZnVuY3Rpb24gaGFuZGxlKHJlcSwgcmVzLCBjYWxsYmFjaykge1xuICB2YXIgcm91dGVyID0gdGhpcy5fcm91dGVyO1xuXG4gIC8vIGZpbmFsIGhhbmRsZXJcbiAgdmFyIGRvbmUgPSBjYWxsYmFjayB8fCBmaW5hbGhhbmRsZXIocmVxLCByZXMsIHtcbiAgICBlbnY6IHRoaXMuZ2V0KCdlbnYnKSxcbiAgICBvbmVycm9yOiBsb2dlcnJvci5iaW5kKHRoaXMpXG4gIH0pO1xuXG4gIC8vIG5vIHJvdXRlc1xuICBpZiAoIXJvdXRlcikge1xuICAgIGRlYnVnKCdubyByb3V0ZXMgZGVmaW5lZCBvbiBhcHAnKTtcbiAgICBkb25lKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcm91dGVyLmhhbmRsZShyZXEsIHJlcywgZG9uZSk7XG59O1xuXG4vKipcbiAqIFByb3h5IGBSb3V0ZXIjdXNlKClgIHRvIGFkZCBtaWRkbGV3YXJlIHRvIHRoZSBhcHAgcm91dGVyLlxuICogU2VlIFJvdXRlciN1c2UoKSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLlxuICpcbiAqIElmIHRoZSBfZm5fIHBhcmFtZXRlciBpcyBhbiBleHByZXNzIGFwcCwgdGhlbiBpdCB3aWxsIGJlXG4gKiBtb3VudGVkIGF0IHRoZSBfcm91dGVfIHNwZWNpZmllZC5cbiAqXG4gKiBAcHVibGljXG4gKi9cblxuYXBwLnVzZSA9IGZ1bmN0aW9uIHVzZShmbikge1xuICB2YXIgb2Zmc2V0ID0gMDtcbiAgdmFyIHBhdGggPSAnLyc7XG5cbiAgLy8gZGVmYXVsdCBwYXRoIHRvICcvJ1xuICAvLyBkaXNhbWJpZ3VhdGUgYXBwLnVzZShbZm5dKVxuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIGFyZyA9IGZuO1xuXG4gICAgd2hpbGUgKEFycmF5LmlzQXJyYXkoYXJnKSAmJiBhcmcubGVuZ3RoICE9PSAwKSB7XG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgfVxuXG4gICAgLy8gZmlyc3QgYXJnIGlzIHRoZSBwYXRoXG4gICAgaWYgKHR5cGVvZiBhcmcgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9mZnNldCA9IDE7XG4gICAgICBwYXRoID0gZm47XG4gICAgfVxuICB9XG5cbiAgdmFyIGZucyA9IGZsYXR0ZW4oc2xpY2UuY2FsbChhcmd1bWVudHMsIG9mZnNldCkpO1xuXG4gIGlmIChmbnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXBwLnVzZSgpIHJlcXVpcmVzIGEgbWlkZGxld2FyZSBmdW5jdGlvbicpXG4gIH1cblxuICAvLyBzZXR1cCByb3V0ZXJcbiAgdGhpcy5sYXp5cm91dGVyKCk7XG4gIHZhciByb3V0ZXIgPSB0aGlzLl9yb3V0ZXI7XG5cbiAgZm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgLy8gbm9uLWV4cHJlc3MgYXBwXG4gICAgaWYgKCFmbiB8fCAhZm4uaGFuZGxlIHx8ICFmbi5zZXQpIHtcbiAgICAgIHJldHVybiByb3V0ZXIudXNlKHBhdGgsIGZuKTtcbiAgICB9XG5cbiAgICBkZWJ1ZygnLnVzZSBhcHAgdW5kZXIgJXMnLCBwYXRoKTtcbiAgICBmbi5tb3VudHBhdGggPSBwYXRoO1xuICAgIGZuLnBhcmVudCA9IHRoaXM7XG5cbiAgICAvLyByZXN0b3JlIC5hcHAgcHJvcGVydHkgb24gcmVxIGFuZCByZXNcbiAgICByb3V0ZXIudXNlKHBhdGgsIGZ1bmN0aW9uIG1vdW50ZWRfYXBwKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgICB2YXIgb3JpZyA9IHJlcS5hcHA7XG4gICAgICBmbi5oYW5kbGUocmVxLCByZXMsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgc2V0UHJvdG90eXBlT2YocmVxLCBvcmlnLnJlcXVlc3QpXG4gICAgICAgIHNldFByb3RvdHlwZU9mKHJlcywgb3JpZy5yZXNwb25zZSlcbiAgICAgICAgbmV4dChlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBtb3VudGVkIGFuIGFwcFxuICAgIGZuLmVtaXQoJ21vdW50JywgdGhpcyk7XG4gIH0sIHRoaXMpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBQcm94eSB0byB0aGUgYXBwIGBSb3V0ZXIjcm91dGUoKWBcbiAqIFJldHVybnMgYSBuZXcgYFJvdXRlYCBpbnN0YW5jZSBmb3IgdGhlIF9wYXRoXy5cbiAqXG4gKiBSb3V0ZXMgYXJlIGlzb2xhdGVkIG1pZGRsZXdhcmUgc3RhY2tzIGZvciBzcGVjaWZpYyBwYXRocy5cbiAqIFNlZSB0aGUgUm91dGUgYXBpIGRvY3MgZm9yIGRldGFpbHMuXG4gKlxuICogQHB1YmxpY1xuICovXG5cbmFwcC5yb3V0ZSA9IGZ1bmN0aW9uIHJvdXRlKHBhdGgpIHtcbiAgdGhpcy5sYXp5cm91dGVyKCk7XG4gIHJldHVybiB0aGlzLl9yb3V0ZXIucm91dGUocGF0aCk7XG59O1xuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSBnaXZlbiB0ZW1wbGF0ZSBlbmdpbmUgY2FsbGJhY2sgYGZuYFxuICogYXMgYGV4dGAuXG4gKlxuICogQnkgZGVmYXVsdCB3aWxsIGByZXF1aXJlKClgIHRoZSBlbmdpbmUgYmFzZWQgb24gdGhlXG4gKiBmaWxlIGV4dGVuc2lvbi4gRm9yIGV4YW1wbGUgaWYgeW91IHRyeSB0byByZW5kZXJcbiAqIGEgXCJmb28uZWpzXCIgZmlsZSBFeHByZXNzIHdpbGwgaW52b2tlIHRoZSBmb2xsb3dpbmcgaW50ZXJuYWxseTpcbiAqXG4gKiAgICAgYXBwLmVuZ2luZSgnZWpzJywgcmVxdWlyZSgnZWpzJykuX19leHByZXNzKTtcbiAqXG4gKiBGb3IgZW5naW5lcyB0aGF0IGRvIG5vdCBwcm92aWRlIGAuX19leHByZXNzYCBvdXQgb2YgdGhlIGJveCxcbiAqIG9yIGlmIHlvdSB3aXNoIHRvIFwibWFwXCIgYSBkaWZmZXJlbnQgZXh0ZW5zaW9uIHRvIHRoZSB0ZW1wbGF0ZSBlbmdpbmVcbiAqIHlvdSBtYXkgdXNlIHRoaXMgbWV0aG9kLiBGb3IgZXhhbXBsZSBtYXBwaW5nIHRoZSBFSlMgdGVtcGxhdGUgZW5naW5lIHRvXG4gKiBcIi5odG1sXCIgZmlsZXM6XG4gKlxuICogICAgIGFwcC5lbmdpbmUoJ2h0bWwnLCByZXF1aXJlKCdlanMnKS5yZW5kZXJGaWxlKTtcbiAqXG4gKiBJbiB0aGlzIGNhc2UgRUpTIHByb3ZpZGVzIGEgYC5yZW5kZXJGaWxlKClgIG1ldGhvZCB3aXRoXG4gKiB0aGUgc2FtZSBzaWduYXR1cmUgdGhhdCBFeHByZXNzIGV4cGVjdHM6IGAocGF0aCwgb3B0aW9ucywgY2FsbGJhY2spYCxcbiAqIHRob3VnaCBub3RlIHRoYXQgaXQgYWxpYXNlcyB0aGlzIG1ldGhvZCBhcyBgZWpzLl9fZXhwcmVzc2AgaW50ZXJuYWxseVxuICogc28gaWYgeW91J3JlIHVzaW5nIFwiLmVqc1wiIGV4dGVuc2lvbnMgeW91IGRvbnQgbmVlZCB0byBkbyBhbnl0aGluZy5cbiAqXG4gKiBTb21lIHRlbXBsYXRlIGVuZ2luZXMgZG8gbm90IGZvbGxvdyB0aGlzIGNvbnZlbnRpb24sIHRoZVxuICogW0NvbnNvbGlkYXRlLmpzXShodHRwczovL2dpdGh1Yi5jb20vdGovY29uc29saWRhdGUuanMpXG4gKiBsaWJyYXJ5IHdhcyBjcmVhdGVkIHRvIG1hcCBhbGwgb2Ygbm9kZSdzIHBvcHVsYXIgdGVtcGxhdGVcbiAqIGVuZ2luZXMgdG8gZm9sbG93IHRoaXMgY29udmVudGlvbiwgdGh1cyBhbGxvd2luZyB0aGVtIHRvXG4gKiB3b3JrIHNlYW1sZXNzbHkgd2l0aGluIEV4cHJlc3MuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGV4dFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqIEByZXR1cm4ge2FwcH0gZm9yIGNoYWluaW5nXG4gKiBAcHVibGljXG4gKi9cblxuYXBwLmVuZ2luZSA9IGZ1bmN0aW9uIGVuZ2luZShleHQsIGZuKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhbGxiYWNrIGZ1bmN0aW9uIHJlcXVpcmVkJyk7XG4gIH1cblxuICAvLyBnZXQgZmlsZSBleHRlbnNpb25cbiAgdmFyIGV4dGVuc2lvbiA9IGV4dFswXSAhPT0gJy4nXG4gICAgPyAnLicgKyBleHRcbiAgICA6IGV4dDtcblxuICAvLyBzdG9yZSBlbmdpbmVcbiAgdGhpcy5lbmdpbmVzW2V4dGVuc2lvbl0gPSBmbjtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUHJveHkgdG8gYFJvdXRlciNwYXJhbSgpYCB3aXRoIG9uZSBhZGRlZCBhcGkgZmVhdHVyZS4gVGhlIF9uYW1lXyBwYXJhbWV0ZXJcbiAqIGNhbiBiZSBhbiBhcnJheSBvZiBuYW1lcy5cbiAqXG4gKiBTZWUgdGhlIFJvdXRlciNwYXJhbSgpIGRvY3MgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gbmFtZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqIEByZXR1cm4ge2FwcH0gZm9yIGNoYWluaW5nXG4gKiBAcHVibGljXG4gKi9cblxuYXBwLnBhcmFtID0gZnVuY3Rpb24gcGFyYW0obmFtZSwgZm4pIHtcbiAgdGhpcy5sYXp5cm91dGVyKCk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkobmFtZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMucGFyYW0obmFtZVtpXSwgZm4pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fcm91dGVyLnBhcmFtKG5hbWUsIGZuKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQXNzaWduIGBzZXR0aW5nYCB0byBgdmFsYCwgb3IgcmV0dXJuIGBzZXR0aW5nYCdzIHZhbHVlLlxuICpcbiAqICAgIGFwcC5zZXQoJ2ZvbycsICdiYXInKTtcbiAqICAgIGFwcC5zZXQoJ2ZvbycpO1xuICogICAgLy8gPT4gXCJiYXJcIlxuICpcbiAqIE1vdW50ZWQgc2VydmVycyBpbmhlcml0IHRoZWlyIHBhcmVudCBzZXJ2ZXIncyBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc2V0dGluZ1xuICogQHBhcmFtIHsqfSBbdmFsXVxuICogQHJldHVybiB7U2VydmVyfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5hcHAuc2V0ID0gZnVuY3Rpb24gc2V0KHNldHRpbmcsIHZhbCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIGFwcC5nZXQoc2V0dGluZylcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nc1tzZXR0aW5nXTtcbiAgfVxuXG4gIGRlYnVnKCdzZXQgXCIlc1wiIHRvICVvJywgc2V0dGluZywgdmFsKTtcblxuICAvLyBzZXQgdmFsdWVcbiAgdGhpcy5zZXR0aW5nc1tzZXR0aW5nXSA9IHZhbDtcblxuICAvLyB0cmlnZ2VyIG1hdGNoZWQgc2V0dGluZ3NcbiAgc3dpdGNoIChzZXR0aW5nKSB7XG4gICAgY2FzZSAnZXRhZyc6XG4gICAgICB0aGlzLnNldCgnZXRhZyBmbicsIGNvbXBpbGVFVGFnKHZhbCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncXVlcnkgcGFyc2VyJzpcbiAgICAgIHRoaXMuc2V0KCdxdWVyeSBwYXJzZXIgZm4nLCBjb21waWxlUXVlcnlQYXJzZXIodmFsKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd0cnVzdCBwcm94eSc6XG4gICAgICB0aGlzLnNldCgndHJ1c3QgcHJveHkgZm4nLCBjb21waWxlVHJ1c3QodmFsKSk7XG5cbiAgICAgIC8vIHRydXN0IHByb3h5IGluaGVyaXQgYmFjay1jb21wYXRcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLnNldHRpbmdzLCB0cnVzdFByb3h5RGVmYXVsdFN5bWJvbCwge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBmYWxzZVxuICAgICAgfSk7XG5cbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJldHVybiB0aGUgYXBwJ3MgYWJzb2x1dGUgcGF0aG5hbWVcbiAqIGJhc2VkIG9uIHRoZSBwYXJlbnQocykgdGhhdCBoYXZlXG4gKiBtb3VudGVkIGl0LlxuICpcbiAqIEZvciBleGFtcGxlIGlmIHRoZSBhcHBsaWNhdGlvbiB3YXNcbiAqIG1vdW50ZWQgYXMgXCIvYWRtaW5cIiwgd2hpY2ggaXRzZWxmXG4gKiB3YXMgbW91bnRlZCBhcyBcIi9ibG9nXCIgdGhlbiB0aGVcbiAqIHJldHVybiB2YWx1ZSB3b3VsZCBiZSBcIi9ibG9nL2FkbWluXCIuXG4gKlxuICogQHJldHVybiB7U3RyaW5nfVxuICogQHByaXZhdGVcbiAqL1xuXG5hcHAucGF0aCA9IGZ1bmN0aW9uIHBhdGgoKSB7XG4gIHJldHVybiB0aGlzLnBhcmVudFxuICAgID8gdGhpcy5wYXJlbnQucGF0aCgpICsgdGhpcy5tb3VudHBhdGhcbiAgICA6ICcnO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBgc2V0dGluZ2AgaXMgZW5hYmxlZCAodHJ1dGh5KS5cbiAqXG4gKiAgICBhcHAuZW5hYmxlZCgnZm9vJylcbiAqICAgIC8vID0+IGZhbHNlXG4gKlxuICogICAgYXBwLmVuYWJsZSgnZm9vJylcbiAqICAgIGFwcC5lbmFibGVkKCdmb28nKVxuICogICAgLy8gPT4gdHJ1ZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZXR0aW5nXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmFwcC5lbmFibGVkID0gZnVuY3Rpb24gZW5hYmxlZChzZXR0aW5nKSB7XG4gIHJldHVybiBCb29sZWFuKHRoaXMuc2V0KHNldHRpbmcpKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYHNldHRpbmdgIGlzIGRpc2FibGVkLlxuICpcbiAqICAgIGFwcC5kaXNhYmxlZCgnZm9vJylcbiAqICAgIC8vID0+IHRydWVcbiAqXG4gKiAgICBhcHAuZW5hYmxlKCdmb28nKVxuICogICAgYXBwLmRpc2FibGVkKCdmb28nKVxuICogICAgLy8gPT4gZmFsc2VcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc2V0dGluZ1xuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5hcHAuZGlzYWJsZWQgPSBmdW5jdGlvbiBkaXNhYmxlZChzZXR0aW5nKSB7XG4gIHJldHVybiAhdGhpcy5zZXQoc2V0dGluZyk7XG59O1xuXG4vKipcbiAqIEVuYWJsZSBgc2V0dGluZ2AuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHNldHRpbmdcbiAqIEByZXR1cm4ge2FwcH0gZm9yIGNoYWluaW5nXG4gKiBAcHVibGljXG4gKi9cblxuYXBwLmVuYWJsZSA9IGZ1bmN0aW9uIGVuYWJsZShzZXR0aW5nKSB7XG4gIHJldHVybiB0aGlzLnNldChzZXR0aW5nLCB0cnVlKTtcbn07XG5cbi8qKlxuICogRGlzYWJsZSBgc2V0dGluZ2AuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHNldHRpbmdcbiAqIEByZXR1cm4ge2FwcH0gZm9yIGNoYWluaW5nXG4gKiBAcHVibGljXG4gKi9cblxuYXBwLmRpc2FibGUgPSBmdW5jdGlvbiBkaXNhYmxlKHNldHRpbmcpIHtcbiAgcmV0dXJuIHRoaXMuc2V0KHNldHRpbmcsIGZhbHNlKTtcbn07XG5cbi8qKlxuICogRGVsZWdhdGUgYC5WRVJCKC4uLilgIGNhbGxzIHRvIGByb3V0ZXIuVkVSQiguLi4pYC5cbiAqL1xuXG5tZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKXtcbiAgYXBwW21ldGhvZF0gPSBmdW5jdGlvbihwYXRoKXtcbiAgICBpZiAobWV0aG9kID09PSAnZ2V0JyAmJiBhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBhcHAuZ2V0KHNldHRpbmcpXG4gICAgICByZXR1cm4gdGhpcy5zZXQocGF0aCk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXp5cm91dGVyKCk7XG5cbiAgICB2YXIgcm91dGUgPSB0aGlzLl9yb3V0ZXIucm91dGUocGF0aCk7XG4gICAgcm91dGVbbWV0aG9kXS5hcHBseShyb3V0ZSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG4vKipcbiAqIFNwZWNpYWwtY2FzZWQgXCJhbGxcIiBtZXRob2QsIGFwcGx5aW5nIHRoZSBnaXZlbiByb3V0ZSBgcGF0aGAsXG4gKiBtaWRkbGV3YXJlLCBhbmQgY2FsbGJhY2sgdG8gX2V2ZXJ5XyBIVFRQIG1ldGhvZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHBhcmFtIHtGdW5jdGlvbn0gLi4uXG4gKiBAcmV0dXJuIHthcHB9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbmFwcC5hbGwgPSBmdW5jdGlvbiBhbGwocGF0aCkge1xuICB0aGlzLmxhenlyb3V0ZXIoKTtcblxuICB2YXIgcm91dGUgPSB0aGlzLl9yb3V0ZXIucm91dGUocGF0aCk7XG4gIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWV0aG9kcy5sZW5ndGg7IGkrKykge1xuICAgIHJvdXRlW21ldGhvZHNbaV1dLmFwcGx5KHJvdXRlLCBhcmdzKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gZGVsIC0+IGRlbGV0ZSBhbGlhc1xuXG5hcHAuZGVsID0gZGVwcmVjYXRlLmZ1bmN0aW9uKGFwcC5kZWxldGUsICdhcHAuZGVsOiBVc2UgYXBwLmRlbGV0ZSBpbnN0ZWFkJyk7XG5cbi8qKlxuICogUmVuZGVyIHRoZSBnaXZlbiB2aWV3IGBuYW1lYCBuYW1lIHdpdGggYG9wdGlvbnNgXG4gKiBhbmQgYSBjYWxsYmFjayBhY2NlcHRpbmcgYW4gZXJyb3IgYW5kIHRoZVxuICogcmVuZGVyZWQgdGVtcGxhdGUgc3RyaW5nLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogICAgYXBwLnJlbmRlcignZW1haWwnLCB7IG5hbWU6ICdUb2JpJyB9LCBmdW5jdGlvbihlcnIsIGh0bWwpe1xuICogICAgICAvLyAuLi5cbiAqICAgIH0pXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7T2JqZWN0fEZ1bmN0aW9ufSBvcHRpb25zIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHB1YmxpY1xuICovXG5cbmFwcC5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIobmFtZSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIGNhY2hlID0gdGhpcy5jYWNoZTtcbiAgdmFyIGRvbmUgPSBjYWxsYmFjaztcbiAgdmFyIGVuZ2luZXMgPSB0aGlzLmVuZ2luZXM7XG4gIHZhciBvcHRzID0gb3B0aW9ucztcbiAgdmFyIHJlbmRlck9wdGlvbnMgPSB7fTtcbiAgdmFyIHZpZXc7XG5cbiAgLy8gc3VwcG9ydCBjYWxsYmFjayBmdW5jdGlvbiBhcyBzZWNvbmQgYXJnXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRvbmUgPSBvcHRpb25zO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuXG4gIC8vIG1lcmdlIGFwcC5sb2NhbHNcbiAgbWVyZ2UocmVuZGVyT3B0aW9ucywgdGhpcy5sb2NhbHMpO1xuXG4gIC8vIG1lcmdlIG9wdGlvbnMuX2xvY2Fsc1xuICBpZiAob3B0cy5fbG9jYWxzKSB7XG4gICAgbWVyZ2UocmVuZGVyT3B0aW9ucywgb3B0cy5fbG9jYWxzKTtcbiAgfVxuXG4gIC8vIG1lcmdlIG9wdGlvbnNcbiAgbWVyZ2UocmVuZGVyT3B0aW9ucywgb3B0cyk7XG5cbiAgLy8gc2V0IC5jYWNoZSB1bmxlc3MgZXhwbGljaXRseSBwcm92aWRlZFxuICBpZiAocmVuZGVyT3B0aW9ucy5jYWNoZSA9PSBudWxsKSB7XG4gICAgcmVuZGVyT3B0aW9ucy5jYWNoZSA9IHRoaXMuZW5hYmxlZCgndmlldyBjYWNoZScpO1xuICB9XG5cbiAgLy8gcHJpbWVkIGNhY2hlXG4gIGlmIChyZW5kZXJPcHRpb25zLmNhY2hlKSB7XG4gICAgdmlldyA9IGNhY2hlW25hbWVdO1xuICB9XG5cbiAgLy8gdmlld1xuICBpZiAoIXZpZXcpIHtcbiAgICB2YXIgVmlldyA9IHRoaXMuZ2V0KCd2aWV3Jyk7XG5cbiAgICB2aWV3ID0gbmV3IFZpZXcobmFtZSwge1xuICAgICAgZGVmYXVsdEVuZ2luZTogdGhpcy5nZXQoJ3ZpZXcgZW5naW5lJyksXG4gICAgICByb290OiB0aGlzLmdldCgndmlld3MnKSxcbiAgICAgIGVuZ2luZXM6IGVuZ2luZXNcbiAgICB9KTtcblxuICAgIGlmICghdmlldy5wYXRoKSB7XG4gICAgICB2YXIgZGlycyA9IEFycmF5LmlzQXJyYXkodmlldy5yb290KSAmJiB2aWV3LnJvb3QubGVuZ3RoID4gMVxuICAgICAgICA/ICdkaXJlY3RvcmllcyBcIicgKyB2aWV3LnJvb3Quc2xpY2UoMCwgLTEpLmpvaW4oJ1wiLCBcIicpICsgJ1wiIG9yIFwiJyArIHZpZXcucm9vdFt2aWV3LnJvb3QubGVuZ3RoIC0gMV0gKyAnXCInXG4gICAgICAgIDogJ2RpcmVjdG9yeSBcIicgKyB2aWV3LnJvb3QgKyAnXCInXG4gICAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdGYWlsZWQgdG8gbG9va3VwIHZpZXcgXCInICsgbmFtZSArICdcIiBpbiB2aWV3cyAnICsgZGlycyk7XG4gICAgICBlcnIudmlldyA9IHZpZXc7XG4gICAgICByZXR1cm4gZG9uZShlcnIpO1xuICAgIH1cblxuICAgIC8vIHByaW1lIHRoZSBjYWNoZVxuICAgIGlmIChyZW5kZXJPcHRpb25zLmNhY2hlKSB7XG4gICAgICBjYWNoZVtuYW1lXSA9IHZpZXc7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVuZGVyXG4gIHRyeVJlbmRlcih2aWV3LCByZW5kZXJPcHRpb25zLCBkb25lKTtcbn07XG5cbi8qKlxuICogTGlzdGVuIGZvciBjb25uZWN0aW9ucy5cbiAqXG4gKiBBIG5vZGUgYGh0dHAuU2VydmVyYCBpcyByZXR1cm5lZCwgd2l0aCB0aGlzXG4gKiBhcHBsaWNhdGlvbiAod2hpY2ggaXMgYSBgRnVuY3Rpb25gKSBhcyBpdHNcbiAqIGNhbGxiYWNrLiBJZiB5b3Ugd2lzaCB0byBjcmVhdGUgYm90aCBhbiBIVFRQXG4gKiBhbmQgSFRUUFMgc2VydmVyIHlvdSBtYXkgZG8gc28gd2l0aCB0aGUgXCJodHRwXCJcbiAqIGFuZCBcImh0dHBzXCIgbW9kdWxlcyBhcyBzaG93biBoZXJlOlxuICpcbiAqICAgIHZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpXG4gKiAgICAgICwgaHR0cHMgPSByZXF1aXJlKCdodHRwcycpXG4gKiAgICAgICwgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKVxuICogICAgICAsIGFwcCA9IGV4cHJlc3MoKTtcbiAqXG4gKiAgICBodHRwLmNyZWF0ZVNlcnZlcihhcHApLmxpc3Rlbig4MCk7XG4gKiAgICBodHRwcy5jcmVhdGVTZXJ2ZXIoeyAuLi4gfSwgYXBwKS5saXN0ZW4oNDQzKTtcbiAqXG4gKiBAcmV0dXJuIHtodHRwLlNlcnZlcn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5hcHAubGlzdGVuID0gZnVuY3Rpb24gbGlzdGVuKCkge1xuICB2YXIgc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIodGhpcyk7XG4gIHJldHVybiBzZXJ2ZXIubGlzdGVuLmFwcGx5KHNlcnZlciwgYXJndW1lbnRzKTtcbn07XG5cbi8qKlxuICogTG9nIGVycm9yIHVzaW5nIGNvbnNvbGUuZXJyb3IuXG4gKlxuICogQHBhcmFtIHtFcnJvcn0gZXJyXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvZ2Vycm9yKGVycikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAodGhpcy5nZXQoJ2VudicpICE9PSAndGVzdCcpIGNvbnNvbGUuZXJyb3IoZXJyLnN0YWNrIHx8IGVyci50b1N0cmluZygpKTtcbn1cblxuLyoqXG4gKiBUcnkgcmVuZGVyaW5nIGEgdmlldy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gdHJ5UmVuZGVyKHZpZXcsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHRyeSB7XG4gICAgdmlldy5yZW5kZXIob3B0aW9ucywgY2FsbGJhY2spO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYWxsYmFjayhlcnIpO1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvYXBwbGljYXRpb24uanNcbi8vIG1vZHVsZSBpZCA9IDE2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGZpbmFsaGFuZGxlclxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNyBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnZmluYWxoYW5kbGVyJylcbnZhciBlbmNvZGVVcmwgPSByZXF1aXJlKCdlbmNvZGV1cmwnKVxudmFyIGVzY2FwZUh0bWwgPSByZXF1aXJlKCdlc2NhcGUtaHRtbCcpXG52YXIgb25GaW5pc2hlZCA9IHJlcXVpcmUoJ29uLWZpbmlzaGVkJylcbnZhciBwYXJzZVVybCA9IHJlcXVpcmUoJ3BhcnNldXJsJylcbnZhciBzdGF0dXNlcyA9IHJlcXVpcmUoJ3N0YXR1c2VzJylcbnZhciB1bnBpcGUgPSByZXF1aXJlKCd1bnBpcGUnKVxuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBET1VCTEVfU1BBQ0VfUkVHRVhQID0gL1xceDIwezJ9L2dcbnZhciBORVdMSU5FX1JFR0VYUCA9IC9cXG4vZ1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudmFyIGRlZmVyID0gdHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJ1xuICA/IHNldEltbWVkaWF0ZVxuICA6IGZ1bmN0aW9uIChmbikgeyBwcm9jZXNzLm5leHRUaWNrKGZuLmJpbmQuYXBwbHkoZm4sIGFyZ3VtZW50cykpIH1cbnZhciBpc0ZpbmlzaGVkID0gb25GaW5pc2hlZC5pc0ZpbmlzaGVkXG5cbi8qKlxuICogQ3JlYXRlIGEgbWluaW1hbCBIVE1MIGRvY3VtZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUh0bWxEb2N1bWVudCAobWVzc2FnZSkge1xuICB2YXIgYm9keSA9IGVzY2FwZUh0bWwobWVzc2FnZSlcbiAgICAucmVwbGFjZShORVdMSU5FX1JFR0VYUCwgJzxicj4nKVxuICAgIC5yZXBsYWNlKERPVUJMRV9TUEFDRV9SRUdFWFAsICcgJm5ic3A7JylcblxuICByZXR1cm4gJzwhRE9DVFlQRSBodG1sPlxcbicgK1xuICAgICc8aHRtbCBsYW5nPVwiZW5cIj5cXG4nICtcbiAgICAnPGhlYWQ+XFxuJyArXG4gICAgJzxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxcbicgK1xuICAgICc8dGl0bGU+RXJyb3I8L3RpdGxlPlxcbicgK1xuICAgICc8L2hlYWQ+XFxuJyArXG4gICAgJzxib2R5PlxcbicgK1xuICAgICc8cHJlPicgKyBib2R5ICsgJzwvcHJlPlxcbicgK1xuICAgICc8L2JvZHk+XFxuJyArXG4gICAgJzwvaHRtbD5cXG4nXG59XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmaW5hbGhhbmRsZXJcblxuLyoqXG4gKiBDcmVhdGUgYSBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGZpbmFsIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7UmVxdWVzdH0gcmVxXG4gKiBAcGFyYW0ge1Jlc3BvbnNlfSByZXNcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZpbmFsaGFuZGxlciAocmVxLCByZXMsIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9XG5cbiAgLy8gZ2V0IGVudmlyb25tZW50XG4gIHZhciBlbnYgPSBvcHRzLmVudiB8fCBwcm9jZXNzLmVudi5OT0RFX0VOViB8fCAnZGV2ZWxvcG1lbnQnXG5cbiAgLy8gZ2V0IGVycm9yIGNhbGxiYWNrXG4gIHZhciBvbmVycm9yID0gb3B0cy5vbmVycm9yXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChlcnIpIHtcbiAgICB2YXIgaGVhZGVyc1xuICAgIHZhciBtc2dcbiAgICB2YXIgc3RhdHVzXG5cbiAgICAvLyBpZ25vcmUgNDA0IG9uIGluLWZsaWdodCByZXNwb25zZVxuICAgIGlmICghZXJyICYmIGhlYWRlcnNTZW50KHJlcykpIHtcbiAgICAgIGRlYnVnKCdjYW5ub3QgNDA0IGFmdGVyIGhlYWRlcnMgc2VudCcpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB1bmhhbmRsZWQgZXJyb3JcbiAgICBpZiAoZXJyKSB7XG4gICAgICAvLyByZXNwZWN0IHN0YXR1cyBjb2RlIGZyb20gZXJyb3JcbiAgICAgIHN0YXR1cyA9IGdldEVycm9yU3RhdHVzQ29kZShlcnIpXG5cbiAgICAgIGlmIChzdGF0dXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBmYWxsYmFjayB0byBzdGF0dXMgY29kZSBvbiByZXNwb25zZVxuICAgICAgICBzdGF0dXMgPSBnZXRSZXNwb25zZVN0YXR1c0NvZGUocmVzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcmVzcGVjdCBoZWFkZXJzIGZyb20gZXJyb3JcbiAgICAgICAgaGVhZGVycyA9IGdldEVycm9ySGVhZGVycyhlcnIpXG4gICAgICB9XG5cbiAgICAgIC8vIGdldCBlcnJvciBtZXNzYWdlXG4gICAgICBtc2cgPSBnZXRFcnJvck1lc3NhZ2UoZXJyLCBzdGF0dXMsIGVudilcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbm90IGZvdW5kXG4gICAgICBzdGF0dXMgPSA0MDRcbiAgICAgIG1zZyA9ICdDYW5ub3QgJyArIHJlcS5tZXRob2QgKyAnICcgKyBlbmNvZGVVcmwoZ2V0UmVzb3VyY2VOYW1lKHJlcSkpXG4gICAgfVxuXG4gICAgZGVidWcoJ2RlZmF1bHQgJXMnLCBzdGF0dXMpXG5cbiAgICAvLyBzY2hlZHVsZSBvbmVycm9yIGNhbGxiYWNrXG4gICAgaWYgKGVyciAmJiBvbmVycm9yKSB7XG4gICAgICBkZWZlcihvbmVycm9yLCBlcnIsIHJlcSwgcmVzKVxuICAgIH1cblxuICAgIC8vIGNhbm5vdCBhY3R1YWxseSByZXNwb25kXG4gICAgaWYgKGhlYWRlcnNTZW50KHJlcykpIHtcbiAgICAgIGRlYnVnKCdjYW5ub3QgJWQgYWZ0ZXIgaGVhZGVycyBzZW50Jywgc3RhdHVzKVxuICAgICAgcmVxLnNvY2tldC5kZXN0cm95KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIHNlbmQgcmVzcG9uc2VcbiAgICBzZW5kKHJlcSwgcmVzLCBzdGF0dXMsIGhlYWRlcnMsIG1zZylcbiAgfVxufVxuXG4vKipcbiAqIEdldCBoZWFkZXJzIGZyb20gRXJyb3Igb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyclxuICogQHJldHVybiB7b2JqZWN0fVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRFcnJvckhlYWRlcnMgKGVycikge1xuICBpZiAoIWVyci5oZWFkZXJzIHx8IHR5cGVvZiBlcnIuaGVhZGVycyAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICB2YXIgaGVhZGVycyA9IE9iamVjdC5jcmVhdGUobnVsbClcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhlcnIuaGVhZGVycylcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXVxuICAgIGhlYWRlcnNba2V5XSA9IGVyci5oZWFkZXJzW2tleV1cbiAgfVxuXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbi8qKlxuICogR2V0IG1lc3NhZ2UgZnJvbSBFcnJvciBvYmplY3QsIGZhbGxiYWNrIHRvIHN0YXR1cyBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyclxuICogQHBhcmFtIHtudW1iZXJ9IHN0YXR1c1xuICogQHBhcmFtIHtzdHJpbmd9IGVudlxuICogQHJldHVybiB7c3RyaW5nfVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UgKGVyciwgc3RhdHVzLCBlbnYpIHtcbiAgdmFyIG1zZ1xuXG4gIGlmIChlbnYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIHVzZSBlcnIuc3RhY2ssIHdoaWNoIHR5cGljYWxseSBpbmNsdWRlcyBlcnIubWVzc2FnZVxuICAgIG1zZyA9IGVyci5zdGFja1xuXG4gICAgLy8gZmFsbGJhY2sgdG8gZXJyLnRvU3RyaW5nKCkgd2hlbiBwb3NzaWJsZVxuICAgIGlmICghbXNnICYmIHR5cGVvZiBlcnIudG9TdHJpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG1zZyA9IGVyci50b1N0cmluZygpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1zZyB8fCBzdGF0dXNlc1tzdGF0dXNdXG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBjb2RlIGZyb20gRXJyb3Igb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyclxuICogQHJldHVybiB7bnVtYmVyfVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRFcnJvclN0YXR1c0NvZGUgKGVycikge1xuICAvLyBjaGVjayBlcnIuc3RhdHVzXG4gIGlmICh0eXBlb2YgZXJyLnN0YXR1cyA9PT0gJ251bWJlcicgJiYgZXJyLnN0YXR1cyA+PSA0MDAgJiYgZXJyLnN0YXR1cyA8IDYwMCkge1xuICAgIHJldHVybiBlcnIuc3RhdHVzXG4gIH1cblxuICAvLyBjaGVjayBlcnIuc3RhdHVzQ29kZVxuICBpZiAodHlwZW9mIGVyci5zdGF0dXNDb2RlID09PSAnbnVtYmVyJyAmJiBlcnIuc3RhdHVzQ29kZSA+PSA0MDAgJiYgZXJyLnN0YXR1c0NvZGUgPCA2MDApIHtcbiAgICByZXR1cm4gZXJyLnN0YXR1c0NvZGVcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBHZXQgcmVzb3VyY2UgbmFtZSBmb3IgdGhlIHJlcXVlc3QuXG4gKlxuICogVGhpcyBpcyB0eXBpY2FsbHkganVzdCB0aGUgb3JpZ2luYWwgcGF0aG5hbWUgb2YgdGhlIHJlcXVlc3RcbiAqIGJ1dCB3aWxsIGZhbGxiYWNrIHRvIFwicmVzb3VyY2VcIiBpcyB0aGF0IGNhbm5vdCBiZSBkZXRlcm1pbmVkLlxuICpcbiAqIEBwYXJhbSB7SW5jb21pbmdNZXNzYWdlfSByZXFcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0UmVzb3VyY2VOYW1lIChyZXEpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcGFyc2VVcmwub3JpZ2luYWwocmVxKS5wYXRobmFtZVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuICdyZXNvdXJjZSdcbiAgfVxufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgY29kZSBmcm9tIHJlc3BvbnNlLlxuICpcbiAqIEBwYXJhbSB7T3V0Z29pbmdNZXNzYWdlfSByZXNcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0UmVzcG9uc2VTdGF0dXNDb2RlIChyZXMpIHtcbiAgdmFyIHN0YXR1cyA9IHJlcy5zdGF0dXNDb2RlXG5cbiAgLy8gZGVmYXVsdCBzdGF0dXMgY29kZSB0byA1MDAgaWYgb3V0c2lkZSB2YWxpZCByYW5nZVxuICBpZiAodHlwZW9mIHN0YXR1cyAhPT0gJ251bWJlcicgfHwgc3RhdHVzIDwgNDAwIHx8IHN0YXR1cyA+IDU5OSkge1xuICAgIHN0YXR1cyA9IDUwMFxuICB9XG5cbiAgcmV0dXJuIHN0YXR1c1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgcmVzcG9uc2UgaGVhZGVycyBoYXZlIGJlZW4gc2VudC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaGVhZGVyc1NlbnQgKHJlcykge1xuICByZXR1cm4gdHlwZW9mIHJlcy5oZWFkZXJzU2VudCAhPT0gJ2Jvb2xlYW4nXG4gICAgPyBCb29sZWFuKHJlcy5faGVhZGVyKVxuICAgIDogcmVzLmhlYWRlcnNTZW50XG59XG5cbi8qKlxuICogU2VuZCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge0luY29taW5nTWVzc2FnZX0gcmVxXG4gKiBAcGFyYW0ge091dGdvaW5nTWVzc2FnZX0gcmVzXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhdHVzXG4gKiBAcGFyYW0ge29iamVjdH0gaGVhZGVyc1xuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2VuZCAocmVxLCByZXMsIHN0YXR1cywgaGVhZGVycywgbWVzc2FnZSkge1xuICBmdW5jdGlvbiB3cml0ZSAoKSB7XG4gICAgLy8gcmVzcG9uc2UgYm9keVxuICAgIHZhciBib2R5ID0gY3JlYXRlSHRtbERvY3VtZW50KG1lc3NhZ2UpXG5cbiAgICAvLyByZXNwb25zZSBzdGF0dXNcbiAgICByZXMuc3RhdHVzQ29kZSA9IHN0YXR1c1xuICAgIHJlcy5zdGF0dXNNZXNzYWdlID0gc3RhdHVzZXNbc3RhdHVzXVxuXG4gICAgLy8gcmVzcG9uc2UgaGVhZGVyc1xuICAgIHNldEhlYWRlcnMocmVzLCBoZWFkZXJzKVxuXG4gICAgLy8gc2VjdXJpdHkgaGVhZGVyc1xuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtU2VjdXJpdHktUG9saWN5JywgXCJkZWZhdWx0LXNyYyAnc2VsZidcIilcbiAgICByZXMuc2V0SGVhZGVyKCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zJywgJ25vc25pZmYnKVxuXG4gICAgLy8gc3RhbmRhcmQgaGVhZGVyc1xuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgnKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgQnVmZmVyLmJ5dGVMZW5ndGgoYm9keSwgJ3V0ZjgnKSlcblxuICAgIGlmIChyZXEubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICAgIHJlcy5lbmQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgcmVzLmVuZChib2R5LCAndXRmOCcpXG4gIH1cblxuICBpZiAoaXNGaW5pc2hlZChyZXEpKSB7XG4gICAgd3JpdGUoKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gdW5waXBlIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgcmVxdWVzdFxuICB1bnBpcGUocmVxKVxuXG4gIC8vIGZsdXNoIHRoZSByZXF1ZXN0XG4gIG9uRmluaXNoZWQocmVxLCB3cml0ZSlcbiAgcmVxLnJlc3VtZSgpXG59XG5cbi8qKlxuICogU2V0IHJlc3BvbnNlIGhlYWRlcnMgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtPdXRnb2luZ01lc3NhZ2V9IHJlc1xuICogQHBhcmFtIHtvYmplY3R9IGhlYWRlcnNcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2V0SGVhZGVycyAocmVzLCBoZWFkZXJzKSB7XG4gIGlmICghaGVhZGVycykge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhoZWFkZXJzKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXVxuICAgIHJlcy5zZXRIZWFkZXIoa2V5LCBoZWFkZXJzW2tleV0pXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9maW5hbGhhbmRsZXIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE2M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIEV4cG9zZSBgcGF0aHRvUmVnZXhwYC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGh0b1JlZ2V4cDtcblxuLyoqXG4gKiBNYXRjaCBtYXRjaGluZyBncm91cHMgaW4gYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKi9cbnZhciBNQVRDSElOR19HUk9VUF9SRUdFWFAgPSAvXFwoKD8hXFw/KS9nO1xuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgZ2l2ZW4gcGF0aCBzdHJpbmcsXG4gKiByZXR1cm5pbmcgYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogQW4gZW1wdHkgYXJyYXkgc2hvdWxkIGJlIHBhc3NlZCxcbiAqIHdoaWNoIHdpbGwgY29udGFpbiB0aGUgcGxhY2Vob2xkZXJcbiAqIGtleSBuYW1lcy4gRm9yIGV4YW1wbGUgXCIvdXNlci86aWRcIiB3aWxsXG4gKiB0aGVuIGNvbnRhaW4gW1wiaWRcIl0uXG4gKlxuICogQHBhcmFtICB7U3RyaW5nfFJlZ0V4cHxBcnJheX0gcGF0aFxuICogQHBhcmFtICB7QXJyYXl9IGtleXNcbiAqIEBwYXJhbSAge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7UmVnRXhwfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGF0aHRvUmVnZXhwKHBhdGgsIGtleXMsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGtleXMgPSBrZXlzIHx8IFtdO1xuICB2YXIgc3RyaWN0ID0gb3B0aW9ucy5zdHJpY3Q7XG4gIHZhciBlbmQgPSBvcHRpb25zLmVuZCAhPT0gZmFsc2U7XG4gIHZhciBmbGFncyA9IG9wdGlvbnMuc2Vuc2l0aXZlID8gJycgOiAnaSc7XG4gIHZhciBleHRyYU9mZnNldCA9IDA7XG4gIHZhciBrZXlzT2Zmc2V0ID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIG5hbWUgPSAwO1xuICB2YXIgbTtcblxuICBpZiAocGF0aCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIHdoaWxlIChtID0gTUFUQ0hJTkdfR1JPVVBfUkVHRVhQLmV4ZWMocGF0aC5zb3VyY2UpKSB7XG4gICAgICBrZXlzLnB1c2goe1xuICAgICAgICBuYW1lOiBuYW1lKyssXG4gICAgICAgIG9wdGlvbmFsOiBmYWxzZSxcbiAgICAgICAgb2Zmc2V0OiBtLmluZGV4XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHBhdGgpKSB7XG4gICAgLy8gTWFwIGFycmF5IHBhcnRzIGludG8gcmVnZXhwcyBhbmQgcmV0dXJuIHRoZWlyIHNvdXJjZS4gV2UgYWxzbyBwYXNzXG4gICAgLy8gdGhlIHNhbWUga2V5cyBhbmQgb3B0aW9ucyBpbnN0YW5jZSBpbnRvIGV2ZXJ5IGdlbmVyYXRpb24gdG8gZ2V0XG4gICAgLy8gY29uc2lzdGVudCBtYXRjaGluZyBncm91cHMgYmVmb3JlIHdlIGpvaW4gdGhlIHNvdXJjZXMgdG9nZXRoZXIuXG4gICAgcGF0aCA9IHBhdGgubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHBhdGh0b1JlZ2V4cCh2YWx1ZSwga2V5cywgb3B0aW9ucykuc291cmNlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoJyg/OicgKyBwYXRoLmpvaW4oJ3wnKSArICcpJywgZmxhZ3MpO1xuICB9XG5cbiAgcGF0aCA9ICgnXicgKyBwYXRoICsgKHN0cmljdCA/ICcnIDogcGF0aFtwYXRoLmxlbmd0aCAtIDFdID09PSAnLycgPyAnPycgOiAnLz8nKSlcbiAgICAucmVwbGFjZSgvXFwvXFwoL2csICcvKD86JylcbiAgICAucmVwbGFjZSgvKFtcXC9cXC5dKS9nLCAnXFxcXCQxJylcbiAgICAucmVwbGFjZSgvKFxcXFxcXC8pPyhcXFxcXFwuKT86KFxcdyspKFxcKC4qP1xcKSk/KFxcKik/KFxcPyk/L2csIGZ1bmN0aW9uIChtYXRjaCwgc2xhc2gsIGZvcm1hdCwga2V5LCBjYXB0dXJlLCBzdGFyLCBvcHRpb25hbCwgb2Zmc2V0KSB7XG4gICAgICBzbGFzaCA9IHNsYXNoIHx8ICcnO1xuICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgY2FwdHVyZSA9IGNhcHR1cmUgfHwgJyhbXlxcXFwvJyArIGZvcm1hdCArICddKz8pJztcbiAgICAgIG9wdGlvbmFsID0gb3B0aW9uYWwgfHwgJyc7XG5cbiAgICAgIGtleXMucHVzaCh7XG4gICAgICAgIG5hbWU6IGtleSxcbiAgICAgICAgb3B0aW9uYWw6ICEhb3B0aW9uYWwsXG4gICAgICAgIG9mZnNldDogb2Zmc2V0ICsgZXh0cmFPZmZzZXRcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gJydcbiAgICAgICAgKyAob3B0aW9uYWwgPyAnJyA6IHNsYXNoKVxuICAgICAgICArICcoPzonXG4gICAgICAgICsgZm9ybWF0ICsgKG9wdGlvbmFsID8gc2xhc2ggOiAnJykgKyBjYXB0dXJlXG4gICAgICAgICsgKHN0YXIgPyAnKCg/OltcXFxcLycgKyBmb3JtYXQgKyAnXS4rPyk/KScgOiAnJylcbiAgICAgICAgKyAnKSdcbiAgICAgICAgKyBvcHRpb25hbDtcblxuICAgICAgZXh0cmFPZmZzZXQgKz0gcmVzdWx0Lmxlbmd0aCAtIG1hdGNoLmxlbmd0aDtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KVxuICAgIC5yZXBsYWNlKC9cXCovZywgZnVuY3Rpb24gKHN0YXIsIGluZGV4KSB7XG4gICAgICB2YXIgbGVuID0ga2V5cy5sZW5ndGhcblxuICAgICAgd2hpbGUgKGxlbi0tID4ga2V5c09mZnNldCAmJiBrZXlzW2xlbl0ub2Zmc2V0ID4gaW5kZXgpIHtcbiAgICAgICAga2V5c1tsZW5dLm9mZnNldCArPSAzOyAvLyBSZXBsYWNlbWVudCBsZW5ndGggbWludXMgYXN0ZXJpc2sgbGVuZ3RoLlxuICAgICAgfVxuXG4gICAgICByZXR1cm4gJyguKiknO1xuICAgIH0pO1xuXG4gIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBoYW5kbGluZyB1bm5hbWVkIG1hdGNoaW5nIGdyb3Vwcy5cbiAgd2hpbGUgKG0gPSBNQVRDSElOR19HUk9VUF9SRUdFWFAuZXhlYyhwYXRoKSkge1xuICAgIHZhciBlc2NhcGVDb3VudCA9IDA7XG4gICAgdmFyIGluZGV4ID0gbS5pbmRleDtcblxuICAgIHdoaWxlIChwYXRoLmNoYXJBdCgtLWluZGV4KSA9PT0gJ1xcXFwnKSB7XG4gICAgICBlc2NhcGVDb3VudCsrO1xuICAgIH1cblxuICAgIC8vIEl0J3MgcG9zc2libGUgdG8gZXNjYXBlIHRoZSBicmFja2V0LlxuICAgIGlmIChlc2NhcGVDb3VudCAlIDIgPT09IDEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChrZXlzT2Zmc2V0ICsgaSA9PT0ga2V5cy5sZW5ndGggfHwga2V5c1trZXlzT2Zmc2V0ICsgaV0ub2Zmc2V0ID4gbS5pbmRleCkge1xuICAgICAga2V5cy5zcGxpY2Uoa2V5c09mZnNldCArIGksIDAsIHtcbiAgICAgICAgbmFtZTogbmFtZSsrLCAvLyBVbm5hbWVkIG1hdGNoaW5nIGdyb3VwcyBtdXN0IGJlIGNvbnNpc3RlbnRseSBsaW5lYXIuXG4gICAgICAgIG9wdGlvbmFsOiBmYWxzZSxcbiAgICAgICAgb2Zmc2V0OiBtLmluZGV4XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpKys7XG4gIH1cblxuICAvLyBJZiB0aGUgcGF0aCBpcyBub24tZW5kaW5nLCBtYXRjaCB1bnRpbCB0aGUgZW5kIG9yIGEgc2xhc2guXG4gIHBhdGggKz0gKGVuZCA/ICckJyA6IChwYXRoW3BhdGgubGVuZ3RoIC0gMV0gPT09ICcvJyA/ICcnIDogJyg/PVxcXFwvfCQpJykpO1xuXG4gIHJldHVybiBuZXcgUmVnRXhwKHBhdGgsIGZsYWdzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvcGF0aC10by1yZWdleHAvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE2NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV4cHJlc3NcbiAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDEzIFJvbWFuIFNodHlsbWFuXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnc2V0cHJvdG90eXBlb2YnKVxuXG4vKipcbiAqIEluaXRpYWxpemF0aW9uIG1pZGRsZXdhcmUsIGV4cG9zaW5nIHRoZVxuICogcmVxdWVzdCBhbmQgcmVzcG9uc2UgdG8gZWFjaCBvdGhlciwgYXMgd2VsbFxuICogYXMgZGVmYXVsdGluZyB0aGUgWC1Qb3dlcmVkLUJ5IGhlYWRlciBmaWVsZC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhcHBcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5pbml0ID0gZnVuY3Rpb24oYXBwKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGV4cHJlc3NJbml0KHJlcSwgcmVzLCBuZXh0KXtcbiAgICBpZiAoYXBwLmVuYWJsZWQoJ3gtcG93ZXJlZC1ieScpKSByZXMuc2V0SGVhZGVyKCdYLVBvd2VyZWQtQnknLCAnRXhwcmVzcycpO1xuICAgIHJlcS5yZXMgPSByZXM7XG4gICAgcmVzLnJlcSA9IHJlcTtcbiAgICByZXEubmV4dCA9IG5leHQ7XG5cbiAgICBzZXRQcm90b3R5cGVPZihyZXEsIGFwcC5yZXF1ZXN0KVxuICAgIHNldFByb3RvdHlwZU9mKHJlcywgYXBwLnJlc3BvbnNlKVxuXG4gICAgcmVzLmxvY2FscyA9IHJlcy5sb2NhbHMgfHwgT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIG5leHQoKTtcbiAgfTtcbn07XG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi9taWRkbGV3YXJlL2luaXQuanNcbi8vIG1vZHVsZSBpZCA9IDE2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV4cHJlc3NcbiAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDEzIFJvbWFuIFNodHlsbWFuXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnZXhwcmVzczp2aWV3Jyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGRpcm5hbWUgPSBwYXRoLmRpcm5hbWU7XG52YXIgYmFzZW5hbWUgPSBwYXRoLmJhc2VuYW1lO1xudmFyIGV4dG5hbWUgPSBwYXRoLmV4dG5hbWU7XG52YXIgam9pbiA9IHBhdGguam9pbjtcbnZhciByZXNvbHZlID0gcGF0aC5yZXNvbHZlO1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gVmlldztcblxuLyoqXG4gKiBJbml0aWFsaXplIGEgbmV3IGBWaWV3YCB3aXRoIHRoZSBnaXZlbiBgbmFtZWAuXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgIC0gYGRlZmF1bHRFbmdpbmVgIHRoZSBkZWZhdWx0IHRlbXBsYXRlIGVuZ2luZSBuYW1lXG4gKiAgIC0gYGVuZ2luZXNgIHRlbXBsYXRlIGVuZ2luZSByZXF1aXJlKCkgY2FjaGVcbiAqICAgLSBgcm9vdGAgcm9vdCBwYXRoIGZvciB2aWV3IGxvb2t1cFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIFZpZXcobmFtZSwgb3B0aW9ucykge1xuICB2YXIgb3B0cyA9IG9wdGlvbnMgfHwge307XG5cbiAgdGhpcy5kZWZhdWx0RW5naW5lID0gb3B0cy5kZWZhdWx0RW5naW5lO1xuICB0aGlzLmV4dCA9IGV4dG5hbWUobmFtZSk7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMucm9vdCA9IG9wdHMucm9vdDtcblxuICBpZiAoIXRoaXMuZXh0ICYmICF0aGlzLmRlZmF1bHRFbmdpbmUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGRlZmF1bHQgZW5naW5lIHdhcyBzcGVjaWZpZWQgYW5kIG5vIGV4dGVuc2lvbiB3YXMgcHJvdmlkZWQuJyk7XG4gIH1cblxuICB2YXIgZmlsZU5hbWUgPSBuYW1lO1xuXG4gIGlmICghdGhpcy5leHQpIHtcbiAgICAvLyBnZXQgZXh0ZW5zaW9uIGZyb20gZGVmYXVsdCBlbmdpbmUgbmFtZVxuICAgIHRoaXMuZXh0ID0gdGhpcy5kZWZhdWx0RW5naW5lWzBdICE9PSAnLidcbiAgICAgID8gJy4nICsgdGhpcy5kZWZhdWx0RW5naW5lXG4gICAgICA6IHRoaXMuZGVmYXVsdEVuZ2luZTtcblxuICAgIGZpbGVOYW1lICs9IHRoaXMuZXh0O1xuICB9XG5cbiAgaWYgKCFvcHRzLmVuZ2luZXNbdGhpcy5leHRdKSB7XG4gICAgLy8gbG9hZCBlbmdpbmVcbiAgICB2YXIgbW9kID0gdGhpcy5leHQuc3Vic3RyKDEpXG4gICAgZGVidWcoJ3JlcXVpcmUgXCIlc1wiJywgbW9kKVxuXG4gICAgLy8gZGVmYXVsdCBlbmdpbmUgZXhwb3J0XG4gICAgdmFyIGZuID0gcmVxdWlyZShtb2QpLl9fZXhwcmVzc1xuXG4gICAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNb2R1bGUgXCInICsgbW9kICsgJ1wiIGRvZXMgbm90IHByb3ZpZGUgYSB2aWV3IGVuZ2luZS4nKVxuICAgIH1cblxuICAgIG9wdHMuZW5naW5lc1t0aGlzLmV4dF0gPSBmblxuICB9XG5cbiAgLy8gc3RvcmUgbG9hZGVkIGVuZ2luZVxuICB0aGlzLmVuZ2luZSA9IG9wdHMuZW5naW5lc1t0aGlzLmV4dF07XG5cbiAgLy8gbG9va3VwIHBhdGhcbiAgdGhpcy5wYXRoID0gdGhpcy5sb29rdXAoZmlsZU5hbWUpO1xufVxuXG4vKipcbiAqIExvb2t1cCB2aWV3IGJ5IHRoZSBnaXZlbiBgbmFtZWBcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHByaXZhdGVcbiAqL1xuXG5WaWV3LnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbiBsb29rdXAobmFtZSkge1xuICB2YXIgcGF0aDtcbiAgdmFyIHJvb3RzID0gW10uY29uY2F0KHRoaXMucm9vdCk7XG5cbiAgZGVidWcoJ2xvb2t1cCBcIiVzXCInLCBuYW1lKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHJvb3RzLmxlbmd0aCAmJiAhcGF0aDsgaSsrKSB7XG4gICAgdmFyIHJvb3QgPSByb290c1tpXTtcblxuICAgIC8vIHJlc29sdmUgdGhlIHBhdGhcbiAgICB2YXIgbG9jID0gcmVzb2x2ZShyb290LCBuYW1lKTtcbiAgICB2YXIgZGlyID0gZGlybmFtZShsb2MpO1xuICAgIHZhciBmaWxlID0gYmFzZW5hbWUobG9jKTtcblxuICAgIC8vIHJlc29sdmUgdGhlIGZpbGVcbiAgICBwYXRoID0gdGhpcy5yZXNvbHZlKGRpciwgZmlsZSk7XG4gIH1cblxuICByZXR1cm4gcGF0aDtcbn07XG5cbi8qKlxuICogUmVuZGVyIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcHJpdmF0ZVxuICovXG5cblZpZXcucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihvcHRpb25zLCBjYWxsYmFjaykge1xuICBkZWJ1ZygncmVuZGVyIFwiJXNcIicsIHRoaXMucGF0aCk7XG4gIHRoaXMuZW5naW5lKHRoaXMucGF0aCwgb3B0aW9ucywgY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBmaWxlIHdpdGhpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlXG4gKiBAcHJpdmF0ZVxuICovXG5cblZpZXcucHJvdG90eXBlLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlKGRpciwgZmlsZSkge1xuICB2YXIgZXh0ID0gdGhpcy5leHQ7XG5cbiAgLy8gPHBhdGg+LjxleHQ+XG4gIHZhciBwYXRoID0gam9pbihkaXIsIGZpbGUpO1xuICB2YXIgc3RhdCA9IHRyeVN0YXQocGF0aCk7XG5cbiAgaWYgKHN0YXQgJiYgc3RhdC5pc0ZpbGUoKSkge1xuICAgIHJldHVybiBwYXRoO1xuICB9XG5cbiAgLy8gPHBhdGg+L2luZGV4LjxleHQ+XG4gIHBhdGggPSBqb2luKGRpciwgYmFzZW5hbWUoZmlsZSwgZXh0KSwgJ2luZGV4JyArIGV4dCk7XG4gIHN0YXQgPSB0cnlTdGF0KHBhdGgpO1xuXG4gIGlmIChzdGF0ICYmIHN0YXQuaXNGaWxlKCkpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxufTtcblxuLyoqXG4gKiBSZXR1cm4gYSBzdGF0LCBtYXliZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHJldHVybiB7ZnMuU3RhdHN9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHRyeVN0YXQocGF0aCkge1xuICBkZWJ1Zygnc3RhdCBcIiVzXCInLCBwYXRoKTtcblxuICB0cnkge1xuICAgIHJldHVybiBmcy5zdGF0U3luYyhwYXRoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi92aWV3LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiZnVuY3Rpb24gd2VicGFja0VtcHR5Q29udGV4dChyZXEpIHtcblx0dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJy5cIik7XG59XG53ZWJwYWNrRW1wdHlDb250ZXh0LmtleXMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIFtdOyB9O1xud2VicGFja0VtcHR5Q29udGV4dC5yZXNvbHZlID0gd2VicGFja0VtcHR5Q29udGV4dDtcbm1vZHVsZS5leHBvcnRzID0gd2VicGFja0VtcHR5Q29udGV4dDtcbndlYnBhY2tFbXB0eUNvbnRleHQuaWQgPSAxNjc7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliXG4vLyBtb2R1bGUgaWQgPSAxNjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBkZXN0cm95XG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBSZWFkU3RyZWFtID0gcmVxdWlyZSgnZnMnKS5SZWFkU3RyZWFtXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJylcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlc3Ryb3lcblxuLyoqXG4gKiBEZXN0cm95IGEgc3RyZWFtLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdHJlYW1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBkZXN0cm95KHN0cmVhbSkge1xuICBpZiAoc3RyZWFtIGluc3RhbmNlb2YgUmVhZFN0cmVhbSkge1xuICAgIHJldHVybiBkZXN0cm95UmVhZFN0cmVhbShzdHJlYW0pXG4gIH1cblxuICBpZiAoIShzdHJlYW0gaW5zdGFuY2VvZiBTdHJlYW0pKSB7XG4gICAgcmV0dXJuIHN0cmVhbVxuICB9XG5cbiAgaWYgKHR5cGVvZiBzdHJlYW0uZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHN0cmVhbS5kZXN0cm95KClcbiAgfVxuXG4gIHJldHVybiBzdHJlYW1cbn1cblxuLyoqXG4gKiBEZXN0cm95IGEgUmVhZFN0cmVhbS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gc3RyZWFtXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGRlc3Ryb3lSZWFkU3RyZWFtKHN0cmVhbSkge1xuICBzdHJlYW0uZGVzdHJveSgpXG5cbiAgaWYgKHR5cGVvZiBzdHJlYW0uY2xvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBub2RlLmpzIGNvcmUgYnVnIHdvcmstYXJvdW5kXG4gICAgc3RyZWFtLm9uKCdvcGVuJywgb25PcGVuQ2xvc2UpXG4gIH1cblxuICByZXR1cm4gc3RyZWFtXG59XG5cbi8qKlxuICogT24gb3BlbiBoYW5kbGVyIHRvIGNsb3NlIHN0cmVhbS5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gb25PcGVuQ2xvc2UoKSB7XG4gIGlmICh0eXBlb2YgdGhpcy5mZCA9PT0gJ251bWJlcicpIHtcbiAgICAvLyBhY3R1YWxseSBjbG9zZSBkb3duIHRoZSBmZFxuICAgIHRoaXMuY2xvc2UoKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZGVzdHJveS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTY4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcblxuZnVuY3Rpb24gTWltZSgpIHtcbiAgLy8gTWFwIG9mIGV4dGVuc2lvbiAtPiBtaW1lIHR5cGVcbiAgdGhpcy50eXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgLy8gTWFwIG9mIG1pbWUgdHlwZSAtPiBleHRlbnNpb25cbiAgdGhpcy5leHRlbnNpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBEZWZpbmUgbWltZXR5cGUgLT4gZXh0ZW5zaW9uIG1hcHBpbmdzLiAgRWFjaCBrZXkgaXMgYSBtaW1lLXR5cGUgdGhhdCBtYXBzXG4gKiB0byBhbiBhcnJheSBvZiBleHRlbnNpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgdHlwZS4gIFRoZSBmaXJzdCBleHRlbnNpb24gaXNcbiAqIHVzZWQgYXMgdGhlIGRlZmF1bHQgZXh0ZW5zaW9uIGZvciB0aGUgdHlwZS5cbiAqXG4gKiBlLmcuIG1pbWUuZGVmaW5lKHsnYXVkaW8vb2dnJywgWydvZ2EnLCAnb2dnJywgJ3NweCddfSk7XG4gKlxuICogQHBhcmFtIG1hcCAoT2JqZWN0KSB0eXBlIGRlZmluaXRpb25zXG4gKi9cbk1pbWUucHJvdG90eXBlLmRlZmluZSA9IGZ1bmN0aW9uIChtYXApIHtcbiAgZm9yICh2YXIgdHlwZSBpbiBtYXApIHtcbiAgICB2YXIgZXh0cyA9IG1hcFt0eXBlXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5ERUJVR19NSU1FICYmIHRoaXMudHlwZXNbZXh0c1tpXV0pIHtcbiAgICAgICAgY29uc29sZS53YXJuKCh0aGlzLl9sb2FkaW5nIHx8IFwiZGVmaW5lKClcIikucmVwbGFjZSgvLipcXC8vLCAnJyksICdjaGFuZ2VzIFwiJyArIGV4dHNbaV0gKyAnXCIgZXh0ZW5zaW9uIHR5cGUgZnJvbSAnICtcbiAgICAgICAgICB0aGlzLnR5cGVzW2V4dHNbaV1dICsgJyB0byAnICsgdHlwZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudHlwZXNbZXh0c1tpXV0gPSB0eXBlO1xuICAgIH1cblxuICAgIC8vIERlZmF1bHQgZXh0ZW5zaW9uIGlzIHRoZSBmaXJzdCBvbmUgd2UgZW5jb3VudGVyXG4gICAgaWYgKCF0aGlzLmV4dGVuc2lvbnNbdHlwZV0pIHtcbiAgICAgIHRoaXMuZXh0ZW5zaW9uc1t0eXBlXSA9IGV4dHNbMF07XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIExvYWQgYW4gQXBhY2hlMi1zdHlsZSBcIi50eXBlc1wiIGZpbGVcbiAqXG4gKiBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgKGl0J3MgZXhwZWN0ZWQpLiAgV2hlcmUgZmlsZXMgZGVjbGFyZVxuICogb3ZlcmxhcHBpbmcgdHlwZXMvZXh0ZW5zaW9ucywgdGhlIGxhc3QgZmlsZSB3aW5zLlxuICpcbiAqIEBwYXJhbSBmaWxlIChTdHJpbmcpIHBhdGggb2YgZmlsZSB0byBsb2FkLlxuICovXG5NaW1lLnByb3RvdHlwZS5sb2FkID0gZnVuY3Rpb24oZmlsZSkge1xuICB0aGlzLl9sb2FkaW5nID0gZmlsZTtcbiAgLy8gUmVhZCBmaWxlIGFuZCBzcGxpdCBpbnRvIGxpbmVzXG4gIHZhciBtYXAgPSB7fSxcbiAgICAgIGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZSwgJ2FzY2lpJyksXG4gICAgICBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoL1tcXHJcXG5dKy8pO1xuXG4gIGxpbmVzLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgIC8vIENsZWFuIHVwIHdoaXRlc3BhY2UvY29tbWVudHMsIGFuZCBzcGxpdCBpbnRvIGZpZWxkc1xuICAgIHZhciBmaWVsZHMgPSBsaW5lLnJlcGxhY2UoL1xccyojLip8Xlxccyp8XFxzKiQvZywgJycpLnNwbGl0KC9cXHMrLyk7XG4gICAgbWFwW2ZpZWxkcy5zaGlmdCgpXSA9IGZpZWxkcztcbiAgfSk7XG5cbiAgdGhpcy5kZWZpbmUobWFwKTtcblxuICB0aGlzLl9sb2FkaW5nID0gbnVsbDtcbn07XG5cbi8qKlxuICogTG9va3VwIGEgbWltZSB0eXBlIGJhc2VkIG9uIGV4dGVuc2lvblxuICovXG5NaW1lLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihwYXRoLCBmYWxsYmFjaykge1xuICB2YXIgZXh0ID0gcGF0aC5yZXBsYWNlKC9eLipbXFwuXFwvXFxcXF0vLCAnJykudG9Mb3dlckNhc2UoKTtcblxuICByZXR1cm4gdGhpcy50eXBlc1tleHRdIHx8IGZhbGxiYWNrIHx8IHRoaXMuZGVmYXVsdF90eXBlO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gZmlsZSBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIGEgbWltZSB0eXBlXG4gKi9cbk1pbWUucHJvdG90eXBlLmV4dGVuc2lvbiA9IGZ1bmN0aW9uKG1pbWVUeXBlKSB7XG4gIHZhciB0eXBlID0gbWltZVR5cGUubWF0Y2goL15cXHMqKFteO1xcc10qKSg/Ojt8XFxzfCQpLylbMV0udG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uc1t0eXBlXTtcbn07XG5cbi8vIERlZmF1bHQgaW5zdGFuY2VcbnZhciBtaW1lID0gbmV3IE1pbWUoKTtcblxuLy8gRGVmaW5lIGJ1aWx0LWluIHR5cGVzXG5taW1lLmRlZmluZShyZXF1aXJlKCcuL3R5cGVzLmpzb24nKSk7XG5cbi8vIERlZmF1bHQgdHlwZVxubWltZS5kZWZhdWx0X3R5cGUgPSBtaW1lLmxvb2t1cCgnYmluJyk7XG5cbi8vXG4vLyBBZGRpdGlvbmFsIEFQSSBzcGVjaWZpYyB0byB0aGUgZGVmYXVsdCBpbnN0YW5jZVxuLy9cblxubWltZS5NaW1lID0gTWltZTtcblxuLyoqXG4gKiBMb29rdXAgYSBjaGFyc2V0IGJhc2VkIG9uIG1pbWUgdHlwZS5cbiAqL1xubWltZS5jaGFyc2V0cyA9IHtcbiAgbG9va3VwOiBmdW5jdGlvbihtaW1lVHlwZSwgZmFsbGJhY2spIHtcbiAgICAvLyBBc3N1bWUgdGV4dCB0eXBlcyBhcmUgdXRmOFxuICAgIHJldHVybiAoL150ZXh0XFwvfF5hcHBsaWNhdGlvblxcLyhqYXZhc2NyaXB0fGpzb24pLykudGVzdChtaW1lVHlwZSkgPyAnVVRGLTgnIDogZmFsbGJhY2s7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbWltZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9taW1lL21pbWUuanNcbi8vIG1vZHVsZSBpZCA9IDE2OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHtcImFwcGxpY2F0aW9uL2FuZHJldy1pbnNldFwiOltcImV6XCJdLFwiYXBwbGljYXRpb24vYXBwbGl4d2FyZVwiOltcImF3XCJdLFwiYXBwbGljYXRpb24vYXRvbSt4bWxcIjpbXCJhdG9tXCJdLFwiYXBwbGljYXRpb24vYXRvbWNhdCt4bWxcIjpbXCJhdG9tY2F0XCJdLFwiYXBwbGljYXRpb24vYXRvbXN2Yyt4bWxcIjpbXCJhdG9tc3ZjXCJdLFwiYXBwbGljYXRpb24vYmRvY1wiOltcImJkb2NcIl0sXCJhcHBsaWNhdGlvbi9jY3htbCt4bWxcIjpbXCJjY3htbFwiXSxcImFwcGxpY2F0aW9uL2NkbWktY2FwYWJpbGl0eVwiOltcImNkbWlhXCJdLFwiYXBwbGljYXRpb24vY2RtaS1jb250YWluZXJcIjpbXCJjZG1pY1wiXSxcImFwcGxpY2F0aW9uL2NkbWktZG9tYWluXCI6W1wiY2RtaWRcIl0sXCJhcHBsaWNhdGlvbi9jZG1pLW9iamVjdFwiOltcImNkbWlvXCJdLFwiYXBwbGljYXRpb24vY2RtaS1xdWV1ZVwiOltcImNkbWlxXCJdLFwiYXBwbGljYXRpb24vY3Utc2VlbWVcIjpbXCJjdVwiXSxcImFwcGxpY2F0aW9uL2Rhc2greG1sXCI6W1wibXBkXCJdLFwiYXBwbGljYXRpb24vZGF2bW91bnQreG1sXCI6W1wiZGF2bW91bnRcIl0sXCJhcHBsaWNhdGlvbi9kb2Nib29rK3htbFwiOltcImRia1wiXSxcImFwcGxpY2F0aW9uL2Rzc2MrZGVyXCI6W1wiZHNzY1wiXSxcImFwcGxpY2F0aW9uL2Rzc2MreG1sXCI6W1wieGRzc2NcIl0sXCJhcHBsaWNhdGlvbi9lY21hc2NyaXB0XCI6W1wiZWNtYVwiXSxcImFwcGxpY2F0aW9uL2VtbWEreG1sXCI6W1wiZW1tYVwiXSxcImFwcGxpY2F0aW9uL2VwdWIremlwXCI6W1wiZXB1YlwiXSxcImFwcGxpY2F0aW9uL2V4aVwiOltcImV4aVwiXSxcImFwcGxpY2F0aW9uL2ZvbnQtdGRwZnJcIjpbXCJwZnJcIl0sXCJhcHBsaWNhdGlvbi9mb250LXdvZmZcIjpbXCJ3b2ZmXCJdLFwiYXBwbGljYXRpb24vZm9udC13b2ZmMlwiOltcIndvZmYyXCJdLFwiYXBwbGljYXRpb24vZ2VvK2pzb25cIjpbXCJnZW9qc29uXCJdLFwiYXBwbGljYXRpb24vZ21sK3htbFwiOltcImdtbFwiXSxcImFwcGxpY2F0aW9uL2dweCt4bWxcIjpbXCJncHhcIl0sXCJhcHBsaWNhdGlvbi9neGZcIjpbXCJneGZcIl0sXCJhcHBsaWNhdGlvbi9nemlwXCI6W1wiZ3pcIl0sXCJhcHBsaWNhdGlvbi9oeXBlcnN0dWRpb1wiOltcInN0a1wiXSxcImFwcGxpY2F0aW9uL2lua21sK3htbFwiOltcImlua1wiLFwiaW5rbWxcIl0sXCJhcHBsaWNhdGlvbi9pcGZpeFwiOltcImlwZml4XCJdLFwiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlXCI6W1wiamFyXCIsXCJ3YXJcIixcImVhclwiXSxcImFwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3RcIjpbXCJzZXJcIl0sXCJhcHBsaWNhdGlvbi9qYXZhLXZtXCI6W1wiY2xhc3NcIl0sXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCI6W1wianNcIixcIm1qc1wiXSxcImFwcGxpY2F0aW9uL2pzb25cIjpbXCJqc29uXCIsXCJtYXBcIl0sXCJhcHBsaWNhdGlvbi9qc29uNVwiOltcImpzb241XCJdLFwiYXBwbGljYXRpb24vanNvbm1sK2pzb25cIjpbXCJqc29ubWxcIl0sXCJhcHBsaWNhdGlvbi9sZCtqc29uXCI6W1wianNvbmxkXCJdLFwiYXBwbGljYXRpb24vbG9zdCt4bWxcIjpbXCJsb3N0eG1sXCJdLFwiYXBwbGljYXRpb24vbWFjLWJpbmhleDQwXCI6W1wiaHF4XCJdLFwiYXBwbGljYXRpb24vbWFjLWNvbXBhY3Rwcm9cIjpbXCJjcHRcIl0sXCJhcHBsaWNhdGlvbi9tYWRzK3htbFwiOltcIm1hZHNcIl0sXCJhcHBsaWNhdGlvbi9tYW5pZmVzdCtqc29uXCI6W1wid2VibWFuaWZlc3RcIl0sXCJhcHBsaWNhdGlvbi9tYXJjXCI6W1wibXJjXCJdLFwiYXBwbGljYXRpb24vbWFyY3htbCt4bWxcIjpbXCJtcmN4XCJdLFwiYXBwbGljYXRpb24vbWF0aGVtYXRpY2FcIjpbXCJtYVwiLFwibmJcIixcIm1iXCJdLFwiYXBwbGljYXRpb24vbWF0aG1sK3htbFwiOltcIm1hdGhtbFwiXSxcImFwcGxpY2F0aW9uL21ib3hcIjpbXCJtYm94XCJdLFwiYXBwbGljYXRpb24vbWVkaWFzZXJ2ZXJjb250cm9sK3htbFwiOltcIm1zY21sXCJdLFwiYXBwbGljYXRpb24vbWV0YWxpbmsreG1sXCI6W1wibWV0YWxpbmtcIl0sXCJhcHBsaWNhdGlvbi9tZXRhbGluazQreG1sXCI6W1wibWV0YTRcIl0sXCJhcHBsaWNhdGlvbi9tZXRzK3htbFwiOltcIm1ldHNcIl0sXCJhcHBsaWNhdGlvbi9tb2RzK3htbFwiOltcIm1vZHNcIl0sXCJhcHBsaWNhdGlvbi9tcDIxXCI6W1wibTIxXCIsXCJtcDIxXCJdLFwiYXBwbGljYXRpb24vbXA0XCI6W1wibXA0c1wiLFwibTRwXCJdLFwiYXBwbGljYXRpb24vbXN3b3JkXCI6W1wiZG9jXCIsXCJkb3RcIl0sXCJhcHBsaWNhdGlvbi9teGZcIjpbXCJteGZcIl0sXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjpbXCJiaW5cIixcImRtc1wiLFwibHJmXCIsXCJtYXJcIixcInNvXCIsXCJkaXN0XCIsXCJkaXN0elwiLFwicGtnXCIsXCJicGtcIixcImR1bXBcIixcImVsY1wiLFwiZGVwbG95XCIsXCJleGVcIixcImRsbFwiLFwiZGViXCIsXCJkbWdcIixcImlzb1wiLFwiaW1nXCIsXCJtc2lcIixcIm1zcFwiLFwibXNtXCIsXCJidWZmZXJcIl0sXCJhcHBsaWNhdGlvbi9vZGFcIjpbXCJvZGFcIl0sXCJhcHBsaWNhdGlvbi9vZWJwcy1wYWNrYWdlK3htbFwiOltcIm9wZlwiXSxcImFwcGxpY2F0aW9uL29nZ1wiOltcIm9neFwiXSxcImFwcGxpY2F0aW9uL29tZG9jK3htbFwiOltcIm9tZG9jXCJdLFwiYXBwbGljYXRpb24vb25lbm90ZVwiOltcIm9uZXRvY1wiLFwib25ldG9jMlwiLFwib25ldG1wXCIsXCJvbmVwa2dcIl0sXCJhcHBsaWNhdGlvbi9veHBzXCI6W1wib3hwc1wiXSxcImFwcGxpY2F0aW9uL3BhdGNoLW9wcy1lcnJvcit4bWxcIjpbXCJ4ZXJcIl0sXCJhcHBsaWNhdGlvbi9wZGZcIjpbXCJwZGZcIl0sXCJhcHBsaWNhdGlvbi9wZ3AtZW5jcnlwdGVkXCI6W1wicGdwXCJdLFwiYXBwbGljYXRpb24vcGdwLXNpZ25hdHVyZVwiOltcImFzY1wiLFwic2lnXCJdLFwiYXBwbGljYXRpb24vcGljcy1ydWxlc1wiOltcInByZlwiXSxcImFwcGxpY2F0aW9uL3BrY3MxMFwiOltcInAxMFwiXSxcImFwcGxpY2F0aW9uL3BrY3M3LW1pbWVcIjpbXCJwN21cIixcInA3Y1wiXSxcImFwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZVwiOltcInA3c1wiXSxcImFwcGxpY2F0aW9uL3BrY3M4XCI6W1wicDhcIl0sXCJhcHBsaWNhdGlvbi9wa2l4LWF0dHItY2VydFwiOltcImFjXCJdLFwiYXBwbGljYXRpb24vcGtpeC1jZXJ0XCI6W1wiY2VyXCJdLFwiYXBwbGljYXRpb24vcGtpeC1jcmxcIjpbXCJjcmxcIl0sXCJhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGhcIjpbXCJwa2lwYXRoXCJdLFwiYXBwbGljYXRpb24vcGtpeGNtcFwiOltcInBraVwiXSxcImFwcGxpY2F0aW9uL3Bscyt4bWxcIjpbXCJwbHNcIl0sXCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0XCI6W1wiYWlcIixcImVwc1wiLFwicHNcIl0sXCJhcHBsaWNhdGlvbi9wcnMuY3d3XCI6W1wiY3d3XCJdLFwiYXBwbGljYXRpb24vcHNrYyt4bWxcIjpbXCJwc2tjeG1sXCJdLFwiYXBwbGljYXRpb24vcmRmK3htbFwiOltcInJkZlwiXSxcImFwcGxpY2F0aW9uL3JlZ2luZm8reG1sXCI6W1wicmlmXCJdLFwiYXBwbGljYXRpb24vcmVsYXgtbmctY29tcGFjdC1zeW50YXhcIjpbXCJybmNcIl0sXCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cyt4bWxcIjpbXCJybFwiXSxcImFwcGxpY2F0aW9uL3Jlc291cmNlLWxpc3RzLWRpZmYreG1sXCI6W1wicmxkXCJdLFwiYXBwbGljYXRpb24vcmxzLXNlcnZpY2VzK3htbFwiOltcInJzXCJdLFwiYXBwbGljYXRpb24vcnBraS1naG9zdGJ1c3RlcnNcIjpbXCJnYnJcIl0sXCJhcHBsaWNhdGlvbi9ycGtpLW1hbmlmZXN0XCI6W1wibWZ0XCJdLFwiYXBwbGljYXRpb24vcnBraS1yb2FcIjpbXCJyb2FcIl0sXCJhcHBsaWNhdGlvbi9yc2QreG1sXCI6W1wicnNkXCJdLFwiYXBwbGljYXRpb24vcnNzK3htbFwiOltcInJzc1wiXSxcImFwcGxpY2F0aW9uL3J0ZlwiOltcInJ0ZlwiXSxcImFwcGxpY2F0aW9uL3NibWwreG1sXCI6W1wic2JtbFwiXSxcImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdFwiOltcInNjcVwiXSxcImFwcGxpY2F0aW9uL3NjdnAtY3YtcmVzcG9uc2VcIjpbXCJzY3NcIl0sXCJhcHBsaWNhdGlvbi9zY3ZwLXZwLXJlcXVlc3RcIjpbXCJzcHFcIl0sXCJhcHBsaWNhdGlvbi9zY3ZwLXZwLXJlc3BvbnNlXCI6W1wic3BwXCJdLFwiYXBwbGljYXRpb24vc2RwXCI6W1wic2RwXCJdLFwiYXBwbGljYXRpb24vc2V0LXBheW1lbnQtaW5pdGlhdGlvblwiOltcInNldHBheVwiXSxcImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb24taW5pdGlhdGlvblwiOltcInNldHJlZ1wiXSxcImFwcGxpY2F0aW9uL3NoZit4bWxcIjpbXCJzaGZcIl0sXCJhcHBsaWNhdGlvbi9zbWlsK3htbFwiOltcInNtaVwiLFwic21pbFwiXSxcImFwcGxpY2F0aW9uL3NwYXJxbC1xdWVyeVwiOltcInJxXCJdLFwiYXBwbGljYXRpb24vc3BhcnFsLXJlc3VsdHMreG1sXCI6W1wic3J4XCJdLFwiYXBwbGljYXRpb24vc3Jnc1wiOltcImdyYW1cIl0sXCJhcHBsaWNhdGlvbi9zcmdzK3htbFwiOltcImdyeG1sXCJdLFwiYXBwbGljYXRpb24vc3J1K3htbFwiOltcInNydVwiXSxcImFwcGxpY2F0aW9uL3NzZGwreG1sXCI6W1wic3NkbFwiXSxcImFwcGxpY2F0aW9uL3NzbWwreG1sXCI6W1wic3NtbFwiXSxcImFwcGxpY2F0aW9uL3RlaSt4bWxcIjpbXCJ0ZWlcIixcInRlaWNvcnB1c1wiXSxcImFwcGxpY2F0aW9uL3RocmF1ZCt4bWxcIjpbXCJ0ZmlcIl0sXCJhcHBsaWNhdGlvbi90aW1lc3RhbXBlZC1kYXRhXCI6W1widHNkXCJdLFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LWxhcmdlXCI6W1wicGxiXCJdLFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXNtYWxsXCI6W1wicHNiXCJdLFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXZhclwiOltcInB2YlwiXSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi50Y2FwXCI6W1widGNhcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC4zbS5wb3N0LWl0LW5vdGVzXCI6W1wicHduXCJdLFwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuYXNvXCI6W1wiYXNvXCJdLFwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuaW1wXCI6W1wiaW1wXCJdLFwiYXBwbGljYXRpb24vdm5kLmFjdWNvYm9sXCI6W1wiYWN1XCJdLFwiYXBwbGljYXRpb24vdm5kLmFjdWNvcnBcIjpbXCJhdGNcIixcImFjdXRjXCJdLFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmFpci1hcHBsaWNhdGlvbi1pbnN0YWxsZXItcGFja2FnZSt6aXBcIjpbXCJhaXJcIl0sXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZm9ybXNjZW50cmFsLmZjZHRcIjpbXCJmY2R0XCJdLFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZ4cFwiOltcImZ4cFwiLFwiZnhwbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZHAreG1sXCI6W1wieGRwXCJdLFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhmZGZcIjpbXCJ4ZmRmXCJdLFwiYXBwbGljYXRpb24vdm5kLmFoZWFkLnNwYWNlXCI6W1wiYWhlYWRcIl0sXCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpmXCI6W1wiYXpmXCJdLFwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6c1wiOltcImF6c1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2tcIjpbXCJhendcIl0sXCJhcHBsaWNhdGlvbi92bmQuYW1lcmljYW5keW5hbWljcy5hY2NcIjpbXCJhY2NcIl0sXCJhcHBsaWNhdGlvbi92bmQuYW1pZ2EuYW1pXCI6W1wiYW1pXCJdLFwiYXBwbGljYXRpb24vdm5kLmFuZHJvaWQucGFja2FnZS1hcmNoaXZlXCI6W1wiYXBrXCJdLFwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1jZXJ0aWZpY2F0ZS1pc3N1ZS1pbml0aWF0aW9uXCI6W1wiY2lpXCJdLFwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1mdW5kcy10cmFuc2Zlci1pbml0aWF0aW9uXCI6W1wiZnRpXCJdLFwiYXBwbGljYXRpb24vdm5kLmFudGl4LmdhbWUtY29tcG9uZW50XCI6W1wiYXR4XCJdLFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLmluc3RhbGxlcit4bWxcIjpbXCJtcGtnXCJdLFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmxcIjpbXCJtM3U4XCJdLFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLnBrcGFzc1wiOltcInBrcGFzc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5hcmlzdGFuZXR3b3Jrcy5zd2lcIjpbXCJzd2lcIl0sXCJhcHBsaWNhdGlvbi92bmQuYXN0cmFlYS1zb2Z0d2FyZS5pb3RhXCI6W1wiaW90YVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hdWRpb2dyYXBoXCI6W1wiYWVwXCJdLFwiYXBwbGljYXRpb24vdm5kLmJsdWVpY2UubXVsdGlwYXNzXCI6W1wibXBtXCJdLFwiYXBwbGljYXRpb24vdm5kLmJtaVwiOltcImJtaVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5idXNpbmVzc29iamVjdHNcIjpbXCJyZXBcIl0sXCJhcHBsaWNhdGlvbi92bmQuY2hlbWRyYXcreG1sXCI6W1wiY2R4bWxcIl0sXCJhcHBsaWNhdGlvbi92bmQuY2hpcG51dHMua2FyYW9rZS1tbWRcIjpbXCJtbWRcIl0sXCJhcHBsaWNhdGlvbi92bmQuY2luZGVyZWxsYVwiOltcImNkeVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5jbGF5bW9yZVwiOltcImNsYVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5jbG9hbnRvLnJwOVwiOltcInJwOVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwXCI6W1wiYzRnXCIsXCJjNGRcIixcImM0ZlwiLFwiYzRwXCIsXCJjNHVcIl0sXCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZ1wiOltcImMxMWFtY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5jbHVldHJ1c3QuY2FydG9tb2JpbGUtY29uZmlnLXBrZ1wiOltcImMxMWFtelwiXSxcImFwcGxpY2F0aW9uL3ZuZC5jb21tb25zcGFjZVwiOltcImNzcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5jb250YWN0LmNtc2dcIjpbXCJjZGJjbXNnXCJdLFwiYXBwbGljYXRpb24vdm5kLmNvc21vY2FsbGVyXCI6W1wiY21jXCJdLFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXJcIjpbXCJjbGt4XCJdLFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIua2V5Ym9hcmRcIjpbXCJjbGtrXCJdLFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIucGFsZXR0ZVwiOltcImNsa3BcIl0sXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci50ZW1wbGF0ZVwiOltcImNsa3RcIl0sXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci53b3JkYmFua1wiOltcImNsa3dcIl0sXCJhcHBsaWNhdGlvbi92bmQuY3JpdGljYWx0b29scy53YnMreG1sXCI6W1wid2JzXCJdLFwiYXBwbGljYXRpb24vdm5kLmN0Yy1wb3NtbFwiOltcInBtbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBwZFwiOltcInBwZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5jdXJsLmNhclwiOltcImNhclwiXSxcImFwcGxpY2F0aW9uL3ZuZC5jdXJsLnBjdXJsXCI6W1wicGN1cmxcIl0sXCJhcHBsaWNhdGlvbi92bmQuZGFydFwiOltcImRhcnRcIl0sXCJhcHBsaWNhdGlvbi92bmQuZGF0YS12aXNpb24ucmR6XCI6W1wicmR6XCJdLFwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YVwiOltcInV2ZlwiLFwidXZ2ZlwiLFwidXZkXCIsXCJ1dnZkXCJdLFwiYXBwbGljYXRpb24vdm5kLmRlY2UudHRtbCt4bWxcIjpbXCJ1dnRcIixcInV2dnRcIl0sXCJhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZFwiOltcInV2eFwiLFwidXZ2eFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcFwiOltcInV2elwiLFwidXZ2elwiXSxcImFwcGxpY2F0aW9uL3ZuZC5kZW5vdm8uZmNzZWxheW91dC1saW5rXCI6W1wiZmVfbGF1bmNoXCJdLFwiYXBwbGljYXRpb24vdm5kLmRuYVwiOltcImRuYVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5kb2xieS5tbHBcIjpbXCJtbHBcIl0sXCJhcHBsaWNhdGlvbi92bmQuZHBncmFwaFwiOltcImRwZ1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5kcmVhbWZhY3RvcnlcIjpbXCJkZmFjXCJdLFwiYXBwbGljYXRpb24vdm5kLmRzLWtleXBvaW50XCI6W1wia3B4eFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0XCI6W1wiYWl0XCJdLFwiYXBwbGljYXRpb24vdm5kLmR2Yi5zZXJ2aWNlXCI6W1wic3ZjXCJdLFwiYXBwbGljYXRpb24vdm5kLmR5bmFnZW9cIjpbXCJnZW9cIl0sXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmNoYXJ0XCI6W1wibWFnXCJdLFwiYXBwbGljYXRpb24vdm5kLmVubGl2ZW5cIjpbXCJubWxcIl0sXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uZXNmXCI6W1wiZXNmXCJdLFwiYXBwbGljYXRpb24vdm5kLmVwc29uLm1zZlwiOltcIm1zZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5xdWlja2FuaW1lXCI6W1wicWFtXCJdLFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnNhbHRcIjpbXCJzbHRcIl0sXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc3NmXCI6W1wic3NmXCJdLFwiYXBwbGljYXRpb24vdm5kLmVzemlnbm8zK3htbFwiOltcImVzM1wiLFwiZXQzXCJdLFwiYXBwbGljYXRpb24vdm5kLmV6cGl4LWFsYnVtXCI6W1wiZXoyXCJdLFwiYXBwbGljYXRpb24vdm5kLmV6cGl4LXBhY2thZ2VcIjpbXCJlejNcIl0sXCJhcHBsaWNhdGlvbi92bmQuZmRmXCI6W1wiZmRmXCJdLFwiYXBwbGljYXRpb24vdm5kLmZkc24ubXNlZWRcIjpbXCJtc2VlZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5mZHNuLnNlZWRcIjpbXCJzZWVkXCIsXCJkYXRhbGVzc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5mbG9ncmFwaGl0XCI6W1wiZ3BoXCJdLFwiYXBwbGljYXRpb24vdm5kLmZsdXh0aW1lLmNsaXBcIjpbXCJmdGNcIl0sXCJhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlclwiOltcImZtXCIsXCJmcmFtZVwiLFwibWFrZXJcIixcImJvb2tcIl0sXCJhcHBsaWNhdGlvbi92bmQuZnJvZ2Fucy5mbmNcIjpbXCJmbmNcIl0sXCJhcHBsaWNhdGlvbi92bmQuZnJvZ2Fucy5sdGZcIjpbXCJsdGZcIl0sXCJhcHBsaWNhdGlvbi92bmQuZnNjLndlYmxhdW5jaFwiOltcImZzY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzXCI6W1wib2FzXCJdLFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMyXCI6W1wib2EyXCJdLFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMzXCI6W1wib2EzXCJdLFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNncFwiOltcImZnNVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzcHJzXCI6W1wiYmgyXCJdLFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGRcIjpbXCJkZGRcIl0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrc1wiOltcInhkd1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmJpbmRlclwiOltcInhiZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5mdXp6eXNoZWV0XCI6W1wiZnpzXCJdLFwiYXBwbGljYXRpb24vdm5kLmdlbm9tYXRpeC50dXhlZG9cIjpbXCJ0eGRcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEuZmlsZVwiOltcImdnYlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS50b29sXCI6W1wiZ2d0XCJdLFwiYXBwbGljYXRpb24vdm5kLmdlb21ldHJ5LWV4cGxvcmVyXCI6W1wiZ2V4XCIsXCJncmVcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvbmV4dFwiOltcImd4dFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5nZW9wbGFuXCI6W1wiZzJ3XCJdLFwiYXBwbGljYXRpb24vdm5kLmdlb3NwYWNlXCI6W1wiZzN3XCJdLFwiYXBwbGljYXRpb24vdm5kLmdteFwiOltcImdteFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5kb2N1bWVudFwiOltcImdkb2NcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMucHJlc2VudGF0aW9uXCI6W1wiZ3NsaWRlc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5zcHJlYWRzaGVldFwiOltcImdzaGVldFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua21sK3htbFwiOltcImttbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua216XCI6W1wia216XCJdLFwiYXBwbGljYXRpb24vdm5kLmdyYWZlcVwiOltcImdxZlwiLFwiZ3FzXCJdLFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50XCI6W1wiZ2FjXCJdLFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1oZWxwXCI6W1wiZ2hmXCJdLFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1pZGVudGl0eS1tZXNzYWdlXCI6W1wiZ2ltXCJdLFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1pbmplY3RvclwiOltcImdydlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC1tZXNzYWdlXCI6W1wiZ3RtXCJdLFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLXRlbXBsYXRlXCI6W1widHBsXCJdLFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS12Y2FyZFwiOltcInZjZ1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5oYWwreG1sXCI6W1wiaGFsXCJdLFwiYXBwbGljYXRpb24vdm5kLmhhbmRoZWxkLWVudGVydGFpbm1lbnQreG1sXCI6W1wiem1tXCJdLFwiYXBwbGljYXRpb24vdm5kLmhiY2lcIjpbXCJoYmNpXCJdLFwiYXBwbGljYXRpb24vdm5kLmhoZS5sZXNzb24tcGxheWVyXCI6W1wibGVzXCJdLFwiYXBwbGljYXRpb24vdm5kLmhwLWhwZ2xcIjpbXCJocGdsXCJdLFwiYXBwbGljYXRpb24vdm5kLmhwLWhwaWRcIjpbXCJocGlkXCJdLFwiYXBwbGljYXRpb24vdm5kLmhwLWhwc1wiOltcImhwc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1qbHl0XCI6W1wiamx0XCJdLFwiYXBwbGljYXRpb24vdm5kLmhwLXBjbFwiOltcInBjbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1wY2x4bFwiOltcInBjbHhsXCJdLFwiYXBwbGljYXRpb24vdm5kLmh5ZHJvc3RhdGl4LnNvZi1kYXRhXCI6W1wic2ZkLWhkc3R4XCJdLFwiYXBwbGljYXRpb24vdm5kLmlibS5taW5pcGF5XCI6W1wibXB5XCJdLFwiYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXBcIjpbXCJhZnBcIixcImxpc3RhZnBcIixcImxpc3QzODIwXCJdLFwiYXBwbGljYXRpb24vdm5kLmlibS5yaWdodHMtbWFuYWdlbWVudFwiOltcImlybVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pYm0uc2VjdXJlLWNvbnRhaW5lclwiOltcInNjXCJdLFwiYXBwbGljYXRpb24vdm5kLmljY3Byb2ZpbGVcIjpbXCJpY2NcIixcImljbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pZ2xvYWRlclwiOltcImlnbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnBcIjpbXCJpdnBcIl0sXCJhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZ1XCI6W1wiaXZ1XCJdLFwiYXBwbGljYXRpb24vdm5kLmluc29ycy5pZ21cIjpbXCJpZ21cIl0sXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldFwiOltcInhwd1wiLFwieHB4XCJdLFwiYXBwbGljYXRpb24vdm5kLmludGVyZ2VvXCI6W1wiaTJnXCJdLFwiYXBwbGljYXRpb24vdm5kLmludHUucWJvXCI6W1wicWJvXCJdLFwiYXBwbGljYXRpb24vdm5kLmludHUucWZ4XCI6W1wicWZ4XCJdLFwiYXBwbGljYXRpb24vdm5kLmlwdW5wbHVnZ2VkLnJjcHJvZmlsZVwiOltcInJjcHJvZmlsZVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pcmVwb3NpdG9yeS5wYWNrYWdlK3htbFwiOltcImlycFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pcy14cHJcIjpbXCJ4cHJcIl0sXCJhcHBsaWNhdGlvbi92bmQuaXNhYy5mY3NcIjpbXCJmY3NcIl0sXCJhcHBsaWNhdGlvbi92bmQuamFtXCI6W1wiamFtXCJdLFwiYXBwbGljYXRpb24vdm5kLmpjcC5qYXZhbWUubWlkbGV0LXJtc1wiOltcInJtc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5qaXNwXCI6W1wiamlzcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5qb29zdC5qb2RhLWFyY2hpdmVcIjpbXCJqb2RhXCJdLFwiYXBwbGljYXRpb24vdm5kLmthaG9vdHpcIjpbXCJrdHpcIixcImt0clwiXSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2FyYm9uXCI6W1wia2FyYm9uXCJdLFwiYXBwbGljYXRpb24vdm5kLmtkZS5rY2hhcnRcIjpbXCJjaHJ0XCJdLFwiYXBwbGljYXRpb24vdm5kLmtkZS5rZm9ybXVsYVwiOltcImtmb1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2l2aW9cIjpbXCJmbHdcIl0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmtvbnRvdXJcIjpbXCJrb25cIl0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmtwcmVzZW50ZXJcIjpbXCJrcHJcIixcImtwdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua3NwcmVhZFwiOltcImtzcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua3dvcmRcIjpbXCJrd2RcIixcImt3dFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5rZW5hbWVhYXBwXCI6W1wiaHRrZVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5raWRzcGlyYXRpb25cIjpbXCJraWFcIl0sXCJhcHBsaWNhdGlvbi92bmQua2luYXJcIjpbXCJrbmVcIixcImtucFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5rb2FuXCI6W1wic2twXCIsXCJza2RcIixcInNrdFwiLFwic2ttXCJdLFwiYXBwbGljYXRpb24vdm5kLmtvZGFrLWRlc2NyaXB0b3JcIjpbXCJzc2VcIl0sXCJhcHBsaWNhdGlvbi92bmQubGFzLmxhcyt4bWxcIjpbXCJsYXN4bWxcIl0sXCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZGVza3RvcFwiOltcImxiZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5leGNoYW5nZSt4bWxcIjpbXCJsYmVcIl0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTNcIjpbXCIxMjNcIl0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtYXBwcm9hY2hcIjpbXCJhcHJcIl0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtZnJlZWxhbmNlXCI6W1wicHJlXCJdLFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLW5vdGVzXCI6W1wibnNmXCJdLFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLW9yZ2FuaXplclwiOltcIm9yZ1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1zY3JlZW5jYW1cIjpbXCJzY21cIl0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtd29yZHByb1wiOltcImx3cFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tYWNwb3J0cy5wb3J0cGtnXCI6W1wicG9ydHBrZ1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5tY2RcIjpbXCJtY2RcIl0sXCJhcHBsaWNhdGlvbi92bmQubWVkY2FsY2RhdGFcIjpbXCJtYzFcIl0sXCJhcHBsaWNhdGlvbi92bmQubWVkaWFzdGF0aW9uLmNka2V5XCI6W1wiY2RrZXlcIl0sXCJhcHBsaWNhdGlvbi92bmQubWZlclwiOltcIm13ZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tZm1wXCI6W1wibWZtXCJdLFwiYXBwbGljYXRpb24vdm5kLm1pY3JvZ3JhZnguZmxvXCI6W1wiZmxvXCJdLFwiYXBwbGljYXRpb24vdm5kLm1pY3JvZ3JhZnguaWd4XCI6W1wiaWd4XCJdLFwiYXBwbGljYXRpb24vdm5kLm1pZlwiOltcIm1pZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGFmXCI6W1wiZGFmXCJdLFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kaXNcIjpbXCJkaXNcIl0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1ia1wiOltcIm1ia1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXF5XCI6W1wibXF5XCJdLFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tc2xcIjpbXCJtc2xcIl0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLnBsY1wiOltcInBsY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMudHhmXCI6W1widHhmXCJdLFwiYXBwbGljYXRpb24vdm5kLm1vcGh1bi5hcHBsaWNhdGlvblwiOltcIm1wblwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uY2VydGlmaWNhdGVcIjpbXCJtcGNcIl0sXCJhcHBsaWNhdGlvbi92bmQubW96aWxsYS54dWwreG1sXCI6W1wieHVsXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLWFydGdhbHJ5XCI6W1wiY2lsXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLWNhYi1jb21wcmVzc2VkXCI6W1wiY2FiXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsXCI6W1wieGxzXCIsXCJ4bG1cIixcInhsYVwiLFwieGxjXCIsXCJ4bHRcIixcInhsd1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb2VuYWJsZWQuMTJcIjpbXCJ4bGFtXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb2VuYWJsZWQuMTJcIjpbXCJ4bHNiXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvZW5hYmxlZC4xMlwiOltcInhsc21cIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6W1wieGx0bVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0XCI6W1wiZW90XCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLWh0bWxoZWxwXCI6W1wiY2htXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLWltc1wiOltcImltc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1scm1cIjpbXCJscm1cIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNldGhlbWVcIjpbXCJ0aG14XCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLW91dGxvb2tcIjpbXCJtc2dcIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtcGtpLnNlY2NhdFwiOltcImNhdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc3RsXCI6W1wic3RsXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnRcIjpbXCJwcHRcIixcInBwc1wiLFwicG90XCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuYWRkaW4ubWFjcm9lbmFibGVkLjEyXCI6W1wicHBhbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb2VuYWJsZWQuMTJcIjpbXCJwcHRtXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGUubWFjcm9lbmFibGVkLjEyXCI6W1wic2xkbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlc2hvdy5tYWNyb2VuYWJsZWQuMTJcIjpbXCJwcHNtXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6W1wicG90bVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0XCI6W1wibXBwXCIsXCJtcHRcIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtd29yZC5kb2N1bWVudC5tYWNyb2VuYWJsZWQuMTJcIjpbXCJkb2NtXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6W1wiZG90bVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3Jrc1wiOltcIndwc1wiLFwid2tzXCIsXCJ3Y21cIixcIndkYlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13cGxcIjpbXCJ3cGxcIl0sXCJhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnRcIjpbXCJ4cHNcIl0sXCJhcHBsaWNhdGlvbi92bmQubXNlcVwiOltcIm1zZXFcIl0sXCJhcHBsaWNhdGlvbi92bmQubXVzaWNpYW5cIjpbXCJtdXNcIl0sXCJhcHBsaWNhdGlvbi92bmQubXV2ZWUuc3R5bGVcIjpbXCJtc3R5XCJdLFwiYXBwbGljYXRpb24vdm5kLm15bmZjXCI6W1widGFnbGV0XCJdLFwiYXBwbGljYXRpb24vdm5kLm5ldXJvbGFuZ3VhZ2Uubmx1XCI6W1wibmx1XCJdLFwiYXBwbGljYXRpb24vdm5kLm5pdGZcIjpbXCJudGZcIixcIm5pdGZcIl0sXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtZGlyZWN0b3J5XCI6W1wibm5kXCJdLFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LXNlYWxlclwiOltcIm5uc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC13ZWJcIjpbXCJubndcIl0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLmRhdGFcIjpbXCJuZ2RhdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2Uuc3ltYmlhbi5pbnN0YWxsXCI6W1wibi1nYWdlXCJdLFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnJhZGlvLXByZXNldFwiOltcInJwc3RcIl0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0c1wiOltcInJwc3NcIl0sXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZWRtXCI6W1wiZWRtXCJdLFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkeFwiOltcImVkeFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5leHRcIjpbXCJleHRcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmNoYXJ0XCI6W1wib2RjXCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydC10ZW1wbGF0ZVwiOltcIm90Y1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZGF0YWJhc2VcIjpbXCJvZGJcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGFcIjpbXCJvZGZcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGEtdGVtcGxhdGVcIjpbXCJvZGZ0XCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljc1wiOltcIm9kZ1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3MtdGVtcGxhdGVcIjpbXCJvdGdcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmltYWdlXCI6W1wib2RpXCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZS10ZW1wbGF0ZVwiOltcIm90aVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uXCI6W1wib2RwXCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24tdGVtcGxhdGVcIjpbXCJvdHBcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCI6W1wib2RzXCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldC10ZW1wbGF0ZVwiOltcIm90c1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiOltcIm9kdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC1tYXN0ZXJcIjpbXCJvZG1cIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtdGVtcGxhdGVcIjpbXCJvdHRcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtd2ViXCI6W1wib3RoXCJdLFwiYXBwbGljYXRpb24vdm5kLm9scGMtc3VnYXJcIjpbXCJ4b1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGQyK3htbFwiOltcImRkMlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVub2ZmaWNlb3JnLmV4dGVuc2lvblwiOltcIm94dFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb25cIjpbXCJwcHR4XCJdLFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlXCI6W1wic2xkeFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3dcIjpbXCJwcHN4XCJdLFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRlbXBsYXRlXCI6W1wicG90eFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCI6W1wieGxzeFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlXCI6W1wieGx0eFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCI6W1wiZG9jeFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlXCI6W1wiZG90eFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vc2dlby5tYXBndWlkZS5wYWNrYWdlXCI6W1wibWdwXCJdLFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuZHBcIjpbXCJkcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLnN1YnN5c3RlbVwiOltcImVzYVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5wYWxtXCI6W1wicGRiXCIsXCJwcWFcIixcIm9wcmNcIl0sXCJhcHBsaWNhdGlvbi92bmQucGF3YWFmaWxlXCI6W1wicGF3XCJdLFwiYXBwbGljYXRpb24vdm5kLnBnLmZvcm1hdFwiOltcInN0clwiXSxcImFwcGxpY2F0aW9uL3ZuZC5wZy5vc2FzbGlcIjpbXCJlaTZcIl0sXCJhcHBsaWNhdGlvbi92bmQucGljc2VsXCI6W1wiZWZpZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5wbWkud2lkZ2V0XCI6W1wid2dcIl0sXCJhcHBsaWNhdGlvbi92bmQucG9ja2V0bGVhcm5cIjpbXCJwbGZcIl0sXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNlwiOltcInBiZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5wcmV2aWV3c3lzdGVtcy5ib3hcIjpbXCJib3hcIl0sXCJhcHBsaWNhdGlvbi92bmQucHJvdGV1cy5tYWdhemluZVwiOltcIm1nelwiXSxcImFwcGxpY2F0aW9uL3ZuZC5wdWJsaXNoYXJlLWRlbHRhLXRyZWVcIjpbXCJxcHNcIl0sXCJhcHBsaWNhdGlvbi92bmQucHZpLnB0aWQxXCI6W1wicHRpZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzc1wiOltcInF4ZFwiLFwicXh0XCIsXCJxd2RcIixcInF3dFwiLFwicXhsXCIsXCJxeGJcIl0sXCJhcHBsaWNhdGlvbi92bmQucmVhbHZuYy5iZWRcIjpbXCJiZWRcIl0sXCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sXCI6W1wibXhsXCJdLFwiYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbCt4bWxcIjpbXCJtdXNpY3htbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5yaWcuY3J5cHRvbm90ZVwiOltcImNyeXB0b25vdGVcIl0sXCJhcHBsaWNhdGlvbi92bmQucmltLmNvZFwiOltcImNvZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWFcIjpbXCJybVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEtdmJyXCI6W1wicm12YlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5yb3V0ZTY2Lmxpbms2Nit4bWxcIjpbXCJsaW5rNjZcIl0sXCJhcHBsaWNhdGlvbi92bmQuc2FpbGluZ3RyYWNrZXIudHJhY2tcIjpbXCJzdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zZWVtYWlsXCI6W1wic2VlXCJdLFwiYXBwbGljYXRpb24vdm5kLnNlbWFcIjpbXCJzZW1hXCJdLFwiYXBwbGljYXRpb24vdm5kLnNlbWRcIjpbXCJzZW1kXCJdLFwiYXBwbGljYXRpb24vdm5kLnNlbWZcIjpbXCJzZW1mXCJdLFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm1kYXRhXCI6W1wiaWZtXCJdLFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm10ZW1wbGF0ZVwiOltcIml0cFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5pbnRlcmNoYW5nZVwiOltcImlpZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5wYWNrYWdlXCI6W1wiaXBrXCJdLFwiYXBwbGljYXRpb24vdm5kLnNpbXRlY2gtbWluZG1hcHBlclwiOltcInR3ZFwiLFwidHdkc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5zbWFmXCI6W1wibW1mXCJdLFwiYXBwbGljYXRpb24vdm5kLnNtYXJ0LnRlYWNoZXJcIjpbXCJ0ZWFjaGVyXCJdLFwiYXBwbGljYXRpb24vdm5kLnNvbGVudC5zZGttK3htbFwiOltcInNka21cIixcInNka2RcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3BvdGZpcmUuZHhwXCI6W1wiZHhwXCJdLFwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLnNmc1wiOltcInNmc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uY2FsY1wiOltcInNkY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uZHJhd1wiOltcInNkYVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uaW1wcmVzc1wiOltcInNkZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ubWF0aFwiOltcInNtZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyXCI6W1wic2R3XCIsXCJ2b3JcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlci1nbG9iYWxcIjpbXCJzZ2xcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3RlcG1hbmlhLnBhY2thZ2VcIjpbXCJzbXppcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEuc3RlcGNoYXJ0XCI6W1wic21cIl0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLndhZGwreG1sXCI6W1wid2FkbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmNhbGNcIjpbXCJzeGNcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjLnRlbXBsYXRlXCI6W1wic3RjXCJdLFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhd1wiOltcInN4ZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcudGVtcGxhdGVcIjpbXCJzdGRcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzXCI6W1wic3hpXCJdLFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzcy50ZW1wbGF0ZVwiOltcInN0aVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLm1hdGhcIjpbXCJzeG1cIl0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXJcIjpbXCJzeHdcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXIuZ2xvYmFsXCI6W1wic3hnXCJdLFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBsYXRlXCI6W1wic3R3XCJdLFwiYXBwbGljYXRpb24vdm5kLnN1cy1jYWxlbmRhclwiOltcInN1c1wiLFwic3VzcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdmRcIjpbXCJzdmRcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3ltYmlhbi5pbnN0YWxsXCI6W1wic2lzXCIsXCJzaXN4XCJdLFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbCt4bWxcIjpbXCJ4c21cIl0sXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3dieG1sXCI6W1wiYmRtXCJdLFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt4bWxcIjpbXCJ4ZG1cIl0sXCJhcHBsaWNhdGlvbi92bmQudGFvLmludGVudC1tb2R1bGUtYXJjaGl2ZVwiOltcInRhb1wiXSxcImFwcGxpY2F0aW9uL3ZuZC50Y3BkdW1wLnBjYXBcIjpbXCJwY2FwXCIsXCJjYXBcIixcImRtcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC50bW9iaWxlLWxpdmV0dlwiOltcInRtb1wiXSxcImFwcGxpY2F0aW9uL3ZuZC50cmlkLnRwdFwiOltcInRwdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC50cmlzY2FwZS5teHNcIjpbXCJteHNcIl0sXCJhcHBsaWNhdGlvbi92bmQudHJ1ZWFwcFwiOltcInRyYVwiXSxcImFwcGxpY2F0aW9uL3ZuZC51ZmRsXCI6W1widWZkXCIsXCJ1ZmRsXCJdLFwiYXBwbGljYXRpb24vdm5kLnVpcS50aGVtZVwiOltcInV0elwiXSxcImFwcGxpY2F0aW9uL3ZuZC51bWFqaW5cIjpbXCJ1bWpcIl0sXCJhcHBsaWNhdGlvbi92bmQudW5pdHlcIjpbXCJ1bml0eXdlYlwiXSxcImFwcGxpY2F0aW9uL3ZuZC51b21sK3htbFwiOltcInVvbWxcIl0sXCJhcHBsaWNhdGlvbi92bmQudmN4XCI6W1widmN4XCJdLFwiYXBwbGljYXRpb24vdm5kLnZpc2lvXCI6W1widnNkXCIsXCJ2c3RcIixcInZzc1wiLFwidnN3XCJdLFwiYXBwbGljYXRpb24vdm5kLnZpc2lvbmFyeVwiOltcInZpc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC52c2ZcIjpbXCJ2c2ZcIl0sXCJhcHBsaWNhdGlvbi92bmQud2FwLndieG1sXCI6W1wid2J4bWxcIl0sXCJhcHBsaWNhdGlvbi92bmQud2FwLndtbGNcIjpbXCJ3bWxjXCJdLFwiYXBwbGljYXRpb24vdm5kLndhcC53bWxzY3JpcHRjXCI6W1wid21sc2NcIl0sXCJhcHBsaWNhdGlvbi92bmQud2VidHVyYm9cIjpbXCJ3dGJcIl0sXCJhcHBsaWNhdGlvbi92bmQud29sZnJhbS5wbGF5ZXJcIjpbXCJuYnBcIl0sXCJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3RcIjpbXCJ3cGRcIl0sXCJhcHBsaWNhdGlvbi92bmQud3FkXCI6W1wid3FkXCJdLFwiYXBwbGljYXRpb24vdm5kLnd0LnN0ZlwiOltcInN0ZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC54YXJhXCI6W1wieGFyXCJdLFwiYXBwbGljYXRpb24vdm5kLnhmZGxcIjpbXCJ4ZmRsXCJdLFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1kaWNcIjpbXCJodmRcIl0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXNjcmlwdFwiOltcImh2c1wiXSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtdm9pY2VcIjpbXCJodnBcIl0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdFwiOltcIm9zZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0Lm9zZnB2Zyt4bWxcIjpbXCJvc2ZwdmdcIl0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtYXVkaW9cIjpbXCJzYWZcIl0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtcGhyYXNlXCI6W1wic3BmXCJdLFwiYXBwbGljYXRpb24vdm5kLnllbGxvd3JpdmVyLWN1c3RvbS1tZW51XCI6W1wiY21wXCJdLFwiYXBwbGljYXRpb24vdm5kLnp1bFwiOltcInppclwiLFwiemlyelwiXSxcImFwcGxpY2F0aW9uL3ZuZC56emF6ei5kZWNrK3htbFwiOltcInphelwiXSxcImFwcGxpY2F0aW9uL3ZvaWNleG1sK3htbFwiOltcInZ4bWxcIl0sXCJhcHBsaWNhdGlvbi93aWRnZXRcIjpbXCJ3Z3RcIl0sXCJhcHBsaWNhdGlvbi93aW5obHBcIjpbXCJobHBcIl0sXCJhcHBsaWNhdGlvbi93c2RsK3htbFwiOltcIndzZGxcIl0sXCJhcHBsaWNhdGlvbi93c3BvbGljeSt4bWxcIjpbXCJ3c3BvbGljeVwiXSxcImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZFwiOltcIjd6XCJdLFwiYXBwbGljYXRpb24veC1hYml3b3JkXCI6W1wiYWJ3XCJdLFwiYXBwbGljYXRpb24veC1hY2UtY29tcHJlc3NlZFwiOltcImFjZVwiXSxcImFwcGxpY2F0aW9uL3gtYXBwbGUtZGlza2ltYWdlXCI6W1wiZG1nXCJdLFwiYXBwbGljYXRpb24veC1hcmpcIjpbXCJhcmpcIl0sXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluXCI6W1wiYWFiXCIsXCJ4MzJcIixcInUzMlwiLFwidm94XCJdLFwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLW1hcFwiOltcImFhbVwiXSxcImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1zZWdcIjpbXCJhYXNcIl0sXCJhcHBsaWNhdGlvbi94LWJjcGlvXCI6W1wiYmNwaW9cIl0sXCJhcHBsaWNhdGlvbi94LWJkb2NcIjpbXCJiZG9jXCJdLFwiYXBwbGljYXRpb24veC1iaXR0b3JyZW50XCI6W1widG9ycmVudFwiXSxcImFwcGxpY2F0aW9uL3gtYmxvcmJcIjpbXCJibGJcIixcImJsb3JiXCJdLFwiYXBwbGljYXRpb24veC1iemlwXCI6W1wiYnpcIl0sXCJhcHBsaWNhdGlvbi94LWJ6aXAyXCI6W1wiYnoyXCIsXCJib3pcIl0sXCJhcHBsaWNhdGlvbi94LWNiclwiOltcImNiclwiLFwiY2JhXCIsXCJjYnRcIixcImNielwiLFwiY2I3XCJdLFwiYXBwbGljYXRpb24veC1jZGxpbmtcIjpbXCJ2Y2RcIl0sXCJhcHBsaWNhdGlvbi94LWNmcy1jb21wcmVzc2VkXCI6W1wiY2ZzXCJdLFwiYXBwbGljYXRpb24veC1jaGF0XCI6W1wiY2hhdFwiXSxcImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduXCI6W1wicGduXCJdLFwiYXBwbGljYXRpb24veC1jaHJvbWUtZXh0ZW5zaW9uXCI6W1wiY3J4XCJdLFwiYXBwbGljYXRpb24veC1jb2NvYVwiOltcImNjb1wiXSxcImFwcGxpY2F0aW9uL3gtY29uZmVyZW5jZVwiOltcIm5zY1wiXSxcImFwcGxpY2F0aW9uL3gtY3Bpb1wiOltcImNwaW9cIl0sXCJhcHBsaWNhdGlvbi94LWNzaFwiOltcImNzaFwiXSxcImFwcGxpY2F0aW9uL3gtZGViaWFuLXBhY2thZ2VcIjpbXCJkZWJcIixcInVkZWJcIl0sXCJhcHBsaWNhdGlvbi94LWRnYy1jb21wcmVzc2VkXCI6W1wiZGdjXCJdLFwiYXBwbGljYXRpb24veC1kaXJlY3RvclwiOltcImRpclwiLFwiZGNyXCIsXCJkeHJcIixcImNzdFwiLFwiY2N0XCIsXCJjeHRcIixcInczZFwiLFwiZmdkXCIsXCJzd2FcIl0sXCJhcHBsaWNhdGlvbi94LWRvb21cIjpbXCJ3YWRcIl0sXCJhcHBsaWNhdGlvbi94LWR0Ym5jeCt4bWxcIjpbXCJuY3hcIl0sXCJhcHBsaWNhdGlvbi94LWR0Ym9vayt4bWxcIjpbXCJkdGJcIl0sXCJhcHBsaWNhdGlvbi94LWR0YnJlc291cmNlK3htbFwiOltcInJlc1wiXSxcImFwcGxpY2F0aW9uL3gtZHZpXCI6W1wiZHZpXCJdLFwiYXBwbGljYXRpb24veC1lbnZveVwiOltcImV2eVwiXSxcImFwcGxpY2F0aW9uL3gtZXZhXCI6W1wiZXZhXCJdLFwiYXBwbGljYXRpb24veC1mb250LWJkZlwiOltcImJkZlwiXSxcImFwcGxpY2F0aW9uL3gtZm9udC1naG9zdHNjcmlwdFwiOltcImdzZlwiXSxcImFwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2ZcIjpbXCJwc2ZcIl0sXCJhcHBsaWNhdGlvbi94LWZvbnQtb3RmXCI6W1wib3RmXCJdLFwiYXBwbGljYXRpb24veC1mb250LXBjZlwiOltcInBjZlwiXSxcImFwcGxpY2F0aW9uL3gtZm9udC1zbmZcIjpbXCJzbmZcIl0sXCJhcHBsaWNhdGlvbi94LWZvbnQtdHRmXCI6W1widHRmXCIsXCJ0dGNcIl0sXCJhcHBsaWNhdGlvbi94LWZvbnQtdHlwZTFcIjpbXCJwZmFcIixcInBmYlwiLFwicGZtXCIsXCJhZm1cIl0sXCJhcHBsaWNhdGlvbi94LWZyZWVhcmNcIjpbXCJhcmNcIl0sXCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaFwiOltcInNwbFwiXSxcImFwcGxpY2F0aW9uL3gtZ2NhLWNvbXByZXNzZWRcIjpbXCJnY2FcIl0sXCJhcHBsaWNhdGlvbi94LWdsdWx4XCI6W1widWx4XCJdLFwiYXBwbGljYXRpb24veC1nbnVtZXJpY1wiOltcImdudW1lcmljXCJdLFwiYXBwbGljYXRpb24veC1ncmFtcHMteG1sXCI6W1wiZ3JhbXBzXCJdLFwiYXBwbGljYXRpb24veC1ndGFyXCI6W1wiZ3RhclwiXSxcImFwcGxpY2F0aW9uL3gtaGRmXCI6W1wiaGRmXCJdLFwiYXBwbGljYXRpb24veC1odHRwZC1waHBcIjpbXCJwaHBcIl0sXCJhcHBsaWNhdGlvbi94LWluc3RhbGwtaW5zdHJ1Y3Rpb25zXCI6W1wiaW5zdGFsbFwiXSxcImFwcGxpY2F0aW9uL3gtaXNvOTY2MC1pbWFnZVwiOltcImlzb1wiXSxcImFwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlLWRpZmZcIjpbXCJqYXJkaWZmXCJdLFwiYXBwbGljYXRpb24veC1qYXZhLWpubHAtZmlsZVwiOltcImpubHBcIl0sXCJhcHBsaWNhdGlvbi94LWxhdGV4XCI6W1wibGF0ZXhcIl0sXCJhcHBsaWNhdGlvbi94LWx1YS1ieXRlY29kZVwiOltcImx1YWNcIl0sXCJhcHBsaWNhdGlvbi94LWx6aC1jb21wcmVzc2VkXCI6W1wibHpoXCIsXCJsaGFcIl0sXCJhcHBsaWNhdGlvbi94LW1ha2VzZWxmXCI6W1wicnVuXCJdLFwiYXBwbGljYXRpb24veC1taWVcIjpbXCJtaWVcIl0sXCJhcHBsaWNhdGlvbi94LW1vYmlwb2NrZXQtZWJvb2tcIjpbXCJwcmNcIixcIm1vYmlcIl0sXCJhcHBsaWNhdGlvbi94LW1zLWFwcGxpY2F0aW9uXCI6W1wiYXBwbGljYXRpb25cIl0sXCJhcHBsaWNhdGlvbi94LW1zLXNob3J0Y3V0XCI6W1wibG5rXCJdLFwiYXBwbGljYXRpb24veC1tcy13bWRcIjpbXCJ3bWRcIl0sXCJhcHBsaWNhdGlvbi94LW1zLXdtelwiOltcIndtelwiXSxcImFwcGxpY2F0aW9uL3gtbXMteGJhcFwiOltcInhiYXBcIl0sXCJhcHBsaWNhdGlvbi94LW1zYWNjZXNzXCI6W1wibWRiXCJdLFwiYXBwbGljYXRpb24veC1tc2JpbmRlclwiOltcIm9iZFwiXSxcImFwcGxpY2F0aW9uL3gtbXNjYXJkZmlsZVwiOltcImNyZFwiXSxcImFwcGxpY2F0aW9uL3gtbXNjbGlwXCI6W1wiY2xwXCJdLFwiYXBwbGljYXRpb24veC1tc2Rvcy1wcm9ncmFtXCI6W1wiZXhlXCJdLFwiYXBwbGljYXRpb24veC1tc2Rvd25sb2FkXCI6W1wiZXhlXCIsXCJkbGxcIixcImNvbVwiLFwiYmF0XCIsXCJtc2lcIl0sXCJhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3XCI6W1wibXZiXCIsXCJtMTNcIixcIm0xNFwiXSxcImFwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZVwiOltcIndtZlwiLFwid216XCIsXCJlbWZcIixcImVtelwiXSxcImFwcGxpY2F0aW9uL3gtbXNtb25leVwiOltcIm1ueVwiXSxcImFwcGxpY2F0aW9uL3gtbXNwdWJsaXNoZXJcIjpbXCJwdWJcIl0sXCJhcHBsaWNhdGlvbi94LW1zc2NoZWR1bGVcIjpbXCJzY2RcIl0sXCJhcHBsaWNhdGlvbi94LW1zdGVybWluYWxcIjpbXCJ0cm1cIl0sXCJhcHBsaWNhdGlvbi94LW1zd3JpdGVcIjpbXCJ3cmlcIl0sXCJhcHBsaWNhdGlvbi94LW5ldGNkZlwiOltcIm5jXCIsXCJjZGZcIl0sXCJhcHBsaWNhdGlvbi94LW5zLXByb3h5LWF1dG9jb25maWdcIjpbXCJwYWNcIl0sXCJhcHBsaWNhdGlvbi94LW56YlwiOltcIm56YlwiXSxcImFwcGxpY2F0aW9uL3gtcGVybFwiOltcInBsXCIsXCJwbVwiXSxcImFwcGxpY2F0aW9uL3gtcGlsb3RcIjpbXCJwcmNcIixcInBkYlwiXSxcImFwcGxpY2F0aW9uL3gtcGtjczEyXCI6W1wicDEyXCIsXCJwZnhcIl0sXCJhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRpZmljYXRlc1wiOltcInA3YlwiLFwic3BjXCJdLFwiYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0cmVxcmVzcFwiOltcInA3clwiXSxcImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWRcIjpbXCJyYXJcIl0sXCJhcHBsaWNhdGlvbi94LXJlZGhhdC1wYWNrYWdlLW1hbmFnZXJcIjpbXCJycG1cIl0sXCJhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtc1wiOltcInJpc1wiXSxcImFwcGxpY2F0aW9uL3gtc2VhXCI6W1wic2VhXCJdLFwiYXBwbGljYXRpb24veC1zaFwiOltcInNoXCJdLFwiYXBwbGljYXRpb24veC1zaGFyXCI6W1wic2hhclwiXSxcImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoXCI6W1wic3dmXCJdLFwiYXBwbGljYXRpb24veC1zaWx2ZXJsaWdodC1hcHBcIjpbXCJ4YXBcIl0sXCJhcHBsaWNhdGlvbi94LXNxbFwiOltcInNxbFwiXSxcImFwcGxpY2F0aW9uL3gtc3R1ZmZpdFwiOltcInNpdFwiXSxcImFwcGxpY2F0aW9uL3gtc3R1ZmZpdHhcIjpbXCJzaXR4XCJdLFwiYXBwbGljYXRpb24veC1zdWJyaXBcIjpbXCJzcnRcIl0sXCJhcHBsaWNhdGlvbi94LXN2NGNwaW9cIjpbXCJzdjRjcGlvXCJdLFwiYXBwbGljYXRpb24veC1zdjRjcmNcIjpbXCJzdjRjcmNcIl0sXCJhcHBsaWNhdGlvbi94LXQzdm0taW1hZ2VcIjpbXCJ0M1wiXSxcImFwcGxpY2F0aW9uL3gtdGFkc1wiOltcImdhbVwiXSxcImFwcGxpY2F0aW9uL3gtdGFyXCI6W1widGFyXCJdLFwiYXBwbGljYXRpb24veC10Y2xcIjpbXCJ0Y2xcIixcInRrXCJdLFwiYXBwbGljYXRpb24veC10ZXhcIjpbXCJ0ZXhcIl0sXCJhcHBsaWNhdGlvbi94LXRleC10Zm1cIjpbXCJ0Zm1cIl0sXCJhcHBsaWNhdGlvbi94LXRleGluZm9cIjpbXCJ0ZXhpbmZvXCIsXCJ0ZXhpXCJdLFwiYXBwbGljYXRpb24veC10Z2lmXCI6W1wib2JqXCJdLFwiYXBwbGljYXRpb24veC11c3RhclwiOltcInVzdGFyXCJdLFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LWhkZFwiOltcImhkZFwiXSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmFcIjpbXCJvdmFcIl0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtb3ZmXCI6W1wib3ZmXCJdLFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZib3hcIjpbXCJ2Ym94XCJdLFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZib3gtZXh0cGFja1wiOltcInZib3gtZXh0cGFja1wiXSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12ZGlcIjpbXCJ2ZGlcIl0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmhkXCI6W1widmhkXCJdLFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZtZGtcIjpbXCJ2bWRrXCJdLFwiYXBwbGljYXRpb24veC13YWlzLXNvdXJjZVwiOltcInNyY1wiXSxcImFwcGxpY2F0aW9uL3gtd2ViLWFwcC1tYW5pZmVzdCtqc29uXCI6W1wid2ViYXBwXCJdLFwiYXBwbGljYXRpb24veC14NTA5LWNhLWNlcnRcIjpbXCJkZXJcIixcImNydFwiLFwicGVtXCJdLFwiYXBwbGljYXRpb24veC14ZmlnXCI6W1wiZmlnXCJdLFwiYXBwbGljYXRpb24veC14bGlmZit4bWxcIjpbXCJ4bGZcIl0sXCJhcHBsaWNhdGlvbi94LXhwaW5zdGFsbFwiOltcInhwaVwiXSxcImFwcGxpY2F0aW9uL3gteHpcIjpbXCJ4elwiXSxcImFwcGxpY2F0aW9uL3gtem1hY2hpbmVcIjpbXCJ6MVwiLFwiejJcIixcInozXCIsXCJ6NFwiLFwiejVcIixcIno2XCIsXCJ6N1wiLFwiejhcIl0sXCJhcHBsaWNhdGlvbi94YW1sK3htbFwiOltcInhhbWxcIl0sXCJhcHBsaWNhdGlvbi94Y2FwLWRpZmYreG1sXCI6W1wieGRmXCJdLFwiYXBwbGljYXRpb24veGVuYyt4bWxcIjpbXCJ4ZW5jXCJdLFwiYXBwbGljYXRpb24veGh0bWwreG1sXCI6W1wieGh0bWxcIixcInhodFwiXSxcImFwcGxpY2F0aW9uL3htbFwiOltcInhtbFwiLFwieHNsXCIsXCJ4c2RcIixcInJuZ1wiXSxcImFwcGxpY2F0aW9uL3htbC1kdGRcIjpbXCJkdGRcIl0sXCJhcHBsaWNhdGlvbi94b3AreG1sXCI6W1wieG9wXCJdLFwiYXBwbGljYXRpb24veHByb2MreG1sXCI6W1wieHBsXCJdLFwiYXBwbGljYXRpb24veHNsdCt4bWxcIjpbXCJ4c2x0XCJdLFwiYXBwbGljYXRpb24veHNwZit4bWxcIjpbXCJ4c3BmXCJdLFwiYXBwbGljYXRpb24veHYreG1sXCI6W1wibXhtbFwiLFwieGh2bWxcIixcInh2bWxcIixcInh2bVwiXSxcImFwcGxpY2F0aW9uL3lhbmdcIjpbXCJ5YW5nXCJdLFwiYXBwbGljYXRpb24veWluK3htbFwiOltcInlpblwiXSxcImFwcGxpY2F0aW9uL3ppcFwiOltcInppcFwiXSxcImF1ZGlvLzNncHBcIjpbXCIzZ3BwXCJdLFwiYXVkaW8vYWRwY21cIjpbXCJhZHBcIl0sXCJhdWRpby9iYXNpY1wiOltcImF1XCIsXCJzbmRcIl0sXCJhdWRpby9taWRpXCI6W1wibWlkXCIsXCJtaWRpXCIsXCJrYXJcIixcInJtaVwiXSxcImF1ZGlvL21wM1wiOltcIm1wM1wiXSxcImF1ZGlvL21wNFwiOltcIm00YVwiLFwibXA0YVwiXSxcImF1ZGlvL21wZWdcIjpbXCJtcGdhXCIsXCJtcDJcIixcIm1wMmFcIixcIm1wM1wiLFwibTJhXCIsXCJtM2FcIl0sXCJhdWRpby9vZ2dcIjpbXCJvZ2FcIixcIm9nZ1wiLFwic3B4XCJdLFwiYXVkaW8vczNtXCI6W1wiczNtXCJdLFwiYXVkaW8vc2lsa1wiOltcInNpbFwiXSxcImF1ZGlvL3ZuZC5kZWNlLmF1ZGlvXCI6W1widXZhXCIsXCJ1dnZhXCJdLFwiYXVkaW8vdm5kLmRpZ2l0YWwtd2luZHNcIjpbXCJlb2xcIl0sXCJhdWRpby92bmQuZHJhXCI6W1wiZHJhXCJdLFwiYXVkaW8vdm5kLmR0c1wiOltcImR0c1wiXSxcImF1ZGlvL3ZuZC5kdHMuaGRcIjpbXCJkdHNoZFwiXSxcImF1ZGlvL3ZuZC5sdWNlbnQudm9pY2VcIjpbXCJsdnBcIl0sXCJhdWRpby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5YVwiOltcInB5YVwiXSxcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDQ4MDBcIjpbXCJlY2VscDQ4MDBcIl0sXCJhdWRpby92bmQubnVlcmEuZWNlbHA3NDcwXCI6W1wiZWNlbHA3NDcwXCJdLFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwOTYwMFwiOltcImVjZWxwOTYwMFwiXSxcImF1ZGlvL3ZuZC5yaXBcIjpbXCJyaXBcIl0sXCJhdWRpby93YXZcIjpbXCJ3YXZcIl0sXCJhdWRpby93YXZlXCI6W1wid2F2XCJdLFwiYXVkaW8vd2VibVwiOltcIndlYmFcIl0sXCJhdWRpby94LWFhY1wiOltcImFhY1wiXSxcImF1ZGlvL3gtYWlmZlwiOltcImFpZlwiLFwiYWlmZlwiLFwiYWlmY1wiXSxcImF1ZGlvL3gtY2FmXCI6W1wiY2FmXCJdLFwiYXVkaW8veC1mbGFjXCI6W1wiZmxhY1wiXSxcImF1ZGlvL3gtbTRhXCI6W1wibTRhXCJdLFwiYXVkaW8veC1tYXRyb3NrYVwiOltcIm1rYVwiXSxcImF1ZGlvL3gtbXBlZ3VybFwiOltcIm0zdVwiXSxcImF1ZGlvL3gtbXMtd2F4XCI6W1wid2F4XCJdLFwiYXVkaW8veC1tcy13bWFcIjpbXCJ3bWFcIl0sXCJhdWRpby94LXBuLXJlYWxhdWRpb1wiOltcInJhbVwiLFwicmFcIl0sXCJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW5cIjpbXCJybXBcIl0sXCJhdWRpby94LXJlYWxhdWRpb1wiOltcInJhXCJdLFwiYXVkaW8veC13YXZcIjpbXCJ3YXZcIl0sXCJhdWRpby94bVwiOltcInhtXCJdLFwiY2hlbWljYWwveC1jZHhcIjpbXCJjZHhcIl0sXCJjaGVtaWNhbC94LWNpZlwiOltcImNpZlwiXSxcImNoZW1pY2FsL3gtY21kZlwiOltcImNtZGZcIl0sXCJjaGVtaWNhbC94LWNtbFwiOltcImNtbFwiXSxcImNoZW1pY2FsL3gtY3NtbFwiOltcImNzbWxcIl0sXCJjaGVtaWNhbC94LXh5elwiOltcInh5elwiXSxcImZvbnQvb3RmXCI6W1wib3RmXCJdLFwiaW1hZ2UvYXBuZ1wiOltcImFwbmdcIl0sXCJpbWFnZS9ibXBcIjpbXCJibXBcIl0sXCJpbWFnZS9jZ21cIjpbXCJjZ21cIl0sXCJpbWFnZS9nM2ZheFwiOltcImczXCJdLFwiaW1hZ2UvZ2lmXCI6W1wiZ2lmXCJdLFwiaW1hZ2UvaWVmXCI6W1wiaWVmXCJdLFwiaW1hZ2UvanBlZ1wiOltcImpwZWdcIixcImpwZ1wiLFwianBlXCJdLFwiaW1hZ2Uva3R4XCI6W1wia3R4XCJdLFwiaW1hZ2UvcG5nXCI6W1wicG5nXCJdLFwiaW1hZ2UvcHJzLmJ0aWZcIjpbXCJidGlmXCJdLFwiaW1hZ2Uvc2dpXCI6W1wic2dpXCJdLFwiaW1hZ2Uvc3ZnK3htbFwiOltcInN2Z1wiLFwic3ZnelwiXSxcImltYWdlL3RpZmZcIjpbXCJ0aWZmXCIsXCJ0aWZcIl0sXCJpbWFnZS92bmQuYWRvYmUucGhvdG9zaG9wXCI6W1wicHNkXCJdLFwiaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpY1wiOltcInV2aVwiLFwidXZ2aVwiLFwidXZnXCIsXCJ1dnZnXCJdLFwiaW1hZ2Uvdm5kLmRqdnVcIjpbXCJkanZ1XCIsXCJkanZcIl0sXCJpbWFnZS92bmQuZHZiLnN1YnRpdGxlXCI6W1wic3ViXCJdLFwiaW1hZ2Uvdm5kLmR3Z1wiOltcImR3Z1wiXSxcImltYWdlL3ZuZC5keGZcIjpbXCJkeGZcIl0sXCJpbWFnZS92bmQuZmFzdGJpZHNoZWV0XCI6W1wiZmJzXCJdLFwiaW1hZ2Uvdm5kLmZweFwiOltcImZweFwiXSxcImltYWdlL3ZuZC5mc3RcIjpbXCJmc3RcIl0sXCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1tbXJcIjpbXCJtbXJcIl0sXCJpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1ybGNcIjpbXCJybGNcIl0sXCJpbWFnZS92bmQubXMtbW9kaVwiOltcIm1kaVwiXSxcImltYWdlL3ZuZC5tcy1waG90b1wiOltcIndkcFwiXSxcImltYWdlL3ZuZC5uZXQtZnB4XCI6W1wibnB4XCJdLFwiaW1hZ2Uvdm5kLndhcC53Ym1wXCI6W1wid2JtcFwiXSxcImltYWdlL3ZuZC54aWZmXCI6W1wieGlmXCJdLFwiaW1hZ2Uvd2VicFwiOltcIndlYnBcIl0sXCJpbWFnZS94LTNkc1wiOltcIjNkc1wiXSxcImltYWdlL3gtY211LXJhc3RlclwiOltcInJhc1wiXSxcImltYWdlL3gtY214XCI6W1wiY214XCJdLFwiaW1hZ2UveC1mcmVlaGFuZFwiOltcImZoXCIsXCJmaGNcIixcImZoNFwiLFwiZmg1XCIsXCJmaDdcIl0sXCJpbWFnZS94LWljb25cIjpbXCJpY29cIl0sXCJpbWFnZS94LWpuZ1wiOltcImpuZ1wiXSxcImltYWdlL3gtbXJzaWQtaW1hZ2VcIjpbXCJzaWRcIl0sXCJpbWFnZS94LW1zLWJtcFwiOltcImJtcFwiXSxcImltYWdlL3gtcGN4XCI6W1wicGN4XCJdLFwiaW1hZ2UveC1waWN0XCI6W1wicGljXCIsXCJwY3RcIl0sXCJpbWFnZS94LXBvcnRhYmxlLWFueW1hcFwiOltcInBubVwiXSxcImltYWdlL3gtcG9ydGFibGUtYml0bWFwXCI6W1wicGJtXCJdLFwiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwXCI6W1wicGdtXCJdLFwiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXBcIjpbXCJwcG1cIl0sXCJpbWFnZS94LXJnYlwiOltcInJnYlwiXSxcImltYWdlL3gtdGdhXCI6W1widGdhXCJdLFwiaW1hZ2UveC14Yml0bWFwXCI6W1wieGJtXCJdLFwiaW1hZ2UveC14cGl4bWFwXCI6W1wieHBtXCJdLFwiaW1hZ2UveC14d2luZG93ZHVtcFwiOltcInh3ZFwiXSxcIm1lc3NhZ2UvcmZjODIyXCI6W1wiZW1sXCIsXCJtaW1lXCJdLFwibW9kZWwvZ2x0Zitqc29uXCI6W1wiZ2x0ZlwiXSxcIm1vZGVsL2dsdGYtYmluYXJ5XCI6W1wiZ2xiXCJdLFwibW9kZWwvaWdlc1wiOltcImlnc1wiLFwiaWdlc1wiXSxcIm1vZGVsL21lc2hcIjpbXCJtc2hcIixcIm1lc2hcIixcInNpbG9cIl0sXCJtb2RlbC92bmQuY29sbGFkYSt4bWxcIjpbXCJkYWVcIl0sXCJtb2RlbC92bmQuZHdmXCI6W1wiZHdmXCJdLFwibW9kZWwvdm5kLmdkbFwiOltcImdkbFwiXSxcIm1vZGVsL3ZuZC5ndHdcIjpbXCJndHdcIl0sXCJtb2RlbC92bmQubXRzXCI6W1wibXRzXCJdLFwibW9kZWwvdm5kLnZ0dVwiOltcInZ0dVwiXSxcIm1vZGVsL3ZybWxcIjpbXCJ3cmxcIixcInZybWxcIl0sXCJtb2RlbC94M2QrYmluYXJ5XCI6W1wieDNkYlwiLFwieDNkYnpcIl0sXCJtb2RlbC94M2QrdnJtbFwiOltcIngzZHZcIixcIngzZHZ6XCJdLFwibW9kZWwveDNkK3htbFwiOltcIngzZFwiLFwieDNkelwiXSxcInRleHQvY2FjaGUtbWFuaWZlc3RcIjpbXCJhcHBjYWNoZVwiLFwibWFuaWZlc3RcIl0sXCJ0ZXh0L2NhbGVuZGFyXCI6W1wiaWNzXCIsXCJpZmJcIl0sXCJ0ZXh0L2NvZmZlZXNjcmlwdFwiOltcImNvZmZlZVwiLFwibGl0Y29mZmVlXCJdLFwidGV4dC9jc3NcIjpbXCJjc3NcIl0sXCJ0ZXh0L2NzdlwiOltcImNzdlwiXSxcInRleHQvaGpzb25cIjpbXCJoanNvblwiXSxcInRleHQvaHRtbFwiOltcImh0bWxcIixcImh0bVwiLFwic2h0bWxcIl0sXCJ0ZXh0L2phZGVcIjpbXCJqYWRlXCJdLFwidGV4dC9qc3hcIjpbXCJqc3hcIl0sXCJ0ZXh0L2xlc3NcIjpbXCJsZXNzXCJdLFwidGV4dC9tYXJrZG93blwiOltcIm1hcmtkb3duXCIsXCJtZFwiXSxcInRleHQvbWF0aG1sXCI6W1wibW1sXCJdLFwidGV4dC9uM1wiOltcIm4zXCJdLFwidGV4dC9wbGFpblwiOltcInR4dFwiLFwidGV4dFwiLFwiY29uZlwiLFwiZGVmXCIsXCJsaXN0XCIsXCJsb2dcIixcImluXCIsXCJpbmlcIl0sXCJ0ZXh0L3Bycy5saW5lcy50YWdcIjpbXCJkc2NcIl0sXCJ0ZXh0L3JpY2h0ZXh0XCI6W1wicnR4XCJdLFwidGV4dC9ydGZcIjpbXCJydGZcIl0sXCJ0ZXh0L3NnbWxcIjpbXCJzZ21sXCIsXCJzZ21cIl0sXCJ0ZXh0L3NsaW1cIjpbXCJzbGltXCIsXCJzbG1cIl0sXCJ0ZXh0L3N0eWx1c1wiOltcInN0eWx1c1wiLFwic3R5bFwiXSxcInRleHQvdGFiLXNlcGFyYXRlZC12YWx1ZXNcIjpbXCJ0c3ZcIl0sXCJ0ZXh0L3Ryb2ZmXCI6W1widFwiLFwidHJcIixcInJvZmZcIixcIm1hblwiLFwibWVcIixcIm1zXCJdLFwidGV4dC90dXJ0bGVcIjpbXCJ0dGxcIl0sXCJ0ZXh0L3VyaS1saXN0XCI6W1widXJpXCIsXCJ1cmlzXCIsXCJ1cmxzXCJdLFwidGV4dC92Y2FyZFwiOltcInZjYXJkXCJdLFwidGV4dC92bmQuY3VybFwiOltcImN1cmxcIl0sXCJ0ZXh0L3ZuZC5jdXJsLmRjdXJsXCI6W1wiZGN1cmxcIl0sXCJ0ZXh0L3ZuZC5jdXJsLm1jdXJsXCI6W1wibWN1cmxcIl0sXCJ0ZXh0L3ZuZC5jdXJsLnNjdXJsXCI6W1wic2N1cmxcIl0sXCJ0ZXh0L3ZuZC5kdmIuc3VidGl0bGVcIjpbXCJzdWJcIl0sXCJ0ZXh0L3ZuZC5mbHlcIjpbXCJmbHlcIl0sXCJ0ZXh0L3ZuZC5mbWkuZmxleHN0b3JcIjpbXCJmbHhcIl0sXCJ0ZXh0L3ZuZC5ncmFwaHZpelwiOltcImd2XCJdLFwidGV4dC92bmQuaW4zZC4zZG1sXCI6W1wiM2RtbFwiXSxcInRleHQvdm5kLmluM2Quc3BvdFwiOltcInNwb3RcIl0sXCJ0ZXh0L3ZuZC5zdW4uajJtZS5hcHAtZGVzY3JpcHRvclwiOltcImphZFwiXSxcInRleHQvdm5kLndhcC53bWxcIjpbXCJ3bWxcIl0sXCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0XCI6W1wid21sc1wiXSxcInRleHQvdnR0XCI6W1widnR0XCJdLFwidGV4dC94LWFzbVwiOltcInNcIixcImFzbVwiXSxcInRleHQveC1jXCI6W1wiY1wiLFwiY2NcIixcImN4eFwiLFwiY3BwXCIsXCJoXCIsXCJoaFwiLFwiZGljXCJdLFwidGV4dC94LWNvbXBvbmVudFwiOltcImh0Y1wiXSxcInRleHQveC1mb3J0cmFuXCI6W1wiZlwiLFwiZm9yXCIsXCJmNzdcIixcImY5MFwiXSxcInRleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlXCI6W1wiaGJzXCJdLFwidGV4dC94LWphdmEtc291cmNlXCI6W1wiamF2YVwiXSxcInRleHQveC1sdWFcIjpbXCJsdWFcIl0sXCJ0ZXh0L3gtbWFya2Rvd25cIjpbXCJta2RcIl0sXCJ0ZXh0L3gtbmZvXCI6W1wibmZvXCJdLFwidGV4dC94LW9wbWxcIjpbXCJvcG1sXCJdLFwidGV4dC94LW9yZ1wiOltcIm9yZ1wiXSxcInRleHQveC1wYXNjYWxcIjpbXCJwXCIsXCJwYXNcIl0sXCJ0ZXh0L3gtcHJvY2Vzc2luZ1wiOltcInBkZVwiXSxcInRleHQveC1zYXNzXCI6W1wic2Fzc1wiXSxcInRleHQveC1zY3NzXCI6W1wic2Nzc1wiXSxcInRleHQveC1zZXRleHRcIjpbXCJldHhcIl0sXCJ0ZXh0L3gtc2Z2XCI6W1wic2Z2XCJdLFwidGV4dC94LXN1c2UteW1wXCI6W1wieW1wXCJdLFwidGV4dC94LXV1ZW5jb2RlXCI6W1widXVcIl0sXCJ0ZXh0L3gtdmNhbGVuZGFyXCI6W1widmNzXCJdLFwidGV4dC94LXZjYXJkXCI6W1widmNmXCJdLFwidGV4dC94bWxcIjpbXCJ4bWxcIl0sXCJ0ZXh0L3lhbWxcIjpbXCJ5YW1sXCIsXCJ5bWxcIl0sXCJ2aWRlby8zZ3BwXCI6W1wiM2dwXCIsXCIzZ3BwXCJdLFwidmlkZW8vM2dwcDJcIjpbXCIzZzJcIl0sXCJ2aWRlby9oMjYxXCI6W1wiaDI2MVwiXSxcInZpZGVvL2gyNjNcIjpbXCJoMjYzXCJdLFwidmlkZW8vaDI2NFwiOltcImgyNjRcIl0sXCJ2aWRlby9qcGVnXCI6W1wianBndlwiXSxcInZpZGVvL2pwbVwiOltcImpwbVwiLFwianBnbVwiXSxcInZpZGVvL21qMlwiOltcIm1qMlwiLFwibWpwMlwiXSxcInZpZGVvL21wMnRcIjpbXCJ0c1wiXSxcInZpZGVvL21wNFwiOltcIm1wNFwiLFwibXA0dlwiLFwibXBnNFwiXSxcInZpZGVvL21wZWdcIjpbXCJtcGVnXCIsXCJtcGdcIixcIm1wZVwiLFwibTF2XCIsXCJtMnZcIl0sXCJ2aWRlby9vZ2dcIjpbXCJvZ3ZcIl0sXCJ2aWRlby9xdWlja3RpbWVcIjpbXCJxdFwiLFwibW92XCJdLFwidmlkZW8vdm5kLmRlY2UuaGRcIjpbXCJ1dmhcIixcInV2dmhcIl0sXCJ2aWRlby92bmQuZGVjZS5tb2JpbGVcIjpbXCJ1dm1cIixcInV2dm1cIl0sXCJ2aWRlby92bmQuZGVjZS5wZFwiOltcInV2cFwiLFwidXZ2cFwiXSxcInZpZGVvL3ZuZC5kZWNlLnNkXCI6W1widXZzXCIsXCJ1dnZzXCJdLFwidmlkZW8vdm5kLmRlY2UudmlkZW9cIjpbXCJ1dnZcIixcInV2dnZcIl0sXCJ2aWRlby92bmQuZHZiLmZpbGVcIjpbXCJkdmJcIl0sXCJ2aWRlby92bmQuZnZ0XCI6W1wiZnZ0XCJdLFwidmlkZW8vdm5kLm1wZWd1cmxcIjpbXCJteHVcIixcIm00dVwiXSxcInZpZGVvL3ZuZC5tcy1wbGF5cmVhZHkubWVkaWEucHl2XCI6W1wicHl2XCJdLFwidmlkZW8vdm5kLnV2dnUubXA0XCI6W1widXZ1XCIsXCJ1dnZ1XCJdLFwidmlkZW8vdm5kLnZpdm9cIjpbXCJ2aXZcIl0sXCJ2aWRlby93ZWJtXCI6W1wid2VibVwiXSxcInZpZGVvL3gtZjR2XCI6W1wiZjR2XCJdLFwidmlkZW8veC1mbGlcIjpbXCJmbGlcIl0sXCJ2aWRlby94LWZsdlwiOltcImZsdlwiXSxcInZpZGVvL3gtbTR2XCI6W1wibTR2XCJdLFwidmlkZW8veC1tYXRyb3NrYVwiOltcIm1rdlwiLFwibWszZFwiLFwibWtzXCJdLFwidmlkZW8veC1tbmdcIjpbXCJtbmdcIl0sXCJ2aWRlby94LW1zLWFzZlwiOltcImFzZlwiLFwiYXN4XCJdLFwidmlkZW8veC1tcy12b2JcIjpbXCJ2b2JcIl0sXCJ2aWRlby94LW1zLXdtXCI6W1wid21cIl0sXCJ2aWRlby94LW1zLXdtdlwiOltcIndtdlwiXSxcInZpZGVvL3gtbXMtd214XCI6W1wid214XCJdLFwidmlkZW8veC1tcy13dnhcIjpbXCJ3dnhcIl0sXCJ2aWRlby94LW1zdmlkZW9cIjpbXCJhdmlcIl0sXCJ2aWRlby94LXNnaS1tb3ZpZVwiOltcIm1vdmllXCJdLFwidmlkZW8veC1zbXZcIjpbXCJzbXZcIl0sXCJ4LWNvbmZlcmVuY2UveC1jb29sdGFsa1wiOltcImljZVwiXX1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbWltZS90eXBlcy5qc29uXG4vLyBtb2R1bGUgaWQgPSAxNzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBmb3J3YXJkZWRcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTcgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZm9yd2FyZGVkXG5cbi8qKlxuICogR2V0IGFsbCBhZGRyZXNzZXMgaW4gdGhlIHJlcXVlc3QsIHVzaW5nIHRoZSBgWC1Gb3J3YXJkZWQtRm9yYCBoZWFkZXIuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcVxuICogQHJldHVybiB7YXJyYXl9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZm9yd2FyZGVkIChyZXEpIHtcbiAgaWYgKCFyZXEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCByZXEgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgLy8gc2ltcGxlIGhlYWRlciBwYXJzaW5nXG4gIHZhciBwcm94eUFkZHJzID0gcGFyc2UocmVxLmhlYWRlcnNbJ3gtZm9yd2FyZGVkLWZvciddIHx8ICcnKVxuICB2YXIgc29ja2V0QWRkciA9IHJlcS5jb25uZWN0aW9uLnJlbW90ZUFkZHJlc3NcbiAgdmFyIGFkZHJzID0gW3NvY2tldEFkZHJdLmNvbmNhdChwcm94eUFkZHJzKVxuXG4gIC8vIHJldHVybiBhbGwgYWRkcmVzc2VzXG4gIHJldHVybiBhZGRyc1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBYLUZvcndhcmRlZC1Gb3IgaGVhZGVyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2UgKGhlYWRlcikge1xuICB2YXIgZW5kID0gaGVhZGVyLmxlbmd0aFxuICB2YXIgbGlzdCA9IFtdXG4gIHZhciBzdGFydCA9IGhlYWRlci5sZW5ndGhcblxuICAvLyBnYXRoZXIgYWRkcmVzc2VzLCBiYWNrd2FyZHNcbiAgZm9yICh2YXIgaSA9IGhlYWRlci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHN3aXRjaCAoaGVhZGVyLmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgIGNhc2UgMHgyMDogLyogICAqL1xuICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgICAgICAgIHN0YXJ0ID0gZW5kID0gaVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDB4MmM6IC8qICwgKi9cbiAgICAgICAgaWYgKHN0YXJ0ICE9PSBlbmQpIHtcbiAgICAgICAgICBsaXN0LnB1c2goaGVhZGVyLnN1YnN0cmluZyhzdGFydCwgZW5kKSlcbiAgICAgICAgfVxuICAgICAgICBzdGFydCA9IGVuZCA9IGlcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0YXJ0ID0gaVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIGZpbmFsIGFkZHJlc3NcbiAgaWYgKHN0YXJ0ICE9PSBlbmQpIHtcbiAgICBsaXN0LnB1c2goaGVhZGVyLnN1YnN0cmluZyhzdGFydCwgZW5kKSlcbiAgfVxuXG4gIHJldHVybiBsaXN0XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZm9yd2FyZGVkL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiKGZ1bmN0aW9uKCkge1xuICB2YXIgZXhwYW5kSVB2NiwgaXBhZGRyLCBpcHY0UGFydCwgaXB2NFJlZ2V4ZXMsIGlwdjZQYXJ0LCBpcHY2UmVnZXhlcywgbWF0Y2hDSURSLCByb290LCB6b25lSW5kZXg7XG5cbiAgaXBhZGRyID0ge307XG5cbiAgcm9vdCA9IHRoaXM7XG5cbiAgaWYgKCh0eXBlb2YgbW9kdWxlICE9PSBcInVuZGVmaW5lZFwiICYmIG1vZHVsZSAhPT0gbnVsbCkgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGlwYWRkcjtcbiAgfSBlbHNlIHtcbiAgICByb290WydpcGFkZHInXSA9IGlwYWRkcjtcbiAgfVxuXG4gIG1hdGNoQ0lEUiA9IGZ1bmN0aW9uKGZpcnN0LCBzZWNvbmQsIHBhcnRTaXplLCBjaWRyQml0cykge1xuICAgIHZhciBwYXJ0LCBzaGlmdDtcbiAgICBpZiAoZmlyc3QubGVuZ3RoICE9PSBzZWNvbmQubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IGNhbm5vdCBtYXRjaCBDSURSIGZvciBvYmplY3RzIHdpdGggZGlmZmVyZW50IGxlbmd0aHNcIik7XG4gICAgfVxuICAgIHBhcnQgPSAwO1xuICAgIHdoaWxlIChjaWRyQml0cyA+IDApIHtcbiAgICAgIHNoaWZ0ID0gcGFydFNpemUgLSBjaWRyQml0cztcbiAgICAgIGlmIChzaGlmdCA8IDApIHtcbiAgICAgICAgc2hpZnQgPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGZpcnN0W3BhcnRdID4+IHNoaWZ0ICE9PSBzZWNvbmRbcGFydF0gPj4gc2hpZnQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY2lkckJpdHMgLT0gcGFydFNpemU7XG4gICAgICBwYXJ0ICs9IDE7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGlwYWRkci5zdWJuZXRNYXRjaCA9IGZ1bmN0aW9uKGFkZHJlc3MsIHJhbmdlTGlzdCwgZGVmYXVsdE5hbWUpIHtcbiAgICB2YXIgaywgbGVuLCByYW5nZU5hbWUsIHJhbmdlU3VibmV0cywgc3VibmV0O1xuICAgIGlmIChkZWZhdWx0TmFtZSA9PSBudWxsKSB7XG4gICAgICBkZWZhdWx0TmFtZSA9ICd1bmljYXN0JztcbiAgICB9XG4gICAgZm9yIChyYW5nZU5hbWUgaW4gcmFuZ2VMaXN0KSB7XG4gICAgICByYW5nZVN1Ym5ldHMgPSByYW5nZUxpc3RbcmFuZ2VOYW1lXTtcbiAgICAgIGlmIChyYW5nZVN1Ym5ldHNbMF0gJiYgIShyYW5nZVN1Ym5ldHNbMF0gaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgcmFuZ2VTdWJuZXRzID0gW3JhbmdlU3VibmV0c107XG4gICAgICB9XG4gICAgICBmb3IgKGsgPSAwLCBsZW4gPSByYW5nZVN1Ym5ldHMubGVuZ3RoOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgICAgc3VibmV0ID0gcmFuZ2VTdWJuZXRzW2tdO1xuICAgICAgICBpZiAoYWRkcmVzcy5raW5kKCkgPT09IHN1Ym5ldFswXS5raW5kKCkpIHtcbiAgICAgICAgICBpZiAoYWRkcmVzcy5tYXRjaC5hcHBseShhZGRyZXNzLCBzdWJuZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmFuZ2VOYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGVmYXVsdE5hbWU7XG4gIH07XG5cbiAgaXBhZGRyLklQdjQgPSAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gSVB2NChvY3RldHMpIHtcbiAgICAgIHZhciBrLCBsZW4sIG9jdGV0O1xuICAgICAgaWYgKG9jdGV0cy5sZW5ndGggIT09IDQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaXBhZGRyOiBpcHY0IG9jdGV0IGNvdW50IHNob3VsZCBiZSA0XCIpO1xuICAgICAgfVxuICAgICAgZm9yIChrID0gMCwgbGVuID0gb2N0ZXRzLmxlbmd0aDsgayA8IGxlbjsgaysrKSB7XG4gICAgICAgIG9jdGV0ID0gb2N0ZXRzW2tdO1xuICAgICAgICBpZiAoISgoMCA8PSBvY3RldCAmJiBvY3RldCA8PSAyNTUpKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogaXB2NCBvY3RldCBzaG91bGQgZml0IGluIDggYml0c1wiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5vY3RldHMgPSBvY3RldHM7XG4gICAgfVxuXG4gICAgSVB2NC5wcm90b3R5cGUua2luZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICdpcHY0JztcbiAgICB9O1xuXG4gICAgSVB2NC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLm9jdGV0cy5qb2luKFwiLlwiKTtcbiAgICB9O1xuXG4gICAgSVB2NC5wcm90b3R5cGUudG9Ob3JtYWxpemVkU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50b1N0cmluZygpO1xuICAgIH07XG5cbiAgICBJUHY0LnByb3RvdHlwZS50b0J5dGVBcnJheSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMub2N0ZXRzLnNsaWNlKDApO1xuICAgIH07XG5cbiAgICBJUHY0LnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uKG90aGVyLCBjaWRyUmFuZ2UpIHtcbiAgICAgIHZhciByZWY7XG4gICAgICBpZiAoY2lkclJhbmdlID09PSB2b2lkIDApIHtcbiAgICAgICAgcmVmID0gb3RoZXIsIG90aGVyID0gcmVmWzBdLCBjaWRyUmFuZ2UgPSByZWZbMV07XG4gICAgICB9XG4gICAgICBpZiAob3RoZXIua2luZCgpICE9PSAnaXB2NCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaXBhZGRyOiBjYW5ub3QgbWF0Y2ggaXB2NCBhZGRyZXNzIHdpdGggbm9uLWlwdjQgb25lXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoQ0lEUih0aGlzLm9jdGV0cywgb3RoZXIub2N0ZXRzLCA4LCBjaWRyUmFuZ2UpO1xuICAgIH07XG5cbiAgICBJUHY0LnByb3RvdHlwZS5TcGVjaWFsUmFuZ2VzID0ge1xuICAgICAgdW5zcGVjaWZpZWQ6IFtbbmV3IElQdjQoWzAsIDAsIDAsIDBdKSwgOF1dLFxuICAgICAgYnJvYWRjYXN0OiBbW25ldyBJUHY0KFsyNTUsIDI1NSwgMjU1LCAyNTVdKSwgMzJdXSxcbiAgICAgIG11bHRpY2FzdDogW1tuZXcgSVB2NChbMjI0LCAwLCAwLCAwXSksIDRdXSxcbiAgICAgIGxpbmtMb2NhbDogW1tuZXcgSVB2NChbMTY5LCAyNTQsIDAsIDBdKSwgMTZdXSxcbiAgICAgIGxvb3BiYWNrOiBbW25ldyBJUHY0KFsxMjcsIDAsIDAsIDBdKSwgOF1dLFxuICAgICAgY2FycmllckdyYWRlTmF0OiBbW25ldyBJUHY0KFsxMDAsIDY0LCAwLCAwXSksIDEwXV0sXG4gICAgICBcInByaXZhdGVcIjogW1tuZXcgSVB2NChbMTAsIDAsIDAsIDBdKSwgOF0sIFtuZXcgSVB2NChbMTcyLCAxNiwgMCwgMF0pLCAxMl0sIFtuZXcgSVB2NChbMTkyLCAxNjgsIDAsIDBdKSwgMTZdXSxcbiAgICAgIHJlc2VydmVkOiBbW25ldyBJUHY0KFsxOTIsIDAsIDAsIDBdKSwgMjRdLCBbbmV3IElQdjQoWzE5MiwgMCwgMiwgMF0pLCAyNF0sIFtuZXcgSVB2NChbMTkyLCA4OCwgOTksIDBdKSwgMjRdLCBbbmV3IElQdjQoWzE5OCwgNTEsIDEwMCwgMF0pLCAyNF0sIFtuZXcgSVB2NChbMjAzLCAwLCAxMTMsIDBdKSwgMjRdLCBbbmV3IElQdjQoWzI0MCwgMCwgMCwgMF0pLCA0XV1cbiAgICB9O1xuXG4gICAgSVB2NC5wcm90b3R5cGUucmFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpcGFkZHIuc3VibmV0TWF0Y2godGhpcywgdGhpcy5TcGVjaWFsUmFuZ2VzKTtcbiAgICB9O1xuXG4gICAgSVB2NC5wcm90b3R5cGUudG9JUHY0TWFwcGVkQWRkcmVzcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGlwYWRkci5JUHY2LnBhcnNlKFwiOjpmZmZmOlwiICsgKHRoaXMudG9TdHJpbmcoKSkpO1xuICAgIH07XG5cbiAgICBJUHY0LnByb3RvdHlwZS5wcmVmaXhMZW5ndGhGcm9tU3VibmV0TWFzayA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNpZHIsIGksIGssIG9jdGV0LCBzdG9wLCB6ZXJvcywgemVyb3RhYmxlO1xuICAgICAgemVyb3RhYmxlID0ge1xuICAgICAgICAwOiA4LFxuICAgICAgICAxMjg6IDcsXG4gICAgICAgIDE5MjogNixcbiAgICAgICAgMjI0OiA1LFxuICAgICAgICAyNDA6IDQsXG4gICAgICAgIDI0ODogMyxcbiAgICAgICAgMjUyOiAyLFxuICAgICAgICAyNTQ6IDEsXG4gICAgICAgIDI1NTogMFxuICAgICAgfTtcbiAgICAgIGNpZHIgPSAwO1xuICAgICAgc3RvcCA9IGZhbHNlO1xuICAgICAgZm9yIChpID0gayA9IDM7IGsgPj0gMDsgaSA9IGsgKz0gLTEpIHtcbiAgICAgICAgb2N0ZXQgPSB0aGlzLm9jdGV0c1tpXTtcbiAgICAgICAgaWYgKG9jdGV0IGluIHplcm90YWJsZSkge1xuICAgICAgICAgIHplcm9zID0gemVyb3RhYmxlW29jdGV0XTtcbiAgICAgICAgICBpZiAoc3RvcCAmJiB6ZXJvcyAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh6ZXJvcyAhPT0gOCkge1xuICAgICAgICAgICAgc3RvcCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNpZHIgKz0gemVyb3M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAzMiAtIGNpZHI7XG4gICAgfTtcblxuICAgIHJldHVybiBJUHY0O1xuXG4gIH0pKCk7XG5cbiAgaXB2NFBhcnQgPSBcIigwP1xcXFxkK3wweFthLWYwLTldKylcIjtcblxuICBpcHY0UmVnZXhlcyA9IHtcbiAgICBmb3VyT2N0ZXQ6IG5ldyBSZWdFeHAoXCJeXCIgKyBpcHY0UGFydCArIFwiXFxcXC5cIiArIGlwdjRQYXJ0ICsgXCJcXFxcLlwiICsgaXB2NFBhcnQgKyBcIlxcXFwuXCIgKyBpcHY0UGFydCArIFwiJFwiLCAnaScpLFxuICAgIGxvbmdWYWx1ZTogbmV3IFJlZ0V4cChcIl5cIiArIGlwdjRQYXJ0ICsgXCIkXCIsICdpJylcbiAgfTtcblxuICBpcGFkZHIuSVB2NC5wYXJzZXIgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICB2YXIgbWF0Y2gsIHBhcnNlSW50QXV0bywgcGFydCwgc2hpZnQsIHZhbHVlO1xuICAgIHBhcnNlSW50QXV0byA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgaWYgKHN0cmluZ1swXSA9PT0gXCIwXCIgJiYgc3RyaW5nWzFdICE9PSBcInhcIikge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nLCA4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludChzdHJpbmcpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKG1hdGNoID0gc3RyaW5nLm1hdGNoKGlwdjRSZWdleGVzLmZvdXJPY3RldCkpIHtcbiAgICAgIHJldHVybiAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBrLCBsZW4sIHJlZiwgcmVzdWx0cztcbiAgICAgICAgcmVmID0gbWF0Y2guc2xpY2UoMSwgNik7XG4gICAgICAgIHJlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yIChrID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgayA8IGxlbjsgaysrKSB7XG4gICAgICAgICAgcGFydCA9IHJlZltrXTtcbiAgICAgICAgICByZXN1bHRzLnB1c2gocGFyc2VJbnRBdXRvKHBhcnQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0pKCk7XG4gICAgfSBlbHNlIGlmIChtYXRjaCA9IHN0cmluZy5tYXRjaChpcHY0UmVnZXhlcy5sb25nVmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHBhcnNlSW50QXV0byhtYXRjaFsxXSk7XG4gICAgICBpZiAodmFsdWUgPiAweGZmZmZmZmZmIHx8IHZhbHVlIDwgMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IGFkZHJlc3Mgb3V0c2lkZSBkZWZpbmVkIHJhbmdlXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICgoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBrLCByZXN1bHRzO1xuICAgICAgICByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoc2hpZnQgPSBrID0gMDsgayA8PSAyNDsgc2hpZnQgPSBrICs9IDgpIHtcbiAgICAgICAgICByZXN1bHRzLnB1c2goKHZhbHVlID4+IHNoaWZ0KSAmIDB4ZmYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgICAgfSkoKSkucmV2ZXJzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgaXBhZGRyLklQdjYgPSAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gSVB2NihwYXJ0cywgem9uZUlkKSB7XG4gICAgICB2YXIgaSwgaywgbCwgbGVuLCBwYXJ0LCByZWY7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSAxNikge1xuICAgICAgICB0aGlzLnBhcnRzID0gW107XG4gICAgICAgIGZvciAoaSA9IGsgPSAwOyBrIDw9IDE0OyBpID0gayArPSAyKSB7XG4gICAgICAgICAgdGhpcy5wYXJ0cy5wdXNoKChwYXJ0c1tpXSA8PCA4KSB8IHBhcnRzW2kgKyAxXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFydHMubGVuZ3RoID09PSA4KSB7XG4gICAgICAgIHRoaXMucGFydHMgPSBwYXJ0cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogaXB2NiBwYXJ0IGNvdW50IHNob3VsZCBiZSA4IG9yIDE2XCIpO1xuICAgICAgfVxuICAgICAgcmVmID0gdGhpcy5wYXJ0cztcbiAgICAgIGZvciAobCA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGwgPCBsZW47IGwrKykge1xuICAgICAgICBwYXJ0ID0gcmVmW2xdO1xuICAgICAgICBpZiAoISgoMCA8PSBwYXJ0ICYmIHBhcnQgPD0gMHhmZmZmKSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IGlwdjYgcGFydCBzaG91bGQgZml0IGluIDE2IGJpdHNcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh6b25lSWQpIHtcbiAgICAgICAgdGhpcy56b25lSWQgPSB6b25lSWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgSVB2Ni5wcm90b3R5cGUua2luZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICdpcHY2JztcbiAgICB9O1xuXG4gICAgSVB2Ni5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvTm9ybWFsaXplZFN0cmluZygpLnJlcGxhY2UoLygoXnw6KSgwKDp8JCkpKykvLCAnOjonKTtcbiAgICB9O1xuXG4gICAgSVB2Ni5wcm90b3R5cGUudG9CeXRlQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBieXRlcywgaywgbGVuLCBwYXJ0LCByZWY7XG4gICAgICBieXRlcyA9IFtdO1xuICAgICAgcmVmID0gdGhpcy5wYXJ0cztcbiAgICAgIGZvciAoayA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGsgPCBsZW47IGsrKykge1xuICAgICAgICBwYXJ0ID0gcmVmW2tdO1xuICAgICAgICBieXRlcy5wdXNoKHBhcnQgPj4gOCk7XG4gICAgICAgIGJ5dGVzLnB1c2gocGFydCAmIDB4ZmYpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJ5dGVzO1xuICAgIH07XG5cbiAgICBJUHY2LnByb3RvdHlwZS50b05vcm1hbGl6ZWRTdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBhZGRyLCBwYXJ0LCBzdWZmaXg7XG4gICAgICBhZGRyID0gKChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGssIGxlbiwgcmVmLCByZXN1bHRzO1xuICAgICAgICByZWYgPSB0aGlzLnBhcnRzO1xuICAgICAgICByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoayA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGsgPCBsZW47IGsrKykge1xuICAgICAgICAgIHBhcnQgPSByZWZba107XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKHBhcnQudG9TdHJpbmcoMTYpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0pLmNhbGwodGhpcykpLmpvaW4oXCI6XCIpO1xuICAgICAgc3VmZml4ID0gJyc7XG4gICAgICBpZiAodGhpcy56b25lSWQpIHtcbiAgICAgICAgc3VmZml4ID0gJyUnICsgdGhpcy56b25lSWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWRkciArIHN1ZmZpeDtcbiAgICB9O1xuXG4gICAgSVB2Ni5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbihvdGhlciwgY2lkclJhbmdlKSB7XG4gICAgICB2YXIgcmVmO1xuICAgICAgaWYgKGNpZHJSYW5nZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHJlZiA9IG90aGVyLCBvdGhlciA9IHJlZlswXSwgY2lkclJhbmdlID0gcmVmWzFdO1xuICAgICAgfVxuICAgICAgaWYgKG90aGVyLmtpbmQoKSAhPT0gJ2lwdjYnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogY2Fubm90IG1hdGNoIGlwdjYgYWRkcmVzcyB3aXRoIG5vbi1pcHY2IG9uZVwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaENJRFIodGhpcy5wYXJ0cywgb3RoZXIucGFydHMsIDE2LCBjaWRyUmFuZ2UpO1xuICAgIH07XG5cbiAgICBJUHY2LnByb3RvdHlwZS5TcGVjaWFsUmFuZ2VzID0ge1xuICAgICAgdW5zcGVjaWZpZWQ6IFtuZXcgSVB2NihbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pLCAxMjhdLFxuICAgICAgbGlua0xvY2FsOiBbbmV3IElQdjYoWzB4ZmU4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pLCAxMF0sXG4gICAgICBtdWx0aWNhc3Q6IFtuZXcgSVB2NihbMHhmZjAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSksIDhdLFxuICAgICAgbG9vcGJhY2s6IFtuZXcgSVB2NihbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMV0pLCAxMjhdLFxuICAgICAgdW5pcXVlTG9jYWw6IFtuZXcgSVB2NihbMHhmYzAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSksIDddLFxuICAgICAgaXB2NE1hcHBlZDogW25ldyBJUHY2KFswLCAwLCAwLCAwLCAwLCAweGZmZmYsIDAsIDBdKSwgOTZdLFxuICAgICAgcmZjNjE0NTogW25ldyBJUHY2KFswLCAwLCAwLCAwLCAweGZmZmYsIDAsIDAsIDBdKSwgOTZdLFxuICAgICAgcmZjNjA1MjogW25ldyBJUHY2KFsweDY0LCAweGZmOWIsIDAsIDAsIDAsIDAsIDAsIDBdKSwgOTZdLFxuICAgICAgJzZ0bzQnOiBbbmV3IElQdjYoWzB4MjAwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pLCAxNl0sXG4gICAgICB0ZXJlZG86IFtuZXcgSVB2NihbMHgyMDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSksIDMyXSxcbiAgICAgIHJlc2VydmVkOiBbW25ldyBJUHY2KFsweDIwMDEsIDB4ZGI4LCAwLCAwLCAwLCAwLCAwLCAwXSksIDMyXV1cbiAgICB9O1xuXG4gICAgSVB2Ni5wcm90b3R5cGUucmFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpcGFkZHIuc3VibmV0TWF0Y2godGhpcywgdGhpcy5TcGVjaWFsUmFuZ2VzKTtcbiAgICB9O1xuXG4gICAgSVB2Ni5wcm90b3R5cGUuaXNJUHY0TWFwcGVkQWRkcmVzcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmFuZ2UoKSA9PT0gJ2lwdjRNYXBwZWQnO1xuICAgIH07XG5cbiAgICBJUHY2LnByb3RvdHlwZS50b0lQdjRBZGRyZXNzID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgaGlnaCwgbG93LCByZWY7XG4gICAgICBpZiAoIXRoaXMuaXNJUHY0TWFwcGVkQWRkcmVzcygpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogdHJ5aW5nIHRvIGNvbnZlcnQgYSBnZW5lcmljIGlwdjYgYWRkcmVzcyB0byBpcHY0XCIpO1xuICAgICAgfVxuICAgICAgcmVmID0gdGhpcy5wYXJ0cy5zbGljZSgtMiksIGhpZ2ggPSByZWZbMF0sIGxvdyA9IHJlZlsxXTtcbiAgICAgIHJldHVybiBuZXcgaXBhZGRyLklQdjQoW2hpZ2ggPj4gOCwgaGlnaCAmIDB4ZmYsIGxvdyA+PiA4LCBsb3cgJiAweGZmXSk7XG4gICAgfTtcblxuICAgIElQdjYucHJvdG90eXBlLnByZWZpeExlbmd0aEZyb21TdWJuZXRNYXNrID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY2lkciwgaSwgaywgcGFydCwgc3RvcCwgemVyb3MsIHplcm90YWJsZTtcbiAgICAgIHplcm90YWJsZSA9IHtcbiAgICAgICAgMDogMTYsXG4gICAgICAgIDMyNzY4OiAxNSxcbiAgICAgICAgNDkxNTI6IDE0LFxuICAgICAgICA1NzM0NDogMTMsXG4gICAgICAgIDYxNDQwOiAxMixcbiAgICAgICAgNjM0ODg6IDExLFxuICAgICAgICA2NDUxMjogMTAsXG4gICAgICAgIDY1MDI0OiA5LFxuICAgICAgICA2NTI4MDogOCxcbiAgICAgICAgNjU0MDg6IDcsXG4gICAgICAgIDY1NDcyOiA2LFxuICAgICAgICA2NTUwNDogNSxcbiAgICAgICAgNjU1MjA6IDQsXG4gICAgICAgIDY1NTI4OiAzLFxuICAgICAgICA2NTUzMjogMixcbiAgICAgICAgNjU1MzQ6IDEsXG4gICAgICAgIDY1NTM1OiAwXG4gICAgICB9O1xuICAgICAgY2lkciA9IDA7XG4gICAgICBzdG9wID0gZmFsc2U7XG4gICAgICBmb3IgKGkgPSBrID0gNzsgayA+PSAwOyBpID0gayArPSAtMSkge1xuICAgICAgICBwYXJ0ID0gdGhpcy5wYXJ0c1tpXTtcbiAgICAgICAgaWYgKHBhcnQgaW4gemVyb3RhYmxlKSB7XG4gICAgICAgICAgemVyb3MgPSB6ZXJvdGFibGVbcGFydF07XG4gICAgICAgICAgaWYgKHN0b3AgJiYgemVyb3MgIT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoemVyb3MgIT09IDE2KSB7XG4gICAgICAgICAgICBzdG9wID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2lkciArPSB6ZXJvcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIDEyOCAtIGNpZHI7XG4gICAgfTtcblxuICAgIHJldHVybiBJUHY2O1xuXG4gIH0pKCk7XG5cbiAgaXB2NlBhcnQgPSBcIig/OlswLTlhLWZdKzo6PykrXCI7XG5cbiAgem9uZUluZGV4ID0gXCIlWzAtOWEtel17MSx9XCI7XG5cbiAgaXB2NlJlZ2V4ZXMgPSB7XG4gICAgem9uZUluZGV4OiBuZXcgUmVnRXhwKHpvbmVJbmRleCwgJ2knKSxcbiAgICBcIm5hdGl2ZVwiOiBuZXcgUmVnRXhwKFwiXig6Oik/KFwiICsgaXB2NlBhcnQgKyBcIik/KFswLTlhLWZdKyk/KDo6KT8oXCIgKyB6b25lSW5kZXggKyBcIik/JFwiLCAnaScpLFxuICAgIHRyYW5zaXRpb25hbDogbmV3IFJlZ0V4cCgoXCJeKCg/OlwiICsgaXB2NlBhcnQgKyBcIil8KD86OjopKD86XCIgKyBpcHY2UGFydCArIFwiKT8pXCIpICsgKGlwdjRQYXJ0ICsgXCJcXFxcLlwiICsgaXB2NFBhcnQgKyBcIlxcXFwuXCIgKyBpcHY0UGFydCArIFwiXFxcXC5cIiArIGlwdjRQYXJ0KSArIChcIihcIiArIHpvbmVJbmRleCArIFwiKT8kXCIpLCAnaScpXG4gIH07XG5cbiAgZXhwYW5kSVB2NiA9IGZ1bmN0aW9uKHN0cmluZywgcGFydHMpIHtcbiAgICB2YXIgY29sb25Db3VudCwgbGFzdENvbG9uLCBwYXJ0LCByZXBsYWNlbWVudCwgcmVwbGFjZW1lbnRDb3VudCwgem9uZUlkO1xuICAgIGlmIChzdHJpbmcuaW5kZXhPZignOjonKSAhPT0gc3RyaW5nLmxhc3RJbmRleE9mKCc6OicpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgem9uZUlkID0gKHN0cmluZy5tYXRjaChpcHY2UmVnZXhlc1snem9uZUluZGV4J10pIHx8IFtdKVswXTtcbiAgICBpZiAoem9uZUlkKSB7XG4gICAgICB6b25lSWQgPSB6b25lSWQuc3Vic3RyaW5nKDEpO1xuICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoLyUuKyQvLCAnJyk7XG4gICAgfVxuICAgIGNvbG9uQ291bnQgPSAwO1xuICAgIGxhc3RDb2xvbiA9IC0xO1xuICAgIHdoaWxlICgobGFzdENvbG9uID0gc3RyaW5nLmluZGV4T2YoJzonLCBsYXN0Q29sb24gKyAxKSkgPj0gMCkge1xuICAgICAgY29sb25Db3VudCsrO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nLnN1YnN0cigwLCAyKSA9PT0gJzo6Jykge1xuICAgICAgY29sb25Db3VudC0tO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nLnN1YnN0cigtMiwgMikgPT09ICc6OicpIHtcbiAgICAgIGNvbG9uQ291bnQtLTtcbiAgICB9XG4gICAgaWYgKGNvbG9uQ291bnQgPiBwYXJ0cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJlcGxhY2VtZW50Q291bnQgPSBwYXJ0cyAtIGNvbG9uQ291bnQ7XG4gICAgcmVwbGFjZW1lbnQgPSAnOic7XG4gICAgd2hpbGUgKHJlcGxhY2VtZW50Q291bnQtLSkge1xuICAgICAgcmVwbGFjZW1lbnQgKz0gJzA6JztcbiAgICB9XG4gICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoJzo6JywgcmVwbGFjZW1lbnQpO1xuICAgIGlmIChzdHJpbmdbMF0gPT09ICc6Jykge1xuICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKDEpO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nW3N0cmluZy5sZW5ndGggLSAxXSA9PT0gJzonKSB7XG4gICAgICBzdHJpbmcgPSBzdHJpbmcuc2xpY2UoMCwgLTEpO1xuICAgIH1cbiAgICBwYXJ0cyA9IChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBrLCBsZW4sIHJlZiwgcmVzdWx0cztcbiAgICAgIHJlZiA9IHN0cmluZy5zcGxpdChcIjpcIik7XG4gICAgICByZXN1bHRzID0gW107XG4gICAgICBmb3IgKGsgPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgICAgcGFydCA9IHJlZltrXTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKHBhcnNlSW50KHBhcnQsIDE2KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9KSgpO1xuICAgIHJldHVybiB7XG4gICAgICBwYXJ0czogcGFydHMsXG4gICAgICB6b25lSWQ6IHpvbmVJZFxuICAgIH07XG4gIH07XG5cbiAgaXBhZGRyLklQdjYucGFyc2VyID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIGFkZHIsIGssIGxlbiwgbWF0Y2gsIG9jdGV0LCBvY3RldHMsIHpvbmVJZDtcbiAgICBpZiAoaXB2NlJlZ2V4ZXNbJ25hdGl2ZSddLnRlc3Qoc3RyaW5nKSkge1xuICAgICAgcmV0dXJuIGV4cGFuZElQdjYoc3RyaW5nLCA4KTtcbiAgICB9IGVsc2UgaWYgKG1hdGNoID0gc3RyaW5nLm1hdGNoKGlwdjZSZWdleGVzWyd0cmFuc2l0aW9uYWwnXSkpIHtcbiAgICAgIHpvbmVJZCA9IG1hdGNoWzZdIHx8ICcnO1xuICAgICAgYWRkciA9IGV4cGFuZElQdjYobWF0Y2hbMV0uc2xpY2UoMCwgLTEpICsgem9uZUlkLCA2KTtcbiAgICAgIGlmIChhZGRyLnBhcnRzKSB7XG4gICAgICAgIG9jdGV0cyA9IFtwYXJzZUludChtYXRjaFsyXSksIHBhcnNlSW50KG1hdGNoWzNdKSwgcGFyc2VJbnQobWF0Y2hbNF0pLCBwYXJzZUludChtYXRjaFs1XSldO1xuICAgICAgICBmb3IgKGsgPSAwLCBsZW4gPSBvY3RldHMubGVuZ3RoOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgICAgICBvY3RldCA9IG9jdGV0c1trXTtcbiAgICAgICAgICBpZiAoISgoMCA8PSBvY3RldCAmJiBvY3RldCA8PSAyNTUpKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFkZHIucGFydHMucHVzaChvY3RldHNbMF0gPDwgOCB8IG9jdGV0c1sxXSk7XG4gICAgICAgIGFkZHIucGFydHMucHVzaChvY3RldHNbMl0gPDwgOCB8IG9jdGV0c1szXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGFydHM6IGFkZHIucGFydHMsXG4gICAgICAgICAgem9uZUlkOiBhZGRyLnpvbmVJZFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBpcGFkZHIuSVB2NC5pc0lQdjQgPSBpcGFkZHIuSVB2Ni5pc0lQdjYgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIoc3RyaW5nKSAhPT0gbnVsbDtcbiAgfTtcblxuICBpcGFkZHIuSVB2NC5pc1ZhbGlkID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIGU7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyB0aGlzKHRoaXMucGFyc2VyKHN0cmluZykpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IxKSB7XG4gICAgICBlID0gZXJyb3IxO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBpcGFkZHIuSVB2NC5pc1ZhbGlkRm91clBhcnREZWNpbWFsID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgaWYgKGlwYWRkci5JUHY0LmlzVmFsaWQoc3RyaW5nKSAmJiBzdHJpbmcubWF0Y2goL15cXGQrKFxcLlxcZCspezN9JC8pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBpcGFkZHIuSVB2Ni5pc1ZhbGlkID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIGFkZHIsIGU7XG4gICAgaWYgKHR5cGVvZiBzdHJpbmcgPT09IFwic3RyaW5nXCIgJiYgc3RyaW5nLmluZGV4T2YoXCI6XCIpID09PSAtMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYWRkciA9IHRoaXMucGFyc2VyKHN0cmluZyk7XG4gICAgICBuZXcgdGhpcyhhZGRyLnBhcnRzLCBhZGRyLnpvbmVJZCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnJvcjEpIHtcbiAgICAgIGUgPSBlcnJvcjE7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIGlwYWRkci5JUHY0LnBhcnNlID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIHBhcnRzO1xuICAgIHBhcnRzID0gdGhpcy5wYXJzZXIoc3RyaW5nKTtcbiAgICBpZiAocGFydHMgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogc3RyaW5nIGlzIG5vdCBmb3JtYXR0ZWQgbGlrZSBpcCBhZGRyZXNzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRoaXMocGFydHMpO1xuICB9O1xuXG4gIGlwYWRkci5JUHY2LnBhcnNlID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIGFkZHI7XG4gICAgYWRkciA9IHRoaXMucGFyc2VyKHN0cmluZyk7XG4gICAgaWYgKGFkZHIucGFydHMgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogc3RyaW5nIGlzIG5vdCBmb3JtYXR0ZWQgbGlrZSBpcCBhZGRyZXNzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRoaXMoYWRkci5wYXJ0cywgYWRkci56b25lSWQpO1xuICB9O1xuXG4gIGlwYWRkci5JUHY0LnBhcnNlQ0lEUiA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciBtYXNrTGVuZ3RoLCBtYXRjaDtcbiAgICBpZiAobWF0Y2ggPSBzdHJpbmcubWF0Y2goL14oLispXFwvKFxcZCspJC8pKSB7XG4gICAgICBtYXNrTGVuZ3RoID0gcGFyc2VJbnQobWF0Y2hbMl0pO1xuICAgICAgaWYgKG1hc2tMZW5ndGggPj0gMCAmJiBtYXNrTGVuZ3RoIDw9IDMyKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5wYXJzZShtYXRjaFsxXSksIG1hc2tMZW5ndGhdO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IHN0cmluZyBpcyBub3QgZm9ybWF0dGVkIGxpa2UgYW4gSVB2NCBDSURSIHJhbmdlXCIpO1xuICB9O1xuXG4gIGlwYWRkci5JUHY0LnN1Ym5ldE1hc2tGcm9tUHJlZml4TGVuZ3RoID0gZnVuY3Rpb24ocHJlZml4KSB7XG4gICAgdmFyIGZpbGxlZE9jdGV0Q291bnQsIGosIG9jdGV0cztcbiAgICBwcmVmaXggPSBwYXJzZUludChwcmVmaXgpO1xuICAgIGlmIChwcmVmaXggPCAwIHx8IHByZWZpeCA+IDMyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lwYWRkcjogaW52YWxpZCBJUHY0IHByZWZpeCBsZW5ndGgnKTtcbiAgICB9XG4gICAgb2N0ZXRzID0gWzAsIDAsIDAsIDBdO1xuICAgIGogPSAwO1xuICAgIGZpbGxlZE9jdGV0Q291bnQgPSBNYXRoLmZsb29yKHByZWZpeCAvIDgpO1xuICAgIHdoaWxlIChqIDwgZmlsbGVkT2N0ZXRDb3VudCkge1xuICAgICAgb2N0ZXRzW2pdID0gMjU1O1xuICAgICAgaisrO1xuICAgIH1cbiAgICBpZiAoZmlsbGVkT2N0ZXRDb3VudCA8IDQpIHtcbiAgICAgIG9jdGV0c1tmaWxsZWRPY3RldENvdW50XSA9IE1hdGgucG93KDIsIHByZWZpeCAlIDgpIC0gMSA8PCA4IC0gKHByZWZpeCAlIDgpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IHRoaXMob2N0ZXRzKTtcbiAgfTtcblxuICBpcGFkZHIuSVB2NC5icm9hZGNhc3RBZGRyZXNzRnJvbUNJRFIgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICB2YXIgY2lkciwgZXJyb3IsIGksIGlwSW50ZXJmYWNlT2N0ZXRzLCBvY3RldHMsIHN1Ym5ldE1hc2tPY3RldHM7XG4gICAgdHJ5IHtcbiAgICAgIGNpZHIgPSB0aGlzLnBhcnNlQ0lEUihzdHJpbmcpO1xuICAgICAgaXBJbnRlcmZhY2VPY3RldHMgPSBjaWRyWzBdLnRvQnl0ZUFycmF5KCk7XG4gICAgICBzdWJuZXRNYXNrT2N0ZXRzID0gdGhpcy5zdWJuZXRNYXNrRnJvbVByZWZpeExlbmd0aChjaWRyWzFdKS50b0J5dGVBcnJheSgpO1xuICAgICAgb2N0ZXRzID0gW107XG4gICAgICBpID0gMDtcbiAgICAgIHdoaWxlIChpIDwgNCkge1xuICAgICAgICBvY3RldHMucHVzaChwYXJzZUludChpcEludGVyZmFjZU9jdGV0c1tpXSwgMTApIHwgcGFyc2VJbnQoc3VibmV0TWFza09jdGV0c1tpXSwgMTApIF4gMjU1KTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyB0aGlzKG9jdGV0cyk7XG4gICAgfSBjYXRjaCAoZXJyb3IxKSB7XG4gICAgICBlcnJvciA9IGVycm9yMTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaXBhZGRyOiB0aGUgYWRkcmVzcyBkb2VzIG5vdCBoYXZlIElQdjQgQ0lEUiBmb3JtYXQnKTtcbiAgICB9XG4gIH07XG5cbiAgaXBhZGRyLklQdjQubmV0d29ya0FkZHJlc3NGcm9tQ0lEUiA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciBjaWRyLCBlcnJvciwgaSwgaXBJbnRlcmZhY2VPY3RldHMsIG9jdGV0cywgc3VibmV0TWFza09jdGV0cztcbiAgICB0cnkge1xuICAgICAgY2lkciA9IHRoaXMucGFyc2VDSURSKHN0cmluZyk7XG4gICAgICBpcEludGVyZmFjZU9jdGV0cyA9IGNpZHJbMF0udG9CeXRlQXJyYXkoKTtcbiAgICAgIHN1Ym5ldE1hc2tPY3RldHMgPSB0aGlzLnN1Ym5ldE1hc2tGcm9tUHJlZml4TGVuZ3RoKGNpZHJbMV0pLnRvQnl0ZUFycmF5KCk7XG4gICAgICBvY3RldHMgPSBbXTtcbiAgICAgIGkgPSAwO1xuICAgICAgd2hpbGUgKGkgPCA0KSB7XG4gICAgICAgIG9jdGV0cy5wdXNoKHBhcnNlSW50KGlwSW50ZXJmYWNlT2N0ZXRzW2ldLCAxMCkgJiBwYXJzZUludChzdWJuZXRNYXNrT2N0ZXRzW2ldLCAxMCkpO1xuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IHRoaXMob2N0ZXRzKTtcbiAgICB9IGNhdGNoIChlcnJvcjEpIHtcbiAgICAgIGVycm9yID0gZXJyb3IxO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpcGFkZHI6IHRoZSBhZGRyZXNzIGRvZXMgbm90IGhhdmUgSVB2NCBDSURSIGZvcm1hdCcpO1xuICAgIH1cbiAgfTtcblxuICBpcGFkZHIuSVB2Ni5wYXJzZUNJRFIgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICB2YXIgbWFza0xlbmd0aCwgbWF0Y2g7XG4gICAgaWYgKG1hdGNoID0gc3RyaW5nLm1hdGNoKC9eKC4rKVxcLyhcXGQrKSQvKSkge1xuICAgICAgbWFza0xlbmd0aCA9IHBhcnNlSW50KG1hdGNoWzJdKTtcbiAgICAgIGlmIChtYXNrTGVuZ3RoID49IDAgJiYgbWFza0xlbmd0aCA8PSAxMjgpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLnBhcnNlKG1hdGNoWzFdKSwgbWFza0xlbmd0aF07XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogc3RyaW5nIGlzIG5vdCBmb3JtYXR0ZWQgbGlrZSBhbiBJUHY2IENJRFIgcmFuZ2VcIik7XG4gIH07XG5cbiAgaXBhZGRyLmlzVmFsaWQgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICByZXR1cm4gaXBhZGRyLklQdjYuaXNWYWxpZChzdHJpbmcpIHx8IGlwYWRkci5JUHY0LmlzVmFsaWQoc3RyaW5nKTtcbiAgfTtcblxuICBpcGFkZHIucGFyc2UgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICBpZiAoaXBhZGRyLklQdjYuaXNWYWxpZChzdHJpbmcpKSB7XG4gICAgICByZXR1cm4gaXBhZGRyLklQdjYucGFyc2Uoc3RyaW5nKTtcbiAgICB9IGVsc2UgaWYgKGlwYWRkci5JUHY0LmlzVmFsaWQoc3RyaW5nKSkge1xuICAgICAgcmV0dXJuIGlwYWRkci5JUHY0LnBhcnNlKHN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogdGhlIGFkZHJlc3MgaGFzIG5laXRoZXIgSVB2NiBub3IgSVB2NCBmb3JtYXRcIik7XG4gICAgfVxuICB9O1xuXG4gIGlwYWRkci5wYXJzZUNJRFIgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICB2YXIgZTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGlwYWRkci5JUHY2LnBhcnNlQ0lEUihzdHJpbmcpO1xuICAgIH0gY2F0Y2ggKGVycm9yMSkge1xuICAgICAgZSA9IGVycm9yMTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBpcGFkZHIuSVB2NC5wYXJzZUNJRFIoc3RyaW5nKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yMSkge1xuICAgICAgICBlID0gZXJyb3IxO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IHRoZSBhZGRyZXNzIGhhcyBuZWl0aGVyIElQdjYgbm9yIElQdjQgQ0lEUiBmb3JtYXRcIik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGlwYWRkci5mcm9tQnl0ZUFycmF5ID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICB2YXIgbGVuZ3RoO1xuICAgIGxlbmd0aCA9IGJ5dGVzLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoID09PSA0KSB7XG4gICAgICByZXR1cm4gbmV3IGlwYWRkci5JUHY0KGJ5dGVzKTtcbiAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gMTYpIHtcbiAgICAgIHJldHVybiBuZXcgaXBhZGRyLklQdjYoYnl0ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IHRoZSBiaW5hcnkgaW5wdXQgaXMgbmVpdGhlciBhbiBJUHY2IG5vciBJUHY0IGFkZHJlc3NcIik7XG4gICAgfVxuICB9O1xuXG4gIGlwYWRkci5wcm9jZXNzID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIGFkZHI7XG4gICAgYWRkciA9IHRoaXMucGFyc2Uoc3RyaW5nKTtcbiAgICBpZiAoYWRkci5raW5kKCkgPT09ICdpcHY2JyAmJiBhZGRyLmlzSVB2NE1hcHBlZEFkZHJlc3MoKSkge1xuICAgICAgcmV0dXJuIGFkZHIudG9JUHY0QWRkcmVzcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWRkcjtcbiAgICB9XG4gIH07XG5cbn0pLmNhbGwodGhpcyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaXBhZGRyLmpzL2xpYi9pcGFkZHIuanNcbi8vIG1vZHVsZSBpZCA9IDE3MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xyXG5cdGlmKCFtb2R1bGUud2VicGFja1BvbHlmaWxsKSB7XHJcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcclxuXHRcdG1vZHVsZS5wYXRocyA9IFtdO1xyXG5cdFx0Ly8gbW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XHJcblx0XHRpZighbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcclxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwibG9hZGVkXCIsIHtcclxuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmw7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJpZFwiLCB7XHJcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXHJcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdG1vZHVsZS53ZWJwYWNrUG9seWZpbGwgPSAxO1xyXG5cdH1cclxuXHRyZXR1cm4gbW9kdWxlO1xyXG59O1xyXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL21vZHVsZS5qc1xuLy8gbW9kdWxlIGlkID0gMTczXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZXhwcmVzc1xuICogQ29weXJpZ2h0KGMpIDIwMDktMjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTMgUm9tYW4gU2h0eWxtYW5cbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgYWNjZXB0cyA9IHJlcXVpcmUoJ2FjY2VwdHMnKTtcbnZhciBkZXByZWNhdGUgPSByZXF1aXJlKCdkZXBkJykoJ2V4cHJlc3MnKTtcbnZhciBpc0lQID0gcmVxdWlyZSgnbmV0JykuaXNJUDtcbnZhciB0eXBlaXMgPSByZXF1aXJlKCd0eXBlLWlzJyk7XG52YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcbnZhciBmcmVzaCA9IHJlcXVpcmUoJ2ZyZXNoJyk7XG52YXIgcGFyc2VSYW5nZSA9IHJlcXVpcmUoJ3JhbmdlLXBhcnNlcicpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgncGFyc2V1cmwnKTtcbnZhciBwcm94eWFkZHIgPSByZXF1aXJlKCdwcm94eS1hZGRyJyk7XG5cbi8qKlxuICogUmVxdWVzdCBwcm90b3R5cGUuXG4gKiBAcHVibGljXG4gKi9cblxudmFyIHJlcSA9IE9iamVjdC5jcmVhdGUoaHR0cC5JbmNvbWluZ01lc3NhZ2UucHJvdG90eXBlKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcmVxXG5cbi8qKlxuICogUmV0dXJuIHJlcXVlc3QgaGVhZGVyLlxuICpcbiAqIFRoZSBgUmVmZXJyZXJgIGhlYWRlciBmaWVsZCBpcyBzcGVjaWFsLWNhc2VkLFxuICogYm90aCBgUmVmZXJyZXJgIGFuZCBgUmVmZXJlcmAgYXJlIGludGVyY2hhbmdlYWJsZS5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgcmVxLmdldCgnQ29udGVudC1UeXBlJyk7XG4gKiAgICAgLy8gPT4gXCJ0ZXh0L3BsYWluXCJcbiAqXG4gKiAgICAgcmVxLmdldCgnY29udGVudC10eXBlJyk7XG4gKiAgICAgLy8gPT4gXCJ0ZXh0L3BsYWluXCJcbiAqXG4gKiAgICAgcmVxLmdldCgnU29tZXRoaW5nJyk7XG4gKiAgICAgLy8gPT4gdW5kZWZpbmVkXG4gKlxuICogQWxpYXNlZCBhcyBgcmVxLmhlYWRlcigpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybiB7U3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5cbnJlcS5nZXQgPVxucmVxLmhlYWRlciA9IGZ1bmN0aW9uIGhlYWRlcihuYW1lKSB7XG4gIGlmICghbmFtZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25hbWUgYXJndW1lbnQgaXMgcmVxdWlyZWQgdG8gcmVxLmdldCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25hbWUgbXVzdCBiZSBhIHN0cmluZyB0byByZXEuZ2V0Jyk7XG4gIH1cblxuICB2YXIgbGMgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgc3dpdGNoIChsYykge1xuICAgIGNhc2UgJ3JlZmVyZXInOlxuICAgIGNhc2UgJ3JlZmVycmVyJzpcbiAgICAgIHJldHVybiB0aGlzLmhlYWRlcnMucmVmZXJyZXJcbiAgICAgICAgfHwgdGhpcy5oZWFkZXJzLnJlZmVyZXI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB0aGlzLmhlYWRlcnNbbGNdO1xuICB9XG59O1xuXG4vKipcbiAqIFRvIGRvOiB1cGRhdGUgZG9jcy5cbiAqXG4gKiBDaGVjayBpZiB0aGUgZ2l2ZW4gYHR5cGUocylgIGlzIGFjY2VwdGFibGUsIHJldHVybmluZ1xuICogdGhlIGJlc3QgbWF0Y2ggd2hlbiB0cnVlLCBvdGhlcndpc2UgYHVuZGVmaW5lZGAsIGluIHdoaWNoXG4gKiBjYXNlIHlvdSBzaG91bGQgcmVzcG9uZCB3aXRoIDQwNiBcIk5vdCBBY2NlcHRhYmxlXCIuXG4gKlxuICogVGhlIGB0eXBlYCB2YWx1ZSBtYXkgYmUgYSBzaW5nbGUgTUlNRSB0eXBlIHN0cmluZ1xuICogc3VjaCBhcyBcImFwcGxpY2F0aW9uL2pzb25cIiwgYW4gZXh0ZW5zaW9uIG5hbWVcbiAqIHN1Y2ggYXMgXCJqc29uXCIsIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Qgc3VjaCBhcyBcImpzb24sIGh0bWwsIHRleHQvcGxhaW5cIixcbiAqIGFuIGFyZ3VtZW50IGxpc3Qgc3VjaCBhcyBgXCJqc29uXCIsIFwiaHRtbFwiLCBcInRleHQvcGxhaW5cImAsXG4gKiBvciBhbiBhcnJheSBgW1wianNvblwiLCBcImh0bWxcIiwgXCJ0ZXh0L3BsYWluXCJdYC4gV2hlbiBhIGxpc3RcbiAqIG9yIGFycmF5IGlzIGdpdmVuLCB0aGUgX2Jlc3RfIG1hdGNoLCBpZiBhbnkgaXMgcmV0dXJuZWQuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIC8vIEFjY2VwdDogdGV4dC9odG1sXG4gKiAgICAgcmVxLmFjY2VwdHMoJ2h0bWwnKTtcbiAqICAgICAvLyA9PiBcImh0bWxcIlxuICpcbiAqICAgICAvLyBBY2NlcHQ6IHRleHQvKiwgYXBwbGljYXRpb24vanNvblxuICogICAgIHJlcS5hY2NlcHRzKCdodG1sJyk7XG4gKiAgICAgLy8gPT4gXCJodG1sXCJcbiAqICAgICByZXEuYWNjZXB0cygndGV4dC9odG1sJyk7XG4gKiAgICAgLy8gPT4gXCJ0ZXh0L2h0bWxcIlxuICogICAgIHJlcS5hY2NlcHRzKCdqc29uLCB0ZXh0Jyk7XG4gKiAgICAgLy8gPT4gXCJqc29uXCJcbiAqICAgICByZXEuYWNjZXB0cygnYXBwbGljYXRpb24vanNvbicpO1xuICogICAgIC8vID0+IFwiYXBwbGljYXRpb24vanNvblwiXG4gKlxuICogICAgIC8vIEFjY2VwdDogdGV4dC8qLCBhcHBsaWNhdGlvbi9qc29uXG4gKiAgICAgcmVxLmFjY2VwdHMoJ2ltYWdlL3BuZycpO1xuICogICAgIHJlcS5hY2NlcHRzKCdwbmcnKTtcbiAqICAgICAvLyA9PiB1bmRlZmluZWRcbiAqXG4gKiAgICAgLy8gQWNjZXB0OiB0ZXh0Lyo7cT0uNSwgYXBwbGljYXRpb24vanNvblxuICogICAgIHJlcS5hY2NlcHRzKFsnaHRtbCcsICdqc29uJ10pO1xuICogICAgIHJlcS5hY2NlcHRzKCdodG1sJywgJ2pzb24nKTtcbiAqICAgICByZXEuYWNjZXB0cygnaHRtbCwganNvbicpO1xuICogICAgIC8vID0+IFwianNvblwiXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHR5cGUocylcbiAqIEByZXR1cm4ge1N0cmluZ3xBcnJheXxCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbnJlcS5hY2NlcHRzID0gZnVuY3Rpb24oKXtcbiAgdmFyIGFjY2VwdCA9IGFjY2VwdHModGhpcyk7XG4gIHJldHVybiBhY2NlcHQudHlwZXMuYXBwbHkoYWNjZXB0LCBhcmd1bWVudHMpO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgZ2l2ZW4gYGVuY29kaW5nYHMgYXJlIGFjY2VwdGVkLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSAuLi5lbmNvZGluZ1xuICogQHJldHVybiB7U3RyaW5nfEFycmF5fVxuICogQHB1YmxpY1xuICovXG5cbnJlcS5hY2NlcHRzRW5jb2RpbmdzID0gZnVuY3Rpb24oKXtcbiAgdmFyIGFjY2VwdCA9IGFjY2VwdHModGhpcyk7XG4gIHJldHVybiBhY2NlcHQuZW5jb2RpbmdzLmFwcGx5KGFjY2VwdCwgYXJndW1lbnRzKTtcbn07XG5cbnJlcS5hY2NlcHRzRW5jb2RpbmcgPSBkZXByZWNhdGUuZnVuY3Rpb24ocmVxLmFjY2VwdHNFbmNvZGluZ3MsXG4gICdyZXEuYWNjZXB0c0VuY29kaW5nOiBVc2UgYWNjZXB0c0VuY29kaW5ncyBpbnN0ZWFkJyk7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIGBjaGFyc2V0YHMgYXJlIGFjY2VwdGFibGUsXG4gKiBvdGhlcndpc2UgeW91IHNob3VsZCByZXNwb25kIHdpdGggNDA2IFwiTm90IEFjY2VwdGFibGVcIi5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gLi4uY2hhcnNldFxuICogQHJldHVybiB7U3RyaW5nfEFycmF5fVxuICogQHB1YmxpY1xuICovXG5cbnJlcS5hY2NlcHRzQ2hhcnNldHMgPSBmdW5jdGlvbigpe1xuICB2YXIgYWNjZXB0ID0gYWNjZXB0cyh0aGlzKTtcbiAgcmV0dXJuIGFjY2VwdC5jaGFyc2V0cy5hcHBseShhY2NlcHQsIGFyZ3VtZW50cyk7XG59O1xuXG5yZXEuYWNjZXB0c0NoYXJzZXQgPSBkZXByZWNhdGUuZnVuY3Rpb24ocmVxLmFjY2VwdHNDaGFyc2V0cyxcbiAgJ3JlcS5hY2NlcHRzQ2hhcnNldDogVXNlIGFjY2VwdHNDaGFyc2V0cyBpbnN0ZWFkJyk7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIGBsYW5nYHMgYXJlIGFjY2VwdGFibGUsXG4gKiBvdGhlcndpc2UgeW91IHNob3VsZCByZXNwb25kIHdpdGggNDA2IFwiTm90IEFjY2VwdGFibGVcIi5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gLi4ubGFuZ1xuICogQHJldHVybiB7U3RyaW5nfEFycmF5fVxuICogQHB1YmxpY1xuICovXG5cbnJlcS5hY2NlcHRzTGFuZ3VhZ2VzID0gZnVuY3Rpb24oKXtcbiAgdmFyIGFjY2VwdCA9IGFjY2VwdHModGhpcyk7XG4gIHJldHVybiBhY2NlcHQubGFuZ3VhZ2VzLmFwcGx5KGFjY2VwdCwgYXJndW1lbnRzKTtcbn07XG5cbnJlcS5hY2NlcHRzTGFuZ3VhZ2UgPSBkZXByZWNhdGUuZnVuY3Rpb24ocmVxLmFjY2VwdHNMYW5ndWFnZXMsXG4gICdyZXEuYWNjZXB0c0xhbmd1YWdlOiBVc2UgYWNjZXB0c0xhbmd1YWdlcyBpbnN0ZWFkJyk7XG5cbi8qKlxuICogUGFyc2UgUmFuZ2UgaGVhZGVyIGZpZWxkLCBjYXBwaW5nIHRvIHRoZSBnaXZlbiBgc2l6ZWAuXG4gKlxuICogVW5zcGVjaWZpZWQgcmFuZ2VzIHN1Y2ggYXMgXCIwLVwiIHJlcXVpcmUga25vd2xlZGdlIG9mIHlvdXIgcmVzb3VyY2UgbGVuZ3RoLiBJblxuICogdGhlIGNhc2Ugb2YgYSBieXRlIHJhbmdlIHRoaXMgaXMgb2YgY291cnNlIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMuIElmIHRoZVxuICogUmFuZ2UgaGVhZGVyIGZpZWxkIGlzIG5vdCBnaXZlbiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZCwgYC0xYCB3aGVuIHVuc2F0aXNmaWFibGUsXG4gKiBhbmQgYC0yYCB3aGVuIHN5bnRhY3RpY2FsbHkgaW52YWxpZC5cbiAqXG4gKiBXaGVuIHJhbmdlcyBhcmUgcmV0dXJuZWQsIHRoZSBhcnJheSBoYXMgYSBcInR5cGVcIiBwcm9wZXJ0eSB3aGljaCBpcyB0aGUgdHlwZSBvZlxuICogcmFuZ2UgdGhhdCBpcyByZXF1aXJlZCAobW9zdCBjb21tb25seSwgXCJieXRlc1wiKS4gRWFjaCBhcnJheSBlbGVtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCBhIFwic3RhcnRcIiBhbmQgXCJlbmRcIiBwcm9wZXJ0eSBmb3IgdGhlIHBvcnRpb24gb2YgdGhlIHJhbmdlLlxuICpcbiAqIFRoZSBcImNvbWJpbmVcIiBvcHRpb24gY2FuIGJlIHNldCB0byBgdHJ1ZWAgYW5kIG92ZXJsYXBwaW5nICYgYWRqYWNlbnQgcmFuZ2VzXG4gKiB3aWxsIGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgcmFuZ2UuXG4gKlxuICogTk9URTogcmVtZW1iZXIgdGhhdCByYW5nZXMgYXJlIGluY2x1c2l2ZSwgc28gZm9yIGV4YW1wbGUgXCJSYW5nZTogdXNlcnM9MC0zXCJcbiAqIHNob3VsZCByZXNwb25kIHdpdGggNCB1c2VycyB3aGVuIGF2YWlsYWJsZSwgbm90IDMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHNpemVcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuY29tYmluZT1mYWxzZV1cbiAqIEByZXR1cm4ge251bWJlcnxhcnJheX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXEucmFuZ2UgPSBmdW5jdGlvbiByYW5nZShzaXplLCBvcHRpb25zKSB7XG4gIHZhciByYW5nZSA9IHRoaXMuZ2V0KCdSYW5nZScpO1xuICBpZiAoIXJhbmdlKSByZXR1cm47XG4gIHJldHVybiBwYXJzZVJhbmdlKHNpemUsIHJhbmdlLCBvcHRpb25zKTtcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSB2YWx1ZSBvZiBwYXJhbSBgbmFtZWAgd2hlbiBwcmVzZW50IG9yIGBkZWZhdWx0VmFsdWVgLlxuICpcbiAqICAtIENoZWNrcyByb3V0ZSBwbGFjZWhvbGRlcnMsIGV4OiBfL3VzZXIvOmlkX1xuICogIC0gQ2hlY2tzIGJvZHkgcGFyYW1zLCBleDogaWQ9MTIsIHtcImlkXCI6MTJ9XG4gKiAgLSBDaGVja3MgcXVlcnkgc3RyaW5nIHBhcmFtcywgZXg6ID9pZD0xMlxuICpcbiAqIFRvIHV0aWxpemUgcmVxdWVzdCBib2RpZXMsIGByZXEuYm9keWBcbiAqIHNob3VsZCBiZSBhbiBvYmplY3QuIFRoaXMgY2FuIGJlIGRvbmUgYnkgdXNpbmdcbiAqIHRoZSBgYm9keVBhcnNlcigpYCBtaWRkbGV3YXJlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge01peGVkfSBbZGVmYXVsdFZhbHVlXVxuICogQHJldHVybiB7U3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5cbnJlcS5wYXJhbSA9IGZ1bmN0aW9uIHBhcmFtKG5hbWUsIGRlZmF1bHRWYWx1ZSkge1xuICB2YXIgcGFyYW1zID0gdGhpcy5wYXJhbXMgfHwge307XG4gIHZhciBib2R5ID0gdGhpcy5ib2R5IHx8IHt9O1xuICB2YXIgcXVlcnkgPSB0aGlzLnF1ZXJ5IHx8IHt9O1xuXG4gIHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMVxuICAgID8gJ25hbWUnXG4gICAgOiAnbmFtZSwgZGVmYXVsdCc7XG4gIGRlcHJlY2F0ZSgncmVxLnBhcmFtKCcgKyBhcmdzICsgJyk6IFVzZSByZXEucGFyYW1zLCByZXEuYm9keSwgb3IgcmVxLnF1ZXJ5IGluc3RlYWQnKTtcblxuICBpZiAobnVsbCAhPSBwYXJhbXNbbmFtZV0gJiYgcGFyYW1zLmhhc093blByb3BlcnR5KG5hbWUpKSByZXR1cm4gcGFyYW1zW25hbWVdO1xuICBpZiAobnVsbCAhPSBib2R5W25hbWVdKSByZXR1cm4gYm9keVtuYW1lXTtcbiAgaWYgKG51bGwgIT0gcXVlcnlbbmFtZV0pIHJldHVybiBxdWVyeVtuYW1lXTtcblxuICByZXR1cm4gZGVmYXVsdFZhbHVlO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgaW5jb21pbmcgcmVxdWVzdCBjb250YWlucyB0aGUgXCJDb250ZW50LVR5cGVcIlxuICogaGVhZGVyIGZpZWxkLCBhbmQgaXQgY29udGFpbnMgdGhlIGdpdmUgbWltZSBgdHlwZWAuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgICAvLyBXaXRoIENvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XG4gKiAgICAgIHJlcS5pcygnaHRtbCcpO1xuICogICAgICByZXEuaXMoJ3RleHQvaHRtbCcpO1xuICogICAgICByZXEuaXMoJ3RleHQvKicpO1xuICogICAgICAvLyA9PiB0cnVlXG4gKlxuICogICAgICAvLyBXaGVuIENvbnRlbnQtVHlwZSBpcyBhcHBsaWNhdGlvbi9qc29uXG4gKiAgICAgIHJlcS5pcygnanNvbicpO1xuICogICAgICByZXEuaXMoJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAqICAgICAgcmVxLmlzKCdhcHBsaWNhdGlvbi8qJyk7XG4gKiAgICAgIC8vID0+IHRydWVcbiAqXG4gKiAgICAgIHJlcS5pcygnaHRtbCcpO1xuICogICAgICAvLyA9PiBmYWxzZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSB0eXBlcy4uLlxuICogQHJldHVybiB7U3RyaW5nfGZhbHNlfG51bGx9XG4gKiBAcHVibGljXG4gKi9cblxucmVxLmlzID0gZnVuY3Rpb24gaXModHlwZXMpIHtcbiAgdmFyIGFyciA9IHR5cGVzO1xuXG4gIC8vIHN1cHBvcnQgZmxhdHRlbmVkIGFyZ3VtZW50c1xuICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZXMpKSB7XG4gICAgYXJyID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcnJbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHR5cGVpcyh0aGlzLCBhcnIpO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIHByb3RvY29sIHN0cmluZyBcImh0dHBcIiBvciBcImh0dHBzXCJcbiAqIHdoZW4gcmVxdWVzdGVkIHdpdGggVExTLiBXaGVuIHRoZSBcInRydXN0IHByb3h5XCJcbiAqIHNldHRpbmcgdHJ1c3RzIHRoZSBzb2NrZXQgYWRkcmVzcywgdGhlXG4gKiBcIlgtRm9yd2FyZGVkLVByb3RvXCIgaGVhZGVyIGZpZWxkIHdpbGwgYmUgdHJ1c3RlZFxuICogYW5kIHVzZWQgaWYgcHJlc2VudC5cbiAqXG4gKiBJZiB5b3UncmUgcnVubmluZyBiZWhpbmQgYSByZXZlcnNlIHByb3h5IHRoYXRcbiAqIHN1cHBsaWVzIGh0dHBzIGZvciB5b3UgdGhpcyBtYXkgYmUgZW5hYmxlZC5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZGVmaW5lR2V0dGVyKHJlcSwgJ3Byb3RvY29sJywgZnVuY3Rpb24gcHJvdG9jb2woKXtcbiAgdmFyIHByb3RvID0gdGhpcy5jb25uZWN0aW9uLmVuY3J5cHRlZFxuICAgID8gJ2h0dHBzJ1xuICAgIDogJ2h0dHAnO1xuICB2YXIgdHJ1c3QgPSB0aGlzLmFwcC5nZXQoJ3RydXN0IHByb3h5IGZuJyk7XG5cbiAgaWYgKCF0cnVzdCh0aGlzLmNvbm5lY3Rpb24ucmVtb3RlQWRkcmVzcywgMCkpIHtcbiAgICByZXR1cm4gcHJvdG87XG4gIH1cblxuICAvLyBOb3RlOiBYLUZvcndhcmRlZC1Qcm90byBpcyBub3JtYWxseSBvbmx5IGV2ZXIgYVxuICAvLyAgICAgICBzaW5nbGUgdmFsdWUsIGJ1dCB0aGlzIGlzIHRvIGJlIHNhZmUuXG4gIHZhciBoZWFkZXIgPSB0aGlzLmdldCgnWC1Gb3J3YXJkZWQtUHJvdG8nKSB8fCBwcm90b1xuICB2YXIgaW5kZXggPSBoZWFkZXIuaW5kZXhPZignLCcpXG5cbiAgcmV0dXJuIGluZGV4ICE9PSAtMVxuICAgID8gaGVhZGVyLnN1YnN0cmluZygwLCBpbmRleCkudHJpbSgpXG4gICAgOiBoZWFkZXIudHJpbSgpXG59KTtcblxuLyoqXG4gKiBTaG9ydC1oYW5kIGZvcjpcbiAqXG4gKiAgICByZXEucHJvdG9jb2wgPT09ICdodHRwcydcbiAqXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmRlZmluZUdldHRlcihyZXEsICdzZWN1cmUnLCBmdW5jdGlvbiBzZWN1cmUoKXtcbiAgcmV0dXJuIHRoaXMucHJvdG9jb2wgPT09ICdodHRwcyc7XG59KTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIHJlbW90ZSBhZGRyZXNzIGZyb20gdGhlIHRydXN0ZWQgcHJveHkuXG4gKlxuICogVGhlIGlzIHRoZSByZW1vdGUgYWRkcmVzcyBvbiB0aGUgc29ja2V0IHVubGVzc1xuICogXCJ0cnVzdCBwcm94eVwiIGlzIHNldC5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZGVmaW5lR2V0dGVyKHJlcSwgJ2lwJywgZnVuY3Rpb24gaXAoKXtcbiAgdmFyIHRydXN0ID0gdGhpcy5hcHAuZ2V0KCd0cnVzdCBwcm94eSBmbicpO1xuICByZXR1cm4gcHJveHlhZGRyKHRoaXMsIHRydXN0KTtcbn0pO1xuXG4vKipcbiAqIFdoZW4gXCJ0cnVzdCBwcm94eVwiIGlzIHNldCwgdHJ1c3RlZCBwcm94eSBhZGRyZXNzZXMgKyBjbGllbnQuXG4gKlxuICogRm9yIGV4YW1wbGUgaWYgdGhlIHZhbHVlIHdlcmUgXCJjbGllbnQsIHByb3h5MSwgcHJveHkyXCJcbiAqIHlvdSB3b3VsZCByZWNlaXZlIHRoZSBhcnJheSBgW1wiY2xpZW50XCIsIFwicHJveHkxXCIsIFwicHJveHkyXCJdYFxuICogd2hlcmUgXCJwcm94eTJcIiBpcyB0aGUgZnVydGhlc3QgZG93bi1zdHJlYW0gYW5kIFwicHJveHkxXCIgYW5kXG4gKiBcInByb3h5MlwiIHdlcmUgdHJ1c3RlZC5cbiAqXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5kZWZpbmVHZXR0ZXIocmVxLCAnaXBzJywgZnVuY3Rpb24gaXBzKCkge1xuICB2YXIgdHJ1c3QgPSB0aGlzLmFwcC5nZXQoJ3RydXN0IHByb3h5IGZuJyk7XG4gIHZhciBhZGRycyA9IHByb3h5YWRkci5hbGwodGhpcywgdHJ1c3QpO1xuXG4gIC8vIHJldmVyc2UgdGhlIG9yZGVyICh0byBmYXJ0aGVzdCAtPiBjbG9zZXN0KVxuICAvLyBhbmQgcmVtb3ZlIHNvY2tldCBhZGRyZXNzXG4gIGFkZHJzLnJldmVyc2UoKS5wb3AoKVxuXG4gIHJldHVybiBhZGRyc1xufSk7XG5cbi8qKlxuICogUmV0dXJuIHN1YmRvbWFpbnMgYXMgYW4gYXJyYXkuXG4gKlxuICogU3ViZG9tYWlucyBhcmUgdGhlIGRvdC1zZXBhcmF0ZWQgcGFydHMgb2YgdGhlIGhvc3QgYmVmb3JlIHRoZSBtYWluIGRvbWFpbiBvZlxuICogdGhlIGFwcC4gQnkgZGVmYXVsdCwgdGhlIGRvbWFpbiBvZiB0aGUgYXBwIGlzIGFzc3VtZWQgdG8gYmUgdGhlIGxhc3QgdHdvXG4gKiBwYXJ0cyBvZiB0aGUgaG9zdC4gVGhpcyBjYW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIFwic3ViZG9tYWluIG9mZnNldFwiLlxuICpcbiAqIEZvciBleGFtcGxlLCBpZiB0aGUgZG9tYWluIGlzIFwidG9iaS5mZXJyZXRzLmV4YW1wbGUuY29tXCI6XG4gKiBJZiBcInN1YmRvbWFpbiBvZmZzZXRcIiBpcyBub3Qgc2V0LCByZXEuc3ViZG9tYWlucyBpcyBgW1wiZmVycmV0c1wiLCBcInRvYmlcIl1gLlxuICogSWYgXCJzdWJkb21haW4gb2Zmc2V0XCIgaXMgMywgcmVxLnN1YmRvbWFpbnMgaXMgYFtcInRvYmlcIl1gLlxuICpcbiAqIEByZXR1cm4ge0FycmF5fVxuICogQHB1YmxpY1xuICovXG5cbmRlZmluZUdldHRlcihyZXEsICdzdWJkb21haW5zJywgZnVuY3Rpb24gc3ViZG9tYWlucygpIHtcbiAgdmFyIGhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZTtcblxuICBpZiAoIWhvc3RuYW1lKSByZXR1cm4gW107XG5cbiAgdmFyIG9mZnNldCA9IHRoaXMuYXBwLmdldCgnc3ViZG9tYWluIG9mZnNldCcpO1xuICB2YXIgc3ViZG9tYWlucyA9ICFpc0lQKGhvc3RuYW1lKVxuICAgID8gaG9zdG5hbWUuc3BsaXQoJy4nKS5yZXZlcnNlKClcbiAgICA6IFtob3N0bmFtZV07XG5cbiAgcmV0dXJuIHN1YmRvbWFpbnMuc2xpY2Uob2Zmc2V0KTtcbn0pO1xuXG4vKipcbiAqIFNob3J0LWhhbmQgZm9yIGB1cmwucGFyc2UocmVxLnVybCkucGF0aG5hbWVgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5kZWZpbmVHZXR0ZXIocmVxLCAncGF0aCcsIGZ1bmN0aW9uIHBhdGgoKSB7XG4gIHJldHVybiBwYXJzZSh0aGlzKS5wYXRobmFtZTtcbn0pO1xuXG4vKipcbiAqIFBhcnNlIHRoZSBcIkhvc3RcIiBoZWFkZXIgZmllbGQgdG8gYSBob3N0bmFtZS5cbiAqXG4gKiBXaGVuIHRoZSBcInRydXN0IHByb3h5XCIgc2V0dGluZyB0cnVzdHMgdGhlIHNvY2tldFxuICogYWRkcmVzcywgdGhlIFwiWC1Gb3J3YXJkZWQtSG9zdFwiIGhlYWRlciBmaWVsZCB3aWxsXG4gKiBiZSB0cnVzdGVkLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5kZWZpbmVHZXR0ZXIocmVxLCAnaG9zdG5hbWUnLCBmdW5jdGlvbiBob3N0bmFtZSgpe1xuICB2YXIgdHJ1c3QgPSB0aGlzLmFwcC5nZXQoJ3RydXN0IHByb3h5IGZuJyk7XG4gIHZhciBob3N0ID0gdGhpcy5nZXQoJ1gtRm9yd2FyZGVkLUhvc3QnKTtcblxuICBpZiAoIWhvc3QgfHwgIXRydXN0KHRoaXMuY29ubmVjdGlvbi5yZW1vdGVBZGRyZXNzLCAwKSkge1xuICAgIGhvc3QgPSB0aGlzLmdldCgnSG9zdCcpO1xuICB9XG5cbiAgaWYgKCFob3N0KSByZXR1cm47XG5cbiAgLy8gSVB2NiBsaXRlcmFsIHN1cHBvcnRcbiAgdmFyIG9mZnNldCA9IGhvc3RbMF0gPT09ICdbJ1xuICAgID8gaG9zdC5pbmRleE9mKCddJykgKyAxXG4gICAgOiAwO1xuICB2YXIgaW5kZXggPSBob3N0LmluZGV4T2YoJzonLCBvZmZzZXQpO1xuXG4gIHJldHVybiBpbmRleCAhPT0gLTFcbiAgICA/IGhvc3Quc3Vic3RyaW5nKDAsIGluZGV4KVxuICAgIDogaG9zdDtcbn0pO1xuXG4vLyBUT0RPOiBjaGFuZ2UgcmVxLmhvc3QgdG8gcmV0dXJuIGhvc3QgaW4gbmV4dCBtYWpvclxuXG5kZWZpbmVHZXR0ZXIocmVxLCAnaG9zdCcsIGRlcHJlY2F0ZS5mdW5jdGlvbihmdW5jdGlvbiBob3N0KCl7XG4gIHJldHVybiB0aGlzLmhvc3RuYW1lO1xufSwgJ3JlcS5ob3N0OiBVc2UgcmVxLmhvc3RuYW1lIGluc3RlYWQnKSk7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHJlcXVlc3QgaXMgZnJlc2gsIGFrYVxuICogTGFzdC1Nb2RpZmllZCBhbmQvb3IgdGhlIEVUYWdcbiAqIHN0aWxsIG1hdGNoLlxuICpcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAcHVibGljXG4gKi9cblxuZGVmaW5lR2V0dGVyKHJlcSwgJ2ZyZXNoJywgZnVuY3Rpb24oKXtcbiAgdmFyIG1ldGhvZCA9IHRoaXMubWV0aG9kO1xuICB2YXIgcmVzID0gdGhpcy5yZXNcbiAgdmFyIHN0YXR1cyA9IHJlcy5zdGF0dXNDb2RlXG5cbiAgLy8gR0VUIG9yIEhFQUQgZm9yIHdlYWsgZnJlc2huZXNzIHZhbGlkYXRpb24gb25seVxuICBpZiAoJ0dFVCcgIT09IG1ldGhvZCAmJiAnSEVBRCcgIT09IG1ldGhvZCkgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIDJ4eCBvciAzMDQgYXMgcGVyIHJmYzI2MTYgMTQuMjZcbiAgaWYgKChzdGF0dXMgPj0gMjAwICYmIHN0YXR1cyA8IDMwMCkgfHwgMzA0ID09PSBzdGF0dXMpIHtcbiAgICByZXR1cm4gZnJlc2godGhpcy5oZWFkZXJzLCB7XG4gICAgICAnZXRhZyc6IHJlcy5nZXQoJ0VUYWcnKSxcbiAgICAgICdsYXN0LW1vZGlmaWVkJzogcmVzLmdldCgnTGFzdC1Nb2RpZmllZCcpXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn0pO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIHN0YWxlLCBha2FcbiAqIFwiTGFzdC1Nb2RpZmllZFwiIGFuZCAvIG9yIHRoZSBcIkVUYWdcIiBmb3IgdGhlXG4gKiByZXNvdXJjZSBoYXMgY2hhbmdlZC5cbiAqXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmRlZmluZUdldHRlcihyZXEsICdzdGFsZScsIGZ1bmN0aW9uIHN0YWxlKCl7XG4gIHJldHVybiAhdGhpcy5mcmVzaDtcbn0pO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZXF1ZXN0IHdhcyBhbiBfWE1MSHR0cFJlcXVlc3RfLlxuICpcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAcHVibGljXG4gKi9cblxuZGVmaW5lR2V0dGVyKHJlcSwgJ3hocicsIGZ1bmN0aW9uIHhocigpe1xuICB2YXIgdmFsID0gdGhpcy5nZXQoJ1gtUmVxdWVzdGVkLVdpdGgnKSB8fCAnJztcbiAgcmV0dXJuIHZhbC50b0xvd2VyQ2FzZSgpID09PSAneG1saHR0cHJlcXVlc3QnO1xufSk7XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIGdldHRlciBvbiBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGdldHRlclxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gZGVmaW5lR2V0dGVyKG9iaiwgbmFtZSwgZ2V0dGVyKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIG5hbWUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGdldHRlclxuICB9KTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi9yZXF1ZXN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBhY2NlcHRzXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgTmVnb3RpYXRvciA9IHJlcXVpcmUoJ25lZ290aWF0b3InKVxudmFyIG1pbWUgPSByZXF1aXJlKCdtaW1lLXR5cGVzJylcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY2VwdHNcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgQWNjZXB0cyBvYmplY3QgZm9yIHRoZSBnaXZlbiByZXEuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIEFjY2VwdHMgKHJlcSkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQWNjZXB0cykpIHtcbiAgICByZXR1cm4gbmV3IEFjY2VwdHMocmVxKVxuICB9XG5cbiAgdGhpcy5oZWFkZXJzID0gcmVxLmhlYWRlcnNcbiAgdGhpcy5uZWdvdGlhdG9yID0gbmV3IE5lZ290aWF0b3IocmVxKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBnaXZlbiBgdHlwZShzKWAgaXMgYWNjZXB0YWJsZSwgcmV0dXJuaW5nXG4gKiB0aGUgYmVzdCBtYXRjaCB3aGVuIHRydWUsIG90aGVyd2lzZSBgdW5kZWZpbmVkYCwgaW4gd2hpY2hcbiAqIGNhc2UgeW91IHNob3VsZCByZXNwb25kIHdpdGggNDA2IFwiTm90IEFjY2VwdGFibGVcIi5cbiAqXG4gKiBUaGUgYHR5cGVgIHZhbHVlIG1heSBiZSBhIHNpbmdsZSBtaW1lIHR5cGUgc3RyaW5nXG4gKiBzdWNoIGFzIFwiYXBwbGljYXRpb24vanNvblwiLCB0aGUgZXh0ZW5zaW9uIG5hbWVcbiAqIHN1Y2ggYXMgXCJqc29uXCIgb3IgYW4gYXJyYXkgYFtcImpzb25cIiwgXCJodG1sXCIsIFwidGV4dC9wbGFpblwiXWAuIFdoZW4gYSBsaXN0XG4gKiBvciBhcnJheSBpcyBnaXZlbiB0aGUgX2Jlc3RfIG1hdGNoLCBpZiBhbnkgaXMgcmV0dXJuZWQuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIC8vIEFjY2VwdDogdGV4dC9odG1sXG4gKiAgICAgdGhpcy50eXBlcygnaHRtbCcpO1xuICogICAgIC8vID0+IFwiaHRtbFwiXG4gKlxuICogICAgIC8vIEFjY2VwdDogdGV4dC8qLCBhcHBsaWNhdGlvbi9qc29uXG4gKiAgICAgdGhpcy50eXBlcygnaHRtbCcpO1xuICogICAgIC8vID0+IFwiaHRtbFwiXG4gKiAgICAgdGhpcy50eXBlcygndGV4dC9odG1sJyk7XG4gKiAgICAgLy8gPT4gXCJ0ZXh0L2h0bWxcIlxuICogICAgIHRoaXMudHlwZXMoJ2pzb24nLCAndGV4dCcpO1xuICogICAgIC8vID0+IFwianNvblwiXG4gKiAgICAgdGhpcy50eXBlcygnYXBwbGljYXRpb24vanNvbicpO1xuICogICAgIC8vID0+IFwiYXBwbGljYXRpb24vanNvblwiXG4gKlxuICogICAgIC8vIEFjY2VwdDogdGV4dC8qLCBhcHBsaWNhdGlvbi9qc29uXG4gKiAgICAgdGhpcy50eXBlcygnaW1hZ2UvcG5nJyk7XG4gKiAgICAgdGhpcy50eXBlcygncG5nJyk7XG4gKiAgICAgLy8gPT4gdW5kZWZpbmVkXG4gKlxuICogICAgIC8vIEFjY2VwdDogdGV4dC8qO3E9LjUsIGFwcGxpY2F0aW9uL2pzb25cbiAqICAgICB0aGlzLnR5cGVzKFsnaHRtbCcsICdqc29uJ10pO1xuICogICAgIHRoaXMudHlwZXMoJ2h0bWwnLCAnanNvbicpO1xuICogICAgIC8vID0+IFwianNvblwiXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHR5cGVzLi4uXG4gKiBAcmV0dXJuIHtTdHJpbmd8QXJyYXl8Qm9vbGVhbn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5BY2NlcHRzLnByb3RvdHlwZS50eXBlID1cbkFjY2VwdHMucHJvdG90eXBlLnR5cGVzID0gZnVuY3Rpb24gKHR5cGVzXykge1xuICB2YXIgdHlwZXMgPSB0eXBlc19cblxuICAvLyBzdXBwb3J0IGZsYXR0ZW5lZCBhcmd1bWVudHNcbiAgaWYgKHR5cGVzICYmICFBcnJheS5pc0FycmF5KHR5cGVzKSkge1xuICAgIHR5cGVzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdHlwZXNbaV0gPSBhcmd1bWVudHNbaV1cbiAgICB9XG4gIH1cblxuICAvLyBubyB0eXBlcywgcmV0dXJuIGFsbCByZXF1ZXN0ZWQgdHlwZXNcbiAgaWYgKCF0eXBlcyB8fCB0eXBlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdGhpcy5uZWdvdGlhdG9yLm1lZGlhVHlwZXMoKVxuICB9XG5cbiAgLy8gbm8gYWNjZXB0IGhlYWRlciwgcmV0dXJuIGZpcnN0IGdpdmVuIHR5cGVcbiAgaWYgKCF0aGlzLmhlYWRlcnMuYWNjZXB0KSB7XG4gICAgcmV0dXJuIHR5cGVzWzBdXG4gIH1cblxuICB2YXIgbWltZXMgPSB0eXBlcy5tYXAoZXh0VG9NaW1lKVxuICB2YXIgYWNjZXB0cyA9IHRoaXMubmVnb3RpYXRvci5tZWRpYVR5cGVzKG1pbWVzLmZpbHRlcih2YWxpZE1pbWUpKVxuICB2YXIgZmlyc3QgPSBhY2NlcHRzWzBdXG5cbiAgcmV0dXJuIGZpcnN0XG4gICAgPyB0eXBlc1ttaW1lcy5pbmRleE9mKGZpcnN0KV1cbiAgICA6IGZhbHNlXG59XG5cbi8qKlxuICogUmV0dXJuIGFjY2VwdGVkIGVuY29kaW5ncyBvciBiZXN0IGZpdCBiYXNlZCBvbiBgZW5jb2RpbmdzYC5cbiAqXG4gKiBHaXZlbiBgQWNjZXB0LUVuY29kaW5nOiBnemlwLCBkZWZsYXRlYFxuICogYW4gYXJyYXkgc29ydGVkIGJ5IHF1YWxpdHkgaXMgcmV0dXJuZWQ6XG4gKlxuICogICAgIFsnZ3ppcCcsICdkZWZsYXRlJ11cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gZW5jb2RpbmdzLi4uXG4gKiBAcmV0dXJuIHtTdHJpbmd8QXJyYXl9XG4gKiBAcHVibGljXG4gKi9cblxuQWNjZXB0cy5wcm90b3R5cGUuZW5jb2RpbmcgPVxuQWNjZXB0cy5wcm90b3R5cGUuZW5jb2RpbmdzID0gZnVuY3Rpb24gKGVuY29kaW5nc18pIHtcbiAgdmFyIGVuY29kaW5ncyA9IGVuY29kaW5nc19cblxuICAvLyBzdXBwb3J0IGZsYXR0ZW5lZCBhcmd1bWVudHNcbiAgaWYgKGVuY29kaW5ncyAmJiAhQXJyYXkuaXNBcnJheShlbmNvZGluZ3MpKSB7XG4gICAgZW5jb2RpbmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbmNvZGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGVuY29kaW5nc1tpXSA9IGFyZ3VtZW50c1tpXVxuICAgIH1cbiAgfVxuXG4gIC8vIG5vIGVuY29kaW5ncywgcmV0dXJuIGFsbCByZXF1ZXN0ZWQgZW5jb2RpbmdzXG4gIGlmICghZW5jb2RpbmdzIHx8IGVuY29kaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdGhpcy5uZWdvdGlhdG9yLmVuY29kaW5ncygpXG4gIH1cblxuICByZXR1cm4gdGhpcy5uZWdvdGlhdG9yLmVuY29kaW5ncyhlbmNvZGluZ3MpWzBdIHx8IGZhbHNlXG59XG5cbi8qKlxuICogUmV0dXJuIGFjY2VwdGVkIGNoYXJzZXRzIG9yIGJlc3QgZml0IGJhc2VkIG9uIGBjaGFyc2V0c2AuXG4gKlxuICogR2l2ZW4gYEFjY2VwdC1DaGFyc2V0OiB1dGYtOCwgaXNvLTg4NTktMTtxPTAuMiwgdXRmLTc7cT0wLjVgXG4gKiBhbiBhcnJheSBzb3J0ZWQgYnkgcXVhbGl0eSBpcyByZXR1cm5lZDpcbiAqXG4gKiAgICAgWyd1dGYtOCcsICd1dGYtNycsICdpc28tODg1OS0xJ11cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gY2hhcnNldHMuLi5cbiAqIEByZXR1cm4ge1N0cmluZ3xBcnJheX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5BY2NlcHRzLnByb3RvdHlwZS5jaGFyc2V0ID1cbkFjY2VwdHMucHJvdG90eXBlLmNoYXJzZXRzID0gZnVuY3Rpb24gKGNoYXJzZXRzXykge1xuICB2YXIgY2hhcnNldHMgPSBjaGFyc2V0c19cblxuICAvLyBzdXBwb3J0IGZsYXR0ZW5lZCBhcmd1bWVudHNcbiAgaWYgKGNoYXJzZXRzICYmICFBcnJheS5pc0FycmF5KGNoYXJzZXRzKSkge1xuICAgIGNoYXJzZXRzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFyc2V0cy5sZW5ndGg7IGkrKykge1xuICAgICAgY2hhcnNldHNbaV0gPSBhcmd1bWVudHNbaV1cbiAgICB9XG4gIH1cblxuICAvLyBubyBjaGFyc2V0cywgcmV0dXJuIGFsbCByZXF1ZXN0ZWQgY2hhcnNldHNcbiAgaWYgKCFjaGFyc2V0cyB8fCBjaGFyc2V0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdGhpcy5uZWdvdGlhdG9yLmNoYXJzZXRzKClcbiAgfVxuXG4gIHJldHVybiB0aGlzLm5lZ290aWF0b3IuY2hhcnNldHMoY2hhcnNldHMpWzBdIHx8IGZhbHNlXG59XG5cbi8qKlxuICogUmV0dXJuIGFjY2VwdGVkIGxhbmd1YWdlcyBvciBiZXN0IGZpdCBiYXNlZCBvbiBgbGFuZ3NgLlxuICpcbiAqIEdpdmVuIGBBY2NlcHQtTGFuZ3VhZ2U6IGVuO3E9MC44LCBlcywgcHRgXG4gKiBhbiBhcnJheSBzb3J0ZWQgYnkgcXVhbGl0eSBpcyByZXR1cm5lZDpcbiAqXG4gKiAgICAgWydlcycsICdwdCcsICdlbiddXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGxhbmdzLi4uXG4gKiBAcmV0dXJuIHtBcnJheXxTdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuQWNjZXB0cy5wcm90b3R5cGUubGFuZyA9XG5BY2NlcHRzLnByb3RvdHlwZS5sYW5ncyA9XG5BY2NlcHRzLnByb3RvdHlwZS5sYW5ndWFnZSA9XG5BY2NlcHRzLnByb3RvdHlwZS5sYW5ndWFnZXMgPSBmdW5jdGlvbiAobGFuZ3VhZ2VzXykge1xuICB2YXIgbGFuZ3VhZ2VzID0gbGFuZ3VhZ2VzX1xuXG4gIC8vIHN1cHBvcnQgZmxhdHRlbmVkIGFyZ3VtZW50c1xuICBpZiAobGFuZ3VhZ2VzICYmICFBcnJheS5pc0FycmF5KGxhbmd1YWdlcykpIHtcbiAgICBsYW5ndWFnZXMgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhbmd1YWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGFuZ3VhZ2VzW2ldID0gYXJndW1lbnRzW2ldXG4gICAgfVxuICB9XG5cbiAgLy8gbm8gbGFuZ3VhZ2VzLCByZXR1cm4gYWxsIHJlcXVlc3RlZCBsYW5ndWFnZXNcbiAgaWYgKCFsYW5ndWFnZXMgfHwgbGFuZ3VhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0aGlzLm5lZ290aWF0b3IubGFuZ3VhZ2VzKClcbiAgfVxuXG4gIHJldHVybiB0aGlzLm5lZ290aWF0b3IubGFuZ3VhZ2VzKGxhbmd1YWdlcylbMF0gfHwgZmFsc2Vcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGV4dG5hbWVzIHRvIG1pbWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZXh0VG9NaW1lICh0eXBlKSB7XG4gIHJldHVybiB0eXBlLmluZGV4T2YoJy8nKSA9PT0gLTFcbiAgICA/IG1pbWUubG9va3VwKHR5cGUpXG4gICAgOiB0eXBlXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgbWltZSBpcyB2YWxpZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICogQHJldHVybiB7U3RyaW5nfVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiB2YWxpZE1pbWUgKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJ1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2FjY2VwdHMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIG5lZ290aWF0b3JcbiAqIENvcHlyaWdodChjKSAyMDEyIEZlZGVyaWNvIFJvbWVyb1xuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBJc2FhYyBaLiBTY2hsdWV0ZXJcbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ2FjaGVkIGxvYWRlZCBzdWJtb2R1bGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgbW9kdWxlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBOZWdvdGlhdG9yO1xubW9kdWxlLmV4cG9ydHMuTmVnb3RpYXRvciA9IE5lZ290aWF0b3I7XG5cbi8qKlxuICogQ3JlYXRlIGEgTmVnb3RpYXRvciBpbnN0YW5jZSBmcm9tIGEgcmVxdWVzdC5cbiAqIEBwYXJhbSB7b2JqZWN0fSByZXF1ZXN0XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gTmVnb3RpYXRvcihyZXF1ZXN0KSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBOZWdvdGlhdG9yKSkge1xuICAgIHJldHVybiBuZXcgTmVnb3RpYXRvcihyZXF1ZXN0KTtcbiAgfVxuXG4gIHRoaXMucmVxdWVzdCA9IHJlcXVlc3Q7XG59XG5cbk5lZ290aWF0b3IucHJvdG90eXBlLmNoYXJzZXQgPSBmdW5jdGlvbiBjaGFyc2V0KGF2YWlsYWJsZSkge1xuICB2YXIgc2V0ID0gdGhpcy5jaGFyc2V0cyhhdmFpbGFibGUpO1xuICByZXR1cm4gc2V0ICYmIHNldFswXTtcbn07XG5cbk5lZ290aWF0b3IucHJvdG90eXBlLmNoYXJzZXRzID0gZnVuY3Rpb24gY2hhcnNldHMoYXZhaWxhYmxlKSB7XG4gIHZhciBwcmVmZXJyZWRDaGFyc2V0cyA9IGxvYWRNb2R1bGUoJ2NoYXJzZXQnKS5wcmVmZXJyZWRDaGFyc2V0cztcbiAgcmV0dXJuIHByZWZlcnJlZENoYXJzZXRzKHRoaXMucmVxdWVzdC5oZWFkZXJzWydhY2NlcHQtY2hhcnNldCddLCBhdmFpbGFibGUpO1xufTtcblxuTmVnb3RpYXRvci5wcm90b3R5cGUuZW5jb2RpbmcgPSBmdW5jdGlvbiBlbmNvZGluZyhhdmFpbGFibGUpIHtcbiAgdmFyIHNldCA9IHRoaXMuZW5jb2RpbmdzKGF2YWlsYWJsZSk7XG4gIHJldHVybiBzZXQgJiYgc2V0WzBdO1xufTtcblxuTmVnb3RpYXRvci5wcm90b3R5cGUuZW5jb2RpbmdzID0gZnVuY3Rpb24gZW5jb2RpbmdzKGF2YWlsYWJsZSkge1xuICB2YXIgcHJlZmVycmVkRW5jb2RpbmdzID0gbG9hZE1vZHVsZSgnZW5jb2RpbmcnKS5wcmVmZXJyZWRFbmNvZGluZ3M7XG4gIHJldHVybiBwcmVmZXJyZWRFbmNvZGluZ3ModGhpcy5yZXF1ZXN0LmhlYWRlcnNbJ2FjY2VwdC1lbmNvZGluZyddLCBhdmFpbGFibGUpO1xufTtcblxuTmVnb3RpYXRvci5wcm90b3R5cGUubGFuZ3VhZ2UgPSBmdW5jdGlvbiBsYW5ndWFnZShhdmFpbGFibGUpIHtcbiAgdmFyIHNldCA9IHRoaXMubGFuZ3VhZ2VzKGF2YWlsYWJsZSk7XG4gIHJldHVybiBzZXQgJiYgc2V0WzBdO1xufTtcblxuTmVnb3RpYXRvci5wcm90b3R5cGUubGFuZ3VhZ2VzID0gZnVuY3Rpb24gbGFuZ3VhZ2VzKGF2YWlsYWJsZSkge1xuICB2YXIgcHJlZmVycmVkTGFuZ3VhZ2VzID0gbG9hZE1vZHVsZSgnbGFuZ3VhZ2UnKS5wcmVmZXJyZWRMYW5ndWFnZXM7XG4gIHJldHVybiBwcmVmZXJyZWRMYW5ndWFnZXModGhpcy5yZXF1ZXN0LmhlYWRlcnNbJ2FjY2VwdC1sYW5ndWFnZSddLCBhdmFpbGFibGUpO1xufTtcblxuTmVnb3RpYXRvci5wcm90b3R5cGUubWVkaWFUeXBlID0gZnVuY3Rpb24gbWVkaWFUeXBlKGF2YWlsYWJsZSkge1xuICB2YXIgc2V0ID0gdGhpcy5tZWRpYVR5cGVzKGF2YWlsYWJsZSk7XG4gIHJldHVybiBzZXQgJiYgc2V0WzBdO1xufTtcblxuTmVnb3RpYXRvci5wcm90b3R5cGUubWVkaWFUeXBlcyA9IGZ1bmN0aW9uIG1lZGlhVHlwZXMoYXZhaWxhYmxlKSB7XG4gIHZhciBwcmVmZXJyZWRNZWRpYVR5cGVzID0gbG9hZE1vZHVsZSgnbWVkaWFUeXBlJykucHJlZmVycmVkTWVkaWFUeXBlcztcbiAgcmV0dXJuIHByZWZlcnJlZE1lZGlhVHlwZXModGhpcy5yZXF1ZXN0LmhlYWRlcnMuYWNjZXB0LCBhdmFpbGFibGUpO1xufTtcblxuLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbk5lZ290aWF0b3IucHJvdG90eXBlLnByZWZlcnJlZENoYXJzZXQgPSBOZWdvdGlhdG9yLnByb3RvdHlwZS5jaGFyc2V0O1xuTmVnb3RpYXRvci5wcm90b3R5cGUucHJlZmVycmVkQ2hhcnNldHMgPSBOZWdvdGlhdG9yLnByb3RvdHlwZS5jaGFyc2V0cztcbk5lZ290aWF0b3IucHJvdG90eXBlLnByZWZlcnJlZEVuY29kaW5nID0gTmVnb3RpYXRvci5wcm90b3R5cGUuZW5jb2Rpbmc7XG5OZWdvdGlhdG9yLnByb3RvdHlwZS5wcmVmZXJyZWRFbmNvZGluZ3MgPSBOZWdvdGlhdG9yLnByb3RvdHlwZS5lbmNvZGluZ3M7XG5OZWdvdGlhdG9yLnByb3RvdHlwZS5wcmVmZXJyZWRMYW5ndWFnZSA9IE5lZ290aWF0b3IucHJvdG90eXBlLmxhbmd1YWdlO1xuTmVnb3RpYXRvci5wcm90b3R5cGUucHJlZmVycmVkTGFuZ3VhZ2VzID0gTmVnb3RpYXRvci5wcm90b3R5cGUubGFuZ3VhZ2VzO1xuTmVnb3RpYXRvci5wcm90b3R5cGUucHJlZmVycmVkTWVkaWFUeXBlID0gTmVnb3RpYXRvci5wcm90b3R5cGUubWVkaWFUeXBlO1xuTmVnb3RpYXRvci5wcm90b3R5cGUucHJlZmVycmVkTWVkaWFUeXBlcyA9IE5lZ290aWF0b3IucHJvdG90eXBlLm1lZGlhVHlwZXM7XG5cbi8qKlxuICogTG9hZCB0aGUgZ2l2ZW4gbW9kdWxlLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUpIHtcbiAgdmFyIG1vZHVsZSA9IG1vZHVsZXNbbW9kdWxlTmFtZV07XG5cbiAgaWYgKG1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG1vZHVsZTtcbiAgfVxuXG4gIC8vIFRoaXMgdXNlcyBhIHN3aXRjaCBmb3Igc3RhdGljIHJlcXVpcmUgYW5hbHlzaXNcbiAgc3dpdGNoIChtb2R1bGVOYW1lKSB7XG4gICAgY2FzZSAnY2hhcnNldCc6XG4gICAgICBtb2R1bGUgPSByZXF1aXJlKCcuL2xpYi9jaGFyc2V0Jyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmNvZGluZyc6XG4gICAgICBtb2R1bGUgPSByZXF1aXJlKCcuL2xpYi9lbmNvZGluZycpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbGFuZ3VhZ2UnOlxuICAgICAgbW9kdWxlID0gcmVxdWlyZSgnLi9saWIvbGFuZ3VhZ2UnKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ21lZGlhVHlwZSc6XG4gICAgICBtb2R1bGUgPSByZXF1aXJlKCcuL2xpYi9tZWRpYVR5cGUnKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIG1vZHVsZSBcXCcnICsgbW9kdWxlTmFtZSArICdcXCcnKTtcbiAgfVxuXG4gIC8vIFN0b3JlIHRvIHByZXZlbnQgaW52b2tpbmcgcmVxdWlyZSgpXG4gIG1vZHVsZXNbbW9kdWxlTmFtZV0gPSBtb2R1bGU7XG5cbiAgcmV0dXJuIG1vZHVsZTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9uZWdvdGlhdG9yL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBuZWdvdGlhdG9yXG4gKiBDb3B5cmlnaHQoYykgMjAxMiBJc2FhYyBaLiBTY2hsdWV0ZXJcbiAqIENvcHlyaWdodChjKSAyMDE0IEZlZGVyaWNvIFJvbWVyb1xuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcHJlZmVycmVkQ2hhcnNldHM7XG5tb2R1bGUuZXhwb3J0cy5wcmVmZXJyZWRDaGFyc2V0cyA9IHByZWZlcnJlZENoYXJzZXRzO1xuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBzaW1wbGVDaGFyc2V0UmVnRXhwID0gL15cXHMqKFteXFxzO10rKVxccyooPzo7KC4qKSk/JC87XG5cbi8qKlxuICogUGFyc2UgdGhlIEFjY2VwdC1DaGFyc2V0IGhlYWRlci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VBY2NlcHRDaGFyc2V0KGFjY2VwdCkge1xuICB2YXIgYWNjZXB0cyA9IGFjY2VwdC5zcGxpdCgnLCcpO1xuXG4gIGZvciAodmFyIGkgPSAwLCBqID0gMDsgaSA8IGFjY2VwdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY2hhcnNldCA9IHBhcnNlQ2hhcnNldChhY2NlcHRzW2ldLnRyaW0oKSwgaSk7XG5cbiAgICBpZiAoY2hhcnNldCkge1xuICAgICAgYWNjZXB0c1tqKytdID0gY2hhcnNldDtcbiAgICB9XG4gIH1cblxuICAvLyB0cmltIGFjY2VwdHNcbiAgYWNjZXB0cy5sZW5ndGggPSBqO1xuXG4gIHJldHVybiBhY2NlcHRzO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgY2hhcnNldCBmcm9tIHRoZSBBY2NlcHQtQ2hhcnNldCBoZWFkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlQ2hhcnNldChzdHIsIGkpIHtcbiAgdmFyIG1hdGNoID0gc2ltcGxlQ2hhcnNldFJlZ0V4cC5leGVjKHN0cik7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuXG4gIHZhciBjaGFyc2V0ID0gbWF0Y2hbMV07XG4gIHZhciBxID0gMTtcbiAgaWYgKG1hdGNoWzJdKSB7XG4gICAgdmFyIHBhcmFtcyA9IG1hdGNoWzJdLnNwbGl0KCc7JylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkgKyspIHtcbiAgICAgIHZhciBwID0gcGFyYW1zW2ldLnRyaW0oKS5zcGxpdCgnPScpO1xuICAgICAgaWYgKHBbMF0gPT09ICdxJykge1xuICAgICAgICBxID0gcGFyc2VGbG9hdChwWzFdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjaGFyc2V0OiBjaGFyc2V0LFxuICAgIHE6IHEsXG4gICAgaTogaVxuICB9O1xufVxuXG4vKipcbiAqIEdldCB0aGUgcHJpb3JpdHkgb2YgYSBjaGFyc2V0LlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRDaGFyc2V0UHJpb3JpdHkoY2hhcnNldCwgYWNjZXB0ZWQsIGluZGV4KSB7XG4gIHZhciBwcmlvcml0eSA9IHtvOiAtMSwgcTogMCwgczogMH07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY2NlcHRlZC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzcGVjID0gc3BlY2lmeShjaGFyc2V0LCBhY2NlcHRlZFtpXSwgaW5kZXgpO1xuXG4gICAgaWYgKHNwZWMgJiYgKHByaW9yaXR5LnMgLSBzcGVjLnMgfHwgcHJpb3JpdHkucSAtIHNwZWMucSB8fCBwcmlvcml0eS5vIC0gc3BlYy5vKSA8IDApIHtcbiAgICAgIHByaW9yaXR5ID0gc3BlYztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJpb3JpdHk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBzcGVjaWZpY2l0eSBvZiB0aGUgY2hhcnNldC5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc3BlY2lmeShjaGFyc2V0LCBzcGVjLCBpbmRleCkge1xuICB2YXIgcyA9IDA7XG4gIGlmKHNwZWMuY2hhcnNldC50b0xvd2VyQ2FzZSgpID09PSBjaGFyc2V0LnRvTG93ZXJDYXNlKCkpe1xuICAgIHMgfD0gMTtcbiAgfSBlbHNlIGlmIChzcGVjLmNoYXJzZXQgIT09ICcqJyApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBpbmRleCxcbiAgICBvOiBzcGVjLmksXG4gICAgcTogc3BlYy5xLFxuICAgIHM6IHNcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgcHJlZmVycmVkIGNoYXJzZXRzIGZyb20gYW4gQWNjZXB0LUNoYXJzZXQgaGVhZGVyLlxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHByZWZlcnJlZENoYXJzZXRzKGFjY2VwdCwgcHJvdmlkZWQpIHtcbiAgLy8gUkZDIDI2MTYgc2VjIDE0LjI6IG5vIGhlYWRlciA9ICpcbiAgdmFyIGFjY2VwdHMgPSBwYXJzZUFjY2VwdENoYXJzZXQoYWNjZXB0ID09PSB1bmRlZmluZWQgPyAnKicgOiBhY2NlcHQgfHwgJycpO1xuXG4gIGlmICghcHJvdmlkZWQpIHtcbiAgICAvLyBzb3J0ZWQgbGlzdCBvZiBhbGwgY2hhcnNldHNcbiAgICByZXR1cm4gYWNjZXB0c1xuICAgICAgLmZpbHRlcihpc1F1YWxpdHkpXG4gICAgICAuc29ydChjb21wYXJlU3BlY3MpXG4gICAgICAubWFwKGdldEZ1bGxDaGFyc2V0KTtcbiAgfVxuXG4gIHZhciBwcmlvcml0aWVzID0gcHJvdmlkZWQubWFwKGZ1bmN0aW9uIGdldFByaW9yaXR5KHR5cGUsIGluZGV4KSB7XG4gICAgcmV0dXJuIGdldENoYXJzZXRQcmlvcml0eSh0eXBlLCBhY2NlcHRzLCBpbmRleCk7XG4gIH0pO1xuXG4gIC8vIHNvcnRlZCBsaXN0IG9mIGFjY2VwdGVkIGNoYXJzZXRzXG4gIHJldHVybiBwcmlvcml0aWVzLmZpbHRlcihpc1F1YWxpdHkpLnNvcnQoY29tcGFyZVNwZWNzKS5tYXAoZnVuY3Rpb24gZ2V0Q2hhcnNldChwcmlvcml0eSkge1xuICAgIHJldHVybiBwcm92aWRlZFtwcmlvcml0aWVzLmluZGV4T2YocHJpb3JpdHkpXTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28gc3BlY3MuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbXBhcmVTcGVjcyhhLCBiKSB7XG4gIHJldHVybiAoYi5xIC0gYS5xKSB8fCAoYi5zIC0gYS5zKSB8fCAoYS5vIC0gYi5vKSB8fCAoYS5pIC0gYi5pKSB8fCAwO1xufVxuXG4vKipcbiAqIEdldCBmdWxsIGNoYXJzZXQgc3RyaW5nLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRGdWxsQ2hhcnNldChzcGVjKSB7XG4gIHJldHVybiBzcGVjLmNoYXJzZXQ7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzcGVjIGhhcyBhbnkgcXVhbGl0eS5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaXNRdWFsaXR5KHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMucSA+IDA7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbmVnb3RpYXRvci9saWIvY2hhcnNldC5qc1xuLy8gbW9kdWxlIGlkID0gMTc3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogbmVnb3RpYXRvclxuICogQ29weXJpZ2h0KGMpIDIwMTIgSXNhYWMgWi4gU2NobHVldGVyXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBGZWRlcmljbyBSb21lcm9cbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByZWZlcnJlZEVuY29kaW5ncztcbm1vZHVsZS5leHBvcnRzLnByZWZlcnJlZEVuY29kaW5ncyA9IHByZWZlcnJlZEVuY29kaW5ncztcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgc2ltcGxlRW5jb2RpbmdSZWdFeHAgPSAvXlxccyooW15cXHM7XSspXFxzKig/OjsoLiopKT8kLztcblxuLyoqXG4gKiBQYXJzZSB0aGUgQWNjZXB0LUVuY29kaW5nIGhlYWRlci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VBY2NlcHRFbmNvZGluZyhhY2NlcHQpIHtcbiAgdmFyIGFjY2VwdHMgPSBhY2NlcHQuc3BsaXQoJywnKTtcbiAgdmFyIGhhc0lkZW50aXR5ID0gZmFsc2U7XG4gIHZhciBtaW5RdWFsaXR5ID0gMTtcblxuICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGkgPCBhY2NlcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGVuY29kaW5nID0gcGFyc2VFbmNvZGluZyhhY2NlcHRzW2ldLnRyaW0oKSwgaSk7XG5cbiAgICBpZiAoZW5jb2RpbmcpIHtcbiAgICAgIGFjY2VwdHNbaisrXSA9IGVuY29kaW5nO1xuICAgICAgaGFzSWRlbnRpdHkgPSBoYXNJZGVudGl0eSB8fCBzcGVjaWZ5KCdpZGVudGl0eScsIGVuY29kaW5nKTtcbiAgICAgIG1pblF1YWxpdHkgPSBNYXRoLm1pbihtaW5RdWFsaXR5LCBlbmNvZGluZy5xIHx8IDEpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaGFzSWRlbnRpdHkpIHtcbiAgICAvKlxuICAgICAqIElmIGlkZW50aXR5IGRvZXNuJ3QgZXhwbGljaXRseSBhcHBlYXIgaW4gdGhlIGFjY2VwdC1lbmNvZGluZyBoZWFkZXIsXG4gICAgICogaXQncyBhZGRlZCB0byB0aGUgbGlzdCBvZiBhY2NlcHRhYmxlIGVuY29kaW5nIHdpdGggdGhlIGxvd2VzdCBxXG4gICAgICovXG4gICAgYWNjZXB0c1tqKytdID0ge1xuICAgICAgZW5jb2Rpbmc6ICdpZGVudGl0eScsXG4gICAgICBxOiBtaW5RdWFsaXR5LFxuICAgICAgaTogaVxuICAgIH07XG4gIH1cblxuICAvLyB0cmltIGFjY2VwdHNcbiAgYWNjZXB0cy5sZW5ndGggPSBqO1xuXG4gIHJldHVybiBhY2NlcHRzO1xufVxuXG4vKipcbiAqIFBhcnNlIGFuIGVuY29kaW5nIGZyb20gdGhlIEFjY2VwdC1FbmNvZGluZyBoZWFkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlRW5jb2Rpbmcoc3RyLCBpKSB7XG4gIHZhciBtYXRjaCA9IHNpbXBsZUVuY29kaW5nUmVnRXhwLmV4ZWMoc3RyKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XG5cbiAgdmFyIGVuY29kaW5nID0gbWF0Y2hbMV07XG4gIHZhciBxID0gMTtcbiAgaWYgKG1hdGNoWzJdKSB7XG4gICAgdmFyIHBhcmFtcyA9IG1hdGNoWzJdLnNwbGl0KCc7Jyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpICsrKSB7XG4gICAgICB2YXIgcCA9IHBhcmFtc1tpXS50cmltKCkuc3BsaXQoJz0nKTtcbiAgICAgIGlmIChwWzBdID09PSAncScpIHtcbiAgICAgICAgcSA9IHBhcnNlRmxvYXQocFsxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgIHE6IHEsXG4gICAgaTogaVxuICB9O1xufVxuXG4vKipcbiAqIEdldCB0aGUgcHJpb3JpdHkgb2YgYW4gZW5jb2RpbmcuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldEVuY29kaW5nUHJpb3JpdHkoZW5jb2RpbmcsIGFjY2VwdGVkLCBpbmRleCkge1xuICB2YXIgcHJpb3JpdHkgPSB7bzogLTEsIHE6IDAsIHM6IDB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWNjZXB0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3BlYyA9IHNwZWNpZnkoZW5jb2RpbmcsIGFjY2VwdGVkW2ldLCBpbmRleCk7XG5cbiAgICBpZiAoc3BlYyAmJiAocHJpb3JpdHkucyAtIHNwZWMucyB8fCBwcmlvcml0eS5xIC0gc3BlYy5xIHx8IHByaW9yaXR5Lm8gLSBzcGVjLm8pIDwgMCkge1xuICAgICAgcHJpb3JpdHkgPSBzcGVjO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcmlvcml0eTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHNwZWNpZmljaXR5IG9mIHRoZSBlbmNvZGluZy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc3BlY2lmeShlbmNvZGluZywgc3BlYywgaW5kZXgpIHtcbiAgdmFyIHMgPSAwO1xuICBpZihzcGVjLmVuY29kaW5nLnRvTG93ZXJDYXNlKCkgPT09IGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpe1xuICAgIHMgfD0gMTtcbiAgfSBlbHNlIGlmIChzcGVjLmVuY29kaW5nICE9PSAnKicgKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaTogaW5kZXgsXG4gICAgbzogc3BlYy5pLFxuICAgIHE6IHNwZWMucSxcbiAgICBzOiBzXG4gIH1cbn07XG5cbi8qKlxuICogR2V0IHRoZSBwcmVmZXJyZWQgZW5jb2RpbmdzIGZyb20gYW4gQWNjZXB0LUVuY29kaW5nIGhlYWRlci5cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBwcmVmZXJyZWRFbmNvZGluZ3MoYWNjZXB0LCBwcm92aWRlZCkge1xuICB2YXIgYWNjZXB0cyA9IHBhcnNlQWNjZXB0RW5jb2RpbmcoYWNjZXB0IHx8ICcnKTtcblxuICBpZiAoIXByb3ZpZGVkKSB7XG4gICAgLy8gc29ydGVkIGxpc3Qgb2YgYWxsIGVuY29kaW5nc1xuICAgIHJldHVybiBhY2NlcHRzXG4gICAgICAuZmlsdGVyKGlzUXVhbGl0eSlcbiAgICAgIC5zb3J0KGNvbXBhcmVTcGVjcylcbiAgICAgIC5tYXAoZ2V0RnVsbEVuY29kaW5nKTtcbiAgfVxuXG4gIHZhciBwcmlvcml0aWVzID0gcHJvdmlkZWQubWFwKGZ1bmN0aW9uIGdldFByaW9yaXR5KHR5cGUsIGluZGV4KSB7XG4gICAgcmV0dXJuIGdldEVuY29kaW5nUHJpb3JpdHkodHlwZSwgYWNjZXB0cywgaW5kZXgpO1xuICB9KTtcblxuICAvLyBzb3J0ZWQgbGlzdCBvZiBhY2NlcHRlZCBlbmNvZGluZ3NcbiAgcmV0dXJuIHByaW9yaXRpZXMuZmlsdGVyKGlzUXVhbGl0eSkuc29ydChjb21wYXJlU3BlY3MpLm1hcChmdW5jdGlvbiBnZXRFbmNvZGluZyhwcmlvcml0eSkge1xuICAgIHJldHVybiBwcm92aWRlZFtwcmlvcml0aWVzLmluZGV4T2YocHJpb3JpdHkpXTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28gc3BlY3MuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbXBhcmVTcGVjcyhhLCBiKSB7XG4gIHJldHVybiAoYi5xIC0gYS5xKSB8fCAoYi5zIC0gYS5zKSB8fCAoYS5vIC0gYi5vKSB8fCAoYS5pIC0gYi5pKSB8fCAwO1xufVxuXG4vKipcbiAqIEdldCBmdWxsIGVuY29kaW5nIHN0cmluZy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0RnVsbEVuY29kaW5nKHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMuZW5jb2Rpbmc7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzcGVjIGhhcyBhbnkgcXVhbGl0eS5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaXNRdWFsaXR5KHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMucSA+IDA7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbmVnb3RpYXRvci9saWIvZW5jb2RpbmcuanNcbi8vIG1vZHVsZSBpZCA9IDE3OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIG5lZ290aWF0b3JcbiAqIENvcHlyaWdodChjKSAyMDEyIElzYWFjIFouIFNjaGx1ZXRlclxuICogQ29weXJpZ2h0KGMpIDIwMTQgRmVkZXJpY28gUm9tZXJvXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBwcmVmZXJyZWRMYW5ndWFnZXM7XG5tb2R1bGUuZXhwb3J0cy5wcmVmZXJyZWRMYW5ndWFnZXMgPSBwcmVmZXJyZWRMYW5ndWFnZXM7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIHNpbXBsZUxhbmd1YWdlUmVnRXhwID0gL15cXHMqKFteXFxzXFwtO10rKSg/Oi0oW15cXHM7XSspKT9cXHMqKD86OyguKikpPyQvO1xuXG4vKipcbiAqIFBhcnNlIHRoZSBBY2NlcHQtTGFuZ3VhZ2UgaGVhZGVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZUFjY2VwdExhbmd1YWdlKGFjY2VwdCkge1xuICB2YXIgYWNjZXB0cyA9IGFjY2VwdC5zcGxpdCgnLCcpO1xuXG4gIGZvciAodmFyIGkgPSAwLCBqID0gMDsgaSA8IGFjY2VwdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGFuZ2F1Z2UgPSBwYXJzZUxhbmd1YWdlKGFjY2VwdHNbaV0udHJpbSgpLCBpKTtcblxuICAgIGlmIChsYW5nYXVnZSkge1xuICAgICAgYWNjZXB0c1tqKytdID0gbGFuZ2F1Z2U7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJpbSBhY2NlcHRzXG4gIGFjY2VwdHMubGVuZ3RoID0gajtcblxuICByZXR1cm4gYWNjZXB0cztcbn1cblxuLyoqXG4gKiBQYXJzZSBhIGxhbmd1YWdlIGZyb20gdGhlIEFjY2VwdC1MYW5ndWFnZSBoZWFkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlTGFuZ3VhZ2Uoc3RyLCBpKSB7XG4gIHZhciBtYXRjaCA9IHNpbXBsZUxhbmd1YWdlUmVnRXhwLmV4ZWMoc3RyKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XG5cbiAgdmFyIHByZWZpeCA9IG1hdGNoWzFdLFxuICAgICAgc3VmZml4ID0gbWF0Y2hbMl0sXG4gICAgICBmdWxsID0gcHJlZml4O1xuXG4gIGlmIChzdWZmaXgpIGZ1bGwgKz0gXCItXCIgKyBzdWZmaXg7XG5cbiAgdmFyIHEgPSAxO1xuICBpZiAobWF0Y2hbM10pIHtcbiAgICB2YXIgcGFyYW1zID0gbWF0Y2hbM10uc3BsaXQoJzsnKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSArKykge1xuICAgICAgdmFyIHAgPSBwYXJhbXNbaV0uc3BsaXQoJz0nKTtcbiAgICAgIGlmIChwWzBdID09PSAncScpIHEgPSBwYXJzZUZsb2F0KHBbMV0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHJlZml4OiBwcmVmaXgsXG4gICAgc3VmZml4OiBzdWZmaXgsXG4gICAgcTogcSxcbiAgICBpOiBpLFxuICAgIGZ1bGw6IGZ1bGxcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByaW9yaXR5IG9mIGEgbGFuZ3VhZ2UuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldExhbmd1YWdlUHJpb3JpdHkobGFuZ3VhZ2UsIGFjY2VwdGVkLCBpbmRleCkge1xuICB2YXIgcHJpb3JpdHkgPSB7bzogLTEsIHE6IDAsIHM6IDB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWNjZXB0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3BlYyA9IHNwZWNpZnkobGFuZ3VhZ2UsIGFjY2VwdGVkW2ldLCBpbmRleCk7XG5cbiAgICBpZiAoc3BlYyAmJiAocHJpb3JpdHkucyAtIHNwZWMucyB8fCBwcmlvcml0eS5xIC0gc3BlYy5xIHx8IHByaW9yaXR5Lm8gLSBzcGVjLm8pIDwgMCkge1xuICAgICAgcHJpb3JpdHkgPSBzcGVjO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcmlvcml0eTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHNwZWNpZmljaXR5IG9mIHRoZSBsYW5ndWFnZS5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc3BlY2lmeShsYW5ndWFnZSwgc3BlYywgaW5kZXgpIHtcbiAgdmFyIHAgPSBwYXJzZUxhbmd1YWdlKGxhbmd1YWdlKVxuICBpZiAoIXApIHJldHVybiBudWxsO1xuICB2YXIgcyA9IDA7XG4gIGlmKHNwZWMuZnVsbC50b0xvd2VyQ2FzZSgpID09PSBwLmZ1bGwudG9Mb3dlckNhc2UoKSl7XG4gICAgcyB8PSA0O1xuICB9IGVsc2UgaWYgKHNwZWMucHJlZml4LnRvTG93ZXJDYXNlKCkgPT09IHAuZnVsbC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcyB8PSAyO1xuICB9IGVsc2UgaWYgKHNwZWMuZnVsbC50b0xvd2VyQ2FzZSgpID09PSBwLnByZWZpeC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcyB8PSAxO1xuICB9IGVsc2UgaWYgKHNwZWMuZnVsbCAhPT0gJyonICkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGk6IGluZGV4LFxuICAgIG86IHNwZWMuaSxcbiAgICBxOiBzcGVjLnEsXG4gICAgczogc1xuICB9XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcHJlZmVycmVkIGxhbmd1YWdlcyBmcm9tIGFuIEFjY2VwdC1MYW5ndWFnZSBoZWFkZXIuXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcHJlZmVycmVkTGFuZ3VhZ2VzKGFjY2VwdCwgcHJvdmlkZWQpIHtcbiAgLy8gUkZDIDI2MTYgc2VjIDE0LjQ6IG5vIGhlYWRlciA9ICpcbiAgdmFyIGFjY2VwdHMgPSBwYXJzZUFjY2VwdExhbmd1YWdlKGFjY2VwdCA9PT0gdW5kZWZpbmVkID8gJyonIDogYWNjZXB0IHx8ICcnKTtcblxuICBpZiAoIXByb3ZpZGVkKSB7XG4gICAgLy8gc29ydGVkIGxpc3Qgb2YgYWxsIGxhbmd1YWdlc1xuICAgIHJldHVybiBhY2NlcHRzXG4gICAgICAuZmlsdGVyKGlzUXVhbGl0eSlcbiAgICAgIC5zb3J0KGNvbXBhcmVTcGVjcylcbiAgICAgIC5tYXAoZ2V0RnVsbExhbmd1YWdlKTtcbiAgfVxuXG4gIHZhciBwcmlvcml0aWVzID0gcHJvdmlkZWQubWFwKGZ1bmN0aW9uIGdldFByaW9yaXR5KHR5cGUsIGluZGV4KSB7XG4gICAgcmV0dXJuIGdldExhbmd1YWdlUHJpb3JpdHkodHlwZSwgYWNjZXB0cywgaW5kZXgpO1xuICB9KTtcblxuICAvLyBzb3J0ZWQgbGlzdCBvZiBhY2NlcHRlZCBsYW5ndWFnZXNcbiAgcmV0dXJuIHByaW9yaXRpZXMuZmlsdGVyKGlzUXVhbGl0eSkuc29ydChjb21wYXJlU3BlY3MpLm1hcChmdW5jdGlvbiBnZXRMYW5ndWFnZShwcmlvcml0eSkge1xuICAgIHJldHVybiBwcm92aWRlZFtwcmlvcml0aWVzLmluZGV4T2YocHJpb3JpdHkpXTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28gc3BlY3MuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbXBhcmVTcGVjcyhhLCBiKSB7XG4gIHJldHVybiAoYi5xIC0gYS5xKSB8fCAoYi5zIC0gYS5zKSB8fCAoYS5vIC0gYi5vKSB8fCAoYS5pIC0gYi5pKSB8fCAwO1xufVxuXG4vKipcbiAqIEdldCBmdWxsIGxhbmd1YWdlIHN0cmluZy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0RnVsbExhbmd1YWdlKHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMuZnVsbDtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHNwZWMgaGFzIGFueSBxdWFsaXR5LlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBpc1F1YWxpdHkoc3BlYykge1xuICByZXR1cm4gc3BlYy5xID4gMDtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9uZWdvdGlhdG9yL2xpYi9sYW5ndWFnZS5qc1xuLy8gbW9kdWxlIGlkID0gMTc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogbmVnb3RpYXRvclxuICogQ29weXJpZ2h0KGMpIDIwMTIgSXNhYWMgWi4gU2NobHVldGVyXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBGZWRlcmljbyBSb21lcm9cbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByZWZlcnJlZE1lZGlhVHlwZXM7XG5tb2R1bGUuZXhwb3J0cy5wcmVmZXJyZWRNZWRpYVR5cGVzID0gcHJlZmVycmVkTWVkaWFUeXBlcztcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgc2ltcGxlTWVkaWFUeXBlUmVnRXhwID0gL15cXHMqKFteXFxzXFwvO10rKVxcLyhbXjtcXHNdKylcXHMqKD86OyguKikpPyQvO1xuXG4vKipcbiAqIFBhcnNlIHRoZSBBY2NlcHQgaGVhZGVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZUFjY2VwdChhY2NlcHQpIHtcbiAgdmFyIGFjY2VwdHMgPSBzcGxpdE1lZGlhVHlwZXMoYWNjZXB0KTtcblxuICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGkgPCBhY2NlcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1lZGlhVHlwZSA9IHBhcnNlTWVkaWFUeXBlKGFjY2VwdHNbaV0udHJpbSgpLCBpKTtcblxuICAgIGlmIChtZWRpYVR5cGUpIHtcbiAgICAgIGFjY2VwdHNbaisrXSA9IG1lZGlhVHlwZTtcbiAgICB9XG4gIH1cblxuICAvLyB0cmltIGFjY2VwdHNcbiAgYWNjZXB0cy5sZW5ndGggPSBqO1xuXG4gIHJldHVybiBhY2NlcHRzO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgbWVkaWEgdHlwZSBmcm9tIHRoZSBBY2NlcHQgaGVhZGVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZU1lZGlhVHlwZShzdHIsIGkpIHtcbiAgdmFyIG1hdGNoID0gc2ltcGxlTWVkaWFUeXBlUmVnRXhwLmV4ZWMoc3RyKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XG5cbiAgdmFyIHBhcmFtcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBxID0gMTtcbiAgdmFyIHN1YnR5cGUgPSBtYXRjaFsyXTtcbiAgdmFyIHR5cGUgPSBtYXRjaFsxXTtcblxuICBpZiAobWF0Y2hbM10pIHtcbiAgICB2YXIga3ZwcyA9IHNwbGl0UGFyYW1ldGVycyhtYXRjaFszXSkubWFwKHNwbGl0S2V5VmFsdWVQYWlyKTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwga3Zwcy5sZW5ndGg7IGorKykge1xuICAgICAgdmFyIHBhaXIgPSBrdnBzW2pdO1xuICAgICAgdmFyIGtleSA9IHBhaXJbMF0udG9Mb3dlckNhc2UoKTtcbiAgICAgIHZhciB2YWwgPSBwYWlyWzFdO1xuXG4gICAgICAvLyBnZXQgdGhlIHZhbHVlLCB1bndyYXBwaW5nIHF1b3Rlc1xuICAgICAgdmFyIHZhbHVlID0gdmFsICYmIHZhbFswXSA9PT0gJ1wiJyAmJiB2YWxbdmFsLmxlbmd0aCAtIDFdID09PSAnXCInXG4gICAgICAgID8gdmFsLnN1YnN0cigxLCB2YWwubGVuZ3RoIC0gMilcbiAgICAgICAgOiB2YWw7XG5cbiAgICAgIGlmIChrZXkgPT09ICdxJykge1xuICAgICAgICBxID0gcGFyc2VGbG9hdCh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBzdG9yZSBwYXJhbWV0ZXJcbiAgICAgIHBhcmFtc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiB0eXBlLFxuICAgIHN1YnR5cGU6IHN1YnR5cGUsXG4gICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgcTogcSxcbiAgICBpOiBpXG4gIH07XG59XG5cbi8qKlxuICogR2V0IHRoZSBwcmlvcml0eSBvZiBhIG1lZGlhIHR5cGUuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldE1lZGlhVHlwZVByaW9yaXR5KHR5cGUsIGFjY2VwdGVkLCBpbmRleCkge1xuICB2YXIgcHJpb3JpdHkgPSB7bzogLTEsIHE6IDAsIHM6IDB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWNjZXB0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3BlYyA9IHNwZWNpZnkodHlwZSwgYWNjZXB0ZWRbaV0sIGluZGV4KTtcblxuICAgIGlmIChzcGVjICYmIChwcmlvcml0eS5zIC0gc3BlYy5zIHx8IHByaW9yaXR5LnEgLSBzcGVjLnEgfHwgcHJpb3JpdHkubyAtIHNwZWMubykgPCAwKSB7XG4gICAgICBwcmlvcml0eSA9IHNwZWM7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByaW9yaXR5O1xufVxuXG4vKipcbiAqIEdldCB0aGUgc3BlY2lmaWNpdHkgb2YgdGhlIG1lZGlhIHR5cGUuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNwZWNpZnkodHlwZSwgc3BlYywgaW5kZXgpIHtcbiAgdmFyIHAgPSBwYXJzZU1lZGlhVHlwZSh0eXBlKTtcbiAgdmFyIHMgPSAwO1xuXG4gIGlmICghcCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYoc3BlYy50eXBlLnRvTG93ZXJDYXNlKCkgPT0gcC50eXBlLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBzIHw9IDRcbiAgfSBlbHNlIGlmKHNwZWMudHlwZSAhPSAnKicpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmKHNwZWMuc3VidHlwZS50b0xvd2VyQ2FzZSgpID09IHAuc3VidHlwZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcyB8PSAyXG4gIH0gZWxzZSBpZihzcGVjLnN1YnR5cGUgIT0gJyonKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHNwZWMucGFyYW1zKTtcbiAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xuICAgIGlmIChrZXlzLmV2ZXJ5KGZ1bmN0aW9uIChrKSB7XG4gICAgICByZXR1cm4gc3BlYy5wYXJhbXNba10gPT0gJyonIHx8IChzcGVjLnBhcmFtc1trXSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PSAocC5wYXJhbXNba10gfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgfSkpIHtcbiAgICAgIHMgfD0gMVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaTogaW5kZXgsXG4gICAgbzogc3BlYy5pLFxuICAgIHE6IHNwZWMucSxcbiAgICBzOiBzLFxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBwcmVmZXJyZWQgbWVkaWEgdHlwZXMgZnJvbSBhbiBBY2NlcHQgaGVhZGVyLlxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHByZWZlcnJlZE1lZGlhVHlwZXMoYWNjZXB0LCBwcm92aWRlZCkge1xuICAvLyBSRkMgMjYxNiBzZWMgMTQuMjogbm8gaGVhZGVyID0gKi8qXG4gIHZhciBhY2NlcHRzID0gcGFyc2VBY2NlcHQoYWNjZXB0ID09PSB1bmRlZmluZWQgPyAnKi8qJyA6IGFjY2VwdCB8fCAnJyk7XG5cbiAgaWYgKCFwcm92aWRlZCkge1xuICAgIC8vIHNvcnRlZCBsaXN0IG9mIGFsbCB0eXBlc1xuICAgIHJldHVybiBhY2NlcHRzXG4gICAgICAuZmlsdGVyKGlzUXVhbGl0eSlcbiAgICAgIC5zb3J0KGNvbXBhcmVTcGVjcylcbiAgICAgIC5tYXAoZ2V0RnVsbFR5cGUpO1xuICB9XG5cbiAgdmFyIHByaW9yaXRpZXMgPSBwcm92aWRlZC5tYXAoZnVuY3Rpb24gZ2V0UHJpb3JpdHkodHlwZSwgaW5kZXgpIHtcbiAgICByZXR1cm4gZ2V0TWVkaWFUeXBlUHJpb3JpdHkodHlwZSwgYWNjZXB0cywgaW5kZXgpO1xuICB9KTtcblxuICAvLyBzb3J0ZWQgbGlzdCBvZiBhY2NlcHRlZCB0eXBlc1xuICByZXR1cm4gcHJpb3JpdGllcy5maWx0ZXIoaXNRdWFsaXR5KS5zb3J0KGNvbXBhcmVTcGVjcykubWFwKGZ1bmN0aW9uIGdldFR5cGUocHJpb3JpdHkpIHtcbiAgICByZXR1cm4gcHJvdmlkZWRbcHJpb3JpdGllcy5pbmRleE9mKHByaW9yaXR5KV07XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIHNwZWNzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb21wYXJlU3BlY3MoYSwgYikge1xuICByZXR1cm4gKGIucSAtIGEucSkgfHwgKGIucyAtIGEucykgfHwgKGEubyAtIGIubykgfHwgKGEuaSAtIGIuaSkgfHwgMDtcbn1cblxuLyoqXG4gKiBHZXQgZnVsbCB0eXBlIHN0cmluZy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0RnVsbFR5cGUoc3BlYykge1xuICByZXR1cm4gc3BlYy50eXBlICsgJy8nICsgc3BlYy5zdWJ0eXBlO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgc3BlYyBoYXMgYW55IHF1YWxpdHkuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGlzUXVhbGl0eShzcGVjKSB7XG4gIHJldHVybiBzcGVjLnEgPiAwO1xufVxuXG4vKipcbiAqIENvdW50IHRoZSBudW1iZXIgb2YgcXVvdGVzIGluIGEgc3RyaW5nLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBxdW90ZUNvdW50KHN0cmluZykge1xuICB2YXIgY291bnQgPSAwO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIHdoaWxlICgoaW5kZXggPSBzdHJpbmcuaW5kZXhPZignXCInLCBpbmRleCkpICE9PSAtMSkge1xuICAgIGNvdW50Kys7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIHJldHVybiBjb3VudDtcbn1cblxuLyoqXG4gKiBTcGxpdCBhIGtleSB2YWx1ZSBwYWlyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzcGxpdEtleVZhbHVlUGFpcihzdHIpIHtcbiAgdmFyIGluZGV4ID0gc3RyLmluZGV4T2YoJz0nKTtcbiAgdmFyIGtleTtcbiAgdmFyIHZhbDtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAga2V5ID0gc3RyO1xuICB9IGVsc2Uge1xuICAgIGtleSA9IHN0ci5zdWJzdHIoMCwgaW5kZXgpO1xuICAgIHZhbCA9IHN0ci5zdWJzdHIoaW5kZXggKyAxKTtcbiAgfVxuXG4gIHJldHVybiBba2V5LCB2YWxdO1xufVxuXG4vKipcbiAqIFNwbGl0IGFuIEFjY2VwdCBoZWFkZXIgaW50byBtZWRpYSB0eXBlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc3BsaXRNZWRpYVR5cGVzKGFjY2VwdCkge1xuICB2YXIgYWNjZXB0cyA9IGFjY2VwdC5zcGxpdCgnLCcpO1xuXG4gIGZvciAodmFyIGkgPSAxLCBqID0gMDsgaSA8IGFjY2VwdHMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocXVvdGVDb3VudChhY2NlcHRzW2pdKSAlIDIgPT0gMCkge1xuICAgICAgYWNjZXB0c1srK2pdID0gYWNjZXB0c1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjZXB0c1tqXSArPSAnLCcgKyBhY2NlcHRzW2ldO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRyaW0gYWNjZXB0c1xuICBhY2NlcHRzLmxlbmd0aCA9IGogKyAxO1xuXG4gIHJldHVybiBhY2NlcHRzO1xufVxuXG4vKipcbiAqIFNwbGl0IGEgc3RyaW5nIG9mIHBhcmFtZXRlcnMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNwbGl0UGFyYW1ldGVycyhzdHIpIHtcbiAgdmFyIHBhcmFtZXRlcnMgPSBzdHIuc3BsaXQoJzsnKTtcblxuICBmb3IgKHZhciBpID0gMSwgaiA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHF1b3RlQ291bnQocGFyYW1ldGVyc1tqXSkgJSAyID09IDApIHtcbiAgICAgIHBhcmFtZXRlcnNbKytqXSA9IHBhcmFtZXRlcnNbaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmFtZXRlcnNbal0gKz0gJzsnICsgcGFyYW1ldGVyc1tpXTtcbiAgICB9XG4gIH1cblxuICAvLyB0cmltIHBhcmFtZXRlcnNcbiAgcGFyYW1ldGVycy5sZW5ndGggPSBqICsgMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICBwYXJhbWV0ZXJzW2ldID0gcGFyYW1ldGVyc1tpXS50cmltKCk7XG4gIH1cblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9uZWdvdGlhdG9yL2xpYi9tZWRpYVR5cGUuanNcbi8vIG1vZHVsZSBpZCA9IDE4MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV4cHJlc3NcbiAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBjb250ZW50RGlzcG9zaXRpb24gPSByZXF1aXJlKCdjb250ZW50LWRpc3Bvc2l0aW9uJyk7XG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdleHByZXNzJyk7XG52YXIgZW5jb2RlVXJsID0gcmVxdWlyZSgnZW5jb2RldXJsJyk7XG52YXIgZXNjYXBlSHRtbCA9IHJlcXVpcmUoJ2VzY2FwZS1odG1sJyk7XG52YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcbnZhciBpc0Fic29sdXRlID0gcmVxdWlyZSgnLi91dGlscycpLmlzQWJzb2x1dGU7XG52YXIgb25GaW5pc2hlZCA9IHJlcXVpcmUoJ29uLWZpbmlzaGVkJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbnZhciBzdGF0dXNlcyA9IHJlcXVpcmUoJ3N0YXR1c2VzJylcbnZhciBtZXJnZSA9IHJlcXVpcmUoJ3V0aWxzLW1lcmdlJyk7XG52YXIgc2lnbiA9IHJlcXVpcmUoJ2Nvb2tpZS1zaWduYXR1cmUnKS5zaWduO1xudmFyIG5vcm1hbGl6ZVR5cGUgPSByZXF1aXJlKCcuL3V0aWxzJykubm9ybWFsaXplVHlwZTtcbnZhciBub3JtYWxpemVUeXBlcyA9IHJlcXVpcmUoJy4vdXRpbHMnKS5ub3JtYWxpemVUeXBlcztcbnZhciBzZXRDaGFyc2V0ID0gcmVxdWlyZSgnLi91dGlscycpLnNldENoYXJzZXQ7XG52YXIgY29va2llID0gcmVxdWlyZSgnY29va2llJyk7XG52YXIgc2VuZCA9IHJlcXVpcmUoJ3NlbmQnKTtcbnZhciBleHRuYW1lID0gcGF0aC5leHRuYW1lO1xudmFyIG1pbWUgPSBzZW5kLm1pbWU7XG52YXIgcmVzb2x2ZSA9IHBhdGgucmVzb2x2ZTtcbnZhciB2YXJ5ID0gcmVxdWlyZSgndmFyeScpO1xuXG4vKipcbiAqIFJlc3BvbnNlIHByb3RvdHlwZS5cbiAqIEBwdWJsaWNcbiAqL1xuXG52YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShodHRwLlNlcnZlclJlc3BvbnNlLnByb3RvdHlwZSlcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlc1xuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBjaGFyc2V0UmVnRXhwID0gLztcXHMqY2hhcnNldFxccyo9LztcblxuLyoqXG4gKiBTZXQgc3RhdHVzIGBjb2RlYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gY29kZVxuICogQHJldHVybiB7U2VydmVyUmVzcG9uc2V9XG4gKiBAcHVibGljXG4gKi9cblxucmVzLnN0YXR1cyA9IGZ1bmN0aW9uIHN0YXR1cyhjb2RlKSB7XG4gIHRoaXMuc3RhdHVzQ29kZSA9IGNvZGU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgTGluayBoZWFkZXIgZmllbGQgd2l0aCB0aGUgZ2l2ZW4gYGxpbmtzYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICByZXMubGlua3Moe1xuICogICAgICBuZXh0OiAnaHR0cDovL2FwaS5leGFtcGxlLmNvbS91c2Vycz9wYWdlPTInLFxuICogICAgICBsYXN0OiAnaHR0cDovL2FwaS5leGFtcGxlLmNvbS91c2Vycz9wYWdlPTUnXG4gKiAgICB9KTtcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gbGlua3NcbiAqIEByZXR1cm4ge1NlcnZlclJlc3BvbnNlfVxuICogQHB1YmxpY1xuICovXG5cbnJlcy5saW5rcyA9IGZ1bmN0aW9uKGxpbmtzKXtcbiAgdmFyIGxpbmsgPSB0aGlzLmdldCgnTGluaycpIHx8ICcnO1xuICBpZiAobGluaykgbGluayArPSAnLCAnO1xuICByZXR1cm4gdGhpcy5zZXQoJ0xpbmsnLCBsaW5rICsgT2JqZWN0LmtleXMobGlua3MpLm1hcChmdW5jdGlvbihyZWwpe1xuICAgIHJldHVybiAnPCcgKyBsaW5rc1tyZWxdICsgJz47IHJlbD1cIicgKyByZWwgKyAnXCInO1xuICB9KS5qb2luKCcsICcpKTtcbn07XG5cbi8qKlxuICogU2VuZCBhIHJlc3BvbnNlLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICByZXMuc2VuZChCdWZmZXIuZnJvbSgnd2Fob28nKSk7XG4gKiAgICAgcmVzLnNlbmQoeyBzb21lOiAnanNvbicgfSk7XG4gKiAgICAgcmVzLnNlbmQoJzxwPnNvbWUgaHRtbDwvcD4nKTtcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8Ym9vbGVhbnxvYmplY3R8QnVmZmVyfSBib2R5XG4gKiBAcHVibGljXG4gKi9cblxucmVzLnNlbmQgPSBmdW5jdGlvbiBzZW5kKGJvZHkpIHtcbiAgdmFyIGNodW5rID0gYm9keTtcbiAgdmFyIGVuY29kaW5nO1xuICB2YXIgcmVxID0gdGhpcy5yZXE7XG4gIHZhciB0eXBlO1xuXG4gIC8vIHNldHRpbmdzXG4gIHZhciBhcHAgPSB0aGlzLmFwcDtcblxuICAvLyBhbGxvdyBzdGF0dXMgLyBib2R5XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgLy8gcmVzLnNlbmQoYm9keSwgc3RhdHVzKSBiYWNrd2FyZHMgY29tcGF0XG4gICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbMF0gIT09ICdudW1iZXInICYmIHR5cGVvZiBhcmd1bWVudHNbMV0gPT09ICdudW1iZXInKSB7XG4gICAgICBkZXByZWNhdGUoJ3Jlcy5zZW5kKGJvZHksIHN0YXR1cyk6IFVzZSByZXMuc3RhdHVzKHN0YXR1cykuc2VuZChib2R5KSBpbnN0ZWFkJyk7XG4gICAgICB0aGlzLnN0YXR1c0NvZGUgPSBhcmd1bWVudHNbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlcHJlY2F0ZSgncmVzLnNlbmQoc3RhdHVzLCBib2R5KTogVXNlIHJlcy5zdGF0dXMoc3RhdHVzKS5zZW5kKGJvZHkpIGluc3RlYWQnKTtcbiAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IGFyZ3VtZW50c1swXTtcbiAgICAgIGNodW5rID0gYXJndW1lbnRzWzFdO1xuICAgIH1cbiAgfVxuXG4gIC8vIGRpc2FtYmlndWF0ZSByZXMuc2VuZChzdGF0dXMpIGFuZCByZXMuc2VuZChzdGF0dXMsIG51bSlcbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ251bWJlcicgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIHJlcy5zZW5kKHN0YXR1cykgd2lsbCBzZXQgc3RhdHVzIG1lc3NhZ2UgYXMgdGV4dCBzdHJpbmdcbiAgICBpZiAoIXRoaXMuZ2V0KCdDb250ZW50LVR5cGUnKSkge1xuICAgICAgdGhpcy50eXBlKCd0eHQnKTtcbiAgICB9XG5cbiAgICBkZXByZWNhdGUoJ3Jlcy5zZW5kKHN0YXR1cyk6IFVzZSByZXMuc2VuZFN0YXR1cyhzdGF0dXMpIGluc3RlYWQnKTtcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBjaHVuaztcbiAgICBjaHVuayA9IHN0YXR1c2VzW2NodW5rXVxuICB9XG5cbiAgc3dpdGNoICh0eXBlb2YgY2h1bmspIHtcbiAgICAvLyBzdHJpbmcgZGVmYXVsdGluZyB0byBodG1sXG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGlmICghdGhpcy5nZXQoJ0NvbnRlbnQtVHlwZScpKSB7XG4gICAgICAgIHRoaXMudHlwZSgnaHRtbCcpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgICAgIGNodW5rID0gJyc7XG4gICAgICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldCgnQ29udGVudC1UeXBlJykpIHtcbiAgICAgICAgICB0aGlzLnR5cGUoJ2JpbicpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5qc29uKGNodW5rKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgLy8gd3JpdGUgc3RyaW5ncyBpbiB1dGYtOFxuICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnO1xuICAgIHR5cGUgPSB0aGlzLmdldCgnQ29udGVudC1UeXBlJyk7XG5cbiAgICAvLyByZWZsZWN0IHRoaXMgaW4gY29udGVudC10eXBlXG4gICAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zZXQoJ0NvbnRlbnQtVHlwZScsIHNldENoYXJzZXQodHlwZSwgJ3V0Zi04JykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGRldGVybWluZSBpZiBFVGFnIHNob3VsZCBiZSBnZW5lcmF0ZWRcbiAgdmFyIGV0YWdGbiA9IGFwcC5nZXQoJ2V0YWcgZm4nKVxuICB2YXIgZ2VuZXJhdGVFVGFnID0gIXRoaXMuZ2V0KCdFVGFnJykgJiYgdHlwZW9mIGV0YWdGbiA9PT0gJ2Z1bmN0aW9uJ1xuXG4gIC8vIHBvcHVsYXRlIENvbnRlbnQtTGVuZ3RoXG4gIHZhciBsZW5cbiAgaWYgKGNodW5rICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkge1xuICAgICAgLy8gZ2V0IGxlbmd0aCBvZiBCdWZmZXJcbiAgICAgIGxlbiA9IGNodW5rLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAoIWdlbmVyYXRlRVRhZyAmJiBjaHVuay5sZW5ndGggPCAxMDAwKSB7XG4gICAgICAvLyBqdXN0IGNhbGN1bGF0ZSBsZW5ndGggd2hlbiBubyBFVGFnICsgc21hbGwgY2h1bmtcbiAgICAgIGxlbiA9IEJ1ZmZlci5ieXRlTGVuZ3RoKGNodW5rLCBlbmNvZGluZylcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29udmVydCBjaHVuayB0byBCdWZmZXIgYW5kIGNhbGN1bGF0ZVxuICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpXG4gICAgICBlbmNvZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgIGxlbiA9IGNodW5rLmxlbmd0aFxuICAgIH1cblxuICAgIHRoaXMuc2V0KCdDb250ZW50LUxlbmd0aCcsIGxlbik7XG4gIH1cblxuICAvLyBwb3B1bGF0ZSBFVGFnXG4gIHZhciBldGFnO1xuICBpZiAoZ2VuZXJhdGVFVGFnICYmIGxlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKChldGFnID0gZXRhZ0ZuKGNodW5rLCBlbmNvZGluZykpKSB7XG4gICAgICB0aGlzLnNldCgnRVRhZycsIGV0YWcpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZyZXNobmVzc1xuICBpZiAocmVxLmZyZXNoKSB0aGlzLnN0YXR1c0NvZGUgPSAzMDQ7XG5cbiAgLy8gc3RyaXAgaXJyZWxldmFudCBoZWFkZXJzXG4gIGlmICgyMDQgPT09IHRoaXMuc3RhdHVzQ29kZSB8fCAzMDQgPT09IHRoaXMuc3RhdHVzQ29kZSkge1xuICAgIHRoaXMucmVtb3ZlSGVhZGVyKCdDb250ZW50LVR5cGUnKTtcbiAgICB0aGlzLnJlbW92ZUhlYWRlcignQ29udGVudC1MZW5ndGgnKTtcbiAgICB0aGlzLnJlbW92ZUhlYWRlcignVHJhbnNmZXItRW5jb2RpbmcnKTtcbiAgICBjaHVuayA9ICcnO1xuICB9XG5cbiAgaWYgKHJlcS5tZXRob2QgPT09ICdIRUFEJykge1xuICAgIC8vIHNraXAgYm9keSBmb3IgSEVBRFxuICAgIHRoaXMuZW5kKCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVzcG9uZFxuICAgIHRoaXMuZW5kKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2VuZCBKU09OIHJlc3BvbnNlLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICByZXMuanNvbihudWxsKTtcbiAqICAgICByZXMuanNvbih7IHVzZXI6ICd0aicgfSk7XG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfGJvb2xlYW58b2JqZWN0fSBvYmpcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuanNvbiA9IGZ1bmN0aW9uIGpzb24ob2JqKSB7XG4gIHZhciB2YWwgPSBvYmo7XG5cbiAgLy8gYWxsb3cgc3RhdHVzIC8gYm9keVxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgIC8vIHJlcy5qc29uKGJvZHksIHN0YXR1cykgYmFja3dhcmRzIGNvbXBhdFxuICAgIGlmICh0eXBlb2YgYXJndW1lbnRzWzFdID09PSAnbnVtYmVyJykge1xuICAgICAgZGVwcmVjYXRlKCdyZXMuanNvbihvYmosIHN0YXR1cyk6IFVzZSByZXMuc3RhdHVzKHN0YXR1cykuanNvbihvYmopIGluc3RlYWQnKTtcbiAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IGFyZ3VtZW50c1sxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVwcmVjYXRlKCdyZXMuanNvbihzdGF0dXMsIG9iaik6IFVzZSByZXMuc3RhdHVzKHN0YXR1cykuanNvbihvYmopIGluc3RlYWQnKTtcbiAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IGFyZ3VtZW50c1swXTtcbiAgICAgIHZhbCA9IGFyZ3VtZW50c1sxXTtcbiAgICB9XG4gIH1cblxuICAvLyBzZXR0aW5nc1xuICB2YXIgYXBwID0gdGhpcy5hcHA7XG4gIHZhciBlc2NhcGUgPSBhcHAuZ2V0KCdqc29uIGVzY2FwZScpXG4gIHZhciByZXBsYWNlciA9IGFwcC5nZXQoJ2pzb24gcmVwbGFjZXInKTtcbiAgdmFyIHNwYWNlcyA9IGFwcC5nZXQoJ2pzb24gc3BhY2VzJyk7XG4gIHZhciBib2R5ID0gc3RyaW5naWZ5KHZhbCwgcmVwbGFjZXIsIHNwYWNlcywgZXNjYXBlKVxuXG4gIC8vIGNvbnRlbnQtdHlwZVxuICBpZiAoIXRoaXMuZ2V0KCdDb250ZW50LVR5cGUnKSkge1xuICAgIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuc2VuZChib2R5KTtcbn07XG5cbi8qKlxuICogU2VuZCBKU09OIHJlc3BvbnNlIHdpdGggSlNPTlAgY2FsbGJhY2sgc3VwcG9ydC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgcmVzLmpzb25wKG51bGwpO1xuICogICAgIHJlcy5qc29ucCh7IHVzZXI6ICd0aicgfSk7XG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfGJvb2xlYW58b2JqZWN0fSBvYmpcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuanNvbnAgPSBmdW5jdGlvbiBqc29ucChvYmopIHtcbiAgdmFyIHZhbCA9IG9iajtcblxuICAvLyBhbGxvdyBzdGF0dXMgLyBib2R5XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgLy8gcmVzLmpzb24oYm9keSwgc3RhdHVzKSBiYWNrd2FyZHMgY29tcGF0XG4gICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbMV0gPT09ICdudW1iZXInKSB7XG4gICAgICBkZXByZWNhdGUoJ3Jlcy5qc29ucChvYmosIHN0YXR1cyk6IFVzZSByZXMuc3RhdHVzKHN0YXR1cykuanNvbihvYmopIGluc3RlYWQnKTtcbiAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IGFyZ3VtZW50c1sxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVwcmVjYXRlKCdyZXMuanNvbnAoc3RhdHVzLCBvYmopOiBVc2UgcmVzLnN0YXR1cyhzdGF0dXMpLmpzb25wKG9iaikgaW5zdGVhZCcpO1xuICAgICAgdGhpcy5zdGF0dXNDb2RlID0gYXJndW1lbnRzWzBdO1xuICAgICAgdmFsID0gYXJndW1lbnRzWzFdO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNldHRpbmdzXG4gIHZhciBhcHAgPSB0aGlzLmFwcDtcbiAgdmFyIGVzY2FwZSA9IGFwcC5nZXQoJ2pzb24gZXNjYXBlJylcbiAgdmFyIHJlcGxhY2VyID0gYXBwLmdldCgnanNvbiByZXBsYWNlcicpO1xuICB2YXIgc3BhY2VzID0gYXBwLmdldCgnanNvbiBzcGFjZXMnKTtcbiAgdmFyIGJvZHkgPSBzdHJpbmdpZnkodmFsLCByZXBsYWNlciwgc3BhY2VzLCBlc2NhcGUpXG4gIHZhciBjYWxsYmFjayA9IHRoaXMucmVxLnF1ZXJ5W2FwcC5nZXQoJ2pzb25wIGNhbGxiYWNrIG5hbWUnKV07XG5cbiAgLy8gY29udGVudC10eXBlXG4gIGlmICghdGhpcy5nZXQoJ0NvbnRlbnQtVHlwZScpKSB7XG4gICAgdGhpcy5zZXQoJ1gtQ29udGVudC1UeXBlLU9wdGlvbnMnLCAnbm9zbmlmZicpO1xuICAgIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICB9XG5cbiAgLy8gZml4dXAgY2FsbGJhY2tcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2FsbGJhY2spKSB7XG4gICAgY2FsbGJhY2sgPSBjYWxsYmFja1swXTtcbiAgfVxuXG4gIC8vIGpzb25wXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdzdHJpbmcnICYmIGNhbGxiYWNrLmxlbmd0aCAhPT0gMCkge1xuICAgIHRoaXMuc2V0KCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zJywgJ25vc25pZmYnKTtcbiAgICB0aGlzLnNldCgnQ29udGVudC1UeXBlJywgJ3RleHQvamF2YXNjcmlwdCcpO1xuXG4gICAgLy8gcmVzdHJpY3QgY2FsbGJhY2sgY2hhcnNldFxuICAgIGNhbGxiYWNrID0gY2FsbGJhY2sucmVwbGFjZSgvW15cXFtcXF1cXHckLl0vZywgJycpO1xuXG4gICAgLy8gcmVwbGFjZSBjaGFycyBub3QgYWxsb3dlZCBpbiBKYXZhU2NyaXB0IHRoYXQgYXJlIGluIEpTT05cbiAgICBib2R5ID0gYm9keVxuICAgICAgLnJlcGxhY2UoL1xcdTIwMjgvZywgJ1xcXFx1MjAyOCcpXG4gICAgICAucmVwbGFjZSgvXFx1MjAyOS9nLCAnXFxcXHUyMDI5Jyk7XG5cbiAgICAvLyB0aGUgLyoqLyBpcyBhIHNwZWNpZmljIHNlY3VyaXR5IG1pdGlnYXRpb24gZm9yIFwiUm9zZXR0YSBGbGFzaCBKU09OUCBhYnVzZVwiXG4gICAgLy8gdGhlIHR5cGVvZiBjaGVjayBpcyBqdXN0IHRvIHJlZHVjZSBjbGllbnQgZXJyb3Igbm9pc2VcbiAgICBib2R5ID0gJy8qKi8gdHlwZW9mICcgKyBjYWxsYmFjayArICcgPT09IFxcJ2Z1bmN0aW9uXFwnICYmICcgKyBjYWxsYmFjayArICcoJyArIGJvZHkgKyAnKTsnO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuc2VuZChib2R5KTtcbn07XG5cbi8qKlxuICogU2VuZCBnaXZlbiBIVFRQIHN0YXR1cyBjb2RlLlxuICpcbiAqIFNldHMgdGhlIHJlc3BvbnNlIHN0YXR1cyB0byBgc3RhdHVzQ29kZWAgYW5kIHRoZSBib2R5IG9mIHRoZVxuICogcmVzcG9uc2UgdG8gdGhlIHN0YW5kYXJkIGRlc2NyaXB0aW9uIGZyb20gbm9kZSdzIGh0dHAuU1RBVFVTX0NPREVTXG4gKiBvciB0aGUgc3RhdHVzQ29kZSBudW1iZXIgaWYgbm8gZGVzY3JpcHRpb24uXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIHJlcy5zZW5kU3RhdHVzKDIwMCk7XG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IHN0YXR1c0NvZGVcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuc2VuZFN0YXR1cyA9IGZ1bmN0aW9uIHNlbmRTdGF0dXMoc3RhdHVzQ29kZSkge1xuICB2YXIgYm9keSA9IHN0YXR1c2VzW3N0YXR1c0NvZGVdIHx8IFN0cmluZyhzdGF0dXNDb2RlKVxuXG4gIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7XG4gIHRoaXMudHlwZSgndHh0Jyk7XG5cbiAgcmV0dXJuIHRoaXMuc2VuZChib2R5KTtcbn07XG5cbi8qKlxuICogVHJhbnNmZXIgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIGBwYXRoYC5cbiAqXG4gKiBBdXRvbWF0aWNhbGx5IHNldHMgdGhlIF9Db250ZW50LVR5cGVfIHJlc3BvbnNlIGhlYWRlciBmaWVsZC5cbiAqIFRoZSBjYWxsYmFjayBgY2FsbGJhY2soZXJyKWAgaXMgaW52b2tlZCB3aGVuIHRoZSB0cmFuc2ZlciBpcyBjb21wbGV0ZVxuICogb3Igd2hlbiBhbiBlcnJvciBvY2N1cnMuIEJlIHN1cmUgdG8gY2hlY2sgYHJlcy5zZW50SGVhZGVyYFxuICogaWYgeW91IHdpc2ggdG8gYXR0ZW1wdCByZXNwb25kaW5nLCBhcyB0aGUgaGVhZGVyIGFuZCBzb21lIGRhdGFcbiAqIG1heSBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcnJlZC5cbiAqXG4gKiBPcHRpb25zOlxuICpcbiAqICAgLSBgbWF4QWdlYCAgIGRlZmF1bHRpbmcgdG8gMCAoY2FuIGJlIHN0cmluZyBjb252ZXJ0ZWQgYnkgYG1zYClcbiAqICAgLSBgcm9vdGAgICAgIHJvb3QgZGlyZWN0b3J5IGZvciByZWxhdGl2ZSBmaWxlbmFtZXNcbiAqICAgLSBgaGVhZGVyc2AgIG9iamVjdCBvZiBoZWFkZXJzIHRvIHNlcnZlIHdpdGggZmlsZVxuICogICAtIGBkb3RmaWxlc2Agc2VydmUgZG90ZmlsZXMsIGRlZmF1bHRpbmcgdG8gZmFsc2U7IGNhbiBiZSBgXCJhbGxvd1wiYCB0byBzZW5kIHRoZW1cbiAqXG4gKiBPdGhlciBvcHRpb25zIGFyZSBwYXNzZWQgYWxvbmcgdG8gYHNlbmRgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgaWxsdXN0cmF0ZXMgaG93IGByZXMuc2VuZEZpbGUoKWAgbWF5XG4gKiAgYmUgdXNlZCBhcyBhbiBhbHRlcm5hdGl2ZSBmb3IgdGhlIGBzdGF0aWMoKWAgbWlkZGxld2FyZSBmb3JcbiAqICBkeW5hbWljIHNpdHVhdGlvbnMuIFRoZSBjb2RlIGJhY2tpbmcgYHJlcy5zZW5kRmlsZSgpYCBpcyBhY3R1YWxseVxuICogIHRoZSBzYW1lIGNvZGUsIHNvIEhUVFAgY2FjaGUgc3VwcG9ydCBldGMgaXMgaWRlbnRpY2FsLlxuICpcbiAqICAgICBhcHAuZ2V0KCcvdXNlci86dWlkL3Bob3Rvcy86ZmlsZScsIGZ1bmN0aW9uKHJlcSwgcmVzKXtcbiAqICAgICAgIHZhciB1aWQgPSByZXEucGFyYW1zLnVpZFxuICogICAgICAgICAsIGZpbGUgPSByZXEucGFyYW1zLmZpbGU7XG4gKlxuICogICAgICAgcmVxLnVzZXIubWF5Vmlld0ZpbGVzRnJvbSh1aWQsIGZ1bmN0aW9uKHllcyl7XG4gKiAgICAgICAgIGlmICh5ZXMpIHtcbiAqICAgICAgICAgICByZXMuc2VuZEZpbGUoJy91cGxvYWRzLycgKyB1aWQgKyAnLycgKyBmaWxlKTtcbiAqICAgICAgICAgfSBlbHNlIHtcbiAqICAgICAgICAgICByZXMuc2VuZCg0MDMsICdTb3JyeSEgeW91IGNhbnQgc2VlIHRoYXQuJyk7XG4gKiAgICAgICAgIH1cbiAqICAgICAgIH0pO1xuICogICAgIH0pO1xuICpcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuc2VuZEZpbGUgPSBmdW5jdGlvbiBzZW5kRmlsZShwYXRoLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgZG9uZSA9IGNhbGxiYWNrO1xuICB2YXIgcmVxID0gdGhpcy5yZXE7XG4gIHZhciByZXMgPSB0aGlzO1xuICB2YXIgbmV4dCA9IHJlcS5uZXh0O1xuICB2YXIgb3B0cyA9IG9wdGlvbnMgfHwge307XG5cbiAgaWYgKCFwYXRoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncGF0aCBhcmd1bWVudCBpcyByZXF1aXJlZCB0byByZXMuc2VuZEZpbGUnKTtcbiAgfVxuXG4gIC8vIHN1cHBvcnQgZnVuY3Rpb24gYXMgc2Vjb25kIGFyZ1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkb25lID0gb3B0aW9ucztcbiAgICBvcHRzID0ge307XG4gIH1cblxuICBpZiAoIW9wdHMucm9vdCAmJiAhaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BhdGggbXVzdCBiZSBhYnNvbHV0ZSBvciBzcGVjaWZ5IHJvb3QgdG8gcmVzLnNlbmRGaWxlJyk7XG4gIH1cblxuICAvLyBjcmVhdGUgZmlsZSBzdHJlYW1cbiAgdmFyIHBhdGhuYW1lID0gZW5jb2RlVVJJKHBhdGgpO1xuICB2YXIgZmlsZSA9IHNlbmQocmVxLCBwYXRobmFtZSwgb3B0cyk7XG5cbiAgLy8gdHJhbnNmZXJcbiAgc2VuZGZpbGUocmVzLCBmaWxlLCBvcHRzLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGRvbmUpIHJldHVybiBkb25lKGVycik7XG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSA9PT0gJ0VJU0RJUicpIHJldHVybiBuZXh0KCk7XG5cbiAgICAvLyBuZXh0KCkgYWxsIGJ1dCB3cml0ZSBlcnJvcnNcbiAgICBpZiAoZXJyICYmIGVyci5jb2RlICE9PSAnRUNPTk5BQk9SVEVEJyAmJiBlcnIuc3lzY2FsbCAhPT0gJ3dyaXRlJykge1xuICAgICAgbmV4dChlcnIpO1xuICAgIH1cbiAgfSk7XG59O1xuXG4vKipcbiAqIFRyYW5zZmVyIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBgcGF0aGAuXG4gKlxuICogQXV0b21hdGljYWxseSBzZXRzIHRoZSBfQ29udGVudC1UeXBlXyByZXNwb25zZSBoZWFkZXIgZmllbGQuXG4gKiBUaGUgY2FsbGJhY2sgYGNhbGxiYWNrKGVycilgIGlzIGludm9rZWQgd2hlbiB0aGUgdHJhbnNmZXIgaXMgY29tcGxldGVcbiAqIG9yIHdoZW4gYW4gZXJyb3Igb2NjdXJzLiBCZSBzdXJlIHRvIGNoZWNrIGByZXMuc2VudEhlYWRlcmBcbiAqIGlmIHlvdSB3aXNoIHRvIGF0dGVtcHQgcmVzcG9uZGluZywgYXMgdGhlIGhlYWRlciBhbmQgc29tZSBkYXRhXG4gKiBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJyZWQuXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgIC0gYG1heEFnZWAgICBkZWZhdWx0aW5nIHRvIDAgKGNhbiBiZSBzdHJpbmcgY29udmVydGVkIGJ5IGBtc2ApXG4gKiAgIC0gYHJvb3RgICAgICByb290IGRpcmVjdG9yeSBmb3IgcmVsYXRpdmUgZmlsZW5hbWVzXG4gKiAgIC0gYGhlYWRlcnNgICBvYmplY3Qgb2YgaGVhZGVycyB0byBzZXJ2ZSB3aXRoIGZpbGVcbiAqICAgLSBgZG90ZmlsZXNgIHNlcnZlIGRvdGZpbGVzLCBkZWZhdWx0aW5nIHRvIGZhbHNlOyBjYW4gYmUgYFwiYWxsb3dcImAgdG8gc2VuZCB0aGVtXG4gKlxuICogT3RoZXIgb3B0aW9ucyBhcmUgcGFzc2VkIGFsb25nIHRvIGBzZW5kYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGlsbHVzdHJhdGVzIGhvdyBgcmVzLnNlbmRmaWxlKClgIG1heVxuICogIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgZm9yIHRoZSBgc3RhdGljKClgIG1pZGRsZXdhcmUgZm9yXG4gKiAgZHluYW1pYyBzaXR1YXRpb25zLiBUaGUgY29kZSBiYWNraW5nIGByZXMuc2VuZGZpbGUoKWAgaXMgYWN0dWFsbHlcbiAqICB0aGUgc2FtZSBjb2RlLCBzbyBIVFRQIGNhY2hlIHN1cHBvcnQgZXRjIGlzIGlkZW50aWNhbC5cbiAqXG4gKiAgICAgYXBwLmdldCgnL3VzZXIvOnVpZC9waG90b3MvOmZpbGUnLCBmdW5jdGlvbihyZXEsIHJlcyl7XG4gKiAgICAgICB2YXIgdWlkID0gcmVxLnBhcmFtcy51aWRcbiAqICAgICAgICAgLCBmaWxlID0gcmVxLnBhcmFtcy5maWxlO1xuICpcbiAqICAgICAgIHJlcS51c2VyLm1heVZpZXdGaWxlc0Zyb20odWlkLCBmdW5jdGlvbih5ZXMpe1xuICogICAgICAgICBpZiAoeWVzKSB7XG4gKiAgICAgICAgICAgcmVzLnNlbmRmaWxlKCcvdXBsb2Fkcy8nICsgdWlkICsgJy8nICsgZmlsZSk7XG4gKiAgICAgICAgIH0gZWxzZSB7XG4gKiAgICAgICAgICAgcmVzLnNlbmQoNDAzLCAnU29ycnkhIHlvdSBjYW50IHNlZSB0aGF0LicpO1xuICogICAgICAgICB9XG4gKiAgICAgICB9KTtcbiAqICAgICB9KTtcbiAqXG4gKiBAcHVibGljXG4gKi9cblxucmVzLnNlbmRmaWxlID0gZnVuY3Rpb24gKHBhdGgsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBkb25lID0gY2FsbGJhY2s7XG4gIHZhciByZXEgPSB0aGlzLnJlcTtcbiAgdmFyIHJlcyA9IHRoaXM7XG4gIHZhciBuZXh0ID0gcmVxLm5leHQ7XG4gIHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBzdXBwb3J0IGZ1bmN0aW9uIGFzIHNlY29uZCBhcmdcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZG9uZSA9IG9wdGlvbnM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG5cbiAgLy8gY3JlYXRlIGZpbGUgc3RyZWFtXG4gIHZhciBmaWxlID0gc2VuZChyZXEsIHBhdGgsIG9wdHMpO1xuXG4gIC8vIHRyYW5zZmVyXG4gIHNlbmRmaWxlKHJlcywgZmlsZSwgb3B0cywgZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChkb25lKSByZXR1cm4gZG9uZShlcnIpO1xuICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgPT09ICdFSVNESVInKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgLy8gbmV4dCgpIGFsbCBidXQgd3JpdGUgZXJyb3JzXG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSAhPT0gJ0VDT05OQUJPUlQnICYmIGVyci5zeXNjYWxsICE9PSAnd3JpdGUnKSB7XG4gICAgICBuZXh0KGVycik7XG4gICAgfVxuICB9KTtcbn07XG5cbnJlcy5zZW5kZmlsZSA9IGRlcHJlY2F0ZS5mdW5jdGlvbihyZXMuc2VuZGZpbGUsXG4gICdyZXMuc2VuZGZpbGU6IFVzZSByZXMuc2VuZEZpbGUgaW5zdGVhZCcpO1xuXG4vKipcbiAqIFRyYW5zZmVyIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBgcGF0aGAgYXMgYW4gYXR0YWNobWVudC5cbiAqXG4gKiBPcHRpb25hbGx5IHByb3ZpZGluZyBhbiBhbHRlcm5hdGUgYXR0YWNobWVudCBgZmlsZW5hbWVgLFxuICogYW5kIG9wdGlvbmFsIGNhbGxiYWNrIGBjYWxsYmFjayhlcnIpYC4gVGhlIGNhbGxiYWNrIGlzIGludm9rZWRcbiAqIHdoZW4gdGhlIGRhdGEgdHJhbnNmZXIgaXMgY29tcGxldGUsIG9yIHdoZW4gYW4gZXJyb3IgaGFzXG4gKiBvY3VycmVkLiBCZSBzdXJlIHRvIGNoZWNrIGByZXMuaGVhZGVyc1NlbnRgIGlmIHlvdSBwbGFuIHRvIHJlc3BvbmQuXG4gKlxuICogT3B0aW9uYWxseSBwcm92aWRpbmcgYW4gYG9wdGlvbnNgIG9iamVjdCB0byB1c2Ugd2l0aCBgcmVzLnNlbmRGaWxlKClgLlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgYENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgb3ZlcnJpZGluZ1xuICogYW55IGBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIgcGFzc2VkIGFzIGhlYWRlciBvcHRpb25zIGluIG9yZGVyXG4gKiB0byBzZXQgdGhlIGF0dGFjaG1lbnQgYW5kIGZpbGVuYW1lLlxuICpcbiAqIFRoaXMgbWV0aG9kIHVzZXMgYHJlcy5zZW5kRmlsZSgpYC5cbiAqXG4gKiBAcHVibGljXG4gKi9cblxucmVzLmRvd25sb2FkID0gZnVuY3Rpb24gZG93bmxvYWQgKHBhdGgsIGZpbGVuYW1lLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgZG9uZSA9IGNhbGxiYWNrO1xuICB2YXIgbmFtZSA9IGZpbGVuYW1lO1xuICB2YXIgb3B0cyA9IG9wdGlvbnMgfHwgbnVsbFxuXG4gIC8vIHN1cHBvcnQgZnVuY3Rpb24gYXMgc2Vjb25kIG9yIHRoaXJkIGFyZ1xuICBpZiAodHlwZW9mIGZpbGVuYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZG9uZSA9IGZpbGVuYW1lO1xuICAgIG5hbWUgPSBudWxsO1xuICAgIG9wdHMgPSBudWxsXG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkb25lID0gb3B0aW9uc1xuICAgIG9wdHMgPSBudWxsXG4gIH1cblxuICAvLyBzZXQgQ29udGVudC1EaXNwb3NpdGlvbiB3aGVuIGZpbGUgaXMgc2VudFxuICB2YXIgaGVhZGVycyA9IHtcbiAgICAnQ29udGVudC1EaXNwb3NpdGlvbic6IGNvbnRlbnREaXNwb3NpdGlvbihuYW1lIHx8IHBhdGgpXG4gIH07XG5cbiAgLy8gbWVyZ2UgdXNlci1wcm92aWRlZCBoZWFkZXJzXG4gIGlmIChvcHRzICYmIG9wdHMuaGVhZGVycykge1xuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob3B0cy5oZWFkZXJzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV1cbiAgICAgIGlmIChrZXkudG9Mb3dlckNhc2UoKSAhPT0gJ2NvbnRlbnQtZGlzcG9zaXRpb24nKSB7XG4gICAgICAgIGhlYWRlcnNba2V5XSA9IG9wdHMuaGVhZGVyc1trZXldXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gbWVyZ2UgdXNlci1wcm92aWRlZCBvcHRpb25zXG4gIG9wdHMgPSBPYmplY3QuY3JlYXRlKG9wdHMpXG4gIG9wdHMuaGVhZGVycyA9IGhlYWRlcnNcblxuICAvLyBSZXNvbHZlIHRoZSBmdWxsIHBhdGggZm9yIHNlbmRGaWxlXG4gIHZhciBmdWxsUGF0aCA9IHJlc29sdmUocGF0aCk7XG5cbiAgLy8gc2VuZCBmaWxlXG4gIHJldHVybiB0aGlzLnNlbmRGaWxlKGZ1bGxQYXRoLCBvcHRzLCBkb25lKVxufTtcblxuLyoqXG4gKiBTZXQgX0NvbnRlbnQtVHlwZV8gcmVzcG9uc2UgaGVhZGVyIHdpdGggYHR5cGVgIHRocm91Z2ggYG1pbWUubG9va3VwKClgXG4gKiB3aGVuIGl0IGRvZXMgbm90IGNvbnRhaW4gXCIvXCIsIG9yIHNldCB0aGUgQ29udGVudC1UeXBlIHRvIGB0eXBlYCBvdGhlcndpc2UuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIHJlcy50eXBlKCcuaHRtbCcpO1xuICogICAgIHJlcy50eXBlKCdodG1sJyk7XG4gKiAgICAgcmVzLnR5cGUoJ2pzb24nKTtcbiAqICAgICByZXMudHlwZSgnYXBwbGljYXRpb24vanNvbicpO1xuICogICAgIHJlcy50eXBlKCdwbmcnKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICogQHJldHVybiB7U2VydmVyUmVzcG9uc2V9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbnJlcy5jb250ZW50VHlwZSA9XG5yZXMudHlwZSA9IGZ1bmN0aW9uIGNvbnRlbnRUeXBlKHR5cGUpIHtcbiAgdmFyIGN0ID0gdHlwZS5pbmRleE9mKCcvJykgPT09IC0xXG4gICAgPyBtaW1lLmxvb2t1cCh0eXBlKVxuICAgIDogdHlwZTtcblxuICByZXR1cm4gdGhpcy5zZXQoJ0NvbnRlbnQtVHlwZScsIGN0KTtcbn07XG5cbi8qKlxuICogUmVzcG9uZCB0byB0aGUgQWNjZXB0YWJsZSBmb3JtYXRzIHVzaW5nIGFuIGBvYmpgXG4gKiBvZiBtaW1lLXR5cGUgY2FsbGJhY2tzLlxuICpcbiAqIFRoaXMgbWV0aG9kIHVzZXMgYHJlcS5hY2NlcHRlZGAsIGFuIGFycmF5IG9mXG4gKiBhY2NlcHRhYmxlIHR5cGVzIG9yZGVyZWQgYnkgdGhlaXIgcXVhbGl0eSB2YWx1ZXMuXG4gKiBXaGVuIFwiQWNjZXB0XCIgaXMgbm90IHByZXNlbnQgdGhlIF9maXJzdF8gY2FsbGJhY2tcbiAqIGlzIGludm9rZWQsIG90aGVyd2lzZSB0aGUgZmlyc3QgbWF0Y2ggaXMgdXNlZC4gV2hlblxuICogbm8gbWF0Y2ggaXMgcGVyZm9ybWVkIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgd2l0aFxuICogNDA2IFwiTm90IEFjY2VwdGFibGVcIi5cbiAqXG4gKiBDb250ZW50LVR5cGUgaXMgc2V0IGZvciB5b3UsIGhvd2V2ZXIgaWYgeW91IGNob29zZVxuICogeW91IG1heSBhbHRlciB0aGlzIHdpdGhpbiB0aGUgY2FsbGJhY2sgdXNpbmcgYHJlcy50eXBlKClgXG4gKiBvciBgcmVzLnNldCgnQ29udGVudC1UeXBlJywgLi4uKWAuXG4gKlxuICogICAgcmVzLmZvcm1hdCh7XG4gKiAgICAgICd0ZXh0L3BsYWluJzogZnVuY3Rpb24oKXtcbiAqICAgICAgICByZXMuc2VuZCgnaGV5Jyk7XG4gKiAgICAgIH0sXG4gKlxuICogICAgICAndGV4dC9odG1sJzogZnVuY3Rpb24oKXtcbiAqICAgICAgICByZXMuc2VuZCgnPHA+aGV5PC9wPicpO1xuICogICAgICB9LFxuICpcbiAqICAgICAgJ2FwcGxpYXRpb24vanNvbic6IGZ1bmN0aW9uKCl7XG4gKiAgICAgICAgcmVzLnNlbmQoeyBtZXNzYWdlOiAnaGV5JyB9KTtcbiAqICAgICAgfVxuICogICAgfSk7XG4gKlxuICogSW4gYWRkaXRpb24gdG8gY2Fub25pY2FsaXplZCBNSU1FIHR5cGVzIHlvdSBtYXlcbiAqIGFsc28gdXNlIGV4dG5hbWVzIG1hcHBlZCB0byB0aGVzZSB0eXBlczpcbiAqXG4gKiAgICByZXMuZm9ybWF0KHtcbiAqICAgICAgdGV4dDogZnVuY3Rpb24oKXtcbiAqICAgICAgICByZXMuc2VuZCgnaGV5Jyk7XG4gKiAgICAgIH0sXG4gKlxuICogICAgICBodG1sOiBmdW5jdGlvbigpe1xuICogICAgICAgIHJlcy5zZW5kKCc8cD5oZXk8L3A+Jyk7XG4gKiAgICAgIH0sXG4gKlxuICogICAgICBqc29uOiBmdW5jdGlvbigpe1xuICogICAgICAgIHJlcy5zZW5kKHsgbWVzc2FnZTogJ2hleScgfSk7XG4gKiAgICAgIH1cbiAqICAgIH0pO1xuICpcbiAqIEJ5IGRlZmF1bHQgRXhwcmVzcyBwYXNzZXMgYW4gYEVycm9yYFxuICogd2l0aCBhIGAuc3RhdHVzYCBvZiA0MDYgdG8gYG5leHQoZXJyKWBcbiAqIGlmIGEgbWF0Y2ggaXMgbm90IG1hZGUuIElmIHlvdSBwcm92aWRlXG4gKiBhIGAuZGVmYXVsdGAgY2FsbGJhY2sgaXQgd2lsbCBiZSBpbnZva2VkXG4gKiBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge1NlcnZlclJlc3BvbnNlfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuZm9ybWF0ID0gZnVuY3Rpb24ob2JqKXtcbiAgdmFyIHJlcSA9IHRoaXMucmVxO1xuICB2YXIgbmV4dCA9IHJlcS5uZXh0O1xuXG4gIHZhciBmbiA9IG9iai5kZWZhdWx0O1xuICBpZiAoZm4pIGRlbGV0ZSBvYmouZGVmYXVsdDtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuXG4gIHZhciBrZXkgPSBrZXlzLmxlbmd0aCA+IDBcbiAgICA/IHJlcS5hY2NlcHRzKGtleXMpXG4gICAgOiBmYWxzZTtcblxuICB0aGlzLnZhcnkoXCJBY2NlcHRcIik7XG5cbiAgaWYgKGtleSkge1xuICAgIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCBub3JtYWxpemVUeXBlKGtleSkudmFsdWUpO1xuICAgIG9ialtrZXldKHJlcSwgdGhpcywgbmV4dCk7XG4gIH0gZWxzZSBpZiAoZm4pIHtcbiAgICBmbigpO1xuICB9IGVsc2Uge1xuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ05vdCBBY2NlcHRhYmxlJyk7XG4gICAgZXJyLnN0YXR1cyA9IGVyci5zdGF0dXNDb2RlID0gNDA2O1xuICAgIGVyci50eXBlcyA9IG5vcm1hbGl6ZVR5cGVzKGtleXMpLm1hcChmdW5jdGlvbihvKXsgcmV0dXJuIG8udmFsdWUgfSk7XG4gICAgbmV4dChlcnIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBfQ29udGVudC1EaXNwb3NpdGlvbl8gaGVhZGVyIHRvIF9hdHRhY2htZW50XyB3aXRoIG9wdGlvbmFsIGBmaWxlbmFtZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lXG4gKiBAcmV0dXJuIHtTZXJ2ZXJSZXNwb25zZX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuYXR0YWNobWVudCA9IGZ1bmN0aW9uIGF0dGFjaG1lbnQoZmlsZW5hbWUpIHtcbiAgaWYgKGZpbGVuYW1lKSB7XG4gICAgdGhpcy50eXBlKGV4dG5hbWUoZmlsZW5hbWUpKTtcbiAgfVxuXG4gIHRoaXMuc2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJywgY29udGVudERpc3Bvc2l0aW9uKGZpbGVuYW1lKSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFwcGVuZCBhZGRpdGlvbmFsIGhlYWRlciBgZmllbGRgIHdpdGggdmFsdWUgYHZhbGAuXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICByZXMuYXBwZW5kKCdMaW5rJywgWyc8aHR0cDovL2xvY2FsaG9zdC8+JywgJzxodHRwOi8vbG9jYWxob3N0OjMwMDAvPiddKTtcbiAqICAgIHJlcy5hcHBlbmQoJ1NldC1Db29raWUnLCAnZm9vPWJhcjsgUGF0aD0vOyBIdHRwT25seScpO1xuICogICAgcmVzLmFwcGVuZCgnV2FybmluZycsICcxOTkgTWlzY2VsbGFuZW91cyB3YXJuaW5nJyk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gdmFsXG4gKiBAcmV0dXJuIHtTZXJ2ZXJSZXNwb25zZX0gZm9yIGNoYWluaW5nXG4gKiBAcHVibGljXG4gKi9cblxucmVzLmFwcGVuZCA9IGZ1bmN0aW9uIGFwcGVuZChmaWVsZCwgdmFsKSB7XG4gIHZhciBwcmV2ID0gdGhpcy5nZXQoZmllbGQpO1xuICB2YXIgdmFsdWUgPSB2YWw7XG5cbiAgaWYgKHByZXYpIHtcbiAgICAvLyBjb25jYXQgdGhlIG5ldyBhbmQgcHJldiB2YWxzXG4gICAgdmFsdWUgPSBBcnJheS5pc0FycmF5KHByZXYpID8gcHJldi5jb25jYXQodmFsKVxuICAgICAgOiBBcnJheS5pc0FycmF5KHZhbCkgPyBbcHJldl0uY29uY2F0KHZhbClcbiAgICAgIDogW3ByZXYsIHZhbF07XG4gIH1cblxuICByZXR1cm4gdGhpcy5zZXQoZmllbGQsIHZhbHVlKTtcbn07XG5cbi8qKlxuICogU2V0IGhlYWRlciBgZmllbGRgIHRvIGB2YWxgLCBvciBwYXNzXG4gKiBhbiBvYmplY3Qgb2YgaGVhZGVyIGZpZWxkcy5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICByZXMuc2V0KCdGb28nLCBbJ2JhcicsICdiYXonXSk7XG4gKiAgICByZXMuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICogICAgcmVzLnNldCh7IEFjY2VwdDogJ3RleHQvcGxhaW4nLCAnWC1BUEktS2V5JzogJ3RvYmknIH0pO1xuICpcbiAqIEFsaWFzZWQgYXMgYHJlcy5oZWFkZXIoKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8T2JqZWN0fSBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHZhbFxuICogQHJldHVybiB7U2VydmVyUmVzcG9uc2V9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbnJlcy5zZXQgPVxucmVzLmhlYWRlciA9IGZ1bmN0aW9uIGhlYWRlcihmaWVsZCwgdmFsKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgdmFyIHZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWwpXG4gICAgICA/IHZhbC5tYXAoU3RyaW5nKVxuICAgICAgOiBTdHJpbmcodmFsKTtcblxuICAgIC8vIGFkZCBjaGFyc2V0IHRvIGNvbnRlbnQtdHlwZVxuICAgIGlmIChmaWVsZC50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC10eXBlJykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0NvbnRlbnQtVHlwZSBjYW5ub3QgYmUgc2V0IHRvIGFuIEFycmF5Jyk7XG4gICAgICB9XG4gICAgICBpZiAoIWNoYXJzZXRSZWdFeHAudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIGNoYXJzZXQgPSBtaW1lLmNoYXJzZXRzLmxvb2t1cCh2YWx1ZS5zcGxpdCgnOycpWzBdKTtcbiAgICAgICAgaWYgKGNoYXJzZXQpIHZhbHVlICs9ICc7IGNoYXJzZXQ9JyArIGNoYXJzZXQudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNldEhlYWRlcihmaWVsZCwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGtleSBpbiBmaWVsZCkge1xuICAgICAgdGhpcy5zZXQoa2V5LCBmaWVsZFtrZXldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEdldCB2YWx1ZSBmb3IgaGVhZGVyIGBmaWVsZGAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxucmVzLmdldCA9IGZ1bmN0aW9uKGZpZWxkKXtcbiAgcmV0dXJuIHRoaXMuZ2V0SGVhZGVyKGZpZWxkKTtcbn07XG5cbi8qKlxuICogQ2xlYXIgY29va2llIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICogQHJldHVybiB7U2VydmVyUmVzcG9uc2V9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbnJlcy5jbGVhckNvb2tpZSA9IGZ1bmN0aW9uIGNsZWFyQ29va2llKG5hbWUsIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBtZXJnZSh7IGV4cGlyZXM6IG5ldyBEYXRlKDEpLCBwYXRoOiAnLycgfSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIHRoaXMuY29va2llKG5hbWUsICcnLCBvcHRzKTtcbn07XG5cbi8qKlxuICogU2V0IGNvb2tpZSBgbmFtZWAgdG8gYHZhbHVlYCwgd2l0aCB0aGUgZ2l2ZW4gYG9wdGlvbnNgLlxuICpcbiAqIE9wdGlvbnM6XG4gKlxuICogICAgLSBgbWF4QWdlYCAgIG1heC1hZ2UgaW4gbWlsbGlzZWNvbmRzLCBjb252ZXJ0ZWQgdG8gYGV4cGlyZXNgXG4gKiAgICAtIGBzaWduZWRgICAgc2lnbiB0aGUgY29va2llXG4gKiAgICAtIGBwYXRoYCAgICAgZGVmYXVsdHMgdG8gXCIvXCJcbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAvLyBcIlJlbWVtYmVyIE1lXCIgZm9yIDE1IG1pbnV0ZXNcbiAqICAgIHJlcy5jb29raWUoJ3JlbWVtYmVybWUnLCAnMScsIHsgZXhwaXJlczogbmV3IERhdGUoRGF0ZS5ub3coKSArIDkwMDAwMCksIGh0dHBPbmx5OiB0cnVlIH0pO1xuICpcbiAqICAgIC8vIHNhdmUgYXMgYWJvdmVcbiAqICAgIHJlcy5jb29raWUoJ3JlbWVtYmVybWUnLCAnMScsIHsgbWF4QWdlOiA5MDAwMDAsIGh0dHBPbmx5OiB0cnVlIH0pXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gdmFsdWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge1NlcnZlclJlc3BvbnNlfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuY29va2llID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gbWVyZ2Uoe30sIG9wdGlvbnMpO1xuICB2YXIgc2VjcmV0ID0gdGhpcy5yZXEuc2VjcmV0O1xuICB2YXIgc2lnbmVkID0gb3B0cy5zaWduZWQ7XG5cbiAgaWYgKHNpZ25lZCAmJiAhc2VjcmV0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjb29raWVQYXJzZXIoXCJzZWNyZXRcIikgcmVxdWlyZWQgZm9yIHNpZ25lZCBjb29raWVzJyk7XG4gIH1cblxuICB2YXIgdmFsID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgID8gJ2o6JyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuICAgIDogU3RyaW5nKHZhbHVlKTtcblxuICBpZiAoc2lnbmVkKSB7XG4gICAgdmFsID0gJ3M6JyArIHNpZ24odmFsLCBzZWNyZXQpO1xuICB9XG5cbiAgaWYgKCdtYXhBZ2UnIGluIG9wdHMpIHtcbiAgICBvcHRzLmV4cGlyZXMgPSBuZXcgRGF0ZShEYXRlLm5vdygpICsgb3B0cy5tYXhBZ2UpO1xuICAgIG9wdHMubWF4QWdlIC89IDEwMDA7XG4gIH1cblxuICBpZiAob3B0cy5wYXRoID09IG51bGwpIHtcbiAgICBvcHRzLnBhdGggPSAnLyc7XG4gIH1cblxuICB0aGlzLmFwcGVuZCgnU2V0LUNvb2tpZScsIGNvb2tpZS5zZXJpYWxpemUobmFtZSwgU3RyaW5nKHZhbCksIG9wdHMpKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBsb2NhdGlvbiBoZWFkZXIgdG8gYHVybGAuXG4gKlxuICogVGhlIGdpdmVuIGB1cmxgIGNhbiBhbHNvIGJlIFwiYmFja1wiLCB3aGljaCByZWRpcmVjdHNcbiAqIHRvIHRoZSBfUmVmZXJyZXJfIG9yIF9SZWZlcmVyXyBoZWFkZXJzIG9yIFwiL1wiLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgIHJlcy5sb2NhdGlvbignL2Zvby9iYXInKS47XG4gKiAgICByZXMubG9jYXRpb24oJ2h0dHA6Ly9leGFtcGxlLmNvbScpO1xuICogICAgcmVzLmxvY2F0aW9uKCcuLi9sb2dpbicpO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEByZXR1cm4ge1NlcnZlclJlc3BvbnNlfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMubG9jYXRpb24gPSBmdW5jdGlvbiBsb2NhdGlvbih1cmwpIHtcbiAgdmFyIGxvYyA9IHVybDtcblxuICAvLyBcImJhY2tcIiBpcyBhbiBhbGlhcyBmb3IgdGhlIHJlZmVycmVyXG4gIGlmICh1cmwgPT09ICdiYWNrJykge1xuICAgIGxvYyA9IHRoaXMucmVxLmdldCgnUmVmZXJyZXInKSB8fCAnLyc7XG4gIH1cblxuICAvLyBzZXQgbG9jYXRpb25cbiAgcmV0dXJuIHRoaXMuc2V0KCdMb2NhdGlvbicsIGVuY29kZVVybChsb2MpKTtcbn07XG5cbi8qKlxuICogUmVkaXJlY3QgdG8gdGhlIGdpdmVuIGB1cmxgIHdpdGggb3B0aW9uYWwgcmVzcG9uc2UgYHN0YXR1c2BcbiAqIGRlZmF1bHRpbmcgdG8gMzAyLlxuICpcbiAqIFRoZSByZXN1bHRpbmcgYHVybGAgaXMgZGV0ZXJtaW5lZCBieSBgcmVzLmxvY2F0aW9uKClgLCBzb1xuICogaXQgd2lsbCBwbGF5IG5pY2VseSB3aXRoIG1vdW50ZWQgYXBwcywgcmVsYXRpdmUgcGF0aHMsXG4gKiBgXCJiYWNrXCJgIGV0Yy5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICByZXMucmVkaXJlY3QoJy9mb28vYmFyJyk7XG4gKiAgICByZXMucmVkaXJlY3QoJ2h0dHA6Ly9leGFtcGxlLmNvbScpO1xuICogICAgcmVzLnJlZGlyZWN0KDMwMSwgJ2h0dHA6Ly9leGFtcGxlLmNvbScpO1xuICogICAgcmVzLnJlZGlyZWN0KCcuLi9sb2dpbicpOyAvLyAvYmxvZy9wb3N0LzEgLT4gL2Jsb2cvbG9naW5cbiAqXG4gKiBAcHVibGljXG4gKi9cblxucmVzLnJlZGlyZWN0ID0gZnVuY3Rpb24gcmVkaXJlY3QodXJsKSB7XG4gIHZhciBhZGRyZXNzID0gdXJsO1xuICB2YXIgYm9keTtcbiAgdmFyIHN0YXR1cyA9IDMwMjtcblxuICAvLyBhbGxvdyBzdGF0dXMgLyB1cmxcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHN0YXR1cyA9IGFyZ3VtZW50c1swXTtcbiAgICAgIGFkZHJlc3MgPSBhcmd1bWVudHNbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlcHJlY2F0ZSgncmVzLnJlZGlyZWN0KHVybCwgc3RhdHVzKTogVXNlIHJlcy5yZWRpcmVjdChzdGF0dXMsIHVybCkgaW5zdGVhZCcpO1xuICAgICAgc3RhdHVzID0gYXJndW1lbnRzWzFdO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBsb2NhdGlvbiBoZWFkZXJcbiAgYWRkcmVzcyA9IHRoaXMubG9jYXRpb24oYWRkcmVzcykuZ2V0KCdMb2NhdGlvbicpO1xuXG4gIC8vIFN1cHBvcnQgdGV4dC97cGxhaW4saHRtbH0gYnkgZGVmYXVsdFxuICB0aGlzLmZvcm1hdCh7XG4gICAgdGV4dDogZnVuY3Rpb24oKXtcbiAgICAgIGJvZHkgPSBzdGF0dXNlc1tzdGF0dXNdICsgJy4gUmVkaXJlY3RpbmcgdG8gJyArIGFkZHJlc3NcbiAgICB9LFxuXG4gICAgaHRtbDogZnVuY3Rpb24oKXtcbiAgICAgIHZhciB1ID0gZXNjYXBlSHRtbChhZGRyZXNzKTtcbiAgICAgIGJvZHkgPSAnPHA+JyArIHN0YXR1c2VzW3N0YXR1c10gKyAnLiBSZWRpcmVjdGluZyB0byA8YSBocmVmPVwiJyArIHUgKyAnXCI+JyArIHUgKyAnPC9hPjwvcD4nXG4gICAgfSxcblxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uKCl7XG4gICAgICBib2R5ID0gJyc7XG4gICAgfVxuICB9KTtcblxuICAvLyBSZXNwb25kXG4gIHRoaXMuc3RhdHVzQ29kZSA9IHN0YXR1cztcbiAgdGhpcy5zZXQoJ0NvbnRlbnQtTGVuZ3RoJywgQnVmZmVyLmJ5dGVMZW5ndGgoYm9keSkpO1xuXG4gIGlmICh0aGlzLnJlcS5tZXRob2QgPT09ICdIRUFEJykge1xuICAgIHRoaXMuZW5kKCk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5lbmQoYm9keSk7XG4gIH1cbn07XG5cbi8qKlxuICogQWRkIGBmaWVsZGAgdG8gVmFyeS4gSWYgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBWYXJ5IHNldCwgdGhlblxuICogdGhpcyBjYWxsIGlzIHNpbXBseSBpZ25vcmVkLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl8U3RyaW5nfSBmaWVsZFxuICogQHJldHVybiB7U2VydmVyUmVzcG9uc2V9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbnJlcy52YXJ5ID0gZnVuY3Rpb24oZmllbGQpe1xuICAvLyBjaGVja3MgZm9yIGJhY2stY29tcGF0XG4gIGlmICghZmllbGQgfHwgKEFycmF5LmlzQXJyYXkoZmllbGQpICYmICFmaWVsZC5sZW5ndGgpKSB7XG4gICAgZGVwcmVjYXRlKCdyZXMudmFyeSgpOiBQcm92aWRlIGEgZmllbGQgbmFtZScpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdmFyeSh0aGlzLCBmaWVsZCk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFJlbmRlciBgdmlld2Agd2l0aCB0aGUgZ2l2ZW4gYG9wdGlvbnNgIGFuZCBvcHRpb25hbCBjYWxsYmFjayBgZm5gLlxuICogV2hlbiBhIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIGdpdmVuIGEgcmVzcG9uc2Ugd2lsbCBfbm90XyBiZSBtYWRlXG4gKiBhdXRvbWF0aWNhbGx5LCBvdGhlcndpc2UgYSByZXNwb25zZSBvZiBfMjAwXyBhbmQgX3RleHQvaHRtbF8gaXMgZ2l2ZW4uXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgLSBgY2FjaGVgICAgICBib29sZWFuIGhpbnRpbmcgdG8gdGhlIGVuZ2luZSBpdCBzaG91bGQgY2FjaGVcbiAqICAtIGBmaWxlbmFtZWAgIGZpbGVuYW1lIG9mIHRoZSB2aWV3IGJlaW5nIHJlbmRlcmVkXG4gKlxuICogQHB1YmxpY1xuICovXG5cbnJlcy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIodmlldywgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIGFwcCA9IHRoaXMucmVxLmFwcDtcbiAgdmFyIGRvbmUgPSBjYWxsYmFjaztcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgcmVxID0gdGhpcy5yZXE7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICAvLyBzdXBwb3J0IGNhbGxiYWNrIGZ1bmN0aW9uIGFzIHNlY29uZCBhcmdcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZG9uZSA9IG9wdGlvbnM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG5cbiAgLy8gbWVyZ2UgcmVzLmxvY2Fsc1xuICBvcHRzLl9sb2NhbHMgPSBzZWxmLmxvY2FscztcblxuICAvLyBkZWZhdWx0IGNhbGxiYWNrIHRvIHJlc3BvbmRcbiAgZG9uZSA9IGRvbmUgfHwgZnVuY3Rpb24gKGVyciwgc3RyKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIHJlcS5uZXh0KGVycik7XG4gICAgc2VsZi5zZW5kKHN0cik7XG4gIH07XG5cbiAgLy8gcmVuZGVyXG4gIGFwcC5yZW5kZXIodmlldywgb3B0cywgZG9uZSk7XG59O1xuXG4vLyBwaXBlIHRoZSBzZW5kIGZpbGUgc3RyZWFtXG5mdW5jdGlvbiBzZW5kZmlsZShyZXMsIGZpbGUsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBkb25lID0gZmFsc2U7XG4gIHZhciBzdHJlYW1pbmc7XG5cbiAgLy8gcmVxdWVzdCBhYm9ydGVkXG4gIGZ1bmN0aW9uIG9uYWJvcnRlZCgpIHtcbiAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgIGRvbmUgPSB0cnVlO1xuXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcignUmVxdWVzdCBhYm9ydGVkJyk7XG4gICAgZXJyLmNvZGUgPSAnRUNPTk5BQk9SVEVEJztcbiAgICBjYWxsYmFjayhlcnIpO1xuICB9XG5cbiAgLy8gZGlyZWN0b3J5XG4gIGZ1bmN0aW9uIG9uZGlyZWN0b3J5KCkge1xuICAgIGlmIChkb25lKSByZXR1cm47XG4gICAgZG9uZSA9IHRydWU7XG5cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdFSVNESVIsIHJlYWQnKTtcbiAgICBlcnIuY29kZSA9ICdFSVNESVInO1xuICAgIGNhbGxiYWNrKGVycik7XG4gIH1cblxuICAvLyBlcnJvcnNcbiAgZnVuY3Rpb24gb25lcnJvcihlcnIpIHtcbiAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgIGRvbmUgPSB0cnVlO1xuICAgIGNhbGxiYWNrKGVycik7XG4gIH1cblxuICAvLyBlbmRlZFxuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgIGRvbmUgPSB0cnVlO1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cblxuICAvLyBmaWxlXG4gIGZ1bmN0aW9uIG9uZmlsZSgpIHtcbiAgICBzdHJlYW1pbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIGZpbmlzaGVkXG4gIGZ1bmN0aW9uIG9uZmluaXNoKGVycikge1xuICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgPT09ICdFQ09OTlJFU0VUJykgcmV0dXJuIG9uYWJvcnRlZCgpO1xuICAgIGlmIChlcnIpIHJldHVybiBvbmVycm9yKGVycik7XG4gICAgaWYgKGRvbmUpIHJldHVybjtcblxuICAgIHNldEltbWVkaWF0ZShmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoc3RyZWFtaW5nICE9PSBmYWxzZSAmJiAhZG9uZSkge1xuICAgICAgICBvbmFib3J0ZWQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgICAgZG9uZSA9IHRydWU7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gc3RyZWFtaW5nXG4gIGZ1bmN0aW9uIG9uc3RyZWFtKCkge1xuICAgIHN0cmVhbWluZyA9IHRydWU7XG4gIH1cblxuICBmaWxlLm9uKCdkaXJlY3RvcnknLCBvbmRpcmVjdG9yeSk7XG4gIGZpbGUub24oJ2VuZCcsIG9uZW5kKTtcbiAgZmlsZS5vbignZXJyb3InLCBvbmVycm9yKTtcbiAgZmlsZS5vbignZmlsZScsIG9uZmlsZSk7XG4gIGZpbGUub24oJ3N0cmVhbScsIG9uc3RyZWFtKTtcbiAgb25GaW5pc2hlZChyZXMsIG9uZmluaXNoKTtcblxuICBpZiAob3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgLy8gc2V0IGhlYWRlcnMgb24gc3VjY2Vzc2Z1bCB0cmFuc2ZlclxuICAgIGZpbGUub24oJ2hlYWRlcnMnLCBmdW5jdGlvbiBoZWFkZXJzKHJlcykge1xuICAgICAgdmFyIG9iaiA9IG9wdGlvbnMuaGVhZGVycztcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1tpXTtcbiAgICAgICAgcmVzLnNldEhlYWRlcihrLCBvYmpba10pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gcGlwZVxuICBmaWxlLnBpcGUocmVzKTtcbn1cblxuLyoqXG4gKiBTdHJpbmdpZnkgSlNPTiwgbGlrZSBKU09OLnN0cmluZ2lmeSwgYnV0IHY4IG9wdGltaXplZCwgd2l0aCB0aGVcbiAqIGFiaWxpdHkgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBjYW4gdHJpZ2dlciBIVE1MIHNuaWZmaW5nLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHJlcGxhY2VzXG4gKiBAcGFyYW0ge251bWJlcn0gc3BhY2VzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGVzY2FwZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc3RyaW5naWZ5ICh2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlcywgZXNjYXBlKSB7XG4gIC8vIHY4IGNoZWNrcyBhcmd1bWVudHMubGVuZ3RoIGZvciBvcHRpbWl6aW5nIHNpbXBsZSBjYWxsXG4gIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQ3MzBcbiAgdmFyIGpzb24gPSByZXBsYWNlciB8fCBzcGFjZXNcbiAgICA/IEpTT04uc3RyaW5naWZ5KHZhbHVlLCByZXBsYWNlciwgc3BhY2VzKVxuICAgIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXG4gIGlmIChlc2NhcGUpIHtcbiAgICBqc29uID0ganNvbi5yZXBsYWNlKC9bPD4mXS9nLCBmdW5jdGlvbiAoYykge1xuICAgICAgc3dpdGNoIChjLmNoYXJDb2RlQXQoMCkpIHtcbiAgICAgICAgY2FzZSAweDNjOlxuICAgICAgICAgIHJldHVybiAnXFxcXHUwMDNjJ1xuICAgICAgICBjYXNlIDB4M2U6XG4gICAgICAgICAgcmV0dXJuICdcXFxcdTAwM2UnXG4gICAgICAgIGNhc2UgMHgyNjpcbiAgICAgICAgICByZXR1cm4gJ1xcXFx1MDAyNidcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gY1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4ganNvblxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3Jlc3BvbnNlLmpzXG4vLyBtb2R1bGUgaWQgPSAxODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcblxuLyoqXG4gKiBTaWduIHRoZSBnaXZlbiBgdmFsYCB3aXRoIGBzZWNyZXRgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWNyZXRcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuc2lnbiA9IGZ1bmN0aW9uKHZhbCwgc2VjcmV0KXtcbiAgaWYgKCdzdHJpbmcnICE9IHR5cGVvZiB2YWwpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDb29raWUgdmFsdWUgbXVzdCBiZSBwcm92aWRlZCBhcyBhIHN0cmluZy5cIik7XG4gIGlmICgnc3RyaW5nJyAhPSB0eXBlb2Ygc2VjcmV0KSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU2VjcmV0IHN0cmluZyBtdXN0IGJlIHByb3ZpZGVkLlwiKTtcbiAgcmV0dXJuIHZhbCArICcuJyArIGNyeXB0b1xuICAgIC5jcmVhdGVIbWFjKCdzaGEyNTYnLCBzZWNyZXQpXG4gICAgLnVwZGF0ZSh2YWwpXG4gICAgLmRpZ2VzdCgnYmFzZTY0JylcbiAgICAucmVwbGFjZSgvXFw9KyQvLCAnJyk7XG59O1xuXG4vKipcbiAqIFVuc2lnbiBhbmQgZGVjb2RlIHRoZSBnaXZlbiBgdmFsYCB3aXRoIGBzZWNyZXRgLFxuICogcmV0dXJuaW5nIGBmYWxzZWAgaWYgdGhlIHNpZ25hdHVyZSBpcyBpbnZhbGlkLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWNyZXRcbiAqIEByZXR1cm4ge1N0cmluZ3xCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy51bnNpZ24gPSBmdW5jdGlvbih2YWwsIHNlY3JldCl7XG4gIGlmICgnc3RyaW5nJyAhPSB0eXBlb2YgdmFsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU2lnbmVkIGNvb2tpZSBzdHJpbmcgbXVzdCBiZSBwcm92aWRlZC5cIik7XG4gIGlmICgnc3RyaW5nJyAhPSB0eXBlb2Ygc2VjcmV0KSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU2VjcmV0IHN0cmluZyBtdXN0IGJlIHByb3ZpZGVkLlwiKTtcbiAgdmFyIHN0ciA9IHZhbC5zbGljZSgwLCB2YWwubGFzdEluZGV4T2YoJy4nKSlcbiAgICAsIG1hYyA9IGV4cG9ydHMuc2lnbihzdHIsIHNlY3JldCk7XG4gIFxuICByZXR1cm4gc2hhMShtYWMpID09IHNoYTEodmFsKSA/IHN0ciA6IGZhbHNlO1xufTtcblxuLyoqXG4gKiBQcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2hhMShzdHIpe1xuICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTEnKS51cGRhdGUoc3RyKS5kaWdlc3QoJ2hleCcpO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2Nvb2tpZS1zaWduYXR1cmUvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE4MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGNvb2tpZVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBSb21hbiBTaHR5bG1hblxuICogQ29weXJpZ2h0KGMpIDIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5leHBvcnRzLnNlcmlhbGl6ZSA9IHNlcmlhbGl6ZTtcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZGVjb2RlID0gZGVjb2RlVVJJQ29tcG9uZW50O1xudmFyIGVuY29kZSA9IGVuY29kZVVSSUNvbXBvbmVudDtcbnZhciBwYWlyU3BsaXRSZWdFeHAgPSAvOyAqLztcblxuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggZmllbGQtY29udGVudCBpbiBSRkMgNzIzMCBzZWMgMy4yXG4gKlxuICogZmllbGQtY29udGVudCA9IGZpZWxkLXZjaGFyIFsgMSooIFNQIC8gSFRBQiApIGZpZWxkLXZjaGFyIF1cbiAqIGZpZWxkLXZjaGFyICAgPSBWQ0hBUiAvIG9icy10ZXh0XG4gKiBvYnMtdGV4dCAgICAgID0gJXg4MC1GRlxuICovXG5cbnZhciBmaWVsZENvbnRlbnRSZWdFeHAgPSAvXltcXHUwMDA5XFx1MDAyMC1cXHUwMDdlXFx1MDA4MC1cXHUwMGZmXSskLztcblxuLyoqXG4gKiBQYXJzZSBhIGNvb2tpZSBoZWFkZXIuXG4gKlxuICogUGFyc2UgdGhlIGdpdmVuIGNvb2tpZSBoZWFkZXIgc3RyaW5nIGludG8gYW4gb2JqZWN0XG4gKiBUaGUgb2JqZWN0IGhhcyB0aGUgdmFyaW91cyBjb29raWVzIGFzIGtleXMobmFtZXMpID0+IHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZShzdHIsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgc3RyIG11c3QgYmUgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIHZhciBvYmogPSB7fVxuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIHBhaXJzID0gc3RyLnNwbGl0KHBhaXJTcGxpdFJlZ0V4cCk7XG4gIHZhciBkZWMgPSBvcHQuZGVjb2RlIHx8IGRlY29kZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHBhaXIgPSBwYWlyc1tpXTtcbiAgICB2YXIgZXFfaWR4ID0gcGFpci5pbmRleE9mKCc9Jyk7XG5cbiAgICAvLyBza2lwIHRoaW5ncyB0aGF0IGRvbid0IGxvb2sgbGlrZSBrZXk9dmFsdWVcbiAgICBpZiAoZXFfaWR4IDwgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGtleSA9IHBhaXIuc3Vic3RyKDAsIGVxX2lkeCkudHJpbSgpXG4gICAgdmFyIHZhbCA9IHBhaXIuc3Vic3RyKCsrZXFfaWR4LCBwYWlyLmxlbmd0aCkudHJpbSgpO1xuXG4gICAgLy8gcXVvdGVkIHZhbHVlc1xuICAgIGlmICgnXCInID09IHZhbFswXSkge1xuICAgICAgdmFsID0gdmFsLnNsaWNlKDEsIC0xKTtcbiAgICB9XG5cbiAgICAvLyBvbmx5IGFzc2lnbiBvbmNlXG4gICAgaWYgKHVuZGVmaW5lZCA9PSBvYmpba2V5XSkge1xuICAgICAgb2JqW2tleV0gPSB0cnlEZWNvZGUodmFsLCBkZWMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogU2VyaWFsaXplIGRhdGEgaW50byBhIGNvb2tpZSBoZWFkZXIuXG4gKlxuICogU2VyaWFsaXplIHRoZSBhIG5hbWUgdmFsdWUgcGFpciBpbnRvIGEgY29va2llIHN0cmluZyBzdWl0YWJsZSBmb3JcbiAqIGh0dHAgaGVhZGVycy4gQW4gb3B0aW9uYWwgb3B0aW9ucyBvYmplY3Qgc3BlY2lmaWVkIGNvb2tpZSBwYXJhbWV0ZXJzLlxuICpcbiAqIHNlcmlhbGl6ZSgnZm9vJywgJ2JhcicsIHsgaHR0cE9ubHk6IHRydWUgfSlcbiAqICAgPT4gXCJmb289YmFyOyBodHRwT25seVwiXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBzZXJpYWxpemUobmFtZSwgdmFsLCBvcHRpb25zKSB7XG4gIHZhciBvcHQgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgZW5jID0gb3B0LmVuY29kZSB8fCBlbmNvZGU7XG5cbiAgaWYgKHR5cGVvZiBlbmMgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gZW5jb2RlIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIGlmICghZmllbGRDb250ZW50UmVnRXhwLnRlc3QobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBuYW1lIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIHZhciB2YWx1ZSA9IGVuYyh2YWwpO1xuXG4gIGlmICh2YWx1ZSAmJiAhZmllbGRDb250ZW50UmVnRXhwLnRlc3QodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgdmFsIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIHZhciBzdHIgPSBuYW1lICsgJz0nICsgdmFsdWU7XG5cbiAgaWYgKG51bGwgIT0gb3B0Lm1heEFnZSkge1xuICAgIHZhciBtYXhBZ2UgPSBvcHQubWF4QWdlIC0gMDtcbiAgICBpZiAoaXNOYU4obWF4QWdlKSkgdGhyb3cgbmV3IEVycm9yKCdtYXhBZ2Ugc2hvdWxkIGJlIGEgTnVtYmVyJyk7XG4gICAgc3RyICs9ICc7IE1heC1BZ2U9JyArIE1hdGguZmxvb3IobWF4QWdlKTtcbiAgfVxuXG4gIGlmIChvcHQuZG9tYWluKSB7XG4gICAgaWYgKCFmaWVsZENvbnRlbnRSZWdFeHAudGVzdChvcHQuZG9tYWluKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIGRvbWFpbiBpcyBpbnZhbGlkJyk7XG4gICAgfVxuXG4gICAgc3RyICs9ICc7IERvbWFpbj0nICsgb3B0LmRvbWFpbjtcbiAgfVxuXG4gIGlmIChvcHQucGF0aCkge1xuICAgIGlmICghZmllbGRDb250ZW50UmVnRXhwLnRlc3Qob3B0LnBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gcGF0aCBpcyBpbnZhbGlkJyk7XG4gICAgfVxuXG4gICAgc3RyICs9ICc7IFBhdGg9JyArIG9wdC5wYXRoO1xuICB9XG5cbiAgaWYgKG9wdC5leHBpcmVzKSB7XG4gICAgaWYgKHR5cGVvZiBvcHQuZXhwaXJlcy50b1VUQ1N0cmluZyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIGV4cGlyZXMgaXMgaW52YWxpZCcpO1xuICAgIH1cblxuICAgIHN0ciArPSAnOyBFeHBpcmVzPScgKyBvcHQuZXhwaXJlcy50b1VUQ1N0cmluZygpO1xuICB9XG5cbiAgaWYgKG9wdC5odHRwT25seSkge1xuICAgIHN0ciArPSAnOyBIdHRwT25seSc7XG4gIH1cblxuICBpZiAob3B0LnNlY3VyZSkge1xuICAgIHN0ciArPSAnOyBTZWN1cmUnO1xuICB9XG5cbiAgaWYgKG9wdC5zYW1lU2l0ZSkge1xuICAgIHZhciBzYW1lU2l0ZSA9IHR5cGVvZiBvcHQuc2FtZVNpdGUgPT09ICdzdHJpbmcnXG4gICAgICA/IG9wdC5zYW1lU2l0ZS50b0xvd2VyQ2FzZSgpIDogb3B0LnNhbWVTaXRlO1xuXG4gICAgc3dpdGNoIChzYW1lU2l0ZSkge1xuICAgICAgY2FzZSB0cnVlOlxuICAgICAgICBzdHIgKz0gJzsgU2FtZVNpdGU9U3RyaWN0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdsYXgnOlxuICAgICAgICBzdHIgKz0gJzsgU2FtZVNpdGU9TGF4JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdHJpY3QnOlxuICAgICAgICBzdHIgKz0gJzsgU2FtZVNpdGU9U3RyaWN0JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gc2FtZVNpdGUgaXMgaW52YWxpZCcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogVHJ5IGRlY29kaW5nIGEgc3RyaW5nIHVzaW5nIGEgZGVjb2RpbmcgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHBhcmFtIHtmdW5jdGlvbn0gZGVjb2RlXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHRyeURlY29kZShzdHIsIGRlY29kZSkge1xuICB0cnkge1xuICAgIHJldHVybiBkZWNvZGUoc3RyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb29raWUvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE4M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIHZhcnlcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTcgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gdmFyeVxubW9kdWxlLmV4cG9ydHMuYXBwZW5kID0gYXBwZW5kXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGZpZWxkLW5hbWUgaW4gUkZDIDcyMzAgc2VjIDMuMlxuICpcbiAqIGZpZWxkLW5hbWUgICAgPSB0b2tlblxuICogdG9rZW4gICAgICAgICA9IDEqdGNoYXJcbiAqIHRjaGFyICAgICAgICAgPSBcIiFcIiAvIFwiI1wiIC8gXCIkXCIgLyBcIiVcIiAvIFwiJlwiIC8gXCInXCIgLyBcIipcIlxuICogICAgICAgICAgICAgICAvIFwiK1wiIC8gXCItXCIgLyBcIi5cIiAvIFwiXlwiIC8gXCJfXCIgLyBcImBcIiAvIFwifFwiIC8gXCJ+XCJcbiAqICAgICAgICAgICAgICAgLyBESUdJVCAvIEFMUEhBXG4gKiAgICAgICAgICAgICAgIDsgYW55IFZDSEFSLCBleGNlcHQgZGVsaW1pdGVyc1xuICovXG5cbnZhciBGSUVMRF9OQU1FX1JFR0VYUCA9IC9eWyEjJCUmJyorXFwtLl5fYHx+MC05QS1aYS16XSskL1xuXG4vKipcbiAqIEFwcGVuZCBhIGZpZWxkIHRvIGEgdmFyeSBoZWFkZXIuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlclxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGZpZWxkXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gYXBwZW5kIChoZWFkZXIsIGZpZWxkKSB7XG4gIGlmICh0eXBlb2YgaGVhZGVyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2hlYWRlciBhcmd1bWVudCBpcyByZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoIWZpZWxkKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZmllbGQgYXJndW1lbnQgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgLy8gZ2V0IGZpZWxkcyBhcnJheVxuICB2YXIgZmllbGRzID0gIUFycmF5LmlzQXJyYXkoZmllbGQpXG4gICAgPyBwYXJzZShTdHJpbmcoZmllbGQpKVxuICAgIDogZmllbGRcblxuICAvLyBhc3NlcnQgb24gaW52YWxpZCBmaWVsZCBuYW1lc1xuICBmb3IgKHZhciBqID0gMDsgaiA8IGZpZWxkcy5sZW5ndGg7IGorKykge1xuICAgIGlmICghRklFTERfTkFNRV9SRUdFWFAudGVzdChmaWVsZHNbal0pKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmaWVsZCBhcmd1bWVudCBjb250YWlucyBhbiBpbnZhbGlkIGhlYWRlciBuYW1lJylcbiAgICB9XG4gIH1cblxuICAvLyBleGlzdGluZywgdW5zcGVjaWZpZWQgdmFyeVxuICBpZiAoaGVhZGVyID09PSAnKicpIHtcbiAgICByZXR1cm4gaGVhZGVyXG4gIH1cblxuICAvLyBlbnVtZXJhdGUgY3VycmVudCB2YWx1ZXNcbiAgdmFyIHZhbCA9IGhlYWRlclxuICB2YXIgdmFscyA9IHBhcnNlKGhlYWRlci50b0xvd2VyQ2FzZSgpKVxuXG4gIC8vIHVuc3BlY2lmaWVkIHZhcnlcbiAgaWYgKGZpZWxkcy5pbmRleE9mKCcqJykgIT09IC0xIHx8IHZhbHMuaW5kZXhPZignKicpICE9PSAtMSkge1xuICAgIHJldHVybiAnKidcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGZsZCA9IGZpZWxkc1tpXS50b0xvd2VyQ2FzZSgpXG5cbiAgICAvLyBhcHBlbmQgdmFsdWUgKGNhc2UtcHJlc2VydmluZylcbiAgICBpZiAodmFscy5pbmRleE9mKGZsZCkgPT09IC0xKSB7XG4gICAgICB2YWxzLnB1c2goZmxkKVxuICAgICAgdmFsID0gdmFsXG4gICAgICAgID8gdmFsICsgJywgJyArIGZpZWxkc1tpXVxuICAgICAgICA6IGZpZWxkc1tpXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHZhcnkgaGVhZGVyIGludG8gYW4gYXJyYXkuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlclxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlIChoZWFkZXIpIHtcbiAgdmFyIGVuZCA9IDBcbiAgdmFyIGxpc3QgPSBbXVxuICB2YXIgc3RhcnQgPSAwXG5cbiAgLy8gZ2F0aGVyIHRva2Vuc1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gaGVhZGVyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgc3dpdGNoIChoZWFkZXIuY2hhckNvZGVBdChpKSkge1xuICAgICAgY2FzZSAweDIwOiAvKiAgICovXG4gICAgICAgIGlmIChzdGFydCA9PT0gZW5kKSB7XG4gICAgICAgICAgc3RhcnQgPSBlbmQgPSBpICsgMVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDB4MmM6IC8qICwgKi9cbiAgICAgICAgbGlzdC5wdXNoKGhlYWRlci5zdWJzdHJpbmcoc3RhcnQsIGVuZCkpXG4gICAgICAgIHN0YXJ0ID0gZW5kID0gaSArIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGVuZCA9IGkgKyAxXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gZmluYWwgdG9rZW5cbiAgbGlzdC5wdXNoKGhlYWRlci5zdWJzdHJpbmcoc3RhcnQsIGVuZCkpXG5cbiAgcmV0dXJuIGxpc3Rcbn1cblxuLyoqXG4gKiBNYXJrIHRoYXQgYSByZXF1ZXN0IGlzIHZhcmllZCBvbiBhIGhlYWRlciBmaWVsZC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcmVzXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gZmllbGRcbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiB2YXJ5IChyZXMsIGZpZWxkKSB7XG4gIGlmICghcmVzIHx8ICFyZXMuZ2V0SGVhZGVyIHx8ICFyZXMuc2V0SGVhZGVyKSB7XG4gICAgLy8gcXVhY2sgcXVhY2tcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyZXMgYXJndW1lbnQgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgLy8gZ2V0IGV4aXN0aW5nIGhlYWRlclxuICB2YXIgdmFsID0gcmVzLmdldEhlYWRlcignVmFyeScpIHx8ICcnXG4gIHZhciBoZWFkZXIgPSBBcnJheS5pc0FycmF5KHZhbClcbiAgICA/IHZhbC5qb2luKCcsICcpXG4gICAgOiBTdHJpbmcodmFsKVxuXG4gIC8vIHNldCBuZXcgaGVhZGVyXG4gIGlmICgodmFsID0gYXBwZW5kKGhlYWRlciwgZmllbGQpKSkge1xuICAgIHJlcy5zZXRIZWFkZXIoJ1ZhcnknLCB2YWwpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy92YXJ5L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBzZXJ2ZS1zdGF0aWNcbiAqIENvcHlyaWdodChjKSAyMDEwIFNlbmNoYSBJbmMuXG4gKiBDb3B5cmlnaHQoYykgMjAxMSBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNiBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGVuY29kZVVybCA9IHJlcXVpcmUoJ2VuY29kZXVybCcpXG52YXIgZXNjYXBlSHRtbCA9IHJlcXVpcmUoJ2VzY2FwZS1odG1sJylcbnZhciBwYXJzZVVybCA9IHJlcXVpcmUoJ3BhcnNldXJsJylcbnZhciByZXNvbHZlID0gcmVxdWlyZSgncGF0aCcpLnJlc29sdmVcbnZhciBzZW5kID0gcmVxdWlyZSgnc2VuZCcpXG52YXIgdXJsID0gcmVxdWlyZSgndXJsJylcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlcnZlU3RhdGljXG5tb2R1bGUuZXhwb3J0cy5taW1lID0gc2VuZC5taW1lXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHNlcnZlU3RhdGljIChyb290LCBvcHRpb25zKSB7XG4gIGlmICghcm9vdCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Jvb3QgcGF0aCByZXF1aXJlZCcpXG4gIH1cblxuICBpZiAodHlwZW9mIHJvb3QgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncm9vdCBwYXRoIG11c3QgYmUgYSBzdHJpbmcnKVxuICB9XG5cbiAgLy8gY29weSBvcHRpb25zIG9iamVjdFxuICB2YXIgb3B0cyA9IE9iamVjdC5jcmVhdGUob3B0aW9ucyB8fCBudWxsKVxuXG4gIC8vIGZhbGwtdGhvdWdoXG4gIHZhciBmYWxsdGhyb3VnaCA9IG9wdHMuZmFsbHRocm91Z2ggIT09IGZhbHNlXG5cbiAgLy8gZGVmYXVsdCByZWRpcmVjdFxuICB2YXIgcmVkaXJlY3QgPSBvcHRzLnJlZGlyZWN0ICE9PSBmYWxzZVxuXG4gIC8vIGhlYWRlcnMgbGlzdGVuZXJcbiAgdmFyIHNldEhlYWRlcnMgPSBvcHRzLnNldEhlYWRlcnNcblxuICBpZiAoc2V0SGVhZGVycyAmJiB0eXBlb2Ygc2V0SGVhZGVycyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBzZXRIZWFkZXJzIG11c3QgYmUgZnVuY3Rpb24nKVxuICB9XG5cbiAgLy8gc2V0dXAgb3B0aW9ucyBmb3Igc2VuZFxuICBvcHRzLm1heGFnZSA9IG9wdHMubWF4YWdlIHx8IG9wdHMubWF4QWdlIHx8IDBcbiAgb3B0cy5yb290ID0gcmVzb2x2ZShyb290KVxuXG4gIC8vIGNvbnN0cnVjdCBkaXJlY3RvcnkgbGlzdGVuZXJcbiAgdmFyIG9uRGlyZWN0b3J5ID0gcmVkaXJlY3RcbiAgICA/IGNyZWF0ZVJlZGlyZWN0RGlyZWN0b3J5TGlzdGVuZXIoKVxuICAgIDogY3JlYXRlTm90Rm91bmREaXJlY3RvcnlMaXN0ZW5lcigpXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHNlcnZlU3RhdGljIChyZXEsIHJlcywgbmV4dCkge1xuICAgIGlmIChyZXEubWV0aG9kICE9PSAnR0VUJyAmJiByZXEubWV0aG9kICE9PSAnSEVBRCcpIHtcbiAgICAgIGlmIChmYWxsdGhyb3VnaCkge1xuICAgICAgICByZXR1cm4gbmV4dCgpXG4gICAgICB9XG5cbiAgICAgIC8vIG1ldGhvZCBub3QgYWxsb3dlZFxuICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDVcbiAgICAgIHJlcy5zZXRIZWFkZXIoJ0FsbG93JywgJ0dFVCwgSEVBRCcpXG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsICcwJylcbiAgICAgIHJlcy5lbmQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGZvcndhcmRFcnJvciA9ICFmYWxsdGhyb3VnaFxuICAgIHZhciBvcmlnaW5hbFVybCA9IHBhcnNlVXJsLm9yaWdpbmFsKHJlcSlcbiAgICB2YXIgcGF0aCA9IHBhcnNlVXJsKHJlcSkucGF0aG5hbWVcblxuICAgIC8vIG1ha2Ugc3VyZSByZWRpcmVjdCBvY2N1cnMgYXQgbW91bnRcbiAgICBpZiAocGF0aCA9PT0gJy8nICYmIG9yaWdpbmFsVXJsLnBhdGhuYW1lLnN1YnN0cigtMSkgIT09ICcvJykge1xuICAgICAgcGF0aCA9ICcnXG4gICAgfVxuXG4gICAgLy8gY3JlYXRlIHNlbmQgc3RyZWFtXG4gICAgdmFyIHN0cmVhbSA9IHNlbmQocmVxLCBwYXRoLCBvcHRzKVxuXG4gICAgLy8gYWRkIGRpcmVjdG9yeSBoYW5kbGVyXG4gICAgc3RyZWFtLm9uKCdkaXJlY3RvcnknLCBvbkRpcmVjdG9yeSlcblxuICAgIC8vIGFkZCBoZWFkZXJzIGxpc3RlbmVyXG4gICAgaWYgKHNldEhlYWRlcnMpIHtcbiAgICAgIHN0cmVhbS5vbignaGVhZGVycycsIHNldEhlYWRlcnMpXG4gICAgfVxuXG4gICAgLy8gYWRkIGZpbGUgbGlzdGVuZXIgZm9yIGZhbGx0aHJvdWdoXG4gICAgaWYgKGZhbGx0aHJvdWdoKSB7XG4gICAgICBzdHJlYW0ub24oJ2ZpbGUnLCBmdW5jdGlvbiBvbkZpbGUgKCkge1xuICAgICAgICAvLyBvbmNlIGZpbGUgaXMgZGV0ZXJtaW5lZCwgYWx3YXlzIGZvcndhcmQgZXJyb3JcbiAgICAgICAgZm9yd2FyZEVycm9yID0gdHJ1ZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBmb3J3YXJkIGVycm9yc1xuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiBlcnJvciAoZXJyKSB7XG4gICAgICBpZiAoZm9yd2FyZEVycm9yIHx8ICEoZXJyLnN0YXR1c0NvZGUgPCA1MDApKSB7XG4gICAgICAgIG5leHQoZXJyKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbmV4dCgpXG4gICAgfSlcblxuICAgIC8vIHBpcGVcbiAgICBzdHJlYW0ucGlwZShyZXMpXG4gIH1cbn1cblxuLyoqXG4gKiBDb2xsYXBzZSBhbGwgbGVhZGluZyBzbGFzaGVzIGludG8gYSBzaW5nbGUgc2xhc2hcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNvbGxhcHNlTGVhZGluZ1NsYXNoZXMgKHN0cikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHIuY2hhckNvZGVBdChpKSAhPT0gMHgyZiAvKiAvICovKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpID4gMVxuICAgID8gJy8nICsgc3RyLnN1YnN0cihpKVxuICAgIDogc3RyXG59XG5cbiAvKipcbiAqIENyZWF0ZSBhIG1pbmltYWwgSFRNTCBkb2N1bWVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGl0bGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBib2R5XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUh0bWxEb2N1bWVudCAodGl0bGUsIGJvZHkpIHtcbiAgcmV0dXJuICc8IURPQ1RZUEUgaHRtbD5cXG4nICtcbiAgICAnPGh0bWwgbGFuZz1cImVuXCI+XFxuJyArXG4gICAgJzxoZWFkPlxcbicgK1xuICAgICc8bWV0YSBjaGFyc2V0PVwidXRmLThcIj5cXG4nICtcbiAgICAnPHRpdGxlPicgKyB0aXRsZSArICc8L3RpdGxlPlxcbicgK1xuICAgICc8L2hlYWQ+XFxuJyArXG4gICAgJzxib2R5PlxcbicgK1xuICAgICc8cHJlPicgKyBib2R5ICsgJzwvcHJlPlxcbicgK1xuICAgICc8L2JvZHk+XFxuJyArXG4gICAgJzwvaHRtbD5cXG4nXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZGlyZWN0b3J5IGxpc3RlbmVyIHRoYXQganVzdCA0MDRzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVOb3RGb3VuZERpcmVjdG9yeUxpc3RlbmVyICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIG5vdEZvdW5kICgpIHtcbiAgICB0aGlzLmVycm9yKDQwNClcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGRpcmVjdG9yeSBsaXN0ZW5lciB0aGF0IHBlcmZvcm1zIGEgcmVkaXJlY3QuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZVJlZGlyZWN0RGlyZWN0b3J5TGlzdGVuZXIgKCkge1xuICByZXR1cm4gZnVuY3Rpb24gcmVkaXJlY3QgKHJlcykge1xuICAgIGlmICh0aGlzLmhhc1RyYWlsaW5nU2xhc2goKSkge1xuICAgICAgdGhpcy5lcnJvcig0MDQpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBnZXQgb3JpZ2luYWwgVVJMXG4gICAgdmFyIG9yaWdpbmFsVXJsID0gcGFyc2VVcmwub3JpZ2luYWwodGhpcy5yZXEpXG5cbiAgICAvLyBhcHBlbmQgdHJhaWxpbmcgc2xhc2hcbiAgICBvcmlnaW5hbFVybC5wYXRoID0gbnVsbFxuICAgIG9yaWdpbmFsVXJsLnBhdGhuYW1lID0gY29sbGFwc2VMZWFkaW5nU2xhc2hlcyhvcmlnaW5hbFVybC5wYXRobmFtZSArICcvJylcblxuICAgIC8vIHJlZm9ybWF0IHRoZSBVUkxcbiAgICB2YXIgbG9jID0gZW5jb2RlVXJsKHVybC5mb3JtYXQob3JpZ2luYWxVcmwpKVxuICAgIHZhciBkb2MgPSBjcmVhdGVIdG1sRG9jdW1lbnQoJ1JlZGlyZWN0aW5nJywgJ1JlZGlyZWN0aW5nIHRvIDxhIGhyZWY9XCInICsgZXNjYXBlSHRtbChsb2MpICsgJ1wiPicgK1xuICAgICAgZXNjYXBlSHRtbChsb2MpICsgJzwvYT4nKVxuXG4gICAgLy8gc2VuZCByZWRpcmVjdCByZXNwb25zZVxuICAgIHJlcy5zdGF0dXNDb2RlID0gMzAxXG4gICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpXG4gICAgcmVzLnNldEhlYWRlcignQ29udGVudC1MZW5ndGgnLCBCdWZmZXIuYnl0ZUxlbmd0aChkb2MpKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtU2VjdXJpdHktUG9saWN5JywgXCJkZWZhdWx0LXNyYyAnc2VsZidcIilcbiAgICByZXMuc2V0SGVhZGVyKCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zJywgJ25vc25pZmYnKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0xvY2F0aW9uJywgbG9jKVxuICAgIHJlcy5lbmQoZG9jKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvc2VydmUtc3RhdGljL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxODVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0ICogYXMgZXhwcmVzcyBmcm9tICdleHByZXNzJztcblxuaW1wb3J0IHtcbiAgRGF0YXNvdXJjZSxcbiAgTWV0cmljLFxuICBBbm9tYWx5LFxuICBzYXZlQW5vbWFseSxcbiAgaW5zZXJ0QW5vbWFseSwgcmVtb3ZlQW5vbWFseSwgbG9hZEFub21hbHlCeU5hbWUsIGxvYWRBbm9tYWx5QnlJZCwgZ2V0QW5vbWFseUlkQnlOYW1lXG59IGZyb20gJy4uL3NlcnZpY2VzL2Fub21hbHlUeXBlJztcbmltcG9ydCB7IHJ1bkxlYXJuaW5nIH0gZnJvbSAnLi4vc2VydmljZXMvYW5hbHl0aWNzJ1xuaW1wb3J0IHsgc2F2ZVRhcmdldHMgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRyaWNzJztcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEFub21hbHlUeXBlU3RhdHVzKHJlcSwgcmVzKSB7XG4gIGxldCBpZCA9IHJlcS5xdWVyeS5pZDtcbiAgbGV0IG5hbWUgPSByZXEucXVlcnkubmFtZTtcbiAgdHJ5IHtcbiAgICBsZXQgYW5vbWFseTogQW5vbWFseTtcbiAgICBpZihpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhbm9tYWx5ID0gbG9hZEFub21hbHlCeUlkKGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYW5vbWFseSA9IGxvYWRBbm9tYWx5QnlOYW1lKG5hbWUpO1xuICAgIH1cbiAgICBpZihhbm9tYWx5ID09PSBudWxsKSB7XG4gICAgICByZXMuc3RhdHVzKDQwNCkuc2VuZCh7XG4gICAgICAgIGNvZGU6IDQwNCxcbiAgICAgICAgbWVzc2FnZTogJ05vdCBmb3VuZCdcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZihhbm9tYWx5LnN0YXR1cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHN0YXR1cyBmb3IgJyArIG5hbWUpO1xuICAgIH1cbiAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCh7IHN0YXR1czogYW5vbWFseS5zdGF0dXMsIGVycm9yTWVzc2FnZTogYW5vbWFseS5lcnJvciB9KTtcbiAgfSBjYXRjaChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAvLyBUT0RPOiBiZXR0ZXIgc2VuZCA0MDQgd2hlbiB3ZSBrbm93IHRoYW4gaXNuYHQgZm91bmRcbiAgICByZXMuc3RhdHVzKDUwMCkuc2VuZCh7IGVycm9yOiAnQ2FuYHQgcmV0dXJuIGFueXRoaW5nJyB9KTtcbiAgfVxuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFub21hbHkocmVxLCByZXMpIHtcbiAgdHJ5IHtcbiAgICBsZXQgaWQgPSByZXEucXVlcnkuaWQ7XG4gICAgbGV0IG5hbWUgPSByZXEucXVlcnkubmFtZTtcblxuICAgIGxldCBhbm9tYWx5OkFub21hbHk7XG4gICAgaWYoaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYW5vbWFseSA9IGxvYWRBbm9tYWx5QnlJZChpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFub21hbHkgPSBsb2FkQW5vbWFseUJ5TmFtZShuYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICBpZihhbm9tYWx5ID09PSBudWxsKSB7XG4gICAgICByZXMuc3RhdHVzKDQwNCkuc2VuZCh7XG4gICAgICAgIGNvZGU6IDQwNCxcbiAgICAgICAgbWVzc2FnZTogJ05vdCBmb3VuZCdcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgbmFtZTogYW5vbWFseS5uYW1lLFxuICAgICAgbWV0cmljOiBhbm9tYWx5Lm1ldHJpYyxcbiAgICAgIHN0YXR1czogYW5vbWFseS5zdGF0dXNcbiAgICB9KTtcbiAgICByZXMuc3RhdHVzKDIwMCkuc2VuZChwYXlsb2FkKVxuICB9IGNhdGNoKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIC8vIFRPRE86IGJldHRlciBzZW5kIDQwNCB3aGVuIHdlIGtub3cgdGhhbiBpc25gdCBmb3VuZFxuICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKCdDYW5gdCBnZXQgYW55dGhpbmcnKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVBbm9tYWx5KHJlcSwgcmVzKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgbWV0cmljOk1ldHJpYyA9IHtcbiAgICAgIGRhdGFzb3VyY2U6IHJlcS5ib2R5Lm1ldHJpYy5kYXRhc291cmNlLFxuICAgICAgdGFyZ2V0czogc2F2ZVRhcmdldHMocmVxLmJvZHkubWV0cmljLnRhcmdldHMpXG4gICAgfTtcblxuICAgIGNvbnN0IGFub21hbHk6QW5vbWFseSA9IHtcbiAgICAgIG5hbWU6IHJlcS5ib2R5Lm5hbWUsXG4gICAgICBwYW5lbFVybDogcmVxLmJvZHkucGFuZWxVcmwsXG4gICAgICBtZXRyaWM6IG1ldHJpYyxcbiAgICAgIGRhdGFzb3VyY2U6IHJlcS5ib2R5LmRhdGFzb3VyY2UsXG4gICAgICBzdGF0dXM6ICdsZWFybmluZycsXG4gICAgICBsYXN0X3ByZWRpY3Rpb25fdGltZTogMCxcbiAgICAgIG5leHRfaWQ6IDBcbiAgICB9O1xuICAgIGxldCBhbm9tYWx5SWQgPSBpbnNlcnRBbm9tYWx5KGFub21hbHkpO1xuICAgIGlmKGFub21hbHlJZCA9PT0gbnVsbCkge1xuICAgICAgcmVzLnN0YXR1cyg0MDMpLnNlbmQoe1xuICAgICAgICBjb2RlOiA0MDMsXG4gICAgICAgIG1lc3NhZ2U6ICdBbHJlYWR5IGV4aXN0cydcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoeyBhbm9tYWx5X2lkOiBhbm9tYWx5SWQgfSlcbiAgICByZXMuc3RhdHVzKDIwMCkuc2VuZChwYXlsb2FkKTtcblxuICAgIHJ1bkxlYXJuaW5nKGFub21hbHlJZCk7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHtcbiAgICAgIGNvZGU6IDUwMCxcbiAgICAgIG1lc3NhZ2U6ICdJbnRlcm5hbCBlcnJvcidcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWxldGVBbm9tYWx5KHJlcSwgcmVzKSB7XG4gIHRyeSB7XG4gICAgbGV0IGlkID0gcmVxLnF1ZXJ5LmlkO1xuICAgIGxldCBuYW1lID0gcmVxLnF1ZXJ5Lm5hbWU7XG5cbiAgICBpZihpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZW1vdmVBbm9tYWx5KGlkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlQW5vbWFseShuYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICBcbiAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCh7XG4gICAgICBjb2RlOiAyMDAsXG4gICAgICBtZXNzYWdlOiAnU3VjY2VzcydcbiAgICB9KTtcbiAgfSBjYXRjaChlKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLnNlbmQoe1xuICAgICAgY29kZTogNTAwLFxuICAgICAgbWVzc2FnZTogJ0ludGVybmFsIGVycm9yJ1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KCcvc3RhdHVzJywgc2VuZEFub21hbHlUeXBlU3RhdHVzKTtcbnJvdXRlci5nZXQoJy8nLCBnZXRBbm9tYWx5KTtcbnJvdXRlci5wb3N0KCcvJywgY3JlYXRlQW5vbWFseSk7XG5yb3V0ZXIuZGVsZXRlKCcvJywgZGVsZXRlQW5vbWFseSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yb3V0ZXMvYW5vbWFsaWVzLnRzIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJyk7XG52YXIgJEpTT04gPSBjb3JlLkpTT04gfHwgKGNvcmUuSlNPTiA9IHsgc3RyaW5naWZ5OiBKU09OLnN0cmluZ2lmeSB9KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgcmV0dXJuICRKU09OLnN0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJndW1lbnRzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSAxODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4vLyBUaGlzIG1ldGhvZCBvZiBvYnRhaW5pbmcgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QgbmVlZHMgdG8gYmVcbi8vIGtlcHQgaWRlbnRpY2FsIHRvIHRoZSB3YXkgaXQgaXMgb2J0YWluZWQgaW4gcnVudGltZS5qc1xudmFyIGcgPSAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIH0pKCkgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xuXG4vLyBVc2UgYGdldE93blByb3BlcnR5TmFtZXNgIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGNhbGxpbmdcbi8vIGBoYXNPd25Qcm9wZXJ0eWAgb24gdGhlIGdsb2JhbCBgc2VsZmAgb2JqZWN0IGluIGEgd29ya2VyLiBTZWUgIzE4My5cbnZhciBoYWRSdW50aW1lID0gZy5yZWdlbmVyYXRvclJ1bnRpbWUgJiZcbiAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZykuaW5kZXhPZihcInJlZ2VuZXJhdG9yUnVudGltZVwiKSA+PSAwO1xuXG4vLyBTYXZlIHRoZSBvbGQgcmVnZW5lcmF0b3JSdW50aW1lIGluIGNhc2UgaXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgbGF0ZXIuXG52YXIgb2xkUnVudGltZSA9IGhhZFJ1bnRpbWUgJiYgZy5yZWdlbmVyYXRvclJ1bnRpbWU7XG5cbi8vIEZvcmNlIHJlZXZhbHV0YXRpb24gb2YgcnVudGltZS5qcy5cbmcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3J1bnRpbWVcIik7XG5cbmlmIChoYWRSdW50aW1lKSB7XG4gIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHJ1bnRpbWUuXG4gIGcucmVnZW5lcmF0b3JSdW50aW1lID0gb2xkUnVudGltZTtcbn0gZWxzZSB7XG4gIC8vIFJlbW92ZSB0aGUgZ2xvYmFsIHByb3BlcnR5IGFkZGVkIGJ5IHJ1bnRpbWUuanMuXG4gIHRyeSB7XG4gICAgZGVsZXRlIGcucmVnZW5lcmF0b3JSdW50aW1lO1xuICB9IGNhdGNoKGUpIHtcbiAgICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS1tb2R1bGUuanNcbi8vIG1vZHVsZSBpZCA9IDE4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbiEoZnVuY3Rpb24oZ2xvYmFsKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgdmFyIGluTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIjtcbiAgdmFyIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lO1xuICBpZiAocnVudGltZSkge1xuICAgIGlmIChpbk1vZHVsZSkge1xuICAgICAgLy8gSWYgcmVnZW5lcmF0b3JSdW50aW1lIGlzIGRlZmluZWQgZ2xvYmFsbHkgYW5kIHdlJ3JlIGluIGEgbW9kdWxlLFxuICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS5cbiAgICAgIG1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhc1xuICAgIC8vIGFscmVhZHkgZGVmaW5lZCBnbG9iYWxseS5cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBEZWZpbmUgdGhlIHJ1bnRpbWUgZ2xvYmFsbHkgKGFzIGV4cGVjdGVkIGJ5IGdlbmVyYXRlZCBjb2RlKSBhcyBlaXRoZXJcbiAgLy8gbW9kdWxlLmV4cG9ydHMgKGlmIHdlJ3JlIGluIGEgbW9kdWxlKSBvciBhIG5ldywgZW1wdHkgb2JqZWN0LlxuICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZSA9IGluTW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fTtcblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBydW50aW1lLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZVt0b1N0cmluZ1RhZ1N5bWJvbF0gPVxuICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIHJ1bnRpbWUubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgaWYgKCEodG9TdHJpbmdUYWdTeW1ib2wgaW4gZ2VuRnVuKSkge1xuICAgICAgICBnZW5GdW5bdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuICAgICAgfVxuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi4gSWYgdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQsIGhvd2V2ZXIsIHRoZVxuICAgICAgICAgIC8vIHJlc3VsdCBmb3IgdGhpcyBpdGVyYXRpb24gd2lsbCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lXG4gICAgICAgICAgLy8gcmVhc29uLiBOb3RlIHRoYXQgcmVqZWN0aW9ucyBvZiB5aWVsZGVkIFByb21pc2VzIGFyZSBub3RcbiAgICAgICAgICAvLyB0aHJvd24gYmFjayBpbnRvIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIGFzIGlzIHRoZSBjYXNlXG4gICAgICAgICAgLy8gd2hlbiBhbiBhd2FpdGVkIFByb21pc2UgaXMgcmVqZWN0ZWQuIFRoaXMgZGlmZmVyZW5jZSBpblxuICAgICAgICAgIC8vIGJlaGF2aW9yIGJldHdlZW4geWllbGQgYW5kIGF3YWl0IGlzIGltcG9ydGFudCwgYmVjYXVzZSBpdFxuICAgICAgICAgIC8vIGFsbG93cyB0aGUgY29uc3VtZXIgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGUgeWllbGRlZFxuICAgICAgICAgIC8vIHJlamVjdGlvbiAoc3dhbGxvdyBpdCBhbmQgY29udGludWUsIG1hbnVhbGx5IC50aHJvdyBpdCBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgZ2VuZXJhdG9yLCBhYmFuZG9uIGl0ZXJhdGlvbiwgd2hhdGV2ZXIpLiBXaXRoXG4gICAgICAgICAgLy8gYXdhaXQsIGJ5IGNvbnRyYXN0LCB0aGVyZSBpcyBubyBvcHBvcnR1bml0eSB0byBleGFtaW5lIHRoZVxuICAgICAgICAgIC8vIHJlamVjdGlvbiByZWFzb24gb3V0c2lkZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBzbyB0aGVcbiAgICAgICAgICAvLyBvbmx5IG9wdGlvbiBpcyB0byB0aHJvdyBpdCBmcm9tIHRoZSBhd2FpdCBleHByZXNzaW9uLCBhbmRcbiAgICAgICAgICAvLyBsZXQgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBoYW5kbGUgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPVxuICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG4gICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cbiAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsXG4gICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXJcbiAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmdcbiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuICB9XG5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKTtcbiAgQXN5bmNJdGVyYXRvci5wcm90b3R5cGVbYXN5bmNJdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIHJ1bnRpbWUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG5cbiAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2ZcbiAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG4gIHJ1bnRpbWUuYXN5bmMgPSBmdW5jdGlvbihpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KVxuICAgICk7XG5cbiAgICByZXR1cm4gcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIEdwW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgcnVudGltZS5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIHJ1bnRpbWUudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG59KShcbiAgLy8gSW4gc2xvcHB5IG1vZGUsIHVuYm91bmQgYHRoaXNgIHJlZmVycyB0byB0aGUgZ2xvYmFsIG9iamVjdCwgZmFsbGJhY2sgdG9cbiAgLy8gRnVuY3Rpb24gY29uc3RydWN0b3IgaWYgd2UncmUgaW4gZ2xvYmFsIHN0cmljdCBtb2RlLiBUaGF0IGlzIHNhZGx5IGEgZm9ybVxuICAvLyBvZiBpbmRpcmVjdCBldmFsIHdoaWNoIHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LlxuICAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIH0pKCkgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpXG4pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qc1xuLy8gbW9kdWxlIGlkID0gMTg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5wcm9taXNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHknKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnByb21pc2UudHJ5Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvX2NvcmUnKS5Qcm9taXNlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykge1xuICAgIHZhciBzID0gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xuICAgIHZhciBpID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIGwgPSBzLmxlbmd0aDtcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoaSA8IDAgfHwgaSA+PSBsKSByZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzXG4vLyBtb2R1bGUgaWQgPSAxOTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLXByaW1pdGl2ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTkzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faGlkZScpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qc1xuLy8gbW9kdWxlIGlkID0gMTk0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNyZWF0ZS5qc1xuLy8gbW9kdWxlIGlkID0gMTk1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qc1xuLy8gbW9kdWxlIGlkID0gMTk2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDE5LjEuMi4xNCAvIDE1LjIuMy4xNCBPYmplY3Qua2V5cyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLWludGVybmFsLmpzXG4vLyBtb2R1bGUgaWQgPSAxOThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWluY2x1ZGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanNcbi8vIG1vZHVsZSBpZCA9IDIwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIHN0ZXAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgIC8vIGtpbmRcbi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBraW5kID0gdGhpcy5faztcbiAgdmFyIGluZGV4ID0gdGhpcy5faSsrO1xuICBpZiAoIU8gfHwgaW5kZXggPj0gTy5sZW5ndGgpIHtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgT1tpbmRleF0pO1xuICByZXR1cm4gc3RlcCgwLCBbaW5kZXgsIE9baW5kZXhdXSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJSAoOS40LjQuNiwgOS40LjQuNylcbkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qc1xuLy8gbW9kdWxlIGlkID0gMjAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanNcbi8vIG1vZHVsZSBpZCA9IDIwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4IHx8ICcnO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICYmIHByb21pc2UudGhlbihlbXB0eSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZVxuICAgICAgLy8gdjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gICAgICAvLyB3ZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICAgICAgJiYgdjguaW5kZXhPZignNi42JykgIT09IDBcbiAgICAgICYmIHVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUvNjYnKSA9PT0gLTE7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gbWF5IHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYucHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gMjA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNhbGwuanNcbi8vIG1vZHVsZSBpZCA9IDIwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qc1xuLy8gbW9kdWxlIGlkID0gMjA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW52b2tlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIG1hY3JvdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoZWFkLCBsYXN0LCBub3RpZnk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChpc05vZGUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoaGVhZCkge1xuICAgICAgZm4gPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChoZWFkKSBub3RpZnkoKTtcbiAgICAgICAgZWxzZSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmIChpc05vZGUpIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZsdXNoKTtcbiAgICB9O1xuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgU2FmYXJpIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICB9IGVsc2UgaWYgKE9ic2VydmVyICYmICEoZ2xvYmFsLm5hdmlnYXRvciAmJiBnbG9iYWwubmF2aWdhdG9yLnN0YW5kYWxvbmUpKSB7XG4gICAgdmFyIHRvZ2dsZSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICAvLyBQcm9taXNlLnJlc29sdmUgd2l0aG91dCBhbiBhcmd1bWVudCB0aHJvd3MgYW4gZXJyb3IgaW4gTEcgV2ViT1MgMlxuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvbWlzZS50aGVuKGZsdXNoKTtcbiAgICB9O1xuICAvLyBmb3Igb3RoZXIgZW52aXJvbm1lbnRzIC0gbWFjcm90YXNrIGJhc2VkIG9uOlxuICAvLyAtIHNldEltbWVkaWF0ZVxuICAvLyAtIE1lc3NhZ2VDaGFubmVsXG4gIC8vIC0gd2luZG93LnBvc3RNZXNzYWdcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gc3RyYW5nZSBJRSArIHdlYnBhY2sgZGV2IHNlcnZlciBidWcgLSB1c2UgLmNhbGwoZ2xvYmFsKVxuICAgICAgbWFjcm90YXNrLmNhbGwoZ2xvYmFsLCBmbHVzaCk7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoZm4pIHtcbiAgICB2YXIgdGFzayA9IHsgZm46IGZuLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgICBpZiAobGFzdCkgbGFzdC5uZXh0ID0gdGFzaztcbiAgICBpZiAoIWhlYWQpIHtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21pY3JvdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gMjA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBuYXZpZ2F0b3IgPSBnbG9iYWwubmF2aWdhdG9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50IHx8ICcnO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191c2VyLWFnZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAyMDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZXRlY3QuanNcbi8vIG1vZHVsZSBpZCA9IDIxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLWZpbmFsbHlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdQcm9taXNlJywgeyAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKTtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Ygb25GaW5hbGx5ID09ICdmdW5jdGlvbic7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgfSA6IG9uRmluYWxseSxcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHlcbiAgKTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseS5qc1xuLy8gbW9kdWxlIGlkID0gMjExXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXByb21pc2UtdHJ5XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUHJvbWlzZScsIHsgJ3RyeSc6IGZ1bmN0aW9uIChjYWxsYmFja2ZuKSB7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYodGhpcyk7XG4gIHZhciByZXN1bHQgPSBwZXJmb3JtKGNhbGxiYWNrZm4pO1xuICAocmVzdWx0LmUgPyBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3QgOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlKShyZXN1bHQudik7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufSB9KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcucHJvbWlzZS50cnkuanNcbi8vIG1vZHVsZSBpZCA9IDIxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjaGlsZF9wcm9jZXNzXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiY2hpbGRfcHJvY2Vzc1wiXG4vLyBtb2R1bGUgaWQgPSAyMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwicmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvcicpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9nZXQtaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDIxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBnZXQgPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIGl0ZXJGbiA9IGdldChpdCk7XG4gIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuICByZXR1cm4gYW5PYmplY3QoaXRlckZuLmNhbGwoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDIxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvL2ZpbHRlciB3aWxsIHJlZW1pdCB0aGUgZGF0YSBpZiBjYihlcnIscGFzcykgcGFzcyBpcyB0cnV0aHlcblxuLy8gcmVkdWNlIGlzIG1vcmUgdHJpY2t5XG4vLyBtYXliZSB3ZSB3YW50IHRvIGdyb3VwIHRoZSByZWR1Y3Rpb25zIG9yIGVtaXQgcHJvZ3Jlc3MgdXBkYXRlcyBvY2Nhc2lvbmFsbHlcbi8vIHRoZSBtb3N0IGJhc2ljIHJlZHVjZSBqdXN0IGVtaXRzIG9uZSAnZGF0YScgZXZlbnQgYWZ0ZXIgaXQgaGFzIHJlY2lldmVkICdlbmQnXG5cbnZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKS5TdHJlYW1cbiAgLCBlcyA9IGV4cG9ydHNcbiAgLCB0aHJvdWdoID0gcmVxdWlyZSgndGhyb3VnaCcpXG4gICwgZnJvbSA9IHJlcXVpcmUoJ2Zyb20nKVxuICAsIGR1cGxleCA9IHJlcXVpcmUoJ2R1cGxleGVyJylcbiAgLCBtYXAgPSByZXF1aXJlKCdtYXAtc3RyZWFtJylcbiAgLCBwYXVzZSA9IHJlcXVpcmUoJ3BhdXNlLXN0cmVhbScpXG4gICwgc3BsaXQgPSByZXF1aXJlKCdzcGxpdCcpXG4gICwgcGlwZWxpbmUgPSByZXF1aXJlKCdzdHJlYW0tY29tYmluZXInKVxuICAsIGltbWVkaWF0ZWx5ID0gZ2xvYmFsLnNldEltbWVkaWF0ZSB8fCBwcm9jZXNzLm5leHRUaWNrO1xuXG5lcy5TdHJlYW0gPSBTdHJlYW0gLy9yZS1leHBvcnQgU3RyZWFtIGZyb20gY29yZVxuZXMudGhyb3VnaCA9IHRocm91Z2hcbmVzLmZyb20gPSBmcm9tXG5lcy5kdXBsZXggPSBkdXBsZXhcbmVzLm1hcCA9IG1hcFxuZXMucGF1c2UgPSBwYXVzZVxuZXMuc3BsaXQgPSBzcGxpdFxuZXMucGlwZWxpbmUgPSBlcy5jb25uZWN0ID0gZXMucGlwZSA9IHBpcGVsaW5lXG4vLyBtZXJnZSAvIGNvbmNhdFxuLy9cbi8vIGNvbWJpbmUgbXVsdGlwbGUgc3RyZWFtcyBpbnRvIGEgc2luZ2xlIHN0cmVhbS5cbi8vIHdpbGwgZW1pdCBlbmQgb25seSBvbmNlXG5cbmVzLmNvbmNhdCA9IC8vYWN0dWFsbHkgdGhpcyBzaG91bGQgYmUgY2FsbGVkIGNvbmNhdFxuZXMubWVyZ2UgPSBmdW5jdGlvbiAoLypzdHJlYW1zLi4uKi8pIHtcbiAgdmFyIHRvTWVyZ2UgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cylcbiAgaWYgKHRvTWVyZ2UubGVuZ3RoID09PSAxICYmICh0b01lcmdlWzBdIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgdG9NZXJnZSA9IHRvTWVyZ2VbMF0gLy9oYW5kbGUgYXJyYXkgYXMgYXJndW1lbnRzIG9iamVjdFxuICB9XG4gIHZhciBzdHJlYW0gPSBuZXcgU3RyZWFtKClcbiAgc3RyZWFtLnNldE1heExpc3RlbmVycygwKSAvLyBhbGxvdyBhZGRpbmcgbW9yZSB0aGFuIDExIHN0cmVhbXNcbiAgdmFyIGVuZENvdW50ID0gMFxuICBzdHJlYW0ud3JpdGFibGUgPSBzdHJlYW0ucmVhZGFibGUgPSB0cnVlXG5cbiAgaWYgKHRvTWVyZ2UubGVuZ3RoKSB7XG4gICAgdG9NZXJnZS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnBpcGUoc3RyZWFtLCB7ZW5kOiBmYWxzZX0pXG4gICAgICB2YXIgZW5kZWQgPSBmYWxzZVxuICAgICAgZS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZihlbmRlZCkgcmV0dXJuXG4gICAgICAgIGVuZGVkID0gdHJ1ZVxuICAgICAgICBlbmRDb3VudCArK1xuICAgICAgICBpZihlbmRDb3VudCA9PSB0b01lcmdlLmxlbmd0aClcbiAgICAgICAgICBzdHJlYW0uZW1pdCgnZW5kJylcbiAgICAgIH0pXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdlbmQnKVxuICAgIH0pXG4gIH1cbiAgXG4gIHN0cmVhbS53cml0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhpcy5lbWl0KCdkYXRhJywgZGF0YSlcbiAgfVxuICBzdHJlYW0uZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0b01lcmdlLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmKGUuZGVzdHJveSkgZS5kZXN0cm95KClcbiAgICB9KVxuICB9XG4gIHJldHVybiBzdHJlYW1cbn1cblxuXG4vLyB3cml0YWJsZSBzdHJlYW0sIGNvbGxlY3RzIGFsbCBldmVudHMgaW50byBhbiBhcnJheVxuLy8gYW5kIGNhbGxzIGJhY2sgd2hlbiAnZW5kJyBvY2N1cnNcbi8vIG1haW5seSBJJ20gdXNpbmcgdGhpcyB0byB0ZXN0IHRoZSBvdGhlciBmdW5jdGlvbnNcblxuZXMud3JpdGVBcnJheSA9IGZ1bmN0aW9uIChkb25lKSB7XG4gIGlmICgnZnVuY3Rpb24nICE9PSB0eXBlb2YgZG9uZSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Z1bmN0aW9uIHdyaXRlQXJyYXkgKGRvbmUpOiBkb25lIG11c3QgYmUgZnVuY3Rpb24nKVxuXG4gIHZhciBhID0gbmV3IFN0cmVhbSAoKVxuICAgICwgYXJyYXkgPSBbXSwgaXNEb25lID0gZmFsc2VcbiAgYS53cml0ZSA9IGZ1bmN0aW9uIChsKSB7XG4gICAgYXJyYXkucHVzaChsKVxuICB9XG4gIGEuZW5kID0gZnVuY3Rpb24gKCkge1xuICAgIGlzRG9uZSA9IHRydWVcbiAgICBkb25lKG51bGwsIGFycmF5KVxuICB9XG4gIGEud3JpdGFibGUgPSB0cnVlXG4gIGEucmVhZGFibGUgPSBmYWxzZVxuICBhLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgYS53cml0YWJsZSA9IGEucmVhZGFibGUgPSBmYWxzZVxuICAgIGlmKGlzRG9uZSkgcmV0dXJuXG4gICAgZG9uZShuZXcgRXJyb3IoJ2Rlc3Ryb3llZCBiZWZvcmUgZW5kJyksIGFycmF5KVxuICB9XG4gIHJldHVybiBhXG59XG5cbi8vcmV0dXJuIGEgU3RyZWFtIHRoYXQgcmVhZHMgdGhlIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0XG4vL3Jlc3BlY3RpbmcgcGF1c2UoKSBhbmQgcmVzdW1lKClcblxuZXMucmVhZEFycmF5ID0gZnVuY3Rpb24gKGFycmF5KSB7XG4gIHZhciBzdHJlYW0gPSBuZXcgU3RyZWFtKClcbiAgICAsIGkgPSAwXG4gICAgLCBwYXVzZWQgPSBmYWxzZVxuICAgICwgZW5kZWQgPSBmYWxzZVxuXG4gIHN0cmVhbS5yZWFkYWJsZSA9IHRydWVcbiAgc3RyZWFtLndyaXRhYmxlID0gZmFsc2VcblxuICBpZighQXJyYXkuaXNBcnJheShhcnJheSkpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdldmVudC1zdHJlYW0ucmVhZCBleHBlY3RzIGFuIGFycmF5JylcblxuICBzdHJlYW0ucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICAgIGlmKGVuZGVkKSByZXR1cm5cbiAgICBwYXVzZWQgPSBmYWxzZVxuICAgIHZhciBsID0gYXJyYXkubGVuZ3RoXG4gICAgd2hpbGUoaSA8IGwgJiYgIXBhdXNlZCAmJiAhZW5kZWQpIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgYXJyYXlbaSsrXSlcbiAgICB9XG4gICAgaWYoaSA9PSBsICYmICFlbmRlZClcbiAgICAgIGVuZGVkID0gdHJ1ZSwgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2UsIHN0cmVhbS5lbWl0KCdlbmQnKVxuICB9XG4gIHByb2Nlc3MubmV4dFRpY2soc3RyZWFtLnJlc3VtZSlcbiAgc3RyZWFtLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICAgICBwYXVzZWQgPSB0cnVlXG4gIH1cbiAgc3RyZWFtLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgZW5kZWQgPSB0cnVlXG4gICAgc3RyZWFtLmVtaXQoJ2Nsb3NlJylcbiAgfVxuICByZXR1cm4gc3RyZWFtXG59XG5cbi8vXG4vLyByZWFkYWJsZSAoYXN5bmNGdW5jdGlvbilcbi8vIHJldHVybiBhIHN0cmVhbSB0aGF0IGNhbGxzIGFuIGFzeW5jIGZ1bmN0aW9uIHdoaWxlIHRoZSBzdHJlYW0gaXMgbm90IHBhdXNlZC5cbi8vXG4vLyB0aGUgZnVuY3Rpb24gbXVzdCB0YWtlOiAoY291bnQsIGNhbGxiYWNrKSB7Li4uXG4vL1xuXG5lcy5yZWFkYWJsZSA9XG5mdW5jdGlvbiAoZnVuYywgY29udGludWVPbkVycm9yKSB7XG4gIHZhciBzdHJlYW0gPSBuZXcgU3RyZWFtKClcbiAgICAsIGkgPSAwXG4gICAgLCBwYXVzZWQgPSBmYWxzZVxuICAgICwgZW5kZWQgPSBmYWxzZVxuICAgICwgcmVhZGluZyA9IGZhbHNlXG5cbiAgc3RyZWFtLnJlYWRhYmxlID0gdHJ1ZVxuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZVxuXG4gIGlmKCdmdW5jdGlvbicgIT09IHR5cGVvZiBmdW5jKVxuICAgIHRocm93IG5ldyBFcnJvcignZXZlbnQtc3RyZWFtLnJlYWRhYmxlIGV4cGVjdHMgYXN5bmMgZnVuY3Rpb24nKVxuXG4gIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gKCkgeyBlbmRlZCA9IHRydWUgfSlcblxuICBmdW5jdGlvbiBnZXQgKGVyciwgZGF0YSkge1xuXG4gICAgaWYoZXJyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgICBpZighY29udGludWVPbkVycm9yKSBzdHJlYW0uZW1pdCgnZW5kJylcbiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKVxuICAgICAgc3RyZWFtLmVtaXQoJ2RhdGEnLCBkYXRhKVxuXG4gICAgaW1tZWRpYXRlbHkoZnVuY3Rpb24gKCkge1xuICAgICAgaWYoZW5kZWQgfHwgcGF1c2VkIHx8IHJlYWRpbmcpIHJldHVyblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVhZGluZyA9IHRydWVcbiAgICAgICAgZnVuYy5jYWxsKHN0cmVhbSwgaSsrLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmVhZGluZyA9IGZhbHNlXG4gICAgICAgICAgZ2V0LmFwcGx5KG51bGwsIGFyZ3VtZW50cylcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBzdHJlYW0ucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICAgIHBhdXNlZCA9IGZhbHNlXG4gICAgZ2V0KClcbiAgfVxuICBwcm9jZXNzLm5leHRUaWNrKGdldClcbiAgc3RyZWFtLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICAgICBwYXVzZWQgPSB0cnVlXG4gIH1cbiAgc3RyZWFtLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2VuZCcpXG4gICAgc3RyZWFtLmVtaXQoJ2Nsb3NlJylcbiAgICBlbmRlZCA9IHRydWVcbiAgfVxuICByZXR1cm4gc3RyZWFtXG59XG5cblxuLy9cbi8vIG1hcCBzeW5jXG4vL1xuXG5lcy5tYXBTeW5jID0gZnVuY3Rpb24gKHN5bmMpIHtcbiAgcmV0dXJuIGVzLnRocm91Z2goZnVuY3Rpb24gd3JpdGUoZGF0YSkge1xuICAgIHZhciBtYXBwZWREYXRhXG4gICAgdHJ5IHtcbiAgICAgIG1hcHBlZERhdGEgPSBzeW5jKGRhdGEpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgICB9XG4gICAgaWYgKG1hcHBlZERhdGEgIT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuZW1pdCgnZGF0YScsIG1hcHBlZERhdGEpXG4gIH0pXG59XG5cbi8vXG4vLyBsb2cganVzdCBwcmludCBvdXQgd2hhdCBpcyBjb21pbmcgdGhyb3VnaCB0aGUgc3RyZWFtLCBmb3IgZGVidWdnaW5nXG4vL1xuXG5lcy5sb2cgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gZXMudGhyb3VnaChmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpXG4gICAgaWYobmFtZSkgY29uc29sZS5lcnJvcihuYW1lLCBkYXRhKVxuICAgIGVsc2UgICAgIGNvbnNvbGUuZXJyb3IoZGF0YSlcbiAgICB0aGlzLmVtaXQoJ2RhdGEnLCBkYXRhKVxuICB9KVxufVxuXG5cbi8vXG4vLyBjaGlsZCAtLSBwaXBlIHRocm91Z2ggYSBjaGlsZCBwcm9jZXNzXG4vL1xuXG5lcy5jaGlsZCA9IGZ1bmN0aW9uIChjaGlsZCkge1xuXG4gIHJldHVybiBlcy5kdXBsZXgoY2hpbGQuc3RkaW4sIGNoaWxkLnN0ZG91dClcblxufVxuXG4vL1xuLy8gcGFyc2Vcbi8vXG4vLyBtdXN0IGJlIHVzZWQgYWZ0ZXIgZXMuc3BsaXQoKSB0byBlbnN1cmUgdGhhdCBlYWNoIGNodW5rIHJlcHJlc2VudHMgYSBsaW5lXG4vLyBzb3VyY2UucGlwZShlcy5zcGxpdCgpKS5waXBlKGVzLnBhcnNlKCkpXG5cbmVzLnBhcnNlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGVtaXRFcnJvciA9ICEhKG9wdGlvbnMgPyBvcHRpb25zLmVycm9yIDogZmFsc2UpXG4gIHJldHVybiBlcy50aHJvdWdoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIG9ialxuICAgIHRyeSB7XG4gICAgICBpZihkYXRhKSAvL2lnbm9yZSBlbXB0eSBsaW5lc1xuICAgICAgICBvYmogPSBKU09OLnBhcnNlKGRhdGEudG9TdHJpbmcoKSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlbWl0RXJyb3IpXG4gICAgICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKVxuICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyLCAnYXR0ZW1wdGluZyB0byBwYXJzZTonLCBkYXRhKVxuICAgIH1cbiAgICAvL2lnbm9yZSBsaW5lcyB0aGF0IHdoZXJlIG9ubHkgd2hpdGVzcGFjZS5cbiAgICBpZihvYmogIT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuZW1pdCgnZGF0YScsIG9iailcbiAgfSlcbn1cbi8vXG4vLyBzdHJpbmdpZnlcbi8vXG5cbmVzLnN0cmluZ2lmeSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlclxuICByZXR1cm4gZXMubWFwU3luYyhmdW5jdGlvbiAoZSl7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KEJ1ZmZlci5pc0J1ZmZlcihlKSA/IGUudG9TdHJpbmcoKSA6IGUpICsgJ1xcbidcbiAgfSlcbn1cblxuLy9cbi8vIHJlcGxhY2UgYSBzdHJpbmcgd2l0aGluIGEgc3RyZWFtLlxuLy9cbi8vIHdhcm46IGp1c3QgY29uY2F0ZW5hdGVzIHRoZSBzdHJpbmcgYW5kIHRoZW4gZG9lcyBzdHIuc3BsaXQoKS5qb2luKCkuXG4vLyBwcm9iYWJseSBub3Qgb3B0aW1hbC5cbi8vIGZvciBzbWFsbGlzaCByZXNwb25zZXMsIHdobyBjYXJlcz9cbi8vIEkgbmVlZCB0aGlzIGZvciBzaGFkb3ctbnBtIHNvIGl0J3Mgb25seSByZWxhdGl2ZWx5IHNtYWxsIGpzb24gZmlsZXMuXG5cbmVzLnJlcGxhY2UgPSBmdW5jdGlvbiAoZnJvbSwgdG8pIHtcbiAgcmV0dXJuIGVzLnBpcGVsaW5lKGVzLnNwbGl0KGZyb20pLCBlcy5qb2luKHRvKSlcbn1cblxuLy9cbi8vIGpvaW4gY2h1bmtzIHdpdGggYSBqb2luZXIuIGp1c3QgbGlrZSBBcnJheSNqb2luXG4vLyBhbHNvIGFjY2VwdHMgYSBjYWxsYmFjayB0aGF0IGlzIHBhc3NlZCB0aGUgY2h1bmtzIGFwcGVuZGVkIHRvZ2V0aGVyXG4vLyB0aGlzIGlzIHN0aWxsIHN1cHBvcnRlZCBmb3IgbGVnYWN5IHJlYXNvbnMuXG4vL1xuXG5lcy5qb2luID0gZnVuY3Rpb24gKHN0cikge1xuXG4gIC8vbGVnYWN5IGFwaVxuICBpZignZnVuY3Rpb24nID09PSB0eXBlb2Ygc3RyKVxuICAgIHJldHVybiBlcy53YWl0KHN0cilcblxuICB2YXIgZmlyc3QgPSB0cnVlXG4gIHJldHVybiBlcy50aHJvdWdoKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgaWYoIWZpcnN0KVxuICAgICAgdGhpcy5lbWl0KCdkYXRhJywgc3RyKVxuICAgIGZpcnN0ID0gZmFsc2VcbiAgICB0aGlzLmVtaXQoJ2RhdGEnLCBkYXRhKVxuICAgIHJldHVybiB0cnVlXG4gIH0pXG59XG5cblxuLy9cbi8vIHdhaXQuIGNhbGxiYWNrIHdoZW4gJ2VuZCcgaXMgZW1pdHRlZCwgd2l0aCBhbGwgY2h1bmtzIGFwcGVuZGVkIGFzIHN0cmluZy5cbi8vXG5cbmVzLndhaXQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIGFyciA9IFtdXG4gIHJldHVybiBlcy50aHJvdWdoKGZ1bmN0aW9uIChkYXRhKSB7IGFyci5wdXNoKGRhdGEpIH0sXG4gICAgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGJvZHkgPSBCdWZmZXIuaXNCdWZmZXIoYXJyWzBdKSA/IEJ1ZmZlci5jb25jYXQoYXJyKVxuICAgICAgICA6IGFyci5qb2luKCcnKVxuICAgICAgdGhpcy5lbWl0KCdkYXRhJywgYm9keSlcbiAgICAgIHRoaXMuZW1pdCgnZW5kJylcbiAgICAgIGlmKGNhbGxiYWNrKSBjYWxsYmFjayhudWxsLCBib2R5KVxuICAgIH0pXG59XG5cbmVzLnBpcGVhYmxlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1tFVkVOVC1TVFJFQU1dIGVzLnBpcGVhYmxlIGlzIGRlcHJlY2F0ZWQnKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V2ZW50LXN0cmVhbS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJylcblxuLy8gZnJvbVxuLy9cbi8vIGEgc3RyZWFtIHRoYXQgcmVhZHMgZnJvbSBhbiBzb3VyY2UuXG4vLyBzb3VyY2UgbWF5IGJlIGFuIGFycmF5LCBvciBhIGZ1bmN0aW9uLlxuLy8gZnJvbSBoYW5kbGVzIHBhdXNlIGJlaGF2aW91ciBmb3IgeW91LlxuXG5tb2R1bGUuZXhwb3J0cyA9XG5mdW5jdGlvbiBmcm9tIChzb3VyY2UpIHtcbiAgaWYoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG5cdFx0dmFyIHNvdXJjZV9pbmRleCA9IDAsIHNvdXJjZV9sZW4gPSBzb3VyY2UubGVuZ3RoO1xuICAgIHJldHVybiBmcm9tIChmdW5jdGlvbiAoaSkge1xuICAgICAgaWYoc291cmNlX2luZGV4IDwgc291cmNlX2xlbilcbiAgICAgICAgdGhpcy5lbWl0KCdkYXRhJywgc291cmNlW3NvdXJjZV9pbmRleCsrXSlcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5lbWl0KCdlbmQnKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KVxuICB9XG4gIHZhciBzID0gbmV3IFN0cmVhbSgpLCBpID0gMFxuICBzLmVuZGVkID0gZmFsc2VcbiAgcy5zdGFydGVkID0gZmFsc2VcbiAgcy5yZWFkYWJsZSA9IHRydWVcbiAgcy53cml0YWJsZSA9IGZhbHNlXG4gIHMucGF1c2VkID0gZmFsc2VcbiAgcy5lbmRlZCA9IGZhbHNlXG4gIHMucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgcy5zdGFydGVkID0gdHJ1ZVxuICAgIHMucGF1c2VkID0gdHJ1ZVxuICB9XG4gIGZ1bmN0aW9uIG5leHQgKCkge1xuICAgIHMuc3RhcnRlZCA9IHRydWVcbiAgICBpZihzLmVuZGVkKSByZXR1cm5cbiAgICB3aGlsZSghcy5lbmRlZCAmJiAhcy5wYXVzZWQgJiYgc291cmNlLmNhbGwocywgaSsrLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZighcy5lbmRlZCAmJiAhcy5wYXVzZWQpXG4gICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhuZXh0KTtcbiAgICB9KSlcbiAgICAgIDtcbiAgfVxuICBzLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBzLnN0YXJ0ZWQgPSB0cnVlXG4gICAgcy5wYXVzZWQgPSBmYWxzZVxuICAgIG5leHQoKVxuICB9XG4gIHMub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBzLmVuZGVkID0gdHJ1ZVxuICAgIHMucmVhZGFibGUgPSBmYWxzZVxuICAgIHByb2Nlc3MubmV4dFRpY2socy5kZXN0cm95KVxuICB9KVxuICBzLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgcy5lbmRlZCA9IHRydWVcbiAgICBzLmVtaXQoJ2Nsb3NlJykgXG4gIH1cbiAgLypcbiAgICBieSBkZWZhdWx0LCB0aGUgc3RyZWFtIHdpbGwgc3RhcnQgZW1pdHRpbmcgYXQgbmV4dFRpY2tcbiAgICBpZiB5b3Ugd2FudCwgeW91IGNhbiBwYXVzZSBpdCwgYWZ0ZXIgcGlwZWluZy5cbiAgICB5b3UgY2FuIGFsc28gcmVzdW1lIGJlZm9yZSBuZXh0IHRpY2ssIGFuZCB0aGF0IHdpbGwgYWxzb1xuICAgIHdvcmsuXG4gICovXG4gIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgIGlmKCFzLnN0YXJ0ZWQpIHMucmVzdW1lKClcbiAgfSlcbiAgcmV0dXJuIHNcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9mcm9tL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy9maWx0ZXIgd2lsbCByZWVtaXQgdGhlIGRhdGEgaWYgY2IoZXJyLHBhc3MpIHBhc3MgaXMgdHJ1dGh5XG5cbi8vIHJlZHVjZSBpcyBtb3JlIHRyaWNreVxuLy8gbWF5YmUgd2Ugd2FudCB0byBncm91cCB0aGUgcmVkdWN0aW9ucyBvciBlbWl0IHByb2dyZXNzIHVwZGF0ZXMgb2NjYXNpb25hbGx5XG4vLyB0aGUgbW9zdCBiYXNpYyByZWR1Y2UganVzdCBlbWl0cyBvbmUgJ2RhdGEnIGV2ZW50IGFmdGVyIGl0IGhhcyByZWNpZXZlZCAnZW5kJ1xuXG5cbnZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKS5TdHJlYW1cblxuXG4vL2NyZWF0ZSBhbiBldmVudCBzdHJlYW0gYW5kIGFwcGx5IGZ1bmN0aW9uIHRvIGVhY2ggLndyaXRlXG4vL2VtaXR0aW5nIGVhY2ggcmVzcG9uc2UgYXMgZGF0YVxuLy91bmxlc3MgaXQncyBhbiBlbXB0eSBjYWxsYmFja1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtYXBwZXIsIG9wdHMpIHtcblxuICB2YXIgc3RyZWFtID0gbmV3IFN0cmVhbSgpXG4gICAgLCBzZWxmID0gdGhpc1xuICAgICwgaW5wdXRzID0gMFxuICAgICwgb3V0cHV0cyA9IDBcbiAgICAsIGVuZGVkID0gZmFsc2VcbiAgICAsIHBhdXNlZCA9IGZhbHNlXG4gICAgLCBkZXN0cm95ZWQgPSBmYWxzZVxuICAgICwgbGFzdFdyaXR0ZW4gPSAwXG4gICAgLCBpbk5leHQgPSBmYWxzZVxuXG4gIHRoaXMub3B0cyA9IG9wdHMgfHwge307XG4gIHZhciBlcnJvckV2ZW50TmFtZSA9IHRoaXMub3B0cy5mYWlsdXJlcyA/ICdmYWlsdXJlJyA6ICdlcnJvcic7XG5cbiAgLy8gSXRlbXMgdGhhdCBhcmUgbm90IHJlYWR5IHRvIGJlIHdyaXR0ZW4geWV0IChiZWNhdXNlIHRoZXkgd291bGQgY29tZSBvdXQgb2ZcbiAgLy8gb3JkZXIpIGdldCBzdHVjayBpbiBhIHF1ZXVlIGZvciBsYXRlci5cbiAgdmFyIHdyaXRlUXVldWUgPSB7fVxuXG4gIHN0cmVhbS53cml0YWJsZSA9IHRydWVcbiAgc3RyZWFtLnJlYWRhYmxlID0gdHJ1ZVxuXG4gIGZ1bmN0aW9uIHF1ZXVlRGF0YSAoZGF0YSwgbnVtYmVyKSB7XG4gICAgdmFyIG5leHRUb1dyaXRlID0gbGFzdFdyaXR0ZW4gKyAxXG5cbiAgICBpZiAobnVtYmVyID09PSBuZXh0VG9Xcml0ZSkge1xuICAgICAgLy8gSWYgaXQncyBuZXh0LCBhbmQgaXRzIG5vdCB1bmRlZmluZWQgd3JpdGUgaXRcbiAgICAgIGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc3RyZWFtLmVtaXQuYXBwbHkoc3RyZWFtLCBbJ2RhdGEnLCBkYXRhXSlcbiAgICAgIH1cbiAgICAgIGxhc3RXcml0dGVuICsrXG4gICAgICBuZXh0VG9Xcml0ZSArK1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdGhlcndpc2UgcXVldWUgaXQgZm9yIGxhdGVyLlxuICAgICAgd3JpdGVRdWV1ZVtudW1iZXJdID0gZGF0YVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBuZXh0IHZhbHVlIGlzIGluIHRoZSBxdWV1ZSwgd3JpdGUgaXRcbiAgICBpZiAod3JpdGVRdWV1ZS5oYXNPd25Qcm9wZXJ0eShuZXh0VG9Xcml0ZSkpIHtcbiAgICAgIHZhciBkYXRhVG9Xcml0ZSA9IHdyaXRlUXVldWVbbmV4dFRvV3JpdGVdXG4gICAgICBkZWxldGUgd3JpdGVRdWV1ZVtuZXh0VG9Xcml0ZV1cbiAgICAgIHJldHVybiBxdWV1ZURhdGEoZGF0YVRvV3JpdGUsIG5leHRUb1dyaXRlKVxuICAgIH1cblxuICAgIG91dHB1dHMgKytcbiAgICBpZihpbnB1dHMgPT09IG91dHB1dHMpIHtcbiAgICAgIGlmKHBhdXNlZCkgcGF1c2VkID0gZmFsc2UsIHN0cmVhbS5lbWl0KCdkcmFpbicpIC8vd3JpdHRlbiBhbGwgdGhlIGluY29taW5nIGV2ZW50c1xuICAgICAgaWYoZW5kZWQpIGVuZCgpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbmV4dCAoZXJyLCBkYXRhLCBudW1iZXIpIHtcbiAgICBpZihkZXN0cm95ZWQpIHJldHVyblxuICAgIGluTmV4dCA9IHRydWVcblxuICAgIGlmICghZXJyIHx8IHNlbGYub3B0cy5mYWlsdXJlcykge1xuICAgICAgcXVldWVEYXRhKGRhdGEsIG51bWJlcilcbiAgICB9XG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICBzdHJlYW0uZW1pdC5hcHBseShzdHJlYW0sIFsgZXJyb3JFdmVudE5hbWUsIGVyciBdKTtcbiAgICB9XG5cbiAgICBpbk5leHQgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIFdyYXAgdGhlIG1hcHBlciBmdW5jdGlvbiBieSBjYWxsaW5nIGl0cyBjYWxsYmFjayB3aXRoIHRoZSBvcmRlciBudW1iZXIgb2ZcbiAgLy8gdGhlIGl0ZW0gaW4gdGhlIHN0cmVhbS5cbiAgZnVuY3Rpb24gd3JhcHBlZE1hcHBlciAoaW5wdXQsIG51bWJlciwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gbWFwcGVyLmNhbGwobnVsbCwgaW5wdXQsIGZ1bmN0aW9uKGVyciwgZGF0YSl7XG4gICAgICBjYWxsYmFjayhlcnIsIGRhdGEsIG51bWJlcilcbiAgICB9KVxuICB9XG5cbiAgc3RyZWFtLndyaXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBpZihlbmRlZCkgdGhyb3cgbmV3IEVycm9yKCdtYXAgc3RyZWFtIGlzIG5vdCB3cml0YWJsZScpXG4gICAgaW5OZXh0ID0gZmFsc2VcbiAgICBpbnB1dHMgKytcblxuICAgIHRyeSB7XG4gICAgICAvL2NhdGNoIHN5bmMgZXJyb3JzIGFuZCBoYW5kbGUgdGhlbSBsaWtlIGFzeW5jIGVycm9yc1xuICAgICAgdmFyIHdyaXR0ZW4gPSB3cmFwcGVkTWFwcGVyKGRhdGEsIGlucHV0cywgbmV4dClcbiAgICAgIHBhdXNlZCA9ICh3cml0dGVuID09PSBmYWxzZSlcbiAgICAgIHJldHVybiAhcGF1c2VkXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvL2lmIHRoZSBjYWxsYmFjayBoYXMgYmVlbiBjYWxsZWQgc3luY3Jvbm91c2x5LCBhbmQgdGhlIGVycm9yXG4gICAgICAvL2hhcyBvY2N1cmVkIGluIGFuIGxpc3RlbmVyLCB0aHJvdyBpdCBhZ2Fpbi5cbiAgICAgIGlmKGluTmV4dClcbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICBuZXh0KGVycilcbiAgICAgIHJldHVybiAhcGF1c2VkXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW5kIChkYXRhKSB7XG4gICAgLy9pZiBlbmQgd2FzIGNhbGxlZCB3aXRoIGFyZ3MsIHdyaXRlIGl0LCBcbiAgICBlbmRlZCA9IHRydWUgLy93cml0ZSB3aWxsIGVtaXQgJ2VuZCcgaWYgZW5kZWQgaXMgdHJ1ZVxuICAgIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlXG4gICAgaWYoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gcXVldWVEYXRhKGRhdGEsIGlucHV0cylcbiAgICB9IGVsc2UgaWYgKGlucHV0cyA9PSBvdXRwdXRzKSB7IC8vd2FpdCBmb3IgcHJvY2Vzc2luZyBcbiAgICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlLCBzdHJlYW0uZW1pdCgnZW5kJyksIHN0cmVhbS5kZXN0cm95KCkgXG4gICAgfVxuICB9XG5cbiAgc3RyZWFtLmVuZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgaWYoZW5kZWQpIHJldHVyblxuICAgIGVuZCgpXG4gIH1cblxuICBzdHJlYW0uZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICBlbmRlZCA9IGRlc3Ryb3llZCA9IHRydWVcbiAgICBzdHJlYW0ud3JpdGFibGUgPSBzdHJlYW0ucmVhZGFibGUgPSBwYXVzZWQgPSBmYWxzZVxuICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Nsb3NlJylcbiAgICB9KVxuICB9XG4gIHN0cmVhbS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBwYXVzZWQgPSB0cnVlXG4gIH1cblxuICBzdHJlYW0ucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICAgIHBhdXNlZCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4gc3RyZWFtXG59XG5cblxuXG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9tYXAtc3RyZWFtL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy90aHJvdWdoQDIgaGFuZGxlcyB0aGlzIGJ5IGRlZmF1bHQhXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ3Rocm91Z2gnKVxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvcGF1c2Utc3RyZWFtL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy9maWx0ZXIgd2lsbCByZWVtaXQgdGhlIGRhdGEgaWYgY2IoZXJyLHBhc3MpIHBhc3MgaXMgdHJ1dGh5XG5cbi8vIHJlZHVjZSBpcyBtb3JlIHRyaWNreVxuLy8gbWF5YmUgd2Ugd2FudCB0byBncm91cCB0aGUgcmVkdWN0aW9ucyBvciBlbWl0IHByb2dyZXNzIHVwZGF0ZXMgb2NjYXNpb25hbGx5XG4vLyB0aGUgbW9zdCBiYXNpYyByZWR1Y2UganVzdCBlbWl0cyBvbmUgJ2RhdGEnIGV2ZW50IGFmdGVyIGl0IGhhcyByZWNpZXZlZCAnZW5kJ1xuXG5cbnZhciB0aHJvdWdoID0gcmVxdWlyZSgndGhyb3VnaCcpXG52YXIgRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlclxuXG5tb2R1bGUuZXhwb3J0cyA9IHNwbGl0XG5cbi8vVE9ETyBwYXNzIGluIGEgZnVuY3Rpb24gdG8gbWFwIGFjcm9zcyB0aGUgbGluZXMuXG5cbmZ1bmN0aW9uIHNwbGl0IChtYXRjaGVyLCBtYXBwZXIsIG9wdGlvbnMpIHtcbiAgdmFyIGRlY29kZXIgPSBuZXcgRGVjb2RlcigpXG4gIHZhciBzb0ZhciA9ICcnXG4gIHZhciBtYXhMZW5ndGggPSBvcHRpb25zICYmIG9wdGlvbnMubWF4TGVuZ3RoO1xuICBpZignZnVuY3Rpb24nID09PSB0eXBlb2YgbWF0Y2hlcilcbiAgICBtYXBwZXIgPSBtYXRjaGVyLCBtYXRjaGVyID0gbnVsbFxuICBpZiAoIW1hdGNoZXIpXG4gICAgbWF0Y2hlciA9IC9cXHI/XFxuL1xuXG4gIGZ1bmN0aW9uIGVtaXQoc3RyZWFtLCBwaWVjZSkge1xuICAgIGlmKG1hcHBlcikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGllY2UgPSBtYXBwZXIocGllY2UpXG4gICAgICB9XG4gICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgICB9XG4gICAgICBpZigndW5kZWZpbmVkJyAhPT0gdHlwZW9mIHBpZWNlKVxuICAgICAgICBzdHJlYW0ucXVldWUocGllY2UpXG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHN0cmVhbS5xdWV1ZShwaWVjZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHQgKHN0cmVhbSwgYnVmZmVyKSB7XG4gICAgdmFyIHBpZWNlcyA9ICgoc29GYXIgIT0gbnVsbCA/IHNvRmFyIDogJycpICsgYnVmZmVyKS5zcGxpdChtYXRjaGVyKVxuICAgIHNvRmFyID0gcGllY2VzLnBvcCgpXG5cbiAgICBpZiAobWF4TGVuZ3RoICYmIHNvRmFyLmxlbmd0aCA+IG1heExlbmd0aClcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignbWF4aW11bSBidWZmZXIgcmVhY2hlZCcpKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwaWVjZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwaWVjZSA9IHBpZWNlc1tpXVxuICAgICAgZW1pdChzdHJlYW0sIHBpZWNlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aHJvdWdoKGZ1bmN0aW9uIChiKSB7XG4gICAgbmV4dCh0aGlzLCBkZWNvZGVyLndyaXRlKGIpKVxuICB9LFxuICBmdW5jdGlvbiAoKSB7XG4gICAgaWYoZGVjb2Rlci5lbmQpXG4gICAgICBuZXh0KHRoaXMsIGRlY29kZXIuZW5kKCkpXG4gICAgaWYoc29GYXIgIT0gbnVsbClcbiAgICAgIGVtaXQodGhpcywgc29GYXIpXG4gICAgdGhpcy5xdWV1ZShudWxsKVxuICB9KVxufVxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvc3BsaXQvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIyMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgZHVwbGV4ZXIgPSByZXF1aXJlKCdkdXBsZXhlcicpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuXG4gIHZhciBzdHJlYW1zID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpXG4gICAgLCBmaXJzdCA9IHN0cmVhbXNbMF1cbiAgICAsIGxhc3QgPSBzdHJlYW1zW3N0cmVhbXMubGVuZ3RoIC0gMV1cbiAgICAsIHRoZXBpcGUgPSBkdXBsZXhlcihmaXJzdCwgbGFzdClcblxuICBpZihzdHJlYW1zLmxlbmd0aCA9PSAxKVxuICAgIHJldHVybiBzdHJlYW1zWzBdXG4gIGVsc2UgaWYgKCFzdHJlYW1zLmxlbmd0aClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nvbm5lY3QgY2FsbGVkIHdpdGggZW1wdHkgYXJncycpXG5cbiAgLy9waXBlIGFsbCB0aGUgc3RyZWFtcyB0b2dldGhlclxuXG4gIGZ1bmN0aW9uIHJlY3Vyc2UgKHN0cmVhbXMpIHtcbiAgICBpZihzdHJlYW1zLmxlbmd0aCA8IDIpXG4gICAgICByZXR1cm5cbiAgICBzdHJlYW1zWzBdLnBpcGUoc3RyZWFtc1sxXSlcbiAgICByZWN1cnNlKHN0cmVhbXMuc2xpY2UoMSkpICBcbiAgfVxuICBcbiAgcmVjdXJzZShzdHJlYW1zKVxuIFxuICBmdW5jdGlvbiBvbmVycm9yICgpIHtcbiAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKVxuICAgIGFyZ3MudW5zaGlmdCgnZXJyb3InKVxuICAgIHRoZXBpcGUuZW1pdC5hcHBseSh0aGVwaXBlLCBhcmdzKVxuICB9XG4gIFxuICAvL2VzLmR1cGxleCBhbHJlYWR5IHJlZW1pdHMgdGhlIGVycm9yIGZyb20gdGhlIGZpcnN0IGFuZCBsYXN0IHN0cmVhbS5cbiAgLy9hZGQgYSBsaXN0ZW5lciBmb3IgdGhlIGlubmVyIHN0cmVhbXMgaW4gdGhlIHBpcGVsaW5lLlxuICBmb3IodmFyIGkgPSAxOyBpIDwgc3RyZWFtcy5sZW5ndGggLSAxOyBpICsrKVxuICAgIHN0cmVhbXNbaV0ub24oJ2Vycm9yJywgb25lcnJvcilcblxuICByZXR1cm4gdGhlcGlwZVxufVxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvc3RyZWFtLWNvbWJpbmVyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0ICogYXMgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCB7XG4gIGdldExhYmVsZWRTZWdtZW50cyxcbiAgaW5zZXJ0U2VnbWVudHMsXG4gIHJlbW92ZVNlZ21lbnRzLFxufSBmcm9tICcuLi9zZXJ2aWNlcy9zZWdtZW50cyc7XG5pbXBvcnQge3J1bkxlYXJuaW5nfSBmcm9tICcuLi9zZXJ2aWNlcy9hbmFseXRpY3MnO1xuaW1wb3J0IHtBbm9tYWx5LCBBbm9tYWx5SWQsIGdldEFub21hbHlJZEJ5TmFtZSwgbG9hZEFub21hbHlCeUlkfSBmcm9tICcuLi9zZXJ2aWNlcy9hbm9tYWx5VHlwZSc7XG5cblxuYXN5bmMgZnVuY3Rpb24gc2VuZFNlZ21lbnRzKHJlcSwgcmVzKSB7XG4gIHRyeSB7XG4gICAgbGV0IGFub21hbHlJZDogQW5vbWFseUlkID0gcmVxLnF1ZXJ5LmFub21hbHlfaWQ7XG4gICAgbGV0IGFub21hbHk6QW5vbWFseSA9IGxvYWRBbm9tYWx5QnlJZChhbm9tYWx5SWQpO1xuICAgIGlmKGFub21hbHkgPT09IG51bGwpIHtcbiAgICAgIGFub21hbHlJZCA9IGdldEFub21hbHlJZEJ5TmFtZShhbm9tYWx5SWQpO1xuICAgIH1cblxuICAgIGxldCBsYXN0U2VnbWVudElkID0gcmVxLnF1ZXJ5Lmxhc3Rfc2VnbWVudDtcbiAgICBsZXQgdGltZUZyb20gPSByZXEucXVlcnkuZnJvbTtcbiAgICBsZXQgdGltZVRvID0gcmVxLnF1ZXJ5LnRvO1xuXG4gICAgbGV0IHNlZ21lbnRzID0gZ2V0TGFiZWxlZFNlZ21lbnRzKGFub21hbHlJZCk7XG5cbiAgICAvLyBJZCBmaWx0ZXJpbmdcbiAgICBpZihsYXN0U2VnbWVudElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlZ21lbnRzID0gc2VnbWVudHMuZmlsdGVyKGVsID0+IGVsLmlkID4gbGFzdFNlZ21lbnRJZCk7XG4gICAgfVxuXG4gICAgLy8gVGltZSBmaWx0ZXJpbmdcbiAgICBpZih0aW1lRnJvbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZWdtZW50cyA9IHNlZ21lbnRzLmZpbHRlcihlbCA9PiBlbC5maW5pc2ggPiB0aW1lRnJvbSk7XG4gICAgfVxuXG4gICAgaWYodGltZVRvICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlZ21lbnRzID0gc2VnbWVudHMuZmlsdGVyKGVsID0+IGVsLnN0YXJ0IDwgdGltZVRvKTtcbiAgICB9XG5cbiAgICBsZXQgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHNlZ21lbnRzXG4gICAgfSk7XG4gICAgcmVzLnN0YXR1cygyMDApLnNlbmQocGF5bG9hZCk7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHtcbiAgICAgIGNvZGU6IDUwMCxcbiAgICAgIG1lc3NhZ2U6ICdJbnRlcm5hbCBlcnJvcidcbiAgICB9KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVTZWdtZW50cyhyZXEsIHJlcykge1xuICB0cnkge1xuICAgIGxldCBzZWdtZW50c1VwZGF0ZSA9IHJlcS5ib2R5O1xuXG4gICAgbGV0IGFub21hbHlJZCA9IHNlZ21lbnRzVXBkYXRlLmFub21hbHlfaWQ7XG4gICAgbGV0IGFub21hbHlOYW1lID0gc2VnbWVudHNVcGRhdGUubmFtZTtcblxuICAgIGlmKGFub21hbHlJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhbm9tYWx5SWQgPSBnZXRBbm9tYWx5SWRCeU5hbWUoYW5vbWFseU5hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgbGV0IGFkZGVkSWRzID0gaW5zZXJ0U2VnbWVudHMoYW5vbWFseUlkLCBzZWdtZW50c1VwZGF0ZS5hZGRlZF9zZWdtZW50cywgdHJ1ZSk7XG4gICAgcmVtb3ZlU2VnbWVudHMoYW5vbWFseUlkLCBzZWdtZW50c1VwZGF0ZS5yZW1vdmVkX3NlZ21lbnRzKTtcblxuICAgIGxldCBwYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoeyBhZGRlZF9pZHM6IGFkZGVkSWRzIH0pO1xuICAgIHJlcy5zdGF0dXMoMjAwKS5zZW5kKHBheWxvYWQpO1xuXG4gICAgcnVuTGVhcm5pbmcoYW5vbWFseUlkKTtcbiAgfSBjYXRjaChlKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLnNlbmQoe1xuICAgICAgY29kZTogNTAwLFxuICAgICAgbWVzc2FnZTogJ0ludGVybmFsIGVycm9yJ1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KCcvJywgc2VuZFNlZ21lbnRzKTtcbnJvdXRlci5wYXRjaCgnLycsIHVwZGF0ZVNlZ21lbnRzKTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3JvdXRlcy9zZWdtZW50cy50cyIsImltcG9ydCAqIGFzIGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQge0Fub21hbHlJZCwgZ2V0QW5vbWFseUlkQnlOYW1lLCBsb2FkQW5vbWFseUJ5SWR9IGZyb20gJy4uL3NlcnZpY2VzL2Fub21hbHlUeXBlJztcbmltcG9ydCB7IGdldEFsZXJ0c0Fub21hbGllcywgc2F2ZUFsZXJ0c0Fub21hbGllcyB9IGZyb20gJy4uL3NlcnZpY2VzL2FsZXJ0cyc7XG5cbmZ1bmN0aW9uIGdldEFsZXJ0KHJlcSwgcmVzKSB7XG4gIHRyeSB7XG4gICAgbGV0IGFub21hbHlJZDogQW5vbWFseUlkID0gcmVxLnF1ZXJ5LmFub21hbHlfaWQ7XG4gICAgbGV0IGFub21hbHkgPSBsb2FkQW5vbWFseUJ5SWQoYW5vbWFseUlkKVxuICAgIGlmIChhbm9tYWx5ID09IG51bGwpIHtcbiAgICAgIGFub21hbHlJZCA9IGdldEFub21hbHlJZEJ5TmFtZShhbm9tYWx5SWQudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgbGV0IGFsZXJ0c0Fub21hbGllcyA9IGdldEFsZXJ0c0Fub21hbGllcygpO1xuICAgIGxldCBwb3MgPSBhbGVydHNBbm9tYWxpZXMuaW5kZXhPZihhbm9tYWx5SWQpO1xuXG4gICAgbGV0IGVuYWJsZTogYm9vbGVhbiA9IChwb3MgIT09IC0xKTtcbiAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCh7XG4gICAgICBlbmFibGVcbiAgICB9KTtcbiAgfSBjYXRjaChlKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLnNlbmQoe1xuICAgICAgY29kZTogNTAwLFxuICAgICAgbWVzc2FnZTogJ0ludGVybmFsIGVycm9yJ1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUFsZXJ0KHJlcSwgcmVzKSB7XG4gIHRyeSB7XG4gICAgbGV0IGFub21hbHlJZDogQW5vbWFseUlkID0gcmVxLmJvZHkuYW5vbWFseV9pZDtcbiAgICBsZXQgZW5hYmxlOiBib29sZWFuID0gcmVxLmJvZHkuZW5hYmxlO1xuXG4gICAgbGV0IGFub21hbHkgPSBsb2FkQW5vbWFseUJ5SWQoYW5vbWFseUlkKVxuICAgIGlmIChhbm9tYWx5ID09IG51bGwpIHtcbiAgICAgIGFub21hbHlJZCA9IGdldEFub21hbHlJZEJ5TmFtZShhbm9tYWx5SWQudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgbGV0IGFsZXJ0c0Fub21hbGllcyA9IGdldEFsZXJ0c0Fub21hbGllcygpO1xuICAgIGxldCBwb3M6IG51bWJlciA9IGFsZXJ0c0Fub21hbGllcy5pbmRleE9mKGFub21hbHlJZCk7XG4gICAgaWYoZW5hYmxlICYmIHBvcyA9PSAtMSkge1xuICAgICAgYWxlcnRzQW5vbWFsaWVzLnB1c2goYW5vbWFseUlkKTtcbiAgICAgIHNhdmVBbGVydHNBbm9tYWxpZXMoYWxlcnRzQW5vbWFsaWVzKTtcbiAgICB9IGVsc2UgaWYoIWVuYWJsZSAmJiBwb3MgPiAtMSkge1xuICAgICAgYWxlcnRzQW5vbWFsaWVzLnNwbGljZShwb3MsIDEpO1xuICAgICAgc2F2ZUFsZXJ0c0Fub21hbGllcyhhbGVydHNBbm9tYWxpZXMpO1xuICAgIH1cbiAgICByZXMuc3RhdHVzKDIwMCkuc2VuZCh7XG4gICAgICBzdGF0dXM6ICdPaydcbiAgICB9KTtcbiAgfSBjYXRjaChlKSB7XG4gICAgcmVzLnN0YXR1cyg1MDApLnNlbmQoe1xuICAgICAgY29kZTogNTAwLFxuICAgICAgbWVzc2FnZTogJ0ludGVybmFsIGVycm9yJ1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KCcvJywgZ2V0QWxlcnQpO1xucm91dGVyLnBvc3QoJy8nLCBjaGFuZ2VBbGVydCk7XG5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3JvdXRlcy9hbGVydHMudHMiLCJpbXBvcnQgeyBnZXRKc29uRGF0YVN5bmMsIHdyaXRlSnNvbkRhdGFTeW5jIH0gZnJvbSAnLi9qc29uJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBBbm9tYWx5SWQgfSBmcm9tICcuL2Fub21hbHlUeXBlJztcbmltcG9ydCB7IEFOT01BTElFU19QQVRIIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7IHJ1blByZWRpY3QgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBzZW5kTm90aWZpY2F0aW9uIH0gZnJvbSAnLi9ub3RpZmljYXRpb24nO1xuaW1wb3J0IHsgZ2V0TGFiZWxlZFNlZ21lbnRzIH0gZnJvbSAnLi9zZWdtZW50cyc7XG5cbmZ1bmN0aW9uIGdldEFsZXJ0c0Fub21hbGllcygpIDogQW5vbWFseUlkW10ge1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oQU5PTUFMSUVTX1BBVEgsIGBhbGVydHNfYW5vbWFsaWVzLmpzb25gKTtcbiAgaWYoIWZzLmV4aXN0c1N5bmMoZmlsZW5hbWUpKSB7XG4gICAgc2F2ZUFsZXJ0c0Fub21hbGllcyhbXSk7XG4gIH1cbiAgcmV0dXJuIGdldEpzb25EYXRhU3luYyhwYXRoLmpvaW4oQU5PTUFMSUVTX1BBVEgsIGBhbGVydHNfYW5vbWFsaWVzLmpzb25gKSk7XG59XG5cbmZ1bmN0aW9uIHNhdmVBbGVydHNBbm9tYWxpZXMoYW5vbWFsaWVzOiBBbm9tYWx5SWRbXSkge1xuICByZXR1cm4gd3JpdGVKc29uRGF0YVN5bmMocGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgYWxlcnRzX2Fub21hbGllcy5qc29uYCksIGFub21hbGllcyk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NBbGVydHMoYW5vbWFseUlkKSB7XG4gIGxldCBzZWdtZW50cyA9IGdldExhYmVsZWRTZWdtZW50cyhhbm9tYWx5SWQpO1xuXG4gIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gIGNvbnN0IGFjdGl2ZUFsZXJ0ID0gYWN0aXZlQWxlcnRzLmhhcyhhbm9tYWx5SWQpO1xuICBsZXQgbmV3QWN0aXZlQWxlcnQgPSBmYWxzZTtcblxuICBpZihzZWdtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IGxhc3RTZWdtZW50ID0gc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV07XG4gICAgaWYobGFzdFNlZ21lbnQuZmluaXNoID49IGN1cnJlbnRUaW1lIC0gYWxlcnRUaW1lb3V0KSB7XG4gICAgICBuZXdBY3RpdmVBbGVydCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYoIWFjdGl2ZUFsZXJ0ICYmIG5ld0FjdGl2ZUFsZXJ0KSB7XG4gICAgYWN0aXZlQWxlcnRzLmFkZChhbm9tYWx5SWQpO1xuICAgIHNlbmROb3RpZmljYXRpb24oYW5vbWFseUlkLCB0cnVlKTtcbiAgfSBlbHNlIGlmKGFjdGl2ZUFsZXJ0ICYmICFuZXdBY3RpdmVBbGVydCkge1xuICAgIGFjdGl2ZUFsZXJ0cy5kZWxldGUoYW5vbWFseUlkKTtcbiAgICBzZW5kTm90aWZpY2F0aW9uKGFub21hbHlJZCwgZmFsc2UpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFsZXJ0c1RpY2soKSB7XG4gIGxldCBhbGVydHNBbm9tYWxpZXMgPSBnZXRBbGVydHNBbm9tYWxpZXMoKTtcbiAgZm9yIChsZXQgYW5vbWFseUlkIG9mIGFsZXJ0c0Fub21hbGllcykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBydW5QcmVkaWN0KGFub21hbHlJZCk7XG4gICAgICBwcm9jZXNzQWxlcnRzKGFub21hbHlJZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgc2V0VGltZW91dChhbGVydHNUaWNrLCA1MDAwKTtcbn1cblxuY29uc3QgYWxlcnRUaW1lb3V0ID0gNjAwMDA7IC8vIG1zXG5jb25zdCBhY3RpdmVBbGVydHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbnNldFRpbWVvdXQoYWxlcnRzVGljaywgNTAwMCk7XG5cblxuZXhwb3J0IHsgZ2V0QWxlcnRzQW5vbWFsaWVzLCBzYXZlQWxlcnRzQW5vbWFsaWVzIH1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NlcnZpY2VzL2FsZXJ0cy50cyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zZXRcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3NldC5qc1xuLy8gbW9kdWxlIGlkID0gMjI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zZXQnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnNldC50by1qc29uJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5zZXQub2YnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnNldC5mcm9tJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvX2NvcmUnKS5TZXQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3NldC5qc1xuLy8gbW9kdWxlIGlkID0gMjI2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcbnZhciBzdHJvbmcgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXN0cm9uZycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFNFVCA9ICdTZXQnO1xuXG4vLyAyMy4yIFNldCBPYmplY3RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKShTRVQsIGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpIHsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07XG59LCB7XG4gIC8vIDIzLjIuMy4xIFNldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHZhbGlkYXRlKHRoaXMsIFNFVCksIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc2V0LmpzXG4vLyBtb2R1bGUgaWQgPSAyMjdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyICRpdGVyRGVmaW5lID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIGZhc3RLZXkgPSByZXF1aXJlKCcuL19tZXRhJykuZmFzdEtleTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBTSVpFID0gREVTQ1JJUFRPUlMgPyAnX3MnIDogJ3NpemUnO1xuXG52YXIgZ2V0RW50cnkgPSBmdW5jdGlvbiAodGhhdCwga2V5KSB7XG4gIC8vIGZhc3QgY2FzZVxuICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSk7XG4gIHZhciBlbnRyeTtcbiAgaWYgKGluZGV4ICE9PSAnRicpIHJldHVybiB0aGF0Ll9pW2luZGV4XTtcbiAgLy8gZnJvemVuIG9iamVjdCBjYXNlXG4gIGZvciAoZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgaWYgKGVudHJ5LmsgPT0ga2V5KSByZXR1cm4gZW50cnk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24gKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpIHtcbiAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGl0ZXJhYmxlKSB7XG4gICAgICBhbkluc3RhbmNlKHRoYXQsIEMsIE5BTUUsICdfaScpO1xuICAgICAgdGhhdC5fdCA9IE5BTUU7ICAgICAgICAgLy8gY29sbGVjdGlvbiB0eXBlXG4gICAgICB0aGF0Ll9pID0gY3JlYXRlKG51bGwpOyAvLyBpbmRleFxuICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgLy8gZmlyc3QgZW50cnlcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7ICAgIC8vIGxhc3QgZW50cnlcbiAgICAgIHRoYXRbU0laRV0gPSAwOyAgICAgICAgIC8vIHNpemVcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMS4zLjEgTWFwLnByb3RvdHlwZS5jbGVhcigpXG4gICAgICAvLyAyMy4yLjMuMiBTZXQucHJvdG90eXBlLmNsZWFyKClcbiAgICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgZm9yICh2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBkYXRhID0gdGhhdC5faSwgZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYgKGVudHJ5LnApIGVudHJ5LnAgPSBlbnRyeS5wLm4gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVsZXRlIGRhdGFbZW50cnkuaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhhdC5fZiA9IHRoYXQuX2wgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoYXRbU0laRV0gPSAwO1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy4zIE1hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjIuMy40IFNldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHRoYXQgPSB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5uO1xuICAgICAgICAgIHZhciBwcmV2ID0gZW50cnkucDtcbiAgICAgICAgICBkZWxldGUgdGhhdC5faVtlbnRyeS5pXTtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAocHJldikgcHJldi5uID0gbmV4dDtcbiAgICAgICAgICBpZiAobmV4dCkgbmV4dC5wID0gcHJldjtcbiAgICAgICAgICBpZiAodGhhdC5fZiA9PSBlbnRyeSkgdGhhdC5fZiA9IG5leHQ7XG4gICAgICAgICAgaWYgKHRoYXQuX2wgPT0gZW50cnkpIHRoYXQuX2wgPSBwcmV2O1xuICAgICAgICAgIHRoYXRbU0laRV0tLTtcbiAgICAgICAgfSByZXR1cm4gISFlbnRyeTtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4yLjMuNiBTZXQucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgICAgIC8vIDIzLjEuMy41IE1hcC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgICAgICB2YXIgZW50cnk7XG4gICAgICAgIHdoaWxlIChlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoaXMuX2YpIHtcbiAgICAgICAgICBmKGVudHJ5LnYsIGVudHJ5LmssIHRoaXMpO1xuICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgICAgIHdoaWxlIChlbnRyeSAmJiBlbnRyeS5yKSBlbnRyeSA9IGVudHJ5LnA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyAyMy4xLjMuNyBNYXAucHJvdG90eXBlLmhhcyhrZXkpXG4gICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcbiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh2YWxpZGF0ZSh0aGlzLCBOQU1FKSwga2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRQKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGUodGhpcywgTkFNRSlbU0laRV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIEM7XG4gIH0sXG4gIGRlZjogZnVuY3Rpb24gKHRoYXQsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuICAgIHZhciBwcmV2LCBpbmRleDtcbiAgICAvLyBjaGFuZ2UgZXhpc3RpbmcgZW50cnlcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcbiAgICAvLyBjcmVhdGUgbmV3IGVudHJ5XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcbiAgICAgICAgaTogaW5kZXggPSBmYXN0S2V5KGtleSwgdHJ1ZSksIC8vIDwtIGluZGV4XG4gICAgICAgIGs6IGtleSwgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBrZXlcbiAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG4gICAgICAgIHA6IHByZXYgPSB0aGF0Ll9sLCAgICAgICAgICAgICAvLyA8LSBwcmV2aW91cyBlbnRyeVxuICAgICAgICBuOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgLy8gPC0gbmV4dCBlbnRyeVxuICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuICAgICAgfTtcbiAgICAgIGlmICghdGhhdC5fZikgdGhhdC5fZiA9IGVudHJ5O1xuICAgICAgaWYgKHByZXYpIHByZXYubiA9IGVudHJ5O1xuICAgICAgdGhhdFtTSVpFXSsrO1xuICAgICAgLy8gYWRkIHRvIGluZGV4XG4gICAgICBpZiAoaW5kZXggIT09ICdGJykgdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcbiAgICB9IHJldHVybiB0aGF0O1xuICB9LFxuICBnZXRFbnRyeTogZ2V0RW50cnksXG4gIHNldFN0cm9uZzogZnVuY3Rpb24gKEMsIE5BTUUsIElTX01BUCkge1xuICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXVxuICAgIC8vIDIzLjEuMy40LCAyMy4xLjMuOCwgMjMuMS4zLjExLCAyMy4xLjMuMTIsIDIzLjIuMy41LCAyMy4yLjMuOCwgMjMuMi4zLjEwLCAyMy4yLjMuMTFcbiAgICAkaXRlckRlZmluZShDLCBOQU1FLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgICAgIHRoaXMuX3QgPSB2YWxpZGF0ZShpdGVyYXRlZCwgTkFNRSk7IC8vIHRhcmdldFxuICAgICAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgICAgICAgLy8ga2luZFxuICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgICAgICAgICAgICAgICAgLy8gcHJldmlvdXNcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICB2YXIga2luZCA9IHRoYXQuX2s7XG4gICAgICB2YXIgZW50cnkgPSB0aGF0Ll9sO1xuICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG4gICAgICB3aGlsZSAoZW50cnkgJiYgZW50cnkucikgZW50cnkgPSBlbnRyeS5wO1xuICAgICAgLy8gZ2V0IG5leHQgZW50cnlcbiAgICAgIGlmICghdGhhdC5fdCB8fCAhKHRoYXQuX2wgPSBlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoYXQuX3QuX2YpKSB7XG4gICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG4gICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBzdGVwKDEpO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZFxuICAgICAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS5rKTtcbiAgICAgIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS52KTtcbiAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG4gICAgfSwgSVNfTUFQID8gJ2VudHJpZXMnIDogJ3ZhbHVlcycsICFJU19NQVAsIHRydWUpO1xuXG4gICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjJcbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLXN0cm9uZy5qc1xuLy8gbW9kdWxlIGlkID0gMjI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGVhY2ggPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMCk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChOQU1FLCB3cmFwcGVyLCBtZXRob2RzLCBjb21tb24sIElTX01BUCwgSVNfV0VBSykge1xuICB2YXIgQmFzZSA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIEMgPSBCYXNlO1xuICB2YXIgQURERVIgPSBJU19NQVAgPyAnc2V0JyA6ICdhZGQnO1xuICB2YXIgcHJvdG8gPSBDICYmIEMucHJvdG90eXBlO1xuICB2YXIgTyA9IHt9O1xuICBpZiAoIURFU0NSSVBUT1JTIHx8IHR5cGVvZiBDICE9ICdmdW5jdGlvbicgfHwgIShJU19XRUFLIHx8IHByb3RvLmZvckVhY2ggJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgQygpLmVudHJpZXMoKS5uZXh0KCk7XG4gIH0pKSkge1xuICAgIC8vIGNyZWF0ZSBjb2xsZWN0aW9uIGNvbnN0cnVjdG9yXG4gICAgQyA9IGNvbW1vbi5nZXRDb25zdHJ1Y3Rvcih3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gICAgbWV0YS5ORUVEID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBDID0gd3JhcHBlcihmdW5jdGlvbiAodGFyZ2V0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0YXJnZXQsIEMsIE5BTUUsICdfYycpO1xuICAgICAgdGFyZ2V0Ll9jID0gbmV3IEJhc2UoKTtcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRhcmdldFtBRERFUl0sIHRhcmdldCk7XG4gICAgfSk7XG4gICAgZWFjaCgnYWRkLGNsZWFyLGRlbGV0ZSxmb3JFYWNoLGdldCxoYXMsc2V0LGtleXMsdmFsdWVzLGVudHJpZXMsdG9KU09OJy5zcGxpdCgnLCcpLCBmdW5jdGlvbiAoS0VZKSB7XG4gICAgICB2YXIgSVNfQURERVIgPSBLRVkgPT0gJ2FkZCcgfHwgS0VZID09ICdzZXQnO1xuICAgICAgaWYgKEtFWSBpbiBwcm90byAmJiAhKElTX1dFQUsgJiYgS0VZID09ICdjbGVhcicpKSBoaWRlKEMucHJvdG90eXBlLCBLRVksIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIGFuSW5zdGFuY2UodGhpcywgQywgS0VZKTtcbiAgICAgICAgaWYgKCFJU19BRERFUiAmJiBJU19XRUFLICYmICFpc09iamVjdChhKSkgcmV0dXJuIEtFWSA9PSAnZ2V0JyA/IHVuZGVmaW5lZCA6IGZhbHNlO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fY1tLRVldKGEgPT09IDAgPyAwIDogYSwgYik7XG4gICAgICAgIHJldHVybiBJU19BRERFUiA/IHRoaXMgOiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBJU19XRUFLIHx8IGRQKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYy5zaXplO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0VG9TdHJpbmdUYWcoQywgTkFNRSk7XG5cbiAgT1tOQU1FXSA9IEM7XG4gICRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GLCBPKTtcblxuICBpZiAoIUlTX1dFQUspIGNvbW1vbi5zZXRTdHJvbmcoQywgTkFNRSwgSVNfTUFQKTtcblxuICByZXR1cm4gQztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvbGxlY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDIyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyAwIC0+IEFycmF5I2ZvckVhY2hcbi8vIDEgLT4gQXJyYXkjbWFwXG4vLyAyIC0+IEFycmF5I2ZpbHRlclxuLy8gMyAtPiBBcnJheSNzb21lXG4vLyA0IC0+IEFycmF5I2V2ZXJ5XG4vLyA1IC0+IEFycmF5I2ZpbmRcbi8vIDYgLT4gQXJyYXkjZmluZEluZGV4XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgYXNjID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRZUEUsICRjcmVhdGUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICB2YXIgY3JlYXRlID0gJGNyZWF0ZSB8fCBhc2M7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGNhbGxiYWNrZm4sIHRoYXQpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IElPYmplY3QoTyk7XG4gICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciByZXN1bHQgPSBJU19NQVAgPyBjcmVhdGUoJHRoaXMsIGxlbmd0aCkgOiBJU19GSUxURVIgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWwsIHJlcztcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHtcbiAgICAgIHZhbCA9IHNlbGZbaW5kZXhdO1xuICAgICAgcmVzID0gZih2YWwsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHJlc3VsdFtpbmRleF0gPSByZXM7ICAgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYgKHJlcykgc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbDsgICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAvLyBmaW5kSW5kZXhcbiAgICAgICAgICBjYXNlIDI6IHJlc3VsdC5wdXNoKHZhbCk7ICAgICAgICAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIGlmIChJU19FVkVSWSkgcmV0dXJuIGZhbHNlOyAvLyBldmVyeVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSVNfRklORF9JTkRFWCA/IC0xIDogSVNfU09NRSB8fCBJU19FVkVSWSA/IElTX0VWRVJZIDogcmVzdWx0O1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktbWV0aG9kcy5qc1xuLy8gbW9kdWxlIGlkID0gMjMwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aClcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsKSkobGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsKSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbCkpIHtcbiAgICBDID0gb3JpZ2luYWwuY29uc3RydWN0b3I7XG4gICAgLy8gY3Jvc3MtcmVhbG0gZmFsbGJhY2tcbiAgICBpZiAodHlwZW9mIEMgPT0gJ2Z1bmN0aW9uJyAmJiAoQyA9PT0gQXJyYXkgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKSBDID0gdW5kZWZpbmVkO1xuICAgIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIEMgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDIzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDIzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1NldCcsIHsgdG9KU09OOiByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXRvLWpzb24nKSgnU2V0JykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnNldC50by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAyMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4vX2FycmF5LWZyb20taXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICBpZiAoY2xhc3NvZih0aGlzKSAhPSBOQU1FKSB0aHJvdyBUeXBlRXJyb3IoTkFNRSArIFwiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO1xuICAgIHJldHVybiBmcm9tKHRoaXMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29sbGVjdGlvbi10by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAyMzVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXIsIElURVJBVE9SKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yT2YoaXRlciwgZmFsc2UsIHJlc3VsdC5wdXNoLCByZXN1bHQsIElURVJBVE9SKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWZyb20taXRlcmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDIzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1zZXQub2ZcbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLW9mJykoJ1NldCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zZXQub2YuanNcbi8vIG1vZHVsZSBpZCA9IDIzN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT0xMRUNUSU9OKSB7XG4gICRleHBvcnQoJGV4cG9ydC5TLCBDT0xMRUNUSU9OLCB7IG9mOiBmdW5jdGlvbiBvZigpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgQSA9IG5ldyBBcnJheShsZW5ndGgpO1xuICAgIHdoaWxlIChsZW5ndGgtLSkgQVtsZW5ndGhdID0gYXJndW1lbnRzW2xlbmd0aF07XG4gICAgcmV0dXJuIG5ldyB0aGlzKEEpO1xuICB9IH0pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tb2YuanNcbi8vIG1vZHVsZSBpZCA9IDIzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1zZXQuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdTZXQnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc2V0LmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDIzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT0xMRUNUSU9OKSB7XG4gICRleHBvcnQoJGV4cG9ydC5TLCBDT0xMRUNUSU9OLCB7IGZyb206IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwRm4sIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHNbMV07XG4gICAgdmFyIG1hcHBpbmcsIEEsIG4sIGNiO1xuICAgIGFGdW5jdGlvbih0aGlzKTtcbiAgICBtYXBwaW5nID0gbWFwRm4gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAobWFwcGluZykgYUZ1bmN0aW9uKG1hcEZuKTtcbiAgICBpZiAoc291cmNlID09IHVuZGVmaW5lZCkgcmV0dXJuIG5ldyB0aGlzKCk7XG4gICAgQSA9IFtdO1xuICAgIGlmIChtYXBwaW5nKSB7XG4gICAgICBuID0gMDtcbiAgICAgIGNiID0gY3R4KG1hcEZuLCBhcmd1bWVudHNbMl0sIDIpO1xuICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgZnVuY3Rpb24gKG5leHRJdGVtKSB7XG4gICAgICAgIEEucHVzaChjYihuZXh0SXRlbSwgbisrKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgQS5wdXNoLCBBKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0aGlzKEEpO1xuICB9IH0pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tZnJvbS5qc1xuLy8gbW9kdWxlIGlkID0gMjQwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgNDNiZGQ0ZDkyNjM0ZjkxNzMyY2UiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicGF0aFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInN0cmVhbVwiIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJidWZmZXJcIiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2RlcGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiZnNcIiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3V0aWxzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJodHRwXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvanNvbi9zdHJpbmdpZnkuanMiLCJ3ZWJwYWNrOi8vLy4vc2VydmljZXMvYW5vbWFseVR5cGUudHMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9ieXRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0YXR1c2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvdHlwZS1pcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3BhcnNldXJsL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9yZWdlbmVyYXRvci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9wcm9taXNlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faGFzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZm9yLW9mLmpzIiwid2VicGFjazovLy8uL2NvbmZpZy50cyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb250ZW50LXR5cGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9odHRwLWVycm9ycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3NldHByb3RvdHlwZW9mL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYm9keS1wYXJzZXIvbGliL3JlYWQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9vbi1maW5pc2hlZC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2VuY29kZXVybC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2VzY2FwZS1odG1sL2luZGV4LmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcInVybFwiIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYXJyYXktZmxhdHRlbi9hcnJheS1mbGF0dGVuLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvdXRpbHMtbWVyZ2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiY3J5cHRvXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZmFpbHMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXRvLXN0cmluZy10YWcuanMiLCJ3ZWJwYWNrOi8vLy4vc2VydmljZXMvanNvbi50cyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJldmVudHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ1dGlsXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvY3A5MzYuanNvbiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL21ldGhvZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zZW5kL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jbGFzc29mLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUtYWxsLmpzIiwid2VicGFjazovLy8uL3NlcnZpY2VzL2FuYWx5dGljcy50cyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vc2VydmljZXMvc2VnbWVudHMudHMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy90aHJvdWdoL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYm9keS1wYXJzZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9kZWJ1Zy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL21zL2luZGV4LmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcIm5ldFwiIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2RlcGQvbGliL2NvbXBhdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvbGliL2luZGV4LmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcInN0cmluZ19kZWNvZGVyXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvZ2JrLWFkZGVkLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvY3A5NTAuanNvbiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3VucGlwZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ6bGliXCIiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9taW1lLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcXMvbGliL3V0aWxzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcXMvbGliL2Zvcm1hdHMuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicXVlcnlzdHJpbmdcIiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3JvdXRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3JvdXRlci9yb3V0ZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3JvdXRlci9sYXllci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL21pZGRsZXdhcmUvcXVlcnkuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zYWZlLWJ1ZmZlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvbnRlbnQtZGlzcG9zaXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9ldGFnL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZnJlc2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9yYW5nZS1wYXJzZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9wcm94eS1hZGRyL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Rhc2suanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcGVyZm9ybS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9taXNlLXJlc29sdmUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc2VydmljZXMvbWV0cmljcy50cyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2R1cGxleGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdmFsaWRhdGUtY29sbGVjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9pbmRleC50cyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL2V4cHJlc3MuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvY2FsbHNpdGUtdG9zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvZXZlbnQtbGlzdGVuZXItY291bnQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9saWIvdHlwZXMvanNvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0YXR1c2VzL2NvZGVzLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvbm9kZS5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ0dHlcIiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3Jhdy1ib2R5L2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2h0dHAtZXJyb3JzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2RlcGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9yYXctYm9keS9ub2RlX21vZHVsZXMvZGVwZC9saWIvY29tcGF0L2NhbGxzaXRlLXRvc3RyaW5nLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2RlcGQvbGliL2NvbXBhdC9ldmVudC1saXN0ZW5lci1jb3VudC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3Jhdy1ib2R5L25vZGVfbW9kdWxlcy9zZXRwcm90b3R5cGVvZi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvbGliL2JvbS1oYW5kbGluZy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy91dGYxNi5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3V0ZjcuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9zYmNzLWNvZGVjLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3Mvc2Jjcy1kYXRhLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3Mvc2Jjcy1kYXRhLWdlbmVyYXRlZC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2RiY3MtY29kZWMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9kYmNzLWRhdGEuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvc2hpZnRqaXMuanNvbiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9ldWNqcC5qc29uIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdGFibGVzL2diMTgwMzAtcmFuZ2VzLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvY3A5NDkuanNvbiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9iaWc1LWFkZGVkLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2xpYi9zdHJlYW1zLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9saWIvZXh0ZW5kLW5vZGUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9lZS1maXJzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL21lZGlhLXR5cGVyL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbWltZS1kYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL21pbWUtZGIvZGIuanNvbiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2JvZHktcGFyc2VyL2xpYi90eXBlcy9yYXcuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9saWIvdHlwZXMvdGV4dC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2JvZHktcGFyc2VyL2xpYi90eXBlcy91cmxlbmNvZGVkLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcXMvbGliL3N0cmluZ2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9wYXJzZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL21lcmdlLWRlc2NyaXB0b3JzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvYXBwbGljYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9maW5hbGhhbmRsZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9wYXRoLXRvLXJlZ2V4cC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL21pZGRsZXdhcmUvaW5pdC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3ZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2Rlc3Ryb3kvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9taW1lL21pbWUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9taW1lL3R5cGVzLmpzb24iLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9mb3J3YXJkZWQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9pcGFkZHIuanMvbGliL2lwYWRkci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi9yZXF1ZXN0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYWNjZXB0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL25lZ290aWF0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZWdvdGlhdG9yL2xpYi9jaGFyc2V0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvbmVnb3RpYXRvci9saWIvZW5jb2RpbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9uZWdvdGlhdG9yL2xpYi9sYW5ndWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL25lZ290aWF0b3IvbGliL21lZGlhVHlwZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3Jlc3BvbnNlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29va2llLXNpZ25hdHVyZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2Nvb2tpZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3ZhcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zZXJ2ZS1zdGF0aWMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcm91dGVzL2Fub21hbGllcy50cyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS1tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdwby5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYucHJvbWlzZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWNhbGwuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pbnZva2UuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWljcm90YXNrLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3VzZXItYWdlbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZXRlY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcImNoaWxkX3Byb2Nlc3NcIiIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2V2ZW50LXN0cmVhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2Zyb20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9tYXAtc3RyZWFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvcGF1c2Utc3RyZWFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvc3BsaXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9zdHJlYW0tY29tYmluZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcm91dGVzL3NlZ21lbnRzLnRzIiwid2VicGFjazovLy8uL3JvdXRlcy9hbGVydHMudHMiLCJ3ZWJwYWNrOi8vLy4vc2VydmljZXMvYWxlcnRzLnRzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3NldC5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zZXQuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc2V0LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvbGxlY3Rpb24tc3Ryb25nLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvbGxlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktbWV0aG9kcy5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnNldC50by1qc29uLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvbGxlY3Rpb24tdG8tanNvbi5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1mcm9tLWl0ZXJhYmxlLmpzIiwid2VicGFjazovLy8uLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnNldC5vZi5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1vZi5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zZXQuZnJvbS5qcyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtY29sbGVjdGlvbi1mcm9tLmpzIiwid2VicGFjazovLy8uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi50cyIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL25vZGUtZmV0Y2gvbGliL2luZGV4LmVzLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcImh0dHBzXCIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9EQUE0QztBQUM1QztBQUNBO0FBQ0E7O0FBRUEsMENBQWtDO0FBQ2xDO0FBQ0E7QUFDQSxZQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkNBQXFDO0FBQ3JDO0FBQ0E7Ozs7QUFJQTtBQUNBLHNEQUE4QztBQUM5QztBQUNBO0FBQ0Esb0NBQTRCO0FBQzVCLHFDQUE2QjtBQUM3Qix5Q0FBaUM7O0FBRWpDLCtDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw4Q0FBc0M7QUFDdEM7QUFDQTtBQUNBLHFDQUE2QjtBQUM3QixxQ0FBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUFvQixnQkFBZ0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQW9CLGdCQUFnQjtBQUNwQztBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLGFBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsYUFBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUJBQWlCLDhCQUE4QjtBQUMvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFJO0FBQ0o7O0FBRUEsNERBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7QUFDQSxjQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQWtCLGNBQWM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQWEsNEJBQTRCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBSTs7QUFFSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHNCQUFjLDRCQUE0QjtBQUMxQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHNCQUFjLDRCQUE0QjtBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBZ0IsdUNBQXVDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBZ0IsdUNBQXVDO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQWdCLHNCQUFzQjtBQUN0QztBQUNBO0FBQ0E7QUFDQSxnQkFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQkFBYSx3Q0FBd0M7QUFDckQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQUs7QUFDTDtBQUNB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QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCLGlDQUFpQztBQUM1RCxjQUFjLG9CQUFvQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7O0FBRUE7QUFDQTtB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QUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QjtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7OztBQzlKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNB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QUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7OztBQ25RQSw0Q0FBNEMsYUFBYTs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7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QTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLHFCQUFxQjtBQUNoQyxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsb0JBQW9CO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0RBQXdELElBQUk7QUFDNUQ7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZLE9BQU87QUFDbkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esb0RBQW9EO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7QUMxR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWLGNBQWMsU0FBUztBQUN2QixjQUFjLFNBQVM7QUFDdkIsY0FBYyxTQUFTO0FBQ3ZCLGNBQWMsU0FBUztBQUN2Qjs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7OztBQzVKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUM5RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTs7Ozs7Ozs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsY0FBYztBQUNkOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsU0FBUztBQUMxQiw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUNBQXlDLFNBQVM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsU0FBUztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDek1BO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsT0FBTztBQUNsQixZQUFZLE1BQU07QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ3ZKQSxnQzs7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUM5RUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCOztBQUUzQjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFEQUFxRDtBQUNyRDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1EQUFrRDs7QUFFbEQ7QUFDQSxpRUFBaUUsRUFBRTs7QUFFbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5RUFBeUU7QUFDekU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNuSkEsMkM7Ozs7OztBQ0FBLG81Qjs7Ozs7O0FDQUEsMnFlOzs7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLHNCQUFzQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNwRUEsaUM7Ozs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQ0FBbUMsU0FBUztBQUM1Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7QUMzTEE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7O0FBRUE7QUFD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RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsc0JBQXNCO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxpQkFBaUIscUJBQXFCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FB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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7OztBQzlDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDN0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzREFBc0QsWUFBWTs7QUFFbEU7QUFDQTtBQUNBOztBQUVBLHNDQUFzQyxFQUFFO0FBQ3hDLCtDQUErQyxFQUFFOztBQUVqRDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQSxxQkFBcUIsTUFBTTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFCQUFxQjtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixNQUFNO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlEQUFpRCxpQkFBaUIsSUFBSSxhQUFhLEVBQUUsRUFBRSxJQUFJLFVBQVUsSUFBSSxvQkFBb0IsRUFBRTs7QUFFL0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDhFQUE4RTs7QUFFOUU7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxlQUFlO0FBQzFCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxlQUFlO0FBQzFCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsbUJBQW1CO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZEQUE2RDtBQUM3RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFlBQVk7QUFDWjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUM1YkE7QUFDQTtBQUNBO0FBQ0E7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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3RVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7Ozs7Ozs7QUN4Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDTEE7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBLHFFQUFxRTtBQUNyRSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7OztBQ1hEO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDSEE7QUFDQTs7Ozs7OztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNKQTtBQUNBLFVBQVU7QUFDVjs7Ozs7OztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFH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O0FBRUg7QUFDQTtBQUNBLFVBQVU7QUFDVixHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSCxDQUFDOzs7Ozs7OztBQy9HRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDdEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUNyQkE7QUFDQTtB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O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7O0FDblFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBLGlCQUFpQixnQkFBZ0I7QUFDakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsdUNBQXVDOztBQUV2QztBQUNBLDRDQUE0QztBQUM1Qzs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLFdBQVc7QUFDNUI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxpQkFBaUIsa0JBQWtCO0FBQ25DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVEsa0JBQWtCO0FBQzFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCLGlDQUFpQztBQUM1RCxjQUFjLG9CQUFvQjtBQUNsQzs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHFEQUFxRDtBQUNyRDtBQUNBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7O0FDdmdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDdEdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7OztBQ3JCQSw0Q0FBNEMsYUFBYTs7QUFFekQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7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QUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7QUN2S0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdU5BQXVOLGlFQUFpRSxFQUFFO0FBQzFSLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxHQUFH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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixvQkFBb0I7QUFDdkM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7OztBQ2pOQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLGtCQUFrQjtBQUNyQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxrQ0FBa0MsUUFBUTtBQUMxQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7O0FDN0tBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7O0FDM0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7QUMzRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsU0FBUztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsU0FBUztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsUUFBUTtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLEdBQUc7O0FBRUg7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLFNBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFNBQVM7QUFDcEM7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixTQUFTO0FBQ2hDO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLFNBQVM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsU0FBUztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLFNBQVM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLFFBQVE7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxHQUFHOztBQUVIOztBQUVBLHlCQUF5QixHQUFHOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLFNBQVM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxTQUFTO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlFQUFpRSxFQUFFO0FBQ25FO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQSxDQUFDOzs7Ozs7OztBQy9tQkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7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QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDN09BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7OztBQzNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHFDQUFxQyxVQUFVOztBQUUvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHdCQUF3QixvQkFBb0I7QUFDNUM7O0FBRUE7QUFDQTtB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Q0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0JBQWtCOztBQUVsQixpQkFBaUIscUJBQXFCO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx3QkFBd0Isb0JBQW9CO0FBQzVDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQjs7QUFFL0Isd0JBQXdCLHVCQUF1QjtBQUMvQztBQUNBO0FBQ0EsS0FBSztBQUNMLHlCQUF5QjtBQUN6QjtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsaUJBQWlCLHVCQUF1QjtBQUN4QztBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7O0FDclNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCOztBQUV0QjtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLFdBQVcsT0FBTztBQUNsQixZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLGVBQWU7QUFDaEM7QUFDQTtBQUNBLFdBQVcsb0NBQW9DO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsYUFBYTtBQUM5QjtBQUNBLFdBQVcsNkJBQTZCO0FBQ3hDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsYUFBYTtBQUMvQjtBQUNBLFdBQVcsNkJBQTZCO0FBQ3hDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRGQUE0RjtBQUM1Rjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNEO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQVU7QUFDVixRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0EsVUFBVTtBQUNWLFFBQVE7QUFDUjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFF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QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ3BKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsZ0JBQWdCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFF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O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQSx3Q0FBd0MsV0FBVztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxjQUFjO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsa0JBQWtCO0FBQ25EO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7OztBQzdSRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ1hBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1Q0FBdUMsc0JBQXNCLEVBQUU7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7Ozs7Ozs7QUNwRUE7QUFDQTs7QUFFQTs7Ozs7OztBQ0hBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGlDQUFpQyxxQkFBcUI7QUFDdEQ7QUFDQSxpQ0FBaUMsU0FBUyxFQUFFO0FBQzVDLENBQUMsWUFBWTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsU0FBUyxxQkFBcUI7QUFDM0QsaUNBQWlDLGFBQWE7QUFDOUM7QUFDQSxHQUFHLFlBQVk7QUFDZjtBQUNBOzs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQsVUFBVSxFQUFFO0FBQzFFLEtBQUs7QUFDTDtBQUNBLDhEQUE4RCxTQUFTLEVBQUU7QUFDekUsS0FBSztBQUNMO0FBQ0EsQ0FBQyxFQUFFOzs7Ozs7OztBQ25CSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBRTs7Ozs7OztBQ1hILDBDOzs7Ozs7QUNBQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ05BOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQixXQUFXO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGdDQUFnQyxlQUFlOztBQUUvQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxxQ0FBcUMsaUJBQWlCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQ2xVQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7Ozs7O0FDbkVBOztBQUVBO0FBQ0E7QUFDQTs7O0FBR0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyw4QkFBOEI7QUFDbkM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7O0FDNUlBO0FBQ0E7Ozs7Ozs7O0FDREE7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7OztBQzdEQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCLHdCQUF3QjtBQUN4Qzs7QUFFQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JDQTtBQUNBO0FBS0E7QUFDQTtBQUdBLHNCQUE0QixHQUE1QixFQUFpQyxHQUFqQyxFQUFvQzs7Ozs7OztBQUNsQyw0QkFBSTtBQUNFLHFDQURGLEdBQ3lCLElBQUksS0FBSixDQUFVLFVBRG5DO0FBRUUsbUNBRkYsR0FFb0IsOEJBQWdCLFNBQWhCLENBRnBCOztBQUdGLGdDQUFHLFlBQVksSUFBZixFQUFxQjtBQUNuQiw0Q0FBWSxpQ0FBbUIsU0FBbkIsQ0FBWjtBQUNEO0FBRUcseUNBUEYsR0FPa0IsSUFBSSxLQUFKLENBQVUsWUFQNUI7QUFRRSxvQ0FSRixHQVFhLElBQUksS0FBSixDQUFVLElBUnZCO0FBU0Usa0NBVEYsR0FTVyxJQUFJLEtBQUosQ0FBVSxFQVRyQjtBQVdFLG9DQVhGLEdBV2EsOEJBQW1CLFNBQW5CLENBWGI7QUFhRjs7QUFDQSxnQ0FBRyxrQkFBa0IsU0FBckIsRUFBZ0M7QUFDOUIsMkNBQVcsU0FBUyxNQUFULENBQWdCO0FBQUEsMkNBQU0sR0FBRyxFQUFILEdBQVEsYUFBZDtBQUFBLGlDQUFoQixDQUFYO0FBQ0Q7QUFFRDtBQUNBLGdDQUFHLGFBQWEsU0FBaEIsRUFBMkI7QUFDekIsMkNBQVcsU0FBUyxNQUFULENBQWdCO0FBQUEsMkNBQU0sR0FBRyxNQUFILEdBQVksUUFBbEI7QUFBQSxpQ0FBaEIsQ0FBWDtBQUNEO0FBRUQsZ0NBQUcsV0FBVyxTQUFkLEVBQXlCO0FBQ3ZCLDJDQUFXLFNBQVMsTUFBVCxDQUFnQjtBQUFBLDJDQUFNLEdBQUcsS0FBSCxHQUFXLE1BQWpCO0FBQUEsaUNBQWhCLENBQVg7QUFDRDtBQUVHLG1DQTNCRixHQTJCWSx5QkFBZTtBQUMzQjtBQUQyQiw2QkFBZixDQTNCWjs7QUE4QkYsZ0NBQUksTUFBSixDQUFXLEdBQVgsRUFBZ0IsSUFBaEIsQ0FBcUIsT0FBckI7QUFDRCx5QkEvQkQsQ0ErQkUsT0FBTSxDQUFOLEVBQVM7QUFDVCxnQ0FBSSxNQUFKLENBQVcsR0FBWCxFQUFnQixJQUFoQixDQUFxQjtBQUNuQixzQ0FBTSxHQURhO0FBRW5CLHlDQUFTO0FBRlUsNkJBQXJCO0FBSUQ7Ozs7Ozs7OztBQUNGO0FBRUQsd0JBQThCLEdBQTlCLEVBQW1DLEdBQW5DLEVBQXNDOzs7Ozs7O0FBQ3BDLDRCQUFJO0FBQ0UsMENBREYsR0FDbUIsSUFBSSxJQUR2QjtBQUdFLHFDQUhGLEdBR2MsZUFBZSxVQUg3QjtBQUlFLHVDQUpGLEdBSWdCLGVBQWUsSUFKL0I7O0FBTUYsZ0NBQUcsY0FBYyxTQUFqQixFQUE0QjtBQUMxQiw0Q0FBWSxpQ0FBbUIsWUFBWSxXQUFaLEVBQW5CLENBQVo7QUFDRDtBQUVHLG9DQVZGLEdBVWEsMEJBQWUsU0FBZixFQUEwQixlQUFlLGNBQXpDLEVBQXlELElBQXpELENBVmI7O0FBV0Ysc0RBQWUsU0FBZixFQUEwQixlQUFlLGdCQUF6QztBQUVJLG1DQWJGLEdBYVkseUJBQWUsRUFBRSxXQUFXLFFBQWIsRUFBZixDQWJaOztBQWNGLGdDQUFJLE1BQUosQ0FBVyxHQUFYLEVBQWdCLElBQWhCLENBQXFCLE9BQXJCO0FBRUEsb0RBQVksU0FBWjtBQUNELHlCQWpCRCxDQWlCRSxPQUFNLENBQU4sRUFBUztBQUNULGdDQUFJLE1BQUosQ0FBVyxHQUFYLEVBQWdCLElBQWhCLENBQXFCO0FBQ25CLHNDQUFNLEdBRGE7QUFFbkIseUNBQVM7QUFGVSw2QkFBckI7QUFJRDs7Ozs7Ozs7O0FBQ0Y7QUFFWSxpQkFBUyxRQUFRLE1BQVIsRUFBVDtBQUViLGVBQU8sR0FBUCxDQUFXLEdBQVgsRUFBZ0IsWUFBaEI7QUFDQSxlQUFPLEtBQVAsQ0FBYSxHQUFiLEVBQWtCLGNBQWxCLEU7Ozs7Ozs7Ozs7QUMvRUE7QUFDQTtBQUNBO0FBRUEsa0JBQWtCLEdBQWxCLEVBQXVCLEdBQXZCLEVBQTBCO0FBQ3hCLFFBQUk7QUFDRixZQUFJLFlBQXVCLElBQUksS0FBSixDQUFVLFVBQXJDO0FBQ0EsWUFBSSxVQUFVLDhCQUFnQixTQUFoQixDQUFkO0FBQ0EsWUFBSSxXQUFXLElBQWYsRUFBcUI7QUFDbkIsd0JBQVksaUNBQW1CLFVBQVUsV0FBVixFQUFuQixDQUFaO0FBQ0Q7QUFFRCxZQUFJLGtCQUFrQiw2QkFBdEI7QUFDQSxZQUFJLE1BQU0sZ0JBQWdCLE9BQWhCLENBQXdCLFNBQXhCLENBQVY7QUFFQSxZQUFJLFNBQW1CLFFBQVEsQ0FBQyxDQUFoQztBQUNBLFlBQUksTUFBSixDQUFXLEdBQVgsRUFBZ0IsSUFBaEIsQ0FBcUI7QUFDbkI7QUFEbUIsU0FBckI7QUFHRCxLQWRELENBY0UsT0FBTSxDQUFOLEVBQVM7QUFDVCxZQUFJLE1BQUosQ0FBVyxHQUFYLEVBQWdCLElBQWhCLENBQXFCO0FBQ25CLGtCQUFNLEdBRGE7QUFFbkIscUJBQVM7QUFGVSxTQUFyQjtBQUlEO0FBQ0Y7QUFFRCxxQkFBcUIsR0FBckIsRUFBMEIsR0FBMUIsRUFBNkI7QUFDM0IsUUFBSTtBQUNGLFlBQUksWUFBdUIsSUFBSSxJQUFKLENBQVMsVUFBcEM7QUFDQSxZQUFJLFNBQWtCLElBQUksSUFBSixDQUFTLE1BQS9CO0FBRUEsWUFBSSxVQUFVLDhCQUFnQixTQUFoQixDQUFkO0FBQ0EsWUFBSSxXQUFXLElBQWYsRUFBcUI7QUFDbkIsd0JBQVksaUNBQW1CLFVBQVUsV0FBVixFQUFuQixDQUFaO0FBQ0Q7QUFFRCxZQUFJLGtCQUFrQiw2QkFBdEI7QUFDQSxZQUFJLE1BQWMsZ0JBQWdCLE9BQWhCLENBQXdCLFNBQXhCLENBQWxCO0FBQ0EsWUFBRyxVQUFVLE9BQU8sQ0FBQyxDQUFyQixFQUF3QjtBQUN0Qiw0QkFBZ0IsSUFBaEIsQ0FBcUIsU0FBckI7QUFDQSx5Q0FBb0IsZUFBcEI7QUFDRCxTQUhELE1BR08sSUFBRyxDQUFDLE1BQUQsSUFBVyxNQUFNLENBQUMsQ0FBckIsRUFBd0I7QUFDN0IsNEJBQWdCLE1BQWhCLENBQXVCLEdBQXZCLEVBQTRCLENBQTVCO0FBQ0EseUNBQW9CLGVBQXBCO0FBQ0Q7QUFDRCxZQUFJLE1BQUosQ0FBVyxHQUFYLEVBQWdCLElBQWhCLENBQXFCO0FBQ25CLG9CQUFRO0FBRFcsU0FBckI7QUFHRCxLQXJCRCxDQXFCRSxPQUFNLENBQU4sRUFBUztBQUNULFlBQUksTUFBSixDQUFXLEdBQVgsRUFBZ0IsSUFBaEIsQ0FBcUI7QUFDbkIsa0JBQU0sR0FEYTtBQUVuQixxQkFBUztBQUZVLFNBQXJCO0FBSUQ7QUFDRjtBQUVZLGlCQUFTLFFBQVEsTUFBUixFQUFUO0FBRWIsZUFBTyxHQUFQLENBQVcsR0FBWCxFQUFnQixRQUFoQjtBQUNBLGVBQU8sSUFBUCxDQUFZLEdBQVosRUFBaUIsV0FBakIsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0UsUUFBSSxXQUFXLEtBQUssSUFBTCxDQUFVLHVCQUFWLDBCQUFmO0FBQ0EsUUFBRyxDQUFDLEdBQUcsVUFBSCxDQUFjLFFBQWQsQ0FBSixFQUE2QjtBQUMzQiw0QkFBb0IsRUFBcEI7QUFDRDtBQUNELFdBQU8sdUJBQWdCLEtBQUssSUFBTCxDQUFVLHVCQUFWLDBCQUFoQixDQUFQO0FBQ0Q7QUFnRFE7QUE5Q1QsNkJBQTZCLFNBQTdCLEVBQW1EO0FBQ2pELFdBQU8seUJBQWtCLEtBQUssSUFBTCxDQUFVLHVCQUFWLDBCQUFsQixFQUFzRSxTQUF0RSxDQUFQO0FBQ0Q7QUE0QzRCO0FBMUM3Qix1QkFBdUIsU0FBdkIsRUFBZ0M7QUFDOUIsUUFBSSxXQUFXLDhCQUFtQixTQUFuQixDQUFmO0FBRUEsUUFBTSxjQUFjLElBQUksSUFBSixHQUFXLE9BQVgsRUFBcEI7QUFDQSxRQUFNLGNBQWMsS0FBcEI7QUFDQSxRQUFJLGlCQUFpQixLQUFyQjtBQUVBLFFBQUcsU0FBUyxNQUFULEdBQWtCLENBQXJCLEVBQXdCO0FBQ3RCLFlBQUksY0FBYyxTQUFTLFNBQVMsTUFBVCxHQUFrQixDQUEzQixDQUFsQjtBQUNBLFlBQUcsWUFBWSxNQUFaLElBQXNCLGNBQWMsWUFBdkMsRUFBcUQ7QUFDbkQsNkJBQWlCLElBQWpCO0FBQ0Q7QUFDRjtBQUNELFlBQVEsR0FBUixDQUFZLFdBQVo7QUFDQSxxQkFBaUIsSUFBakI7QUFDQSxRQUFHLENBQUMsV0FBRCxJQUFnQixjQUFuQixFQUFtQztBQUNqQyxxQkFBYSxHQUFiLENBQWlCLFNBQWpCO0FBQ0Esd0NBQWlCLFNBQWpCLEVBQTRCLElBQTVCO0FBQ0QsS0FIRCxNQUdPLElBQUcsZUFBZSxDQUFDLGNBQW5CLEVBQW1DO0FBQ3hDLHFCQUFhLE1BQWIsQ0FBb0IsU0FBcEI7QUFDQSx3Q0FBaUIsU0FBakIsRUFBNEIsS0FBNUI7QUFDRDtBQUNGO0FBRUQ7Ozs7Ozs7O0FBQ00sdUMsR0FBa0Isb0I7Ozs7OytEQUNBLGU7Ozs7Ozs7O0FBQWIsaUM7OzsrQkFFQyx1QkFBVyxTQUFYLEM7OztBQUNOLHNDQUFjLFNBQWQ7Ozs7Ozs7O0FBRUEsZ0NBQVEsS0FBUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0osbUNBQVcsVUFBWCxFQUF1QixJQUF2Qjs7Ozs7Ozs7O0FBQ0Q7QUFFRCxJQUFNLGVBQWUsS0FBckIsQyxDQUE0QjtBQUM1QixJQUFNLGVBQWUsbUJBQXJCO0FBQ0EsV0FBVyxVQUFYLEVBQXVCLElBQXZCLEU7Ozs7OztBQzVEQSxrQkFBa0IseUQ7Ozs7OztBQ0FsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx5QkFBeUIsbUVBQW1FO0FBQzVGLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7O0FDYkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsT0FBTztBQUM5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIscUJBQXFCO0FBQ3JCO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEVBQThFLE9BQU87QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDLHFCQUFxQjtBQUNyQiwwQkFBMEI7QUFDMUIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FDL0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOzs7Ozs7O0FDMURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxlQUFlO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyxTQUFTLGlDQUFpQztBQUMxQztBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDM0NBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7O0FDTEE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ0pBO0FBQ0E7O0FBRUEsdUNBQXVDLDBDQUFrRDs7Ozs7OztBQ0h6RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNSQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDTkE7QUFDQTs7Ozs7Ozs7QUNEQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLEVBQUU7QUFDTDs7Ozs7OztBQ1hBO0FBQ0E7Ozs7Ozs7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRyxFQUFFO0FBQ0w7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDM0JBO0FBQ0E7QUFFQSwwQkFBMEIsU0FBMUIsRUFBcUMsTUFBckMsRUFBMkM7QUFDekMsUUFBSSxjQUFjLDhCQUFnQixTQUFoQixFQUEyQixJQUE3QztBQUNBLFlBQVEsR0FBUixDQUFZLGtCQUFrQixXQUE5QjtBQUVBLFFBQUksZUFBZTtBQUNqQixpQkFBUyxXQURRO0FBRWpCLGdCQUFRO0FBRlMsS0FBbkI7QUFJQSxRQUFHLE1BQUgsRUFBVztBQUNULHFCQUFhLE1BQWIsR0FBc0IsT0FBdEI7QUFDRCxLQUZELE1BRU87QUFDTCxxQkFBYSxNQUFiLEdBQXNCLElBQXRCO0FBQ0Q7QUFFRCxRQUFHLFFBQVEsR0FBUixDQUFZLGNBQVosS0FBK0IsU0FBbEMsRUFBNkM7QUFDM0MsNkJBQU0sUUFBUSxHQUFSLENBQVksY0FBbEIsRUFBa0M7QUFDaEMsb0JBQVEsTUFEd0I7QUFFaEMsa0JBQU0seUJBQWUsWUFBZjtBQUYwQixTQUFsQyxFQUlHLElBSkgsQ0FJUTtBQUFBLG1CQUFRLFFBQVEsR0FBUixDQUFZLElBQVosQ0FBUjtBQUFBLFNBSlIsRUFLRyxLQUxILENBS1M7QUFBQSxtQkFBTyxRQUFRLEtBQVIsMEJBQXFDLFFBQVEsR0FBUixDQUFZLGNBQWpELGlCQUEyRSxHQUEzRSxDQUFQO0FBQUEsU0FMVDtBQU1ELEtBUEQsTUFPTztBQUNMLGdCQUFRLEtBQVI7QUFDRDtBQUNGO0FBRVEsNEM7Ozs7Ozs7Ozs7O0FDN0JUO0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixZQUFZO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZCQUE2QixxQkFBcUI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRLG1CQUFtQjtBQUMzQixRQUFRLG1CQUFtQjtBQUMzQixTQUFTO0FBQ1QsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsa0ZBQWtGO0FBQ2xGOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMEZBQTBGLFVBQVUsSUFBSSxZQUFZO0FBQ3BILEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBLEVBQUU7O0FBRUY7QUFDQTtBQUNBO0FB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QUM1QyxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSw4QkFBOEIsV0FBVyxtQkFBbUI7QUFDNUQsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLEtBQUs7QUFDaEI7QUFDQSx5QkFBeUIsS0FBSztBQUM5QjtBQUNBOztBQUVBO0FBQ0EsWUFBWSxNQUFNO0FBQ2xCO0FBQ0EseUJBQXlCLE1BQU07QUFDL0I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQUs7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLEtBQUs7QUFDakIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxLQUFLO0FBQ2pCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksS0FBSztBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EsT0FBTyxtQkFBbUI7QUFDMUIsV0FBVyxtQkFBbUI7QUFDOUIsT0FBTyxtQkFBbUI7QUFDMUIsVUFBVSxtQkFBbUI7QUFDN0IsT0FBTyxtQkFBbUI7QUFDMUIsVUFBVSxtQkFBbUI7QUFDN0IsUUFBUSxtQkFBbUI7QUFDM0IsVUFBVSxtQkFBbUI7QUFDN0IsV0FBVztBQUNYLENBQUM7O0FBRUQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLGtCQUFrQjs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxPQUFPLG1CQUFtQjtBQUMxQixVQUFVLG1CQUFtQjtBQUM3QixNQUFNLG1CQUFtQjtBQUN6QixjQUFjLG1CQUFtQjtBQUNqQyxXQUFXLG1CQUFtQjtBQUM5QixTQUFTO0FBQ1QsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdEO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLDZCQUE2QixNQUFNO0FBQ25DO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVILGlFQUFpRTs7QUFFakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBLFVBQVUsbUJBQW1CO0FBQzdCLE9BQU8sbUJBQW1CO0FBQzFCLFdBQVcsbUJBQW1CO0FBQzlCLFlBQVksbUJBQW1CO0FBQy9CLFNBQVM7QUFDVCxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRCxZQUFZO0FBQzlEO0FBQ0EsS0FBSztBQUNMLElBQUk7QUFDSjs7QUFFQTtBQUNBLHVDQUF1QyxZQUFZLG1CQUFtQixZQUFZO0FBQ2xGO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsOERBQThELFlBQVk7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDZEQUE2RCxZQUFZO0FBQ3pFO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxFQUFFO0FBQ0Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNROzs7Ozs7O0FDN2dEUixrQyIsImZpbGUiOiJzZXJ2ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHRmdW5jdGlvbiBob3REb3dubG9hZFVwZGF0ZUNodW5rKGNodW5rSWQpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gXHRcdHZhciBjaHVuayA9IHJlcXVpcmUoXCIuL1wiICsgXCJcIiArIGNodW5rSWQgKyBcIi5cIiArIGhvdEN1cnJlbnRIYXNoICsgXCIuaG90LXVwZGF0ZS5qc1wiKTtcclxuIFx0XHRob3RBZGRVcGRhdGVDaHVuayhjaHVuay5pZCwgY2h1bmsubW9kdWxlcyk7XHJcbiBcdH1cclxuIFx0XHJcbiBcdGZ1bmN0aW9uIGhvdERvd25sb2FkTWFuaWZlc3QoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuIFx0XHR0cnkge1xyXG4gXHRcdFx0dmFyIHVwZGF0ZSA9IHJlcXVpcmUoXCIuL1wiICsgXCJcIiArIGhvdEN1cnJlbnRIYXNoICsgXCIuaG90LXVwZGF0ZS5qc29uXCIpO1xyXG4gXHRcdH0gY2F0Y2goZSkge1xyXG4gXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gXHRcdH1cclxuIFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVwZGF0ZSk7XHJcbiBcdH1cclxuIFx0XHJcbiBcdGZ1bmN0aW9uIGhvdERpc3Bvc2VDaHVuayhjaHVua0lkKSB7IC8vZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gXHRcdGRlbGV0ZSBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF07XHJcbiBcdH1cclxuXG4gXHRcclxuIFx0XHJcbiBcdHZhciBob3RBcHBseU9uVXBkYXRlID0gdHJ1ZTtcclxuIFx0dmFyIGhvdEN1cnJlbnRIYXNoID0gXCI0M2JkZDRkOTI2MzRmOTE3MzJjZVwiOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXHJcbiBcdHZhciBob3RSZXF1ZXN0VGltZW91dCA9IDEwMDAwO1xyXG4gXHR2YXIgaG90Q3VycmVudE1vZHVsZURhdGEgPSB7fTtcclxuIFx0dmFyIGhvdEN1cnJlbnRDaGlsZE1vZHVsZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gXHR2YXIgaG90Q3VycmVudFBhcmVudHMgPSBbXTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gXHR2YXIgaG90Q3VycmVudFBhcmVudHNUZW1wID0gW107IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcclxuIFx0XHJcbiBcdGZ1bmN0aW9uIGhvdENyZWF0ZVJlcXVpcmUobW9kdWxlSWQpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gXHRcdHZhciBtZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xyXG4gXHRcdGlmKCFtZSkgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX187XHJcbiBcdFx0dmFyIGZuID0gZnVuY3Rpb24ocmVxdWVzdCkge1xyXG4gXHRcdFx0aWYobWUuaG90LmFjdGl2ZSkge1xyXG4gXHRcdFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW3JlcXVlc3RdKSB7XHJcbiBcdFx0XHRcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1tyZXF1ZXN0XS5wYXJlbnRzLmluZGV4T2YobW9kdWxlSWQpIDwgMClcclxuIFx0XHRcdFx0XHRcdGluc3RhbGxlZE1vZHVsZXNbcmVxdWVzdF0ucGFyZW50cy5wdXNoKG1vZHVsZUlkKTtcclxuIFx0XHRcdFx0fSBlbHNlIHtcclxuIFx0XHRcdFx0XHRob3RDdXJyZW50UGFyZW50cyA9IFttb2R1bGVJZF07XHJcbiBcdFx0XHRcdFx0aG90Q3VycmVudENoaWxkTW9kdWxlID0gcmVxdWVzdDtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRpZihtZS5jaGlsZHJlbi5pbmRleE9mKHJlcXVlc3QpIDwgMClcclxuIFx0XHRcdFx0XHRtZS5jaGlsZHJlbi5wdXNoKHJlcXVlc3QpO1xyXG4gXHRcdFx0fSBlbHNlIHtcclxuIFx0XHRcdFx0Y29uc29sZS53YXJuKFwiW0hNUl0gdW5leHBlY3RlZCByZXF1aXJlKFwiICsgcmVxdWVzdCArIFwiKSBmcm9tIGRpc3Bvc2VkIG1vZHVsZSBcIiArIG1vZHVsZUlkKTtcclxuIFx0XHRcdFx0aG90Q3VycmVudFBhcmVudHMgPSBbXTtcclxuIFx0XHRcdH1cclxuIFx0XHRcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKHJlcXVlc3QpO1xyXG4gXHRcdH07XHJcbiBcdFx0dmFyIE9iamVjdEZhY3RvcnkgPSBmdW5jdGlvbiBPYmplY3RGYWN0b3J5KG5hbWUpIHtcclxuIFx0XHRcdHJldHVybiB7XHJcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcclxuIFx0XHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuIFx0XHRcdFx0XHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfX1tuYW1lXTtcclxuIFx0XHRcdFx0fSxcclxuIFx0XHRcdFx0c2V0OiBmdW5jdGlvbih2YWx1ZSkge1xyXG4gXHRcdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX19bbmFtZV0gPSB2YWx1ZTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0fTtcclxuIFx0XHR9O1xyXG4gXHRcdGZvcih2YXIgbmFtZSBpbiBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XHJcbiBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoX193ZWJwYWNrX3JlcXVpcmVfXywgbmFtZSkgJiYgbmFtZSAhPT0gXCJlXCIpIHtcclxuIFx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBuYW1lLCBPYmplY3RGYWN0b3J5KG5hbWUpKTtcclxuIFx0XHRcdH1cclxuIFx0XHR9XHJcbiBcdFx0Zm4uZSA9IGZ1bmN0aW9uKGNodW5rSWQpIHtcclxuIFx0XHRcdGlmKGhvdFN0YXR1cyA9PT0gXCJyZWFkeVwiKVxyXG4gXHRcdFx0XHRob3RTZXRTdGF0dXMoXCJwcmVwYXJlXCIpO1xyXG4gXHRcdFx0aG90Q2h1bmtzTG9hZGluZysrO1xyXG4gXHRcdFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZShjaHVua0lkKS50aGVuKGZpbmlzaENodW5rTG9hZGluZywgZnVuY3Rpb24oZXJyKSB7XHJcbiBcdFx0XHRcdGZpbmlzaENodW5rTG9hZGluZygpO1xyXG4gXHRcdFx0XHR0aHJvdyBlcnI7XHJcbiBcdFx0XHR9KTtcclxuIFx0XHJcbiBcdFx0XHRmdW5jdGlvbiBmaW5pc2hDaHVua0xvYWRpbmcoKSB7XHJcbiBcdFx0XHRcdGhvdENodW5rc0xvYWRpbmctLTtcclxuIFx0XHRcdFx0aWYoaG90U3RhdHVzID09PSBcInByZXBhcmVcIikge1xyXG4gXHRcdFx0XHRcdGlmKCFob3RXYWl0aW5nRmlsZXNNYXBbY2h1bmtJZF0pIHtcclxuIFx0XHRcdFx0XHRcdGhvdEVuc3VyZVVwZGF0ZUNodW5rKGNodW5rSWQpO1xyXG4gXHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0XHRpZihob3RDaHVua3NMb2FkaW5nID09PSAwICYmIGhvdFdhaXRpbmdGaWxlcyA9PT0gMCkge1xyXG4gXHRcdFx0XHRcdFx0aG90VXBkYXRlRG93bmxvYWRlZCgpO1xyXG4gXHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0fVxyXG4gXHRcdH07XHJcbiBcdFx0cmV0dXJuIGZuO1xyXG4gXHR9XHJcbiBcdFxyXG4gXHRmdW5jdGlvbiBob3RDcmVhdGVNb2R1bGUobW9kdWxlSWQpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gXHRcdHZhciBob3QgPSB7XHJcbiBcdFx0XHQvLyBwcml2YXRlIHN0dWZmXHJcbiBcdFx0XHRfYWNjZXB0ZWREZXBlbmRlbmNpZXM6IHt9LFxyXG4gXHRcdFx0X2RlY2xpbmVkRGVwZW5kZW5jaWVzOiB7fSxcclxuIFx0XHRcdF9zZWxmQWNjZXB0ZWQ6IGZhbHNlLFxyXG4gXHRcdFx0X3NlbGZEZWNsaW5lZDogZmFsc2UsXHJcbiBcdFx0XHRfZGlzcG9zZUhhbmRsZXJzOiBbXSxcclxuIFx0XHRcdF9tYWluOiBob3RDdXJyZW50Q2hpbGRNb2R1bGUgIT09IG1vZHVsZUlkLFxyXG4gXHRcclxuIFx0XHRcdC8vIE1vZHVsZSBBUElcclxuIFx0XHRcdGFjdGl2ZTogdHJ1ZSxcclxuIFx0XHRcdGFjY2VwdDogZnVuY3Rpb24oZGVwLCBjYWxsYmFjaykge1xyXG4gXHRcdFx0XHRpZih0eXBlb2YgZGVwID09PSBcInVuZGVmaW5lZFwiKVxyXG4gXHRcdFx0XHRcdGhvdC5fc2VsZkFjY2VwdGVkID0gdHJ1ZTtcclxuIFx0XHRcdFx0ZWxzZSBpZih0eXBlb2YgZGVwID09PSBcImZ1bmN0aW9uXCIpXHJcbiBcdFx0XHRcdFx0aG90Ll9zZWxmQWNjZXB0ZWQgPSBkZXA7XHJcbiBcdFx0XHRcdGVsc2UgaWYodHlwZW9mIGRlcCA9PT0gXCJvYmplY3RcIilcclxuIFx0XHRcdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgZGVwLmxlbmd0aDsgaSsrKVxyXG4gXHRcdFx0XHRcdFx0aG90Ll9hY2NlcHRlZERlcGVuZGVuY2llc1tkZXBbaV1dID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7fTtcclxuIFx0XHRcdFx0ZWxzZVxyXG4gXHRcdFx0XHRcdGhvdC5fYWNjZXB0ZWREZXBlbmRlbmNpZXNbZGVwXSA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCkge307XHJcbiBcdFx0XHR9LFxyXG4gXHRcdFx0ZGVjbGluZTogZnVuY3Rpb24oZGVwKSB7XHJcbiBcdFx0XHRcdGlmKHR5cGVvZiBkZXAgPT09IFwidW5kZWZpbmVkXCIpXHJcbiBcdFx0XHRcdFx0aG90Ll9zZWxmRGVjbGluZWQgPSB0cnVlO1xyXG4gXHRcdFx0XHRlbHNlIGlmKHR5cGVvZiBkZXAgPT09IFwib2JqZWN0XCIpXHJcbiBcdFx0XHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IGRlcC5sZW5ndGg7IGkrKylcclxuIFx0XHRcdFx0XHRcdGhvdC5fZGVjbGluZWREZXBlbmRlbmNpZXNbZGVwW2ldXSA9IHRydWU7XHJcbiBcdFx0XHRcdGVsc2VcclxuIFx0XHRcdFx0XHRob3QuX2RlY2xpbmVkRGVwZW5kZW5jaWVzW2RlcF0gPSB0cnVlO1xyXG4gXHRcdFx0fSxcclxuIFx0XHRcdGRpc3Bvc2U6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XHJcbiBcdFx0XHRcdGhvdC5fZGlzcG9zZUhhbmRsZXJzLnB1c2goY2FsbGJhY2spO1xyXG4gXHRcdFx0fSxcclxuIFx0XHRcdGFkZERpc3Bvc2VIYW5kbGVyOiBmdW5jdGlvbihjYWxsYmFjaykge1xyXG4gXHRcdFx0XHRob3QuX2Rpc3Bvc2VIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTtcclxuIFx0XHRcdH0sXHJcbiBcdFx0XHRyZW1vdmVEaXNwb3NlSGFuZGxlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcclxuIFx0XHRcdFx0dmFyIGlkeCA9IGhvdC5fZGlzcG9zZUhhbmRsZXJzLmluZGV4T2YoY2FsbGJhY2spO1xyXG4gXHRcdFx0XHRpZihpZHggPj0gMCkgaG90Ll9kaXNwb3NlSGFuZGxlcnMuc3BsaWNlKGlkeCwgMSk7XHJcbiBcdFx0XHR9LFxyXG4gXHRcclxuIFx0XHRcdC8vIE1hbmFnZW1lbnQgQVBJXHJcbiBcdFx0XHRjaGVjazogaG90Q2hlY2ssXHJcbiBcdFx0XHRhcHBseTogaG90QXBwbHksXHJcbiBcdFx0XHRzdGF0dXM6IGZ1bmN0aW9uKGwpIHtcclxuIFx0XHRcdFx0aWYoIWwpIHJldHVybiBob3RTdGF0dXM7XHJcbiBcdFx0XHRcdGhvdFN0YXR1c0hhbmRsZXJzLnB1c2gobCk7XHJcbiBcdFx0XHR9LFxyXG4gXHRcdFx0YWRkU3RhdHVzSGFuZGxlcjogZnVuY3Rpb24obCkge1xyXG4gXHRcdFx0XHRob3RTdGF0dXNIYW5kbGVycy5wdXNoKGwpO1xyXG4gXHRcdFx0fSxcclxuIFx0XHRcdHJlbW92ZVN0YXR1c0hhbmRsZXI6IGZ1bmN0aW9uKGwpIHtcclxuIFx0XHRcdFx0dmFyIGlkeCA9IGhvdFN0YXR1c0hhbmRsZXJzLmluZGV4T2YobCk7XHJcbiBcdFx0XHRcdGlmKGlkeCA+PSAwKSBob3RTdGF0dXNIYW5kbGVycy5zcGxpY2UoaWR4LCAxKTtcclxuIFx0XHRcdH0sXHJcbiBcdFxyXG4gXHRcdFx0Ly9pbmhlcml0IGZyb20gcHJldmlvdXMgZGlzcG9zZSBjYWxsXHJcbiBcdFx0XHRkYXRhOiBob3RDdXJyZW50TW9kdWxlRGF0YVttb2R1bGVJZF1cclxuIFx0XHR9O1xyXG4gXHRcdGhvdEN1cnJlbnRDaGlsZE1vZHVsZSA9IHVuZGVmaW5lZDtcclxuIFx0XHRyZXR1cm4gaG90O1xyXG4gXHR9XHJcbiBcdFxyXG4gXHR2YXIgaG90U3RhdHVzSGFuZGxlcnMgPSBbXTtcclxuIFx0dmFyIGhvdFN0YXR1cyA9IFwiaWRsZVwiO1xyXG4gXHRcclxuIFx0ZnVuY3Rpb24gaG90U2V0U3RhdHVzKG5ld1N0YXR1cykge1xyXG4gXHRcdGhvdFN0YXR1cyA9IG5ld1N0YXR1cztcclxuIFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgaG90U3RhdHVzSGFuZGxlcnMubGVuZ3RoOyBpKyspXHJcbiBcdFx0XHRob3RTdGF0dXNIYW5kbGVyc1tpXS5jYWxsKG51bGwsIG5ld1N0YXR1cyk7XHJcbiBcdH1cclxuIFx0XHJcbiBcdC8vIHdoaWxlIGRvd25sb2FkaW5nXHJcbiBcdHZhciBob3RXYWl0aW5nRmlsZXMgPSAwO1xyXG4gXHR2YXIgaG90Q2h1bmtzTG9hZGluZyA9IDA7XHJcbiBcdHZhciBob3RXYWl0aW5nRmlsZXNNYXAgPSB7fTtcclxuIFx0dmFyIGhvdFJlcXVlc3RlZEZpbGVzTWFwID0ge307XHJcbiBcdHZhciBob3RBdmFpbGFibGVGaWxlc01hcCA9IHt9O1xyXG4gXHR2YXIgaG90RGVmZXJyZWQ7XHJcbiBcdFxyXG4gXHQvLyBUaGUgdXBkYXRlIGluZm9cclxuIFx0dmFyIGhvdFVwZGF0ZSwgaG90VXBkYXRlTmV3SGFzaDtcclxuIFx0XHJcbiBcdGZ1bmN0aW9uIHRvTW9kdWxlSWQoaWQpIHtcclxuIFx0XHR2YXIgaXNOdW1iZXIgPSAoK2lkKSArIFwiXCIgPT09IGlkO1xyXG4gXHRcdHJldHVybiBpc051bWJlciA/ICtpZCA6IGlkO1xyXG4gXHR9XHJcbiBcdFxyXG4gXHRmdW5jdGlvbiBob3RDaGVjayhhcHBseSkge1xyXG4gXHRcdGlmKGhvdFN0YXR1cyAhPT0gXCJpZGxlXCIpIHRocm93IG5ldyBFcnJvcihcImNoZWNrKCkgaXMgb25seSBhbGxvd2VkIGluIGlkbGUgc3RhdHVzXCIpO1xyXG4gXHRcdGhvdEFwcGx5T25VcGRhdGUgPSBhcHBseTtcclxuIFx0XHRob3RTZXRTdGF0dXMoXCJjaGVja1wiKTtcclxuIFx0XHRyZXR1cm4gaG90RG93bmxvYWRNYW5pZmVzdChob3RSZXF1ZXN0VGltZW91dCkudGhlbihmdW5jdGlvbih1cGRhdGUpIHtcclxuIFx0XHRcdGlmKCF1cGRhdGUpIHtcclxuIFx0XHRcdFx0aG90U2V0U3RhdHVzKFwiaWRsZVwiKTtcclxuIFx0XHRcdFx0cmV0dXJuIG51bGw7XHJcbiBcdFx0XHR9XHJcbiBcdFx0XHRob3RSZXF1ZXN0ZWRGaWxlc01hcCA9IHt9O1xyXG4gXHRcdFx0aG90V2FpdGluZ0ZpbGVzTWFwID0ge307XHJcbiBcdFx0XHRob3RBdmFpbGFibGVGaWxlc01hcCA9IHVwZGF0ZS5jO1xyXG4gXHRcdFx0aG90VXBkYXRlTmV3SGFzaCA9IHVwZGF0ZS5oO1xyXG4gXHRcclxuIFx0XHRcdGhvdFNldFN0YXR1cyhcInByZXBhcmVcIik7XHJcbiBcdFx0XHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xyXG4gXHRcdFx0XHRob3REZWZlcnJlZCA9IHtcclxuIFx0XHRcdFx0XHRyZXNvbHZlOiByZXNvbHZlLFxyXG4gXHRcdFx0XHRcdHJlamVjdDogcmVqZWN0XHJcbiBcdFx0XHRcdH07XHJcbiBcdFx0XHR9KTtcclxuIFx0XHRcdGhvdFVwZGF0ZSA9IHt9O1xyXG4gXHRcdFx0dmFyIGNodW5rSWQgPSAwO1xyXG4gXHRcdFx0eyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWxvbmUtYmxvY2tzXHJcbiBcdFx0XHRcdC8qZ2xvYmFscyBjaHVua0lkICovXHJcbiBcdFx0XHRcdGhvdEVuc3VyZVVwZGF0ZUNodW5rKGNodW5rSWQpO1xyXG4gXHRcdFx0fVxyXG4gXHRcdFx0aWYoaG90U3RhdHVzID09PSBcInByZXBhcmVcIiAmJiBob3RDaHVua3NMb2FkaW5nID09PSAwICYmIGhvdFdhaXRpbmdGaWxlcyA9PT0gMCkge1xyXG4gXHRcdFx0XHRob3RVcGRhdGVEb3dubG9hZGVkKCk7XHJcbiBcdFx0XHR9XHJcbiBcdFx0XHRyZXR1cm4gcHJvbWlzZTtcclxuIFx0XHR9KTtcclxuIFx0fVxyXG4gXHRcclxuIFx0ZnVuY3Rpb24gaG90QWRkVXBkYXRlQ2h1bmsoY2h1bmtJZCwgbW9yZU1vZHVsZXMpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gXHRcdGlmKCFob3RBdmFpbGFibGVGaWxlc01hcFtjaHVua0lkXSB8fCAhaG90UmVxdWVzdGVkRmlsZXNNYXBbY2h1bmtJZF0pXHJcbiBcdFx0XHRyZXR1cm47XHJcbiBcdFx0aG90UmVxdWVzdGVkRmlsZXNNYXBbY2h1bmtJZF0gPSBmYWxzZTtcclxuIFx0XHRmb3IodmFyIG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XHJcbiBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xyXG4gXHRcdFx0XHRob3RVcGRhdGVbbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xyXG4gXHRcdFx0fVxyXG4gXHRcdH1cclxuIFx0XHRpZigtLWhvdFdhaXRpbmdGaWxlcyA9PT0gMCAmJiBob3RDaHVua3NMb2FkaW5nID09PSAwKSB7XHJcbiBcdFx0XHRob3RVcGRhdGVEb3dubG9hZGVkKCk7XHJcbiBcdFx0fVxyXG4gXHR9XHJcbiBcdFxyXG4gXHRmdW5jdGlvbiBob3RFbnN1cmVVcGRhdGVDaHVuayhjaHVua0lkKSB7XHJcbiBcdFx0aWYoIWhvdEF2YWlsYWJsZUZpbGVzTWFwW2NodW5rSWRdKSB7XHJcbiBcdFx0XHRob3RXYWl0aW5nRmlsZXNNYXBbY2h1bmtJZF0gPSB0cnVlO1xyXG4gXHRcdH0gZWxzZSB7XHJcbiBcdFx0XHRob3RSZXF1ZXN0ZWRGaWxlc01hcFtjaHVua0lkXSA9IHRydWU7XHJcbiBcdFx0XHRob3RXYWl0aW5nRmlsZXMrKztcclxuIFx0XHRcdGhvdERvd25sb2FkVXBkYXRlQ2h1bmsoY2h1bmtJZCk7XHJcbiBcdFx0fVxyXG4gXHR9XHJcbiBcdFxyXG4gXHRmdW5jdGlvbiBob3RVcGRhdGVEb3dubG9hZGVkKCkge1xyXG4gXHRcdGhvdFNldFN0YXR1cyhcInJlYWR5XCIpO1xyXG4gXHRcdHZhciBkZWZlcnJlZCA9IGhvdERlZmVycmVkO1xyXG4gXHRcdGhvdERlZmVycmVkID0gbnVsbDtcclxuIFx0XHRpZighZGVmZXJyZWQpIHJldHVybjtcclxuIFx0XHRpZihob3RBcHBseU9uVXBkYXRlKSB7XHJcbiBcdFx0XHQvLyBXcmFwIGRlZmVycmVkIG9iamVjdCBpbiBQcm9taXNlIHRvIG1hcmsgaXQgYXMgYSB3ZWxsLWhhbmRsZWQgUHJvbWlzZSB0b1xyXG4gXHRcdFx0Ly8gYXZvaWQgdHJpZ2dlcmluZyB1bmNhdWdodCBleGNlcHRpb24gd2FybmluZyBpbiBDaHJvbWUuXHJcbiBcdFx0XHQvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDY1NjY2XHJcbiBcdFx0XHRQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCkge1xyXG4gXHRcdFx0XHRyZXR1cm4gaG90QXBwbHkoaG90QXBwbHlPblVwZGF0ZSk7XHJcbiBcdFx0XHR9KS50aGVuKFxyXG4gXHRcdFx0XHRmdW5jdGlvbihyZXN1bHQpIHtcclxuIFx0XHRcdFx0XHRkZWZlcnJlZC5yZXNvbHZlKHJlc3VsdCk7XHJcbiBcdFx0XHRcdH0sXHJcbiBcdFx0XHRcdGZ1bmN0aW9uKGVycikge1xyXG4gXHRcdFx0XHRcdGRlZmVycmVkLnJlamVjdChlcnIpO1xyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHQpO1xyXG4gXHRcdH0gZWxzZSB7XHJcbiBcdFx0XHR2YXIgb3V0ZGF0ZWRNb2R1bGVzID0gW107XHJcbiBcdFx0XHRmb3IodmFyIGlkIGluIGhvdFVwZGF0ZSkge1xyXG4gXHRcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaG90VXBkYXRlLCBpZCkpIHtcclxuIFx0XHRcdFx0XHRvdXRkYXRlZE1vZHVsZXMucHVzaCh0b01vZHVsZUlkKGlkKSk7XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdH1cclxuIFx0XHRcdGRlZmVycmVkLnJlc29sdmUob3V0ZGF0ZWRNb2R1bGVzKTtcclxuIFx0XHR9XHJcbiBcdH1cclxuIFx0XHJcbiBcdGZ1bmN0aW9uIGhvdEFwcGx5KG9wdGlvbnMpIHtcclxuIFx0XHRpZihob3RTdGF0dXMgIT09IFwicmVhZHlcIikgdGhyb3cgbmV3IEVycm9yKFwiYXBwbHkoKSBpcyBvbmx5IGFsbG93ZWQgaW4gcmVhZHkgc3RhdHVzXCIpO1xyXG4gXHRcdG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gXHRcclxuIFx0XHR2YXIgY2I7XHJcbiBcdFx0dmFyIGk7XHJcbiBcdFx0dmFyIGo7XHJcbiBcdFx0dmFyIG1vZHVsZTtcclxuIFx0XHR2YXIgbW9kdWxlSWQ7XHJcbiBcdFxyXG4gXHRcdGZ1bmN0aW9uIGdldEFmZmVjdGVkU3R1ZmYodXBkYXRlTW9kdWxlSWQpIHtcclxuIFx0XHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbdXBkYXRlTW9kdWxlSWRdO1xyXG4gXHRcdFx0dmFyIG91dGRhdGVkRGVwZW5kZW5jaWVzID0ge307XHJcbiBcdFxyXG4gXHRcdFx0dmFyIHF1ZXVlID0gb3V0ZGF0ZWRNb2R1bGVzLnNsaWNlKCkubWFwKGZ1bmN0aW9uKGlkKSB7XHJcbiBcdFx0XHRcdHJldHVybiB7XHJcbiBcdFx0XHRcdFx0Y2hhaW46IFtpZF0sXHJcbiBcdFx0XHRcdFx0aWQ6IGlkXHJcbiBcdFx0XHRcdH07XHJcbiBcdFx0XHR9KTtcclxuIFx0XHRcdHdoaWxlKHF1ZXVlLmxlbmd0aCA+IDApIHtcclxuIFx0XHRcdFx0dmFyIHF1ZXVlSXRlbSA9IHF1ZXVlLnBvcCgpO1xyXG4gXHRcdFx0XHR2YXIgbW9kdWxlSWQgPSBxdWV1ZUl0ZW0uaWQ7XHJcbiBcdFx0XHRcdHZhciBjaGFpbiA9IHF1ZXVlSXRlbS5jaGFpbjtcclxuIFx0XHRcdFx0bW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XHJcbiBcdFx0XHRcdGlmKCFtb2R1bGUgfHwgbW9kdWxlLmhvdC5fc2VsZkFjY2VwdGVkKVxyXG4gXHRcdFx0XHRcdGNvbnRpbnVlO1xyXG4gXHRcdFx0XHRpZihtb2R1bGUuaG90Ll9zZWxmRGVjbGluZWQpIHtcclxuIFx0XHRcdFx0XHRyZXR1cm4ge1xyXG4gXHRcdFx0XHRcdFx0dHlwZTogXCJzZWxmLWRlY2xpbmVkXCIsXHJcbiBcdFx0XHRcdFx0XHRjaGFpbjogY2hhaW4sXHJcbiBcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWRcclxuIFx0XHRcdFx0XHR9O1xyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHRcdGlmKG1vZHVsZS5ob3QuX21haW4pIHtcclxuIFx0XHRcdFx0XHRyZXR1cm4ge1xyXG4gXHRcdFx0XHRcdFx0dHlwZTogXCJ1bmFjY2VwdGVkXCIsXHJcbiBcdFx0XHRcdFx0XHRjaGFpbjogY2hhaW4sXHJcbiBcdFx0XHRcdFx0XHRtb2R1bGVJZDogbW9kdWxlSWRcclxuIFx0XHRcdFx0XHR9O1xyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBtb2R1bGUucGFyZW50cy5sZW5ndGg7IGkrKykge1xyXG4gXHRcdFx0XHRcdHZhciBwYXJlbnRJZCA9IG1vZHVsZS5wYXJlbnRzW2ldO1xyXG4gXHRcdFx0XHRcdHZhciBwYXJlbnQgPSBpbnN0YWxsZWRNb2R1bGVzW3BhcmVudElkXTtcclxuIFx0XHRcdFx0XHRpZighcGFyZW50KSBjb250aW51ZTtcclxuIFx0XHRcdFx0XHRpZihwYXJlbnQuaG90Ll9kZWNsaW5lZERlcGVuZGVuY2llc1ttb2R1bGVJZF0pIHtcclxuIFx0XHRcdFx0XHRcdHJldHVybiB7XHJcbiBcdFx0XHRcdFx0XHRcdHR5cGU6IFwiZGVjbGluZWRcIixcclxuIFx0XHRcdFx0XHRcdFx0Y2hhaW46IGNoYWluLmNvbmNhdChbcGFyZW50SWRdKSxcclxuIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxyXG4gXHRcdFx0XHRcdFx0XHRwYXJlbnRJZDogcGFyZW50SWRcclxuIFx0XHRcdFx0XHRcdH07XHJcbiBcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRcdGlmKG91dGRhdGVkTW9kdWxlcy5pbmRleE9mKHBhcmVudElkKSA+PSAwKSBjb250aW51ZTtcclxuIFx0XHRcdFx0XHRpZihwYXJlbnQuaG90Ll9hY2NlcHRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF0pIHtcclxuIFx0XHRcdFx0XHRcdGlmKCFvdXRkYXRlZERlcGVuZGVuY2llc1twYXJlbnRJZF0pXHJcbiBcdFx0XHRcdFx0XHRcdG91dGRhdGVkRGVwZW5kZW5jaWVzW3BhcmVudElkXSA9IFtdO1xyXG4gXHRcdFx0XHRcdFx0YWRkQWxsVG9TZXQob3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdLCBbbW9kdWxlSWRdKTtcclxuIFx0XHRcdFx0XHRcdGNvbnRpbnVlO1xyXG4gXHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0XHRkZWxldGUgb3V0ZGF0ZWREZXBlbmRlbmNpZXNbcGFyZW50SWRdO1xyXG4gXHRcdFx0XHRcdG91dGRhdGVkTW9kdWxlcy5wdXNoKHBhcmVudElkKTtcclxuIFx0XHRcdFx0XHRxdWV1ZS5wdXNoKHtcclxuIFx0XHRcdFx0XHRcdGNoYWluOiBjaGFpbi5jb25jYXQoW3BhcmVudElkXSksXHJcbiBcdFx0XHRcdFx0XHRpZDogcGFyZW50SWRcclxuIFx0XHRcdFx0XHR9KTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0fVxyXG4gXHRcclxuIFx0XHRcdHJldHVybiB7XHJcbiBcdFx0XHRcdHR5cGU6IFwiYWNjZXB0ZWRcIixcclxuIFx0XHRcdFx0bW9kdWxlSWQ6IHVwZGF0ZU1vZHVsZUlkLFxyXG4gXHRcdFx0XHRvdXRkYXRlZE1vZHVsZXM6IG91dGRhdGVkTW9kdWxlcyxcclxuIFx0XHRcdFx0b3V0ZGF0ZWREZXBlbmRlbmNpZXM6IG91dGRhdGVkRGVwZW5kZW5jaWVzXHJcbiBcdFx0XHR9O1xyXG4gXHRcdH1cclxuIFx0XHJcbiBcdFx0ZnVuY3Rpb24gYWRkQWxsVG9TZXQoYSwgYikge1xyXG4gXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcclxuIFx0XHRcdFx0dmFyIGl0ZW0gPSBiW2ldO1xyXG4gXHRcdFx0XHRpZihhLmluZGV4T2YoaXRlbSkgPCAwKVxyXG4gXHRcdFx0XHRcdGEucHVzaChpdGVtKTtcclxuIFx0XHRcdH1cclxuIFx0XHR9XHJcbiBcdFxyXG4gXHRcdC8vIGF0IGJlZ2luIGFsbCB1cGRhdGVzIG1vZHVsZXMgYXJlIG91dGRhdGVkXHJcbiBcdFx0Ly8gdGhlIFwib3V0ZGF0ZWRcIiBzdGF0dXMgY2FuIHByb3BhZ2F0ZSB0byBwYXJlbnRzIGlmIHRoZXkgZG9uJ3QgYWNjZXB0IHRoZSBjaGlsZHJlblxyXG4gXHRcdHZhciBvdXRkYXRlZERlcGVuZGVuY2llcyA9IHt9O1xyXG4gXHRcdHZhciBvdXRkYXRlZE1vZHVsZXMgPSBbXTtcclxuIFx0XHR2YXIgYXBwbGllZFVwZGF0ZSA9IHt9O1xyXG4gXHRcclxuIFx0XHR2YXIgd2FyblVuZXhwZWN0ZWRSZXF1aXJlID0gZnVuY3Rpb24gd2FyblVuZXhwZWN0ZWRSZXF1aXJlKCkge1xyXG4gXHRcdFx0Y29uc29sZS53YXJuKFwiW0hNUl0gdW5leHBlY3RlZCByZXF1aXJlKFwiICsgcmVzdWx0Lm1vZHVsZUlkICsgXCIpIHRvIGRpc3Bvc2VkIG1vZHVsZVwiKTtcclxuIFx0XHR9O1xyXG4gXHRcclxuIFx0XHRmb3IodmFyIGlkIGluIGhvdFVwZGF0ZSkge1xyXG4gXHRcdFx0aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGhvdFVwZGF0ZSwgaWQpKSB7XHJcbiBcdFx0XHRcdG1vZHVsZUlkID0gdG9Nb2R1bGVJZChpZCk7XHJcbiBcdFx0XHRcdHZhciByZXN1bHQ7XHJcbiBcdFx0XHRcdGlmKGhvdFVwZGF0ZVtpZF0pIHtcclxuIFx0XHRcdFx0XHRyZXN1bHQgPSBnZXRBZmZlY3RlZFN0dWZmKG1vZHVsZUlkKTtcclxuIFx0XHRcdFx0fSBlbHNlIHtcclxuIFx0XHRcdFx0XHRyZXN1bHQgPSB7XHJcbiBcdFx0XHRcdFx0XHR0eXBlOiBcImRpc3Bvc2VkXCIsXHJcbiBcdFx0XHRcdFx0XHRtb2R1bGVJZDogaWRcclxuIFx0XHRcdFx0XHR9O1xyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHRcdHZhciBhYm9ydEVycm9yID0gZmFsc2U7XHJcbiBcdFx0XHRcdHZhciBkb0FwcGx5ID0gZmFsc2U7XHJcbiBcdFx0XHRcdHZhciBkb0Rpc3Bvc2UgPSBmYWxzZTtcclxuIFx0XHRcdFx0dmFyIGNoYWluSW5mbyA9IFwiXCI7XHJcbiBcdFx0XHRcdGlmKHJlc3VsdC5jaGFpbikge1xyXG4gXHRcdFx0XHRcdGNoYWluSW5mbyA9IFwiXFxuVXBkYXRlIHByb3BhZ2F0aW9uOiBcIiArIHJlc3VsdC5jaGFpbi5qb2luKFwiIC0+IFwiKTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRzd2l0Y2gocmVzdWx0LnR5cGUpIHtcclxuIFx0XHRcdFx0XHRjYXNlIFwic2VsZi1kZWNsaW5lZFwiOlxyXG4gXHRcdFx0XHRcdFx0aWYob3B0aW9ucy5vbkRlY2xpbmVkKVxyXG4gXHRcdFx0XHRcdFx0XHRvcHRpb25zLm9uRGVjbGluZWQocmVzdWx0KTtcclxuIFx0XHRcdFx0XHRcdGlmKCFvcHRpb25zLmlnbm9yZURlY2xpbmVkKVxyXG4gXHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFwiQWJvcnRlZCBiZWNhdXNlIG9mIHNlbGYgZGVjbGluZTogXCIgKyByZXN1bHQubW9kdWxlSWQgKyBjaGFpbkluZm8pO1xyXG4gXHRcdFx0XHRcdFx0YnJlYWs7XHJcbiBcdFx0XHRcdFx0Y2FzZSBcImRlY2xpbmVkXCI6XHJcbiBcdFx0XHRcdFx0XHRpZihvcHRpb25zLm9uRGVjbGluZWQpXHJcbiBcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25EZWNsaW5lZChyZXN1bHQpO1xyXG4gXHRcdFx0XHRcdFx0aWYoIW9wdGlvbnMuaWdub3JlRGVjbGluZWQpXHJcbiBcdFx0XHRcdFx0XHRcdGFib3J0RXJyb3IgPSBuZXcgRXJyb3IoXCJBYm9ydGVkIGJlY2F1c2Ugb2YgZGVjbGluZWQgZGVwZW5kZW5jeTogXCIgKyByZXN1bHQubW9kdWxlSWQgKyBcIiBpbiBcIiArIHJlc3VsdC5wYXJlbnRJZCArIGNoYWluSW5mbyk7XHJcbiBcdFx0XHRcdFx0XHRicmVhaztcclxuIFx0XHRcdFx0XHRjYXNlIFwidW5hY2NlcHRlZFwiOlxyXG4gXHRcdFx0XHRcdFx0aWYob3B0aW9ucy5vblVuYWNjZXB0ZWQpXHJcbiBcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25VbmFjY2VwdGVkKHJlc3VsdCk7XHJcbiBcdFx0XHRcdFx0XHRpZighb3B0aW9ucy5pZ25vcmVVbmFjY2VwdGVkKVxyXG4gXHRcdFx0XHRcdFx0XHRhYm9ydEVycm9yID0gbmV3IEVycm9yKFwiQWJvcnRlZCBiZWNhdXNlIFwiICsgbW9kdWxlSWQgKyBcIiBpcyBub3QgYWNjZXB0ZWRcIiArIGNoYWluSW5mbyk7XHJcbiBcdFx0XHRcdFx0XHRicmVhaztcclxuIFx0XHRcdFx0XHRjYXNlIFwiYWNjZXB0ZWRcIjpcclxuIFx0XHRcdFx0XHRcdGlmKG9wdGlvbnMub25BY2NlcHRlZClcclxuIFx0XHRcdFx0XHRcdFx0b3B0aW9ucy5vbkFjY2VwdGVkKHJlc3VsdCk7XHJcbiBcdFx0XHRcdFx0XHRkb0FwcGx5ID0gdHJ1ZTtcclxuIFx0XHRcdFx0XHRcdGJyZWFrO1xyXG4gXHRcdFx0XHRcdGNhc2UgXCJkaXNwb3NlZFwiOlxyXG4gXHRcdFx0XHRcdFx0aWYob3B0aW9ucy5vbkRpc3Bvc2VkKVxyXG4gXHRcdFx0XHRcdFx0XHRvcHRpb25zLm9uRGlzcG9zZWQocmVzdWx0KTtcclxuIFx0XHRcdFx0XHRcdGRvRGlzcG9zZSA9IHRydWU7XHJcbiBcdFx0XHRcdFx0XHRicmVhaztcclxuIFx0XHRcdFx0XHRkZWZhdWx0OlxyXG4gXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5leGNlcHRpb24gdHlwZSBcIiArIHJlc3VsdC50eXBlKTtcclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRpZihhYm9ydEVycm9yKSB7XHJcbiBcdFx0XHRcdFx0aG90U2V0U3RhdHVzKFwiYWJvcnRcIik7XHJcbiBcdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGFib3J0RXJyb3IpO1xyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHRcdGlmKGRvQXBwbHkpIHtcclxuIFx0XHRcdFx0XHRhcHBsaWVkVXBkYXRlW21vZHVsZUlkXSA9IGhvdFVwZGF0ZVttb2R1bGVJZF07XHJcbiBcdFx0XHRcdFx0YWRkQWxsVG9TZXQob3V0ZGF0ZWRNb2R1bGVzLCByZXN1bHQub3V0ZGF0ZWRNb2R1bGVzKTtcclxuIFx0XHRcdFx0XHRmb3IobW9kdWxlSWQgaW4gcmVzdWx0Lm91dGRhdGVkRGVwZW5kZW5jaWVzKSB7XHJcbiBcdFx0XHRcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmVzdWx0Lm91dGRhdGVkRGVwZW5kZW5jaWVzLCBtb2R1bGVJZCkpIHtcclxuIFx0XHRcdFx0XHRcdFx0aWYoIW91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXSlcclxuIFx0XHRcdFx0XHRcdFx0XHRvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF0gPSBbXTtcclxuIFx0XHRcdFx0XHRcdFx0YWRkQWxsVG9TZXQob3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdLCByZXN1bHQub3V0ZGF0ZWREZXBlbmRlbmNpZXNbbW9kdWxlSWRdKTtcclxuIFx0XHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdFx0aWYoZG9EaXNwb3NlKSB7XHJcbiBcdFx0XHRcdFx0YWRkQWxsVG9TZXQob3V0ZGF0ZWRNb2R1bGVzLCBbcmVzdWx0Lm1vZHVsZUlkXSk7XHJcbiBcdFx0XHRcdFx0YXBwbGllZFVwZGF0ZVttb2R1bGVJZF0gPSB3YXJuVW5leHBlY3RlZFJlcXVpcmU7XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdH1cclxuIFx0XHR9XHJcbiBcdFxyXG4gXHRcdC8vIFN0b3JlIHNlbGYgYWNjZXB0ZWQgb3V0ZGF0ZWQgbW9kdWxlcyB0byByZXF1aXJlIHRoZW0gbGF0ZXIgYnkgdGhlIG1vZHVsZSBzeXN0ZW1cclxuIFx0XHR2YXIgb3V0ZGF0ZWRTZWxmQWNjZXB0ZWRNb2R1bGVzID0gW107XHJcbiBcdFx0Zm9yKGkgPSAwOyBpIDwgb3V0ZGF0ZWRNb2R1bGVzLmxlbmd0aDsgaSsrKSB7XHJcbiBcdFx0XHRtb2R1bGVJZCA9IG91dGRhdGVkTW9kdWxlc1tpXTtcclxuIFx0XHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdICYmIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmhvdC5fc2VsZkFjY2VwdGVkKVxyXG4gXHRcdFx0XHRvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXMucHVzaCh7XHJcbiBcdFx0XHRcdFx0bW9kdWxlOiBtb2R1bGVJZCxcclxuIFx0XHRcdFx0XHRlcnJvckhhbmRsZXI6IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmhvdC5fc2VsZkFjY2VwdGVkXHJcbiBcdFx0XHRcdH0pO1xyXG4gXHRcdH1cclxuIFx0XHJcbiBcdFx0Ly8gTm93IGluIFwiZGlzcG9zZVwiIHBoYXNlXHJcbiBcdFx0aG90U2V0U3RhdHVzKFwiZGlzcG9zZVwiKTtcclxuIFx0XHRPYmplY3Qua2V5cyhob3RBdmFpbGFibGVGaWxlc01hcCkuZm9yRWFjaChmdW5jdGlvbihjaHVua0lkKSB7XHJcbiBcdFx0XHRpZihob3RBdmFpbGFibGVGaWxlc01hcFtjaHVua0lkXSA9PT0gZmFsc2UpIHtcclxuIFx0XHRcdFx0aG90RGlzcG9zZUNodW5rKGNodW5rSWQpO1xyXG4gXHRcdFx0fVxyXG4gXHRcdH0pO1xyXG4gXHRcclxuIFx0XHR2YXIgaWR4O1xyXG4gXHRcdHZhciBxdWV1ZSA9IG91dGRhdGVkTW9kdWxlcy5zbGljZSgpO1xyXG4gXHRcdHdoaWxlKHF1ZXVlLmxlbmd0aCA+IDApIHtcclxuIFx0XHRcdG1vZHVsZUlkID0gcXVldWUucG9wKCk7XHJcbiBcdFx0XHRtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXTtcclxuIFx0XHRcdGlmKCFtb2R1bGUpIGNvbnRpbnVlO1xyXG4gXHRcclxuIFx0XHRcdHZhciBkYXRhID0ge307XHJcbiBcdFxyXG4gXHRcdFx0Ly8gQ2FsbCBkaXNwb3NlIGhhbmRsZXJzXHJcbiBcdFx0XHR2YXIgZGlzcG9zZUhhbmRsZXJzID0gbW9kdWxlLmhvdC5fZGlzcG9zZUhhbmRsZXJzO1xyXG4gXHRcdFx0Zm9yKGogPSAwOyBqIDwgZGlzcG9zZUhhbmRsZXJzLmxlbmd0aDsgaisrKSB7XHJcbiBcdFx0XHRcdGNiID0gZGlzcG9zZUhhbmRsZXJzW2pdO1xyXG4gXHRcdFx0XHRjYihkYXRhKTtcclxuIFx0XHRcdH1cclxuIFx0XHRcdGhvdEN1cnJlbnRNb2R1bGVEYXRhW21vZHVsZUlkXSA9IGRhdGE7XHJcbiBcdFxyXG4gXHRcdFx0Ly8gZGlzYWJsZSBtb2R1bGUgKHRoaXMgZGlzYWJsZXMgcmVxdWlyZXMgZnJvbSB0aGlzIG1vZHVsZSlcclxuIFx0XHRcdG1vZHVsZS5ob3QuYWN0aXZlID0gZmFsc2U7XHJcbiBcdFxyXG4gXHRcdFx0Ly8gcmVtb3ZlIG1vZHVsZSBmcm9tIGNhY2hlXHJcbiBcdFx0XHRkZWxldGUgaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF07XHJcbiBcdFxyXG4gXHRcdFx0Ly8gd2hlbiBkaXNwb3NpbmcgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIGRpc3Bvc2UgaGFuZGxlclxyXG4gXHRcdFx0ZGVsZXRlIG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXTtcclxuIFx0XHJcbiBcdFx0XHQvLyByZW1vdmUgXCJwYXJlbnRzXCIgcmVmZXJlbmNlcyBmcm9tIGFsbCBjaGlsZHJlblxyXG4gXHRcdFx0Zm9yKGogPSAwOyBqIDwgbW9kdWxlLmNoaWxkcmVuLmxlbmd0aDsgaisrKSB7XHJcbiBcdFx0XHRcdHZhciBjaGlsZCA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlLmNoaWxkcmVuW2pdXTtcclxuIFx0XHRcdFx0aWYoIWNoaWxkKSBjb250aW51ZTtcclxuIFx0XHRcdFx0aWR4ID0gY2hpbGQucGFyZW50cy5pbmRleE9mKG1vZHVsZUlkKTtcclxuIFx0XHRcdFx0aWYoaWR4ID49IDApIHtcclxuIFx0XHRcdFx0XHRjaGlsZC5wYXJlbnRzLnNwbGljZShpZHgsIDEpO1xyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHR9XHJcbiBcdFx0fVxyXG4gXHRcclxuIFx0XHQvLyByZW1vdmUgb3V0ZGF0ZWQgZGVwZW5kZW5jeSBmcm9tIG1vZHVsZSBjaGlsZHJlblxyXG4gXHRcdHZhciBkZXBlbmRlbmN5O1xyXG4gXHRcdHZhciBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcztcclxuIFx0XHRmb3IobW9kdWxlSWQgaW4gb3V0ZGF0ZWREZXBlbmRlbmNpZXMpIHtcclxuIFx0XHRcdGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvdXRkYXRlZERlcGVuZGVuY2llcywgbW9kdWxlSWQpKSB7XHJcbiBcdFx0XHRcdG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdO1xyXG4gXHRcdFx0XHRpZihtb2R1bGUpIHtcclxuIFx0XHRcdFx0XHRtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcyA9IG91dGRhdGVkRGVwZW5kZW5jaWVzW21vZHVsZUlkXTtcclxuIFx0XHRcdFx0XHRmb3IoaiA9IDA7IGogPCBtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcy5sZW5ndGg7IGorKykge1xyXG4gXHRcdFx0XHRcdFx0ZGVwZW5kZW5jeSA9IG1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzW2pdO1xyXG4gXHRcdFx0XHRcdFx0aWR4ID0gbW9kdWxlLmNoaWxkcmVuLmluZGV4T2YoZGVwZW5kZW5jeSk7XHJcbiBcdFx0XHRcdFx0XHRpZihpZHggPj0gMCkgbW9kdWxlLmNoaWxkcmVuLnNwbGljZShpZHgsIDEpO1xyXG4gXHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0fVxyXG4gXHRcdFx0fVxyXG4gXHRcdH1cclxuIFx0XHJcbiBcdFx0Ly8gTm90IGluIFwiYXBwbHlcIiBwaGFzZVxyXG4gXHRcdGhvdFNldFN0YXR1cyhcImFwcGx5XCIpO1xyXG4gXHRcclxuIFx0XHRob3RDdXJyZW50SGFzaCA9IGhvdFVwZGF0ZU5ld0hhc2g7XHJcbiBcdFxyXG4gXHRcdC8vIGluc2VydCBuZXcgY29kZVxyXG4gXHRcdGZvcihtb2R1bGVJZCBpbiBhcHBsaWVkVXBkYXRlKSB7XHJcbiBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXBwbGllZFVwZGF0ZSwgbW9kdWxlSWQpKSB7XHJcbiBcdFx0XHRcdG1vZHVsZXNbbW9kdWxlSWRdID0gYXBwbGllZFVwZGF0ZVttb2R1bGVJZF07XHJcbiBcdFx0XHR9XHJcbiBcdFx0fVxyXG4gXHRcclxuIFx0XHQvLyBjYWxsIGFjY2VwdCBoYW5kbGVyc1xyXG4gXHRcdHZhciBlcnJvciA9IG51bGw7XHJcbiBcdFx0Zm9yKG1vZHVsZUlkIGluIG91dGRhdGVkRGVwZW5kZW5jaWVzKSB7XHJcbiBcdFx0XHRpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3V0ZGF0ZWREZXBlbmRlbmNpZXMsIG1vZHVsZUlkKSkge1xyXG4gXHRcdFx0XHRtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXTtcclxuIFx0XHRcdFx0aWYobW9kdWxlKSB7XHJcbiBcdFx0XHRcdFx0bW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXMgPSBvdXRkYXRlZERlcGVuZGVuY2llc1ttb2R1bGVJZF07XHJcbiBcdFx0XHRcdFx0dmFyIGNhbGxiYWNrcyA9IFtdO1xyXG4gXHRcdFx0XHRcdGZvcihpID0gMDsgaSA8IG1vZHVsZU91dGRhdGVkRGVwZW5kZW5jaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiBcdFx0XHRcdFx0XHRkZXBlbmRlbmN5ID0gbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXNbaV07XHJcbiBcdFx0XHRcdFx0XHRjYiA9IG1vZHVsZS5ob3QuX2FjY2VwdGVkRGVwZW5kZW5jaWVzW2RlcGVuZGVuY3ldO1xyXG4gXHRcdFx0XHRcdFx0aWYoY2IpIHtcclxuIFx0XHRcdFx0XHRcdFx0aWYoY2FsbGJhY2tzLmluZGV4T2YoY2IpID49IDApIGNvbnRpbnVlO1xyXG4gXHRcdFx0XHRcdFx0XHRjYWxsYmFja3MucHVzaChjYik7XHJcbiBcdFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHRcdGZvcihpID0gMDsgaSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xyXG4gXHRcdFx0XHRcdFx0Y2IgPSBjYWxsYmFja3NbaV07XHJcbiBcdFx0XHRcdFx0XHR0cnkge1xyXG4gXHRcdFx0XHRcdFx0XHRjYihtb2R1bGVPdXRkYXRlZERlcGVuZGVuY2llcyk7XHJcbiBcdFx0XHRcdFx0XHR9IGNhdGNoKGVycikge1xyXG4gXHRcdFx0XHRcdFx0XHRpZihvcHRpb25zLm9uRXJyb3JlZCkge1xyXG4gXHRcdFx0XHRcdFx0XHRcdG9wdGlvbnMub25FcnJvcmVkKHtcclxuIFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU6IFwiYWNjZXB0LWVycm9yZWRcIixcclxuIFx0XHRcdFx0XHRcdFx0XHRcdG1vZHVsZUlkOiBtb2R1bGVJZCxcclxuIFx0XHRcdFx0XHRcdFx0XHRcdGRlcGVuZGVuY3lJZDogbW9kdWxlT3V0ZGF0ZWREZXBlbmRlbmNpZXNbaV0sXHJcbiBcdFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyXHJcbiBcdFx0XHRcdFx0XHRcdFx0fSk7XHJcbiBcdFx0XHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0XHRcdFx0aWYoIW9wdGlvbnMuaWdub3JlRXJyb3JlZCkge1xyXG4gXHRcdFx0XHRcdFx0XHRcdGlmKCFlcnJvcilcclxuIFx0XHRcdFx0XHRcdFx0XHRcdGVycm9yID0gZXJyO1xyXG4gXHRcdFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0fVxyXG4gXHRcdFx0XHR9XHJcbiBcdFx0XHR9XHJcbiBcdFx0fVxyXG4gXHRcclxuIFx0XHQvLyBMb2FkIHNlbGYgYWNjZXB0ZWQgbW9kdWxlc1xyXG4gXHRcdGZvcihpID0gMDsgaSA8IG91dGRhdGVkU2VsZkFjY2VwdGVkTW9kdWxlcy5sZW5ndGg7IGkrKykge1xyXG4gXHRcdFx0dmFyIGl0ZW0gPSBvdXRkYXRlZFNlbGZBY2NlcHRlZE1vZHVsZXNbaV07XHJcbiBcdFx0XHRtb2R1bGVJZCA9IGl0ZW0ubW9kdWxlO1xyXG4gXHRcdFx0aG90Q3VycmVudFBhcmVudHMgPSBbbW9kdWxlSWRdO1xyXG4gXHRcdFx0dHJ5IHtcclxuIFx0XHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCk7XHJcbiBcdFx0XHR9IGNhdGNoKGVycikge1xyXG4gXHRcdFx0XHRpZih0eXBlb2YgaXRlbS5lcnJvckhhbmRsZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gXHRcdFx0XHRcdHRyeSB7XHJcbiBcdFx0XHRcdFx0XHRpdGVtLmVycm9ySGFuZGxlcihlcnIpO1xyXG4gXHRcdFx0XHRcdH0gY2F0Y2goZXJyMikge1xyXG4gXHRcdFx0XHRcdFx0aWYob3B0aW9ucy5vbkVycm9yZWQpIHtcclxuIFx0XHRcdFx0XHRcdFx0b3B0aW9ucy5vbkVycm9yZWQoe1xyXG4gXHRcdFx0XHRcdFx0XHRcdHR5cGU6IFwic2VsZi1hY2NlcHQtZXJyb3ItaGFuZGxlci1lcnJvcmVkXCIsXHJcbiBcdFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxyXG4gXHRcdFx0XHRcdFx0XHRcdGVycm9yOiBlcnIyLFxyXG4gXHRcdFx0XHRcdFx0XHRcdG9yZ2luYWxFcnJvcjogZXJyLCAvLyBUT0RPIHJlbW92ZSBpbiB3ZWJwYWNrIDRcclxuIFx0XHRcdFx0XHRcdFx0XHRvcmlnaW5hbEVycm9yOiBlcnJcclxuIFx0XHRcdFx0XHRcdFx0fSk7XHJcbiBcdFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0XHRpZighb3B0aW9ucy5pZ25vcmVFcnJvcmVkKSB7XHJcbiBcdFx0XHRcdFx0XHRcdGlmKCFlcnJvcilcclxuIFx0XHRcdFx0XHRcdFx0XHRlcnJvciA9IGVycjI7XHJcbiBcdFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0XHRpZighZXJyb3IpXHJcbiBcdFx0XHRcdFx0XHRcdGVycm9yID0gZXJyO1xyXG4gXHRcdFx0XHRcdH1cclxuIFx0XHRcdFx0fSBlbHNlIHtcclxuIFx0XHRcdFx0XHRpZihvcHRpb25zLm9uRXJyb3JlZCkge1xyXG4gXHRcdFx0XHRcdFx0b3B0aW9ucy5vbkVycm9yZWQoe1xyXG4gXHRcdFx0XHRcdFx0XHR0eXBlOiBcInNlbGYtYWNjZXB0LWVycm9yZWRcIixcclxuIFx0XHRcdFx0XHRcdFx0bW9kdWxlSWQ6IG1vZHVsZUlkLFxyXG4gXHRcdFx0XHRcdFx0XHRlcnJvcjogZXJyXHJcbiBcdFx0XHRcdFx0XHR9KTtcclxuIFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdFx0aWYoIW9wdGlvbnMuaWdub3JlRXJyb3JlZCkge1xyXG4gXHRcdFx0XHRcdFx0aWYoIWVycm9yKVxyXG4gXHRcdFx0XHRcdFx0XHRlcnJvciA9IGVycjtcclxuIFx0XHRcdFx0XHR9XHJcbiBcdFx0XHRcdH1cclxuIFx0XHRcdH1cclxuIFx0XHR9XHJcbiBcdFxyXG4gXHRcdC8vIGhhbmRsZSBlcnJvcnMgaW4gYWNjZXB0IGhhbmRsZXJzIGFuZCBzZWxmIGFjY2VwdGVkIG1vZHVsZSBsb2FkXHJcbiBcdFx0aWYoZXJyb3IpIHtcclxuIFx0XHRcdGhvdFNldFN0YXR1cyhcImZhaWxcIik7XHJcbiBcdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG4gXHRcdH1cclxuIFx0XHJcbiBcdFx0aG90U2V0U3RhdHVzKFwiaWRsZVwiKTtcclxuIFx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xyXG4gXHRcdFx0cmVzb2x2ZShvdXRkYXRlZE1vZHVsZXMpO1xyXG4gXHRcdH0pO1xyXG4gXHR9XHJcblxuIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aG90OiBob3RDcmVhdGVNb2R1bGUobW9kdWxlSWQpLFxuIFx0XHRcdHBhcmVudHM6IChob3RDdXJyZW50UGFyZW50c1RlbXAgPSBob3RDdXJyZW50UGFyZW50cywgaG90Q3VycmVudFBhcmVudHMgPSBbXSwgaG90Q3VycmVudFBhcmVudHNUZW1wKSxcbiBcdFx0XHRjaGlsZHJlbjogW11cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgaG90Q3JlYXRlUmVxdWlyZShtb2R1bGVJZCkpO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBfX3dlYnBhY2tfaGFzaF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmggPSBmdW5jdGlvbigpIHsgcmV0dXJuIGhvdEN1cnJlbnRIYXNoOyB9O1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBob3RDcmVhdGVSZXF1aXJlKDExOCkoX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMTE4KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCA0M2JkZDRkOTI2MzRmOTE3MzJjZSIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInBhdGhcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJwYXRoXCJcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic3RyZWFtXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwic3RyZWFtXCJcbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanNcbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYnVmZmVyXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiYnVmZmVyXCJcbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIHN0b3JlID0gcmVxdWlyZSgnLi9fc2hhcmVkJykoJ3drcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLlN5bWJvbDtcbnZhciBVU0VfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PSAnZnVuY3Rpb24nO1xuXG52YXIgJGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPVxuICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuXG4kZXhwb3J0cy5zdG9yZSA9IHN0b3JlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBEZXRlY3QgRWxlY3Ryb24gcmVuZGVyZXIgcHJvY2Vzcywgd2hpY2ggaXMgbm9kZSwgYnV0IHdlIHNob3VsZFxuICogdHJlYXQgYXMgYSBicm93c2VyLlxuICovXG5cbmlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy50eXBlID09PSAncmVuZGVyZXInKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9icm93c2VyLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbm9kZS5qcycpO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi41LjYnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzXG4vLyBtb2R1bGUgaWQgPSA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZGVwZFxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNyBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciBjYWxsU2l0ZVRvU3RyaW5nID0gcmVxdWlyZSgnLi9saWIvY29tcGF0JykuY2FsbFNpdGVUb1N0cmluZ1xudmFyIGV2ZW50TGlzdGVuZXJDb3VudCA9IHJlcXVpcmUoJy4vbGliL2NvbXBhdCcpLmV2ZW50TGlzdGVuZXJDb3VudFxudmFyIHJlbGF0aXZlID0gcmVxdWlyZSgncGF0aCcpLnJlbGF0aXZlXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXBkXG5cbi8qKlxuICogR2V0IHRoZSBwYXRoIHRvIGJhc2UgZmlsZXMgb24uXG4gKi9cblxudmFyIGJhc2VQYXRoID0gcHJvY2Vzcy5jd2QoKVxuXG4vKipcbiAqIERldGVybWluZSBpZiBuYW1lc3BhY2UgaXMgY29udGFpbmVkIGluIHRoZSBzdHJpbmcuXG4gKi9cblxuZnVuY3Rpb24gY29udGFpbnNOYW1lc3BhY2UgKHN0ciwgbmFtZXNwYWNlKSB7XG4gIHZhciB2YWxzID0gc3RyLnNwbGl0KC9bICxdKy8pXG4gIHZhciBucyA9IFN0cmluZyhuYW1lc3BhY2UpLnRvTG93ZXJDYXNlKClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdmFsID0gdmFsc1tpXVxuXG4gICAgLy8gbmFtZXNwYWNlIGNvbnRhaW5lZFxuICAgIGlmICh2YWwgJiYgKHZhbCA9PT0gJyonIHx8IHZhbC50b0xvd2VyQ2FzZSgpID09PSBucykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQ29udmVydCBhIGRhdGEgZGVzY3JpcHRvciB0byBhY2Nlc3NvciBkZXNjcmlwdG9yLlxuICovXG5cbmZ1bmN0aW9uIGNvbnZlcnREYXRhRGVzY3JpcHRvclRvQWNjZXNzb3IgKG9iaiwgcHJvcCwgbWVzc2FnZSkge1xuICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBwcm9wKVxuICB2YXIgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlXG5cbiAgZGVzY3JpcHRvci5nZXQgPSBmdW5jdGlvbiBnZXR0ZXIgKCkgeyByZXR1cm4gdmFsdWUgfVxuXG4gIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlKSB7XG4gICAgZGVzY3JpcHRvci5zZXQgPSBmdW5jdGlvbiBzZXR0ZXIgKHZhbCkgeyByZXR1cm4gKHZhbHVlID0gdmFsKSB9XG4gIH1cblxuICBkZWxldGUgZGVzY3JpcHRvci52YWx1ZVxuICBkZWxldGUgZGVzY3JpcHRvci53cml0YWJsZVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIGRlc2NyaXB0b3IpXG5cbiAgcmV0dXJuIGRlc2NyaXB0b3Jcbn1cblxuLyoqXG4gKiBDcmVhdGUgYXJndW1lbnRzIHN0cmluZyB0byBrZWVwIGFyaXR5LlxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUFyZ3VtZW50c1N0cmluZyAoYXJpdHkpIHtcbiAgdmFyIHN0ciA9ICcnXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcml0eTsgaSsrKSB7XG4gICAgc3RyICs9ICcsIGFyZycgKyBpXG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cigyKVxufVxuXG4vKipcbiAqIENyZWF0ZSBzdGFjayBzdHJpbmcgZnJvbSBzdGFjay5cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVTdGFja1N0cmluZyAoc3RhY2spIHtcbiAgdmFyIHN0ciA9IHRoaXMubmFtZSArICc6ICcgKyB0aGlzLm5hbWVzcGFjZVxuXG4gIGlmICh0aGlzLm1lc3NhZ2UpIHtcbiAgICBzdHIgKz0gJyBkZXByZWNhdGVkICcgKyB0aGlzLm1lc3NhZ2VcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICBzdHIgKz0gJ1xcbiAgICBhdCAnICsgY2FsbFNpdGVUb1N0cmluZyhzdGFja1tpXSlcbiAgfVxuXG4gIHJldHVybiBzdHJcbn1cblxuLyoqXG4gKiBDcmVhdGUgZGVwcmVjYXRlIGZvciBuYW1lc3BhY2UgaW4gY2FsbGVyLlxuICovXG5cbmZ1bmN0aW9uIGRlcGQgKG5hbWVzcGFjZSkge1xuICBpZiAoIW5hbWVzcGFjZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IG5hbWVzcGFjZSBpcyByZXF1aXJlZCcpXG4gIH1cblxuICB2YXIgc3RhY2sgPSBnZXRTdGFjaygpXG4gIHZhciBzaXRlID0gY2FsbFNpdGVMb2NhdGlvbihzdGFja1sxXSlcbiAgdmFyIGZpbGUgPSBzaXRlWzBdXG5cbiAgZnVuY3Rpb24gZGVwcmVjYXRlIChtZXNzYWdlKSB7XG4gICAgLy8gY2FsbCB0byBzZWxmIGFzIGxvZ1xuICAgIGxvZy5jYWxsKGRlcHJlY2F0ZSwgbWVzc2FnZSlcbiAgfVxuXG4gIGRlcHJlY2F0ZS5fZmlsZSA9IGZpbGVcbiAgZGVwcmVjYXRlLl9pZ25vcmVkID0gaXNpZ25vcmVkKG5hbWVzcGFjZSlcbiAgZGVwcmVjYXRlLl9uYW1lc3BhY2UgPSBuYW1lc3BhY2VcbiAgZGVwcmVjYXRlLl90cmFjZWQgPSBpc3RyYWNlZChuYW1lc3BhY2UpXG4gIGRlcHJlY2F0ZS5fd2FybmVkID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuXG4gIGRlcHJlY2F0ZS5mdW5jdGlvbiA9IHdyYXBmdW5jdGlvblxuICBkZXByZWNhdGUucHJvcGVydHkgPSB3cmFwcHJvcGVydHlcblxuICByZXR1cm4gZGVwcmVjYXRlXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIG5hbWVzcGFjZSBpcyBpZ25vcmVkLlxuICovXG5cbmZ1bmN0aW9uIGlzaWdub3JlZCAobmFtZXNwYWNlKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB0ZXN0ZWQgaW4gYSBjaGlsZCBwcm9jZXNzcyAqL1xuICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uKSB7XG4gICAgLy8gLS1uby1kZXByZWNhdGlvbiBzdXBwb3J0XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHZhciBzdHIgPSBwcm9jZXNzLmVudi5OT19ERVBSRUNBVElPTiB8fCAnJ1xuXG4gIC8vIG5hbWVzcGFjZSBpZ25vcmVkXG4gIHJldHVybiBjb250YWluc05hbWVzcGFjZShzdHIsIG5hbWVzcGFjZSlcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgbmFtZXNwYWNlIGlzIHRyYWNlZC5cbiAqL1xuXG5mdW5jdGlvbiBpc3RyYWNlZCAobmFtZXNwYWNlKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB0ZXN0ZWQgaW4gYSBjaGlsZCBwcm9jZXNzcyAqL1xuICBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgLy8gLS10cmFjZS1kZXByZWNhdGlvbiBzdXBwb3J0XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHZhciBzdHIgPSBwcm9jZXNzLmVudi5UUkFDRV9ERVBSRUNBVElPTiB8fCAnJ1xuXG4gIC8vIG5hbWVzcGFjZSB0cmFjZWRcbiAgcmV0dXJuIGNvbnRhaW5zTmFtZXNwYWNlKHN0ciwgbmFtZXNwYWNlKVxufVxuXG4vKipcbiAqIERpc3BsYXkgZGVwcmVjYXRpb24gbWVzc2FnZS5cbiAqL1xuXG5mdW5jdGlvbiBsb2cgKG1lc3NhZ2UsIHNpdGUpIHtcbiAgdmFyIGhhc2xpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJDb3VudChwcm9jZXNzLCAnZGVwcmVjYXRpb24nKSAhPT0gMFxuXG4gIC8vIGFib3J0IGVhcmx5IGlmIG5vIGRlc3RpbmF0aW9uXG4gIGlmICghaGFzbGlzdGVuZXJzICYmIHRoaXMuX2lnbm9yZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjYWxsZXJcbiAgdmFyIGNhbGxGaWxlXG4gIHZhciBjYWxsU2l0ZVxuICB2YXIgZGVwU2l0ZVxuICB2YXIgaSA9IDBcbiAgdmFyIHNlZW4gPSBmYWxzZVxuICB2YXIgc3RhY2sgPSBnZXRTdGFjaygpXG4gIHZhciBmaWxlID0gdGhpcy5fZmlsZVxuXG4gIGlmIChzaXRlKSB7XG4gICAgLy8gcHJvdmlkZWQgc2l0ZVxuICAgIGRlcFNpdGUgPSBzaXRlXG4gICAgY2FsbFNpdGUgPSBjYWxsU2l0ZUxvY2F0aW9uKHN0YWNrWzFdKVxuICAgIGNhbGxTaXRlLm5hbWUgPSBkZXBTaXRlLm5hbWVcbiAgICBmaWxlID0gY2FsbFNpdGVbMF1cbiAgfSBlbHNlIHtcbiAgICAvLyBnZXQgY2FsbCBzaXRlXG4gICAgaSA9IDJcbiAgICBkZXBTaXRlID0gY2FsbFNpdGVMb2NhdGlvbihzdGFja1tpXSlcbiAgICBjYWxsU2l0ZSA9IGRlcFNpdGVcbiAgfVxuXG4gIC8vIGdldCBjYWxsZXIgb2YgZGVwcmVjYXRlZCB0aGluZyBpbiByZWxhdGlvbiB0byBmaWxlXG4gIGZvciAoOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICBjYWxsZXIgPSBjYWxsU2l0ZUxvY2F0aW9uKHN0YWNrW2ldKVxuICAgIGNhbGxGaWxlID0gY2FsbGVyWzBdXG5cbiAgICBpZiAoY2FsbEZpbGUgPT09IGZpbGUpIHtcbiAgICAgIHNlZW4gPSB0cnVlXG4gICAgfSBlbHNlIGlmIChjYWxsRmlsZSA9PT0gdGhpcy5fZmlsZSkge1xuICAgICAgZmlsZSA9IHRoaXMuX2ZpbGVcbiAgICB9IGVsc2UgaWYgKHNlZW4pIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgdmFyIGtleSA9IGNhbGxlclxuICAgID8gZGVwU2l0ZS5qb2luKCc6JykgKyAnX18nICsgY2FsbGVyLmpvaW4oJzonKVxuICAgIDogdW5kZWZpbmVkXG5cbiAgaWYgKGtleSAhPT0gdW5kZWZpbmVkICYmIGtleSBpbiB0aGlzLl93YXJuZWQpIHtcbiAgICAvLyBhbHJlYWR5IHdhcm5lZFxuICAgIHJldHVyblxuICB9XG5cbiAgdGhpcy5fd2FybmVkW2tleV0gPSB0cnVlXG5cbiAgLy8gZ2VuZXJhdGUgYXV0b21hdGljIG1lc3NhZ2UgZnJvbSBjYWxsIHNpdGVcbiAgdmFyIG1zZyA9IG1lc3NhZ2VcbiAgaWYgKCFtc2cpIHtcbiAgICBtc2cgPSBjYWxsU2l0ZSA9PT0gZGVwU2l0ZSB8fCAhY2FsbFNpdGUubmFtZVxuICAgICAgPyBkZWZhdWx0TWVzc2FnZShkZXBTaXRlKVxuICAgICAgOiBkZWZhdWx0TWVzc2FnZShjYWxsU2l0ZSlcbiAgfVxuXG4gIC8vIGVtaXQgZGVwcmVjYXRpb24gaWYgbGlzdGVuZXJzIGV4aXN0XG4gIGlmIChoYXNsaXN0ZW5lcnMpIHtcbiAgICB2YXIgZXJyID0gRGVwcmVjYXRpb25FcnJvcih0aGlzLl9uYW1lc3BhY2UsIG1zZywgc3RhY2suc2xpY2UoaSkpXG4gICAgcHJvY2Vzcy5lbWl0KCdkZXByZWNhdGlvbicsIGVycilcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIGZvcm1hdCBhbmQgd3JpdGUgbWVzc2FnZVxuICB2YXIgZm9ybWF0ID0gcHJvY2Vzcy5zdGRlcnIuaXNUVFlcbiAgICA/IGZvcm1hdENvbG9yXG4gICAgOiBmb3JtYXRQbGFpblxuICB2YXIgb3V0cHV0ID0gZm9ybWF0LmNhbGwodGhpcywgbXNnLCBjYWxsZXIsIHN0YWNrLnNsaWNlKGkpKVxuICBwcm9jZXNzLnN0ZGVyci53cml0ZShvdXRwdXQgKyAnXFxuJywgJ3V0ZjgnKVxufVxuXG4vKipcbiAqIEdldCBjYWxsIHNpdGUgbG9jYXRpb24gYXMgYXJyYXkuXG4gKi9cblxuZnVuY3Rpb24gY2FsbFNpdGVMb2NhdGlvbiAoY2FsbFNpdGUpIHtcbiAgdmFyIGZpbGUgPSBjYWxsU2l0ZS5nZXRGaWxlTmFtZSgpIHx8ICc8YW5vbnltb3VzPidcbiAgdmFyIGxpbmUgPSBjYWxsU2l0ZS5nZXRMaW5lTnVtYmVyKClcbiAgdmFyIGNvbG0gPSBjYWxsU2l0ZS5nZXRDb2x1bW5OdW1iZXIoKVxuXG4gIGlmIChjYWxsU2l0ZS5pc0V2YWwoKSkge1xuICAgIGZpbGUgPSBjYWxsU2l0ZS5nZXRFdmFsT3JpZ2luKCkgKyAnLCAnICsgZmlsZVxuICB9XG5cbiAgdmFyIHNpdGUgPSBbZmlsZSwgbGluZSwgY29sbV1cblxuICBzaXRlLmNhbGxTaXRlID0gY2FsbFNpdGVcbiAgc2l0ZS5uYW1lID0gY2FsbFNpdGUuZ2V0RnVuY3Rpb25OYW1lKClcblxuICByZXR1cm4gc2l0ZVxufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgZGVmYXVsdCBtZXNzYWdlIGZyb20gdGhlIHNpdGUuXG4gKi9cblxuZnVuY3Rpb24gZGVmYXVsdE1lc3NhZ2UgKHNpdGUpIHtcbiAgdmFyIGNhbGxTaXRlID0gc2l0ZS5jYWxsU2l0ZVxuICB2YXIgZnVuY05hbWUgPSBzaXRlLm5hbWVcblxuICAvLyBtYWtlIHVzZWZ1bCBhbm9ueW1vdXMgbmFtZVxuICBpZiAoIWZ1bmNOYW1lKSB7XG4gICAgZnVuY05hbWUgPSAnPGFub255bW91c0AnICsgZm9ybWF0TG9jYXRpb24oc2l0ZSkgKyAnPidcbiAgfVxuXG4gIHZhciBjb250ZXh0ID0gY2FsbFNpdGUuZ2V0VGhpcygpXG4gIHZhciB0eXBlTmFtZSA9IGNvbnRleHQgJiYgY2FsbFNpdGUuZ2V0VHlwZU5hbWUoKVxuXG4gIC8vIGlnbm9yZSB1c2VsZXNzIHR5cGUgbmFtZVxuICBpZiAodHlwZU5hbWUgPT09ICdPYmplY3QnKSB7XG4gICAgdHlwZU5hbWUgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8vIG1ha2UgdXNlZnVsIHR5cGUgbmFtZVxuICBpZiAodHlwZU5hbWUgPT09ICdGdW5jdGlvbicpIHtcbiAgICB0eXBlTmFtZSA9IGNvbnRleHQubmFtZSB8fCB0eXBlTmFtZVxuICB9XG5cbiAgcmV0dXJuIHR5cGVOYW1lICYmIGNhbGxTaXRlLmdldE1ldGhvZE5hbWUoKVxuICAgID8gdHlwZU5hbWUgKyAnLicgKyBmdW5jTmFtZVxuICAgIDogZnVuY05hbWVcbn1cblxuLyoqXG4gKiBGb3JtYXQgZGVwcmVjYXRpb24gbWVzc2FnZSB3aXRob3V0IGNvbG9yLlxuICovXG5cbmZ1bmN0aW9uIGZvcm1hdFBsYWluIChtc2csIGNhbGxlciwgc3RhY2spIHtcbiAgdmFyIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKVxuXG4gIHZhciBmb3JtYXR0ZWQgPSB0aW1lc3RhbXAgK1xuICAgICcgJyArIHRoaXMuX25hbWVzcGFjZSArXG4gICAgJyBkZXByZWNhdGVkICcgKyBtc2dcblxuICAvLyBhZGQgc3RhY2sgdHJhY2VcbiAgaWYgKHRoaXMuX3RyYWNlZCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvcm1hdHRlZCArPSAnXFxuICAgIGF0ICcgKyBjYWxsU2l0ZVRvU3RyaW5nKHN0YWNrW2ldKVxuICAgIH1cblxuICAgIHJldHVybiBmb3JtYXR0ZWRcbiAgfVxuXG4gIGlmIChjYWxsZXIpIHtcbiAgICBmb3JtYXR0ZWQgKz0gJyBhdCAnICsgZm9ybWF0TG9jYXRpb24oY2FsbGVyKVxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZFxufVxuXG4vKipcbiAqIEZvcm1hdCBkZXByZWNhdGlvbiBtZXNzYWdlIHdpdGggY29sb3IuXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0Q29sb3IgKG1zZywgY2FsbGVyLCBzdGFjaykge1xuICB2YXIgZm9ybWF0dGVkID0gJ1xceDFiWzM2OzFtJyArIHRoaXMuX25hbWVzcGFjZSArICdcXHgxYlsyMjszOW0nICsgLy8gYm9sZCBjeWFuXG4gICAgJyBcXHgxYlszMzsxbWRlcHJlY2F0ZWRcXHgxYlsyMjszOW0nICsgLy8gYm9sZCB5ZWxsb3dcbiAgICAnIFxceDFiWzBtJyArIG1zZyArICdcXHgxYlszOW0nIC8vIHJlc2V0XG5cbiAgLy8gYWRkIHN0YWNrIHRyYWNlXG4gIGlmICh0aGlzLl90cmFjZWQpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3JtYXR0ZWQgKz0gJ1xcbiAgICBcXHgxYlszNm1hdCAnICsgY2FsbFNpdGVUb1N0cmluZyhzdGFja1tpXSkgKyAnXFx4MWJbMzltJyAvLyBjeWFuXG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZFxuICB9XG5cbiAgaWYgKGNhbGxlcikge1xuICAgIGZvcm1hdHRlZCArPSAnIFxceDFiWzM2bScgKyBmb3JtYXRMb2NhdGlvbihjYWxsZXIpICsgJ1xceDFiWzM5bScgLy8gY3lhblxuICB9XG5cbiAgcmV0dXJuIGZvcm1hdHRlZFxufVxuXG4vKipcbiAqIEZvcm1hdCBjYWxsIHNpdGUgbG9jYXRpb24uXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0TG9jYXRpb24gKGNhbGxTaXRlKSB7XG4gIHJldHVybiByZWxhdGl2ZShiYXNlUGF0aCwgY2FsbFNpdGVbMF0pICtcbiAgICAnOicgKyBjYWxsU2l0ZVsxXSArXG4gICAgJzonICsgY2FsbFNpdGVbMl1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIHN0YWNrIGFzIGFycmF5IG9mIGNhbGwgc2l0ZXMuXG4gKi9cblxuZnVuY3Rpb24gZ2V0U3RhY2sgKCkge1xuICB2YXIgbGltaXQgPSBFcnJvci5zdGFja1RyYWNlTGltaXRcbiAgdmFyIG9iaiA9IHt9XG4gIHZhciBwcmVwID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2VcblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBhcmVPYmplY3RTdGFja1RyYWNlXG4gIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IE1hdGgubWF4KDEwLCBsaW1pdClcblxuICAvLyBjYXB0dXJlIHRoZSBzdGFja1xuICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShvYmopXG5cbiAgLy8gc2xpY2UgdGhpcyBmdW5jdGlvbiBvZmYgdGhlIHRvcFxuICB2YXIgc3RhY2sgPSBvYmouc3RhY2suc2xpY2UoMSlcblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBcbiAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gbGltaXRcblxuICByZXR1cm4gc3RhY2tcbn1cblxuLyoqXG4gKiBDYXB0dXJlIGNhbGwgc2l0ZSBzdGFjayBmcm9tIHY4LlxuICovXG5cbmZ1bmN0aW9uIHByZXBhcmVPYmplY3RTdGFja1RyYWNlIChvYmosIHN0YWNrKSB7XG4gIHJldHVybiBzdGFja1xufVxuXG4vKipcbiAqIFJldHVybiBhIHdyYXBwZWQgZnVuY3Rpb24gaW4gYSBkZXByZWNhdGlvbiBtZXNzYWdlLlxuICovXG5cbmZ1bmN0aW9uIHdyYXBmdW5jdGlvbiAoZm4sIG1lc3NhZ2UpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IGZuIG11c3QgYmUgYSBmdW5jdGlvbicpXG4gIH1cblxuICB2YXIgYXJncyA9IGNyZWF0ZUFyZ3VtZW50c1N0cmluZyhmbi5sZW5ndGgpXG4gIHZhciBkZXByZWNhdGUgPSB0aGlzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgdmFyIHN0YWNrID0gZ2V0U3RhY2soKVxuICB2YXIgc2l0ZSA9IGNhbGxTaXRlTG9jYXRpb24oc3RhY2tbMV0pXG5cbiAgc2l0ZS5uYW1lID0gZm4ubmFtZVxuXG4gICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXZhbFxuICB2YXIgZGVwcmVjYXRlZGZuID0gZXZhbCgnKGZ1bmN0aW9uICgnICsgYXJncyArICcpIHtcXG4nICtcbiAgICAnXCJ1c2Ugc3RyaWN0XCJcXG4nICtcbiAgICAnbG9nLmNhbGwoZGVwcmVjYXRlLCBtZXNzYWdlLCBzaXRlKVxcbicgK1xuICAgICdyZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKVxcbicgK1xuICAgICd9KScpXG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWRmblxufVxuXG4vKipcbiAqIFdyYXAgcHJvcGVydHkgaW4gYSBkZXByZWNhdGlvbiBtZXNzYWdlLlxuICovXG5cbmZ1bmN0aW9uIHdyYXBwcm9wZXJ0eSAob2JqLCBwcm9wLCBtZXNzYWdlKSB7XG4gIGlmICghb2JqIHx8ICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqICE9PSAnZnVuY3Rpb24nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IG9iaiBtdXN0IGJlIG9iamVjdCcpXG4gIH1cblxuICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBwcm9wKVxuXG4gIGlmICghZGVzY3JpcHRvcikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ211c3QgY2FsbCBwcm9wZXJ0eSBvbiBvd25lciBvYmplY3QnKVxuICB9XG5cbiAgaWYgKCFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Byb3BlcnR5IG11c3QgYmUgY29uZmlndXJhYmxlJylcbiAgfVxuXG4gIHZhciBkZXByZWNhdGUgPSB0aGlzXG4gIHZhciBzdGFjayA9IGdldFN0YWNrKClcbiAgdmFyIHNpdGUgPSBjYWxsU2l0ZUxvY2F0aW9uKHN0YWNrWzFdKVxuXG4gIC8vIHNldCBzaXRlIG5hbWVcbiAgc2l0ZS5uYW1lID0gcHJvcFxuXG4gIC8vIGNvbnZlcnQgZGF0YSBkZXNjcmlwdG9yXG4gIGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIHtcbiAgICBkZXNjcmlwdG9yID0gY29udmVydERhdGFEZXNjcmlwdG9yVG9BY2Nlc3NvcihvYmosIHByb3AsIG1lc3NhZ2UpXG4gIH1cblxuICB2YXIgZ2V0ID0gZGVzY3JpcHRvci5nZXRcbiAgdmFyIHNldCA9IGRlc2NyaXB0b3Iuc2V0XG5cbiAgLy8gd3JhcCBnZXR0ZXJcbiAgaWYgKHR5cGVvZiBnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkZXNjcmlwdG9yLmdldCA9IGZ1bmN0aW9uIGdldHRlciAoKSB7XG4gICAgICBsb2cuY2FsbChkZXByZWNhdGUsIG1lc3NhZ2UsIHNpdGUpXG4gICAgICByZXR1cm4gZ2V0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgICB9XG4gIH1cblxuICAvLyB3cmFwIHNldHRlclxuICBpZiAodHlwZW9mIHNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlc2NyaXB0b3Iuc2V0ID0gZnVuY3Rpb24gc2V0dGVyICgpIHtcbiAgICAgIGxvZy5jYWxsKGRlcHJlY2F0ZSwgbWVzc2FnZSwgc2l0ZSlcbiAgICAgIHJldHVybiBzZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIGRlc2NyaXB0b3IpXG59XG5cbi8qKlxuICogQ3JlYXRlIERlcHJlY2F0aW9uRXJyb3IgZm9yIGRlcHJlY2F0aW9uXG4gKi9cblxuZnVuY3Rpb24gRGVwcmVjYXRpb25FcnJvciAobmFtZXNwYWNlLCBtZXNzYWdlLCBzdGFjaykge1xuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoKVxuICB2YXIgc3RhY2tTdHJpbmdcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICdjb25zdHJ1Y3RvcicsIHtcbiAgICB2YWx1ZTogRGVwcmVjYXRpb25FcnJvclxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ21lc3NhZ2UnLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIHZhbHVlOiBtZXNzYWdlLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pXG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnbmFtZScsIHtcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6ICdEZXByZWNhdGlvbkVycm9yJyxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ25hbWVzcGFjZScsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IG5hbWVzcGFjZSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ3N0YWNrJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChzdGFja1N0cmluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBzdGFja1N0cmluZ1xuICAgICAgfVxuXG4gICAgICAvLyBwcmVwYXJlIHN0YWNrIHRyYWNlXG4gICAgICByZXR1cm4gKHN0YWNrU3RyaW5nID0gY3JlYXRlU3RhY2tTdHJpbmcuY2FsbCh0aGlzLCBzdGFjaykpXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHNldHRlciAodmFsKSB7XG4gICAgICBzdGFja1N0cmluZyA9IHZhbFxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gZXJyb3Jcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9kZXBkL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZzXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiZnNcIlxuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19leHBvcnQuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV4cHJlc3NcbiAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgY29udGVudERpc3Bvc2l0aW9uID0gcmVxdWlyZSgnY29udGVudC1kaXNwb3NpdGlvbicpO1xudmFyIGNvbnRlbnRUeXBlID0gcmVxdWlyZSgnY29udGVudC10eXBlJyk7XG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdleHByZXNzJyk7XG52YXIgZmxhdHRlbiA9IHJlcXVpcmUoJ2FycmF5LWZsYXR0ZW4nKTtcbnZhciBtaW1lID0gcmVxdWlyZSgnc2VuZCcpLm1pbWU7XG52YXIgZXRhZyA9IHJlcXVpcmUoJ2V0YWcnKTtcbnZhciBwcm94eWFkZHIgPSByZXF1aXJlKCdwcm94eS1hZGRyJyk7XG52YXIgcXMgPSByZXF1aXJlKCdxcycpO1xudmFyIHF1ZXJ5c3RyaW5nID0gcmVxdWlyZSgncXVlcnlzdHJpbmcnKTtcblxuLyoqXG4gKiBSZXR1cm4gc3Ryb25nIEVUYWcgZm9yIGBib2R5YC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xCdWZmZXJ9IGJvZHlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbZW5jb2RpbmddXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLmV0YWcgPSBjcmVhdGVFVGFnR2VuZXJhdG9yKHsgd2VhazogZmFsc2UgfSlcblxuLyoqXG4gKiBSZXR1cm4gd2VhayBFVGFnIGZvciBgYm9keWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QnVmZmVyfSBib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW2VuY29kaW5nXVxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy53ZXRhZyA9IGNyZWF0ZUVUYWdHZW5lcmF0b3IoeyB3ZWFrOiB0cnVlIH0pXG5cbi8qKlxuICogQ2hlY2sgaWYgYHBhdGhgIGxvb2tzIGFic29sdXRlLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5pc0Fic29sdXRlID0gZnVuY3Rpb24ocGF0aCl7XG4gIGlmICgnLycgPT09IHBhdGhbMF0pIHJldHVybiB0cnVlO1xuICBpZiAoJzonID09PSBwYXRoWzFdICYmICgnXFxcXCcgPT09IHBhdGhbMl0gfHwgJy8nID09PSBwYXRoWzJdKSkgcmV0dXJuIHRydWU7IC8vIFdpbmRvd3MgZGV2aWNlIHBhdGhcbiAgaWYgKCdcXFxcXFxcXCcgPT09IHBhdGguc3Vic3RyaW5nKDAsIDIpKSByZXR1cm4gdHJ1ZTsgLy8gTWljcm9zb2Z0IEF6dXJlIGFic29sdXRlIHBhdGhcbn07XG5cbi8qKlxuICogRmxhdHRlbiB0aGUgZ2l2ZW4gYGFycmAuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJyXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuZmxhdHRlbiA9IGRlcHJlY2F0ZS5mdW5jdGlvbihmbGF0dGVuLFxuICAndXRpbHMuZmxhdHRlbjogdXNlIGFycmF5LWZsYXR0ZW4gbnBtIG1vZHVsZSBpbnN0ZWFkJyk7XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBnaXZlbiBgdHlwZWAsIGZvciBleGFtcGxlIFwiaHRtbFwiIGJlY29tZXMgXCJ0ZXh0L2h0bWxcIi5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5ub3JtYWxpemVUeXBlID0gZnVuY3Rpb24odHlwZSl7XG4gIHJldHVybiB+dHlwZS5pbmRleE9mKCcvJylcbiAgICA/IGFjY2VwdFBhcmFtcyh0eXBlKVxuICAgIDogeyB2YWx1ZTogbWltZS5sb29rdXAodHlwZSksIHBhcmFtczoge30gfTtcbn07XG5cbi8qKlxuICogTm9ybWFsaXplIGB0eXBlc2AsIGZvciBleGFtcGxlIFwiaHRtbFwiIGJlY29tZXMgXCJ0ZXh0L2h0bWxcIi5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSB0eXBlc1xuICogQHJldHVybiB7QXJyYXl9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLm5vcm1hbGl6ZVR5cGVzID0gZnVuY3Rpb24odHlwZXMpe1xuICB2YXIgcmV0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7ICsraSkge1xuICAgIHJldC5wdXNoKGV4cG9ydHMubm9ybWFsaXplVHlwZSh0eXBlc1tpXSkpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbi8qKlxuICogR2VuZXJhdGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIgYXBwcm9wcmlhdGUgZm9yIHRoZSBmaWxlbmFtZS5cbiAqIG5vbi1hc2NpaSBmaWxlbmFtZXMgYXJlIHVybGVuY29kZWQgYW5kIGEgZmlsZW5hbWUqIHBhcmFtZXRlciBpcyBhZGRlZFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlbmFtZVxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5jb250ZW50RGlzcG9zaXRpb24gPSBkZXByZWNhdGUuZnVuY3Rpb24oY29udGVudERpc3Bvc2l0aW9uLFxuICAndXRpbHMuY29udGVudERpc3Bvc2l0aW9uOiB1c2UgY29udGVudC1kaXNwb3NpdGlvbiBucG0gbW9kdWxlIGluc3RlYWQnKTtcblxuLyoqXG4gKiBQYXJzZSBhY2NlcHQgcGFyYW1zIGBzdHJgIHJldHVybmluZyBhblxuICogb2JqZWN0IHdpdGggYC52YWx1ZWAsIGAucXVhbGl0eWAgYW5kIGAucGFyYW1zYC5cbiAqIGFsc28gaW5jbHVkZXMgYC5vcmlnaW5hbEluZGV4YCBmb3Igc3RhYmxlIHNvcnRpbmdcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBhY2NlcHRQYXJhbXMoc3RyLCBpbmRleCkge1xuICB2YXIgcGFydHMgPSBzdHIuc3BsaXQoLyAqOyAqLyk7XG4gIHZhciByZXQgPSB7IHZhbHVlOiBwYXJ0c1swXSwgcXVhbGl0eTogMSwgcGFyYW1zOiB7fSwgb3JpZ2luYWxJbmRleDogaW5kZXggfTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IHBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHBtcyA9IHBhcnRzW2ldLnNwbGl0KC8gKj0gKi8pO1xuICAgIGlmICgncScgPT09IHBtc1swXSkge1xuICAgICAgcmV0LnF1YWxpdHkgPSBwYXJzZUZsb2F0KHBtc1sxXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5wYXJhbXNbcG1zWzBdXSA9IHBtc1sxXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIENvbXBpbGUgXCJldGFnXCIgdmFsdWUgdG8gZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtICB7Qm9vbGVhbnxTdHJpbmd8RnVuY3Rpb259IHZhbFxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLmNvbXBpbGVFVGFnID0gZnVuY3Rpb24odmFsKSB7XG4gIHZhciBmbjtcblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzd2l0Y2ggKHZhbCkge1xuICAgIGNhc2UgdHJ1ZTpcbiAgICAgIGZuID0gZXhwb3J0cy53ZXRhZztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgZmFsc2U6XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzdHJvbmcnOlxuICAgICAgZm4gPSBleHBvcnRzLmV0YWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd3ZWFrJzpcbiAgICAgIGZuID0gZXhwb3J0cy53ZXRhZztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmtub3duIHZhbHVlIGZvciBldGFnIGZ1bmN0aW9uOiAnICsgdmFsKTtcbiAgfVxuXG4gIHJldHVybiBmbjtcbn1cblxuLyoqXG4gKiBDb21waWxlIFwicXVlcnkgcGFyc2VyXCIgdmFsdWUgdG8gZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtICB7U3RyaW5nfEZ1bmN0aW9ufSB2YWxcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5jb21waWxlUXVlcnlQYXJzZXIgPSBmdW5jdGlvbiBjb21waWxlUXVlcnlQYXJzZXIodmFsKSB7XG4gIHZhciBmbjtcblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBzd2l0Y2ggKHZhbCkge1xuICAgIGNhc2UgdHJ1ZTpcbiAgICAgIGZuID0gcXVlcnlzdHJpbmcucGFyc2U7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGZhbHNlOlxuICAgICAgZm4gPSBuZXdPYmplY3Q7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdleHRlbmRlZCc6XG4gICAgICBmbiA9IHBhcnNlRXh0ZW5kZWRRdWVyeVN0cmluZztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NpbXBsZSc6XG4gICAgICBmbiA9IHF1ZXJ5c3RyaW5nLnBhcnNlO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Vua25vd24gdmFsdWUgZm9yIHF1ZXJ5IHBhcnNlciBmdW5jdGlvbjogJyArIHZhbCk7XG4gIH1cblxuICByZXR1cm4gZm47XG59XG5cbi8qKlxuICogQ29tcGlsZSBcInByb3h5IHRydXN0XCIgdmFsdWUgdG8gZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtICB7Qm9vbGVhbnxTdHJpbmd8TnVtYmVyfEFycmF5fEZ1bmN0aW9ufSB2YWxcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5jb21waWxlVHJ1c3QgPSBmdW5jdGlvbih2YWwpIHtcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHJldHVybiB2YWw7XG5cbiAgaWYgKHZhbCA9PT0gdHJ1ZSkge1xuICAgIC8vIFN1cHBvcnQgcGxhaW4gdHJ1ZS9mYWxzZVxuICAgIHJldHVybiBmdW5jdGlvbigpeyByZXR1cm4gdHJ1ZSB9O1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgLy8gU3VwcG9ydCB0cnVzdGluZyBob3AgY291bnRcbiAgICByZXR1cm4gZnVuY3Rpb24oYSwgaSl7IHJldHVybiBpIDwgdmFsIH07XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBTdXBwb3J0IGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXNcbiAgICB2YWwgPSB2YWwuc3BsaXQoLyAqLCAqLyk7XG4gIH1cblxuICByZXR1cm4gcHJveHlhZGRyLmNvbXBpbGUodmFsIHx8IFtdKTtcbn1cblxuLyoqXG4gKiBTZXQgdGhlIGNoYXJzZXQgaW4gYSBnaXZlbiBDb250ZW50LVR5cGUgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge1N0cmluZ30gY2hhcnNldFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZXhwb3J0cy5zZXRDaGFyc2V0ID0gZnVuY3Rpb24gc2V0Q2hhcnNldCh0eXBlLCBjaGFyc2V0KSB7XG4gIGlmICghdHlwZSB8fCAhY2hhcnNldCkge1xuICAgIHJldHVybiB0eXBlO1xuICB9XG5cbiAgLy8gcGFyc2UgdHlwZVxuICB2YXIgcGFyc2VkID0gY29udGVudFR5cGUucGFyc2UodHlwZSk7XG5cbiAgLy8gc2V0IGNoYXJzZXRcbiAgcGFyc2VkLnBhcmFtZXRlcnMuY2hhcnNldCA9IGNoYXJzZXQ7XG5cbiAgLy8gZm9ybWF0IHR5cGVcbiAgcmV0dXJuIGNvbnRlbnRUeXBlLmZvcm1hdChwYXJzZWQpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gRVRhZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGdlbmVyYXRpbmcgRVRhZ3Mgd2l0aFxuICogdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFVGFnR2VuZXJhdG9yIChvcHRpb25zKSB7XG4gIHJldHVybiBmdW5jdGlvbiBnZW5lcmF0ZUVUYWcgKGJvZHksIGVuY29kaW5nKSB7XG4gICAgdmFyIGJ1ZiA9ICFCdWZmZXIuaXNCdWZmZXIoYm9keSlcbiAgICAgID8gQnVmZmVyLmZyb20oYm9keSwgZW5jb2RpbmcpXG4gICAgICA6IGJvZHlcblxuICAgIHJldHVybiBldGFnKGJ1Ziwgb3B0aW9ucylcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlIGFuIGV4dGVuZGVkIHF1ZXJ5IHN0cmluZyB3aXRoIHFzLlxuICpcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VFeHRlbmRlZFF1ZXJ5U3RyaW5nKHN0cikge1xuICByZXR1cm4gcXMucGFyc2Uoc3RyLCB7XG4gICAgYWxsb3dQcm90b3R5cGVzOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFJldHVybiBuZXcgZW1wdHkgb2JqZWN0LlxuICpcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG5ld09iamVjdCgpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3V0aWxzLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qc1xuLy8gbW9kdWxlIGlkID0gMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRQLmYob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzXG4vLyBtb2R1bGUgaWQgPSAxNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZHAuanNcbi8vIG1vZHVsZSBpZCA9IDE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gMTZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaHR0cFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcImh0dHBcIlxuLy8gbW9kdWxlIGlkID0gMTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2pzb24vc3RyaW5naWZ5XCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9qc29uL3N0cmluZ2lmeS5qc1xuLy8gbW9kdWxlIGlkID0gMThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IHsgZ2V0SnNvbkRhdGFTeW5jLCB3cml0ZUpzb25EYXRhU3luYyB9IGZyb20gJy4vanNvbidcbmltcG9ydCB7IEFOT01BTElFU19QQVRIIH0gZnJvbSAnLi4vY29uZmlnJ1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnXG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuZXhwb3J0IHR5cGUgRGF0YXNvdXJjZSA9IHtcbiAgbWV0aG9kOiBzdHJpbmcsXG4gIGRhdGE6IE9iamVjdCxcbiAgcGFyYW1zOiBPYmplY3QsXG4gIHR5cGU6IHN0cmluZyxcbiAgdXJsOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgTWV0cmljID0ge1xuICBkYXRhc291cmNlOiBzdHJpbmcsXG4gIHRhcmdldHM6IHN0cmluZ1tdXG59XG5cbmV4cG9ydCB0eXBlIEFub21hbHkgPSB7XG4gIG5hbWU6IHN0cmluZyxcblxuICBwYW5lbFVybDogc3RyaW5nLFxuXG4gIG1ldHJpYzogTWV0cmljLFxuICBkYXRhc291cmNlOiBEYXRhc291cmNlXG4gIHN0YXR1czogc3RyaW5nLFxuICBlcnJvcj86IHN0cmluZyxcblxuICBsYXN0X3ByZWRpY3Rpb25fdGltZTogbnVtYmVyLFxuICBuZXh0X2lkOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgQW5vbWFseUlkID0gc3RyaW5nO1xuXG5sZXQgYW5vbWFsaWVzTmFtZVRvSWRNYXAgPSB7fTtcblxuZnVuY3Rpb24gbG9hZEFub21hbGllc01hcCgpIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgYWxsX2Fub21hbGllcy5qc29uYCk7XG4gIGFub21hbGllc05hbWVUb0lkTWFwID0gZ2V0SnNvbkRhdGFTeW5jKGZpbGVuYW1lKTtcbn1cblxuZnVuY3Rpb24gc2F2ZUFub21hbGllc01hcCgpIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgYWxsX2Fub21hbGllcy5qc29uYCk7XG4gIHdyaXRlSnNvbkRhdGFTeW5jKGZpbGVuYW1lLCBhbm9tYWxpZXNOYW1lVG9JZE1hcCk7XG59XG5cbmZ1bmN0aW9uIGdldEFub21hbHlJZEJ5TmFtZShhbm9tYWx5TmFtZTpzdHJpbmcpIDogQW5vbWFseUlkIHtcbiAgbG9hZEFub21hbGllc01hcCgpO1xuICBhbm9tYWx5TmFtZSA9IGFub21hbHlOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIGlmKGFub21hbHlOYW1lIGluIGFub21hbGllc05hbWVUb0lkTWFwKSB7XG4gICAgcmV0dXJuIGFub21hbGllc05hbWVUb0lkTWFwW2Fub21hbHlOYW1lXTtcbiAgfVxuICByZXR1cm4gYW5vbWFseU5hbWU7XG59XG5cbmZ1bmN0aW9uIGluc2VydEFub21hbHkoYW5vbWFseTogQW5vbWFseSkgOiBBbm9tYWx5SWQge1xuICBjb25zdCBoYXNoU3RyaW5nID0gYW5vbWFseS5uYW1lICsgKG5ldyBEYXRlKCkpLnRvU3RyaW5nKCk7XG4gIGNvbnN0IGFub21hbHlJZDpBbm9tYWx5SWQgPSBjcnlwdG8uY3JlYXRlSGFzaCgnbWQ1JykudXBkYXRlKGhhc2hTdHJpbmcpLmRpZ2VzdCgnaGV4Jyk7XG4gIGFub21hbGllc05hbWVUb0lkTWFwW2Fub21hbHkubmFtZV0gPSBhbm9tYWx5SWQ7XG4gIHNhdmVBbm9tYWxpZXNNYXAoKTtcbiAgLy8gcmV0dXJuIGFub21hbHlJZFxuICAvLyBjb25zdCBhbm9tYWx5SWQ6QW5vbWFseUlkID0gYW5vbWFseS5uYW1lO1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oQU5PTUFMSUVTX1BBVEgsIGAke2Fub21hbHlJZH0uanNvbmApO1xuICBpZihmcy5leGlzdHNTeW5jKGZpbGVuYW1lKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHNhdmVBbm9tYWx5KGFub21hbHlJZCwgYW5vbWFseSk7XG4gIHJldHVybiBhbm9tYWx5SWQ7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUFub21hbHkoYW5vbWFseUlkOkFub21hbHlJZCkge1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oQU5PTUFMSUVTX1BBVEgsIGAke2Fub21hbHlJZH0uanNvbmApO1xuICBmcy51bmxpbmtTeW5jKGZpbGVuYW1lKTtcbn1cblxuZnVuY3Rpb24gc2F2ZUFub21hbHkoYW5vbWFseUlkOiBBbm9tYWx5SWQsIGFub21hbHk6IEFub21hbHkpIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgJHthbm9tYWx5SWR9Lmpzb25gKTtcbiAgcmV0dXJuIHdyaXRlSnNvbkRhdGFTeW5jKGZpbGVuYW1lLCBhbm9tYWx5KTtcbn1cblxuZnVuY3Rpb24gbG9hZEFub21hbHlCeUlkKGFub21hbHlJZDogQW5vbWFseUlkKSA6IEFub21hbHkge1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oQU5PTUFMSUVTX1BBVEgsIGAke2Fub21hbHlJZH0uanNvbmApO1xuICBpZighZnMuZXhpc3RzU3luYyhmaWxlbmFtZSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gZ2V0SnNvbkRhdGFTeW5jKGZpbGVuYW1lKTtcbn1cblxuZnVuY3Rpb24gbG9hZEFub21hbHlCeU5hbWUoYW5vbWFseU5hbWU6IHN0cmluZykgOiBBbm9tYWx5IHtcbiAgbGV0IGFub21hbHlJZCA9IGdldEFub21hbHlJZEJ5TmFtZShhbm9tYWx5TmFtZSk7XG4gIHJldHVybiBsb2FkQW5vbWFseUJ5SWQoYW5vbWFseUlkKTtcbn1cblxuZnVuY3Rpb24gc2F2ZUFub21hbHlUeXBlSW5mbyhpbmZvKSB7XG4gIGNvbnNvbGUubG9nKCdTYXZpbmcnKTtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgJHtpbmZvLm5hbWV9Lmpzb25gKTtcbiAgaWYoaW5mby5uZXh0X2lkID09PSB1bmRlZmluZWQpIHtcbiAgICBpbmZvLm5leHRfaWQgPSAwO1xuICB9XG4gIGlmKGluZm8ubGFzdF9wcmVkaWN0aW9uX3RpbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5mby5sYXN0X3ByZWRpY3Rpb25fdGltZSA9IDA7XG4gIH1cblxuICByZXR1cm4gd3JpdGVKc29uRGF0YVN5bmMoZmlsZW5hbWUsIGluZm8pO1xufVxuXG5mdW5jdGlvbiBnZXRBbm9tYWx5VHlwZUluZm8obmFtZSkge1xuICByZXR1cm4gZ2V0SnNvbkRhdGFTeW5jKHBhdGguam9pbihBTk9NQUxJRVNfUEFUSCwgYCR7bmFtZX0uanNvbmApKTtcbn1cblxuZnVuY3Rpb24gc2V0QW5vbWFseVN0YXR1cyhhbm9tYWx5SWQ6QW5vbWFseUlkLCBzdGF0dXM6c3RyaW5nLCBlcnJvcj86c3RyaW5nKSB7XG4gIGxldCBpbmZvID0gbG9hZEFub21hbHlCeUlkKGFub21hbHlJZCk7XG4gIGluZm8uc3RhdHVzID0gc3RhdHVzO1xuICBpZihlcnJvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaW5mby5lcnJvciA9IGVycm9yO1xuICB9IGVsc2Uge1xuICAgIGluZm8uZXJyb3IgPSAnJztcbiAgfVxuICBzYXZlQW5vbWFseShhbm9tYWx5SWQsIGluZm8pO1xufVxuXG5mdW5jdGlvbiBzZXRBbm9tYWx5UHJlZGljdGlvblRpbWUoYW5vbWFseUlkOkFub21hbHlJZCwgbGFzdFByZWRpY3Rpb25UaW1lOm51bWJlcikge1xuICBsZXQgaW5mbyA9IGxvYWRBbm9tYWx5QnlJZChhbm9tYWx5SWQpO1xuICBpbmZvLmxhc3RfcHJlZGljdGlvbl90aW1lID0gbGFzdFByZWRpY3Rpb25UaW1lO1xuICBzYXZlQW5vbWFseShhbm9tYWx5SWQsIGluZm8pO1xufVxuXG5leHBvcnQge1xuICBzYXZlQW5vbWFseSwgbG9hZEFub21hbHlCeUlkLCBsb2FkQW5vbWFseUJ5TmFtZSwgaW5zZXJ0QW5vbWFseSwgcmVtb3ZlQW5vbWFseSwgc2F2ZUFub21hbHlUeXBlSW5mbyxcbiAgZ2V0QW5vbWFseVR5cGVJbmZvLCBnZXRBbm9tYWx5SWRCeU5hbWUsIHNldEFub21hbHlTdGF0dXMsIHNldEFub21hbHlQcmVkaWN0aW9uVGltZVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc2VydmljZXMvYW5vbWFseVR5cGUudHMiLCIvKiFcbiAqIGJ5dGVzXG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDE0IFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBKZWQgV2F0c29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBieXRlcztcbm1vZHVsZS5leHBvcnRzLmZvcm1hdCA9IGZvcm1hdDtcbm1vZHVsZS5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGZvcm1hdFRob3VzYW5kc1JlZ0V4cCA9IC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nO1xuXG52YXIgZm9ybWF0RGVjaW1hbHNSZWdFeHAgPSAvKD86XFwuMCp8KFxcLlteMF0rKTArKSQvO1xuXG52YXIgbWFwID0ge1xuICBiOiAgMSxcbiAga2I6IDEgPDwgMTAsXG4gIG1iOiAxIDw8IDIwLFxuICBnYjogMSA8PCAzMCxcbiAgdGI6ICgoMSA8PCAzMCkgKiAxMDI0KVxufTtcblxudmFyIHBhcnNlUmVnRXhwID0gL14oKC18XFwrKT8oXFxkKyg/OlxcLlxcZCspPykpICooa2J8bWJ8Z2J8dGIpJC9pO1xuXG4vKipcbiAqIENvbnZlcnQgdGhlIGdpdmVuIHZhbHVlIGluIGJ5dGVzIGludG8gYSBzdHJpbmcgb3IgcGFyc2UgdG8gc3RyaW5nIHRvIGFuIGludGVnZXIgaW4gYnl0ZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHt7XG4gKiAgY2FzZTogW3N0cmluZ10sXG4gKiAgZGVjaW1hbFBsYWNlczogW251bWJlcl1cbiAqICBmaXhlZERlY2ltYWxzOiBbYm9vbGVhbl1cbiAqICB0aG91c2FuZHNTZXBhcmF0b3I6IFtzdHJpbmddXG4gKiAgdW5pdFNlcGFyYXRvcjogW3N0cmluZ11cbiAqICB9fSBbb3B0aW9uc10gYnl0ZXMgb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfG51bWJlcnxudWxsfVxuICovXG5cbmZ1bmN0aW9uIGJ5dGVzKHZhbHVlLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlKHZhbHVlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGZvcm1hdCh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBGb3JtYXQgdGhlIGdpdmVuIHZhbHVlIGluIGJ5dGVzIGludG8gYSBzdHJpbmcuXG4gKlxuICogSWYgdGhlIHZhbHVlIGlzIG5lZ2F0aXZlLCBpdCBpcyBrZXB0IGFzIHN1Y2guIElmIGl0IGlzIGEgZmxvYXQsXG4gKiBpdCBpcyByb3VuZGVkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmRlY2ltYWxQbGFjZXM9Ml1cbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5maXhlZERlY2ltYWxzPWZhbHNlXVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnRob3VzYW5kc1NlcGFyYXRvcj1dXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudW5pdD1dXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudW5pdFNlcGFyYXRvcj1dXG4gKlxuICogQHJldHVybnMge3N0cmluZ3xudWxsfVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcm1hdCh2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIU51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBtYWcgPSBNYXRoLmFicyh2YWx1ZSk7XG4gIHZhciB0aG91c2FuZHNTZXBhcmF0b3IgPSAob3B0aW9ucyAmJiBvcHRpb25zLnRob3VzYW5kc1NlcGFyYXRvcikgfHwgJyc7XG4gIHZhciB1bml0U2VwYXJhdG9yID0gKG9wdGlvbnMgJiYgb3B0aW9ucy51bml0U2VwYXJhdG9yKSB8fCAnJztcbiAgdmFyIGRlY2ltYWxQbGFjZXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLmRlY2ltYWxQbGFjZXMgIT09IHVuZGVmaW5lZCkgPyBvcHRpb25zLmRlY2ltYWxQbGFjZXMgOiAyO1xuICB2YXIgZml4ZWREZWNpbWFscyA9IEJvb2xlYW4ob3B0aW9ucyAmJiBvcHRpb25zLmZpeGVkRGVjaW1hbHMpO1xuICB2YXIgdW5pdCA9IChvcHRpb25zICYmIG9wdGlvbnMudW5pdCkgfHwgJyc7XG5cbiAgaWYgKCF1bml0IHx8ICFtYXBbdW5pdC50b0xvd2VyQ2FzZSgpXSkge1xuICAgIGlmIChtYWcgPj0gbWFwLnRiKSB7XG4gICAgICB1bml0ID0gJ1RCJztcbiAgICB9IGVsc2UgaWYgKG1hZyA+PSBtYXAuZ2IpIHtcbiAgICAgIHVuaXQgPSAnR0InO1xuICAgIH0gZWxzZSBpZiAobWFnID49IG1hcC5tYikge1xuICAgICAgdW5pdCA9ICdNQic7XG4gICAgfSBlbHNlIGlmIChtYWcgPj0gbWFwLmtiKSB7XG4gICAgICB1bml0ID0gJ0tCJztcbiAgICB9IGVsc2Uge1xuICAgICAgdW5pdCA9ICdCJztcbiAgICB9XG4gIH1cblxuICB2YXIgdmFsID0gdmFsdWUgLyBtYXBbdW5pdC50b0xvd2VyQ2FzZSgpXTtcbiAgdmFyIHN0ciA9IHZhbC50b0ZpeGVkKGRlY2ltYWxQbGFjZXMpO1xuXG4gIGlmICghZml4ZWREZWNpbWFscykge1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKGZvcm1hdERlY2ltYWxzUmVnRXhwLCAnJDEnKTtcbiAgfVxuXG4gIGlmICh0aG91c2FuZHNTZXBhcmF0b3IpIHtcbiAgICBzdHIgPSBzdHIucmVwbGFjZShmb3JtYXRUaG91c2FuZHNSZWdFeHAsIHRob3VzYW5kc1NlcGFyYXRvcik7XG4gIH1cblxuICByZXR1cm4gc3RyICsgdW5pdFNlcGFyYXRvciArIHVuaXQ7XG59XG5cbi8qKlxuICogUGFyc2UgdGhlIHN0cmluZyB2YWx1ZSBpbnRvIGFuIGludGVnZXIgaW4gYnl0ZXMuXG4gKlxuICogSWYgbm8gdW5pdCBpcyBnaXZlbiwgaXQgaXMgYXNzdW1lZCB0aGUgdmFsdWUgaXMgaW4gYnl0ZXMuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB2YWxcbiAqXG4gKiBAcmV0dXJucyB7bnVtYmVyfG51bGx9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcGFyc2UodmFsKSB7XG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyAmJiAhaXNOYU4odmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIFRlc3QgaWYgdGhlIHN0cmluZyBwYXNzZWQgaXMgdmFsaWRcbiAgdmFyIHJlc3VsdHMgPSBwYXJzZVJlZ0V4cC5leGVjKHZhbCk7XG4gIHZhciBmbG9hdFZhbHVlO1xuICB2YXIgdW5pdCA9ICdiJztcblxuICBpZiAoIXJlc3VsdHMpIHtcbiAgICAvLyBOb3RoaW5nIGNvdWxkIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBnaXZlbiBzdHJpbmdcbiAgICBmbG9hdFZhbHVlID0gcGFyc2VJbnQodmFsLCAxMCk7XG4gICAgdW5pdCA9ICdiJ1xuICB9IGVsc2Uge1xuICAgIC8vIFJldHJpZXZlIHRoZSB2YWx1ZSBhbmQgdGhlIHVuaXRcbiAgICBmbG9hdFZhbHVlID0gcGFyc2VGbG9hdChyZXN1bHRzWzFdKTtcbiAgICB1bml0ID0gcmVzdWx0c1s0XS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgcmV0dXJuIE1hdGguZmxvb3IobWFwW3VuaXRdICogZmxvYXRWYWx1ZSk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYnl0ZXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogc3RhdHVzZXNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTYgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBjb2RlcyA9IHJlcXVpcmUoJy4vY29kZXMuanNvbicpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBzdGF0dXNcblxuLy8gc3RhdHVzIGNvZGUgdG8gbWVzc2FnZSBtYXBcbnN0YXR1cy5TVEFUVVNfQ09ERVMgPSBjb2Rlc1xuXG4vLyBhcnJheSBvZiBzdGF0dXMgY29kZXNcbnN0YXR1cy5jb2RlcyA9IHBvcHVsYXRlU3RhdHVzZXNNYXAoc3RhdHVzLCBjb2RlcylcblxuLy8gc3RhdHVzIGNvZGVzIGZvciByZWRpcmVjdHNcbnN0YXR1cy5yZWRpcmVjdCA9IHtcbiAgMzAwOiB0cnVlLFxuICAzMDE6IHRydWUsXG4gIDMwMjogdHJ1ZSxcbiAgMzAzOiB0cnVlLFxuICAzMDU6IHRydWUsXG4gIDMwNzogdHJ1ZSxcbiAgMzA4OiB0cnVlXG59XG5cbi8vIHN0YXR1cyBjb2RlcyBmb3IgZW1wdHkgYm9kaWVzXG5zdGF0dXMuZW1wdHkgPSB7XG4gIDIwNDogdHJ1ZSxcbiAgMjA1OiB0cnVlLFxuICAzMDQ6IHRydWVcbn1cblxuLy8gc3RhdHVzIGNvZGVzIGZvciB3aGVuIHlvdSBzaG91bGQgcmV0cnkgdGhlIHJlcXVlc3RcbnN0YXR1cy5yZXRyeSA9IHtcbiAgNTAyOiB0cnVlLFxuICA1MDM6IHRydWUsXG4gIDUwNDogdHJ1ZVxufVxuXG4vKipcbiAqIFBvcHVsYXRlIHRoZSBzdGF0dXNlcyBtYXAgZm9yIGdpdmVuIGNvZGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwb3B1bGF0ZVN0YXR1c2VzTWFwIChzdGF0dXNlcywgY29kZXMpIHtcbiAgdmFyIGFyciA9IFtdXG5cbiAgT2JqZWN0LmtleXMoY29kZXMpLmZvckVhY2goZnVuY3Rpb24gZm9yRWFjaENvZGUgKGNvZGUpIHtcbiAgICB2YXIgbWVzc2FnZSA9IGNvZGVzW2NvZGVdXG4gICAgdmFyIHN0YXR1cyA9IE51bWJlcihjb2RlKVxuXG4gICAgLy8gUG9wdWxhdGUgcHJvcGVydGllc1xuICAgIHN0YXR1c2VzW3N0YXR1c10gPSBtZXNzYWdlXG4gICAgc3RhdHVzZXNbbWVzc2FnZV0gPSBzdGF0dXNcbiAgICBzdGF0dXNlc1ttZXNzYWdlLnRvTG93ZXJDYXNlKCldID0gc3RhdHVzXG5cbiAgICAvLyBBZGQgdG8gYXJyYXlcbiAgICBhcnIucHVzaChzdGF0dXMpXG4gIH0pXG5cbiAgcmV0dXJuIGFyclxufVxuXG4vKipcbiAqIEdldCB0aGUgc3RhdHVzIGNvZGUuXG4gKlxuICogR2l2ZW4gYSBudW1iZXIsIHRoaXMgd2lsbCB0aHJvdyBpZiBpdCBpcyBub3QgYSBrbm93biBzdGF0dXNcbiAqIGNvZGUsIG90aGVyd2lzZSB0aGUgY29kZSB3aWxsIGJlIHJldHVybmVkLiBHaXZlbiBhIHN0cmluZyxcbiAqIHRoZSBzdHJpbmcgd2lsbCBiZSBwYXJzZWQgZm9yIGEgbnVtYmVyIGFuZCByZXR1cm4gdGhlIGNvZGVcbiAqIGlmIHZhbGlkLCBvdGhlcndpc2Ugd2lsbCBsb29rdXAgdGhlIGNvZGUgYXNzdW1pbmcgdGhpcyBpc1xuICogdGhlIHN0YXR1cyBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gY29kZVxuICogQHJldHVybnMge251bWJlcn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBzdGF0dXMgKGNvZGUpIHtcbiAgaWYgKHR5cGVvZiBjb2RlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghc3RhdHVzW2NvZGVdKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc3RhdHVzIGNvZGU6ICcgKyBjb2RlKVxuICAgIHJldHVybiBjb2RlXG4gIH1cblxuICBpZiAodHlwZW9mIGNvZGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29kZSBtdXN0IGJlIGEgbnVtYmVyIG9yIHN0cmluZycpXG4gIH1cblxuICAvLyAnNDAzJ1xuICB2YXIgbiA9IHBhcnNlSW50KGNvZGUsIDEwKVxuICBpZiAoIWlzTmFOKG4pKSB7XG4gICAgaWYgKCFzdGF0dXNbbl0pIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0dXMgY29kZTogJyArIG4pXG4gICAgcmV0dXJuIG5cbiAgfVxuXG4gIG4gPSBzdGF0dXNbY29kZS50b0xvd2VyQ2FzZSgpXVxuICBpZiAoIW4pIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzdGF0dXMgbWVzc2FnZTogXCInICsgY29kZSArICdcIicpXG4gIHJldHVybiBuXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvc3RhdHVzZXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogdHlwZS1pc1xuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgdHlwZXIgPSByZXF1aXJlKCdtZWRpYS10eXBlcicpXG52YXIgbWltZSA9IHJlcXVpcmUoJ21pbWUtdHlwZXMnKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mcmVxdWVzdFxubW9kdWxlLmV4cG9ydHMuaXMgPSB0eXBlaXNcbm1vZHVsZS5leHBvcnRzLmhhc0JvZHkgPSBoYXNib2R5XG5tb2R1bGUuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemVcbm1vZHVsZS5leHBvcnRzLm1hdGNoID0gbWltZU1hdGNoXG5cbi8qKlxuICogQ29tcGFyZSBhIGB2YWx1ZWAgY29udGVudC10eXBlIHdpdGggYHR5cGVzYC5cbiAqIEVhY2ggYHR5cGVgIGNhbiBiZSBhbiBleHRlbnNpb24gbGlrZSBgaHRtbGAsXG4gKiBhIHNwZWNpYWwgc2hvcnRjdXQgbGlrZSBgbXVsdGlwYXJ0YCBvciBgdXJsZW5jb2RlZGAsXG4gKiBvciBhIG1pbWUgdHlwZS5cbiAqXG4gKiBJZiBubyB0eXBlcyBtYXRjaCwgYGZhbHNlYCBpcyByZXR1cm5lZC5cbiAqIE90aGVyd2lzZSwgdGhlIGZpcnN0IGB0eXBlYCB0aGF0IG1hdGNoZXMgaXMgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge0FycmF5fSB0eXBlc1xuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHR5cGVpcyAodmFsdWUsIHR5cGVzXykge1xuICB2YXIgaVxuICB2YXIgdHlwZXMgPSB0eXBlc19cblxuICAvLyByZW1vdmUgcGFyYW1ldGVycyBhbmQgbm9ybWFsaXplXG4gIHZhciB2YWwgPSB0cnlOb3JtYWxpemVUeXBlKHZhbHVlKVxuXG4gIC8vIG5vIHR5cGUgb3IgaW52YWxpZFxuICBpZiAoIXZhbCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gc3VwcG9ydCBmbGF0dGVuZWQgYXJndW1lbnRzXG4gIGlmICh0eXBlcyAmJiAhQXJyYXkuaXNBcnJheSh0eXBlcykpIHtcbiAgICB0eXBlcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSlcbiAgICBmb3IgKGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHR5cGVzW2ldID0gYXJndW1lbnRzW2kgKyAxXVxuICAgIH1cbiAgfVxuXG4gIC8vIG5vIHR5cGVzLCByZXR1cm4gdGhlIGNvbnRlbnQgdHlwZVxuICBpZiAoIXR5cGVzIHx8ICF0eXBlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdmFsXG4gIH1cblxuICB2YXIgdHlwZVxuICBmb3IgKGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobWltZU1hdGNoKG5vcm1hbGl6ZSh0eXBlID0gdHlwZXNbaV0pLCB2YWwpKSB7XG4gICAgICByZXR1cm4gdHlwZVswXSA9PT0gJysnIHx8IHR5cGUuaW5kZXhPZignKicpICE9PSAtMVxuICAgICAgICA/IHZhbFxuICAgICAgICA6IHR5cGVcbiAgICB9XG4gIH1cblxuICAvLyBubyBtYXRjaGVzXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgcmVxdWVzdCBoYXMgYSByZXF1ZXN0IGJvZHkuXG4gKiBBIHJlcXVlc3Qgd2l0aCBhIGJvZHkgX19tdXN0X18gZWl0aGVyIGhhdmUgYHRyYW5zZmVyLWVuY29kaW5nYFxuICogb3IgYGNvbnRlbnQtbGVuZ3RoYCBoZWFkZXJzIHNldC5cbiAqIGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjNC5odG1sI3NlYzQuM1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSByZXF1ZXN0XG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGhhc2JvZHkgKHJlcSkge1xuICByZXR1cm4gcmVxLmhlYWRlcnNbJ3RyYW5zZmVyLWVuY29kaW5nJ10gIT09IHVuZGVmaW5lZCB8fFxuICAgICFpc05hTihyZXEuaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSlcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgaW5jb21pbmcgcmVxdWVzdCBjb250YWlucyB0aGUgXCJDb250ZW50LVR5cGVcIlxuICogaGVhZGVyIGZpZWxkLCBhbmQgaXQgY29udGFpbnMgYW55IG9mIHRoZSBnaXZlIG1pbWUgYHR5cGVgcy5cbiAqIElmIHRoZXJlIGlzIG5vIHJlcXVlc3QgYm9keSwgYG51bGxgIGlzIHJldHVybmVkLlxuICogSWYgdGhlcmUgaXMgbm8gY29udGVudCB0eXBlLCBgZmFsc2VgIGlzIHJldHVybmVkLlxuICogT3RoZXJ3aXNlLCBpdCByZXR1cm5zIHRoZSBmaXJzdCBgdHlwZWAgdGhhdCBtYXRjaGVzLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAvLyBXaXRoIENvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XG4gKiAgICAgdGhpcy5pcygnaHRtbCcpOyAvLyA9PiAnaHRtbCdcbiAqICAgICB0aGlzLmlzKCd0ZXh0L2h0bWwnKTsgLy8gPT4gJ3RleHQvaHRtbCdcbiAqICAgICB0aGlzLmlzKCd0ZXh0LyonLCAnYXBwbGljYXRpb24vanNvbicpOyAvLyA9PiAndGV4dC9odG1sJ1xuICpcbiAqICAgICAvLyBXaGVuIENvbnRlbnQtVHlwZSBpcyBhcHBsaWNhdGlvbi9qc29uXG4gKiAgICAgdGhpcy5pcygnanNvbicsICd1cmxlbmNvZGVkJyk7IC8vID0+ICdqc29uJ1xuICogICAgIHRoaXMuaXMoJ2FwcGxpY2F0aW9uL2pzb24nKTsgLy8gPT4gJ2FwcGxpY2F0aW9uL2pzb24nXG4gKiAgICAgdGhpcy5pcygnaHRtbCcsICdhcHBsaWNhdGlvbi8qJyk7IC8vID0+ICdhcHBsaWNhdGlvbi9qc29uJ1xuICpcbiAqICAgICB0aGlzLmlzKCdodG1sJyk7IC8vID0+IGZhbHNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHR5cGVzLi4uXG4gKiBAcmV0dXJuIHtTdHJpbmd8ZmFsc2V8bnVsbH1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiB0eXBlb2ZyZXF1ZXN0IChyZXEsIHR5cGVzXykge1xuICB2YXIgdHlwZXMgPSB0eXBlc19cblxuICAvLyBubyBib2R5XG4gIGlmICghaGFzYm9keShyZXEpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8vIHN1cHBvcnQgZmxhdHRlbmVkIGFyZ3VtZW50c1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICB0eXBlcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0eXBlc1tpXSA9IGFyZ3VtZW50c1tpICsgMV1cbiAgICB9XG4gIH1cblxuICAvLyByZXF1ZXN0IGNvbnRlbnQgdHlwZVxuICB2YXIgdmFsdWUgPSByZXEuaGVhZGVyc1snY29udGVudC10eXBlJ11cblxuICByZXR1cm4gdHlwZWlzKHZhbHVlLCB0eXBlcylcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSBtaW1lIHR5cGUuXG4gKiBJZiBpdCdzIGEgc2hvcnRoYW5kLCBleHBhbmQgaXQgdG8gYSB2YWxpZCBtaW1lIHR5cGUuXG4gKlxuICogSW4gZ2VuZXJhbCwgeW91IHByb2JhYmx5IHdhbnQ6XG4gKlxuICogICB2YXIgdHlwZSA9IGlzKHJlcSwgWyd1cmxlbmNvZGVkJywgJ2pzb24nLCAnbXVsdGlwYXJ0J10pO1xuICpcbiAqIFRoZW4gdXNlIHRoZSBhcHByb3ByaWF0ZSBib2R5IHBhcnNlcnMuXG4gKiBUaGVzZSB0aHJlZSBhcmUgdGhlIG1vc3QgY29tbW9uIHJlcXVlc3QgYm9keSB0eXBlc1xuICogYW5kIGFyZSB0aHVzIGVuc3VyZWQgdG8gd29yay5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBub3JtYWxpemUgKHR5cGUpIHtcbiAgaWYgKHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGludmFsaWQgdHlwZVxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAndXJsZW5jb2RlZCc6XG4gICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICBjYXNlICdtdWx0aXBhcnQnOlxuICAgICAgcmV0dXJuICdtdWx0aXBhcnQvKidcbiAgfVxuXG4gIGlmICh0eXBlWzBdID09PSAnKycpIHtcbiAgICAvLyBcIitqc29uXCIgLT4gXCIqLyoranNvblwiIGV4cGFuZG9cbiAgICByZXR1cm4gJyovKicgKyB0eXBlXG4gIH1cblxuICByZXR1cm4gdHlwZS5pbmRleE9mKCcvJykgPT09IC0xXG4gICAgPyBtaW1lLmxvb2t1cCh0eXBlKVxuICAgIDogdHlwZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGBleHBlY3RlZGAgbWltZSB0eXBlXG4gKiBtYXRjaGVzIGBhY3R1YWxgIG1pbWUgdHlwZSB3aXRoXG4gKiB3aWxkY2FyZCBhbmQgK3N1ZmZpeCBzdXBwb3J0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBleHBlY3RlZFxuICogQHBhcmFtIHtTdHJpbmd9IGFjdHVhbFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbWltZU1hdGNoIChleHBlY3RlZCwgYWN0dWFsKSB7XG4gIC8vIGludmFsaWQgdHlwZVxuICBpZiAoZXhwZWN0ZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBzcGxpdCB0eXBlc1xuICB2YXIgYWN0dWFsUGFydHMgPSBhY3R1YWwuc3BsaXQoJy8nKVxuICB2YXIgZXhwZWN0ZWRQYXJ0cyA9IGV4cGVjdGVkLnNwbGl0KCcvJylcblxuICAvLyBpbnZhbGlkIGZvcm1hdFxuICBpZiAoYWN0dWFsUGFydHMubGVuZ3RoICE9PSAyIHx8IGV4cGVjdGVkUGFydHMubGVuZ3RoICE9PSAyKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyB2YWxpZGF0ZSB0eXBlXG4gIGlmIChleHBlY3RlZFBhcnRzWzBdICE9PSAnKicgJiYgZXhwZWN0ZWRQYXJ0c1swXSAhPT0gYWN0dWFsUGFydHNbMF0pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIHZhbGlkYXRlIHN1ZmZpeCB3aWxkY2FyZFxuICBpZiAoZXhwZWN0ZWRQYXJ0c1sxXS5zdWJzdHIoMCwgMikgPT09ICcqKycpIHtcbiAgICByZXR1cm4gZXhwZWN0ZWRQYXJ0c1sxXS5sZW5ndGggPD0gYWN0dWFsUGFydHNbMV0ubGVuZ3RoICsgMSAmJlxuICAgICAgZXhwZWN0ZWRQYXJ0c1sxXS5zdWJzdHIoMSkgPT09IGFjdHVhbFBhcnRzWzFdLnN1YnN0cigxIC0gZXhwZWN0ZWRQYXJ0c1sxXS5sZW5ndGgpXG4gIH1cblxuICAvLyB2YWxpZGF0ZSBzdWJ0eXBlXG4gIGlmIChleHBlY3RlZFBhcnRzWzFdICE9PSAnKicgJiYgZXhwZWN0ZWRQYXJ0c1sxXSAhPT0gYWN0dWFsUGFydHNbMV0pIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgdHlwZSBhbmQgcmVtb3ZlIHBhcmFtZXRlcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVR5cGUgKHZhbHVlKSB7XG4gIC8vIHBhcnNlIHRoZSB0eXBlXG4gIHZhciB0eXBlID0gdHlwZXIucGFyc2UodmFsdWUpXG5cbiAgLy8gcmVtb3ZlIHRoZSBwYXJhbWV0ZXJzXG4gIHR5cGUucGFyYW1ldGVycyA9IHVuZGVmaW5lZFxuXG4gIC8vIHJlZm9ybWF0IGl0XG4gIHJldHVybiB0eXBlci5mb3JtYXQodHlwZSlcbn1cblxuLyoqXG4gKiBUcnkgdG8gbm9ybWFsaXplIGEgdHlwZSBhbmQgcmVtb3ZlIHBhcmFtZXRlcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHRyeU5vcm1hbGl6ZVR5cGUgKHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVR5cGUodmFsdWUpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy90eXBlLWlzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIHBhcnNldXJsXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTcgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciB1cmwgPSByZXF1aXJlKCd1cmwnKVxudmFyIHBhcnNlID0gdXJsLnBhcnNlXG52YXIgVXJsID0gdXJsLlVybFxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2V1cmxcbm1vZHVsZS5leHBvcnRzLm9yaWdpbmFsID0gb3JpZ2luYWx1cmxcblxuLyoqXG4gKiBQYXJzZSB0aGUgYHJlcWAgdXJsIHdpdGggbWVtb2l6YXRpb24uXG4gKlxuICogQHBhcmFtIHtTZXJ2ZXJSZXF1ZXN0fSByZXFcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZXVybCAocmVxKSB7XG4gIHZhciB1cmwgPSByZXEudXJsXG5cbiAgaWYgKHVybCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gVVJMIGlzIHVuZGVmaW5lZFxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHZhciBwYXJzZWQgPSByZXEuX3BhcnNlZFVybFxuXG4gIGlmIChmcmVzaCh1cmwsIHBhcnNlZCkpIHtcbiAgICAvLyBSZXR1cm4gY2FjaGVkIFVSTCBwYXJzZVxuICAgIHJldHVybiBwYXJzZWRcbiAgfVxuXG4gIC8vIFBhcnNlIHRoZSBVUkxcbiAgcGFyc2VkID0gZmFzdHBhcnNlKHVybClcbiAgcGFyc2VkLl9yYXcgPSB1cmxcblxuICByZXR1cm4gKHJlcS5fcGFyc2VkVXJsID0gcGFyc2VkKVxufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgYHJlcWAgb3JpZ2luYWwgdXJsIHdpdGggZmFsbGJhY2sgYW5kIG1lbW9pemF0aW9uLlxuICpcbiAqIEBwYXJhbSB7U2VydmVyUmVxdWVzdH0gcmVxXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gb3JpZ2luYWx1cmwgKHJlcSkge1xuICB2YXIgdXJsID0gcmVxLm9yaWdpbmFsVXJsXG5cbiAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gRmFsbGJhY2tcbiAgICByZXR1cm4gcGFyc2V1cmwocmVxKVxuICB9XG5cbiAgdmFyIHBhcnNlZCA9IHJlcS5fcGFyc2VkT3JpZ2luYWxVcmxcblxuICBpZiAoZnJlc2godXJsLCBwYXJzZWQpKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBVUkwgcGFyc2VcbiAgICByZXR1cm4gcGFyc2VkXG4gIH1cblxuICAvLyBQYXJzZSB0aGUgVVJMXG4gIHBhcnNlZCA9IGZhc3RwYXJzZSh1cmwpXG4gIHBhcnNlZC5fcmF3ID0gdXJsXG5cbiAgcmV0dXJuIChyZXEuX3BhcnNlZE9yaWdpbmFsVXJsID0gcGFyc2VkKVxufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgYHN0cmAgdXJsIHdpdGggZmFzdC1wYXRoIHNob3J0LWN1dC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZhc3RwYXJzZSAoc3RyKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCBzdHIuY2hhckNvZGVBdCgwKSAhPT0gMHgyZiAvKiAvICovKSB7XG4gICAgcmV0dXJuIHBhcnNlKHN0cilcbiAgfVxuXG4gIHZhciBwYXRobmFtZSA9IHN0clxuICB2YXIgcXVlcnkgPSBudWxsXG4gIHZhciBzZWFyY2ggPSBudWxsXG5cbiAgLy8gVGhpcyB0YWtlcyB0aGUgcmVnZXhwIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pveWVudC9ub2RlL3B1bGwvNzg3OFxuICAvLyBXaGljaCBpcyAvXihcXC9bXj8jXFxzXSopKFxcP1teI1xcc10qKT8kL1xuICAvLyBBbmQgdW5yb2xscyBpdCBpbnRvIGEgZm9yIGxvb3BcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICBjYXNlIDB4M2Y6IC8qID8gICovXG4gICAgICAgIGlmIChzZWFyY2ggPT09IG51bGwpIHtcbiAgICAgICAgICBwYXRobmFtZSA9IHN0ci5zdWJzdHJpbmcoMCwgaSlcbiAgICAgICAgICBxdWVyeSA9IHN0ci5zdWJzdHJpbmcoaSArIDEpXG4gICAgICAgICAgc2VhcmNoID0gc3RyLnN1YnN0cmluZyhpKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDB4MDk6IC8qIFxcdCAqL1xuICAgICAgY2FzZSAweDBhOiAvKiBcXG4gKi9cbiAgICAgIGNhc2UgMHgwYzogLyogXFxmICovXG4gICAgICBjYXNlIDB4MGQ6IC8qIFxcciAqL1xuICAgICAgY2FzZSAweDIwOiAvKiAgICAqL1xuICAgICAgY2FzZSAweDIzOiAvKiAjICAqL1xuICAgICAgY2FzZSAweGEwOlxuICAgICAgY2FzZSAweGZlZmY6XG4gICAgICAgIHJldHVybiBwYXJzZShzdHIpXG4gICAgfVxuICB9XG5cbiAgdmFyIHVybCA9IFVybCAhPT0gdW5kZWZpbmVkXG4gICAgPyBuZXcgVXJsKClcbiAgICA6IHt9XG4gIHVybC5wYXRoID0gc3RyXG4gIHVybC5ocmVmID0gc3RyXG4gIHVybC5wYXRobmFtZSA9IHBhdGhuYW1lXG4gIHVybC5xdWVyeSA9IHF1ZXJ5XG4gIHVybC5zZWFyY2ggPSBzZWFyY2hcblxuICByZXR1cm4gdXJsXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHBhcnNlZCBpcyBzdGlsbCBmcmVzaCBmb3IgdXJsLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJzZWRVcmxcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZyZXNoICh1cmwsIHBhcnNlZFVybCkge1xuICByZXR1cm4gdHlwZW9mIHBhcnNlZFVybCA9PT0gJ29iamVjdCcgJiZcbiAgICBwYXJzZWRVcmwgIT09IG51bGwgJiZcbiAgICAoVXJsID09PSB1bmRlZmluZWQgfHwgcGFyc2VkVXJsIGluc3RhbmNlb2YgVXJsKSAmJlxuICAgIHBhcnNlZFVybC5fcmF3ID09PSB1cmxcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9wYXJzZXVybC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZVwiKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvcHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gMjVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanNcbi8vIG1vZHVsZSBpZCA9IDI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qc1xuLy8gbW9kdWxlIGlkID0gMjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanNcbi8vIG1vZHVsZSBpZCA9IDI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgQlJFQUsgPSB7fTtcbnZhciBSRVRVUk4gPSB7fTtcbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUikge1xuICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7XG4gIHZhciBmID0gY3R4KGZuLCB0aGF0LCBlbnRyaWVzID8gMiA6IDEpO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXRlcmFibGUgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgLy8gZmFzdCBjYXNlIGZvciBhcnJheXMgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yXG4gIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykge1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmIChyZXN1bHQgPT09IEJSRUFLIHx8IHJlc3VsdCA9PT0gUkVUVVJOKSByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuZXhwb3J0cy5CUkVBSyA9IEJSRUFLO1xuZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Zvci1vZi5qc1xuLy8gbW9kdWxlIGlkID0gMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcblxuY29uc3QgREFUQV9QQVRIID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2RhdGEnKTtcbmNvbnN0IEFOQUxZVElDU19QQVRIID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uL3NyYycpO1xuY29uc3QgQU5PTUFMSUVTX1BBVEggPSBwYXRoLmpvaW4oQU5BTFlUSUNTX1BBVEgsICdhbm9tYWxpZXMnKTtcbmNvbnN0IFNFR01FTlRTX1BBVEggPSBwYXRoLmpvaW4oQU5BTFlUSUNTX1BBVEgsICdzZWdtZW50cycpO1xuY29uc3QgTUVUUklDU19QQVRIID0gcGF0aC5qb2luKEFOQUxZVElDU19QQVRILCAnbWV0cmljcycpO1xuXG5leHBvcnQgeyBEQVRBX1BBVEgsIEFOQUxZVElDU19QQVRILCBBTk9NQUxJRVNfUEFUSCwgU0VHTUVOVFNfUEFUSCwgTUVUUklDU19QQVRIIH1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2NvbmZpZy50cyIsIi8qIVxuICogZXhwcmVzc1xuICogQ29weXJpZ2h0KGMpIDIwMDktMjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTMgUm9tYW4gU2h0eWxtYW5cbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9leHByZXNzJyk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMzJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBjb250ZW50LXR5cGVcbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggKiggXCI7XCIgcGFyYW1ldGVyICkgaW4gUkZDIDcyMzEgc2VjIDMuMS4xLjFcbiAqXG4gKiBwYXJhbWV0ZXIgICAgID0gdG9rZW4gXCI9XCIgKCB0b2tlbiAvIHF1b3RlZC1zdHJpbmcgKVxuICogdG9rZW4gICAgICAgICA9IDEqdGNoYXJcbiAqIHRjaGFyICAgICAgICAgPSBcIiFcIiAvIFwiI1wiIC8gXCIkXCIgLyBcIiVcIiAvIFwiJlwiIC8gXCInXCIgLyBcIipcIlxuICogICAgICAgICAgICAgICAvIFwiK1wiIC8gXCItXCIgLyBcIi5cIiAvIFwiXlwiIC8gXCJfXCIgLyBcImBcIiAvIFwifFwiIC8gXCJ+XCJcbiAqICAgICAgICAgICAgICAgLyBESUdJVCAvIEFMUEhBXG4gKiAgICAgICAgICAgICAgIDsgYW55IFZDSEFSLCBleGNlcHQgZGVsaW1pdGVyc1xuICogcXVvdGVkLXN0cmluZyA9IERRVU9URSAqKCBxZHRleHQgLyBxdW90ZWQtcGFpciApIERRVU9URVxuICogcWR0ZXh0ICAgICAgICA9IEhUQUIgLyBTUCAvICV4MjEgLyAleDIzLTVCIC8gJXg1RC03RSAvIG9icy10ZXh0XG4gKiBvYnMtdGV4dCAgICAgID0gJXg4MC1GRlxuICogcXVvdGVkLXBhaXIgICA9IFwiXFxcIiAoIEhUQUIgLyBTUCAvIFZDSEFSIC8gb2JzLXRleHQgKVxuICovXG52YXIgUEFSQU1fUkVHRVhQID0gLzsgKihbISMkJSYnKisuXl9gfH4wLTlBLVphLXotXSspICo9ICooXCIoPzpbXFx1MDAwYlxcdTAwMjBcXHUwMDIxXFx1MDAyMy1cXHUwMDViXFx1MDA1ZC1cXHUwMDdlXFx1MDA4MC1cXHUwMGZmXXxcXFxcW1xcdTAwMGJcXHUwMDIwLVxcdTAwZmZdKSpcInxbISMkJSYnKisuXl9gfH4wLTlBLVphLXotXSspICovZ1xudmFyIFRFWFRfUkVHRVhQID0gL15bXFx1MDAwYlxcdTAwMjAtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl0rJC9cbnZhciBUT0tFTl9SRUdFWFAgPSAvXlshIyQlJicqKy5eX2B8fjAtOUEtWmEtei1dKyQvXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHF1b3RlZC1wYWlyIGluIFJGQyA3MjMwIHNlYyAzLjIuNlxuICpcbiAqIHF1b3RlZC1wYWlyID0gXCJcXFwiICggSFRBQiAvIFNQIC8gVkNIQVIgLyBvYnMtdGV4dCApXG4gKiBvYnMtdGV4dCAgICA9ICV4ODAtRkZcbiAqL1xudmFyIFFFU0NfUkVHRVhQID0gL1xcXFwoW1xcdTAwMGJcXHUwMDIwLVxcdTAwZmZdKS9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGNoYXJzIHRoYXQgbXVzdCBiZSBxdW90ZWQtcGFpciBpbiBSRkMgNzIzMCBzZWMgMy4yLjZcbiAqL1xudmFyIFFVT1RFX1JFR0VYUCA9IC8oW1xcXFxcIl0pL2dcblxuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggdHlwZSBpbiBSRkMgNzIzMSBzZWMgMy4xLjEuMVxuICpcbiAqIG1lZGlhLXR5cGUgPSB0eXBlIFwiL1wiIHN1YnR5cGVcbiAqIHR5cGUgICAgICAgPSB0b2tlblxuICogc3VidHlwZSAgICA9IHRva2VuXG4gKi9cbnZhciBUWVBFX1JFR0VYUCA9IC9eWyEjJCUmJyorLl5fYHx+MC05QS1aYS16LV0rXFwvWyEjJCUmJyorLl5fYHx+MC05QS1aYS16LV0rJC9cblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5leHBvcnRzLmZvcm1hdCA9IGZvcm1hdFxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlXG5cbi8qKlxuICogRm9ybWF0IG9iamVjdCB0byBtZWRpYSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXQgKG9iaikge1xuICBpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IG9iaiBpcyByZXF1aXJlZCcpXG4gIH1cblxuICB2YXIgcGFyYW1ldGVycyA9IG9iai5wYXJhbWV0ZXJzXG4gIHZhciB0eXBlID0gb2JqLnR5cGVcblxuICBpZiAoIXR5cGUgfHwgIVRZUEVfUkVHRVhQLnRlc3QodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHR5cGUnKVxuICB9XG5cbiAgdmFyIHN0cmluZyA9IHR5cGVcblxuICAvLyBhcHBlbmQgcGFyYW1ldGVyc1xuICBpZiAocGFyYW1ldGVycyAmJiB0eXBlb2YgcGFyYW1ldGVycyA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgcGFyYW1cbiAgICB2YXIgcGFyYW1zID0gT2JqZWN0LmtleXMocGFyYW1ldGVycykuc29ydCgpXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkrKykge1xuICAgICAgcGFyYW0gPSBwYXJhbXNbaV1cblxuICAgICAgaWYgKCFUT0tFTl9SRUdFWFAudGVzdChwYXJhbSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgbmFtZScpXG4gICAgICB9XG5cbiAgICAgIHN0cmluZyArPSAnOyAnICsgcGFyYW0gKyAnPScgKyBxc3RyaW5nKHBhcmFtZXRlcnNbcGFyYW1dKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHJpbmdcbn1cblxuLyoqXG4gKiBQYXJzZSBtZWRpYSB0eXBlIHRvIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHN0cmluZ1xuICogQHJldHVybiB7T2JqZWN0fVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHBhcnNlIChzdHJpbmcpIHtcbiAgaWYgKCFzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBzdHJpbmcgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgLy8gc3VwcG9ydCByZXEvcmVzLWxpa2Ugb2JqZWN0cyBhcyBhcmd1bWVudFxuICB2YXIgaGVhZGVyID0gdHlwZW9mIHN0cmluZyA9PT0gJ29iamVjdCdcbiAgICA/IGdldGNvbnRlbnR0eXBlKHN0cmluZylcbiAgICA6IHN0cmluZ1xuXG4gIGlmICh0eXBlb2YgaGVhZGVyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHN0cmluZyBpcyByZXF1aXJlZCB0byBiZSBhIHN0cmluZycpXG4gIH1cblxuICB2YXIgaW5kZXggPSBoZWFkZXIuaW5kZXhPZignOycpXG4gIHZhciB0eXBlID0gaW5kZXggIT09IC0xXG4gICAgPyBoZWFkZXIuc3Vic3RyKDAsIGluZGV4KS50cmltKClcbiAgICA6IGhlYWRlci50cmltKClcblxuICBpZiAoIVRZUEVfUkVHRVhQLnRlc3QodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIG1lZGlhIHR5cGUnKVxuICB9XG5cbiAgdmFyIG9iaiA9IG5ldyBDb250ZW50VHlwZSh0eXBlLnRvTG93ZXJDYXNlKCkpXG5cbiAgLy8gcGFyc2UgcGFyYW1ldGVyc1xuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgdmFyIGtleVxuICAgIHZhciBtYXRjaFxuICAgIHZhciB2YWx1ZVxuXG4gICAgUEFSQU1fUkVHRVhQLmxhc3RJbmRleCA9IGluZGV4XG5cbiAgICB3aGlsZSAoKG1hdGNoID0gUEFSQU1fUkVHRVhQLmV4ZWMoaGVhZGVyKSkpIHtcbiAgICAgIGlmIChtYXRjaC5pbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgICAgIH1cblxuICAgICAgaW5kZXggKz0gbWF0Y2hbMF0ubGVuZ3RoXG4gICAgICBrZXkgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG4gICAgICB2YWx1ZSA9IG1hdGNoWzJdXG5cbiAgICAgIGlmICh2YWx1ZVswXSA9PT0gJ1wiJykge1xuICAgICAgICAvLyByZW1vdmUgcXVvdGVzIGFuZCBlc2NhcGVzXG4gICAgICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgICAuc3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpXG4gICAgICAgICAgLnJlcGxhY2UoUUVTQ19SRUdFWFAsICckMScpXG4gICAgICB9XG5cbiAgICAgIG9iai5wYXJhbWV0ZXJzW2tleV0gPSB2YWx1ZVxuICAgIH1cblxuICAgIGlmIChpbmRleCAhPT0gaGVhZGVyLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqXG59XG5cbi8qKlxuICogR2V0IGNvbnRlbnQtdHlwZSBmcm9tIHJlcS9yZXMgb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH1cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0Y29udGVudHR5cGUgKG9iaikge1xuICB2YXIgaGVhZGVyXG5cbiAgaWYgKHR5cGVvZiBvYmouZ2V0SGVhZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gcmVzLWxpa2VcbiAgICBoZWFkZXIgPSBvYmouZ2V0SGVhZGVyKCdjb250ZW50LXR5cGUnKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvYmouaGVhZGVycyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyByZXEtbGlrZVxuICAgIGhlYWRlciA9IG9iai5oZWFkZXJzICYmIG9iai5oZWFkZXJzWydjb250ZW50LXR5cGUnXVxuICB9XG5cbiAgaWYgKHR5cGVvZiBoZWFkZXIgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29udGVudC10eXBlIGhlYWRlciBpcyBtaXNzaW5nIGZyb20gb2JqZWN0JylcbiAgfVxuXG4gIHJldHVybiBoZWFkZXJcbn1cblxuLyoqXG4gKiBRdW90ZSBhIHN0cmluZyBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbFxuICogQHJldHVybiB7c3RyaW5nfVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBxc3RyaW5nICh2YWwpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyh2YWwpXG5cbiAgLy8gbm8gbmVlZCB0byBxdW90ZSB0b2tlbnNcbiAgaWYgKFRPS0VOX1JFR0VYUC50ZXN0KHN0cikpIHtcbiAgICByZXR1cm4gc3RyXG4gIH1cblxuICBpZiAoc3RyLmxlbmd0aCA+IDAgJiYgIVRFWFRfUkVHRVhQLnRlc3Qoc3RyKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgcGFyYW1ldGVyIHZhbHVlJylcbiAgfVxuXG4gIHJldHVybiAnXCInICsgc3RyLnJlcGxhY2UoUVVPVEVfUkVHRVhQLCAnXFxcXCQxJykgKyAnXCInXG59XG5cbi8qKlxuICogQ2xhc3MgdG8gcmVwcmVzZW50IGEgY29udGVudCB0eXBlLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gQ29udGVudFR5cGUgKHR5cGUpIHtcbiAgdGhpcy5wYXJhbWV0ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuICB0aGlzLnR5cGUgPSB0eXBlXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29udGVudC10eXBlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGh0dHAtZXJyb3JzXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE2IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdodHRwLWVycm9ycycpXG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCdzZXRwcm90b3R5cGVvZicpXG52YXIgc3RhdHVzZXMgPSByZXF1aXJlKCdzdGF0dXNlcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFcnJvclxubW9kdWxlLmV4cG9ydHMuSHR0cEVycm9yID0gY3JlYXRlSHR0cEVycm9yQ29uc3RydWN0b3IoKVxuXG4vLyBQb3B1bGF0ZSBleHBvcnRzIGZvciBhbGwgY29uc3RydWN0b3JzXG5wb3B1bGF0ZUNvbnN0cnVjdG9yRXhwb3J0cyhtb2R1bGUuZXhwb3J0cywgc3RhdHVzZXMuY29kZXMsIG1vZHVsZS5leHBvcnRzLkh0dHBFcnJvcilcblxuLyoqXG4gKiBHZXQgdGhlIGNvZGUgY2xhc3Mgb2YgYSBzdGF0dXMgY29kZS5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29kZUNsYXNzIChzdGF0dXMpIHtcbiAgcmV0dXJuIE51bWJlcihTdHJpbmcoc3RhdHVzKS5jaGFyQXQoMCkgKyAnMDAnKVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBIVFRQIEVycm9yLlxuICpcbiAqIEByZXR1cm5zIHtFcnJvcn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFcnJvciAoKSB7XG4gIC8vIHNvIG11Y2ggYXJpdHkgZ29pbmcgb24gfl9+XG4gIHZhciBlcnJcbiAgdmFyIG1zZ1xuICB2YXIgc3RhdHVzID0gNTAwXG4gIHZhciBwcm9wcyA9IHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3VtZW50c1tpXVxuICAgIGlmIChhcmcgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgZXJyID0gYXJnXG4gICAgICBzdGF0dXMgPSBlcnIuc3RhdHVzIHx8IGVyci5zdGF0dXNDb2RlIHx8IHN0YXR1c1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICBtc2cgPSBhcmdcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHN0YXR1cyA9IGFyZ1xuICAgICAgICBpZiAoaSAhPT0gMCkge1xuICAgICAgICAgIGRlcHJlY2F0ZSgnbm9uLWZpcnN0LWFyZ3VtZW50IHN0YXR1cyBjb2RlOyByZXBsYWNlIHdpdGggY3JlYXRlRXJyb3IoJyArIGFyZyArICcsIC4uLiknKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBwcm9wcyA9IGFyZ1xuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RhdHVzID09PSAnbnVtYmVyJyAmJiAoc3RhdHVzIDwgNDAwIHx8IHN0YXR1cyA+PSA2MDApKSB7XG4gICAgZGVwcmVjYXRlKCdub24tZXJyb3Igc3RhdHVzIGNvZGU7IHVzZSBvbmx5IDR4eCBvciA1eHggc3RhdHVzIGNvZGVzJylcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RhdHVzICE9PSAnbnVtYmVyJyB8fFxuICAgICghc3RhdHVzZXNbc3RhdHVzXSAmJiAoc3RhdHVzIDwgNDAwIHx8IHN0YXR1cyA+PSA2MDApKSkge1xuICAgIHN0YXR1cyA9IDUwMFxuICB9XG5cbiAgLy8gY29uc3RydWN0b3JcbiAgdmFyIEh0dHBFcnJvciA9IGNyZWF0ZUVycm9yW3N0YXR1c10gfHwgY3JlYXRlRXJyb3JbY29kZUNsYXNzKHN0YXR1cyldXG5cbiAgaWYgKCFlcnIpIHtcbiAgICAvLyBjcmVhdGUgZXJyb3JcbiAgICBlcnIgPSBIdHRwRXJyb3JcbiAgICAgID8gbmV3IEh0dHBFcnJvcihtc2cpXG4gICAgICA6IG5ldyBFcnJvcihtc2cgfHwgc3RhdHVzZXNbc3RhdHVzXSlcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIGNyZWF0ZUVycm9yKVxuICB9XG5cbiAgaWYgKCFIdHRwRXJyb3IgfHwgIShlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3IpIHx8IGVyci5zdGF0dXMgIT09IHN0YXR1cykge1xuICAgIC8vIGFkZCBwcm9wZXJ0aWVzIHRvIGdlbmVyaWMgZXJyb3JcbiAgICBlcnIuZXhwb3NlID0gc3RhdHVzIDwgNTAwXG4gICAgZXJyLnN0YXR1cyA9IGVyci5zdGF0dXNDb2RlID0gc3RhdHVzXG4gIH1cblxuICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICBpZiAoa2V5ICE9PSAnc3RhdHVzJyAmJiBrZXkgIT09ICdzdGF0dXNDb2RlJykge1xuICAgICAgZXJyW2tleV0gPSBwcm9wc1trZXldXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVyclxufVxuXG4vKipcbiAqIENyZWF0ZSBIVFRQIGVycm9yIGFic3RyYWN0IGJhc2UgY2xhc3MuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUh0dHBFcnJvckNvbnN0cnVjdG9yICgpIHtcbiAgZnVuY3Rpb24gSHR0cEVycm9yICgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYW5ub3QgY29uc3RydWN0IGFic3RyYWN0IGNsYXNzJylcbiAgfVxuXG4gIGluaGVyaXRzKEh0dHBFcnJvciwgRXJyb3IpXG5cbiAgcmV0dXJuIEh0dHBFcnJvclxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNvbnN0cnVjdG9yIGZvciBhIGNsaWVudCBlcnJvci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlQ2xpZW50RXJyb3JDb25zdHJ1Y3RvciAoSHR0cEVycm9yLCBuYW1lLCBjb2RlKSB7XG4gIHZhciBjbGFzc05hbWUgPSBuYW1lLm1hdGNoKC9FcnJvciQvKSA/IG5hbWUgOiBuYW1lICsgJ0Vycm9yJ1xuXG4gIGZ1bmN0aW9uIENsaWVudEVycm9yIChtZXNzYWdlKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBlcnJvciBvYmplY3RcbiAgICB2YXIgbXNnID0gbWVzc2FnZSAhPSBudWxsID8gbWVzc2FnZSA6IHN0YXR1c2VzW2NvZGVdXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihtc2cpXG5cbiAgICAvLyBjYXB0dXJlIGEgc3RhY2sgdHJhY2UgdG8gdGhlIGNvbnN0cnVjdGlvbiBwb2ludFxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgQ2xpZW50RXJyb3IpXG5cbiAgICAvLyBhZGp1c3QgdGhlIFtbUHJvdG90eXBlXV1cbiAgICBzZXRQcm90b3R5cGVPZihlcnIsIENsaWVudEVycm9yLnByb3RvdHlwZSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBtZXNzYWdlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ21lc3NhZ2UnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IG1zZyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBuYW1lXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ25hbWUnLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBjbGFzc05hbWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pXG5cbiAgICByZXR1cm4gZXJyXG4gIH1cblxuICBpbmhlcml0cyhDbGllbnRFcnJvciwgSHR0cEVycm9yKVxuXG4gIENsaWVudEVycm9yLnByb3RvdHlwZS5zdGF0dXMgPSBjb2RlXG4gIENsaWVudEVycm9yLnByb3RvdHlwZS5zdGF0dXNDb2RlID0gY29kZVxuICBDbGllbnRFcnJvci5wcm90b3R5cGUuZXhwb3NlID0gdHJ1ZVxuXG4gIHJldHVybiBDbGllbnRFcnJvclxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNvbnN0cnVjdG9yIGZvciBhIHNlcnZlciBlcnJvci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlU2VydmVyRXJyb3JDb25zdHJ1Y3RvciAoSHR0cEVycm9yLCBuYW1lLCBjb2RlKSB7XG4gIHZhciBjbGFzc05hbWUgPSBuYW1lLm1hdGNoKC9FcnJvciQvKSA/IG5hbWUgOiBuYW1lICsgJ0Vycm9yJ1xuXG4gIGZ1bmN0aW9uIFNlcnZlckVycm9yIChtZXNzYWdlKSB7XG4gICAgLy8gY3JlYXRlIHRoZSBlcnJvciBvYmplY3RcbiAgICB2YXIgbXNnID0gbWVzc2FnZSAhPSBudWxsID8gbWVzc2FnZSA6IHN0YXR1c2VzW2NvZGVdXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihtc2cpXG5cbiAgICAvLyBjYXB0dXJlIGEgc3RhY2sgdHJhY2UgdG8gdGhlIGNvbnN0cnVjdGlvbiBwb2ludFxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgU2VydmVyRXJyb3IpXG5cbiAgICAvLyBhZGp1c3QgdGhlIFtbUHJvdG90eXBlXV1cbiAgICBzZXRQcm90b3R5cGVPZihlcnIsIFNlcnZlckVycm9yLnByb3RvdHlwZSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBtZXNzYWdlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ21lc3NhZ2UnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IG1zZyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSlcblxuICAgIC8vIHJlZGVmaW5lIHRoZSBlcnJvciBuYW1lXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgJ25hbWUnLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBjbGFzc05hbWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pXG5cbiAgICByZXR1cm4gZXJyXG4gIH1cblxuICBpbmhlcml0cyhTZXJ2ZXJFcnJvciwgSHR0cEVycm9yKVxuXG4gIFNlcnZlckVycm9yLnByb3RvdHlwZS5zdGF0dXMgPSBjb2RlXG4gIFNlcnZlckVycm9yLnByb3RvdHlwZS5zdGF0dXNDb2RlID0gY29kZVxuICBTZXJ2ZXJFcnJvci5wcm90b3R5cGUuZXhwb3NlID0gZmFsc2VcblxuICByZXR1cm4gU2VydmVyRXJyb3Jcbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSB0aGUgZXhwb3J0cyBvYmplY3Qgd2l0aCBjb25zdHJ1Y3RvcnMgZm9yIGV2ZXJ5IGVycm9yIGNsYXNzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwb3B1bGF0ZUNvbnN0cnVjdG9yRXhwb3J0cyAoZXhwb3J0cywgY29kZXMsIEh0dHBFcnJvcikge1xuICBjb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIGZvckVhY2hDb2RlIChjb2RlKSB7XG4gICAgdmFyIENvZGVFcnJvclxuICAgIHZhciBuYW1lID0gdG9JZGVudGlmaWVyKHN0YXR1c2VzW2NvZGVdKVxuXG4gICAgc3dpdGNoIChjb2RlQ2xhc3MoY29kZSkpIHtcbiAgICAgIGNhc2UgNDAwOlxuICAgICAgICBDb2RlRXJyb3IgPSBjcmVhdGVDbGllbnRFcnJvckNvbnN0cnVjdG9yKEh0dHBFcnJvciwgbmFtZSwgY29kZSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgNTAwOlxuICAgICAgICBDb2RlRXJyb3IgPSBjcmVhdGVTZXJ2ZXJFcnJvckNvbnN0cnVjdG9yKEh0dHBFcnJvciwgbmFtZSwgY29kZSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoQ29kZUVycm9yKSB7XG4gICAgICAvLyBleHBvcnQgdGhlIGNvbnN0cnVjdG9yXG4gICAgICBleHBvcnRzW2NvZGVdID0gQ29kZUVycm9yXG4gICAgICBleHBvcnRzW25hbWVdID0gQ29kZUVycm9yXG4gICAgfVxuICB9KVxuXG4gIC8vIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5XG4gIGV4cG9ydHNbXCJJJ21hdGVhcG90XCJdID0gZGVwcmVjYXRlLmZ1bmN0aW9uKGV4cG9ydHMuSW1BVGVhcG90LFxuICAgICdcIklcXCdtYXRlYXBvdFwiOyB1c2UgXCJJbUFUZWFwb3RcIiBpbnN0ZWFkJylcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIG9mIHdvcmRzIHRvIGEgSmF2YVNjcmlwdCBpZGVudGlmaWVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiB0b0lkZW50aWZpZXIgKHN0cikge1xuICByZXR1cm4gc3RyLnNwbGl0KCcgJykubWFwKGZ1bmN0aW9uICh0b2tlbikge1xuICAgIHJldHVybiB0b2tlbi5zbGljZSgwLCAxKS50b1VwcGVyQ2FzZSgpICsgdG9rZW4uc2xpY2UoMSlcbiAgfSkuam9pbignJykucmVwbGFjZSgvW14gXzAtOWEtel0vZ2ksICcnKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2h0dHAtZXJyb3JzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoe19fcHJvdG9fXzpbXX0gaW5zdGFuY2VvZiBBcnJheSA/IHNldFByb3RvT2YgOiBtaXhpblByb3BlcnRpZXMpO1xuXG5mdW5jdGlvbiBzZXRQcm90b09mKG9iaiwgcHJvdG8pIHtcblx0b2JqLl9fcHJvdG9fXyA9IHByb3RvO1xuXHRyZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBtaXhpblByb3BlcnRpZXMob2JqLCBwcm90bykge1xuXHRmb3IgKHZhciBwcm9wIGluIHByb3RvKSB7XG5cdFx0aWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcblx0XHRcdG9ialtwcm9wXSA9IHByb3RvW3Byb3BdO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3NldHByb3RvdHlwZW9mL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGJvZHktcGFyc2VyXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCdodHRwLWVycm9ycycpXG52YXIgZ2V0Qm9keSA9IHJlcXVpcmUoJ3Jhdy1ib2R5JylcbnZhciBpY29udiA9IHJlcXVpcmUoJ2ljb252LWxpdGUnKVxudmFyIG9uRmluaXNoZWQgPSByZXF1aXJlKCdvbi1maW5pc2hlZCcpXG52YXIgemxpYiA9IHJlcXVpcmUoJ3psaWInKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcmVhZFxuXG4vKipcbiAqIFJlYWQgYSByZXF1ZXN0IGludG8gYSBidWZmZXIgYW5kIHBhcnNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IG5leHRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHBhcnNlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBkZWJ1Z1xuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcmVhZCAocmVxLCByZXMsIG5leHQsIHBhcnNlLCBkZWJ1Zywgb3B0aW9ucykge1xuICB2YXIgbGVuZ3RoXG4gIHZhciBvcHRzID0gb3B0aW9uc1xuICB2YXIgc3RyZWFtXG5cbiAgLy8gZmxhZyBhcyBwYXJzZWRcbiAgcmVxLl9ib2R5ID0gdHJ1ZVxuXG4gIC8vIHJlYWQgb3B0aW9uc1xuICB2YXIgZW5jb2RpbmcgPSBvcHRzLmVuY29kaW5nICE9PSBudWxsXG4gICAgPyBvcHRzLmVuY29kaW5nXG4gICAgOiBudWxsXG4gIHZhciB2ZXJpZnkgPSBvcHRzLnZlcmlmeVxuXG4gIHRyeSB7XG4gICAgLy8gZ2V0IHRoZSBjb250ZW50IHN0cmVhbVxuICAgIHN0cmVhbSA9IGNvbnRlbnRzdHJlYW0ocmVxLCBkZWJ1Zywgb3B0cy5pbmZsYXRlKVxuICAgIGxlbmd0aCA9IHN0cmVhbS5sZW5ndGhcbiAgICBzdHJlYW0ubGVuZ3RoID0gdW5kZWZpbmVkXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBuZXh0KGVycilcbiAgfVxuXG4gIC8vIHNldCByYXctYm9keSBvcHRpb25zXG4gIG9wdHMubGVuZ3RoID0gbGVuZ3RoXG4gIG9wdHMuZW5jb2RpbmcgPSB2ZXJpZnlcbiAgICA/IG51bGxcbiAgICA6IGVuY29kaW5nXG5cbiAgLy8gYXNzZXJ0IGNoYXJzZXQgaXMgc3VwcG9ydGVkXG4gIGlmIChvcHRzLmVuY29kaW5nID09PSBudWxsICYmIGVuY29kaW5nICE9PSBudWxsICYmICFpY29udi5lbmNvZGluZ0V4aXN0cyhlbmNvZGluZykpIHtcbiAgICByZXR1cm4gbmV4dChjcmVhdGVFcnJvcig0MTUsICd1bnN1cHBvcnRlZCBjaGFyc2V0IFwiJyArIGVuY29kaW5nLnRvVXBwZXJDYXNlKCkgKyAnXCInLCB7XG4gICAgICBjaGFyc2V0OiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpLFxuICAgICAgdHlwZTogJ2NoYXJzZXQudW5zdXBwb3J0ZWQnXG4gICAgfSkpXG4gIH1cblxuICAvLyByZWFkIGJvZHlcbiAgZGVidWcoJ3JlYWQgYm9keScpXG4gIGdldEJvZHkoc3RyZWFtLCBvcHRzLCBmdW5jdGlvbiAoZXJyb3IsIGJvZHkpIHtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHZhciBfZXJyb3JcblxuICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICdlbmNvZGluZy51bnN1cHBvcnRlZCcpIHtcbiAgICAgICAgLy8gZWNobyBiYWNrIGNoYXJzZXRcbiAgICAgICAgX2Vycm9yID0gY3JlYXRlRXJyb3IoNDE1LCAndW5zdXBwb3J0ZWQgY2hhcnNldCBcIicgKyBlbmNvZGluZy50b1VwcGVyQ2FzZSgpICsgJ1wiJywge1xuICAgICAgICAgIGNoYXJzZXQ6IGVuY29kaW5nLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgdHlwZTogJ2NoYXJzZXQudW5zdXBwb3J0ZWQnXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBzZXQgc3RhdHVzIGNvZGUgb24gZXJyb3JcbiAgICAgICAgX2Vycm9yID0gY3JlYXRlRXJyb3IoNDAwLCBlcnJvcilcbiAgICAgIH1cblxuICAgICAgLy8gcmVhZCBvZmYgZW50aXJlIHJlcXVlc3RcbiAgICAgIHN0cmVhbS5yZXN1bWUoKVxuICAgICAgb25GaW5pc2hlZChyZXEsIGZ1bmN0aW9uIG9uZmluaXNoZWQgKCkge1xuICAgICAgICBuZXh0KGNyZWF0ZUVycm9yKDQwMCwgX2Vycm9yKSlcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyB2ZXJpZnlcbiAgICBpZiAodmVyaWZ5KSB7XG4gICAgICB0cnkge1xuICAgICAgICBkZWJ1ZygndmVyaWZ5IGJvZHknKVxuICAgICAgICB2ZXJpZnkocmVxLCByZXMsIGJvZHksIGVuY29kaW5nKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIG5leHQoY3JlYXRlRXJyb3IoNDAzLCBlcnIsIHtcbiAgICAgICAgICBib2R5OiBib2R5LFxuICAgICAgICAgIHR5cGU6IGVyci50eXBlIHx8ICdlbnRpdHkudmVyaWZ5LmZhaWxlZCdcbiAgICAgICAgfSkpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHBhcnNlXG4gICAgdmFyIHN0ciA9IGJvZHlcbiAgICB0cnkge1xuICAgICAgZGVidWcoJ3BhcnNlIGJvZHknKVxuICAgICAgc3RyID0gdHlwZW9mIGJvZHkgIT09ICdzdHJpbmcnICYmIGVuY29kaW5nICE9PSBudWxsXG4gICAgICAgID8gaWNvbnYuZGVjb2RlKGJvZHksIGVuY29kaW5nKVxuICAgICAgICA6IGJvZHlcbiAgICAgIHJlcS5ib2R5ID0gcGFyc2Uoc3RyKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbmV4dChjcmVhdGVFcnJvcig0MDAsIGVyciwge1xuICAgICAgICBib2R5OiBzdHIsXG4gICAgICAgIHR5cGU6IGVyci50eXBlIHx8ICdlbnRpdHkucGFyc2UuZmFpbGVkJ1xuICAgICAgfSkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBuZXh0KClcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNvbnRlbnQgc3RyZWFtIG9mIHRoZSByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGRlYnVnXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbmZsYXRlPXRydWVdXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb250ZW50c3RyZWFtIChyZXEsIGRlYnVnLCBpbmZsYXRlKSB7XG4gIHZhciBlbmNvZGluZyA9IChyZXEuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddIHx8ICdpZGVudGl0eScpLnRvTG93ZXJDYXNlKClcbiAgdmFyIGxlbmd0aCA9IHJlcS5oZWFkZXJzWydjb250ZW50LWxlbmd0aCddXG4gIHZhciBzdHJlYW1cblxuICBkZWJ1ZygnY29udGVudC1lbmNvZGluZyBcIiVzXCInLCBlbmNvZGluZylcblxuICBpZiAoaW5mbGF0ZSA9PT0gZmFsc2UgJiYgZW5jb2RpbmcgIT09ICdpZGVudGl0eScpIHtcbiAgICB0aHJvdyBjcmVhdGVFcnJvcig0MTUsICdjb250ZW50IGVuY29kaW5nIHVuc3VwcG9ydGVkJywge1xuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgICAgdHlwZTogJ2VuY29kaW5nLnVuc3VwcG9ydGVkJ1xuICAgIH0pXG4gIH1cblxuICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgY2FzZSAnZGVmbGF0ZSc6XG4gICAgICBzdHJlYW0gPSB6bGliLmNyZWF0ZUluZmxhdGUoKVxuICAgICAgZGVidWcoJ2luZmxhdGUgYm9keScpXG4gICAgICByZXEucGlwZShzdHJlYW0pXG4gICAgICBicmVha1xuICAgIGNhc2UgJ2d6aXAnOlxuICAgICAgc3RyZWFtID0gemxpYi5jcmVhdGVHdW56aXAoKVxuICAgICAgZGVidWcoJ2d1bnppcCBib2R5JylcbiAgICAgIHJlcS5waXBlKHN0cmVhbSlcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnaWRlbnRpdHknOlxuICAgICAgc3RyZWFtID0gcmVxXG4gICAgICBzdHJlYW0ubGVuZ3RoID0gbGVuZ3RoXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBjcmVhdGVFcnJvcig0MTUsICd1bnN1cHBvcnRlZCBjb250ZW50IGVuY29kaW5nIFwiJyArIGVuY29kaW5nICsgJ1wiJywge1xuICAgICAgICBlbmNvZGluZzogZW5jb2RpbmcsXG4gICAgICAgIHR5cGU6ICdlbmNvZGluZy51bnN1cHBvcnRlZCdcbiAgICAgIH0pXG4gIH1cblxuICByZXR1cm4gc3RyZWFtXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYm9keS1wYXJzZXIvbGliL3JlYWQuanNcbi8vIG1vZHVsZSBpZCA9IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogb24tZmluaXNoZWRcbiAqIENvcHlyaWdodChjKSAyMDEzIEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTQgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gb25GaW5pc2hlZFxubW9kdWxlLmV4cG9ydHMuaXNGaW5pc2hlZCA9IGlzRmluaXNoZWRcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZmlyc3QgPSByZXF1aXJlKCdlZS1maXJzdCcpXG5cbi8qKlxuICogVmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudmFyIGRlZmVyID0gdHlwZW9mIHNldEltbWVkaWF0ZSA9PT0gJ2Z1bmN0aW9uJ1xuICA/IHNldEltbWVkaWF0ZVxuICA6IGZ1bmN0aW9uKGZuKXsgcHJvY2Vzcy5uZXh0VGljayhmbi5iaW5kLmFwcGx5KGZuLCBhcmd1bWVudHMpKSB9XG5cbi8qKlxuICogSW52b2tlIGNhbGxiYWNrIHdoZW4gdGhlIHJlc3BvbnNlIGhhcyBmaW5pc2hlZCwgdXNlZnVsIGZvclxuICogY2xlYW5pbmcgdXAgcmVzb3VyY2VzIGFmdGVyd2FyZHMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG1zZ1xuICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXJcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBvbkZpbmlzaGVkKG1zZywgbGlzdGVuZXIpIHtcbiAgaWYgKGlzRmluaXNoZWQobXNnKSAhPT0gZmFsc2UpIHtcbiAgICBkZWZlcihsaXN0ZW5lciwgbnVsbCwgbXNnKVxuICAgIHJldHVybiBtc2dcbiAgfVxuXG4gIC8vIGF0dGFjaCB0aGUgbGlzdGVuZXIgdG8gdGhlIG1lc3NhZ2VcbiAgYXR0YWNoTGlzdGVuZXIobXNnLCBsaXN0ZW5lcilcblxuICByZXR1cm4gbXNnXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIG1lc3NhZ2UgaXMgYWxyZWFkeSBmaW5pc2hlZC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gbXNnXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGlzRmluaXNoZWQobXNnKSB7XG4gIHZhciBzb2NrZXQgPSBtc2cuc29ja2V0XG5cbiAgaWYgKHR5cGVvZiBtc2cuZmluaXNoZWQgPT09ICdib29sZWFuJykge1xuICAgIC8vIE91dGdvaW5nTWVzc2FnZVxuICAgIHJldHVybiBCb29sZWFuKG1zZy5maW5pc2hlZCB8fCAoc29ja2V0ICYmICFzb2NrZXQud3JpdGFibGUpKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBtc2cuY29tcGxldGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEluY29taW5nTWVzc2FnZVxuICAgIHJldHVybiBCb29sZWFuKG1zZy51cGdyYWRlIHx8ICFzb2NrZXQgfHwgIXNvY2tldC5yZWFkYWJsZSB8fCAobXNnLmNvbXBsZXRlICYmICFtc2cucmVhZGFibGUpKVxuICB9XG5cbiAgLy8gZG9uJ3Qga25vd1xuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogQXR0YWNoIGEgZmluaXNoZWQgbGlzdGVuZXIgdG8gdGhlIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG1zZ1xuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gYXR0YWNoRmluaXNoZWRMaXN0ZW5lcihtc2csIGNhbGxiYWNrKSB7XG4gIHZhciBlZU1zZ1xuICB2YXIgZWVTb2NrZXRcbiAgdmFyIGZpbmlzaGVkID0gZmFsc2VcblxuICBmdW5jdGlvbiBvbkZpbmlzaChlcnJvcikge1xuICAgIGVlTXNnLmNhbmNlbCgpXG4gICAgZWVTb2NrZXQuY2FuY2VsKClcblxuICAgIGZpbmlzaGVkID0gdHJ1ZVxuICAgIGNhbGxiYWNrKGVycm9yKVxuICB9XG5cbiAgLy8gZmluaXNoZWQgb24gZmlyc3QgbWVzc2FnZSBldmVudFxuICBlZU1zZyA9IGVlU29ja2V0ID0gZmlyc3QoW1ttc2csICdlbmQnLCAnZmluaXNoJ11dLCBvbkZpbmlzaClcblxuICBmdW5jdGlvbiBvblNvY2tldChzb2NrZXQpIHtcbiAgICAvLyByZW1vdmUgbGlzdGVuZXJcbiAgICBtc2cucmVtb3ZlTGlzdGVuZXIoJ3NvY2tldCcsIG9uU29ja2V0KVxuXG4gICAgaWYgKGZpbmlzaGVkKSByZXR1cm5cbiAgICBpZiAoZWVNc2cgIT09IGVlU29ja2V0KSByZXR1cm5cblxuICAgIC8vIGZpbmlzaGVkIG9uIGZpcnN0IHNvY2tldCBldmVudFxuICAgIGVlU29ja2V0ID0gZmlyc3QoW1tzb2NrZXQsICdlcnJvcicsICdjbG9zZSddXSwgb25GaW5pc2gpXG4gIH1cblxuICBpZiAobXNnLnNvY2tldCkge1xuICAgIC8vIHNvY2tldCBhbHJlYWR5IGFzc2lnbmVkXG4gICAgb25Tb2NrZXQobXNnLnNvY2tldClcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIHdhaXQgZm9yIHNvY2tldCB0byBiZSBhc3NpZ25lZFxuICBtc2cub24oJ3NvY2tldCcsIG9uU29ja2V0KVxuXG4gIGlmIChtc2cuc29ja2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBub2RlLmpzIDAuOCBwYXRjaFxuICAgIHBhdGNoQXNzaWduU29ja2V0KG1zZywgb25Tb2NrZXQpXG4gIH1cbn1cblxuLyoqXG4gKiBBdHRhY2ggdGhlIGxpc3RlbmVyIHRvIHRoZSBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBtc2dcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBhdHRhY2hMaXN0ZW5lcihtc2csIGxpc3RlbmVyKSB7XG4gIHZhciBhdHRhY2hlZCA9IG1zZy5fX29uRmluaXNoZWRcblxuICAvLyBjcmVhdGUgYSBwcml2YXRlIHNpbmdsZSBsaXN0ZW5lciB3aXRoIHF1ZXVlXG4gIGlmICghYXR0YWNoZWQgfHwgIWF0dGFjaGVkLnF1ZXVlKSB7XG4gICAgYXR0YWNoZWQgPSBtc2cuX19vbkZpbmlzaGVkID0gY3JlYXRlTGlzdGVuZXIobXNnKVxuICAgIGF0dGFjaEZpbmlzaGVkTGlzdGVuZXIobXNnLCBhdHRhY2hlZClcbiAgfVxuXG4gIGF0dGFjaGVkLnF1ZXVlLnB1c2gobGlzdGVuZXIpXG59XG5cbi8qKlxuICogQ3JlYXRlIGxpc3RlbmVyIG9uIG1lc3NhZ2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG1zZ1xuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUxpc3RlbmVyKG1zZykge1xuICBmdW5jdGlvbiBsaXN0ZW5lcihlcnIpIHtcbiAgICBpZiAobXNnLl9fb25GaW5pc2hlZCA9PT0gbGlzdGVuZXIpIG1zZy5fX29uRmluaXNoZWQgPSBudWxsXG4gICAgaWYgKCFsaXN0ZW5lci5xdWV1ZSkgcmV0dXJuXG5cbiAgICB2YXIgcXVldWUgPSBsaXN0ZW5lci5xdWV1ZVxuICAgIGxpc3RlbmVyLnF1ZXVlID0gbnVsbFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgcXVldWVbaV0oZXJyLCBtc2cpXG4gICAgfVxuICB9XG5cbiAgbGlzdGVuZXIucXVldWUgPSBbXVxuXG4gIHJldHVybiBsaXN0ZW5lclxufVxuXG4vKipcbiAqIFBhdGNoIFNlcnZlclJlc3BvbnNlLnByb3RvdHlwZS5hc3NpZ25Tb2NrZXQgZm9yIG5vZGUuanMgMC44LlxuICpcbiAqIEBwYXJhbSB7U2VydmVyUmVzcG9uc2V9IHJlc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGF0Y2hBc3NpZ25Tb2NrZXQocmVzLCBjYWxsYmFjaykge1xuICB2YXIgYXNzaWduU29ja2V0ID0gcmVzLmFzc2lnblNvY2tldFxuXG4gIGlmICh0eXBlb2YgYXNzaWduU29ja2V0ICE9PSAnZnVuY3Rpb24nKSByZXR1cm5cblxuICAvLyByZXMub24oJ3NvY2tldCcsIGNhbGxiYWNrKSBpcyBicm9rZW4gaW4gMC44XG4gIHJlcy5hc3NpZ25Tb2NrZXQgPSBmdW5jdGlvbiBfYXNzaWduU29ja2V0KHNvY2tldCkge1xuICAgIGFzc2lnblNvY2tldC5jYWxsKHRoaXMsIHNvY2tldClcbiAgICBjYWxsYmFjayhzb2NrZXQpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9vbi1maW5pc2hlZC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBlbmNvZGV1cmxcbiAqIENvcHlyaWdodChjKSAyMDE2IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVuY29kZVVybFxuXG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCBub24tVVJMIGNvZGUgcG9pbnRzLCAqYWZ0ZXIqIGVuY29kaW5nIChpLmUuIG5vdCBpbmNsdWRpbmcgXCIlXCIpXG4gKiBhbmQgaW5jbHVkaW5nIGludmFsaWQgZXNjYXBlIHNlcXVlbmNlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIEVOQ09ERV9DSEFSU19SRUdFWFAgPSAvKD86W15cXHgyMVxceDI1XFx4MjYtXFx4M0JcXHgzRFxceDNGLVxceDVCXFx4NURcXHg1RlxceDYxLVxceDdBXFx4N0VdfCUoPzpbXjAtOUEtRmEtZl18WzAtOUEtRmEtZl1bXjAtOUEtRmEtZl18JCkpKy9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHVubWF0Y2hlZCBzdXJyb2dhdGUgcGFpci5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIFVOTUFUQ0hFRF9TVVJST0dBVEVfUEFJUl9SRUdFWFAgPSAvKF58W15cXHVEODAwLVxcdURCRkZdKVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdKFteXFx1REMwMC1cXHVERkZGXXwkKS9nXG5cbi8qKlxuICogU3RyaW5nIHRvIHJlcGxhY2UgdW5tYXRjaGVkIHN1cnJvZ2F0ZSBwYWlyIHdpdGguXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBVTk1BVENIRURfU1VSUk9HQVRFX1BBSVJfUkVQTEFDRSA9ICckMVxcdUZGRkQkMidcblxuLyoqXG4gKiBFbmNvZGUgYSBVUkwgdG8gYSBwZXJjZW50LWVuY29kZWQgZm9ybSwgZXhjbHVkaW5nIGFscmVhZHktZW5jb2RlZCBzZXF1ZW5jZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgYW4gYWxyZWFkeS1lbmNvZGVkIFVSTCBhbmQgZW5jb2RlIGFsbCB0aGUgbm9uLVVSTFxuICogY29kZSBwb2ludHMuIFRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZW5jb2RlIHRoZSBcIiVcIiBjaGFyYWN0ZXIgdW5sZXNzIGl0IGlzXG4gKiBub3QgcGFydCBvZiBhIHZhbGlkIHNlcXVlbmNlIChgJTIwYCB3aWxsIGJlIGxlZnQgYXMtaXMsIGJ1dCBgJWZvb2Agd2lsbFxuICogYmUgZW5jb2RlZCBhcyBgJTI1Zm9vYCkuXG4gKlxuICogVGhpcyBlbmNvZGUgaXMgbWVhbnQgdG8gYmUgXCJzYWZlXCIgYW5kIGRvZXMgbm90IHRocm93IGVycm9ycy4gSXQgd2lsbCB0cnkgYXNcbiAqIGhhcmQgYXMgaXQgY2FuIHRvIHByb3Blcmx5IGVuY29kZSB0aGUgZ2l2ZW4gVVJMLCBpbmNsdWRpbmcgcmVwbGFjaW5nIGFueSByYXcsXG4gKiB1bnBhaXJlZCBzdXJyb2dhdGUgcGFpcnMgd2l0aCB0aGUgVW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgcHJpb3IgdG9cbiAqIGVuY29kaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlbmNvZGVVcmwgKHVybCkge1xuICByZXR1cm4gU3RyaW5nKHVybClcbiAgICAucmVwbGFjZShVTk1BVENIRURfU1VSUk9HQVRFX1BBSVJfUkVHRVhQLCBVTk1BVENIRURfU1VSUk9HQVRFX1BBSVJfUkVQTEFDRSlcbiAgICAucmVwbGFjZShFTkNPREVfQ0hBUlNfUkVHRVhQLCBlbmNvZGVVUkkpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZW5jb2RldXJsL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGVzY2FwZS1odG1sXG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBBbmRyZWFzIEx1YmJlXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBUaWFuY2hlbmcgXCJUaW1vdGh5XCIgR3VcbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgbWF0Y2hIdG1sUmVnRXhwID0gL1tcIicmPD5dLztcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVzY2FwZUh0bWw7XG5cbi8qKlxuICogRXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgZ2l2ZW4gc3RyaW5nIG9mIGh0bWwuXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBlc2NhcGUgZm9yIGluc2VydGluZyBpbnRvIEhUTUxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlc2NhcGVIdG1sKHN0cmluZykge1xuICB2YXIgc3RyID0gJycgKyBzdHJpbmc7XG4gIHZhciBtYXRjaCA9IG1hdGNoSHRtbFJlZ0V4cC5leGVjKHN0cik7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICB2YXIgZXNjYXBlO1xuICB2YXIgaHRtbCA9ICcnO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGFzdEluZGV4ID0gMDtcblxuICBmb3IgKGluZGV4ID0gbWF0Y2guaW5kZXg7IGluZGV4IDwgc3RyLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7XG4gICAgICBjYXNlIDM0OiAvLyBcIlxuICAgICAgICBlc2NhcGUgPSAnJnF1b3Q7JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OiAvLyAmXG4gICAgICAgIGVzY2FwZSA9ICcmYW1wOyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOTogLy8gJ1xuICAgICAgICBlc2NhcGUgPSAnJiMzOTsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNjA6IC8vIDxcbiAgICAgICAgZXNjYXBlID0gJyZsdDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNjI6IC8vID5cbiAgICAgICAgZXNjYXBlID0gJyZndDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChsYXN0SW5kZXggIT09IGluZGV4KSB7XG4gICAgICBodG1sICs9IHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCk7XG4gICAgfVxuXG4gICAgbGFzdEluZGV4ID0gaW5kZXggKyAxO1xuICAgIGh0bWwgKz0gZXNjYXBlO1xuICB9XG5cbiAgcmV0dXJuIGxhc3RJbmRleCAhPT0gaW5kZXhcbiAgICA/IGh0bWwgKyBzdHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpXG4gICAgOiBodG1sO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2VzY2FwZS1odG1sL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ1cmxcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJ1cmxcIlxuLy8gbW9kdWxlIGlkID0gNDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogRXhwb3NlIGBhcnJheUZsYXR0ZW5gLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmxhdHRlblxuXG4vKipcbiAqIFJlY3Vyc2l2ZSBmbGF0dGVuIGZ1bmN0aW9uIHdpdGggZGVwdGguXG4gKlxuICogQHBhcmFtICB7QXJyYXl9ICBhcnJheVxuICogQHBhcmFtICB7QXJyYXl9ICByZXN1bHRcbiAqIEBwYXJhbSAge051bWJlcn0gZGVwdGhcbiAqIEByZXR1cm4ge0FycmF5fVxuICovXG5mdW5jdGlvbiBmbGF0dGVuV2l0aERlcHRoIChhcnJheSwgcmVzdWx0LCBkZXB0aCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaV1cblxuICAgIGlmIChkZXB0aCA+IDAgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGZsYXR0ZW5XaXRoRGVwdGgodmFsdWUsIHJlc3VsdCwgZGVwdGggLSAxKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogUmVjdXJzaXZlIGZsYXR0ZW4gZnVuY3Rpb24uIE9taXR0aW5nIGRlcHRoIGlzIHNsaWdodGx5IGZhc3Rlci5cbiAqXG4gKiBAcGFyYW0gIHtBcnJheX0gYXJyYXlcbiAqIEBwYXJhbSAge0FycmF5fSByZXN1bHRcbiAqIEByZXR1cm4ge0FycmF5fVxuICovXG5mdW5jdGlvbiBmbGF0dGVuRm9yZXZlciAoYXJyYXksIHJlc3VsdCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaV1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgZmxhdHRlbkZvcmV2ZXIodmFsdWUsIHJlc3VsdClcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnB1c2godmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIEZsYXR0ZW4gYW4gYXJyYXksIHdpdGggdGhlIGFiaWxpdHkgdG8gZGVmaW5lIGEgZGVwdGguXG4gKlxuICogQHBhcmFtICB7QXJyYXl9ICBhcnJheVxuICogQHBhcmFtICB7TnVtYmVyfSBkZXB0aFxuICogQHJldHVybiB7QXJyYXl9XG4gKi9cbmZ1bmN0aW9uIGFycmF5RmxhdHRlbiAoYXJyYXksIGRlcHRoKSB7XG4gIGlmIChkZXB0aCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZsYXR0ZW5Gb3JldmVyKGFycmF5LCBbXSlcbiAgfVxuXG4gIHJldHVybiBmbGF0dGVuV2l0aERlcHRoKGFycmF5LCBbXSwgZGVwdGgpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYXJyYXktZmxhdHRlbi9hcnJheS1mbGF0dGVuLmpzXG4vLyBtb2R1bGUgaWQgPSA0MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIE1lcmdlIG9iamVjdCBiIHdpdGggb2JqZWN0IGEuXG4gKlxuICogICAgIHZhciBhID0geyBmb286ICdiYXInIH1cbiAqICAgICAgICwgYiA9IHsgYmFyOiAnYmF6JyB9O1xuICpcbiAqICAgICBtZXJnZShhLCBiKTtcbiAqICAgICAvLyA9PiB7IGZvbzogJ2JhcicsIGJhcjogJ2JheicgfVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhXG4gKiBAcGFyYW0ge09iamVjdH0gYlxuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihhLCBiKXtcbiAgaWYgKGEgJiYgYikge1xuICAgIGZvciAodmFyIGtleSBpbiBiKSB7XG4gICAgICBhW2tleV0gPSBiW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBhO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy91dGlscy1tZXJnZS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY3J5cHRvXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiY3J5cHRvXCJcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZmFpbHMuanNcbi8vIG1vZHVsZSBpZCA9IDQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qc1xuLy8gbW9kdWxlIGlkID0gNDVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRKc29uRGF0YShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxPYmplY3Q+IHtcbiAgdmFyIGRhdGEgPSBhd2FpdCBuZXcgUHJvbWlzZTxzdHJpbmc+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBmcy5yZWFkRmlsZShmaWxlbmFtZSwgJ3V0ZjgnLCAoZXJyLCBkYXRhKSA9PiB7XG4gICAgICBpZihlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICByZWplY3QoJ0NhbmB0IHJlYWQgZmlsZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZShkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgfSBjYXRjaChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIGZpbGUgZm9ybWF0Jyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JpdGVKc29uRGF0YShmaWxlbmFtZTogc3RyaW5nLCBkYXRhOiBPYmplY3QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBmcy53cml0ZUZpbGUoZmlsZW5hbWUsIEpTT04uc3RyaW5naWZ5KGRhdGEpLCAndXRmOCcsIChlcnIpID0+IHtcbiAgICAgIGlmKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIHJlamVjdCgnQ2F0YHQgd3JpdGUgZmlsZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KVxufVxuXG5mdW5jdGlvbiBnZXRKc29uRGF0YVN5bmMoZmlsZW5hbWU6IHN0cmluZykge1xuICBsZXQgZGF0YSA9IGZzLnJlYWRGaWxlU3luYyhmaWxlbmFtZSwgJ3V0ZjgnKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgfSBjYXRjaChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIGZpbGUgZm9ybWF0Jyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JpdGVKc29uRGF0YVN5bmMoZmlsZW5hbWU6IHN0cmluZywgZGF0YTogT2JqZWN0KSB7XG4gIGZzLndyaXRlRmlsZVN5bmMoZmlsZW5hbWUsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbn1cblxuZXhwb3J0IHtcbiAgZ2V0SnNvbkRhdGEsXG4gIHdyaXRlSnNvbkRhdGEsXG4gIGdldEpzb25EYXRhU3luYyxcbiAgd3JpdGVKc29uRGF0YVN5bmNcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NlcnZpY2VzL2pzb24udHMiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJldmVudHNcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJldmVudHNcIlxuLy8gbW9kdWxlIGlkID0gNDdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwidXRpbFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcInV0aWxcIlxuLy8gbW9kdWxlIGlkID0gNDhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBbW1wiMFwiLFwiXFx1MDAwMFwiLDEyNyxcIuKCrFwiXSxbXCI4MTQwXCIsXCLkuILkuITkuIXkuIbkuI/kuJLkuJfkuJ/kuKDkuKHkuKPkuKbkuKnkuK7kuK/kuLHkuLPkuLXkuLfkuLzkuYDkuYHkuYLkuYTkuYbkuYrkuZHkuZXkuZfkuZrkuZvkuaLkuaPkuaTkuaXkuafkuajkuapcIiw1LFwi5Lmy5Lm0XCIsOSxcIuS5v1wiLDYsXCLkuofkuopcIl0sW1wiODE4MFwiLFwi5LqQ5LqW5LqX5LqZ5Lqc5Lqd5Lqe5Lqj5Lqq5Lqv5Lqw5Lqx5Lq05Lq25Lq35Lq45Lq55Lq85Lq95Lq+5LuI5LuM5LuP5LuQ5LuS5Lua5Lub5Luc5Lug5Lui5Lum5Lun5Lup5Lut5Luu5Luv5Lux5Lu05Lu45Lu55Lu65Lu85Lu+5LyA5LyCXCIsNixcIuS8i+S8jOS8klwiLDQsXCLkvJzkvJ3kvKHkvKPkvKjkvKnkvKzkvK3kvK7kvLHkvLPkvLXkvLfkvLnkvLvkvL5cIiw0LFwi5L2E5L2F5L2HXCIsNSxcIuS9kuS9lOS9luS9oeS9ouS9puS9qOS9quS9q+S9reS9ruS9seS9suS9teS9t+S9uOS9ueS9uuS9veS+gOS+geS+guS+heS+huS+h+S+iuS+jOS+juS+kOS+kuS+k+S+leS+luS+mOS+meS+muS+nOS+nuS+n+S+oeS+olwiXSxbXCI4MjQwXCIsXCLkvqTkvqvkvq3kvrBcIiw0LFwi5L62XCIsOCxcIuS/gOS/geS/guS/huS/h+S/iOS/ieS/i+S/jOS/jeS/klwiLDQsXCLkv5nkv5vkv6Dkv6Lkv6Tkv6Xkv6fkv6vkv6zkv7Dkv7Lkv7Tkv7Xkv7bkv7fkv7nkv7vkv7zkv73kv79cIiwxMV0sW1wiODI4MFwiLFwi5YCL5YCO5YCQ5YCR5YCT5YCV5YCW5YCX5YCb5YCd5YCe5YCg5YCi5YCj5YCk5YCn5YCr5YCvXCIsMTAsXCLlgLvlgL3lgL/lgYDlgYHlgYLlgYTlgYXlgYblgYnlgYrlgYvlgY3lgZBcIiw0LFwi5YGW5YGX5YGY5YGZ5YGb5YGdXCIsNyxcIuWBplwiLDUsXCLlga1cIiw4LFwi5YG45YG55YG65YG85YG95YKB5YKC5YKD5YKE5YKG5YKH5YKJ5YKK5YKL5YKM5YKOXCIsMjAsXCLlgqTlgqblgqrlgqvlgq1cIiw0LFwi5YKzXCIsNixcIuWCvFwiXSxbXCI4MzQwXCIsXCLlgr1cIiwxNyxcIuWDkFwiLDUsXCLlg5flg5jlg5nlg5tcIiwxMCxcIuWDqOWDqeWDquWDq+WDr+WDsOWDseWDsuWDtOWDtlwiLDQsXCLlg7xcIiw5LFwi5YSIXCJdLFtcIjgzODBcIixcIuWEieWEiuWEjFwiLDUsXCLlhJNcIiwxMyxcIuWEolwiLDI4LFwi5YWC5YWH5YWK5YWM5YWO5YWP5YWQ5YWS5YWT5YWX5YWY5YWZ5YWb5YWdXCIsNCxcIuWFo+WFpOWFpuWFp+WFqeWFquWFr+WFsuWFuuWFvuWFv+WGg+WGhOWGhuWGh+WGiuWGi+WGjuWGj+WGkOWGkeWGk+WGlOWGmOWGmuWGneWGnuWGn+WGoeWGo+WGplwiLDQsXCLlhq3lhq7lhrTlhrjlhrnlhrrlhr7lhr/lh4Hlh4Llh4Plh4Xlh4jlh4rlh43lh47lh5Dlh5JcIiw1XSxbXCI4NDQwXCIsXCLlh5jlh5nlh5rlh5zlh57lh5/lh6Llh6Plh6VcIiw1LFwi5Yes5Yeu5Yex5Yey5Ye05Ye35Ye+5YiE5YiF5YiJ5YiL5YiM5YiP5YiQ5YiT5YiU5YiV5Yic5Yie5Yif5Yih5Yii5Yij5Yil5Yim5Yin5Yiq5Yis5Yiv5Yix5Yiy5Yi05Yi15Yi85Yi+5YmEXCIsNSxcIuWJi+WJjuWJj+WJkuWJk+WJleWJl+WJmFwiXSxbXCI4NDgwXCIsXCLliZnliZrliZvliZ3liZ/liaDliaLliaPliaTliabliajliavliazlia3lia7libDlibHlibNcIiw5LFwi5Ym+5YqA5YqDXCIsNCxcIuWKiVwiLDYsXCLlipHlipLlipRcIiw2LFwi5Yqc5Yqk5Yql5Yqm5Yqn5Yqu5Yqv5Yqw5Yq0XCIsOSxcIuWLgOWLgeWLguWLhOWLheWLhuWLiOWLiuWLjOWLjeWLjuWLj+WLkeWLk+WLlOWLleWLl+WLmVwiLDUsXCLli6Dli6Hli6Lli6Pli6VcIiwxMCxcIuWLsVwiLDcsXCLli7vli7zli73ljIHljILljIPljITljIfljInljIrljIvljIzljI5cIl0sW1wiODU0MFwiLFwi5YyR5YyS5YyT5YyU5YyY5Yyb5Yyc5Yye5Yyf5Yyi5Yyk5Yyl5Yyn5Yyo5Yyp5Yyr5Yys5Yyt5YyvXCIsOSxcIuWMvOWMveWNgOWNguWNhOWNhuWNi+WNjOWNjeWNkOWNlOWNmOWNmeWNm+WNneWNpeWNqOWNquWNrOWNreWNsuWNtuWNueWNu+WNvOWNveWNvuWOgOWOgeWOg+WOh+WOiOWOiuWOjuWOj1wiXSxbXCI4NTgwXCIsXCLljpBcIiw0LFwi5Y6W5Y6X5Y6Z5Y6b5Y6c5Y6e5Y6g5Y6h5Y6k5Y6n5Y6q5Y6r5Y6s5Y6t5Y6vXCIsNixcIuWOt+WOuOWOueWOuuWOvOWOveWOvuWPgOWPg1wiLDQsXCLlj47lj4/lj5Dlj5Llj5Plj5Xlj5rlj5zlj53lj57lj6Hlj6Llj6flj7Tlj7rlj77lj7/lkIDlkILlkIXlkIflkIvlkJTlkJjlkJnlkJrlkJzlkKLlkKTlkKXlkKrlkLDlkLPlkLblkLflkLrlkL3lkL/lkYHlkYLlkYTlkYXlkYflkYnlkYzlkY3lkY7lkY/lkZHlkZrlkZ1cIiw0LFwi5ZGj5ZGl5ZGn5ZGpXCIsNyxcIuWRtOWRueWRuuWRvuWRv+WSgeWSg+WSheWSh+WSiOWSieWSiuWSjeWSkeWSk+WSl+WSmOWSnOWSnuWSn+WSoOWSoVwiXSxbXCI4NjQwXCIsXCLlkqLlkqXlkq7lkrDlkrLlkrXlkrblkrflkrnlkrrlkrzlkr7lk4Plk4Xlk4rlk4vlk5blk5jlk5vlk6BcIiw0LFwi5ZOr5ZOs5ZOv5ZOw5ZOx5ZO0XCIsNSxcIuWTu+WTvuWUgOWUguWUg+WUhOWUheWUiOWUilwiLDQsXCLllJLllJPllJVcIiw1LFwi5ZSc5ZSd5ZSe5ZSf5ZSh5ZSl5ZSmXCJdLFtcIjg2ODBcIixcIuWUqOWUqeWUq+WUreWUsuWUtOWUteWUtuWUuOWUueWUuuWUu+WUveWVgOWVguWVheWVh+WViOWVi1wiLDQsXCLllZHllZLllZPllZTllZdcIiw0LFwi5ZWd5ZWe5ZWf5ZWg5ZWi5ZWj5ZWo5ZWp5ZWr5ZWvXCIsNSxcIuWVueWVuuWVveWVv+WWheWWhuWWjOWWjeWWjuWWkOWWkuWWk+WWleWWluWWl+WWmuWWm+WWnuWWoFwiLDYsXCLllqhcIiw4LFwi5Zay5Za05Za25Za45Za65Za85Za/XCIsNCxcIuWXhuWXh+WXiOWXiuWXi+WXjuWXj+WXkOWXleWXl1wiLDQsXCLll57ll6Dll6Lll6fll6nll63ll67ll7Dll7Hll7Tll7bll7hcIiw0LFwi5Ze/5ZiC5ZiD5ZiE5ZiFXCJdLFtcIjg3NDBcIixcIuWYhuWYh+WYiuWYi+WYjeWYkFwiLDcsXCLlmJnlmJrlmJzlmJ3lmKDlmKHlmKLlmKXlmKblmKjlmKnlmKrlmKvlmK7lmK/lmLDlmLPlmLXlmLflmLjlmLrlmLzlmL3lmL7lmYBcIiwxMSxcIuWZj1wiLDQsXCLlmZXlmZblmZrlmZvlmZ1cIiw0XSxbXCI4NzgwXCIsXCLlmaPlmaXlmablmaflma3lma7lma/lmbDlmbLlmbPlmbTlmbXlmbflmbjlmbnlmbrlmb1cIiw3LFwi5ZqHXCIsNixcIuWakOWakeWakuWalFwiLDE0LFwi5ZqkXCIsMTAsXCLlmrBcIiw2LFwi5Zq45Zq55Zq65Zq75Zq9XCIsMTIsXCLlm4tcIiw4LFwi5ZuV5ZuW5ZuY5ZuZ5Zuc5Zuj5ZulXCIsNSxcIuWbrOWbruWbr+WbsuWbs+WbtuWbt+WbuOWbu+WbvOWcgOWcgeWcguWcheWch+Wci1wiLDZdLFtcIjg4NDBcIixcIuWcklwiLDksXCLlnJ3lnJ7lnKDlnKHlnKLlnKTlnKXlnKblnKflnKvlnLHlnLLlnLRcIiw0LFwi5Zy85Zy95Zy/5Z2B5Z2D5Z2E5Z2F5Z2G5Z2I5Z2J5Z2L5Z2SXCIsNCxcIuWdmOWdmeWdouWdo+WdpeWdp+WdrOWdruWdsOWdseWdsuWdtOWdteWduOWdueWduuWdveWdvuWdv+WegFwiXSxbXCI4ODgwXCIsXCLlnoHlnoflnojlnonlnorlno1cIiw0LFwi5Z6UXCIsNixcIuWenOWeneWenuWen+WepeWeqOWequWerOWer+WesOWeseWes+WeteWetuWet+WeuVwiLDgsXCLln4RcIiw2LFwi5Z+M5Z+N5Z+Q5Z+R5Z+T5Z+W5Z+X5Z+b5Z+c5Z+e5Z+h5Z+i5Z+j5Z+lXCIsNyxcIuWfruWfsOWfseWfsuWfs+WfteWftuWft+Wfu+WfvOWfvuWfv+WggeWgg+WghOWgheWgiOWgieWgiuWgjOWgjuWgj+WgkOWgkuWgk+WglOWgluWgl+WgmOWgmuWgm+WgnOWgneWgn+WgouWgo+WgpVwiLDQsXCLloKtcIiw0LFwi5aCx5aCy5aCz5aC05aC2XCIsN10sW1wiODk0MFwiLFwi5aC+XCIsNSxcIuWhhVwiLDYsXCLloY7loY/loZDloZLloZPloZXloZbloZfloZlcIiw0LFwi5aGfXCIsNSxcIuWhplwiLDQsXCLloa1cIiwxNixcIuWhv+WiguWihOWihuWih+WiiOWiiuWii+WijFwiXSxbXCI4OTgwXCIsXCLloo1cIiw0LFwi5aKUXCIsNCxcIuWim+WinOWineWioFwiLDcsXCLloqpcIiwxNyxcIuWiveWivuWiv+WjgOWjguWjg+WjhOWjhlwiLDEwLFwi5aOS5aOT5aOU5aOWXCIsMTMsXCLlo6VcIiw1LFwi5aOt5aOv5aOx5aOy5aO05aO15aO35aO45aO6XCIsNyxcIuWkg+WkheWkhuWkiFwiLDQsXCLlpI7lpJDlpJHlpJLlpJPlpJflpJjlpJvlpJ3lpJ7lpKDlpKHlpKLlpKPlpKblpKjlpKzlpLDlpLLlpLPlpLXlpLblpLtcIl0sW1wiOGE0MFwiLFwi5aS95aS+5aS/5aWA5aWD5aWF5aWG5aWK5aWM5aWN5aWQ5aWS5aWT5aWZ5aWbXCIsNCxcIuWloeWlo+WlpOWlplwiLDEyLFwi5aW15aW35aW65aW75aW85aW+5aW/5aaA5aaF5aaJ5aaL5aaM5aaO5aaP5aaQ5aaR5aaU5aaV5aaY5aaa5aab5aac5aad5aaf5aag5aah5aai5aamXCJdLFtcIjhhODBcIixcIuWmp+WmrOWmreWmsOWmseWms1wiLDUsXCLlprrlprzlpr3lpr9cIiw2LFwi5aeH5aeI5aeJ5aeM5aeN5aeO5aeP5aeV5aeW5aeZ5aeb5aeeXCIsNCxcIuWnpOWnpuWnp+WnqeWnquWnq+WnrVwiLDExLFwi5ae65ae85ae95ae+5aiA5aiC5aiK5aiL5aiN5aiO5aiP5aiQ5aiS5aiU5aiV5aiW5aiX5aiZ5aia5aib5aid5aie5aih5aii5aik5aim5ain5aio5aiqXCIsNixcIuWos+WoteWot1wiLDQsXCLlqL3lqL7lqL/lqYFcIiw0LFwi5amH5amI5amLXCIsOSxcIuWpluWpl+WpmOWpmeWpm1wiLDVdLFtcIjhiNDBcIixcIuWpoeWpo+WppOWppeWppuWpqOWpqeWpq1wiLDgsXCLlqbjlqbnlqbvlqbzlqb3lqb7lqoBcIiwxNyxcIuWqk1wiLDYsXCLlqpxcIiwxMyxcIuWqq+WqrFwiXSxbXCI4YjgwXCIsXCLlqq1cIiw0LFwi5aq05aq25aq35aq5XCIsNCxcIuWqv+WrgOWrg1wiLDUsXCLlq4rlq4vlq41cIiw0LFwi5auT5auV5auX5auZ5aua5aub5aud5aue5auf5aui5auk5aul5aun5auo5auq5ausXCIsNCxcIuWrslwiLDIyLFwi5ayKXCIsMTEsXCLlrJhcIiwyNSxcIuWss+WsteWstuWsuFwiLDcsXCLlrYFcIiw2XSxbXCI4YzQwXCIsXCLlrYhcIiw3LFwi5a2S5a2W5a2e5a2g5a2h5a2n5a2o5a2r5a2t5a2u5a2v5a2y5a205a225a235a245a255a275a285a2+5a2/5a6C5a6G5a6K5a6N5a6O5a6Q5a6R5a6S5a6U5a6W5a6f5a6n5a6o5a6p5a6s5a6t5a6u5a6v5a6x5a6y5a635a665a675a685a+A5a+B5a+D5a+I5a+J5a+K5a+L5a+N5a+O5a+PXCJdLFtcIjhjODBcIixcIuWvkeWvlFwiLDgsXCLlr6Dlr6Llr6Plr6blr6flr6lcIiw0LFwi5a+v5a+xXCIsNixcIuWvveWvvuWwgOWwguWwg+WwheWwh+WwiOWwi+WwjOWwjeWwjuWwkOWwkuWwk+Wwl+WwmeWwm+WwnuWwn+WwoOWwoeWwo+WwpuWwqOWwqeWwquWwq+WwreWwruWwr+WwsOWwsuWws+WwteWwtuWwt+Wxg+WxhOWxhuWxh+WxjOWxjeWxkuWxk+WxlOWxluWxl+WxmOWxmuWxm+WxnOWxneWxn+WxouWxpOWxp1wiLDYsXCLlsbDlsbJcIiw2LFwi5bG75bG85bG95bG+5bKA5bKDXCIsNCxcIuWyieWyiuWyi+WyjuWyj+WykuWyk+WyleWynVwiLDQsXCLlsqRcIiw0XSxbXCI4ZDQwXCIsXCLlsqrlsq7lsq/lsrDlsrLlsrTlsrblsrnlsrrlsrvlsrzlsr7ls4Dls4Lls4Pls4VcIiw1LFwi5bOMXCIsNSxcIuWzk1wiLDUsXCLls5pcIiw2LFwi5bOi5bOj5bOn5bOp5bOr5bOs5bOu5bOv5bOxXCIsOSxcIuWzvFwiLDRdLFtcIjhkODBcIixcIuW0geW0hOW0heW0iFwiLDUsXCLltI9cIiw0LFwi5bSV5bSX5bSY5bSZ5bSa5bSc5bSd5bSfXCIsNCxcIuW0peW0qOW0quW0q+W0rOW0r1wiLDQsXCLltLVcIiw3LFwi5bS/XCIsNyxcIuW1iOW1ieW1jVwiLDEwLFwi5bWZ5bWa5bWc5bWeXCIsMTAsXCLltarlta3lta7ltbDltbHltbLltbPltbVcIiwxMixcIuW2g1wiLDIxLFwi5baa5bab5bac5bae5baf5bagXCJdLFtcIjhlNDBcIixcIuW2oVwiLDIxLFwi5ba4XCIsMTIsXCLlt4ZcIiw2LFwi5beOXCIsMTIsXCLlt5zlt5/lt6Dlt6Plt6Tlt6rlt6zlt61cIl0sW1wiOGU4MFwiLFwi5bew5be15be25be4XCIsNCxcIuW3v+W4gOW4hOW4h+W4ieW4iuW4i+W4jeW4juW4kuW4k+W4l+W4nlwiLDcsXCLluKhcIiw0LFwi5biv5biw5biyXCIsNCxcIuW4ueW4uuW4vuW4v+W5gOW5geW5g+W5hlwiLDUsXCLluY1cIiw2LFwi5bmWXCIsNCxcIuW5nOW5neW5n+W5oOW5o1wiLDE0LFwi5bm15bm35bm55bm+5bqB5bqC5bqD5bqF5bqI5bqJ5bqM5bqN5bqO5bqS5bqY5bqb5bqd5bqh5bqi5bqj5bqk5bqoXCIsNCxcIuW6rlwiLDQsXCLlurTlurrlurvlurzlur3lur9cIiw2XSxbXCI4ZjQwXCIsXCLlu4blu4flu4jlu4tcIiw1LFwi5buU5buV5buX5buY5buZ5bua5bucXCIsMTEsXCLlu6nlu6tcIiw4LFwi5bu15bu45bu55bu75bu85bu95byF5byG5byH5byJ5byM5byN5byO5byQ5byS5byU5byW5byZ5bya5byc5byd5bye5byh5byi5byj5bykXCJdLFtcIjhmODBcIixcIuW8qOW8q+W8rOW8ruW8sOW8slwiLDYsXCLlvLvlvL3lvL7lvL/lvYFcIiwxNCxcIuW9keW9lOW9meW9muW9m+W9nOW9nuW9n+W9oOW9o+W9peW9p+W9qOW9q+W9ruW9r+W9suW9tOW9teW9tuW9uOW9uuW9veW9vuW9v+W+g+W+huW+jeW+juW+j+W+keW+k+W+lOW+luW+muW+m+W+neW+nuW+n+W+oOW+olwiLDUsXCLlvqnlvqvlvqzlvq9cIiw1LFwi5b625b645b655b665b675b6+XCIsNCxcIuW/h+W/iOW/iuW/i+W/juW/k+W/lOW/leW/muW/m+W/nOW/nuW/n+W/ouW/o+W/peW/puW/qOW/qeW/rOW/r+W/sOW/suW/s+W/tOW/tuW/t+W/ueW/uuW/vOaAh1wiXSxbXCI5MDQwXCIsXCLmgIjmgInmgIvmgIzmgJDmgJHmgJPmgJfmgJjmgJrmgJ7mgJ/mgKLmgKPmgKTmgKzmgK3mgK7mgLBcIiw0LFwi5oC2XCIsNCxcIuaAveaAvuaBgOaBhFwiLDYsXCLmgYzmgY7mgY/mgZHmgZPmgZTmgZbmgZfmgZjmgZvmgZzmgZ7mgZ/mgaDmgaHmgaXmgabmga7mgbHmgbLmgbTmgbXmgbfmgb7mgoBcIl0sW1wiOTA4MFwiLFwi5oKB5oKC5oKF5oKG5oKH5oKI5oKK5oKL5oKO5oKP5oKQ5oKR5oKT5oKV5oKX5oKY5oKZ5oKc5oKe5oKh5oKi5oKk5oKl5oKn5oKp5oKq5oKu5oKw5oKz5oK15oK25oK35oK55oK65oK9XCIsNyxcIuaDh+aDiOaDieaDjFwiLDQsXCLmg5Lmg5Pmg5Tmg5bmg5fmg5nmg5vmg57mg6FcIiw0LFwi5oOq5oOx5oOy5oO15oO35oO45oO7XCIsNCxcIuaEguaEg+aEhOaEheaEh+aEiuaEi+aEjOaEkFwiLDQsXCLmhJbmhJfmhJjmhJnmhJvmhJzmhJ3mhJ7mhKHmhKLmhKXmhKjmhKnmhKrmhKxcIiwxOCxcIuaFgFwiLDZdLFtcIjkxNDBcIixcIuaFh+aFieaFi+aFjeaFj+aFkOaFkuaFk+aFlOaFllwiLDYsXCLmhZ7mhZ/mhaDmhaHmhaPmhaTmhaXmhabmhalcIiw2LFwi5oWx5oWy5oWz5oW05oW25oW4XCIsMTgsXCLmhozmho3mho9cIiw0LFwi5oaVXCJdLFtcIjkxODBcIixcIuaGllwiLDYsXCLmhp5cIiw4LFwi5oaq5oar5oatXCIsOSxcIuaGuFwiLDUsXCLmhr/mh4Dmh4Hmh4NcIiw0LFwi5oeJ5oeMXCIsNCxcIuaHk+aHlVwiLDE2LFwi5oenXCIsMTMsXCLmh7ZcIiw4LFwi5oiAXCIsNSxcIuaIh+aIieaIk+aIlOaImeaInOaIneaInuaIoOaIo+aIpuaIp+aIqOaIqeaIq+aIreaIr+aIsOaIseaIsuaIteaItuaIuFwiLDQsXCLmiYLmiYTmiYXmiYbmiYpcIl0sW1wiOTI0MFwiLFwi5omP5omQ5omV5omW5omX5omZ5oma5omcXCIsNixcIuaJpOaJpeaJqOaJseaJsuaJtOaJteaJt+aJuOaJuuaJu+aJveaKgeaKguaKg+aKheaKhuaKh+aKiOaKi1wiLDUsXCLmipTmipnmipzmip3mip7miqPmiqbmiqfmiqnmiqrmiq3miq7miq/mirDmirLmirPmirTmirbmirfmirjmirrmir7mi4Dmi4FcIl0sW1wiOTI4MFwiLFwi5ouD5ouL5ouP5ouR5ouV5oud5oue5oug5ouh5ouk5ouq5our5ouw5ouy5ou15ou45ou55ou65ou75oyA5oyD5oyE5oyF5oyG5oyK5oyL5oyM5oyN5oyP5oyQ5oyS5oyT5oyU5oyV5oyX5oyY5oyZ5oyc5oym5oyn5oyp5oys5oyt5oyu5oyw5oyx5oyzXCIsNSxcIuaMu+aMvOaMvuaMv+aNgOaNgeaNhOaNh+aNiOaNiuaNkeaNkuaNk+aNlOaNllwiLDcsXCLmjaDmjaTmjaXmjabmjajmjarmjavmjazmja/mjbDmjbLmjbPmjbTmjbXmjbjmjbnmjbzmjb3mjb7mjb/mjoHmjoPmjoTmjoXmjobmjovmjo3mjpHmjpPmjpTmjpXmjpfmjplcIiw2LFwi5o6h5o6k5o6m5o6r5o6v5o6x5o6y5o615o625o655o675o695o6/5o+AXCJdLFtcIjkzNDBcIixcIuaPgeaPguaPg+aPheaPh+aPiOaPiuaPi+aPjOaPkeaPk+aPlOaPleaPl1wiLDYsXCLmj5/mj6Lmj6RcIiw0LFwi5o+r5o+s5o+u5o+v5o+w5o+x5o+z5o+15o+35o+55o+65o+75o+85o++5pCD5pCE5pCGXCIsNCxcIuaQjeaQjuaQkeaQkuaQlVwiLDUsXCLmkJ3mkJ/mkKLmkKPmkKRcIl0sW1wiOTM4MFwiLFwi5pCl5pCn5pCo5pCp5pCr5pCuXCIsNSxcIuaQtVwiLDQsXCLmkLvmkLzmkL7mkYDmkYLmkYPmkYnmkYtcIiw2LFwi5pGT5pGV5pGW5pGX5pGZXCIsNCxcIuaRn1wiLDcsXCLmkajmkarmkavmkazmka5cIiw5LFwi5pG7XCIsNixcIuaSg+aShuaSiFwiLDgsXCLmkpPmkpTmkpfmkpjmkprmkpvmkpzmkp3mkp9cIiw0LFwi5pKl5pKm5pKn5pKo5pKq5pKr5pKv5pKx5pKy5pKz5pK05pK25pK55pK75pK95pK+5pK/5pOB5pOD5pOE5pOGXCIsNixcIuaTj+aTkeaTk+aTlOaTleaTluaTmeaTmlwiXSxbXCI5NDQwXCIsXCLmk5vmk5zmk53mk5/mk6Dmk6Hmk6Pmk6Xmk6dcIiwyNCxcIuaUgVwiLDcsXCLmlIpcIiw3LFwi5pSTXCIsNCxcIuaUmVwiLDhdLFtcIjk0ODBcIixcIuaUouaUo+aUpOaUplwiLDQsXCLmlKzmlK3mlLDmlLHmlLLmlLPmlLfmlLrmlLzmlL3mlYBcIiw0LFwi5pWG5pWH5pWK5pWL5pWN5pWO5pWQ5pWS5pWT5pWU5pWX5pWY5pWa5pWc5pWf5pWg5pWh5pWk5pWl5pWn5pWo5pWp5pWq5pWt5pWu5pWv5pWx5pWz5pW15pW25pW4XCIsMTQsXCLmlojmlonmlormlo3mlo7mlo/mlpLmlpTmlpXmlpbmlpjmlprmlp3mlp7mlqDmlqLmlqPmlqbmlqjmlqrmlqzmlq7mlrFcIiw3LFwi5pa65pa75pa+5pa/5peA5peC5peH5peI5peJ5peK5peN5peQ5peR5peT5peU5peV5peYXCIsNyxcIuaXoeaXo+aXpOaXquaXq1wiXSxbXCI5NTQwXCIsXCLml7Lml7Pml7Tml7Xml7jml7nml7tcIiw0LFwi5piB5piE5piF5piH5piI5piJ5piL5piN5piQ5piR5piS5piW5piX5piY5pia5pib5pic5pie5pih5pii5pij5pik5pim5pip5piq5pir5pis5piu5piw5piy5piz5pi3XCIsNCxcIuaYveaYv+aZgOaZguaZhFwiLDYsXCLmmY3mmY7mmZDmmZHmmZhcIl0sW1wiOTU4MFwiLFwi5pmZ5pmb5pmc5pmd5pme5pmg5pmi5pmj5pml5pmn5pmpXCIsNCxcIuaZseaZsuaZs+aZteaZuOaZueaZu+aZvOaZveaZv+aagOaageaag+aaheaahuaaiOaaieaaiuaai+aajeaajuaaj+aakOaakuaak+aalOaaleaamFwiLDQsXCLmmp5cIiw4LFwi5pqpXCIsNCxcIuaar1wiLDQsXCLmmrXmmrbmmrfmmrjmmrrmmrvmmrzmmr3mmr9cIiwyNSxcIuabmuabnlwiLDcsXCLmm6fmm6jmm6pcIiw1LFwi5pux5pu15pu25pu45pu65pu75pu95pyB5pyC5pyDXCJdLFtcIjk2NDBcIixcIuachOacheachuach+acjOacjuacj+ackeackuack+acluacmOacmeacmuacnOacnuacoFwiLDUsXCLmnKfmnKnmnK7mnLDmnLLmnLPmnLbmnLfmnLjmnLnmnLvmnLzmnL7mnL/mnYHmnYTmnYXmnYfmnYrmnYvmnY3mnZLmnZTmnZXmnZdcIiw0LFwi5p2d5p2i5p2j5p2k5p2m5p2n5p2r5p2s5p2u5p2x5p205p22XCJdLFtcIjk2ODBcIixcIuaduOadueaduuadu+adveaegOaeguaeg+aeheaehuaeiOaeiuaejOaejeaejuaej+aekeaekuaek+aelOaeluaemeaem+aen+aeoOaeoeaepOaepuaeqeaerOaeruaeseaesuaetOaeuVwiLDcsXCLmn4Lmn4VcIiw5LFwi5p+V5p+W5p+X5p+b5p+f5p+h5p+j5p+k5p+m5p+n5p+o5p+q5p+r5p+t5p+u5p+y5p+1XCIsNyxcIuafvuaggeagguagg+aghOaghuagjeagkOagkuaglOagleagmFwiLDQsXCLmoJ7moJ/moKDmoKJcIiw2LFwi5qCrXCIsNixcIuagtOagteagtuaguuagu+agv+ahh+ahi+ahjeahj+ahkuahllwiLDVdLFtcIjk3NDBcIixcIuahnOahneahnuahn+ahquahrFwiLDcsXCLmobXmobhcIiw4LFwi5qKC5qKE5qKHXCIsNyxcIuaikOaikeaikuailOaileailuaimFwiLDksXCLmoqPmoqTmoqXmoqnmoqrmoqvmoqzmoq7morHmorLmorTmorbmorfmorhcIl0sW1wiOTc4MFwiLFwi5qK5XCIsNixcIuajgeajg1wiLDUsXCLmo4rmo4zmo47mo4/mo5Dmo5Hmo5Pmo5Tmo5bmo5fmo5nmo5tcIiw0LFwi5qOh5qOi5qOkXCIsOSxcIuajr+ajsuajs+ajtOajtuajt+ajuOaju+ajveajvuajv+akgOakguakg+akhOakhlwiLDQsXCLmpIzmpI/mpJHmpJNcIiwxMSxcIuakoeakouako+akpVwiLDcsXCLmpK7mpK/mpLHmpLLmpLPmpLXmpLbmpLfmpLjmpLrmpLvmpLzmpL7mpYDmpYHmpYNcIiwxNixcIualleallualmOalmealm+alnOaln1wiXSxbXCI5ODQwXCIsXCLmpaHmpaLmpaTmpaXmpafmpajmpanmparmpazmpa3mpa/mpbDmpbJcIiw0LFwi5qW65qW75qW95qW+5qW/5qaB5qaD5qaF5qaK5qaL5qaM5qaOXCIsNSxcIuamluaml+ammeammuamnVwiLDksXCLmpqnmpqrmpqzmpq7mpq/mprDmprLmprPmprXmprbmprjmprnmprrmprzmpr1cIl0sW1wiOTg4MFwiLFwi5qa+5qa/5qeA5qeCXCIsNyxcIuani+anjeanj+ankeankuank+anlVwiLDUsXCLmp5zmp53mp57mp6FcIiwxMSxcIuanruanr+ansOanseans1wiLDksXCLmp77mqIBcIiw5LFwi5qiLXCIsMTEsXCLmqJlcIiw1LFwi5qig5qiiXCIsNSxcIuaoqeaoq+aorOaoreaoruaosOaosuaos+aotOaotlwiLDYsXCLmqL9cIiw0LFwi5qmF5qmG5qmIXCIsNyxcIuapkVwiLDYsXCLmqZpcIl0sW1wiOTk0MFwiLFwi5qmcXCIsNCxcIuapouapo+appOapplwiLDEwLFwi5qmyXCIsNixcIuapuuapu+apveapvuapv+aqgeaqguaqg+aqhVwiLDgsXCLmqo/mqpJcIiw0LFwi5qqYXCIsNyxcIuaqoVwiLDVdLFtcIjk5ODBcIixcIuaqp+aqqOaqquaqrVwiLDExNCxcIuaspeaspuasqFwiLDZdLFtcIjlhNDBcIixcIuasr+assOasseass+astOasteastuasuOasu+asvOasveasv+atgOatgeatguathOatheatiOatiuati+atjVwiLDExLFwi5q2aXCIsNyxcIuatqOatqeatq1wiLDEzLFwi5q265q295q2+5q2/5q6A5q6F5q6IXCJdLFtcIjlhODBcIixcIuaujOaujuauj+aukOaukeaulOauleaul+aumOaumeaunFwiLDQsXCLmrqJcIiw3LFwi5q6rXCIsNyxcIuautuauuFwiLDYsXCLmr4Dmr4Pmr4Tmr4ZcIiw0LFwi5q+M5q+O5q+Q5q+R5q+Y5q+a5q+cXCIsNCxcIuavolwiLDcsXCLmr6zmr63mr67mr7Dmr7Hmr7Lmr7Tmr7bmr7fmr7jmr7rmr7vmr7zmr75cIiw2LFwi5rCIXCIsNCxcIuawjuawkuawl+awnOawneawnuawoOawo+awpeawq+awrOawreawseaws+awtuawt+awueawuuawu+awvOawvuawv+axg+axhOaxheaxiOaxi1wiLDQsXCLmsZHmsZLmsZPmsZbmsZhcIl0sW1wiOWI0MFwiLFwi5rGZ5rGa5rGi5rGj5rGl5rGm5rGn5rGrXCIsNCxcIuaxseaxs+axteaxt+axuOaxuuaxu+axvOaxv+aygOayhOayh+ayiuayi+ayjeayjuaykeaykuayleayluayl+aymOaymuaynOayneaynuayoOayouayqOayrOayr+aysOaytOayteaytuayt+ayuuazgOazgeazguazg+azhuazh+aziOazi+azjeazjuazj+azkeazkuazmFwiXSxbXCI5YjgwXCIsXCLms5nms5rms5zms53ms5/ms6Tms6bms6fms6nms6zms63ms7Lms7Tms7nms7/mtIDmtILmtIPmtIXmtIbmtIjmtInmtIrmtI3mtI/mtJDmtJHmtJPmtJTmtJXmtJbmtJjmtJzmtJ3mtJ9cIiw1LFwi5rSm5rSo5rSp5rSs5rSt5rSv5rSw5rS05rS25rS35rS45rS65rS/5rWA5rWC5rWE5rWJ5rWM5rWQ5rWV5rWW5rWX5rWY5rWb5rWd5rWf5rWh5rWi5rWk5rWl5rWn5rWo5rWr5rWs5rWt5rWw5rWx5rWy5rWz5rW15rW25rW55rW65rW75rW9XCIsNCxcIua2g+a2hOa2hua2h+a2iua2i+a2jea2j+a2kOa2kua2llwiLDQsXCLmtpzmtqLmtqXmtqzmtq3mtrDmtrHmtrPmtrTmtrbmtrfmtrlcIiw1LFwi5reB5reC5reD5reI5reJ5reKXCJdLFtcIjljNDBcIixcIua3jea3jua3j+a3kOa3kua3k+a3lOa3lea3l+a3mua3m+a3nOa3n+a3oua3o+a3pea3p+a3qOa3qea3qua3rea3r+a3sOa3sua3tOa3tea3tua3uOa3uua3vVwiLDcsXCLmuIbmuIfmuIjmuInmuIvmuI/muJLmuJPmuJXmuJjmuJnmuJvmuJzmuJ7muJ/muKLmuKbmuKfmuKjmuKrmuKzmuK7muLDmuLHmuLPmuLVcIl0sW1wiOWM4MFwiLFwi5ri25ri35ri55ri7XCIsNyxcIua5hVwiLDcsXCLmuY/muZDmuZHmuZLmuZXmuZfmuZnmuZrmuZzmuZ3muZ7muaBcIiwxMCxcIua5rOa5rea5r1wiLDE0LFwi5rqA5rqB5rqC5rqE5rqH5rqI5rqKXCIsNCxcIua6kVwiLDYsXCLmupnmuprmupvmup3mup7muqDmuqHmuqPmuqTmuqbmuqjmuqnmuqvmuqzmuq3muq7murDmurPmurXmurjmurnmurzmur7mur/mu4Dmu4Pmu4Tmu4Xmu4bmu4jmu4nmu4rmu4zmu43mu47mu5Dmu5Lmu5bmu5jmu5nmu5vmu5zmu53mu6Pmu6fmu6pcIiw1XSxbXCI5ZDQwXCIsXCLmu7Dmu7Hmu7Lmu7Pmu7Xmu7bmu7fmu7jmu7pcIiw3LFwi5ryD5ryE5ryF5ryH5ryI5ryKXCIsNCxcIua8kOa8kea8kua8llwiLDksXCLmvKHmvKLmvKPmvKXmvKbmvKfmvKjmvKzmvK7mvLDmvLLmvLTmvLXmvLdcIiw2LFwi5ry/5r2A5r2B5r2CXCJdLFtcIjlkODBcIixcIua9g+a9hOa9hea9iOa9iea9iua9jOa9jlwiLDksXCLmvZnmvZrmvZvmvZ3mvZ/mvaDmvaHmvaPmvaTmvaXmvadcIiw1LFwi5r2v5r2w5r2x5r2z5r215r225r235r255r275r29XCIsNixcIua+hea+hua+h+a+iua+i+a+j1wiLDEyLFwi5r6d5r6e5r6f5r6g5r6iXCIsNCxcIua+qFwiLDEwLFwi5r605r615r635r645r66XCIsNSxcIua/gea/g1wiLDUsXCLmv4pcIiw2LFwi5r+TXCIsMTAsXCLmv5/mv6Lmv6Pmv6Tmv6VcIl0sW1wiOWU0MFwiLFwi5r+mXCIsNyxcIua/sFwiLDMyLFwi54CSXCIsNyxcIueAnFwiLDYsXCLngKRcIiw2XSxbXCI5ZTgwXCIsXCLngKtcIiw5LFwi54C254C354C454C6XCIsMTcsXCLngY3ngY7ngZBcIiwxMyxcIueBn1wiLDExLFwi54Gu54Gx54Gy54Gz54G054G354G554G654G754G954KB54KC54KD54KE54KG54KH54KI54KL54KM54KN54KP54KQ54KR54KT54KX54KY54Ka54Kb54KeXCIsMTIsXCLngrDngrLngrTngrXngrbngrrngr7ngr/ng4Tng4Xng4bng4fng4nng4tcIiwxMixcIueDmlwiXSxbXCI5ZjQwXCIsXCLng5zng53ng57ng6Dng6Hng6Lng6Png6Xng6rng67ng7BcIiw2LFwi54O454O654O754O854O+XCIsMTAsXCLnhItcIiw0LFwi54SR54SS54SU54SX54SbXCIsMTAsXCLnhKdcIiw3LFwi54Sy54Sz54S0XCJdLFtcIjlmODBcIixcIueEteeEt1wiLDEzLFwi54WG54WH54WI54WJ54WL54WN54WPXCIsMTIsXCLnhZ3nhZ9cIiw0LFwi54Wl54WpXCIsNCxcIueFr+eFsOeFseeFtOeFteeFtueFt+eFueeFu+eFvOeFvlwiLDUsXCLnhoVcIiw0LFwi54aL54aM54aN54aO54aQ54aR54aS54aT54aV54aW54aX54aaXCIsNCxcIueGoVwiLDYsXCLnhqnnhqrnhqvnhq1cIiw1LFwi54a054a254a354a454a6XCIsOCxcIueHhFwiLDksXCLnh49cIiw0XSxbXCJhMDQwXCIsXCLnh5ZcIiw5LFwi54eh54ei54ej54ek54em54eoXCIsNSxcIueHr1wiLDksXCLnh7pcIiwxMSxcIueIh1wiLDE5XSxbXCJhMDgwXCIsXCLniJvniJzniJ5cIiw5LFwi54ip54ir54it54iu54iv54iy54iz54i054i654i854i+54mAXCIsNixcIueJieeJiueJi+eJjueJj+eJkOeJkeeJk+eJlOeJleeJl+eJmOeJmueJnOeJnueJoOeJo+eJpOeJpeeJqOeJqueJq+eJrOeJreeJsOeJseeJs+eJtOeJtueJt+eJuOeJu+eJvOeJveeKgueKg+eKhVwiLDQsXCLnioznio7nipDnipHnipNcIiwxMSxcIueKoFwiLDExLFwi54qu54qx54qy54qz54q154q6XCIsNixcIueLheeLhueLh+eLieeLiueLi+eLjOeLj+eLkeeLk+eLlOeLleeLlueLmOeLmueLm1wiXSxbXCJhMWExXCIsXCLjgIDjgIHjgILCt8uJy4fCqOOAg+OAheKAlO+9nuKAluKApuKAmOKAmeKAnOKAneOAlOOAleOAiFwiLDcsXCLjgJbjgJfjgJDjgJHCscOXw7fiiLbiiKfiiKjiiJHiiI/iiKriiKniiIjiiLfiiJriiqXiiKXiiKDijJLiipniiKviiK7iiaHiiYziiYjiiL3iiJ3iiaDiia7iia/iiaTiiaXiiJ7iiLXiiLTimYLimYDCsOKAsuKAs+KEg++8hMKk77+g77+h4oCwwqfihJbimIbimIXil4vil4/il47il4fil4bilqHilqDilrPilrLigLvihpLihpDihpHihpPjgJNcIl0sW1wiYTJhMVwiLFwi4oWwXCIsOV0sW1wiYTJiMVwiLFwi4pKIXCIsMTksXCLikbRcIiwxOSxcIuKRoFwiLDldLFtcImEyZTVcIixcIuOIoFwiLDldLFtcImEyZjFcIixcIuKFoFwiLDExXSxbXCJhM2ExXCIsXCLvvIHvvILvvIPvv6XvvIVcIiw4OCxcIu+/o1wiXSxbXCJhNGExXCIsXCLjgYFcIiw4Ml0sW1wiYTVhMVwiLFwi44KhXCIsODVdLFtcImE2YTFcIixcIs6RXCIsMTYsXCLOo1wiLDZdLFtcImE2YzFcIixcIs6xXCIsMTYsXCLPg1wiLDZdLFtcImE2ZTBcIixcIu+4te+4tu+4ue+4uu+4v++5gO+4ve+4vu+5ge+5gu+5g++5hFwiXSxbXCJhNmVlXCIsXCLvuLvvuLzvuLfvuLjvuLFcIl0sW1wiYTZmNFwiLFwi77iz77i0XCJdLFtcImE3YTFcIixcItCQXCIsNSxcItCB0JZcIiwyNV0sW1wiYTdkMVwiLFwi0LBcIiw1LFwi0ZHQtlwiLDI1XSxbXCJhODQwXCIsXCLLisuLy5nigJPigJXigKXigLXihIXihInihpbihpfihpjihpniiJXiiJ/iiKPiiZLiiabiiafiir/ilZBcIiwzNSxcIuKWgVwiLDZdLFtcImE4ODBcIixcIuKWiFwiLDcsXCLilpPilpTilpXilrzilr3il6Lil6Pil6Til6XimIniipXjgJLjgJ3jgJ5cIl0sW1wiYThhMVwiLFwixIHDoceOw6DEk8OpxJvDqMSrw63HkMOsxY3Ds8eSw7LFq8O6x5TDuceWx5jHmsecw7zDqsmRXCJdLFtcImE4YmRcIixcIsWExYhcIl0sW1wiYThjMFwiLFwiyaFcIl0sW1wiYThjNVwiLFwi44SFXCIsMzZdLFtcImE5NDBcIixcIuOAoVwiLDgsXCLjiqPjjo7jjo/jjpzjjp3jjp7jjqHjj4Tjj47jj5Hjj5Ljj5XvuLDvv6Lvv6RcIl0sW1wiYTk1OVwiLFwi4oSh44ixXCJdLFtcImE5NWNcIixcIuKAkFwiXSxbXCJhOTYwXCIsXCLjg7zjgpvjgpzjg73jg77jgIbjgp3jgp7vuYlcIiw5LFwi77mU77mV77mW77mX77mZXCIsOF0sW1wiYTk4MFwiLFwi77miXCIsNCxcIu+5qO+5qe+5qu+5q1wiXSxbXCJhOTk2XCIsXCLjgIdcIl0sW1wiYTlhNFwiLFwi4pSAXCIsNzVdLFtcImFhNDBcIixcIueLnOeLneeLn+eLolwiLDUsXCLni6rni6vni7Xni7bni7nni73ni77ni7/njIDnjILnjIRcIiw1LFwi54yL54yM54yN54yP54yQ54yR54yS54yU54yY54yZ54ya54yf54yg54yj54yk54ym54yn54yo54yt54yv54yw54yy54yz54y154y254y654y754y854y9542AXCIsOF0sW1wiYWE4MFwiLFwi542J542K542L542M542O542P542R542T542U542V542W542YXCIsNyxcIueNoVwiLDEwLFwi542u542w542xXCJdLFtcImFiNDBcIixcIueNslwiLDExLFwi542/XCIsNCxcIueOheeOhueOiOeOiueOjOeOjeeOj+eOkOeOkueOk+eOlOeOleeOl+eOmOeOmeeOmueOnOeOneeOnueOoOeOoeeOo1wiLDUsXCLnjqrnjqznjq3njrHnjrTnjrXnjrbnjrjnjrnnjrznjr3njr7njr/nj4Hnj4NcIiw0XSxbXCJhYjgwXCIsXCLnj4vnj4znj47nj5JcIiw2LFwi54+a54+b54+c54+d54+f54+h54+i54+j54+k54+m54+o54+q54+r54+s54+u54+v54+w54+x54+zXCIsNF0sW1wiYWM0MFwiLFwi54+4XCIsMTAsXCLnkITnkIfnkIjnkIvnkIznkI3nkI7nkJFcIiw4LFwi55CcXCIsNSxcIueQo+eQpOeQp+eQqeeQq+eQreeQr+eQseeQsueQt1wiLDQsXCLnkL3nkL7nkL/nkYDnkYJcIiwxMV0sW1wiYWM4MFwiLFwi55GOXCIsNixcIueRlueRmOeRneeRoFwiLDEyLFwi55Gu55Gv55GxXCIsNCxcIueRuOeRueeRulwiXSxbXCJhZDQwXCIsXCLnkbvnkbznkb3nkb/nkoLnkoTnkoXnkobnkojnkonnkornkoznko3nko/nkpFcIiwxMCxcIueSneeSn1wiLDcsXCLnkqpcIiwxNSxcIueSu1wiLDEyXSxbXCJhZDgwXCIsXCLnk4hcIiw5LFwi55OTXCIsOCxcIueTneeTn+eToeeTpeeTp1wiLDYsXCLnk7Dnk7Hnk7JcIl0sW1wiYWU0MFwiLFwi55Oz55O155O4XCIsNixcIueUgOeUgeeUgueUg+eUhVwiLDcsXCLnlI7nlJDnlJLnlJTnlJXnlJbnlJfnlJvnlJ3nlJ7nlKBcIiw0LFwi55Sm55Sn55Sq55Su55S055S255S555S855S955S/55WB55WC55WD55WE55WG55WH55WJ55WK55WN55WQ55WR55WS55WT55WV55WW55WX55WYXCJdLFtcImFlODBcIixcIueVnVwiLDcsXCLnlafnlajnlannlatcIiw2LFwi55Wz55W155W255W355W6XCIsNCxcIueWgOeWgeeWgueWhOeWheeWh1wiXSxbXCJhZjQwXCIsXCLnlojnlonnlornloznlo3nlo7nlpDnlpPnlpXnlpjnlpvnlpznlp7nlqLnlqZcIiw0LFwi55at55a255a355a655a755a/55eA55eB55eG55eL55eM55eO55eP55eQ55eR55eT55eX55eZ55ea55ec55ed55ef55eg55eh55el55ep55es55et55eu55ev55ey55ez55e155e255e355e455e655e755e955e+55iC55iE55iG55iHXCJdLFtcImFmODBcIixcIueYiOeYieeYi+eYjeeYjueYj+eYkeeYkueYk+eYlOeYlueYmueYnOeYneeYnueYoeeYo+eYp+eYqOeYrOeYrueYr+eYseeYsueYtueYt+eYueeYuueYu+eYveeZgeeZgueZhFwiXSxbXCJiMDQwXCIsXCLnmYVcIiw2LFwi55mOXCIsNSxcIueZleeZl1wiLDQsXCLnmZ3nmZ/nmaDnmaHnmaLnmaRcIiw2LFwi55ms55mt55mu55mwXCIsNyxcIueZueeZuueZvOeZv+eagOeageeag+eaheeaieeaiueajOeajeeaj+eakOeakuealOealeeal+eamOeamueam1wiXSxbXCJiMDgwXCIsXCLnmpxcIiw3LFwi55qlXCIsOCxcIuear+easOeas+eatVwiLDksXCLnm4Dnm4Hnm4PllYrpmL/ln4PmjKjlk47llInlk4DnmpHnmYzolLznn67oib7noo3niLHpmpjpno3msKjlronkv7rmjInmmpflsrjog7rmoYjogq7mmILnm47lh7nmlZbnhqznv7HoooTlgrLlpaXmh4rmvrPoiq3mjYzmiZLlj63lkKfnrIblhavnlqTlt7Tmi5Tot4vpnbbmiorogJnlnZ3pnLjnvaLniLjnmb3mn4/nmb7mkYbkvbDotKXmi5znqJfmlpHnj63mkKzmibPoiKzpooHmnb/niYjmia7mi4zkvLTnk6PljYrlip7nu4rpgqbluK7moobmppzohoDnu5Hmo5Lno4XomozplZHlgo3osKToi57og57ljIXopJLliaVcIl0sW1wiYjE0MFwiLFwi55uE55uH55uJ55uL55uM55uT55uV55uZ55ua55uc55ud55ue55ugXCIsNCxcIuebplwiLDcsXCLnm7Dnm7Pnm7Xnm7bnm7fnm7rnm7vnm73nm7/nnIDnnILnnIPnnIXnnIbnnIrnnIznnI5cIiwxMCxcIuecm+ecnOecneecnuecoeeco+ecpOecpeecp+ecquecq1wiXSxbXCJiMTgwXCIsXCLnnKznnK7nnLBcIiw0LFwi55y555y755y955y+55y/552C552E552F552G552IXCIsNyxcIuedklwiLDcsXCLnnZzoloTpm7nkv53loKHppbHlrp3mirHmiqXmmrTosbnpso3niIbmna/nopHmgrLljZHljJfovojog4zotJ3pkqHlgI3ni4jlpIfmg6vnhJnooqvlpZToi6/mnKznrKjltKnnu7fnlK3ms7Xouabov7jpgLzpvLvmr5TphJnnrJTlvbznoqfok5bolL3mr5Xmr5nmr5bluIHluofnl7npl63mlZ3lvIrlv4Xovp/lo4Hoh4Lpgb/pmZvpnq3ovrnnvJbotKzmiYHkvr/lj5jljZ7ovqjovqnovqvpgY3moIflvarohpjooajps5bmhovliKvnmKrlvazmlozmv5Lmu6jlrr7mkYjlhbXlhrDmn4TkuJnnp4nppbzngrNcIl0sW1wiYjI0MFwiLFwi552d552e552f552g552k552n552p552q552tXCIsMTEsXCLnnbrnnbvnnbznnoHnnoLnnoPnnoZcIiw1LFwi556P556Q556TXCIsMTEsXCLnnqHnnqPnnqTnnqbnnqjnnqvnnq3nnq7nnq/nnrHnnrLnnrTnnrZcIiw0XSxbXCJiMjgwXCIsXCLnnrznnr7nn4BcIiwxMixcIuefjlwiLDgsXCLnn5jnn5nnn5rnn51cIiw0LFwi55+k55eF5bm254676I+g5pKt5ouo6ZK15rOi5Y2a5YuD5pCP6ZOC566U5Lyv5bib6Ii26ISW6IaK5rik5rOK6amz5o2V5Y2c5ZO66KGl5Z+g5LiN5biD5q2l57C/6YOo5oCW5pOm54yc6KOB5p2Q5omN6LSi552s6Lip6YeH5b2p6I+c6JSh6aSQ5Y+C6JqV5q6L5oOt5oOo54G/6IuN6Iix5LuT5rKn6JeP5pON57OZ5qe95pu56I2J5Y6V562W5L6n5YaM5rWL5bGC6Lmt5o+S5Y+J6Iys6Iy25p+l56K05pC95a+f5bKU5beu6K+n5ouG5p+06LG65pCA5o666J2J6aaL6LCX57yg6ZOy5Lqn6ZiQ6aKk5piM54yWXCJdLFtcImIzNDBcIixcIuefpuefqOefquefr+efsOefseefsueftOefteeft+efueefuuefu+efvOegg1wiLDUsXCLnoIrnoIvnoI7noI/noJDnoJPnoJXnoJnnoJvnoJ7noKDnoKHnoKLnoKTnoKjnoKrnoKvnoK7noK/noLHnoLLnoLPnoLXnoLbnoL3noL/noYHnoYLnoYPnoYTnoYbnoYjnoYnnoYrnoYvnoY3noY/noZHnoZPnoZTnoZjnoZnnoZpcIl0sW1wiYjM4MFwiLFwi56Gb56Gc56GeXCIsMTEsXCLnoa9cIiw3LFwi56G456G556G656G756G9XCIsNixcIuWcuuWwneW4uOmVv+WBv+iCoOWOguaVnueVheWUseWAoei2heaKhOmSnuacneWYsua9ruW3ouWQteeCkui9puaJr+aSpOaOo+W9u+a+iOmDtOiHo+i+sOWwmOaZqOW/seayiemZiOi2geihrOaSkeensOWfjuapmeaIkOWRiOS5mOeoi+aDqea+hOivmuaJv+mAnumqi+enpOWQg+eXtOaMgeWMmeaxoOi/n+W8m+mpsOiAu+m9v+S+iOWwuui1pOe/heaWpeeCveWFheWGsuiZq+W0h+WuoOaKvemFrOeVtOi4jOeooOaEgeetueS7h+e7uOeeheS4keiHreWIneWHuuapseWOqOi6h+mUhOmbj+a7gemZpOalmlwiXSxbXCJiNDQwXCIsXCLnooTnooXnoobnoojnoornoovnoo/nopDnopLnopTnopXnopbnopnnop3nop7noqDnoqLnoqTnoqbnoqhcIiw3LFwi56K156K256K356K456K656K756K856K956K/56OA56OC56OD56OE56OG56OH56OI56OM56ON56OO56OP56OR56OS56OT56OW56OX56OY56OaXCIsOV0sW1wiYjQ4MFwiLFwi56Ok56Ol56Om56On56Op56Oq56Or56OtXCIsNCxcIuejs+ejteejtuejuOejueeju1wiLDUsXCLnpILnpIPnpITnpIZcIiw2LFwi56GA5YKo55+X5pCQ6Kem5aSE5o+j5bed56m/5qS95Lyg6Ii55ZaY5Liy55au56qX5bmi5bqK6Zev5Yib5ZC554KK5o226ZSk5Z6C5pil5qS/6YaH5ZSH5rez57qv6KCi5oiz57uw55a16Iyo56OB6ZuM6L6e5oWI55O36K+N5q2k5Yi66LWQ5qyh6IGq6JGx5Zux5YyG5LuO5Lib5YeR57KX6YaL57CH5L+D6Lm/56+h56qc5pGn5bSU5YKs6ISG55iB57K55res57+g5p2R5a2Y5a+456OL5pKu5pCT5o6q5oyr6ZSZ5pCt6L6+562U55ip5omT5aSn5ZGG5q255YKj5oi05bim5q6G5Luj6LS36KKL5b6F6YCuXCJdLFtcImI1NDBcIixcIuekjVwiLDUsXCLnpJRcIiw5LFwi56SfXCIsNCxcIuekpVwiLDE0LFwi56S1XCIsNCxcIuekveekv+elguelg+elhOelheelh+elilwiLDgsXCLnpZTnpZXnpZjnpZnnpaHnpaNcIl0sW1wiYjU4MFwiLFwi56Wk56Wm56Wp56Wq56Wr56Ws56Wu56WwXCIsNixcIuelueelu1wiLDQsXCLnpoLnpoPnpobnpofnpojnponnpovnpoznpo3npo7nppDnppHnppLmgKDogL3mi4XkuLnljZXpg7jmjrjog4bml6bmsK7kvYbmg67mt6Hor57lvLnom4vlvZPmjKHlhZrojaHmoaPliIDmjaPouYjlgJLlspvnpbflr7zliLDnqLvmgrzpgZPnm5flvrflvpfnmoTouaznga/nmbvnrYnnnqrlh7PpgpPloKTkvY7mu7Tov6rmlYznrJvni4TmtqTnv5/lq6HmirXlupXlnLDokoLnrKzluJ3lvJ/pgJLnvJTpoqDmjoLmu4fnopjngrnlhbjpnZvlnqvnlLXkvYPnlLjlupfmg6blpaDmt4Dmrr/noonlj7zpm5Xlh4vliIHmjonlkIrpkpPosIPot4zniLnnop/onbbov63osI3lj6BcIl0sW1wiYjY0MFwiLFwi56aTXCIsNixcIuemm1wiLDExLFwi56aoXCIsMTAsXCLnprRcIiw0LFwi56a856a/56eC56eE56eF56eH56eI56eK56eM56eO56eP56eQ56eT56eU56eW56eX56eZXCIsNSxcIuenoOenoeenouenpeenqOenqlwiXSxbXCJiNjgwXCIsXCLnp6znp67np7FcIiw2LFwi56e556e656e856e+56e/56iB56iE56iF56iH56iI56iJ56iK56iM56iPXCIsNCxcIueoleeolueomOeomeeom+eonOS4geebr+WPrumSiemhtum8jumUreWumuiuouS4ouS4nOWGrOiRo+aHguWKqOagi+S+l+aBq+WGu+a0nuWFnOaKluaWl+mZoeixhumAl+eXmOmDveedo+avkueKiueLrOivu+Wgteeduei1jOadnOmVgOiCmuW6pua4oeWmkuerr+efremUu+auteaWree8juWghuWFkemYn+WvueWiqeWQqOi5suaVpumhv+WbpOmSneebvumBgeaOh+WThuWkmuWkuuWem+i6suactei3uuiIteWJgeaDsOWgleibvuWzqOm5heS/hOmineiuueWopeaBtuWOhOaJvOmBj+mEgumlv+aBqeiAjOWEv+iAs+WwlOmltea0seS6jFwiXSxbXCJiNzQwXCIsXCLnqJ3nqJ/nqKHnqKLnqKRcIiwxNCxcIueotOeoteeotueouOeouueovuepgFwiLDUsXCLnqYdcIiw5LFwi56mSXCIsNCxcIuepmFwiLDE2XSxbXCJiNzgwXCIsXCLnqalcIiw2LFwi56mx56my56mz56m156m756m856m956m+56qC56qF56qH56qJ56qK56qL56qM56qO56qP56qQ56qT56qU56qZ56qa56qb56qe56qh56qi6LSw5Y+R572a562P5LyQ5LmP6ZiA5rOV54+Q6Jep5biG55Wq57+75qiK55++6ZKS57mB5Yeh54Om5Y+N6L+U6IyD6LSp54qv6aWt5rOb5Z2K6Iqz5pa56IKq5oi/6Ziy5aao5Lu/6K6/57q65pS+6I+y6Z2e5ZWh6aOe6IKl5Yyq6K+95ZCg6IK65bqf5rK46LS56Iqs6YWa5ZCp5rCb5YiG57q35Z2f54Sa5rG+57KJ5aWL5Lu95b+/5oSk57Kq5Liw5bCB5p6r6JyC5bOw6ZSL6aOO55av54O96YCi5Yav57yd6K695aWJ5Yek5L2b5ZCm5aSr5pW36IKk5a215om25ouC6L6Q5bmF5rCf56ym5LyP5L+Y5pyNXCJdLFtcImI4NDBcIixcIueqo+eqpOeqp+eqqeeqqueqq+eqrlwiLDQsXCLnqrRcIiwxMCxcIuergFwiLDEwLFwi56uMXCIsOSxcIuerl+ermOermuerm+ernOerneeroeerouerpOerp1wiLDUsXCLnq67nq7Dnq7Hnq7Lnq7NcIl0sW1wiYjg4MFwiLFwi56u0XCIsNCxcIueru+ervOervuesgOesgeesguesheesh+esieesjOesjeesjueskOeskuesk+esluesl+esmOesmuesnOesneesn+esoeesoueso+esp+esqeesrea1rua2quemj+iiseW8l+eUq+aKmui+heS/r+mHnOaWp+iEr+iFkeW6nOiFkOi1tOWJr+imhui1i+WkjeWCheS7mOmYnOeItuiFuei0n+WvjOiuo+mZhOWmh+e8muWSkOWZtuWYjuivpeaUueamgumSmeeblua6ieW5sueUmOadhuafkeerv+iCnei1tuaEn+enhuaVoui1o+WGiOWImumSoue8uOiCm+e6suWyl+a4r+adoOevmeeai+mrmOiGj+e+lOezleaQnumVkOeov+WRiuWTpeatjOaQgeaIiOm4veiDs+eWmeWJsumdqeiRm+agvOibpOmYgemalOmTrOS4quWQhOe7meaguei3n+iAleabtOW6mue+uVwiXSxbXCJiOTQwXCIsXCLnrK/nrLDnrLLnrLTnrLXnrLbnrLfnrLnnrLvnrL3nrL9cIiw1LFwi562G562I562K562N562O562T562V562X562Z562c562e562f562h562jXCIsMTAsXCLnra/nrbDnrbPnrbTnrbbnrbjnrbrnrbznrb3nrb/nroHnroLnroPnroTnroZcIiw2LFwi566O566PXCJdLFtcImI5ODBcIixcIueukeeukueuk+eulueumOeumeeumueum+eunueun+euoOeuo+eupOeupeeurueur+eusOeusueus+euteeutueut+euuVwiLDcsXCLnr4Lnr4Pnr4Tln4LogL/mopflt6XmlLvlip/mga3pvprkvpvouqzlhazlrqvlvJPlt6nmsZ7mi7HotKHlhbHpkqnli77msp/oi5/ni5flnqLmnoTotK3lpJ/ovpzoj4flkpXnro3kvLDmsr3lraTlp5HpvJPlj6Tom4rpqqjosLfogqHmlYXpob7lm7rpm4fliK7nk5zliZDlr6HmjILopILkuZbmi5DmgKrmo7rlhbPlrpjlhqDop4LnrqHppobnvZDmg6/ngYzotK/lhYnlub/pgJvnkbDop4TlnK3noYXlvZLpvp/pl7rovajprLzor6HnmbjmoYLmn5zot6rotLXliL3ovormu5rmo43plIXpg63lm73mnpzoo7nov4flk4hcIl0sW1wiYmE0MFwiLFwi56+F56+I56+J56+K56+L56+N56+O56+P56+Q56+S56+UXCIsNCxcIuevm+evnOevnuevn+evoOevouevo+evpOevp+evqOevqeevq+evrOevreevr+evsOevslwiLDQsXCLnr7jnr7nnr7rnr7vnr73nr79cIiw3LFwi57CI57CJ57CK57CN57CO57CQXCIsNSxcIuewl+ewmOewmVwiXSxbXCJiYTgwXCIsXCLnsJpcIiw0LFwi57CgXCIsNSxcIuewqOewqeewq1wiLDEyLFwi57C5XCIsNSxcIuexgumquOWtqea1t+awpuS6peWus+mqh+mFo+aGqOmCr+mfqeWQq+a2teWvkuWHveWWiue9lee/sOaSvOaNjeaXseaGvuaCjeeEiuaxl+axieWkr+adreiIquWjleWajuixquavq+mDneWlveiAl+WPt+a1qeWRteWWneiNt+iPj+aguOemvuWSjOS9leWQiOebkuiyiemYguays+a2uOi1q+ikkOm5pOi0uuWYv+m7keeXleW+iOeLoOaBqOWTvOS6qOaoquihoeaBkui9sOWThOeDmOiZuem4v+a0quWuj+W8mOe6ouWWieS+r+eMtOWQvOWOmuWAmeWQjuWRvOS5juW/veeRmuWjtuiRq+iDoeidtOeLkOeziua5llwiXSxbXCJiYjQwXCIsXCLnsYNcIiw5LFwi57GOXCIsMzYsXCLnsbVcIiw1LFwi57G+XCIsOV0sW1wiYmI4MFwiLFwi57KI57KKXCIsNixcIueyk+eylOeylueymeeymueym+eyoOeyoeeyo+eypueyp+eyqOeyqeeyq+eyrOeyreeyr+eysOeytFwiLDQsXCLnsrrnsrvlvKfomY7llKzmiqTkupLmsqrmiLfoirHlk5fljY7njL7mu5HnlLvliJLljJbor53mp5DlvormgIDmt67lnY/mrKLnjq/moZPov5jnvJPmjaLmgqPllKTnl6rosaLnhJXmtqPlrqblubvojZLmhYzpu4Tno7ronZfnsKfnmoflh7Dmg7bnhYzmmYPluYzmgY3osI7ngbDmjKXovonlvr3mgaLom5Tlm57mr4HmgpTmhafljYnmg6DmmabotL/np73kvJrng6nmsYforrPor7Lnu5jojaTmmI/lqZrprYLmtZHmt7fosYHmtLvkvJnngavojrfmiJbmg5HpnI3otKfnpbjlh7vlnL7ln7rmnLrnlbjnqL3np6/nrpVcIl0sW1wiYmM0MFwiLFwi57K/57OA57OC57OD57OE57OG57OJ57OL57OOXCIsNixcIuezmOezmuezm+ezneeznuezoVwiLDYsXCLns6lcIiw1LFwi57OwXCIsNyxcIuezueezuuezvFwiLDEzLFwi57SLXCIsNV0sW1wiYmM4MFwiLFwi57SRXCIsMTQsXCLntKHntKPntKTntKXntKbntKjntKnntKrntKzntK3ntK7ntLBcIiw2LFwi6IKM6aWl6L+55r+A6K6l6bih5aes57up57yJ5ZCJ5p6B5qOY6L6R57GN6ZuG5Y+K5oCl55a+5rGy5Y2z5auJ57qn5oyk5Yeg6ISK5bex6JOf5oqA5YaA5a2j5LyO56Wt5YmC5oK45rWO5a+E5a+C6K6h6K6w5pei5b+M6ZmF5aaT57un57qq5ZiJ5p635aS55L2z5a625Yqg6I2a6aKK6LS+55Sy6ZK+5YGH56i85Lu35p626am+5auB5q2855uR5Z2a5bCW56y66Ze054WO5YW86IKp6Imw5aW457yE6Iyn5qOA5p+s56Kx56G35ouj5o2h566A5L+t5Ymq5YeP6I2Q5qeb6Ym06Le16LSx6KeB6ZSu566t5Lu2XCJdLFtcImJkNDBcIixcIue0t1wiLDU0LFwi57WvXCIsN10sW1wiYmQ4MFwiLFwi57W4XCIsMzIsXCLlgaXoiLDliZHppa/muJDmuoXmtqflu7rlg7Xlp5zlsIbmtYbmsZ/nlobokovmoajlpZborrLljKDphbHpmY3olYnmpJLnpIHnhKbog7bkuqTpg4rmtYfpqoTlqIflmrzmkIXpk7Dnn6vkvqXohJrni6Hop5LppbrnvLTnu57lib/mlZnphbXovb/ovoPlj6vnqpbmj63mjqXnmobnp7jooZfpmLbmiKrliqvoioLmoZTmnbDmjbfnnavnq63mtIHnu5Pop6Plp5DmiJLol4noiqXnlYzlgJ/ku4vnlqXor6vlsYrlt77nrYvmlqTph5Hku4rmtKXopZ/ntKfplKbku4XosKjov5vpnbPmmYvnpoHov5Hng6zmtbhcIl0sW1wiYmU0MFwiLFwi57aZXCIsMTIsXCLntqdcIiw2LFwi57avXCIsNDJdLFtcImJlODBcIixcIue3mlwiLDMyLFwi5bC95Yqy6I2G5YWi6IyO552b5pm26bK45Lqs5oOK57K+57Kz57uP5LqV6K2m5pmv6aKI6Z2Z5aKD5pWs6ZWc5b6E55eJ6Z2W56uf56ue5YeA54Kv56qY5o+q56m257qg546W6Z+t5LmF54G45Lmd6YWS5Y6p5pWR5pen6Ie86IiF5ZKO5bCx55aa6Z6g5ouY54uZ55a95bGF6am56I+K5bGA5ZKA55+p5Li+5rKu6IGa5ouS5o2u5beo5YW36Led6Lie6ZSv5L+x5Y+l5oOn54Ks5Ymn5o2Q6bmD5aif5YCm55y35Y2357ui5pKF5pSr5oqJ5o6Y5YCU54i16KeJ5Yaz6K+A57ud5Z2H6I+M6ZKn5Yab5ZCb5bO7XCJdLFtcImJmNDBcIixcIue3u1wiLDYyXSxbXCJiZjgwXCIsXCLnuLrnuLxcIiw0LFwi57mCXCIsNCxcIue5iFwiLDIxLFwi5L+K56uj5rWa6YOh6aqP5ZaA5ZKW5Y2h5ZKv5byA5o+p5qW35Yev5oWo5YiK5aCq5YuY5Z2O56CN55yL5bq35oW357Og5omb5oqX5Lqi54KV6ICD5ou354Ok6Z2g5Z236Iub5p+v5qO156OV6aKX56eR5aOz5ZKz5Y+v5ri05YWL5Yi75a6i6K++6IKv5ZWD5Z6m5oGz5Z2R5ZCt56m65oGQ5a2U5o6n5oqg5Y+j5omj5a+H5p6v5ZOt56qf6Ium6YW35bqT6KOk5aS45Z6u5oyO6Leo6IOv5Z2X56235L6p5b+r5a695qy+5Yyh562Q54uC5qGG55+/55y25pe35Ya15LqP55uU5bK/56ql6JG15aWO6a2B5YKAXCJdLFtcImMwNDBcIixcIue5nlwiLDM1LFwi57qDXCIsMjMsXCLnupznup3nup5cIl0sW1wiYzA4MFwiLFwi57qu57q057q757q857uW57uk57us57u557yK57yQ57ye57y357y557y7XCIsNixcIue9g+e9hlwiLDksXCLnvZLnvZPppojmhKfmuoPlnaTmmIbmjYblm7Dmi6zmianlu5PpmJTlnoPmi4nllofonKHohYrovqPllabojrHmnaXotZbok53lqarmoI/mi6bnr67pmJHlhbDmvpzosLDmj73op4jmh5LnvIbng4Lmu6XnkIXmppTni7zlu4rpg47mnJfmtarmjZ7lirPniaLogIHkvazlp6Xpharng5nmtp3li5LkuZDpm7fpla3olb7no4rntK/lhKHlnpLmk4Logovnsbvms6rmo7HmpZ7lhrfljpjmoqjnioHpu47nr7Hni7jnprvmvJPnkIbmnY7ph4zpsqTnpLzojonojZTlkI/moJfkuL3ljonlirHnoL7ljobliKnlgojkvovkv5BcIl0sW1wiYzE0MFwiLFwi572W572Z572b572c572d572e572g572jXCIsNCxcIue9q+e9rOe9ree9r+e9sOe9s+e9tee9tue9t+e9uOe9uue9u+e9vOe9vee9v+e+gOe+glwiLDcsXCLnvovnvo3nvo9cIiw0LFwi576VXCIsNCxcIue+m+e+nOe+oOe+oue+o+e+pee+pue+qFwiLDYsXCLnvrFcIl0sW1wiYzE4MFwiLFwi576zXCIsNCxcIue+uue+u+e+vue/gOe/gue/g+e/hOe/hue/h+e/iOe/iee/i+e/jee/j1wiLDQsXCLnv5bnv5fnv5lcIiw1LFwi57+i57+j55ei56uL57KS5rKl6Zq25Yqb55KD5ZOp5L+p6IGU6I6y6L+e6ZWw5buJ5oCc5raf5biY5pWb6IS46ZO+5oGL54K857uD57Ku5YeJ5qKB57Kx6Imv5Lik6L6G6YeP5pm+5Lqu6LCF5pKp6IGK5YOa55aX54eO5a+l6L695r2m5LqG5pKC6ZWj5buW5paZ5YiX6KOC54OI5Yqj54yO55Cz5p6X56O36ZyW5Li06YK76bOe5reL5Yeb6LWB5ZCd5ouO546y6I+x6Zu26b6E6ZOD5Ly2576a5YeM54G16Zm15bKt6aKG5Y+m5Luk5rqc55CJ5qa056Gr6aaP55WZ5YiY55ik5rWB5p+z5YWt6b6Z6IGL5ZKZ56y856q/XCJdLFtcImMyNDBcIixcIue/pOe/p+e/qOe/que/q+e/rOe/ree/r+e/sue/tFwiLDYsXCLnv73nv77nv7/ogILogIfogIjogInogIrogI7ogI/ogJHogJPogJrogJvogJ3ogJ7ogJ/ogKHogKPogKTogKtcIiw1LFwi6ICy6IC06IC56IC66IC86IC+6IGA6IGB6IGE6IGF6IGH6IGI6IGJ6IGO6IGP6IGQ6IGR6IGT6IGV6IGW6IGXXCJdLFtcImMyODBcIixcIuiBmeiBm1wiLDEzLFwi6IGrXCIsNSxcIuiBslwiLDExLFwi6ZqG5Z6E5oui6ZmH5qW85aiE5pCC56+T5ryP6ZmL6Iqm5Y2i6aKF5bqQ54KJ5o6z5Y2k6JmP6bKB6bqT56KM6Zyy6Lev6LWC6bm/5r2e56aE5b2V6ZmG5oiu6am05ZCV6ZOd5L6j5peF5bGl5bGh57yV6JmR5rCv5b6L546H5ruk57u/5bOm5oyb5a2q5rum5Y215Lmx5o6g55Wl5oqh6L2u5Lym5LuR5rKm57q26K666JCd6J66572X6YC76ZSj566p6aqh6KO46JC95rSb6aqG57uc5aaI6bq7546b56CB6JqC6ams6aqC5Zib5ZCX5Z+L5Lmw6bqm5Y2W6L+I6ISJ556S6aaS6Juu5ruh6JST5pu85oWi5ryrXCJdLFtcImMzNDBcIixcIuiBvuiCgeiCguiCheiCiOiCiuiCjVwiLDUsXCLogpTogpXogpfogpnogp7ogqPogqbogqfogqjogqzogrDogrPogrXogrbogrjogrnogrvog4Xog4dcIiw0LFwi6IOPXCIsNixcIuiDmOiDn+iDoOiDouiDo+iDpuiDruiDteiDt+iDueiDu+iDvuiDv+iEgOiEgeiEg+iEhOiEheiEh+iEiOiEi1wiXSxbXCJjMzgwXCIsXCLohIzohJXohJfohJnohJvohJzohJ3ohJ9cIiwxMixcIuiEreiEruiEsOiEs+iEtOiEteiEt+iEuVwiLDQsXCLohL/osKnoipLojKvnm7LmsJPlv5nojr3njKvojIXplJrmr5vnn5vpk4blja/ojILlhpLluL3osozotLjkuYjnjqvmnprmooXphbbpnInnhaTmsqHnnInlqpLplYHmr4/nvo7mmKflr5Dlprnlqprpl6jpl7fku6zokIzokpnmqqznm5/plLDnjJvmoqblrZ/nnK/phprpnaHns5zov7fosJzlvKXnsbPnp5jop4Xms4zonJzlr4bluYLmo4nnnKDnu7XlhpXlhY3li4nlqKnnvIXpnaLoi5fmj4/nnoTol5Dnp5LmuLrlupnlppnolJHnga3msJHmir/nmr/mlY/mgq/pl73mmI7onp/puKPpk63lkI3lkb3osKzmkbhcIl0sW1wiYzQ0MFwiLFwi6IWAXCIsNSxcIuiFh+iFieiFjeiFjuiFj+iFkuiFluiFl+iFmOiFm1wiLDQsXCLohaHohaLohaPohaTohabohajoharohavohazoha/ohbLohbPohbXohbbohbfohbjohoHohoNcIiw0LFwi6IaJ6IaL6IaM6IaN6IaO6IaQ6IaSXCIsNSxcIuiGmeiGmuiGnlwiLDQsXCLohqTohqVcIl0sW1wiYzQ4MFwiLFwi6Ian6Iap6IarXCIsNyxcIuiGtFwiLDUsXCLohrzohr3ohr7ohr/oh4Toh4Xoh4foh4joh4noh4voh41cIiw2LFwi5pG56JiR5qih6Iac56Oo5pGp6a2U5oq55pyr6I6r5aKo6buY5rKr5ryg5a+e6ZmM6LCL54mf5p+Q5ouH54mh5Lqp5aeG5q+N5aKT5pqu5bmV5Yuf5oWV5pyo55uu552m54mn56mG5ou/5ZOq5ZGQ6ZKg6YKj5aic57qz5rCW5LmD5aW26ICQ5aWI5Y2X55S36Zq+5ZuK5oyg6ISR5oG86Ze55reW5ZGi6aaB5YaF5aup6IO95aau6ZyT5YCq5rOl5bC85ouf5L2g5Yy/6IW76YCG5rq66JSr5ouI5bm056K+5pK15o275b+15aiY6YW/6bif5bC/5o2P6IGC5a295ZWu6ZWK6ZWN5raF5oKo5p+g54ue5Yed5a6BXCJdLFtcImM1NDBcIixcIuiHlFwiLDE0LFwi6Iek6Iel6Iem6Ieo6Iep6Ier6IeuXCIsNCxcIuiHtVwiLDUsXCLoh73oh7/oiIPoiIdcIiw0LFwi6IiO6IiP6IiR6IiT6IiVXCIsNSxcIuiIneiIoOiIpOiIpeiIpuiIp+iIqeiIruiIsuiIuuiIvOiIveiIv1wiXSxbXCJjNTgwXCIsXCLoiYDoiYHoiYLoiYPoiYXoiYboiYjoiYroiYzoiY3oiY7oiZBcIiw3LFwi6ImZ6Imb6Imc6Imd6Ime6ImgXCIsNyxcIuiJqeaLp+aznueJm+aJremSrue6veiEk+a1k+WGnOW8hOWltOWKquaAkuWls+aaluiZkOeWn+aMquaHpuezr+ivuuWTpuasp+m4peautOiXleWRleWBtuaypOWVqui2tOeIrOW4leaAleeQtuaLjeaOkueJjOW+mOa5g+a0vuaUgOa9mOebmOejkOebvOeVlOWIpOWPm+S5k+W6nuaXgeiAquiDluaKm+WShuWIqOeCruiijei3keazoeWRuOiDmuWfueijtOi1lOmZqumFjeS9qeaym+WWt+ebhuegsOaKqOeDuea+juW9reiTrOajmuehvOevt+iGqOaci+m5j+aNp+eisOWdr+egkumcueaJueaKq+WKiOeQteavl1wiXSxbXCJjNjQwXCIsXCLoiaroiavoiazoia3oibHoibXoibboibfoibjoibvoibzoioDoioHoioPoioXoioboiofoionoiozoipDoipPoipToipXoipboiproipvoip7oiqDoiqLoiqPoiqfoirLoirXoirboirroirvoirzoir/oi4Doi4Loi4Poi4Xoi4boi4noi5Doi5boi5noi5roi53oi6Loi6foi6joi6noi6roi6zoi63oi67oi7Doi7Loi7Poi7Xoi7boi7hcIl0sW1wiYzY4MFwiLFwi6Iu66Iu8XCIsNCxcIuiMiuiMi+iMjeiMkOiMkuiMk+iMluiMmOiMmeiMnVwiLDksXCLojKnojKrojK7ojLDojLLojLfojLvojL3llaTohL7nlrLnmq7ljLnnl57lg7vlsYHoraznr4flgY/niYfpqpfpo5jmvILnk6LnpajmkofnnqXmi7zpopHotKvlk4HogZjkuZLlnaroi7nokI3lubPlh63nk7bor4TlsY/lnaHms7zpooflqYbnoLTprYTov6vnspXliZbmiZHpk7rku4bojobokaHoj6nokrLln5TmnLTlnIPmma7mtabosLHmm53ngJHmnJ/mrLrmoJbmiJrlprvkuIPlh4TmvIbmn5Lmso/lhbbmo4vlpYfmrafnlabltI7ohJDpvZDml5fnpYjnpYHpqpHotbflsoLkuZ7kvIHlkK/lpZHnoIzlmajmsJTov4TlvIPmsb3ms6PorqvmjpBcIl0sW1wiYzc0MFwiLFwi6Iy+6Iy/6I2B6I2C6I2E6I2F6I2I6I2KXCIsNCxcIuiNk+iNlVwiLDQsXCLojZ3ojaLojbBcIiw2LFwi6I256I266I2+XCIsNixcIuiOh+iOiOiOiuiOi+iOjOiOjeiOj+iOkOiOkeiOlOiOleiOluiOl+iOmeiOmuiOneiOn+iOoVwiLDYsXCLojqzojq3ojq5cIl0sW1wiYzc4MFwiLFwi6I6v6I616I676I6+6I6/6I+C6I+D6I+E6I+G6I+I6I+J6I+L6I+N6I+O6I+Q6I+R6I+S6I+T6I+V6I+X6I+Z6I+a6I+b6I+e6I+i6I+j6I+k6I+m6I+n6I+o6I+r6I+s6I+t5oGw5rS954m15omm6ZKO6ZOF5Y2D6L+B562+5Luf6LCm5Lm+6buU6ZKx6ZKz5YmN5r2c6YGj5rWF6LC05aCR5bWM5qyg5q2J5p6q5ZGb6IWU576M5aKZ6JS35by65oqi5qmH6ZS55pWy5oKE5qGl556n5LmU5L6o5ben6Z6Y5pKs57+Y5bOt5L+P56qN5YiH6IyE5LiU5oCv56qD6ZKm5L615Lqy56em55C05Yuk6Iq55pOS56a95a+d5rKB6Z2S6L275rCi5YC+5Y2/5riF5pOO5pm05rCw5oOF6aG36K+35bqG55C856m356eL5LiY6YKx55CD5rGC5Zua6YWL5rOF6LaL5Yy66JuG5puy6Lqv5bGI6amx5rigXCJdLFtcImM4NDBcIixcIuiPruiPr+iPs1wiLDQsXCLoj7roj7voj7zoj77oj7/okIDokILokIXokIfokIjokInokIrokJDokJJcIiw1LFwi6JCZ6JCa6JCb6JCeXCIsNSxcIuiQqVwiLDcsXCLokLJcIiw1LFwi6JC56JC66JC76JC+XCIsNyxcIuiRh+iRiOiRiVwiXSxbXCJjODgwXCIsXCLokYpcIiw2LFwi6JGSXCIsNCxcIuiRmOiRneiRnuiRn+iRoOiRouiRpFwiLDQsXCLokaroka7oka/okbDokbLokbTokbfokbnokbvokbzlj5blqLbpvovotqPljrvlnIjpoqfmnYPphpvms4nlhajnl4rmi7PniqzliLjlip3nvLrngpTnmLjljbTpuYrmprfnoa7pm4Doo5nnvqTnhLbnh4Plhonmn5Pnk6Tlo6TmlJjlmrforqnppbbmibDnu5Xmg7nng63lo6zku4Hkurrlv43pn6fku7vorqTliIPlpornuqvmiZTku43ml6XmiI7ojLjok4nojaPono3nhpTmurblrrnnu5Llhpfmj4nmn5TogonojLnooJXlhJLlrbrlpoLovrHkubPmsZ3lhaXopKXova/pmK7olYrnkZ7plJDpl7Dmtqboi6XlvLHmkpLmtJLokKjoha7ps4PloZ7otZvkuInlj4FcIl0sW1wiYzk0MFwiLFwi6JG9XCIsNCxcIuiSg+iShOiSheiShuiSiuiSjeiSj1wiLDcsXCLokpjokprokpvokp3okp7okp/okqDokqJcIiwxMixcIuiSsOiSseiSs+iSteiStuiSt+iSu+iSvOiSvuiTgOiTguiTg+iTheiThuiTh+iTiOiTi+iTjOiTjuiTj+iTkuiTlOiTleiTl1wiXSxbXCJjOTgwXCIsXCLok5hcIiw0LFwi6JOe6JOh6JOi6JOk6JOnXCIsNCxcIuiTreiTruiTr+iTsVwiLDEwLFwi6JO96JO+6JSA6JSB6JSC5Lye5pWj5qGR5ZeT5Lin5pCU6aqa5omr5auC55Gf6Imy5rap5qOu5YOn6I6O56CC5p2A5Yi55rKZ57qx5YK75ZWl54We562b5pmS54+K6Iur5p2J5bGx5Yig54W96KGr6Zeq6ZmV5pOF6LWh6Iaz5ZaE5rGV5omH57yu5aKS5Lyk5ZWG6LWP5pmM5LiK5bCa6KOz5qKi5o2O56iN54On6IqN5Yu66Z+25bCR5ZOo6YK157uN5aWi6LWK6JuH6IiM6IiN6LWm5pGE5bCE5oWR5raJ56S+6K6+56C355Sz5ZG75Ly46Lqr5rex5aig57uF56We5rKI5a6h5am255Sa6IK+5oWO5riX5aOw55Sf55Sl54my5Y2H57uzXCJdLFtcImNhNDBcIixcIuiUg1wiLDgsXCLolI3olI7olI/olJDolJLolJTolJXolJbolJjolJnolJvolJzolJ3olJ7olKDolKJcIiw4LFwi6JStXCIsOSxcIuiUvlwiLDQsXCLolYTolYXolYbolYfolYtcIiwxMF0sW1wiY2E4MFwiLFwi6JWX6JWY6JWa6JWb6JWc6JWd6JWfXCIsNCxcIuiVpeiVpuiVp+iVqVwiLDgsXCLolbPolbXolbbolbfolbjolbzolb3olb/oloDoloHnnIHnm5vlianog5zlnKPluIjlpLHni67mlr3mub/or5flsLjombHljYHnn7Pmi77ml7bku4Dpo5/omoDlrp7or4blj7Lnn6Lkvb/lsY7pqbblp4vlvI/npLrlo6vkuJbmn7/kuovmi63oqpPpgJ3lir/mmK/ll5zlmazpgILku5Xkvo3ph4rppbDmsI/luILmgYPlrqTop4bor5XmlLbmiYvpppblrojlr7/mjojllK7lj5fnmKblhb3olKzmnqLmorPmrormipLovpPlj5ToiJLmt5Hnlo/kuabotY7lrbDnhp/olq/mmpHmm5nnvbLonIDpu43pvKDlsZ7mnK/ov7DmoJHmnZ/miI3nq5blooXlurbmlbDmvLFcIl0sW1wiY2I0MFwiLFwi6JaC6JaD6JaG6JaIXCIsNixcIuiWkFwiLDEwLFwi6JadXCIsNixcIuiWpeiWpuiWp+iWqeiWq+iWrOiWreiWsVwiLDUsXCLolrjolrpcIiw2LFwi6JeCXCIsNixcIuiXilwiLDQsXCLol5Hol5JcIl0sW1wiY2I4MFwiLFwi6JeU6JeWXCIsNSxcIuiXnVwiLDYsXCLol6Xol6bol6fol6jol6pcIiwxNCxcIuaBleWIt+iAjeaRlOihsOeUqeW4heagk+aLtOmcnOWPjOeIveiwgeawtOedoeeojuWQrueerOmhuuiInOivtOehleaclOeDgeaWr+aSleWYtuaAneengeWPuOS4neatu+iChuWvuuWXo+Wbm+S8uuS8vOmlsuW3s+advuiAuOaAgumigumAgeWui+iuvOivteaQnOiJmOaTnuWXveiLj+mFpeS/l+e0oOmAn+eyn+WDs+Whkea6r+Wuv+ivieiCg+mFuOiSnOeul+iZvemai+maj+e7pemrk+eijuWygeepl+mBgumap+eln+WtmeaNn+esi+iTkeaireWUhue8qeeQkOe0oumUgeaJgOWhjOS7luWug+WlueWhlFwiXSxbXCJjYzQwXCIsXCLol7nol7rol7zol73ol77omIBcIiw0LFwi6JiGXCIsMTAsXCLomJLomJPomJTomJXomJdcIiwxNSxcIuiYqOiYqlwiLDEzLFwi6Ji56Ji66Ji76Ji96Ji+6Ji/6JmAXCJdLFtcImNjODBcIixcIuiZgVwiLDExLFwi6JmS6JmT6JmVXCIsNCxcIuiZm+iZnOiZneiZn+iZoOiZoeiZo1wiLDcsXCLnja3mjJ7ouYvouI/og47oi5Tmiqzlj7Dms7DphZ7lpKrmgIHmsbDlnY3mkYrotKrnmKvmu6nlnZvmqoDnl7Dmva3osK3osIjlnabmr6/oopLnorPmjqLlj7nngq3msaTloZjmkKrloILmo6DohpvllJDns5blgJjourrmt4zotp/ng6vmjo/mtpvmu5Tnu6bokITmoYPpgIPmt5jpmbborqjlpZfnibnol6Tohb7nlrzoqormoq/liZTouKLplJHmj5DpopjouYTllbzkvZPmm7/lmo/mg5XmtpXliYPlsYnlpKnmt7vloavnlLDnlJzmgazoiJTohYbmjJHmnaHov6LnnLrot7PotLTpk4HluJbljoXlkKzng4NcIl0sW1wiY2Q0MFwiLFwi6Jmt6Jmv6Jmw6JmyXCIsNixcIuiag1wiLDYsXCLomo5cIiw0LFwi6JqU6JqWXCIsNSxcIuianlwiLDQsXCLomqXomqbomqvomq3omq7omrLomrPomrfomrjomrnomrtcIiw0LFwi6JuB6JuC6JuD6JuF6JuI6JuM6JuN6JuS6JuT6JuV6JuW6JuX6Jua6JucXCJdLFtcImNkODBcIixcIuibneiboOiboeibouibo+ibpeibpuibp+ibqOibquibq+ibrOibr+ibteibtuibt+ibuuibu+ibvOibveibv+icgeichOicheichuici+icjOicjuicj+ickOickeiclOicluaxgOW7t+WBnOS6reW6reaMuuiJh+mAmuahkOmFruees+WQjOmTnOW9pOerpeahtuaNheetkue7n+eXm+WBt+aKleWktOmAj+WHuOeng+eqgeWbvuW+kumAlOa2guWxoOWcn+WQkOWFlOa5jeWbouaOqOmik+iFv+icleikqumAgOWQnuWxr+iHgOaLluaJmOiEsem4temZgOmprumpvOakreWmpeaLk+WUvuaMluWTh+ibmea0vOWog+eTpuiinOatquWkluixjOW8r+a5vueOqemhveS4uOeDt+WujOeil+aMveaZmuealuaDi+Wum+WpieS4h+iFleaxqueOi+S6oeaeiee9keW+gOaXuuacm+W/mOWmhOWogVwiXSxbXCJjZTQwXCIsXCLonJnonJvonJ3onJ/onKDonKTonKbonKfonKjonKronKvonKzonK3onK/onLDonLLonLPonLXonLbonLjonLnonLronLzonL3onYBcIiw2LFwi6J2K6J2L6J2N6J2P6J2Q6J2R6J2S6J2U6J2V6J2W6J2Y6J2aXCIsNSxcIuidoeidouidplwiLDcsXCLona/onbHonbLonbPonbVcIl0sW1wiY2U4MFwiLFwi6J236J246J256J266J2/6J6A6J6B6J6E6J6G6J6H6J6J6J6K6J6M6J6OXCIsNCxcIuielOieleieluiemFwiLDYsXCLonqBcIiw0LFwi5beN5b6u5Y2x6Z+m6L+d5qGF5Zu05ZSv5oOf5Li65r2N57u06IuH6JCO5aeU5Lyf5Lyq5bC+57qs5pyq6JSa5ZGz55WP6IOD5ZaC6a2P5L2N5rit6LCT5bCJ5oWw5Y2r55if5rip6JqK5paH6Ze757q55ZC756iz57SK6Zeu5Zeh57+B55Ou5oyd6JyX5rah56qd5oiR5pah5Y2n5o+h5rKD5ber5ZGc6ZKo5LmM5rGh6K+s5bGL5peg6Iqc5qKn5ZC+5ZC05q+L5q2m5LqU5o2C5Y2I6Iie5LyN5L6u5Z2e5oiK6Zu+5pmk54mp5Yu/5Yqh5oKf6K+v5piU54aZ5p6Q6KW/56GS55+95pmw5Zi75ZC46ZSh54m6XCJdLFtcImNmNDBcIixcIuiepeiepuiep+ieqeiequieruiesOieseiesuietOietuiet+ieuOieueieu+ievOievuiev+ifgVwiLDQsXCLon4fon4jon4non4xcIiw0LFwi6J+UXCIsNixcIuifnOifneifnuifn+ifoeifouifo+ifpOifpuifp+ifqOifqeifq+ifrOifreifr1wiLDldLFtcImNmODBcIixcIuifuuifu+ifvOifveifv+iggOiggeigguighFwiLDUsXCLooItcIiw3LFwi6KCU6KCX6KCY6KCZ6KCa6KCcXCIsNCxcIuigo+eogOaBr+W4jOaCieiGneWkleaDnOeGhOeDr+a6quaxkOeKgOaqhOiireW4reS5oOWqs+WWnOmTo+a0l+ezu+mameaIj+e7hueejuiZvuWMo+mcnui+luaah+WzoeS+oOeLreS4i+WOpuWkj+WQk+aOgOmUqOWFiOS7memynOe6pOWSuOi0pOihlOiIt+mXsua2juW8puWrjOaYvumZqeeOsOeMruWOv+iFuummhee+oeWuqumZt+mZkOe6v+ebuOWOoumVtummmeeuseilhOa5mOS5oee/lOelpeivpuaDs+WTjeS6q+mhueW3t+apoeWDj+WQkeixoeiQp+ehnemchOWJiuWTruWao+mUgOa2iOWutea3huaZk1wiXSxbXCJkMDQwXCIsXCLooKRcIiwxMyxcIuigs1wiLDUsXCLooLrooLvooL3ooL7ooL/ooYHooYLooYPooYZcIiw1LFwi6KGOXCIsNSxcIuihleihluihmOihmlwiLDYsXCLooabooafooarooa3ooa/oobHoobPoobToobXoobboobjoobnoobpcIl0sW1wiZDA4MFwiLFwi6KG76KG86KKA6KKD6KKG6KKH6KKJ6KKK6KKM6KKO6KKP6KKQ6KKR6KKT6KKU6KKV6KKXXCIsNCxcIuiinVwiLDQsXCLooqPooqVcIiw1LFwi5bCP5a2d5qCh6IKW5ZW456yR5pWI5qWU5Lqb5q2H6J2O6Z6L5Y2P5oyf5pC66YKq5pac6IOB6LCQ5YaZ5qKw5Y246J+55oeI5rOE5rO76LCi5bGR6Jaq6Iqv6ZSM5qyj6L6b5paw5b+75b+D5L+h6KGF5pif6IWl54yp5oO65YW05YiR5Z6L5b2i6YKi6KGM6YaS5bm45p2P5oCn5aeT5YWE5Ye26IO45YyI5rG56ZuE54aK5LyR5L+u576e5py95ZeF6ZSI56eA6KKW57uj5aKf5oiM6ZyA6Jma5ZiY6aG75b6Q6K646JOE6YWX5Y+Z5pet5bqP55Wc5oGk57Wu5am/57uq57ut6L2p5Zan5a6j5oKs5peL546EXCJdLFtcImQxNDBcIixcIuiirOiiruiir+iisOiislwiLDQsXCLoorjoornoorroorvoor3oor7oor/oo4Doo4Poo4Too4foo4joo4roo4voo4zoo43oo4/oo5Doo5Hoo5Poo5boo5foo5pcIiw0LFwi6KOg6KOh6KOm6KOn6KOpXCIsNixcIuijsuijteijtuijt+ijuuiju+ijveijv+ikgOikgeikg1wiLDVdLFtcImQxODBcIixcIuikieiki1wiLDQsXCLopJHopJRcIiw0LFwi6KScXCIsNCxcIuikouiko+ikpOikpuikp+ikqOikqeikrOikreikruikr+ikseiksuiks+ikteikt+mAieeZo+ecqee7mumdtOiWm+WtpueptOmbquihgOWLi+eGj+W+quaXrOivouWvu+mpr+W3oeauieaxm+iureiur+mAiui/heWOi+aKvOm4pum4reWRgOS4q+iKveeJmeianOW0luihmea2r+mbheWTkeS6muiutueEieWSvemYieeDn+a3ueebkOS4peeglOickuWyqeW7tuiogOminOmYjueCjuayv+WlhOaOqeecvOihjea8lOiJs+WgsOeHleWOjOegmumbgeWUgeW9pueEsOWutOiwmumqjOaug+Wkrum4r+enp+adqOaJrOS9r+eWoee+iua0i+mYs+awp+S7sOeXkuWFu+agt+a8vumCgOiFsOWmlueRtlwiXSxbXCJkMjQwXCIsXCLopLhcIiw4LFwi6KWC6KWD6KWFXCIsMjQsXCLopaBcIiw1LFwi6KWnXCIsMTksXCLopbxcIl0sW1wiZDI4MFwiLFwi6KW96KW+6KaA6KaC6KaE6KaF6KaHXCIsMjYsXCLmkYflsKfpgaXnqpHosKPlp5rlkqzoiIDoja/opoHogIDmpLDlmY7ogLbniLfph47lhrbkuZ/pobXmjpbkuJrlj7bmm7PohYvlpJzmtrLkuIDlo7nljLvmj5bpk7Hkvp3kvIrooaPpopDlpLfpgZfnp7vku6rog7DnlpHmsoLlrpzlp6jlvZ3mpIXomoHlgJrlt7LkuZnnn6Pku6XoibrmipHmmJPpgpHlsbnkur/lvbnoh4bpgLjogoTnlqvkuqboo5TmhI/mr4Xlv4bkuYnnm4rmuqLor6Porq7osIror5HlvILnv7znv4znu47ojLXojavlm6Dmrrfpn7PpmLTlp7vlkJ/pk7bmt6vlr4Xppa7lsLnlvJXpmpBcIl0sW1wiZDM0MFwiLFwi6KaiXCIsMzAsXCLop4Pop43op5Pop5Top5Xop5fop5jop5nop5vop53op5/op6Dop6Hop6Lop6Top6fop6jop6nop6rop6zop63op67op7Dop7Hop7Lop7RcIiw2XSxbXCJkMzgwXCIsXCLop7tcIiw0LFwi6KiBXCIsNSxcIuioiFwiLDIxLFwi5Y2w6Iux5qix5am06bmw5bqU57yo6I656JCk6JCl6I2n6J2H6L+O6LWi55uI5b2x6aKW56Gs5pig5ZOf5oul5L2j6IeD55eI5bq46ZuN6LiK6Ju55ZKP5rOz5raM5rC45oG/5YuH55So5bm95LyY5oKg5b+n5bCk55Sx6YKu6ZOA54q55rK55ri46YWJ5pyJ5Y+L5Y+z5L2R6YeJ6K+x5Y+I5bm86L+C5rek5LqO55uC5qaG6Jme5oSa6IiG5L2Z5L+e6YC+6bG85oSJ5rid5riU6ZqF5LqI5aix6Zuo5LiO5bG/56a55a6H6K+t5769546J5Z+f6IqL6YOB5ZCB6YGH5Za75bOq5b6h5oSI5qyy54ux6IKy6KqJXCJdLFtcImQ0NDBcIixcIuionlwiLDMxLFwi6Ki/XCIsOCxcIuipiVwiLDIxXSxbXCJkNDgwXCIsXCLoqZ9cIiwyNSxcIuipulwiLDYsXCLmtbTlr5Poo5XpooTosavpqa3puLPmuIrlhqTlhYPlnqPoooHljp/mj7TovpXlm63lkZjlnIbnjL/mupDnvJjov5zoi5HmhL/mgKjpmaLmm7Dnuqbotorot4PpkqXlsrPnsqTmnIjmgqbpmIXogJjkupHpg6fljIDpmajlhYHov5DolbTphZ3mmZXpn7XlrZXljJ3noLjmnYLmoL3lk4nngb7lrrDovb3lho3lnKjlkrHmlJLmmoLotZ7otYPohI/okazpga3ns5/lh7/ol7vmnqPml6nmvqHomqTouoHlmarpgKDnmoLngbbnh6XotKPmi6nliJnms73otLzmgI7lop7mho7mm77otaDmiY7llrPmuKPmnK3ovadcIl0sW1wiZDU0MFwiLFwi6KqBXCIsNyxcIuiqi1wiLDcsXCLoqpRcIiw0Nl0sW1wiZDU4MFwiLFwi6KuDXCIsMzIsXCLpk6Hpl7jnnKjmoIXmpqjlkovkuY3ngrjor4jmkZjmlovlroXnqoTlgLrlr6jnnrvmr6Hoqbnnspjmsr7nm4/mlqnovpfltK3lsZXomLjmoIjljaDmiJjnq5nmuZvnu73mqJ/nq6DlvbDmvLPlvKDmjozmtqjmnZbkuIjluJDotKbku5fog4DnmLTpmpzmi5vmmK3mib7msrzotbXnhafnvanlhYbogoflj6zpga7mipjlk7Lom7DovpnogIXplJfolJfov5nmtZnnj43mlp/nnJ/nlITnoKfoh7votJ7pkojkvqbmnpXnlrnor4rpnIfmjK/plYfpmLXokrjmjKPnnYHlvoHni7DkuonmgJTmlbTmi6/mraPmlL9cIl0sW1wiZDY0MFwiLFwi6KukXCIsMzQsXCLorIhcIiwyN10sW1wiZDY4MFwiLFwi6Kyk6Kyl6KynXCIsMzAsXCLluKfnl4fpg5Hor4Hoip3mnp3mlK/lkLHonJjnn6XogqLohILmsYHkuYvnu4fogYznm7TmpI3mrpbmiaflgLzkvoTlnYDmjIfmraLotr7lj6rml6jnurjlv5fmjJrmjrfoh7Poh7Tnva7luJzls5nliLbmmbrnp6nnqJrotKjngpnnl5Tmu57msrvnqpLkuK3nm4Xlv6Dpkp/oobfnu4jnp43ogr/ph43ku7LkvJfoiJ/lkajlt57mtLLor4znsqXovbTogpjluJrlkpLnmrHlrpnmmLzpqqTnj6DmoKrom5vmnLHnjKror7jor5vpgJDnq7nng5vnha7mi4TnnqnlmLHkuLvokZfmn7Hliqnom4DotK7pk7jnrZFcIl0sW1wiZDc0MFwiLFwi6K2GXCIsMzEsXCLoradcIiw0LFwi6K2tXCIsMjVdLFtcImQ3ODBcIixcIuiuh1wiLDI0LFwi6K6s6K6x6K676K+H6K+Q6K+q6LCJ6LCe5L2P5rOo56Wd6am75oqT54iq5ou95LiT56CW6L2s5pKw6LWa56+G5qGp5bqE6KOF5aaG5pKe5aOu54q25qSO6ZSl6L+96LWY5Z2g57yA6LCG5YeG5o2J5ouZ5Y2T5qGM55Ci6IyB6YWM5ZWE552A54G85rWK5YW55ZKo6LWE5ae/5ruL5reE5a2c57Sr5LuU57G95ruT5a2Q6Ieq5riN5a2X6ayD5qOV6Liq5a6X57u85oC757q16YK56LWw5aWP5o+N56ef6Laz5Y2S5peP56WW6K+F6Zi757uE6ZK757qC5Zi06YaJ5pyA572q5bCK6YG15pio5bem5L2Q5p+e5YGa5L2c5Z2Q5bqnXCJdLFtcImQ4NDBcIixcIuiwuFwiLDgsXCLosYLosYPosYTosYXosYjosYrosYvosY1cIiw3LFwi6LGW6LGX6LGY6LGZ6LGbXCIsNSxcIuixo1wiLDYsXCLosaxcIiw2LFwi6LG06LG16LG26LG36LG7XCIsNixcIuiyg+iyhOiyhuiyh1wiXSxbXCJkODgwXCIsXCLosojosovoso1cIiw2LFwi6LKV6LKW6LKX6LKZXCIsMjAsXCLkuo3kuIzlhYDkuJDlu7/ljYXkuJXkupjkuJ7prLLlrazlmankuKjnprrkuL/ljJXkuYflpK3niLvlja7msJDlm5/og6Tpppfmr5Pnnb7pvJfkuLbkup/pvJDkuZzkuankupPoiojlrZvllazlmI/ku4Tljo3ljp3ljqPljqXljq7pnaXotZ3ljJrlj7XljKbljK7ljL7otZzljabljaPliILliIjliI7liK3liLPliL/liYDliYzliZ7liaHliZzokq/lib3lioLlioHlipDlipPlhoLnvZTkurvku4Pku4nku4Lku6jku6Hku6vku57kvJvku7PkvKLkvaTku7XkvKXkvKfkvInkvKvkvZ7kvafmlLjkvZrkvZ1cIl0sW1wiZDk0MFwiLFwi6LKuXCIsNjJdLFtcImQ5ODBcIixcIuizrVwiLDMyLFwi5L2f5L2X5Lyy5Ly95L225L205L6R5L6J5L6D5L6P5L2+5L275L6q5L285L6s5L6U5L+m5L+o5L+q5L+F5L+a5L+j5L+c5L+R5L+f5L+45YCp5YGM5L+z5YCs5YCP5YCu5YCt5L++5YCc5YCM5YCl5YCo5YG+5YGD5YGV5YGI5YGO5YGs5YG75YKl5YKn5YKp5YK65YOW5YSG5YOt5YOs5YOm5YOu5YSH5YSL5Lud5rC95L2Y5L2l5L+O6b6g5rGG57G05YWu5be96buJ6aaY5YaB5aSU5Yu55YyN6KiH5YyQ5Yer5aSZ5YWV5Lqg5YWW5Lqz6KGu6KKk5Lq16ISU6KOS56aA5ay06KCD57645Yar5Yax5Ya95Ya8XCJdLFtcImRhNDBcIixcIui0jlwiLDE0LFwi6LSg6LWR6LWS6LWX6LWf6LWl6LWo6LWp6LWq6LWs6LWu6LWv6LWx6LWy6LW4XCIsOCxcIui2gui2g+i2hui2h+i2iOi2iei2jFwiLDQsXCLotpLotpPotpVcIiw5LFwi6Lag6LahXCJdLFtcImRhODBcIixcIui2oui2pFwiLDEyLFwi6Lay6La26La36La56La76La96LeA6LeB6LeC6LeF6LeH6LeI6LeJ6LeK6LeN6LeQ6LeS6LeT6LeU5YeH5YaW5Yai5Yal6K6g6K6m6K6n6K6q6K606K616K636K+C6K+D6K+L6K+P6K+O6K+S6K+T6K+U6K+W6K+Y6K+Z6K+c6K+f6K+g6K+k6K+o6K+p6K+u6K+w6K+z6K+26K+56K+86K+/6LCA6LCC6LCE6LCH6LCM6LCP6LCR6LCS6LCU6LCV6LCW6LCZ6LCb6LCY6LCd6LCf6LCg6LCh6LCl6LCn6LCq6LCr6LCu6LCv6LCy6LCz6LC16LC25Y2p5Y266Zid6Zii6Zih6Zix6Ziq6Zi96Zi86ZmC6ZmJ6ZmU6Zmf6Zmn6Zms6Zmy6Zm06ZqI6ZqN6ZqX6Zqw6YKX6YKb6YKd6YKZ6YKs6YKh6YK06YKz6YK26YK6XCJdLFtcImRiNDBcIixcIui3lei3mOi3mei3nOi3oOi3oei3oui3pei3pui3p+i3qei3rei3rui3sOi3sei3sui3tOi3tui3vOi3vlwiLDYsXCLouIbouIfouIjouIvouI3ouI7ouJDouJHouJLouJPouJVcIiw3LFwi6Lig6Lih6LikXCIsNCxcIui4q+i4rei4sOi4sui4s+i4tOi4tui4t+i4uOi4u+i4vOi4vlwiXSxbXCJkYjgwXCIsXCLouL/ouYPouYXouYbouYxcIiw0LFwi6LmTXCIsNSxcIui5mlwiLDExLFwi6Lmn6Lmo6Lmq6Lmr6Lmu6Lmx6YK46YKw6YOP6YOF6YK+6YOQ6YOE6YOH6YOT6YOm6YOi6YOc6YOX6YOb6YOr6YOv6YO+6YSE6YSi6YSe6YSj6YSx6YSv6YS56YWD6YWG5YiN5aWC5Yqi5Yqs5Yqt5Yq+5ZO/5YuQ5YuW5Yuw5Y+f54eu55+N5bu05Ye15Ye86ayv5Y625byB55Wa5bev5Z2M5Z6p5Z6h5aG+5aK85aOF5aOR5Zyp5Zys5Zyq5Zyz5Zy55Zyu5Zyv5Z2c5Zy75Z2C5Z2p5Z6F5Z2r5Z6G5Z285Z275Z2o5Z2t5Z225Z2z5Z6t5Z6k5Z6M5Z6y5Z+P5Z6n5Z605Z6T5Z6g5Z+V5Z+Y5Z+a5Z+Z5Z+S5Z645Z+05Z+v5Z+45Z+k5Z+dXCJdLFtcImRjNDBcIixcIui5s+i5tei5t1wiLDQsXCLoub3oub7ouoDouoLouoPouoTouobouohcIiw2LFwi6LqR6LqS6LqT6LqVXCIsNixcIui6nei6n1wiLDExLFwi6Lqt6Lqu6Lqw6Lqx6LqzXCIsNixcIui6u1wiLDddLFtcImRjODBcIixcIui7g1wiLDEwLFwi6LuPXCIsMjEsXCLloIvloI3ln73ln63loIDloJ7loJnloYTloKDloaXloazlooHloonloprlooDppqjpvJnmh7/oibnoib3oib/oio/oioroiqjoioToio7oipHoipfoipnoiqvoirjoir7oirDoi4joi4roi6Poipjoirfoiq7oi4voi4zoi4HoiqnoirToiqHoiqroip/oi4Toi47oiqToi6HojInoi7foi6TojI/ojIfoi5zoi7Toi5Loi5jojIzoi7voi5PojJHojJrojIbojJTojJXoi6Doi5XojJzojZHojZvojZzojIjojpLojLzojLTojLHojpvojZ7ojK/ojY/ojYfojYPojZ/ojYDojJfojaDojK3ojLrojLPojabojaVcIl0sW1wiZGQ0MFwiLFwi6LulXCIsNjJdLFtcImRkODBcIixcIui8pFwiLDMyLFwi6I2o6Iyb6I2p6I2s6I2q6I2t6I2u6I6w6I246I6z6I606I6g6I6q6I6T6I6c6I6F6I286I626I6p6I296I646I276I6Y6I6e6I6o6I666I686I+B6JCB6I+l6I+Y5aCH6JCY6JCL6I+d6I+96I+W6JCc6JC46JCR6JCG6I+U6I+f6JCP6JCD6I+46I+56I+q6I+F6I+A6JCm6I+w6I+h6JGc6JGR6JGa6JGZ6JGz6JKH6JKI6JG66JKJ6JG46JC86JGG6JGp6JG26JKM6JKO6JCx6JGt6JOB6JON6JOQ6JOm6JK96JOT6JOK6JK/6JK66JOg6JKh6JK56JK06JKX6JOl6JOj6JSM55SN6JS46JOw6JS56JSf6JS6XCJdLFtcImRlNDBcIixcIui9hVwiLDMyLFwi6L2q6L6A6L6M6L6S6L6d6L6g6L6h6L6i6L6k6L6l6L6m6L6n6L6q6L6s6L6t6L6u6L6v6L6y6L6z6L606L616L636L646L666L676L686L6/6L+A6L+D6L+GXCJdLFtcImRlODBcIixcIui/iVwiLDQsXCLov4/ov5Lov5bov5fov5rov6Dov6Hov6Pov6fov6zov6/ov7Hov7Lov7Tov7Xov7bov7rov7vov7zov77ov7/pgIfpgIjpgIzpgI7pgJPpgJXpgJjolZbolLvok7/ok7zolZnolYjolajolaTolZ7olbrnnqLolYPolbLolbvolqTolqjolofolo/olbnolq7olpzoloXolrnolrfolrDol5Pol4Hol5zol7/omKfomIXomKnomJbomLzlu77lvIjlpLzlpYHogLflpZXlpZrlpZjljI/lsKLlsKXlsKzlsLTmiYzmiarmip/mirvmi4rmi5rmi5fmi67mjKLmi7bmjLnmjYvmjYPmjq3mj7bmjbHmjbrmjo7mjrTmja3mjqzmjormjanmjq7mjrzmj7Lmj7jmj6Dmj7/mj4Tmj57mj47mkZLmj4bmjr7mkYXmkYHmkIvmkJvmkKDmkIzmkKbmkKHmkZ7mkoTmka3mkpZcIl0sW1wiZGY0MFwiLFwi6YCZ6YCc6YCj6YCk6YCl6YCnXCIsNSxcIumAsFwiLDQsXCLpgLfpgLnpgLrpgL3pgL/pgYDpgYPpgYXpgYbpgYhcIiw0LFwi6YGO6YGU6YGV6YGW6YGZ6YGa6YGcXCIsNSxcIumBpOmBpumBp+mBqemBqumBq+mBrOmBr1wiLDQsXCLpgbZcIiw2LFwi6YG+6YKBXCJdLFtcImRmODBcIixcIumChOmChemChumCh+mCiemCiumCjFwiLDQsXCLpgpLpgpTpgpbpgpjpgprpgpzpgp7pgp/pgqDpgqTpgqXpgqfpgqjpgqnpgqvpgq3pgrLpgrfpgrzpgr3pgr/pg4Dmkbrmkrfmkrjmkpnmkrrmk4Dmk5Dmk5fmk6Tmk6LmlInmlKXmlK7lvIvlv5LnlJnlvJHljZ/lj7Hlj73lj6nlj6jlj7vlkJLlkJblkIblkYvlkZLlkZPlkZTlkZblkYPlkKHlkZflkZnlkKPlkLLlkoLlkpTlkbflkbHlkaTlkprlkpvlkoTlkbblkablkp3lk5Dlkq3lk4LlkrTlk5Llkqflkqblk5Plk5TlkbLlkqPlk5Xlkrvlkr/lk4zlk5nlk5rlk5zlkqnlkqrlkqTlk53lk4/lk57llJvlk6fllKDlk73llJTlk7PllKLllKPllI/llJHllKfllKrllafllo/llrXllYnlla3llYHllZXllL/llZDllLxcIl0sW1wiZTA0MFwiLFwi6YOC6YOD6YOG6YOI6YOJ6YOL6YOM6YON6YOS6YOU6YOV6YOW6YOY6YOZ6YOa6YOe6YOf6YOg6YOj6YOk6YOl6YOp6YOq6YOs6YOu6YOw6YOx6YOy6YOz6YO16YO26YO36YO56YO66YO76YO86YO/6YSA6YSB6YSD6YSFXCIsMTksXCLphJrphJvphJxcIl0sW1wiZTA4MFwiLFwi6YSd6YSf6YSg6YSh6YSkXCIsMTAsXCLphLDphLJcIiw2LFwi6YS6XCIsOCxcIumFhOWUt+WVluWVteWVtuWVt+WUs+WUsOWVnOWWi+WXkuWWg+WWseWWueWWiOWWgeWWn+WVvuWXluWWkeWVu+WXn+WWveWWvuWWlOWWmeWXquWXt+WXieWYn+WXkeWXq+WXrOWXlOWXpuWXneWXhOWXr+WXpeWXsuWXs+WXjOWXjeWXqOWXteWXpOi+lOWYnuWYiOWYjOWYgeWYpOWYo+WXvuWYgOWYp+WYreWZmOWYueWZl+WYrOWZjeWZouWZmeWZnOWZjOWZlOWahuWZpOWZseWZq+WZu+WZvOWaheWak+War+WblOWbl+WbneWboeWbteWbq+WbueWbv+WchOWciuWcieWcnOW4j+W4meW4lOW4keW4seW4u+W4vFwiXSxbXCJlMTQwXCIsXCLphYXphYfphYjphZHphZPphZTphZXphZbphZjphZnphZvphZzphZ/phaDphabphafphajphavpha3phbPphbrphbvphbzphoBcIiw0LFwi6YaG6YaI6YaK6YaO6YaP6YaTXCIsNixcIumGnFwiLDUsXCLphqRcIiw1LFwi6Yar6Yas6Yaw6Yax6Yay6Yaz6Ya26Ya36Ya46Ya56Ya7XCJdLFtcImUxODBcIixcIumGvFwiLDEwLFwi6YeI6YeL6YeQ6YeSXCIsOSxcIumHnVwiLDgsXCLluLfluYTluZTluZvluZ7luaHlsozlsbrlso3lspDlspblsojlspjlspnlspHlsprlspzlsrXlsqLlsr3lsqzlsqvlsrHlsqPls4Hlsrfls4Tls5Lls6Tls4vls6XltILltIPltKfltKbltK7ltKTltJ7ltIbltJvltZjltL7ltLTltL3ltazltZvlta/ltZ3ltavltYvltYrltanltbTltoLltpnltp3osbPltrflt4XlvbPlvbflvoLlvoflvonlvozlvpXlvpnlvpzlvqjlvq3lvrXlvrzooaLlvaHniq3nirDnirTnirfnirjni4Pni4Hni47ni43ni5Lni6jni6/ni6nni7Lni7Tni7fnjIHni7PnjIPni7pcIl0sW1wiZTI0MFwiLFwi6YemXCIsNjJdLFtcImUyODBcIixcIumIpVwiLDMyLFwi54u754yX54yT54yh54yK54ye54yd54yV54yi54y554yl54ys54y454yx542Q542N542X542g542s542v542+6Iib5aSl6aOn5aSk5aSC6aWj6aWnXCIsNSxcIumltOmlt+mlvemmgOmmhOmmh+mmiummjemmkOmmkemmk+mmlOmmleW6gOW6keW6i+W6luW6peW6oOW6ueW6teW6vuW6s+i1k+W7kuW7keW7m+W7qOW7quiGuuW/hOW/ieW/luW/j+aAg+W/ruaAhOW/oeW/pOW/vuaAheaAhuW/quW/reW/uOaAmeaAteaApuaAm+aAj+aAjeaAqeaAq+aAiuaAv+aAoeaBuOaBueaBu+aBuuaBglwiXSxbXCJlMzQwXCIsXCLpiYZcIiw0NSxcIumJtVwiLDE2XSxbXCJlMzgwXCIsXCLpioZcIiw3LFwi6YqPXCIsMjQsXCLmgarmgb3mgpbmgprmgq3mgp3mgoPmgpLmgozmgpvmg6zmgrvmgrHmg53mg5jmg4bmg5rmgrTmhKDmhKbmhJXmhKPmg7TmhIDmhI7mhKvmhYrmhbXmhqzmhpTmhqfmhrfmh5Tmh7Xlv53pmrPpl6npl6vpl7Hpl7Ppl7Xpl7bpl7zpl77pmIPpmITpmIbpmIjpmIrpmIvpmIzpmI3pmI/pmJLpmJXpmJbpmJfpmJnpmJrkuKzniL/miJXmsLXmsZTmsZzmsYrmsqPmsoXmspDmspTmsozmsajmsanmsbTmsbbmsobmsqnms5Dms5Tmsq3ms7fms7jms7Hms5fmsrLms6Dms5bms7rms6vms67msrHms5Pms6/ms75cIl0sW1wiZTQ0MFwiLFwi6YqoXCIsNSxcIumKr1wiLDI0LFwi6YuJXCIsMzFdLFtcImU0ODBcIixcIumLqVwiLDMyLFwi5rS55rSn5rSM5rWD5rWI5rSH5rSE5rSZ5rSO5rSr5rWN5rSu5rS15rSa5rWP5rWS5rWU5rSz5raR5rWv5rae5rag5rWe5raT5raU5rWc5rWg5rW85rWj5ria5reH5reF5ree5riO5ra/5reg5riR5rem5red5reZ5riW5rar5riM5rau5rir5rmu5rmO5rmr5rqy5rmf5rqG5rmT5rmU5riy5ril5rmE5ruf5rqx5rqY5rug5ryt5rui5rql5rqn5rq95rq75rq35ruX5rq05ruP5rqP5ruC5rqf5r2i5r2G5r2H5ryk5ryV5ru55ryv5ry25r2L5r205ryq5ryJ5ryp5r6J5r6N5r6M5r245r2y5r285r265r+RXCJdLFtcImU1NDBcIixcIumMilwiLDUxLFwi6Yy/XCIsMTBdLFtcImU1ODBcIixcIumNilwiLDMxLFwi6Y2r5r+J5r6n5r655r625r+C5r+h5r+u5r+e5r+g5r+v54Ca54Cj54Cb54C554C154GP54Ge5a6A5a6E5a6V5a6T5a6l5a6455Sv6aqe5pC05a+k5a+u6KSw5a+w6LmH6KyH6L626L+T6L+V6L+l6L+u6L+k6L+p6L+m6L+z6L+o6YCF6YCE6YCL6YCm6YCR6YCN6YCW6YCh6YC16YC26YCt6YCv6YGE6YGR6YGS6YGQ6YGo6YGY6YGi6YGb5pq56YG06YG96YKC6YKI6YKD6YKL5b2Q5b2X5b2W5b2Y5bC75ZKr5bGQ5bGZ5a2x5bGj5bGm57685byq5byp5byt6Im05by86ay75bGu5aaB5aaD5aaN5aap5aaq5aajXCJdLFtcImU2NDBcIixcIumNrFwiLDM0LFwi6Y6QXCIsMjddLFtcImU2ODBcIixcIumOrFwiLDI5LFwi6Y+L6Y+M6Y+N5aaX5aeK5aar5aae5aak5aeS5aay5aav5aeX5aa+5aiF5aiG5aed5aiI5aej5aeY5ae55aiM5aiJ5aiy5ai05aiR5aij5aiT5amA5amn5amK5amV5ai85ami5am16IOs5aqq5aqb5am35am65aq+5aur5aqy5auS5auU5aq45aug5auj5aux5auW5aum5auY5auc5ayJ5ayX5ayW5ayy5ay35a2A5bCV5bCc5a2a5a2l5a2z5a2R5a2T5a2i6am16am36am46am66am/6am96aqA6aqB6aqF6aqI6aqK6aqQ6aqS6aqT6aqW6aqY6aqb6aqc6aqd6aqf6aqg6aqi6aqj6aql6aqn57qf57qh57qj57ql57qo57qpXCJdLFtcImU3NDBcIixcIumPjlwiLDcsXCLpj5dcIiw1NF0sW1wiZTc4MFwiLFwi6ZCOXCIsMzIsXCLnuq3nurDnur7nu4Dnu4Hnu4Lnu4nnu4vnu4znu5Dnu5Tnu5fnu5vnu6Dnu6Hnu6jnu6vnu67nu6/nu7Hnu7LnvI3nu7bnu7rnu7vnu77nvIHnvILnvIPnvIfnvIjnvIvnvIznvI/nvJHnvJLnvJfnvJnnvJznvJvnvJ/nvKFcIiw2LFwi57yq57yr57ys57yt57yvXCIsNCxcIue8teW5uueVv+W3m+eUvumCleeOjueOkeeOrueOoueOn+ePj+ePguePkeeOt+eOs+ePgOePieePiOePpeePmemhvOeQiuePqeePp+ePnueOuuePsueQj+eQqueRm+eQpueQpeeQqOeQsOeQrueQrFwiXSxbXCJlODQwXCIsXCLpkK9cIiwxNCxcIumQv1wiLDQzLFwi6ZGs6ZGt6ZGu6ZGvXCJdLFtcImU4ODBcIixcIumRsFwiLDIwLFwi6ZKR6ZKW6ZKY6ZOH6ZOP6ZOT6ZOU6ZOa6ZOm6ZO76ZSc6ZSg55Cb55Ca55GB55Gc55GX55GV55GZ55G355Gt55G+55Kc55KO55KA55KB55KH55KL55Ke55Ko55Kp55KQ55Kn55OS55K66Z+q6Z+r6Z+s5p2M5p2T5p2e5p2I5p2p5p6l5p6H5p2q5p2z5p6Y5p6n5p215p6o5p6e5p6t5p6L5p235p285p+w5qCJ5p+Y5qCK5p+p5p6w5qCM5p+Z5p615p+a5p6z5p+d5qCA5p+D5p645p+i5qCO5p+B5p+95qCy5qCz5qGg5qGh5qGO5qGi5qGE5qGk5qKD5qCd5qGV5qGm5qGB5qGn5qGA5qC+5qGK5qGJ5qCp5qK15qKP5qG05qG35qKT5qGr5qOC5qWu5qO85qSf5qSg5qO5XCJdLFtcImU5NDBcIixcIumUp+mUs+mUvemVg+mViOmVi+mVlemVmumVoOmVrumVtOmVtemVt1wiLDcsXCLploBcIiw0Ml0sW1wiZTk4MFwiLFwi6ZarXCIsMzIsXCLmpKTmo7DmpIvmpIHmpZfmo6PmpJDmpbHmpLnmpaDmpYLmpZ3mpoTmpavmpoDmppjmpbjmpLTmp4zmpofmpojmp47mponmpabmpaPmpbnmppvmpqfmprvmpqvmpq3mp5TmprHmp4Hmp4rmp5/mppXmp6Dmpo3mp7/mqK/mp63mqJfmqJjmqaXmp7LmqYTmqL7mqqDmqZDmqZvmqLXmqo7mqbnmqL3mqKjmqZjmqbzmqpHmqpDmqqnmqpfmqqvnjLfnjZLmroHmroLmrofmroTmrpLmrpPmro3mrprmrpvmrqHmrqrovavova3ovbHovbLovbPovbXovbbovbjovbfovbnovbrovbzovb7ovoHovoLovoTovofovotcIl0sW1wiZWE0MFwiLFwi6ZeMXCIsMjcsXCLpl6zpl7/pmIfpmJPpmJjpmJvpmJ7pmKDpmKNcIiw2LFwi6Zir6Zis6Zit6Ziv6Ziw6Zi36Zi46Zi56Zi66Zi+6ZmB6ZmD6ZmK6ZmO6ZmP6ZmR6ZmS6ZmT6ZmW6ZmXXCJdLFtcImVhODBcIixcIumZmOmZmemZmumZnOmZnemZnumZoOmZo+mZpemZpumZq+mZrVwiLDQsXCLpmbPpmbhcIiwxMixcIumah+maiemaiui+jei+jui+j+i+mOi+mui7juaIi+aIl+aIm+aIn+aIouaIoeaIpeaIpOaIrOiHp+eTr+eTtOeTv+eUj+eUkeeUk+aUtOaXruaXr+aXsOaYiuaYmeadsuaYg+aYleaYgOeCheabt+aYneaYtOaYseaYtuaYteiAhuaZn+aZlOaZgeaZj+aZluaZoeaZl+aZt+aahOaajOaap+aaneaavuabm+abnOabpuabqei0sui0s+i0tui0u+i0vei1gOi1hei1hui1iOi1iei1h+i1jei1lei1meinh+iniuini+injOinjuinj+inkOinkeeJrueKn+eJneeJpueJr+eJvueJv+eKhOeKi+eKjeeKj+eKkuaMiOaMsuaOsFwiXSxbXCJlYjQwXCIsXCLpmozpmo7pmpHpmpLpmpPpmpXpmpbpmprpmpvpmp1cIiw5LFwi6ZqoXCIsNyxcIumasemasumatOmatemat+mauOmauumau+mav+mbgumbg+mbiOmbiumbi+mbkOmbkembk+mblOmbllwiLDksXCLpm6FcIiw2LFwi6ZurXCJdLFtcImViODBcIixcIumbrOmbrembrumbsOmbsembsumbtOmbtembuOmbuumbu+mbvOmbvembv+mcgumcg+mchemciumci+mcjOmckOmckemckumclOmclemcl1wiLDQsXCLpnJ3pnJ/pnKDmkL/mk5jogITmr6rmr7Pmr73mr7Xmr7nmsIXmsIfmsIbmsI3msJXmsJjmsJnmsJrmsKHmsKnmsKTmsKrmsLLmlLXmlZXmlavniY3niZLniZbniLDomaLliJbogp/ogpzogpPogrzmnIrogr3ogrHogqvogq3ogrTogrfog6fog6jog6nog6rog5vog4Log4Tog5nog43og5fmnJDog53og6vog7Hog7Tog63ohI3ohI7og7Log7zmnJXohJLosZrohLbohJ7ohKzohJjohLLohYjohYzohZPohbTohZnohZrohbHohaDohanohbzohb3oha3ohafloY3lqrXohojohoLohpHmu5XohqPohqroh4zmnKboh4rohrtcIl0sW1wiZWM0MFwiLFwi6ZyhXCIsOCxcIumcq+mcrOmcrumcr+mcsemcs1wiLDQsXCLpnLrpnLvpnLzpnL3pnL9cIiwxOCxcIumdlOmdlemdl+mdmOmdmumdnOmdnemdn+mdo+mdpOmdpumdp+mdqOmdqlwiLDddLFtcImVjODBcIixcIumdsumdtemdt1wiLDQsXCLpnb1cIiw3LFwi6Z6GXCIsNCxcIumejOmejumej+mekOmek+melemelumel+memVwiLDQsXCLoh4HohqbmrKTmrLfmrLnmrYPmrYbmrZnpo5Hpo5Lpo5Ppo5Xpo5npo5rmrrPlvYDmr4Lop7PmlpDpvZHmlpPmlrzml4bml4Tml4Pml4zml47ml5Lml5bngoDngpzngpbngp3ngrvng4DngrfngqvngrHng6jng4rnhJDnhJPnhJbnhK/nhLHnhbPnhZznhajnhYXnhbLnhYrnhbjnhbrnhpjnhrPnhrXnhqjnhqDnh6Dnh5Tnh6fnh7nniJ3niKjngaznhJjnhabnhrnmiL7miL3miYPmiYjmiYnnpLvnpYDnpYbnpYnnpZvnpZznpZPnpZrnpaLnpZfnpaDnpa/npafnpbrnpoXnpornpprnpqfnprPlv5Hlv5BcIl0sW1wiZWQ0MFwiLFwi6Z6e6Z6f6Z6h6Z6i6Z6kXCIsNixcIumerOmerumesOmesemes+metVwiLDQ2XSxbXCJlZDgwXCIsXCLpn6Tpn6Xpn6jpn65cIiw0LFwi6Z+06Z+3XCIsMjMsXCLmgLzmgZ3mgZrmgafmgYHmgZnmgaPmgqvmhIbmhI3mhZ3mhqnmhp3mh4vmh5HmiIbogoDogb/mspPms7bmt7znn7bnn7jnoIDnoInnoJfnoJjnoJHmlqvnoK3noJznoJ3noLnnoLrnoLvnoJ/noLznoKXnoKznoKPnoKnnoY7noa3noZbnoZfnoKbnoZDnoYfnoYznoarnopvnopPnoprnoofnopznoqHnoqPnorLnornnoqXno5Tno5nno4nno6zno7LnpIXno7TnpJPnpKTnpJ7npLTpvpvpu7npu7vpu7znm7HnnITnnI3nm7nnnIfnnIjnnJrnnKLnnJnnnK3nnKbnnLXnnLjnnZDnnZHnnYfnnYPnnZrnnahcIl0sW1wiZWU0MFwiLFwi6aCPXCIsNjJdLFtcImVlODBcIixcIumhjlwiLDMyLFwi552i552l552/556N5529556A556M556R556f556g556w5561556955S655WA55WO55WL55WI55Wb55Wy55W555aD572Y572h572f6KmI572o5720572x5725576B572+55uN55ul6KCy6ZKF6ZKG6ZKH6ZKL6ZKK6ZKM6ZKN6ZKP6ZKQ6ZKU6ZKX6ZKV6ZKa6ZKb6ZKc6ZKj6ZKk6ZKr6ZKq6ZKt6ZKs6ZKv6ZKw6ZKy6ZK06ZK2XCIsNCxcIumSvOmSvemSv+mThOmTiFwiLDYsXCLpk5Dpk5Hpk5Lpk5Xpk5bpk5fpk5npk5jpk5vpk57pk5/pk6Dpk6Lpk6Tpk6Xpk6fpk6jpk6pcIl0sW1wiZWY0MFwiLFwi6aGvXCIsNSxcIumii+mijumikumilemimemio+miqFwiLDM3LFwi6aOP6aOQ6aOU6aOW6aOX6aOb6aOc6aOd6aOgXCIsNF0sW1wiZWY4MFwiLFwi6aOl6aOm6aOpXCIsMzAsXCLpk6npk6vpk67pk6/pk7Ppk7Tpk7Xpk7fpk7npk7zpk73pk7/plIPplILplIbplIfplInplIrplI3plI7plI/plJJcIiw0LFwi6ZSY6ZSb6ZSd6ZSe6ZSf6ZSi6ZSq6ZSr6ZSp6ZSs6ZSx6ZSy6ZS06ZS26ZS36ZS46ZS86ZS+6ZS/6ZWC6ZS16ZWE6ZWF6ZWG6ZWJ6ZWM6ZWO6ZWP6ZWS6ZWT6ZWU6ZWW6ZWX6ZWY6ZWZ6ZWb6ZWe6ZWf6ZWd6ZWh6ZWi6ZWkXCIsOCxcIumVr+mVsemVsumVs+mUuuefp+efrOmbieenleenreeno+enq+eohuW1h+eog+eogueonueolFwiXSxbXCJmMDQwXCIsXCLppIhcIiw0LFwi6aSO6aSP6aSRXCIsMjgsXCLppK9cIiwyNl0sW1wiZjA4MFwiLFwi6aWKXCIsOSxcIumlllwiLDEyLFwi6aWk6aWm6aWz6aW46aW56aW76aW+6aaC6aaD6aaJ56i556i356mR6buP6aal56mw55qI55qO55qT55qZ55qk55Oe55Og55Ss6big6bii6bioXCIsNCxcIum4sum4sem4tum4uOm4t+m4uem4uum4vum5gem5gum5hOm5hum5h+m5iOm5iem5i+m5jOm5jum5kem5lem5l+m5mum5m+m5nOm5num5o+m5plwiLDYsXCLpubHpua3pubPnlpLnlpTnlpbnlqDnlp3nlqznlqPnlrPnlrTnlrjnl4TnlrHnlrDnl4Pnl4Lnl5bnl43nl6Pnl6jnl6bnl6Tnl6vnl6fnmIPnl7Hnl7znl7/nmJDnmIDnmIXnmIznmJfnmIrnmKXnmJjnmJXnmJlcIl0sW1wiZjE0MFwiLFwi6aaM6aaO6aaaXCIsMTAsXCLppqbppqfppqlcIiw0N10sW1wiZjE4MFwiLFwi6aeZXCIsMzIsXCLnmJvnmLznmKLnmKDnmYDnmK3nmLDnmL/nmLXnmYPnmL7nmLPnmY3nmZ7nmZTnmZznmZbnmavnma/nv4rnq6bnqbjnqbnnqoDnqobnqojnqpXnqqbnqqDnqqznqqjnqq3nqrPooaTooanoobLoob3oob/oooLooqLoo4boorfoorzoo4noo6Loo47oo6Poo6Xoo7HopJroo7zoo6joo77oo7DopKHopJnopJPopJvopIropLTopKvopLbopYHopabopbvnlovog6XnmrLnmrTnn5zogJLogJTogJbogJzogKDogKLogKXogKbogKfogKnogKjogLHogIvogLXogYPogYbogY3ogZLoganogbHopoPpobjpooDpooNcIl0sW1wiZjI0MFwiLFwi6ae6XCIsNjJdLFtcImYyODBcIixcIumouVwiLDMyLFwi6aKJ6aKM6aKN6aKP6aKU6aKa6aKb6aKe6aKf6aKh6aKi6aKl6aKm6JmN6JmU6Jms6Jmu6Jm/6Jm66Jm86Jm76Jqo6JqN6JqL6Jqs6Jqd6Jqn6Jqj6Jqq6JqT6Jqp6Jq26JuE6Jq16JuO6Jqw6Jq66Jqx6Jqv6JuJ6JuP6Jq06Jup6Jux6Juy6Jut6Juz6JuQ6JyT6Jue6Ju06Juf6JuY6JuR6JyD6JyH6Ju46JyI6JyK6JyN6JyJ6Jyj6Jy76Jye6Jyl6Jyu6Jya6Jy+6J2I6Jy06Jyx6Jyp6Jy36Jy/6J6C6Jyi6J296J2+6J276J2g6J2w6J2M6J2u6J6L6J2T6J2j6J286J2k6J2Z6J2l6J6T6J6v6J6o6J+SXCJdLFtcImYzNDBcIixcIumpmlwiLDE3LFwi6amy6aqD6aqJ6aqN6aqO6aqU6aqV6aqZ6aqm6aqpXCIsNixcIumqsumqs+mqtOmqtemquemqu+mqvemqvumqv+mrg+mrhOmrhlwiLDQsXCLpq43pq47pq4/pq5Dpq5Lpq5Tpq5Xpq5bpq5fpq5npq5rpq5vpq5xcIl0sW1wiZjM4MFwiLFwi6aud6aue6aug6aui6auj6auk6aul6aun6auo6aup6auq6aus6auu6auwXCIsOCxcIumruumrvFwiLDYsXCLprITprIXprIbon4bonojonoXonq3onpfonoPonqvon6XonqzonrXonrPon4von5Ponr3on5Hon4Don4ron5von6ron6Don67ooJbooJPon77ooIrooJvooKHooLnooLznvLbnvYLnvYTnvYXoiJDnq7rnq73nrIjnrIPnrITnrJXnrIrnrKvnrI/nrYfnrLjnrKrnrJnnrK7nrLHnrKDnrKXnrKTnrLPnrL7nrJ7nrZjnrZrnrYXnrbXnrYznrZ3nraDnra7nrbvnraLnrbLnrbHnrpDnrqbnrqfnrrjnrqznrp3nrqjnroXnrqrnrpznrqLnrqvnrrTnr5Hnr4Hnr4znr53nr5rnr6Xnr6bnr6rnsIznr77nr7znsI/nsJbnsItcIl0sW1wiZjQ0MFwiLFwi6ayH6ayJXCIsNSxcIumskOmskemskumslFwiLDEwLFwi6ayg6ayh6ayi6aykXCIsMTAsXCLprLDprLHprLNcIiw3LFwi6ay96ay+6ay/6a2A6a2G6a2K6a2L6a2M6a2O6a2Q6a2S6a2T6a2VXCIsNV0sW1wiZjQ4MFwiLFwi6a2bXCIsMzIsXCLnsJ/nsKrnsKbnsLjnsYHnsYDoh77oiIHoiILoiIToh6zooYToiKHoiKLoiKPoiK3oiK/oiKjoiKvoiLjoiLvoiLPoiLToiL7oiYToiYnoiYvoiY/oiZroiZ/oiajoob7oooXooojoo5joo5/opZ7nvp3nvp/nvqfnvq/nvrDnvrLnsbzmlYnnspHnsp3nspznsp7nsqLnsrLnsrznsr3ns4Hns4fns4zns43ns4jns4Xns5fns6joia7mmqjnvr/nv47nv5Xnv6Xnv6Hnv6bnv6nnv67nv7Pns7jntbfntqbntq7nuYfnupvpurjpurTotbPotoTotpTotpHotrHotafota3osYfosYnphYrphZDphY7phY/phaRcIl0sW1wiZjU0MFwiLFwi6a28XCIsNjJdLFtcImY1ODBcIixcIumuu1wiLDMyLFwi6YWi6YWh6YWw6YWp6YWv6YW96YW+6YWy6YW06YW56YaM6YaF6YaQ6YaN6YaR6Yai6Yaj6Yaq6Yat6Yau6Yav6Ya16Ya06Ya66LGV6bm+6La46Ler6LiF6LmZ6Lmp6La16La/6La86La66LeE6LeW6LeX6Lea6Lee6LeO6LeP6Leb6LeG6Les6Le36Le46Lej6Le56Le76Lek6LiJ6Le96LiU6Lid6Lif6Lis6Liu6Lij6Liv6Li66LmA6Li56Li16Li96Lix6LmJ6LmB6LmC6LmR6LmS6LmK6Lmw6Lm26Lm86Lmv6Lm06LqF6LqP6LqU6LqQ6Lqc6Lqe6LG46LKC6LKK6LKF6LKY6LKU5pab6KeW6Kee6Kea6KecXCJdLFtcImY2NDBcIixcIumvnFwiLDYyXSxbXCJmNjgwXCIsXCLpsJtcIiwzMixcIuinpeinq+inr+iovuispumdk+mbqembs+mbr+mchumcgemciOmcj+mcjumcqumcremcsOmcvum+gOm+g+m+hVwiLDUsXCLpvozpu77pvIvpvI3pmrnpmrzpmr3pm47pm5Lnnr/pm6Dpio7piq7pi4jpjL7pjarpj4rpjo/pkL7pkavpsb/psoLpsoXpsobpsofpsojnqKPpsovpso7pspDpspHpspLpspTpspXpsprpspvpsp5cIiw1LFwi6bKlXCIsNCxcIumyq+myremyrumysFwiLDcsXCLpsrrpsrvpsrzpsr3ps4Tps4Xps4bps4fps4rps4tcIl0sW1wiZjc0MFwiLFwi6bC8XCIsNjJdLFtcImY3ODBcIixcIumxu+mxvemxvumygOmyg+myhOmyiemyiumyjOmyj+myk+mylumyl+mymOmymemynemyqumyrOmyr+myuemyvlwiLDQsXCLps4jps4nps5Hps5Lps5rps5vps6Dps6Hps4xcIiw0LFwi6bOT6bOU6bOV6bOX6bOY6bOZ6bOc6bOd6bOf6bOi6Z286Z6F6Z6R6Z6S6Z6U6Z6v6Z6r6Z6j6Z6y6Z606aqx6aqw6aq36bmY6aq26aq66aq86auB6auA6auF6auC6auL6auM6auR6a2F6a2D6a2H6a2J6a2I6a2N6a2R6aOo6aSN6aSu6aWV6aWU6auf6auh6aum6auv6aur6au76aut6au56ayI6ayP6ayT6ayf6ayj6bq96bq+57i76bqC6bqH6bqI6bqL6bqS6Y+W6bqd6bqf6bub6buc6bud6bug6buf6bui6bup6bun6bul6buq6buv6byi6bys6byv6by56by36by96by+6b2EXCJdLFtcImY4NDBcIixcIumzo1wiLDYyXSxbXCJmODgwXCIsXCLptKJcIiwzMl0sW1wiZjk0MFwiLFwi6bWDXCIsNjJdLFtcImY5ODBcIixcIum2glwiLDMyXSxbXCJmYTQwXCIsXCLptqNcIiw2Ml0sW1wiZmE4MFwiLFwi6beiXCIsMzJdLFtcImZiNDBcIixcIum4g1wiLDI3LFwi6bik6bin6biu6biw6bi06bi76bi86bmA6bmN6bmQ6bmS6bmT6bmU6bmW6bmZ6bmd6bmf6bmg6bmh6bmi6bml6bmu6bmv6bmy6bm0XCIsOSxcIum6gFwiXSxbXCJmYjgwXCIsXCLpuoHpuoPpuoTpuoXpuobpuonpuorpuoxcIiw1LFwi6bqUXCIsOCxcIum6num6oFwiLDUsXCLpuqfpuqjpuqnpuqpcIl0sW1wiZmM0MFwiLFwi6bqrXCIsOCxcIum6tem6tum6t+m6uem6uum6vOm6v1wiLDQsXCLpu4Xpu4bpu4fpu4jpu4rpu4vpu4zpu5Dpu5Lpu5Ppu5Xpu5bpu5fpu5npu5rpu57pu6Hpu6Ppu6Tpu6bpu6jpu6vpu6zpu63pu67pu7BcIiw4LFwi6bu66bu96bu/XCIsNl0sW1wiZmM4MFwiLFwi6byGXCIsNCxcIum8jOm8j+m8kem8kum8lOm8lem8lum8mOm8mlwiLDUsXCLpvKHpvKNcIiw4LFwi6byt6byu6byw6byxXCJdLFtcImZkNDBcIixcIum8slwiLDQsXCLpvLjpvLrpvLzpvL9cIiw0LFwi6b2FXCIsMTAsXCLpvZJcIiwzOF0sW1wiZmQ4MFwiLFwi6b25XCIsNSxcIum+gem+gum+jVwiLDExLFwi6b6c6b6d6b6e6b6hXCIsNCxcIu+krO+lue+mle+np++nsVwiXSxbXCJmZTQwXCIsXCLvqIzvqI3vqI7vqI/vqJHvqJPvqJTvqJjvqJ/vqKDvqKHvqKPvqKTvqKfvqKjvqKlcIl1dXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9jcDkzNi5qc29uXG4vLyBtb2R1bGUgaWQgPSA0OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbnZhciBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpO1xudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZm9ybWF0czogZm9ybWF0cyxcbiAgICBwYXJzZTogcGFyc2UsXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvcXMvbGliL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIG1ldGhvZHNcbiAqIENvcHlyaWdodChjKSAyMDEzLTIwMTQgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDE1LTIwMTYgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKTtcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEN1cnJlbnROb2RlTWV0aG9kcygpIHx8IGdldEJhc2ljTm9kZU1ldGhvZHMoKTtcblxuLyoqXG4gKiBHZXQgdGhlIGN1cnJlbnQgTm9kZS5qcyBtZXRob2RzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRDdXJyZW50Tm9kZU1ldGhvZHMoKSB7XG4gIHJldHVybiBodHRwLk1FVEhPRFMgJiYgaHR0cC5NRVRIT0RTLm1hcChmdW5jdGlvbiBsb3dlckNhc2VNZXRob2QobWV0aG9kKSB7XG4gICAgcmV0dXJuIG1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIFwiYmFzaWNcIiBOb2RlLmpzIG1ldGhvZHMsIGEgc25hcHNob3QgZnJvbSBOb2RlLmpzIDAuMTAuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldEJhc2ljTm9kZU1ldGhvZHMoKSB7XG4gIHJldHVybiBbXG4gICAgJ2dldCcsXG4gICAgJ3Bvc3QnLFxuICAgICdwdXQnLFxuICAgICdoZWFkJyxcbiAgICAnZGVsZXRlJyxcbiAgICAnb3B0aW9ucycsXG4gICAgJ3RyYWNlJyxcbiAgICAnY29weScsXG4gICAgJ2xvY2snLFxuICAgICdta2NvbCcsXG4gICAgJ21vdmUnLFxuICAgICdwdXJnZScsXG4gICAgJ3Byb3BmaW5kJyxcbiAgICAncHJvcHBhdGNoJyxcbiAgICAndW5sb2NrJyxcbiAgICAncmVwb3J0JyxcbiAgICAnbWthY3Rpdml0eScsXG4gICAgJ2NoZWNrb3V0JyxcbiAgICAnbWVyZ2UnLFxuICAgICdtLXNlYXJjaCcsXG4gICAgJ25vdGlmeScsXG4gICAgJ3N1YnNjcmliZScsXG4gICAgJ3Vuc3Vic2NyaWJlJyxcbiAgICAncGF0Y2gnLFxuICAgICdzZWFyY2gnLFxuICAgICdjb25uZWN0J1xuICBdO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL21ldGhvZHMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDUxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogc2VuZFxuICogQ29weXJpZ2h0KGMpIDIwMTIgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTYgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJylcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ3NlbmQnKVxudmFyIGRlcHJlY2F0ZSA9IHJlcXVpcmUoJ2RlcGQnKSgnc2VuZCcpXG52YXIgZGVzdHJveSA9IHJlcXVpcmUoJ2Rlc3Ryb3knKVxudmFyIGVuY29kZVVybCA9IHJlcXVpcmUoJ2VuY29kZXVybCcpXG52YXIgZXNjYXBlSHRtbCA9IHJlcXVpcmUoJ2VzY2FwZS1odG1sJylcbnZhciBldGFnID0gcmVxdWlyZSgnZXRhZycpXG52YXIgZnJlc2ggPSByZXF1aXJlKCdmcmVzaCcpXG52YXIgZnMgPSByZXF1aXJlKCdmcycpXG52YXIgbWltZSA9IHJlcXVpcmUoJ21pbWUnKVxudmFyIG1zID0gcmVxdWlyZSgnbXMnKVxudmFyIG9uRmluaXNoZWQgPSByZXF1aXJlKCdvbi1maW5pc2hlZCcpXG52YXIgcGFyc2VSYW5nZSA9IHJlcXVpcmUoJ3JhbmdlLXBhcnNlcicpXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxudmFyIHN0YXR1c2VzID0gcmVxdWlyZSgnc3RhdHVzZXMnKVxudmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKVxuXG4vKipcbiAqIFBhdGggZnVuY3Rpb24gcmVmZXJlbmNlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGV4dG5hbWUgPSBwYXRoLmV4dG5hbWVcbnZhciBqb2luID0gcGF0aC5qb2luXG52YXIgbm9ybWFsaXplID0gcGF0aC5ub3JtYWxpemVcbnZhciByZXNvbHZlID0gcGF0aC5yZXNvbHZlXG52YXIgc2VwID0gcGF0aC5zZXBcblxuLyoqXG4gKiBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIGlkZW50aWZ5aW5nIGEgYnl0ZXMgUmFuZ2UgaGVhZGVyLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgQllURVNfUkFOR0VfUkVHRVhQID0gL14gKmJ5dGVzPS9cblxuLyoqXG4gKiBNYXhpbXVtIHZhbHVlIGFsbG93ZWQgZm9yIHRoZSBtYXggYWdlLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgTUFYX01BWEFHRSA9IDYwICogNjAgKiAyNCAqIDM2NSAqIDEwMDAgLy8gMSB5ZWFyXG5cbi8qKlxuICogUmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIGEgcGF0aCB3aXRoIGEgZGlyZWN0b3J5IHVwIGNvbXBvbmVudC5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIFVQX1BBVEhfUkVHRVhQID0gLyg/Ol58W1xcXFwvXSlcXC5cXC4oPzpbXFxcXC9dfCQpL1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gc2VuZFxubW9kdWxlLmV4cG9ydHMubWltZSA9IG1pbWVcblxuLyoqXG4gKiBSZXR1cm4gYSBgU2VuZFN0cmVhbWAgZm9yIGByZXFgIGFuZCBgcGF0aGAuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlcVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge1NlbmRTdHJlYW19XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gc2VuZCAocmVxLCBwYXRoLCBvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgU2VuZFN0cmVhbShyZXEsIHBhdGgsIG9wdGlvbnMpXG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIGBTZW5kU3RyZWFtYCB3aXRoIHRoZSBnaXZlbiBgcGF0aGAuXG4gKlxuICogQHBhcmFtIHtSZXF1ZXN0fSByZXFcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIFNlbmRTdHJlYW0gKHJlcSwgcGF0aCwgb3B0aW9ucykge1xuICBTdHJlYW0uY2FsbCh0aGlzKVxuXG4gIHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fVxuXG4gIHRoaXMub3B0aW9ucyA9IG9wdHNcbiAgdGhpcy5wYXRoID0gcGF0aFxuICB0aGlzLnJlcSA9IHJlcVxuXG4gIHRoaXMuX2FjY2VwdFJhbmdlcyA9IG9wdHMuYWNjZXB0UmFuZ2VzICE9PSB1bmRlZmluZWRcbiAgICA/IEJvb2xlYW4ob3B0cy5hY2NlcHRSYW5nZXMpXG4gICAgOiB0cnVlXG5cbiAgdGhpcy5fY2FjaGVDb250cm9sID0gb3B0cy5jYWNoZUNvbnRyb2wgIT09IHVuZGVmaW5lZFxuICAgID8gQm9vbGVhbihvcHRzLmNhY2hlQ29udHJvbClcbiAgICA6IHRydWVcblxuICB0aGlzLl9ldGFnID0gb3B0cy5ldGFnICE9PSB1bmRlZmluZWRcbiAgICA/IEJvb2xlYW4ob3B0cy5ldGFnKVxuICAgIDogdHJ1ZVxuXG4gIHRoaXMuX2RvdGZpbGVzID0gb3B0cy5kb3RmaWxlcyAhPT0gdW5kZWZpbmVkXG4gICAgPyBvcHRzLmRvdGZpbGVzXG4gICAgOiAnaWdub3JlJ1xuXG4gIGlmICh0aGlzLl9kb3RmaWxlcyAhPT0gJ2lnbm9yZScgJiYgdGhpcy5fZG90ZmlsZXMgIT09ICdhbGxvdycgJiYgdGhpcy5fZG90ZmlsZXMgIT09ICdkZW55Jykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2RvdGZpbGVzIG9wdGlvbiBtdXN0IGJlIFwiYWxsb3dcIiwgXCJkZW55XCIsIG9yIFwiaWdub3JlXCInKVxuICB9XG5cbiAgdGhpcy5faGlkZGVuID0gQm9vbGVhbihvcHRzLmhpZGRlbilcblxuICBpZiAob3B0cy5oaWRkZW4gIT09IHVuZGVmaW5lZCkge1xuICAgIGRlcHJlY2F0ZSgnaGlkZGVuOiB1c2UgZG90ZmlsZXM6IFxcJycgKyAodGhpcy5faGlkZGVuID8gJ2FsbG93JyA6ICdpZ25vcmUnKSArICdcXCcgaW5zdGVhZCcpXG4gIH1cblxuICAvLyBsZWdhY3kgc3VwcG9ydFxuICBpZiAob3B0cy5kb3RmaWxlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZG90ZmlsZXMgPSB1bmRlZmluZWRcbiAgfVxuXG4gIHRoaXMuX2V4dGVuc2lvbnMgPSBvcHRzLmV4dGVuc2lvbnMgIT09IHVuZGVmaW5lZFxuICAgID8gbm9ybWFsaXplTGlzdChvcHRzLmV4dGVuc2lvbnMsICdleHRlbnNpb25zIG9wdGlvbicpXG4gICAgOiBbXVxuXG4gIHRoaXMuX2ltbXV0YWJsZSA9IG9wdHMuaW1tdXRhYmxlICE9PSB1bmRlZmluZWRcbiAgICA/IEJvb2xlYW4ob3B0cy5pbW11dGFibGUpXG4gICAgOiBmYWxzZVxuXG4gIHRoaXMuX2luZGV4ID0gb3B0cy5pbmRleCAhPT0gdW5kZWZpbmVkXG4gICAgPyBub3JtYWxpemVMaXN0KG9wdHMuaW5kZXgsICdpbmRleCBvcHRpb24nKVxuICAgIDogWydpbmRleC5odG1sJ11cblxuICB0aGlzLl9sYXN0TW9kaWZpZWQgPSBvcHRzLmxhc3RNb2RpZmllZCAhPT0gdW5kZWZpbmVkXG4gICAgPyBCb29sZWFuKG9wdHMubGFzdE1vZGlmaWVkKVxuICAgIDogdHJ1ZVxuXG4gIHRoaXMuX21heGFnZSA9IG9wdHMubWF4QWdlIHx8IG9wdHMubWF4YWdlXG4gIHRoaXMuX21heGFnZSA9IHR5cGVvZiB0aGlzLl9tYXhhZ2UgPT09ICdzdHJpbmcnXG4gICAgPyBtcyh0aGlzLl9tYXhhZ2UpXG4gICAgOiBOdW1iZXIodGhpcy5fbWF4YWdlKVxuICB0aGlzLl9tYXhhZ2UgPSAhaXNOYU4odGhpcy5fbWF4YWdlKVxuICAgID8gTWF0aC5taW4oTWF0aC5tYXgoMCwgdGhpcy5fbWF4YWdlKSwgTUFYX01BWEFHRSlcbiAgICA6IDBcblxuICB0aGlzLl9yb290ID0gb3B0cy5yb290XG4gICAgPyByZXNvbHZlKG9wdHMucm9vdClcbiAgICA6IG51bGxcblxuICBpZiAoIXRoaXMuX3Jvb3QgJiYgb3B0cy5mcm9tKSB7XG4gICAgdGhpcy5mcm9tKG9wdHMuZnJvbSlcbiAgfVxufVxuXG4vKipcbiAqIEluaGVyaXRzIGZyb20gYFN0cmVhbWAuXG4gKi9cblxudXRpbC5pbmhlcml0cyhTZW5kU3RyZWFtLCBTdHJlYW0pXG5cbi8qKlxuICogRW5hYmxlIG9yIGRpc2FibGUgZXRhZyBnZW5lcmF0aW9uLlxuICpcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gdmFsXG4gKiBAcmV0dXJuIHtTZW5kU3RyZWFtfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5ldGFnID0gZGVwcmVjYXRlLmZ1bmN0aW9uKGZ1bmN0aW9uIGV0YWcgKHZhbCkge1xuICB0aGlzLl9ldGFnID0gQm9vbGVhbih2YWwpXG4gIGRlYnVnKCdldGFnICVzJywgdGhpcy5fZXRhZylcbiAgcmV0dXJuIHRoaXNcbn0sICdzZW5kLmV0YWc6IHBhc3MgZXRhZyBhcyBvcHRpb24nKVxuXG4vKipcbiAqIEVuYWJsZSBvciBkaXNhYmxlIFwiaGlkZGVuXCIgKGRvdCkgZmlsZXMuXG4gKlxuICogQHBhcmFtIHtCb29sZWFufSBwYXRoXG4gKiBAcmV0dXJuIHtTZW5kU3RyZWFtfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5oaWRkZW4gPSBkZXByZWNhdGUuZnVuY3Rpb24oZnVuY3Rpb24gaGlkZGVuICh2YWwpIHtcbiAgdGhpcy5faGlkZGVuID0gQm9vbGVhbih2YWwpXG4gIHRoaXMuX2RvdGZpbGVzID0gdW5kZWZpbmVkXG4gIGRlYnVnKCdoaWRkZW4gJXMnLCB0aGlzLl9oaWRkZW4pXG4gIHJldHVybiB0aGlzXG59LCAnc2VuZC5oaWRkZW46IHVzZSBkb3RmaWxlcyBvcHRpb24nKVxuXG4vKipcbiAqIFNldCBpbmRleCBgcGF0aHNgLCBzZXQgdG8gYSBmYWxzeVxuICogdmFsdWUgdG8gZGlzYWJsZSBpbmRleCBzdXBwb3J0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfEJvb2xlYW58QXJyYXl9IHBhdGhzXG4gKiBAcmV0dXJuIHtTZW5kU3RyZWFtfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5pbmRleCA9IGRlcHJlY2F0ZS5mdW5jdGlvbihmdW5jdGlvbiBpbmRleCAocGF0aHMpIHtcbiAgdmFyIGluZGV4ID0gIXBhdGhzID8gW10gOiBub3JtYWxpemVMaXN0KHBhdGhzLCAncGF0aHMgYXJndW1lbnQnKVxuICBkZWJ1ZygnaW5kZXggJW8nLCBwYXRocylcbiAgdGhpcy5faW5kZXggPSBpbmRleFxuICByZXR1cm4gdGhpc1xufSwgJ3NlbmQuaW5kZXg6IHBhc3MgaW5kZXggYXMgb3B0aW9uJylcblxuLyoqXG4gKiBTZXQgcm9vdCBgcGF0aGAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAqIEByZXR1cm4ge1NlbmRTdHJlYW19XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLnJvb3QgPSBmdW5jdGlvbiByb290IChwYXRoKSB7XG4gIHRoaXMuX3Jvb3QgPSByZXNvbHZlKFN0cmluZyhwYXRoKSlcbiAgZGVidWcoJ3Jvb3QgJXMnLCB0aGlzLl9yb290KVxuICByZXR1cm4gdGhpc1xufVxuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5mcm9tID0gZGVwcmVjYXRlLmZ1bmN0aW9uKFNlbmRTdHJlYW0ucHJvdG90eXBlLnJvb3QsXG4gICdzZW5kLmZyb206IHBhc3Mgcm9vdCBhcyBvcHRpb24nKVxuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5yb290ID0gZGVwcmVjYXRlLmZ1bmN0aW9uKFNlbmRTdHJlYW0ucHJvdG90eXBlLnJvb3QsXG4gICdzZW5kLnJvb3Q6IHBhc3Mgcm9vdCBhcyBvcHRpb24nKVxuXG4vKipcbiAqIFNldCBtYXgtYWdlIHRvIGBtYXhBZ2VgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBtYXhBZ2VcbiAqIEByZXR1cm4ge1NlbmRTdHJlYW19XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLm1heGFnZSA9IGRlcHJlY2F0ZS5mdW5jdGlvbihmdW5jdGlvbiBtYXhhZ2UgKG1heEFnZSkge1xuICB0aGlzLl9tYXhhZ2UgPSB0eXBlb2YgbWF4QWdlID09PSAnc3RyaW5nJ1xuICAgID8gbXMobWF4QWdlKVxuICAgIDogTnVtYmVyKG1heEFnZSlcbiAgdGhpcy5fbWF4YWdlID0gIWlzTmFOKHRoaXMuX21heGFnZSlcbiAgICA/IE1hdGgubWluKE1hdGgubWF4KDAsIHRoaXMuX21heGFnZSksIE1BWF9NQVhBR0UpXG4gICAgOiAwXG4gIGRlYnVnKCdtYXgtYWdlICVkJywgdGhpcy5fbWF4YWdlKVxuICByZXR1cm4gdGhpc1xufSwgJ3NlbmQubWF4YWdlOiBwYXNzIG1heEFnZSBhcyBvcHRpb24nKVxuXG4vKipcbiAqIEVtaXQgZXJyb3Igd2l0aCBgc3RhdHVzYC5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhdHVzXG4gKiBAcGFyYW0ge0Vycm9yfSBbZXJyXVxuICogQHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIGVycm9yIChzdGF0dXMsIGVycikge1xuICAvLyBlbWl0IGlmIGxpc3RlbmVycyBpbnN0ZWFkIG9mIHJlc3BvbmRpbmdcbiAgaWYgKGhhc0xpc3RlbmVycyh0aGlzLCAnZXJyb3InKSkge1xuICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgY3JlYXRlRXJyb3Ioc3RhdHVzLCBlcnIsIHtcbiAgICAgIGV4cG9zZTogZmFsc2VcbiAgICB9KSlcbiAgfVxuXG4gIHZhciByZXMgPSB0aGlzLnJlc1xuICB2YXIgbXNnID0gc3RhdHVzZXNbc3RhdHVzXSB8fCBTdHJpbmcoc3RhdHVzKVxuICB2YXIgZG9jID0gY3JlYXRlSHRtbERvY3VtZW50KCdFcnJvcicsIGVzY2FwZUh0bWwobXNnKSlcblxuICAvLyBjbGVhciBleGlzdGluZyBoZWFkZXJzXG4gIGNsZWFySGVhZGVycyhyZXMpXG5cbiAgLy8gYWRkIGVycm9yIGhlYWRlcnNcbiAgaWYgKGVyciAmJiBlcnIuaGVhZGVycykge1xuICAgIHNldEhlYWRlcnMocmVzLCBlcnIuaGVhZGVycylcbiAgfVxuXG4gIC8vIHNlbmQgYmFzaWMgcmVzcG9uc2VcbiAgcmVzLnN0YXR1c0NvZGUgPSBzdGF0dXNcbiAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcpXG4gIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgQnVmZmVyLmJ5dGVMZW5ndGgoZG9jKSlcbiAgcmVzLnNldEhlYWRlcignQ29udGVudC1TZWN1cml0eS1Qb2xpY3knLCBcImRlZmF1bHQtc3JjICdzZWxmJ1wiKVxuICByZXMuc2V0SGVhZGVyKCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zJywgJ25vc25pZmYnKVxuICByZXMuZW5kKGRvYylcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcGF0aG5hbWUgZW5kcyB3aXRoIFwiL1wiLlxuICpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKiBAcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmhhc1RyYWlsaW5nU2xhc2ggPSBmdW5jdGlvbiBoYXNUcmFpbGluZ1NsYXNoICgpIHtcbiAgcmV0dXJuIHRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoIC0gMV0gPT09ICcvJ1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoaXMgaXMgYSBjb25kaXRpb25hbCBHRVQgcmVxdWVzdC5cbiAqXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUuaXNDb25kaXRpb25hbEdFVCA9IGZ1bmN0aW9uIGlzQ29uZGl0aW9uYWxHRVQgKCkge1xuICByZXR1cm4gdGhpcy5yZXEuaGVhZGVyc1snaWYtbWF0Y2gnXSB8fFxuICAgIHRoaXMucmVxLmhlYWRlcnNbJ2lmLXVubW9kaWZpZWQtc2luY2UnXSB8fFxuICAgIHRoaXMucmVxLmhlYWRlcnNbJ2lmLW5vbmUtbWF0Y2gnXSB8fFxuICAgIHRoaXMucmVxLmhlYWRlcnNbJ2lmLW1vZGlmaWVkLXNpbmNlJ11cbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVxdWVzdCBwcmVjb25kaXRpb25zIGZhaWxlZC5cbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufVxuICogQHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5pc1ByZWNvbmRpdGlvbkZhaWx1cmUgPSBmdW5jdGlvbiBpc1ByZWNvbmRpdGlvbkZhaWx1cmUgKCkge1xuICB2YXIgcmVxID0gdGhpcy5yZXFcbiAgdmFyIHJlcyA9IHRoaXMucmVzXG5cbiAgLy8gaWYtbWF0Y2hcbiAgdmFyIG1hdGNoID0gcmVxLmhlYWRlcnNbJ2lmLW1hdGNoJ11cbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIGV0YWcgPSByZXMuZ2V0SGVhZGVyKCdFVGFnJylcbiAgICByZXR1cm4gIWV0YWcgfHwgKG1hdGNoICE9PSAnKicgJiYgcGFyc2VUb2tlbkxpc3QobWF0Y2gpLmV2ZXJ5KGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgcmV0dXJuIG1hdGNoICE9PSBldGFnICYmIG1hdGNoICE9PSAnVy8nICsgZXRhZyAmJiAnVy8nICsgbWF0Y2ggIT09IGV0YWdcbiAgICB9KSlcbiAgfVxuXG4gIC8vIGlmLXVubW9kaWZpZWQtc2luY2VcbiAgdmFyIHVubW9kaWZpZWRTaW5jZSA9IHBhcnNlSHR0cERhdGUocmVxLmhlYWRlcnNbJ2lmLXVubW9kaWZpZWQtc2luY2UnXSlcbiAgaWYgKCFpc05hTih1bm1vZGlmaWVkU2luY2UpKSB7XG4gICAgdmFyIGxhc3RNb2RpZmllZCA9IHBhcnNlSHR0cERhdGUocmVzLmdldEhlYWRlcignTGFzdC1Nb2RpZmllZCcpKVxuICAgIHJldHVybiBpc05hTihsYXN0TW9kaWZpZWQpIHx8IGxhc3RNb2RpZmllZCA+IHVubW9kaWZpZWRTaW5jZVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogU3RyaXAgY29udGVudC0qIGhlYWRlciBmaWVsZHMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5yZW1vdmVDb250ZW50SGVhZGVyRmllbGRzID0gZnVuY3Rpb24gcmVtb3ZlQ29udGVudEhlYWRlckZpZWxkcyAoKSB7XG4gIHZhciByZXMgPSB0aGlzLnJlc1xuICB2YXIgaGVhZGVycyA9IGdldEhlYWRlck5hbWVzKHJlcylcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaGVhZGVyID0gaGVhZGVyc1tpXVxuICAgIGlmIChoZWFkZXIuc3Vic3RyKDAsIDgpID09PSAnY29udGVudC0nICYmIGhlYWRlciAhPT0gJ2NvbnRlbnQtbG9jYXRpb24nKSB7XG4gICAgICByZXMucmVtb3ZlSGVhZGVyKGhlYWRlcilcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNwb25kIHdpdGggMzA0IG5vdCBtb2RpZmllZC5cbiAqXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5ub3RNb2RpZmllZCA9IGZ1bmN0aW9uIG5vdE1vZGlmaWVkICgpIHtcbiAgdmFyIHJlcyA9IHRoaXMucmVzXG4gIGRlYnVnKCdub3QgbW9kaWZpZWQnKVxuICB0aGlzLnJlbW92ZUNvbnRlbnRIZWFkZXJGaWVsZHMoKVxuICByZXMuc3RhdHVzQ29kZSA9IDMwNFxuICByZXMuZW5kKClcbn1cblxuLyoqXG4gKiBSYWlzZSBlcnJvciB0aGF0IGhlYWRlcnMgYWxyZWFkeSBzZW50LlxuICpcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLmhlYWRlcnNBbHJlYWR5U2VudCA9IGZ1bmN0aW9uIGhlYWRlcnNBbHJlYWR5U2VudCAoKSB7XG4gIHZhciBlcnIgPSBuZXcgRXJyb3IoJ0NhblxcJ3Qgc2V0IGhlYWRlcnMgYWZ0ZXIgdGhleSBhcmUgc2VudC4nKVxuICBkZWJ1ZygnaGVhZGVycyBhbHJlYWR5IHNlbnQnKVxuICB0aGlzLmVycm9yKDUwMCwgZXJyKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIGNhY2hlYWJsZSwgYWthXG4gKiByZXNwb25kZWQgd2l0aCAyeHggb3IgMzA0IChzZWUgUkZDIDI2MTYgc2VjdGlvbiAxNC4yezUsNn0pLlxuICpcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5pc0NhY2hhYmxlID0gZnVuY3Rpb24gaXNDYWNoYWJsZSAoKSB7XG4gIHZhciBzdGF0dXNDb2RlID0gdGhpcy5yZXMuc3RhdHVzQ29kZVxuICByZXR1cm4gKHN0YXR1c0NvZGUgPj0gMjAwICYmIHN0YXR1c0NvZGUgPCAzMDApIHx8XG4gICAgc3RhdHVzQ29kZSA9PT0gMzA0XG59XG5cbi8qKlxuICogSGFuZGxlIHN0YXQoKSBlcnJvci5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvclxuICogQHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5vblN0YXRFcnJvciA9IGZ1bmN0aW9uIG9uU3RhdEVycm9yIChlcnJvcikge1xuICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICBjYXNlICdFTkFNRVRPT0xPTkcnOlxuICAgIGNhc2UgJ0VOT0VOVCc6XG4gICAgY2FzZSAnRU5PVERJUic6XG4gICAgICB0aGlzLmVycm9yKDQwNCwgZXJyb3IpXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aGlzLmVycm9yKDUwMCwgZXJyb3IpXG4gICAgICBicmVha1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGNhY2hlIGlzIGZyZXNoLlxuICpcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5pc0ZyZXNoID0gZnVuY3Rpb24gaXNGcmVzaCAoKSB7XG4gIHJldHVybiBmcmVzaCh0aGlzLnJlcS5oZWFkZXJzLCB7XG4gICAgJ2V0YWcnOiB0aGlzLnJlcy5nZXRIZWFkZXIoJ0VUYWcnKSxcbiAgICAnbGFzdC1tb2RpZmllZCc6IHRoaXMucmVzLmdldEhlYWRlcignTGFzdC1Nb2RpZmllZCcpXG4gIH0pXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIHJhbmdlIGlzIGZyZXNoLlxuICpcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5pc1JhbmdlRnJlc2ggPSBmdW5jdGlvbiBpc1JhbmdlRnJlc2ggKCkge1xuICB2YXIgaWZSYW5nZSA9IHRoaXMucmVxLmhlYWRlcnNbJ2lmLXJhbmdlJ11cblxuICBpZiAoIWlmUmFuZ2UpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gaWYtcmFuZ2UgYXMgZXRhZ1xuICBpZiAoaWZSYW5nZS5pbmRleE9mKCdcIicpICE9PSAtMSkge1xuICAgIHZhciBldGFnID0gdGhpcy5yZXMuZ2V0SGVhZGVyKCdFVGFnJylcbiAgICByZXR1cm4gQm9vbGVhbihldGFnICYmIGlmUmFuZ2UuaW5kZXhPZihldGFnKSAhPT0gLTEpXG4gIH1cblxuICAvLyBpZi1yYW5nZSBhcyBtb2RpZmllZCBkYXRlXG4gIHZhciBsYXN0TW9kaWZpZWQgPSB0aGlzLnJlcy5nZXRIZWFkZXIoJ0xhc3QtTW9kaWZpZWQnKVxuICByZXR1cm4gcGFyc2VIdHRwRGF0ZShsYXN0TW9kaWZpZWQpIDw9IHBhcnNlSHR0cERhdGUoaWZSYW5nZSlcbn1cblxuLyoqXG4gKiBSZWRpcmVjdCB0byBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiBAcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLnJlZGlyZWN0ID0gZnVuY3Rpb24gcmVkaXJlY3QgKHBhdGgpIHtcbiAgdmFyIHJlcyA9IHRoaXMucmVzXG5cbiAgaWYgKGhhc0xpc3RlbmVycyh0aGlzLCAnZGlyZWN0b3J5JykpIHtcbiAgICB0aGlzLmVtaXQoJ2RpcmVjdG9yeScsIHJlcywgcGF0aClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICh0aGlzLmhhc1RyYWlsaW5nU2xhc2goKSkge1xuICAgIHRoaXMuZXJyb3IoNDAzKVxuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGxvYyA9IGVuY29kZVVybChjb2xsYXBzZUxlYWRpbmdTbGFzaGVzKHRoaXMucGF0aCArICcvJykpXG4gIHZhciBkb2MgPSBjcmVhdGVIdG1sRG9jdW1lbnQoJ1JlZGlyZWN0aW5nJywgJ1JlZGlyZWN0aW5nIHRvIDxhIGhyZWY9XCInICsgZXNjYXBlSHRtbChsb2MpICsgJ1wiPicgK1xuICAgIGVzY2FwZUh0bWwobG9jKSArICc8L2E+JylcblxuICAvLyByZWRpcmVjdFxuICByZXMuc3RhdHVzQ29kZSA9IDMwMVxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sOyBjaGFyc2V0PVVURi04JylcbiAgcmVzLnNldEhlYWRlcignQ29udGVudC1MZW5ndGgnLCBCdWZmZXIuYnl0ZUxlbmd0aChkb2MpKVxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVNlY3VyaXR5LVBvbGljeScsIFwiZGVmYXVsdC1zcmMgJ3NlbGYnXCIpXG4gIHJlcy5zZXRIZWFkZXIoJ1gtQ29udGVudC1UeXBlLU9wdGlvbnMnLCAnbm9zbmlmZicpXG4gIHJlcy5zZXRIZWFkZXIoJ0xvY2F0aW9uJywgbG9jKVxuICByZXMuZW5kKGRvYylcbn1cblxuLyoqXG4gKiBQaXBlIHRvIGByZXMuXG4gKlxuICogQHBhcmFtIHtTdHJlYW19IHJlc1xuICogQHJldHVybiB7U3RyZWFtfSByZXNcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuU2VuZFN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uIHBpcGUgKHJlcykge1xuICAvLyByb290IHBhdGhcbiAgdmFyIHJvb3QgPSB0aGlzLl9yb290XG5cbiAgLy8gcmVmZXJlbmNlc1xuICB0aGlzLnJlcyA9IHJlc1xuXG4gIC8vIGRlY29kZSB0aGUgcGF0aFxuICB2YXIgcGF0aCA9IGRlY29kZSh0aGlzLnBhdGgpXG4gIGlmIChwYXRoID09PSAtMSkge1xuICAgIHRoaXMuZXJyb3IoNDAwKVxuICAgIHJldHVybiByZXNcbiAgfVxuXG4gIC8vIG51bGwgYnl0ZShzKVxuICBpZiAofnBhdGguaW5kZXhPZignXFwwJykpIHtcbiAgICB0aGlzLmVycm9yKDQwMClcbiAgICByZXR1cm4gcmVzXG4gIH1cblxuICB2YXIgcGFydHNcbiAgaWYgKHJvb3QgIT09IG51bGwpIHtcbiAgICAvLyBub3JtYWxpemVcbiAgICBpZiAocGF0aCkge1xuICAgICAgcGF0aCA9IG5vcm1hbGl6ZSgnLicgKyBzZXAgKyBwYXRoKVxuICAgIH1cblxuICAgIC8vIG1hbGljaW91cyBwYXRoXG4gICAgaWYgKFVQX1BBVEhfUkVHRVhQLnRlc3QocGF0aCkpIHtcbiAgICAgIGRlYnVnKCdtYWxpY2lvdXMgcGF0aCBcIiVzXCInLCBwYXRoKVxuICAgICAgdGhpcy5lcnJvcig0MDMpXG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuXG4gICAgLy8gZXhwbG9kZSBwYXRoIHBhcnRzXG4gICAgcGFydHMgPSBwYXRoLnNwbGl0KHNlcClcblxuICAgIC8vIGpvaW4gLyBub3JtYWxpemUgZnJvbSBvcHRpb25hbCByb290IGRpclxuICAgIHBhdGggPSBub3JtYWxpemUoam9pbihyb290LCBwYXRoKSlcbiAgICByb290ID0gbm9ybWFsaXplKHJvb3QgKyBzZXApXG4gIH0gZWxzZSB7XG4gICAgLy8gXCIuLlwiIGlzIG1hbGljaW91cyB3aXRob3V0IFwicm9vdFwiXG4gICAgaWYgKFVQX1BBVEhfUkVHRVhQLnRlc3QocGF0aCkpIHtcbiAgICAgIGRlYnVnKCdtYWxpY2lvdXMgcGF0aCBcIiVzXCInLCBwYXRoKVxuICAgICAgdGhpcy5lcnJvcig0MDMpXG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuXG4gICAgLy8gZXhwbG9kZSBwYXRoIHBhcnRzXG4gICAgcGFydHMgPSBub3JtYWxpemUocGF0aCkuc3BsaXQoc2VwKVxuXG4gICAgLy8gcmVzb2x2ZSB0aGUgcGF0aFxuICAgIHBhdGggPSByZXNvbHZlKHBhdGgpXG4gIH1cblxuICAvLyBkb3RmaWxlIGhhbmRsaW5nXG4gIGlmIChjb250YWluc0RvdEZpbGUocGFydHMpKSB7XG4gICAgdmFyIGFjY2VzcyA9IHRoaXMuX2RvdGZpbGVzXG5cbiAgICAvLyBsZWdhY3kgc3VwcG9ydFxuICAgIGlmIChhY2Nlc3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWNjZXNzID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV1bMF0gPT09ICcuJ1xuICAgICAgICA/ICh0aGlzLl9oaWRkZW4gPyAnYWxsb3cnIDogJ2lnbm9yZScpXG4gICAgICAgIDogJ2FsbG93J1xuICAgIH1cblxuICAgIGRlYnVnKCclcyBkb3RmaWxlIFwiJXNcIicsIGFjY2VzcywgcGF0aClcbiAgICBzd2l0Y2ggKGFjY2Vzcykge1xuICAgICAgY2FzZSAnYWxsb3cnOlxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZGVueSc6XG4gICAgICAgIHRoaXMuZXJyb3IoNDAzKVxuICAgICAgICByZXR1cm4gcmVzXG4gICAgICBjYXNlICdpZ25vcmUnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5lcnJvcig0MDQpXG4gICAgICAgIHJldHVybiByZXNcbiAgICB9XG4gIH1cblxuICAvLyBpbmRleCBmaWxlIHN1cHBvcnRcbiAgaWYgKHRoaXMuX2luZGV4Lmxlbmd0aCAmJiB0aGlzLmhhc1RyYWlsaW5nU2xhc2goKSkge1xuICAgIHRoaXMuc2VuZEluZGV4KHBhdGgpXG4gICAgcmV0dXJuIHJlc1xuICB9XG5cbiAgdGhpcy5zZW5kRmlsZShwYXRoKVxuICByZXR1cm4gcmVzXG59XG5cbi8qKlxuICogVHJhbnNmZXIgYHBhdGhgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLnNlbmQgPSBmdW5jdGlvbiBzZW5kIChwYXRoLCBzdGF0KSB7XG4gIHZhciBsZW4gPSBzdGF0LnNpemVcbiAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnNcbiAgdmFyIG9wdHMgPSB7fVxuICB2YXIgcmVzID0gdGhpcy5yZXNcbiAgdmFyIHJlcSA9IHRoaXMucmVxXG4gIHZhciByYW5nZXMgPSByZXEuaGVhZGVycy5yYW5nZVxuICB2YXIgb2Zmc2V0ID0gb3B0aW9ucy5zdGFydCB8fCAwXG5cbiAgaWYgKGhlYWRlcnNTZW50KHJlcykpIHtcbiAgICAvLyBpbXBvc3NpYmxlIHRvIHNlbmQgbm93XG4gICAgdGhpcy5oZWFkZXJzQWxyZWFkeVNlbnQoKVxuICAgIHJldHVyblxuICB9XG5cbiAgZGVidWcoJ3BpcGUgXCIlc1wiJywgcGF0aClcblxuICAvLyBzZXQgaGVhZGVyIGZpZWxkc1xuICB0aGlzLnNldEhlYWRlcihwYXRoLCBzdGF0KVxuXG4gIC8vIHNldCBjb250ZW50LXR5cGVcbiAgdGhpcy50eXBlKHBhdGgpXG5cbiAgLy8gY29uZGl0aW9uYWwgR0VUIHN1cHBvcnRcbiAgaWYgKHRoaXMuaXNDb25kaXRpb25hbEdFVCgpKSB7XG4gICAgaWYgKHRoaXMuaXNQcmVjb25kaXRpb25GYWlsdXJlKCkpIHtcbiAgICAgIHRoaXMuZXJyb3IoNDEyKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNDYWNoYWJsZSgpICYmIHRoaXMuaXNGcmVzaCgpKSB7XG4gICAgICB0aGlzLm5vdE1vZGlmaWVkKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuXG4gIC8vIGFkanVzdCBsZW4gdG8gc3RhcnQvZW5kIG9wdGlvbnNcbiAgbGVuID0gTWF0aC5tYXgoMCwgbGVuIC0gb2Zmc2V0KVxuICBpZiAob3B0aW9ucy5lbmQgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBieXRlcyA9IG9wdGlvbnMuZW5kIC0gb2Zmc2V0ICsgMVxuICAgIGlmIChsZW4gPiBieXRlcykgbGVuID0gYnl0ZXNcbiAgfVxuXG4gIC8vIFJhbmdlIHN1cHBvcnRcbiAgaWYgKHRoaXMuX2FjY2VwdFJhbmdlcyAmJiBCWVRFU19SQU5HRV9SRUdFWFAudGVzdChyYW5nZXMpKSB7XG4gICAgLy8gcGFyc2VcbiAgICByYW5nZXMgPSBwYXJzZVJhbmdlKGxlbiwgcmFuZ2VzLCB7XG4gICAgICBjb21iaW5lOiB0cnVlXG4gICAgfSlcblxuICAgIC8vIElmLVJhbmdlIHN1cHBvcnRcbiAgICBpZiAoIXRoaXMuaXNSYW5nZUZyZXNoKCkpIHtcbiAgICAgIGRlYnVnKCdyYW5nZSBzdGFsZScpXG4gICAgICByYW5nZXMgPSAtMlxuICAgIH1cblxuICAgIC8vIHVuc2F0aXNmaWFibGVcbiAgICBpZiAocmFuZ2VzID09PSAtMSkge1xuICAgICAgZGVidWcoJ3JhbmdlIHVuc2F0aXNmaWFibGUnKVxuXG4gICAgICAvLyBDb250ZW50LVJhbmdlXG4gICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVJhbmdlJywgY29udGVudFJhbmdlKCdieXRlcycsIGxlbikpXG5cbiAgICAgIC8vIDQxNiBSZXF1ZXN0ZWQgUmFuZ2UgTm90IFNhdGlzZmlhYmxlXG4gICAgICByZXR1cm4gdGhpcy5lcnJvcig0MTYsIHtcbiAgICAgICAgaGVhZGVyczogeydDb250ZW50LVJhbmdlJzogcmVzLmdldEhlYWRlcignQ29udGVudC1SYW5nZScpfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyB2YWxpZCAoc3ludGFjdGljYWxseSBpbnZhbGlkL211bHRpcGxlIHJhbmdlcyBhcmUgdHJlYXRlZCBhcyBhIHJlZ3VsYXIgcmVzcG9uc2UpXG4gICAgaWYgKHJhbmdlcyAhPT0gLTIgJiYgcmFuZ2VzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgZGVidWcoJ3JhbmdlICVqJywgcmFuZ2VzKVxuXG4gICAgICAvLyBDb250ZW50LVJhbmdlXG4gICAgICByZXMuc3RhdHVzQ29kZSA9IDIwNlxuICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1SYW5nZScsIGNvbnRlbnRSYW5nZSgnYnl0ZXMnLCBsZW4sIHJhbmdlc1swXSkpXG5cbiAgICAgIC8vIGFkanVzdCBmb3IgcmVxdWVzdGVkIHJhbmdlXG4gICAgICBvZmZzZXQgKz0gcmFuZ2VzWzBdLnN0YXJ0XG4gICAgICBsZW4gPSByYW5nZXNbMF0uZW5kIC0gcmFuZ2VzWzBdLnN0YXJ0ICsgMVxuICAgIH1cbiAgfVxuXG4gIC8vIGNsb25lIG9wdGlvbnNcbiAgZm9yICh2YXIgcHJvcCBpbiBvcHRpb25zKSB7XG4gICAgb3B0c1twcm9wXSA9IG9wdGlvbnNbcHJvcF1cbiAgfVxuXG4gIC8vIHNldCByZWFkIG9wdGlvbnNcbiAgb3B0cy5zdGFydCA9IG9mZnNldFxuICBvcHRzLmVuZCA9IE1hdGgubWF4KG9mZnNldCwgb2Zmc2V0ICsgbGVuIC0gMSlcblxuICAvLyBjb250ZW50LWxlbmd0aFxuICByZXMuc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIGxlbilcblxuICAvLyBIRUFEIHN1cHBvcnRcbiAgaWYgKHJlcS5tZXRob2QgPT09ICdIRUFEJykge1xuICAgIHJlcy5lbmQoKVxuICAgIHJldHVyblxuICB9XG5cbiAgdGhpcy5zdHJlYW0ocGF0aCwgb3B0cylcbn1cblxuLyoqXG4gKiBUcmFuc2ZlciBmaWxlIGZvciBgcGF0aGAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5TZW5kU3RyZWFtLnByb3RvdHlwZS5zZW5kRmlsZSA9IGZ1bmN0aW9uIHNlbmRGaWxlIChwYXRoKSB7XG4gIHZhciBpID0gMFxuICB2YXIgc2VsZiA9IHRoaXNcblxuICBkZWJ1Zygnc3RhdCBcIiVzXCInLCBwYXRoKVxuICBmcy5zdGF0KHBhdGgsIGZ1bmN0aW9uIG9uc3RhdCAoZXJyLCBzdGF0KSB7XG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSA9PT0gJ0VOT0VOVCcgJiYgIWV4dG5hbWUocGF0aCkgJiYgcGF0aFtwYXRoLmxlbmd0aCAtIDFdICE9PSBzZXApIHtcbiAgICAgIC8vIG5vdCBmb3VuZCwgY2hlY2sgZXh0ZW5zaW9uc1xuICAgICAgcmV0dXJuIG5leHQoZXJyKVxuICAgIH1cbiAgICBpZiAoZXJyKSByZXR1cm4gc2VsZi5vblN0YXRFcnJvcihlcnIpXG4gICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkgcmV0dXJuIHNlbGYucmVkaXJlY3QocGF0aClcbiAgICBzZWxmLmVtaXQoJ2ZpbGUnLCBwYXRoLCBzdGF0KVxuICAgIHNlbGYuc2VuZChwYXRoLCBzdGF0KVxuICB9KVxuXG4gIGZ1bmN0aW9uIG5leHQgKGVycikge1xuICAgIGlmIChzZWxmLl9leHRlbnNpb25zLmxlbmd0aCA8PSBpKSB7XG4gICAgICByZXR1cm4gZXJyXG4gICAgICAgID8gc2VsZi5vblN0YXRFcnJvcihlcnIpXG4gICAgICAgIDogc2VsZi5lcnJvcig0MDQpXG4gICAgfVxuXG4gICAgdmFyIHAgPSBwYXRoICsgJy4nICsgc2VsZi5fZXh0ZW5zaW9uc1tpKytdXG5cbiAgICBkZWJ1Zygnc3RhdCBcIiVzXCInLCBwKVxuICAgIGZzLnN0YXQocCwgZnVuY3Rpb24gKGVyciwgc3RhdCkge1xuICAgICAgaWYgKGVycikgcmV0dXJuIG5leHQoZXJyKVxuICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkgcmV0dXJuIG5leHQoKVxuICAgICAgc2VsZi5lbWl0KCdmaWxlJywgcCwgc3RhdClcbiAgICAgIHNlbGYuc2VuZChwLCBzdGF0KVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBUcmFuc2ZlciBpbmRleCBmb3IgYHBhdGhgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuU2VuZFN0cmVhbS5wcm90b3R5cGUuc2VuZEluZGV4ID0gZnVuY3Rpb24gc2VuZEluZGV4IChwYXRoKSB7XG4gIHZhciBpID0gLTFcbiAgdmFyIHNlbGYgPSB0aGlzXG5cbiAgZnVuY3Rpb24gbmV4dCAoZXJyKSB7XG4gICAgaWYgKCsraSA+PSBzZWxmLl9pbmRleC5sZW5ndGgpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBzZWxmLm9uU3RhdEVycm9yKGVycilcbiAgICAgIHJldHVybiBzZWxmLmVycm9yKDQwNClcbiAgICB9XG5cbiAgICB2YXIgcCA9IGpvaW4ocGF0aCwgc2VsZi5faW5kZXhbaV0pXG5cbiAgICBkZWJ1Zygnc3RhdCBcIiVzXCInLCBwKVxuICAgIGZzLnN0YXQocCwgZnVuY3Rpb24gKGVyciwgc3RhdCkge1xuICAgICAgaWYgKGVycikgcmV0dXJuIG5leHQoZXJyKVxuICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkgcmV0dXJuIG5leHQoKVxuICAgICAgc2VsZi5lbWl0KCdmaWxlJywgcCwgc3RhdClcbiAgICAgIHNlbGYuc2VuZChwLCBzdGF0KVxuICAgIH0pXG4gIH1cblxuICBuZXh0KClcbn1cblxuLyoqXG4gKiBTdHJlYW0gYHBhdGhgIHRvIHRoZSByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLnN0cmVhbSA9IGZ1bmN0aW9uIHN0cmVhbSAocGF0aCwgb3B0aW9ucykge1xuICAvLyBUT0RPOiB0aGlzIGlzIGFsbCBsYW1lLCByZWZhY3RvciBtZWVlZVxuICB2YXIgZmluaXNoZWQgPSBmYWxzZVxuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHJlcyA9IHRoaXMucmVzXG5cbiAgLy8gcGlwZVxuICB2YXIgc3RyZWFtID0gZnMuY3JlYXRlUmVhZFN0cmVhbShwYXRoLCBvcHRpb25zKVxuICB0aGlzLmVtaXQoJ3N0cmVhbScsIHN0cmVhbSlcbiAgc3RyZWFtLnBpcGUocmVzKVxuXG4gIC8vIHJlc3BvbnNlIGZpbmlzaGVkLCBkb25lIHdpdGggdGhlIGZkXG4gIG9uRmluaXNoZWQocmVzLCBmdW5jdGlvbiBvbmZpbmlzaGVkICgpIHtcbiAgICBmaW5pc2hlZCA9IHRydWVcbiAgICBkZXN0cm95KHN0cmVhbSlcbiAgfSlcblxuICAvLyBlcnJvciBoYW5kbGluZyBjb2RlLXNtZWxsXG4gIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiBvbmVycm9yIChlcnIpIHtcbiAgICAvLyByZXF1ZXN0IGFscmVhZHkgZmluaXNoZWRcbiAgICBpZiAoZmluaXNoZWQpIHJldHVyblxuXG4gICAgLy8gY2xlYW4gdXAgc3RyZWFtXG4gICAgZmluaXNoZWQgPSB0cnVlXG4gICAgZGVzdHJveShzdHJlYW0pXG5cbiAgICAvLyBlcnJvclxuICAgIHNlbGYub25TdGF0RXJyb3IoZXJyKVxuICB9KVxuXG4gIC8vIGVuZFxuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uIG9uZW5kICgpIHtcbiAgICBzZWxmLmVtaXQoJ2VuZCcpXG4gIH0pXG59XG5cbi8qKlxuICogU2V0IGNvbnRlbnQtdHlwZSBiYXNlZCBvbiBgcGF0aGBcbiAqIGlmIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5TZW5kU3RyZWFtLnByb3RvdHlwZS50eXBlID0gZnVuY3Rpb24gdHlwZSAocGF0aCkge1xuICB2YXIgcmVzID0gdGhpcy5yZXNcblxuICBpZiAocmVzLmdldEhlYWRlcignQ29udGVudC1UeXBlJykpIHJldHVyblxuXG4gIHZhciB0eXBlID0gbWltZS5sb29rdXAocGF0aClcblxuICBpZiAoIXR5cGUpIHtcbiAgICBkZWJ1Zygnbm8gY29udGVudC10eXBlJylcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjaGFyc2V0ID0gbWltZS5jaGFyc2V0cy5sb29rdXAodHlwZSlcblxuICBkZWJ1ZygnY29udGVudC10eXBlICVzJywgdHlwZSlcbiAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgdHlwZSArIChjaGFyc2V0ID8gJzsgY2hhcnNldD0nICsgY2hhcnNldCA6ICcnKSlcbn1cblxuLyoqXG4gKiBTZXQgcmVzcG9uc2UgaGVhZGVyIGZpZWxkcywgbW9zdFxuICogZmllbGRzIG1heSBiZSBwcmUtZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHBhcmFtIHtPYmplY3R9IHN0YXRcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblNlbmRTdHJlYW0ucHJvdG90eXBlLnNldEhlYWRlciA9IGZ1bmN0aW9uIHNldEhlYWRlciAocGF0aCwgc3RhdCkge1xuICB2YXIgcmVzID0gdGhpcy5yZXNcblxuICB0aGlzLmVtaXQoJ2hlYWRlcnMnLCByZXMsIHBhdGgsIHN0YXQpXG5cbiAgaWYgKHRoaXMuX2FjY2VwdFJhbmdlcyAmJiAhcmVzLmdldEhlYWRlcignQWNjZXB0LVJhbmdlcycpKSB7XG4gICAgZGVidWcoJ2FjY2VwdCByYW5nZXMnKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0FjY2VwdC1SYW5nZXMnLCAnYnl0ZXMnKVxuICB9XG5cbiAgaWYgKHRoaXMuX2NhY2hlQ29udHJvbCAmJiAhcmVzLmdldEhlYWRlcignQ2FjaGUtQ29udHJvbCcpKSB7XG4gICAgdmFyIGNhY2hlQ29udHJvbCA9ICdwdWJsaWMsIG1heC1hZ2U9JyArIE1hdGguZmxvb3IodGhpcy5fbWF4YWdlIC8gMTAwMClcblxuICAgIGlmICh0aGlzLl9pbW11dGFibGUpIHtcbiAgICAgIGNhY2hlQ29udHJvbCArPSAnLCBpbW11dGFibGUnXG4gICAgfVxuXG4gICAgZGVidWcoJ2NhY2hlLWNvbnRyb2wgJXMnLCBjYWNoZUNvbnRyb2wpXG4gICAgcmVzLnNldEhlYWRlcignQ2FjaGUtQ29udHJvbCcsIGNhY2hlQ29udHJvbClcbiAgfVxuXG4gIGlmICh0aGlzLl9sYXN0TW9kaWZpZWQgJiYgIXJlcy5nZXRIZWFkZXIoJ0xhc3QtTW9kaWZpZWQnKSkge1xuICAgIHZhciBtb2RpZmllZCA9IHN0YXQubXRpbWUudG9VVENTdHJpbmcoKVxuICAgIGRlYnVnKCdtb2RpZmllZCAlcycsIG1vZGlmaWVkKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0xhc3QtTW9kaWZpZWQnLCBtb2RpZmllZClcbiAgfVxuXG4gIGlmICh0aGlzLl9ldGFnICYmICFyZXMuZ2V0SGVhZGVyKCdFVGFnJykpIHtcbiAgICB2YXIgdmFsID0gZXRhZyhzdGF0KVxuICAgIGRlYnVnKCdldGFnICVzJywgdmFsKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0VUYWcnLCB2YWwpXG4gIH1cbn1cblxuLyoqXG4gKiBDbGVhciBhbGwgaGVhZGVycyBmcm9tIGEgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlc1xuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjbGVhckhlYWRlcnMgKHJlcykge1xuICB2YXIgaGVhZGVycyA9IGdldEhlYWRlck5hbWVzKHJlcylcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyBpKyspIHtcbiAgICByZXMucmVtb3ZlSGVhZGVyKGhlYWRlcnNbaV0pXG4gIH1cbn1cblxuLyoqXG4gKiBDb2xsYXBzZSBhbGwgbGVhZGluZyBzbGFzaGVzIGludG8gYSBzaW5nbGUgc2xhc2hcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjb2xsYXBzZUxlYWRpbmdTbGFzaGVzIChzdHIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RyW2ldICE9PSAnLycpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGkgPiAxXG4gICAgPyAnLycgKyBzdHIuc3Vic3RyKGkpXG4gICAgOiBzdHJcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgcGF0aCBwYXJ0cyBjb250YWluIGEgZG90ZmlsZS5cbiAqXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb250YWluc0RvdEZpbGUgKHBhcnRzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGFydCA9IHBhcnRzW2ldXG4gICAgaWYgKHBhcnQubGVuZ3RoID4gMSAmJiBwYXJ0WzBdID09PSAnLicpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgQ29udGVudC1SYW5nZSBoZWFkZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBzaXplXG4gKiBAcGFyYW0ge2FycmF5fSBbcmFuZ2VdXG4gKi9cblxuZnVuY3Rpb24gY29udGVudFJhbmdlICh0eXBlLCBzaXplLCByYW5nZSkge1xuICByZXR1cm4gdHlwZSArICcgJyArIChyYW5nZSA/IHJhbmdlLnN0YXJ0ICsgJy0nICsgcmFuZ2UuZW5kIDogJyonKSArICcvJyArIHNpemVcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBtaW5pbWFsIEhUTUwgZG9jdW1lbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9keVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVIdG1sRG9jdW1lbnQgKHRpdGxlLCBib2R5KSB7XG4gIHJldHVybiAnPCFET0NUWVBFIGh0bWw+XFxuJyArXG4gICAgJzxodG1sIGxhbmc9XCJlblwiPlxcbicgK1xuICAgICc8aGVhZD5cXG4nICtcbiAgICAnPG1ldGEgY2hhcnNldD1cInV0Zi04XCI+XFxuJyArXG4gICAgJzx0aXRsZT4nICsgdGl0bGUgKyAnPC90aXRsZT5cXG4nICtcbiAgICAnPC9oZWFkPlxcbicgK1xuICAgICc8Ym9keT5cXG4nICtcbiAgICAnPHByZT4nICsgYm9keSArICc8L3ByZT5cXG4nICtcbiAgICAnPC9ib2R5PlxcbicgK1xuICAgICc8L2h0bWw+XFxuJ1xufVxuXG4vKipcbiAqIGRlY29kZVVSSUNvbXBvbmVudC5cbiAqXG4gKiBBbGxvd3MgVjggdG8gb25seSBkZW9wdGltaXplIHRoaXMgZm4gaW5zdGVhZCBvZiBhbGxcbiAqIG9mIHNlbmQoKS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZGVjb2RlIChwYXRoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChwYXRoKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgaGVhZGVyIG5hbWVzIG9uIGEgcmVzcG5zZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzXG4gKiBAcmV0dXJucyB7YXJyYXlbc3RyaW5nXX1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0SGVhZGVyTmFtZXMgKHJlcykge1xuICByZXR1cm4gdHlwZW9mIHJlcy5nZXRIZWFkZXJOYW1lcyAhPT0gJ2Z1bmN0aW9uJ1xuICAgID8gT2JqZWN0LmtleXMocmVzLl9oZWFkZXJzIHx8IHt9KVxuICAgIDogcmVzLmdldEhlYWRlck5hbWVzKClcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZW1pdHRlciBoYXMgbGlzdGVuZXJzIG9mIGEgZ2l2ZW4gdHlwZS5cbiAqXG4gKiBUaGUgd2F5IHRvIGRvIHRoaXMgY2hlY2sgaXMgZG9uZSB0aHJlZSBkaWZmZXJlbnQgd2F5cyBpbiBOb2RlLmpzID49IDAuOFxuICogc28gdGhpcyBjb25zb2xpZGF0ZXMgdGhlbSBpbnRvIGEgbWluaW1hbCBzZXQgdXNpbmcgaW5zdGFuY2UgbWV0aG9kcy5cbiAqXG4gKiBAcGFyYW0ge0V2ZW50RW1pdHRlcn0gZW1pdHRlclxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBoYXNMaXN0ZW5lcnMgKGVtaXR0ZXIsIHR5cGUpIHtcbiAgdmFyIGNvdW50ID0gdHlwZW9mIGVtaXR0ZXIubGlzdGVuZXJDb3VudCAhPT0gJ2Z1bmN0aW9uJ1xuICAgID8gZW1pdHRlci5saXN0ZW5lcnModHlwZSkubGVuZ3RoXG4gICAgOiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSlcblxuICByZXR1cm4gY291bnQgPiAwXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHRoZSByZXNwb25zZSBoZWFkZXJzIGhhdmUgYmVlbiBzZW50LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXNcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBoZWFkZXJzU2VudCAocmVzKSB7XG4gIHJldHVybiB0eXBlb2YgcmVzLmhlYWRlcnNTZW50ICE9PSAnYm9vbGVhbidcbiAgICA/IEJvb2xlYW4ocmVzLl9oZWFkZXIpXG4gICAgOiByZXMuaGVhZGVyc1NlbnRcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIGluZGV4IG9wdGlvbiBpbnRvIGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7Ym9vbGVhbnxzdHJpbmd8YXJyYXl9IHZhbFxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbm9ybWFsaXplTGlzdCAodmFsLCBuYW1lKSB7XG4gIHZhciBsaXN0ID0gW10uY29uY2F0KHZhbCB8fCBbXSlcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodHlwZW9mIGxpc3RbaV0gIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG5hbWUgKyAnIG11c3QgYmUgYXJyYXkgb2Ygc3RyaW5ncyBvciBmYWxzZScpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxpc3Rcbn1cblxuLyoqXG4gKiBQYXJzZSBhbiBIVFRQIERhdGUgaW50byBhIG51bWJlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0ZVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZUh0dHBEYXRlIChkYXRlKSB7XG4gIHZhciB0aW1lc3RhbXAgPSBkYXRlICYmIERhdGUucGFyc2UoZGF0ZSlcblxuICByZXR1cm4gdHlwZW9mIHRpbWVzdGFtcCA9PT0gJ251bWJlcidcbiAgICA/IHRpbWVzdGFtcFxuICAgIDogTmFOXG59XG5cbi8qKlxuICogUGFyc2UgYSBIVFRQIHRva2VuIGxpc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZVRva2VuTGlzdCAoc3RyKSB7XG4gIHZhciBlbmQgPSAwXG4gIHZhciBsaXN0ID0gW11cbiAgdmFyIHN0YXJ0ID0gMFxuXG4gIC8vIGdhdGhlciB0b2tlbnNcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgIGNhc2UgMHgyMDogLyogICAqL1xuICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgICAgICAgIHN0YXJ0ID0gZW5kID0gaSArIDFcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAweDJjOiAvKiAsICovXG4gICAgICAgIGxpc3QucHVzaChzdHIuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpKVxuICAgICAgICBzdGFydCA9IGVuZCA9IGkgKyAxXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBlbmQgPSBpICsgMVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIGZpbmFsIHRva2VuXG4gIGxpc3QucHVzaChzdHIuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpKVxuXG4gIHJldHVybiBsaXN0XG59XG5cbi8qKlxuICogU2V0IGFuIG9iamVjdCBvZiBoZWFkZXJzIG9uIGEgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlc1xuICogQHBhcmFtIHtvYmplY3R9IGhlYWRlcnNcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2V0SGVhZGVycyAocmVzLCBoZWFkZXJzKSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoaGVhZGVycylcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXVxuICAgIHJlcy5zZXRIZWFkZXIoa2V5LCBoZWFkZXJzW2tleV0pXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9zZW5kL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA1MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG52YXIgJGF0ID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIgaW5kZXggPSB0aGlzLl9pO1xuICB2YXIgcG9pbnQ7XG4gIGlmIChpbmRleCA+PSBPLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qc1xuLy8gbW9kdWxlIGlkID0gNTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVmaW5lZC5qc1xuLy8gbW9kdWxlIGlkID0gNTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDU2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qc1xuLy8gbW9kdWxlIGlkID0gNTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDU4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanNcbi8vIG1vZHVsZSBpZCA9IDU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanNcbi8vIG1vZHVsZSBpZCA9IDYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQta2V5LmpzXG4vLyBtb2R1bGUgaWQgPSA2MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzXG4vLyBtb2R1bGUgaWQgPSA2MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJyZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG52YXIgRE9NSXRlcmFibGVzID0gKCdDU1NSdWxlTGlzdCxDU1NTdHlsZURlY2xhcmF0aW9uLENTU1ZhbHVlTGlzdCxDbGllbnRSZWN0TGlzdCxET01SZWN0TGlzdCxET01TdHJpbmdMaXN0LCcgK1xuICAnRE9NVG9rZW5MaXN0LERhdGFUcmFuc2Zlckl0ZW1MaXN0LEZpbGVMaXN0LEhUTUxBbGxDb2xsZWN0aW9uLEhUTUxDb2xsZWN0aW9uLEhUTUxGb3JtRWxlbWVudCxIVE1MU2VsZWN0RWxlbWVudCwnICtcbiAgJ01lZGlhTGlzdCxNaW1lVHlwZUFycmF5LE5hbWVkTm9kZU1hcCxOb2RlTGlzdCxQYWludFJlcXVlc3RMaXN0LFBsdWdpbixQbHVnaW5BcnJheSxTVkdMZW5ndGhMaXN0LFNWR051bWJlckxpc3QsJyArXG4gICdTVkdQYXRoU2VnTGlzdCxTVkdQb2ludExpc3QsU1ZHU3RyaW5nTGlzdCxTVkdUcmFuc2Zvcm1MaXN0LFNvdXJjZUJ1ZmZlckxpc3QsU3R5bGVTaGVldExpc3QsVGV4dFRyYWNrQ3VlTGlzdCwnICtcbiAgJ1RleHRUcmFja0xpc3QsVG91Y2hMaXN0Jykuc3BsaXQoJywnKTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCBET01JdGVyYWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgdmFyIE5BTUUgPSBET01JdGVyYWJsZXNbaV07XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgcHJvdG8gPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICBpZiAocHJvdG8gJiYgIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcbiAgSXRlcmF0b3JzW05BTUVdID0gSXRlcmF0b3JzLkFycmF5O1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDYzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIEFSRyA9IGNvZihmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgVCwgQjtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKFQgPSB0cnlHZXQoTyA9IE9iamVjdChpdCksIFRBRykpID09ICdzdHJpbmcnID8gVFxuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQVJHID8gY29mKE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY2xhc3NvZi5qc1xuLy8gbW9kdWxlIGlkID0gNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lLCBmb3JiaWRkZW5GaWVsZCkge1xuICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IobmFtZSArICc6IGluY29ycmVjdCBpbnZvY2F0aW9uIScpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzXG4vLyBtb2R1bGUgaWQgPSA2NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcblxuZnVuY3Rpb24gUHJvbWlzZUNhcGFiaWxpdHkoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUZ1bmN0aW9uKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFGdW5jdGlvbihyZWplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanNcbi8vIG1vZHVsZSBpZCA9IDY2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS1hbGwuanNcbi8vIG1vZHVsZSBpZCA9IDY3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IEFOQUxZVElDU19QQVRIIH0gZnJvbSAnLi4vY29uZmlnJ1xuaW1wb3J0IHtcbiAgQW5vbWFseSxcbiAgQW5vbWFseUlkLCBnZXRBbm9tYWx5VHlwZUluZm8sXG4gIGxvYWRBbm9tYWx5QnlJZCxcbiAgc2V0QW5vbWFseVByZWRpY3Rpb25UaW1lLFxuICBzZXRBbm9tYWx5U3RhdHVzXG59IGZyb20gJy4vYW5vbWFseVR5cGUnXG5pbXBvcnQgeyBnZXRUYXJnZXQgfSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHsgZ2V0TGFiZWxlZFNlZ21lbnRzLCBpbnNlcnRTZWdtZW50cywgcmVtb3ZlU2VnbWVudHMgfSBmcm9tICcuL3NlZ21lbnRzJztcbmltcG9ydCB7IHNwbGl0LCBtYXAsIG1hcFN5bmMgfSBmcm9tICdldmVudC1zdHJlYW0nO1xuXG5jb25zdCBsZWFybldvcmtlciA9IHNwYXduKCdweXRob24zJywgWyd3b3JrZXIucHknXSwgeyBjd2Q6IEFOQUxZVElDU19QQVRIIH0pXG5sZWFybldvcmtlci5zdGRvdXQucGlwZShzcGxpdCgpKVxuICAucGlwZShcbiAgICBtYXBTeW5jKGZ1bmN0aW9uKGxpbmUpe1xuICAgICAgb25NZXNzYWdlKGxpbmUpXG4gICAgfSlcbiAgKTtcblxubGVhcm5Xb3JrZXIuc3RkZXJyLm9uKCdkYXRhJywgZGF0YSA9PiBjb25zb2xlLmVycm9yKGB3b3JrZXIgc3RkZXJyOiAke2RhdGF9YCkpO1xuXG5jb25zdCB0YXNrTWFwID0ge307XG5sZXQgbmV4dFRhc2tJZCA9IDA7XG5cbmZ1bmN0aW9uIG9uTWVzc2FnZShkYXRhKSB7XG4gIGNvbnNvbGUubG9nKGB3b3JrZXIgc3Rkb3V0OiAke2RhdGF9YCk7XG4gIGxldCByZXNwb25zZSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gIGxldCB0YXNrSWQgPSByZXNwb25zZS5fX3Rhc2tfaWQ7XG4gIC8vIGxldCBhbm9tYWx5TmFtZSA9IHJlc3BvbnNlLmFub21hbHlfbmFtZTtcbiAgLy8gbGV0IHRhc2sgPSByZXNwb25zZS50YXNrO1xuICBsZXQgc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzO1xuXG4gIGlmKHN0YXR1cyA9PT0gJ3N1Y2Nlc3MnIHx8IHN0YXR1cyA9PT0gJ2ZhaWxlZCcpIHtcbiAgICBpZih0YXNrSWQgaW4gdGFza01hcCkge1xuICAgICAgbGV0IHJlc29sdmVyID0gdGFza01hcFt0YXNrSWRdO1xuICAgICAgcmVzb2x2ZXIocmVzcG9uc2UpO1xuICAgICAgZGVsZXRlIHRhc2tNYXBbdGFza0lkXTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcnVuVGFzayh0YXNrKSA6IFByb21pc2U8YW55PiB7XG4gIGxldCBhbm9tYWx5OkFub21hbHkgPSBsb2FkQW5vbWFseUJ5SWQodGFzay5hbm9tYWx5X2lkKTtcbiAgdGFzay5tZXRyaWMgPSB7XG4gICAgZGF0YXNvdXJjZTogYW5vbWFseS5tZXRyaWMuZGF0YXNvdXJjZSxcbiAgICB0YXJnZXRzOiBhbm9tYWx5Lm1ldHJpYy50YXJnZXRzLm1hcCh0ID0+IGdldFRhcmdldCh0KSlcbiAgfTtcblxuICB0YXNrLl9fdGFza19pZCA9IG5leHRUYXNrSWQrKztcbiAgbGV0IGNvbW1hbmQgPSBKU09OLnN0cmluZ2lmeSh0YXNrKVxuICBsZWFybldvcmtlci5zdGRpbi53cml0ZShgJHtjb21tYW5kfVxcbmApO1xuICByZXR1cm4gbmV3IFByb21pc2U8T2JqZWN0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGFza01hcFt0YXNrLl9fdGFza19pZF0gPSByZXNvbHZlXG4gIH0pXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bkxlYXJuaW5nKGFub21hbHlJZDpBbm9tYWx5SWQpIHtcbiAgbGV0IHNlZ21lbnRzID0gZ2V0TGFiZWxlZFNlZ21lbnRzKGFub21hbHlJZCk7XG4gIHNldEFub21hbHlTdGF0dXMoYW5vbWFseUlkLCAnbGVhcm5pbmcnKTtcbiAgbGV0IGFub21hbHk6QW5vbWFseSAgPSBsb2FkQW5vbWFseUJ5SWQoYW5vbWFseUlkKTtcbiAgbGV0IGFuYWx5dGljc1R5cGUgPSBcImFub21hbGllc1wiO1xuICBsZXQgcHJlc2V0ID0gdW5kZWZpbmVkO1xuICBpZiAoYW5vbWFseS5uYW1lLmluY2x1ZGVzKFwianVtcHNcIikpIHtcbiAgICBhbmFseXRpY3NUeXBlID0gXCJwYXR0ZXJuc1wiO1xuICAgIHByZXNldCA9IFwic3RlcHNcIlxuICB9XG4gIGlmIChhbm9tYWx5Lm5hbWUuaW5jbHVkZXMoXCJjbGlmZnNcIikgfHwgYW5vbWFseS5uYW1lLmluY2x1ZGVzKFwiZHJvcHNcIikpIHtcbiAgICBhbmFseXRpY3NUeXBlID0gXCJwYXR0ZXJuc1wiO1xuICAgIHByZXNldCA9IFwiY2xpZmZzXCJcbiAgfVxuICBpZiAoYW5vbWFseS5uYW1lLmluY2x1ZGVzKFwicGVha3NcIikpIHtcbiAgICBhbmFseXRpY3NUeXBlID0gXCJwYXR0ZXJuc1wiO1xuICAgIHByZXNldCA9IFwicGVha3NcIlxuICB9XG4gIGxldCB0YXNrID0ge1xuICAgIHR5cGU6ICdsZWFybicsXG4gICAgYW5vbWFseV9pZDogYW5vbWFseUlkLFxuICAgIGFuYWx5dGljc190eXBlOiBhbmFseXRpY3NUeXBlLFxuICAgIHByZXNldCxcbiAgICBzZWdtZW50czogc2VnbWVudHNcbiAgfTtcblxuICBsZXQgcmVzdWx0ID0gYXdhaXQgcnVuVGFzayh0YXNrKTtcblxuICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgc2V0QW5vbWFseVN0YXR1cyhhbm9tYWx5SWQsICdyZWFkeScpO1xuICAgIGluc2VydFNlZ21lbnRzKGFub21hbHlJZCwgcmVzdWx0LnNlZ21lbnRzLCBmYWxzZSk7XG4gICAgc2V0QW5vbWFseVByZWRpY3Rpb25UaW1lKGFub21hbHlJZCwgcmVzdWx0Lmxhc3RfcHJlZGljdGlvbl90aW1lKTtcbiAgfSBlbHNlIHtcbiAgICBzZXRBbm9tYWx5U3RhdHVzKGFub21hbHlJZCwgJ2ZhaWxlZCcsIHJlc3VsdC5lcnJvcik7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuUHJlZGljdChhbm9tYWx5SWQ6QW5vbWFseUlkKSB7XG4gIGxldCBhbm9tYWx5OkFub21hbHkgPSBsb2FkQW5vbWFseUJ5SWQoYW5vbWFseUlkKTtcbiAgbGV0IGFuYWx5dGljc1R5cGUgPSBcImFub21hbGllc1wiO1xuICBsZXQgcHJlc2V0ID0gdW5kZWZpbmVkO1xuICBpZiAoYW5vbWFseS5uYW1lLmluY2x1ZGVzKFwianVtcFwiKSkge1xuICAgIGFuYWx5dGljc1R5cGUgPSBcInBhdHRlcm5zXCI7XG4gICAgcHJlc2V0ID0gXCJzdGVwc1wiXG4gIH1cbiAgaWYgKGFub21hbHkubmFtZS5pbmNsdWRlcyhcImNsaWZmc1wiKSB8fCBhbm9tYWx5Lm5hbWUuaW5jbHVkZXMoXCJkcm9wc1wiKSkge1xuICAgIGFuYWx5dGljc1R5cGUgPSBcInBhdHRlcm5zXCI7XG4gICAgcHJlc2V0ID0gXCJjbGlmZnNcIlxuICB9XG4gIGlmIChhbm9tYWx5Lm5hbWUuaW5jbHVkZXMoXCJwZWFrc1wiKSkge1xuICAgIGFuYWx5dGljc1R5cGUgPSBcInBhdHRlcm5zXCI7XG4gICAgcHJlc2V0ID0gXCJwZWFrc1wiXG4gIH1cbiAgbGV0IHRhc2sgPSB7XG4gICAgdHlwZTogJ3ByZWRpY3QnLFxuICAgIGFub21hbHlfaWQ6IGFub21hbHlJZCxcbiAgICBhbmFseXRpY3NfdHlwZTogYW5hbHl0aWNzVHlwZSxcbiAgICBwcmVzZXQsXG4gICAgbGFzdF9wcmVkaWN0aW9uX3RpbWU6IGFub21hbHkubGFzdF9wcmVkaWN0aW9uX3RpbWVcbiAgfTtcbiAgbGV0IHJlc3VsdCA9IGF3YWl0IHJ1blRhc2sodGFzayk7XG5cbiAgaWYocmVzdWx0LnN0YXR1cyA9PT0gJ2ZhaWxlZCcpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgLy8gTWVyZ2luZyBzZWdtZW50c1xuICBsZXQgc2VnbWVudHMgPSBnZXRMYWJlbGVkU2VnbWVudHMoYW5vbWFseUlkKTtcbiAgaWYoc2VnbWVudHMubGVuZ3RoID4gMCAmJiByZXN1bHQuc2VnbWVudHMubGVuZ3RoID4gMCkge1xuICAgIGxldCBsYXN0T2xkU2VnbWVudCA9IHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGxldCBmaXJzdE5ld1NlZ21lbnQgPSByZXN1bHQuc2VnbWVudHNbMF07XG5cbiAgICBpZihmaXJzdE5ld1NlZ21lbnQuc3RhcnQgPD0gbGFzdE9sZFNlZ21lbnQuZmluaXNoKSB7XG4gICAgICByZXN1bHQuc2VnbWVudHNbMF0uc3RhcnQgPSBsYXN0T2xkU2VnbWVudC5zdGFydDtcbiAgICAgIHJlbW92ZVNlZ21lbnRzKGFub21hbHlJZCwgW2xhc3RPbGRTZWdtZW50LmlkXSk7XG4gICAgfVxuICB9XG5cbiAgaW5zZXJ0U2VnbWVudHMoYW5vbWFseUlkLCByZXN1bHQuc2VnbWVudHMsIGZhbHNlKTtcbiAgc2V0QW5vbWFseVByZWRpY3Rpb25UaW1lKGFub21hbHlJZCwgcmVzdWx0Lmxhc3RfcHJlZGljdGlvbl90aW1lKTtcbiAgcmV0dXJuIHJlc3VsdC5zZWdtZW50cztcbn1cblxuZXhwb3J0IHsgcnVuTGVhcm5pbmcsIHJ1blByZWRpY3QgfVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc2VydmljZXMvYW5hbHl0aWNzLnRzIiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2dldC1pdGVyYXRvclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvZ2V0LWl0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSA2OVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZ2V0SnNvbkRhdGFTeW5jLCB3cml0ZUpzb25EYXRhU3luYyB9ICBmcm9tICcuL2pzb24nO1xuaW1wb3J0IHsgU0VHTUVOVFNfUEFUSCB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBBbm9tYWx5SWQsIGxvYWRBbm9tYWx5QnlJZCwgc2F2ZUFub21hbHkgfSBmcm9tICcuL2Fub21hbHlUeXBlJztcblxuZnVuY3Rpb24gZ2V0TGFiZWxlZFNlZ21lbnRzKGFub21hbHlJZDogQW5vbWFseUlkKSB7XG4gIGxldCBmaWxlbmFtZSA9IHBhdGguam9pbihTRUdNRU5UU19QQVRILCBgJHthbm9tYWx5SWR9X2xhYmVsZWQuanNvbmApO1xuXG4gIGxldCBzZWdtZW50cyA9IFtdO1xuICB0cnkge1xuICAgIHNlZ21lbnRzID0gZ2V0SnNvbkRhdGFTeW5jKGZpbGVuYW1lKTtcbiAgICBmb3IgKGxldCBzZWdtZW50IG9mIHNlZ21lbnRzKSB7XG4gICAgICBpZiAoc2VnbWVudC5sYWJlbGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2VnbWVudC5sYWJlbGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpO1xuICB9XG4gIHJldHVybiBzZWdtZW50cztcbn1cblxuZnVuY3Rpb24gZ2V0UHJlZGljdGVkU2VnbWVudHMoYW5vbWFseUlkOiBBbm9tYWx5SWQpIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKFNFR01FTlRTX1BBVEgsIGAke2Fub21hbHlJZH1fc2VnbWVudHMuanNvbmApO1xuXG4gIGxldCBqc29uRGF0YTtcbiAgdHJ5IHtcbiAgICBqc29uRGF0YSA9IGdldEpzb25EYXRhU3luYyhmaWxlbmFtZSk7XG4gIH0gY2F0Y2goZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTtcbiAgICBqc29uRGF0YSA9IFtdO1xuICB9XG4gIHJldHVybiBqc29uRGF0YTtcbn1cblxuZnVuY3Rpb24gc2F2ZVNlZ21lbnRzKGFub21hbHlJZDogQW5vbWFseUlkLCBzZWdtZW50cykge1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oU0VHTUVOVFNfUEFUSCwgYCR7YW5vbWFseUlkfV9sYWJlbGVkLmpzb25gKTtcblxuICB0cnkge1xuICAgIHJldHVybiB3cml0ZUpzb25EYXRhU3luYyhmaWxlbmFtZSwgc2VnbWVudHMpO1xuICB9IGNhdGNoKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5gdCB3cml0ZSB0byBkYicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluc2VydFNlZ21lbnRzKGFub21hbHlJZDogQW5vbWFseUlkLCBhZGRlZFNlZ21lbnRzLCBsYWJlbGVkOmJvb2xlYW4pIHtcbiAgLy8gU2V0IHN0YXR1c1xuICBsZXQgaW5mbyA9IGxvYWRBbm9tYWx5QnlJZChhbm9tYWx5SWQpO1xuICBsZXQgc2VnbWVudHMgPSBnZXRMYWJlbGVkU2VnbWVudHMoYW5vbWFseUlkKTtcblxuICBsZXQgbmV4dElkID0gaW5mby5uZXh0X2lkO1xuICBsZXQgYWRkZWRJZHMgPSBbXVxuICBmb3IgKGxldCBzZWdtZW50IG9mIGFkZGVkU2VnbWVudHMpIHtcbiAgICBzZWdtZW50LmlkID0gbmV4dElkO1xuICAgIHNlZ21lbnQubGFiZWxlZCA9IGxhYmVsZWQ7XG4gICAgYWRkZWRJZHMucHVzaChuZXh0SWQpO1xuICAgIG5leHRJZCsrO1xuICAgIHNlZ21lbnRzLnB1c2goc2VnbWVudCk7XG4gIH1cbiAgaW5mby5uZXh0X2lkID0gbmV4dElkO1xuICBzYXZlU2VnbWVudHMoYW5vbWFseUlkLCBzZWdtZW50cyk7XG4gIHNhdmVBbm9tYWx5KGFub21hbHlJZCwgaW5mbyk7XG4gIHJldHVybiBhZGRlZElkcztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU2VnbWVudHMoYW5vbWFseUlkOiBBbm9tYWx5SWQsIHJlbW92ZWRTZWdtZW50cykge1xuICBsZXQgc2VnbWVudHMgPSBnZXRMYWJlbGVkU2VnbWVudHMoYW5vbWFseUlkKTtcbiAgZm9yIChsZXQgc2VnbWVudElkIG9mIHJlbW92ZWRTZWdtZW50cykge1xuICAgIHNlZ21lbnRzID0gc2VnbWVudHMuZmlsdGVyKGVsID0+IGVsLmlkICE9PSBzZWdtZW50SWQpO1xuICB9XG4gIHNhdmVTZWdtZW50cyhhbm9tYWx5SWQsIHNlZ21lbnRzKTtcbn1cblxuZXhwb3J0IHsgZ2V0TGFiZWxlZFNlZ21lbnRzLCBnZXRQcmVkaWN0ZWRTZWdtZW50cywgc2F2ZVNlZ21lbnRzLCBpbnNlcnRTZWdtZW50cywgcmVtb3ZlU2VnbWVudHMgfVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc2VydmljZXMvc2VnbWVudHMudHMiLCJ2YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJylcblxuLy8gdGhyb3VnaFxuLy9cbi8vIGEgc3RyZWFtIHRoYXQgZG9lcyBub3RoaW5nIGJ1dCByZS1lbWl0IHRoZSBpbnB1dC5cbi8vIHVzZWZ1bCBmb3IgYWdncmVnYXRpbmcgYSBzZXJpZXMgb2YgY2hhbmdpbmcgYnV0IG5vdCBlbmRpbmcgc3RyZWFtcyBpbnRvIG9uZSBzdHJlYW0pXG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHRocm91Z2hcbnRocm91Z2gudGhyb3VnaCA9IHRocm91Z2hcblxuLy9jcmVhdGUgYSByZWFkYWJsZSB3cml0YWJsZSBzdHJlYW0uXG5cbmZ1bmN0aW9uIHRocm91Z2ggKHdyaXRlLCBlbmQsIG9wdHMpIHtcbiAgd3JpdGUgPSB3cml0ZSB8fCBmdW5jdGlvbiAoZGF0YSkgeyB0aGlzLnF1ZXVlKGRhdGEpIH1cbiAgZW5kID0gZW5kIHx8IGZ1bmN0aW9uICgpIHsgdGhpcy5xdWV1ZShudWxsKSB9XG5cbiAgdmFyIGVuZGVkID0gZmFsc2UsIGRlc3Ryb3llZCA9IGZhbHNlLCBidWZmZXIgPSBbXSwgX2VuZGVkID0gZmFsc2VcbiAgdmFyIHN0cmVhbSA9IG5ldyBTdHJlYW0oKVxuICBzdHJlYW0ucmVhZGFibGUgPSBzdHJlYW0ud3JpdGFibGUgPSB0cnVlXG4gIHN0cmVhbS5wYXVzZWQgPSBmYWxzZVxuXG4vLyAgc3RyZWFtLmF1dG9QYXVzZSAgID0gIShvcHRzICYmIG9wdHMuYXV0b1BhdXNlICAgPT09IGZhbHNlKVxuICBzdHJlYW0uYXV0b0Rlc3Ryb3kgPSAhKG9wdHMgJiYgb3B0cy5hdXRvRGVzdHJveSA9PT0gZmFsc2UpXG5cbiAgc3RyZWFtLndyaXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB3cml0ZS5jYWxsKHRoaXMsIGRhdGEpXG4gICAgcmV0dXJuICFzdHJlYW0ucGF1c2VkXG4gIH1cblxuICBmdW5jdGlvbiBkcmFpbigpIHtcbiAgICB3aGlsZShidWZmZXIubGVuZ3RoICYmICFzdHJlYW0ucGF1c2VkKSB7XG4gICAgICB2YXIgZGF0YSA9IGJ1ZmZlci5zaGlmdCgpXG4gICAgICBpZihudWxsID09PSBkYXRhKVxuICAgICAgICByZXR1cm4gc3RyZWFtLmVtaXQoJ2VuZCcpXG4gICAgICBlbHNlXG4gICAgICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgZGF0YSlcbiAgICB9XG4gIH1cblxuICBzdHJlYW0ucXVldWUgPSBzdHJlYW0ucHVzaCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4vLyAgICBjb25zb2xlLmVycm9yKGVuZGVkKVxuICAgIGlmKF9lbmRlZCkgcmV0dXJuIHN0cmVhbVxuICAgIGlmKGRhdGEgPT09IG51bGwpIF9lbmRlZCA9IHRydWVcbiAgICBidWZmZXIucHVzaChkYXRhKVxuICAgIGRyYWluKClcbiAgICByZXR1cm4gc3RyZWFtXG4gIH1cblxuICAvL3RoaXMgd2lsbCBiZSByZWdpc3RlcmVkIGFzIHRoZSBmaXJzdCAnZW5kJyBsaXN0ZW5lclxuICAvL211c3QgY2FsbCBkZXN0cm95IG5leHQgdGljaywgdG8gbWFrZSBzdXJlIHdlJ3JlIGFmdGVyIGFueVxuICAvL3N0cmVhbSBwaXBlZCBmcm9tIGhlcmUuXG4gIC8vdGhpcyBpcyBvbmx5IGEgcHJvYmxlbSBpZiBlbmQgaXMgbm90IGVtaXR0ZWQgc3luY2hyb25vdXNseS5cbiAgLy9hIG5pY2VyIHdheSB0byBkbyB0aGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHRoZSBsYXN0IGxpc3RlbmVyIGZvciAnZW5kJ1xuXG4gIHN0cmVhbS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlXG4gICAgaWYoIXN0cmVhbS53cml0YWJsZSAmJiBzdHJlYW0uYXV0b0Rlc3Ryb3kpXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc3RyZWFtLmRlc3Ryb3koKVxuICAgICAgfSlcbiAgfSlcblxuICBmdW5jdGlvbiBfZW5kICgpIHtcbiAgICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZVxuICAgIGVuZC5jYWxsKHN0cmVhbSlcbiAgICBpZighc3RyZWFtLnJlYWRhYmxlICYmIHN0cmVhbS5hdXRvRGVzdHJveSlcbiAgICAgIHN0cmVhbS5kZXN0cm95KClcbiAgfVxuXG4gIHN0cmVhbS5lbmQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGlmKGVuZGVkKSByZXR1cm5cbiAgICBlbmRlZCA9IHRydWVcbiAgICBpZihhcmd1bWVudHMubGVuZ3RoKSBzdHJlYW0ud3JpdGUoZGF0YSlcbiAgICBfZW5kKCkgLy8gd2lsbCBlbWl0IG9yIHF1ZXVlXG4gICAgcmV0dXJuIHN0cmVhbVxuICB9XG5cbiAgc3RyZWFtLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYoZGVzdHJveWVkKSByZXR1cm5cbiAgICBkZXN0cm95ZWQgPSB0cnVlXG4gICAgZW5kZWQgPSB0cnVlXG4gICAgYnVmZmVyLmxlbmd0aCA9IDBcbiAgICBzdHJlYW0ud3JpdGFibGUgPSBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZVxuICAgIHN0cmVhbS5lbWl0KCdjbG9zZScpXG4gICAgcmV0dXJuIHN0cmVhbVxuICB9XG5cbiAgc3RyZWFtLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmKHN0cmVhbS5wYXVzZWQpIHJldHVyblxuICAgIHN0cmVhbS5wYXVzZWQgPSB0cnVlXG4gICAgcmV0dXJuIHN0cmVhbVxuICB9XG5cbiAgc3RyZWFtLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZihzdHJlYW0ucGF1c2VkKSB7XG4gICAgICBzdHJlYW0ucGF1c2VkID0gZmFsc2VcbiAgICAgIHN0cmVhbS5lbWl0KCdyZXN1bWUnKVxuICAgIH1cbiAgICBkcmFpbigpXG4gICAgLy9tYXkgaGF2ZSBiZWNvbWUgcGF1c2VkIGFnYWluLFxuICAgIC8vYXMgZHJhaW4gZW1pdHMgJ2RhdGEnLlxuICAgIGlmKCFzdHJlYW0ucGF1c2VkKVxuICAgICAgc3RyZWFtLmVtaXQoJ2RyYWluJylcbiAgICByZXR1cm4gc3RyZWFtXG4gIH1cbiAgcmV0dXJuIHN0cmVhbVxufVxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvdGhyb3VnaC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBib2R5LXBhcnNlclxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGRlcHJlY2F0ZSA9IHJlcXVpcmUoJ2RlcGQnKSgnYm9keS1wYXJzZXInKVxuXG4vKipcbiAqIENhY2hlIG9mIGxvYWRlZCBwYXJzZXJzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgcGFyc2VycyA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuLyoqXG4gKiBAdHlwZWRlZiBQYXJzZXJzXG4gKiBAdHlwZSB7ZnVuY3Rpb259XG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSBqc29uXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSByYXdcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IHRleHRcbiAqIEBwcm9wZXJ0eSB7ZnVuY3Rpb259IHVybGVuY29kZWRcbiAqL1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHR5cGUge1BhcnNlcnN9XG4gKi9cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlLmZ1bmN0aW9uKGJvZHlQYXJzZXIsXG4gICdib2R5UGFyc2VyOiB1c2UgaW5kaXZpZHVhbCBqc29uL3VybGVuY29kZWQgbWlkZGxld2FyZXMnKVxuXG4vKipcbiAqIEpTT04gcGFyc2VyLlxuICogQHB1YmxpY1xuICovXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnanNvbicsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGNyZWF0ZVBhcnNlckdldHRlcignanNvbicpXG59KVxuXG4vKipcbiAqIFJhdyBwYXJzZXIuXG4gKiBAcHVibGljXG4gKi9cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdyYXcnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBjcmVhdGVQYXJzZXJHZXR0ZXIoJ3JhdycpXG59KVxuXG4vKipcbiAqIFRleHQgcGFyc2VyLlxuICogQHB1YmxpY1xuICovXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAndGV4dCcsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGNyZWF0ZVBhcnNlckdldHRlcigndGV4dCcpXG59KVxuXG4vKipcbiAqIFVSTC1lbmNvZGVkIHBhcnNlci5cbiAqIEBwdWJsaWNcbiAqL1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ3VybGVuY29kZWQnLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBjcmVhdGVQYXJzZXJHZXR0ZXIoJ3VybGVuY29kZWQnKVxufSlcblxuLyoqXG4gKiBDcmVhdGUgYSBtaWRkbGV3YXJlIHRvIHBhcnNlIGpzb24gYW5kIHVybGVuY29kZWQgYm9kaWVzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQGRlcHJlY2F0ZWRcbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBib2R5UGFyc2VyIChvcHRpb25zKSB7XG4gIHZhciBvcHRzID0ge31cblxuICAvLyBleGNsdWRlIHR5cGUgb3B0aW9uXG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yICh2YXIgcHJvcCBpbiBvcHRpb25zKSB7XG4gICAgICBpZiAocHJvcCAhPT0gJ3R5cGUnKSB7XG4gICAgICAgIG9wdHNbcHJvcF0gPSBvcHRpb25zW3Byb3BdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIF91cmxlbmNvZGVkID0gZXhwb3J0cy51cmxlbmNvZGVkKG9wdHMpXG4gIHZhciBfanNvbiA9IGV4cG9ydHMuanNvbihvcHRzKVxuXG4gIHJldHVybiBmdW5jdGlvbiBib2R5UGFyc2VyIChyZXEsIHJlcywgbmV4dCkge1xuICAgIF9qc29uKHJlcSwgcmVzLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gbmV4dChlcnIpXG4gICAgICBfdXJsZW5jb2RlZChyZXEsIHJlcywgbmV4dClcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZ2V0dGVyIGZvciBsb2FkaW5nIGEgcGFyc2VyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVQYXJzZXJHZXR0ZXIgKG5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgcmV0dXJuIGxvYWRQYXJzZXIobmFtZSlcbiAgfVxufVxuXG4vKipcbiAqIExvYWQgYSBwYXJzZXIgbW9kdWxlLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2FkUGFyc2VyIChwYXJzZXJOYW1lKSB7XG4gIHZhciBwYXJzZXIgPSBwYXJzZXJzW3BhcnNlck5hbWVdXG5cbiAgaWYgKHBhcnNlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHBhcnNlclxuICB9XG5cbiAgLy8gdGhpcyB1c2VzIGEgc3dpdGNoIGZvciBzdGF0aWMgcmVxdWlyZSBhbmFseXNpc1xuICBzd2l0Y2ggKHBhcnNlck5hbWUpIHtcbiAgICBjYXNlICdqc29uJzpcbiAgICAgIHBhcnNlciA9IHJlcXVpcmUoJy4vbGliL3R5cGVzL2pzb24nKVxuICAgICAgYnJlYWtcbiAgICBjYXNlICdyYXcnOlxuICAgICAgcGFyc2VyID0gcmVxdWlyZSgnLi9saWIvdHlwZXMvcmF3JylcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndGV4dCc6XG4gICAgICBwYXJzZXIgPSByZXF1aXJlKCcuL2xpYi90eXBlcy90ZXh0JylcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAndXJsZW5jb2RlZCc6XG4gICAgICBwYXJzZXIgPSByZXF1aXJlKCcuL2xpYi90eXBlcy91cmxlbmNvZGVkJylcbiAgICAgIGJyZWFrXG4gIH1cblxuICAvLyBzdG9yZSB0byBwcmV2ZW50IGludm9raW5nIHJlcXVpcmUoKVxuICByZXR1cm4gKHBhcnNlcnNbcGFyc2VyTmFtZV0gPSBwYXJzZXIpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYm9keS1wYXJzZXIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDcyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZGVwZFxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlclxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbmxhenlQcm9wZXJ0eShtb2R1bGUuZXhwb3J0cywgJ2NhbGxTaXRlVG9TdHJpbmcnLCBmdW5jdGlvbiBjYWxsU2l0ZVRvU3RyaW5nICgpIHtcbiAgdmFyIGxpbWl0ID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0XG4gIHZhciBvYmogPSB7fVxuICB2YXIgcHJlcCA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlXG5cbiAgZnVuY3Rpb24gcHJlcGFyZU9iamVjdFN0YWNrVHJhY2UgKG9iaiwgc3RhY2spIHtcbiAgICByZXR1cm4gc3RhY2tcbiAgfVxuXG4gIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJlcGFyZU9iamVjdFN0YWNrVHJhY2VcbiAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gMlxuXG4gIC8vIGNhcHR1cmUgdGhlIHN0YWNrXG4gIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKG9iailcblxuICAvLyBzbGljZSB0aGUgc3RhY2tcbiAgdmFyIHN0YWNrID0gb2JqLnN0YWNrLnNsaWNlKClcblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBcbiAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gbGltaXRcblxuICByZXR1cm4gc3RhY2tbMF0udG9TdHJpbmcgPyB0b1N0cmluZyA6IHJlcXVpcmUoJy4vY2FsbHNpdGUtdG9zdHJpbmcnKVxufSlcblxubGF6eVByb3BlcnR5KG1vZHVsZS5leHBvcnRzLCAnZXZlbnRMaXN0ZW5lckNvdW50JywgZnVuY3Rpb24gZXZlbnRMaXN0ZW5lckNvdW50ICgpIHtcbiAgcmV0dXJuIEV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50IHx8IHJlcXVpcmUoJy4vZXZlbnQtbGlzdGVuZXItY291bnQnKVxufSlcblxuLyoqXG4gKiBEZWZpbmUgYSBsYXp5IHByb3BlcnR5LlxuICovXG5cbmZ1bmN0aW9uIGxhenlQcm9wZXJ0eSAob2JqLCBwcm9wLCBnZXR0ZXIpIHtcbiAgZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICB2YXIgdmFsID0gZ2V0dGVyKClcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogdmFsXG4gICAgfSlcblxuICAgIHJldHVybiB2YWxcbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGdldFxuICB9KVxufVxuXG4vKipcbiAqIENhbGwgdG9TdHJpbmcoKSBvbiB0aGUgb2JqXG4gKi9cblxuZnVuY3Rpb24gdG9TdHJpbmcgKG9iaikge1xuICByZXR1cm4gb2JqLnRvU3RyaW5nKClcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDczXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInRyeSB7XG4gIHZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuICBpZiAodHlwZW9mIHV0aWwuaW5oZXJpdHMgIT09ICdmdW5jdGlvbicpIHRocm93ICcnO1xuICBtb2R1bGUuZXhwb3J0cyA9IHV0aWwuaW5oZXJpdHM7XG59IGNhdGNoIChlKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9pbmhlcml0c19icm93c2VyLmpzJyk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHMuanNcbi8vIG1vZHVsZSBpZCA9IDc0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlxuLyoqXG4gKiBUaGlzIGlzIHRoZSBjb21tb24gbG9naWMgZm9yIGJvdGggdGhlIE5vZGUuanMgYW5kIHdlYiBicm93c2VyXG4gKiBpbXBsZW1lbnRhdGlvbnMgb2YgYGRlYnVnKClgLlxuICpcbiAqIEV4cG9zZSBgZGVidWcoKWAgYXMgdGhlIG1vZHVsZS5cbiAqL1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVEZWJ1Zy5kZWJ1ZyA9IGNyZWF0ZURlYnVnWydkZWZhdWx0J10gPSBjcmVhdGVEZWJ1ZztcbmV4cG9ydHMuY29lcmNlID0gY29lcmNlO1xuZXhwb3J0cy5kaXNhYmxlID0gZGlzYWJsZTtcbmV4cG9ydHMuZW5hYmxlID0gZW5hYmxlO1xuZXhwb3J0cy5lbmFibGVkID0gZW5hYmxlZDtcbmV4cG9ydHMuaHVtYW5pemUgPSByZXF1aXJlKCdtcycpO1xuXG4vKipcbiAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIGRlYnVnIG1vZGUgbmFtZXMsIGFuZCBuYW1lcyB0byBza2lwLlxuICovXG5cbmV4cG9ydHMubmFtZXMgPSBbXTtcbmV4cG9ydHMuc2tpcHMgPSBbXTtcblxuLyoqXG4gKiBNYXAgb2Ygc3BlY2lhbCBcIiVuXCIgaGFuZGxpbmcgZnVuY3Rpb25zLCBmb3IgdGhlIGRlYnVnIFwiZm9ybWF0XCIgYXJndW1lbnQuXG4gKlxuICogVmFsaWQga2V5IG5hbWVzIGFyZSBhIHNpbmdsZSwgbG93ZXIgb3IgdXBwZXItY2FzZSBsZXR0ZXIsIGkuZS4gXCJuXCIgYW5kIFwiTlwiLlxuICovXG5cbmV4cG9ydHMuZm9ybWF0dGVycyA9IHt9O1xuXG4vKipcbiAqIFByZXZpb3VzIGxvZyB0aW1lc3RhbXAuXG4gKi9cblxudmFyIHByZXZUaW1lO1xuXG4vKipcbiAqIFNlbGVjdCBhIGNvbG9yLlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2VsZWN0Q29sb3IobmFtZXNwYWNlKSB7XG4gIHZhciBoYXNoID0gMCwgaTtcblxuICBmb3IgKGkgaW4gbmFtZXNwYWNlKSB7XG4gICAgaGFzaCAgPSAoKGhhc2ggPDwgNSkgLSBoYXNoKSArIG5hbWVzcGFjZS5jaGFyQ29kZUF0KGkpO1xuICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gIH1cblxuICByZXR1cm4gZXhwb3J0cy5jb2xvcnNbTWF0aC5hYnMoaGFzaCkgJSBleHBvcnRzLmNvbG9ycy5sZW5ndGhdO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGRlYnVnZ2VyIHdpdGggdGhlIGdpdmVuIGBuYW1lc3BhY2VgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVEZWJ1ZyhuYW1lc3BhY2UpIHtcblxuICBmdW5jdGlvbiBkZWJ1ZygpIHtcbiAgICAvLyBkaXNhYmxlZD9cbiAgICBpZiAoIWRlYnVnLmVuYWJsZWQpIHJldHVybjtcblxuICAgIHZhciBzZWxmID0gZGVidWc7XG5cbiAgICAvLyBzZXQgYGRpZmZgIHRpbWVzdGFtcFxuICAgIHZhciBjdXJyID0gK25ldyBEYXRlKCk7XG4gICAgdmFyIG1zID0gY3VyciAtIChwcmV2VGltZSB8fCBjdXJyKTtcbiAgICBzZWxmLmRpZmYgPSBtcztcbiAgICBzZWxmLnByZXYgPSBwcmV2VGltZTtcbiAgICBzZWxmLmN1cnIgPSBjdXJyO1xuICAgIHByZXZUaW1lID0gY3VycjtcblxuICAgIC8vIHR1cm4gdGhlIGBhcmd1bWVudHNgIGludG8gYSBwcm9wZXIgQXJyYXlcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgfVxuXG4gICAgYXJnc1swXSA9IGV4cG9ydHMuY29lcmNlKGFyZ3NbMF0pO1xuXG4gICAgaWYgKCdzdHJpbmcnICE9PSB0eXBlb2YgYXJnc1swXSkge1xuICAgICAgLy8gYW55dGhpbmcgZWxzZSBsZXQncyBpbnNwZWN0IHdpdGggJU9cbiAgICAgIGFyZ3MudW5zaGlmdCgnJU8nKTtcbiAgICB9XG5cbiAgICAvLyBhcHBseSBhbnkgYGZvcm1hdHRlcnNgIHRyYW5zZm9ybWF0aW9uc1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgYXJnc1swXSA9IGFyZ3NbMF0ucmVwbGFjZSgvJShbYS16QS1aJV0pL2csIGZ1bmN0aW9uKG1hdGNoLCBmb3JtYXQpIHtcbiAgICAgIC8vIGlmIHdlIGVuY291bnRlciBhbiBlc2NhcGVkICUgdGhlbiBkb24ndCBpbmNyZWFzZSB0aGUgYXJyYXkgaW5kZXhcbiAgICAgIGlmIChtYXRjaCA9PT0gJyUlJykgcmV0dXJuIG1hdGNoO1xuICAgICAgaW5kZXgrKztcbiAgICAgIHZhciBmb3JtYXR0ZXIgPSBleHBvcnRzLmZvcm1hdHRlcnNbZm9ybWF0XTtcbiAgICAgIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgZm9ybWF0dGVyKSB7XG4gICAgICAgIHZhciB2YWwgPSBhcmdzW2luZGV4XTtcbiAgICAgICAgbWF0Y2ggPSBmb3JtYXR0ZXIuY2FsbChzZWxmLCB2YWwpO1xuXG4gICAgICAgIC8vIG5vdyB3ZSBuZWVkIHRvIHJlbW92ZSBgYXJnc1tpbmRleF1gIHNpbmNlIGl0J3MgaW5saW5lZCBpbiB0aGUgYGZvcm1hdGBcbiAgICAgICAgYXJncy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBpbmRleC0tO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoO1xuICAgIH0pO1xuXG4gICAgLy8gYXBwbHkgZW52LXNwZWNpZmljIGZvcm1hdHRpbmcgKGNvbG9ycywgZXRjLilcbiAgICBleHBvcnRzLmZvcm1hdEFyZ3MuY2FsbChzZWxmLCBhcmdzKTtcblxuICAgIHZhciBsb2dGbiA9IGRlYnVnLmxvZyB8fCBleHBvcnRzLmxvZyB8fCBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO1xuICAgIGxvZ0ZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICB9XG5cbiAgZGVidWcubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICBkZWJ1Zy5lbmFibGVkID0gZXhwb3J0cy5lbmFibGVkKG5hbWVzcGFjZSk7XG4gIGRlYnVnLnVzZUNvbG9ycyA9IGV4cG9ydHMudXNlQ29sb3JzKCk7XG4gIGRlYnVnLmNvbG9yID0gc2VsZWN0Q29sb3IobmFtZXNwYWNlKTtcblxuICAvLyBlbnYtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gbG9naWMgZm9yIGRlYnVnIGluc3RhbmNlc1xuICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGV4cG9ydHMuaW5pdCkge1xuICAgIGV4cG9ydHMuaW5pdChkZWJ1Zyk7XG4gIH1cblxuICByZXR1cm4gZGVidWc7XG59XG5cbi8qKlxuICogRW5hYmxlcyBhIGRlYnVnIG1vZGUgYnkgbmFtZXNwYWNlcy4gVGhpcyBjYW4gaW5jbHVkZSBtb2Rlc1xuICogc2VwYXJhdGVkIGJ5IGEgY29sb24gYW5kIHdpbGRjYXJkcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBlbmFibGUobmFtZXNwYWNlcykge1xuICBleHBvcnRzLnNhdmUobmFtZXNwYWNlcyk7XG5cbiAgZXhwb3J0cy5uYW1lcyA9IFtdO1xuICBleHBvcnRzLnNraXBzID0gW107XG5cbiAgdmFyIHNwbGl0ID0gKHR5cGVvZiBuYW1lc3BhY2VzID09PSAnc3RyaW5nJyA/IG5hbWVzcGFjZXMgOiAnJykuc3BsaXQoL1tcXHMsXSsvKTtcbiAgdmFyIGxlbiA9IHNwbGl0Lmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKCFzcGxpdFtpXSkgY29udGludWU7IC8vIGlnbm9yZSBlbXB0eSBzdHJpbmdzXG4gICAgbmFtZXNwYWNlcyA9IHNwbGl0W2ldLnJlcGxhY2UoL1xcKi9nLCAnLio/Jyk7XG4gICAgaWYgKG5hbWVzcGFjZXNbMF0gPT09ICctJykge1xuICAgICAgZXhwb3J0cy5za2lwcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcy5zdWJzdHIoMSkgKyAnJCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwb3J0cy5uYW1lcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcyArICckJykpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERpc2FibGUgZGVidWcgb3V0cHV0LlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGlzYWJsZSgpIHtcbiAgZXhwb3J0cy5lbmFibGUoJycpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9kZSBuYW1lIGlzIGVuYWJsZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZW5hYmxlZChuYW1lKSB7XG4gIHZhciBpLCBsZW47XG4gIGZvciAoaSA9IDAsIGxlbiA9IGV4cG9ydHMuc2tpcHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoZXhwb3J0cy5za2lwc1tpXS50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGZvciAoaSA9IDAsIGxlbiA9IGV4cG9ydHMubmFtZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoZXhwb3J0cy5uYW1lc1tpXS50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENvZXJjZSBgdmFsYC5cbiAqXG4gKiBAcGFyYW0ge01peGVkfSB2YWxcbiAqIEByZXR1cm4ge01peGVkfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29lcmNlKHZhbCkge1xuICBpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHJldHVybiB2YWwuc3RhY2sgfHwgdmFsLm1lc3NhZ2U7XG4gIHJldHVybiB2YWw7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL2RlYnVnLmpzXG4vLyBtb2R1bGUgaWQgPSA3NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIEhlbHBlcnMuXG4gKi9cblxudmFyIHMgPSAxMDAwO1xudmFyIG0gPSBzICogNjA7XG52YXIgaCA9IG0gKiA2MDtcbnZhciBkID0gaCAqIDI0O1xudmFyIHkgPSBkICogMzY1LjI1O1xuXG4vKipcbiAqIFBhcnNlIG9yIGZvcm1hdCB0aGUgZ2l2ZW4gYHZhbGAuXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgLSBgbG9uZ2AgdmVyYm9zZSBmb3JtYXR0aW5nIFtmYWxzZV1cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IHZhbFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICogQHRocm93cyB7RXJyb3J9IHRocm93IGFuIGVycm9yIGlmIHZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgbnVtYmVyXG4gKiBAcmV0dXJuIHtTdHJpbmd8TnVtYmVyfVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHZhbCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsO1xuICBpZiAodHlwZSA9PT0gJ3N0cmluZycgJiYgdmFsLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2UodmFsKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWwpID09PSBmYWxzZSkge1xuICAgIHJldHVybiBvcHRpb25zLmxvbmcgPyBmbXRMb25nKHZhbCkgOiBmbXRTaG9ydCh2YWwpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAndmFsIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcgb3IgYSB2YWxpZCBudW1iZXIuIHZhbD0nICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KHZhbClcbiAgKTtcbn07XG5cbi8qKlxuICogUGFyc2UgdGhlIGdpdmVuIGBzdHJgIGFuZCByZXR1cm4gbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlKHN0cikge1xuICBzdHIgPSBTdHJpbmcoc3RyKTtcbiAgaWYgKHN0ci5sZW5ndGggPiAxMDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG1hdGNoID0gL14oKD86XFxkKyk/XFwuP1xcZCspICoobWlsbGlzZWNvbmRzP3xtc2Vjcz98bXN8c2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx5ZWFycz98eXJzP3x5KT8kL2kuZXhlYyhcbiAgICBzdHJcbiAgKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbiA9IHBhcnNlRmxvYXQobWF0Y2hbMV0pO1xuICB2YXIgdHlwZSA9IChtYXRjaFsyXSB8fCAnbXMnKS50b0xvd2VyQ2FzZSgpO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICd5ZWFycyc6XG4gICAgY2FzZSAneWVhcic6XG4gICAgY2FzZSAneXJzJzpcbiAgICBjYXNlICd5cic6XG4gICAgY2FzZSAneSc6XG4gICAgICByZXR1cm4gbiAqIHk7XG4gICAgY2FzZSAnZGF5cyc6XG4gICAgY2FzZSAnZGF5JzpcbiAgICBjYXNlICdkJzpcbiAgICAgIHJldHVybiBuICogZDtcbiAgICBjYXNlICdob3Vycyc6XG4gICAgY2FzZSAnaG91cic6XG4gICAgY2FzZSAnaHJzJzpcbiAgICBjYXNlICdocic6XG4gICAgY2FzZSAnaCc6XG4gICAgICByZXR1cm4gbiAqIGg7XG4gICAgY2FzZSAnbWludXRlcyc6XG4gICAgY2FzZSAnbWludXRlJzpcbiAgICBjYXNlICdtaW5zJzpcbiAgICBjYXNlICdtaW4nOlxuICAgIGNhc2UgJ20nOlxuICAgICAgcmV0dXJuIG4gKiBtO1xuICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgY2FzZSAnc2Vjcyc6XG4gICAgY2FzZSAnc2VjJzpcbiAgICBjYXNlICdzJzpcbiAgICAgIHJldHVybiBuICogcztcbiAgICBjYXNlICdtaWxsaXNlY29uZHMnOlxuICAgIGNhc2UgJ21pbGxpc2Vjb25kJzpcbiAgICBjYXNlICdtc2Vjcyc6XG4gICAgY2FzZSAnbXNlYyc6XG4gICAgY2FzZSAnbXMnOlxuICAgICAgcmV0dXJuIG47XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBTaG9ydCBmb3JtYXQgZm9yIGBtc2AuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBmbXRTaG9ydChtcykge1xuICBpZiAobXMgPj0gZCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gZCkgKyAnZCc7XG4gIH1cbiAgaWYgKG1zID49IGgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChtcyAvIGgpICsgJ2gnO1xuICB9XG4gIGlmIChtcyA+PSBtKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQobXMgLyBtKSArICdtJztcbiAgfVxuICBpZiAobXMgPj0gcykge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gcykgKyAncyc7XG4gIH1cbiAgcmV0dXJuIG1zICsgJ21zJztcbn1cblxuLyoqXG4gKiBMb25nIGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZtdExvbmcobXMpIHtcbiAgcmV0dXJuIHBsdXJhbChtcywgZCwgJ2RheScpIHx8XG4gICAgcGx1cmFsKG1zLCBoLCAnaG91cicpIHx8XG4gICAgcGx1cmFsKG1zLCBtLCAnbWludXRlJykgfHxcbiAgICBwbHVyYWwobXMsIHMsICdzZWNvbmQnKSB8fFxuICAgIG1zICsgJyBtcyc7XG59XG5cbi8qKlxuICogUGx1cmFsaXphdGlvbiBoZWxwZXIuXG4gKi9cblxuZnVuY3Rpb24gcGx1cmFsKG1zLCBuLCBuYW1lKSB7XG4gIGlmIChtcyA8IG4pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG1zIDwgbiAqIDEuNSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKG1zIC8gbikgKyAnICcgKyBuYW1lO1xuICB9XG4gIHJldHVybiBNYXRoLmNlaWwobXMgLyBuKSArICcgJyArIG5hbWUgKyAncyc7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbXMvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDc2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm5ldFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcIm5ldFwiXG4vLyBtb2R1bGUgaWQgPSA3N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGRlcGRcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXJcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5sYXp5UHJvcGVydHkobW9kdWxlLmV4cG9ydHMsICdjYWxsU2l0ZVRvU3RyaW5nJywgZnVuY3Rpb24gY2FsbFNpdGVUb1N0cmluZyAoKSB7XG4gIHZhciBsaW1pdCA9IEVycm9yLnN0YWNrVHJhY2VMaW1pdFxuICB2YXIgb2JqID0ge31cbiAgdmFyIHByZXAgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZVxuXG4gIGZ1bmN0aW9uIHByZXBhcmVPYmplY3RTdGFja1RyYWNlIChvYmosIHN0YWNrKSB7XG4gICAgcmV0dXJuIHN0YWNrXG4gIH1cblxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBhcmVPYmplY3RTdGFja1RyYWNlXG4gIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IDJcblxuICAvLyBjYXB0dXJlIHRoZSBzdGFja1xuICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShvYmopXG5cbiAgLy8gc2xpY2UgdGhlIHN0YWNrXG4gIHZhciBzdGFjayA9IG9iai5zdGFjay5zbGljZSgpXG5cbiAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmVwXG4gIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IGxpbWl0XG5cbiAgcmV0dXJuIHN0YWNrWzBdLnRvU3RyaW5nID8gdG9TdHJpbmcgOiByZXF1aXJlKCcuL2NhbGxzaXRlLXRvc3RyaW5nJylcbn0pXG5cbmxhenlQcm9wZXJ0eShtb2R1bGUuZXhwb3J0cywgJ2V2ZW50TGlzdGVuZXJDb3VudCcsIGZ1bmN0aW9uIGV2ZW50TGlzdGVuZXJDb3VudCAoKSB7XG4gIHJldHVybiBFdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCB8fCByZXF1aXJlKCcuL2V2ZW50LWxpc3RlbmVyLWNvdW50Jylcbn0pXG5cbi8qKlxuICogRGVmaW5lIGEgbGF6eSBwcm9wZXJ0eS5cbiAqL1xuXG5mdW5jdGlvbiBsYXp5UHJvcGVydHkgKG9iaiwgcHJvcCwgZ2V0dGVyKSB7XG4gIGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgdmFyIHZhbCA9IGdldHRlcigpXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IHZhbFxuICAgIH0pXG5cbiAgICByZXR1cm4gdmFsXG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBwcm9wLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBnZXRcbiAgfSlcbn1cblxuLyoqXG4gKiBDYWxsIHRvU3RyaW5nKCkgb24gdGhlIG9ialxuICovXG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChvYmopIHtcbiAgcmV0dXJuIG9iai50b1N0cmluZygpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2RlcGQvbGliL2NvbXBhdC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIFNvbWUgZW52aXJvbm1lbnRzIGRvbid0IGhhdmUgZ2xvYmFsIEJ1ZmZlciAoZS5nLiBSZWFjdCBOYXRpdmUpLlxuLy8gU29sdXRpb24gd291bGQgYmUgaW5zdGFsbGluZyBucG0gbW9kdWxlcyBcImJ1ZmZlclwiIGFuZCBcInN0cmVhbVwiIGV4cGxpY2l0bHkuXG52YXIgQnVmZmVyID0gcmVxdWlyZShcImJ1ZmZlclwiKS5CdWZmZXI7XG5cbnZhciBib21IYW5kbGluZyA9IHJlcXVpcmUoXCIuL2JvbS1oYW5kbGluZ1wiKSxcbiAgICBpY29udiA9IG1vZHVsZS5leHBvcnRzO1xuXG4vLyBBbGwgY29kZWNzIGFuZCBhbGlhc2VzIGFyZSBrZXB0IGhlcmUsIGtleWVkIGJ5IGVuY29kaW5nIG5hbWUvYWxpYXMuXG4vLyBUaGV5IGFyZSBsYXp5IGxvYWRlZCBpbiBgaWNvbnYuZ2V0Q29kZWNgIGZyb20gYGVuY29kaW5ncy9pbmRleC5qc2AuXG5pY29udi5lbmNvZGluZ3MgPSBudWxsO1xuXG4vLyBDaGFyYWN0ZXJzIGVtaXR0ZWQgaW4gY2FzZSBvZiBlcnJvci5cbmljb252LmRlZmF1bHRDaGFyVW5pY29kZSA9ICfvv70nO1xuaWNvbnYuZGVmYXVsdENoYXJTaW5nbGVCeXRlID0gJz8nO1xuXG4vLyBQdWJsaWMgQVBJLlxuaWNvbnYuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0ciwgZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICBzdHIgPSBcIlwiICsgKHN0ciB8fCBcIlwiKTsgLy8gRW5zdXJlIHN0cmluZy5cblxuICAgIHZhciBlbmNvZGVyID0gaWNvbnYuZ2V0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucyk7XG5cbiAgICB2YXIgcmVzID0gZW5jb2Rlci53cml0ZShzdHIpO1xuICAgIHZhciB0cmFpbCA9IGVuY29kZXIuZW5kKCk7XG4gICAgXG4gICAgcmV0dXJuICh0cmFpbCAmJiB0cmFpbC5sZW5ndGggPiAwKSA/IEJ1ZmZlci5jb25jYXQoW3JlcywgdHJhaWxdKSA6IHJlcztcbn1cblxuaWNvbnYuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGJ1ZiwgZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGJ1ZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKCFpY29udi5za2lwRGVjb2RlV2FybmluZykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignSWNvbnYtbGl0ZSB3YXJuaW5nOiBkZWNvZGUoKS1pbmcgc3RyaW5ncyBpcyBkZXByZWNhdGVkLiBSZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vYXNodHVjaGtpbi9pY29udi1saXRlL3dpa2kvVXNlLUJ1ZmZlcnMtd2hlbi1kZWNvZGluZycpO1xuICAgICAgICAgICAgaWNvbnYuc2tpcERlY29kZVdhcm5pbmcgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmID0gbmV3IEJ1ZmZlcihcIlwiICsgKGJ1ZiB8fCBcIlwiKSwgXCJiaW5hcnlcIik7IC8vIEVuc3VyZSBidWZmZXIuXG4gICAgfVxuXG4gICAgdmFyIGRlY29kZXIgPSBpY29udi5nZXREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKTtcblxuICAgIHZhciByZXMgPSBkZWNvZGVyLndyaXRlKGJ1Zik7XG4gICAgdmFyIHRyYWlsID0gZGVjb2Rlci5lbmQoKTtcblxuICAgIHJldHVybiB0cmFpbCA/IChyZXMgKyB0cmFpbCkgOiByZXM7XG59XG5cbmljb252LmVuY29kaW5nRXhpc3RzID0gZnVuY3Rpb24gZW5jb2RpbmdFeGlzdHMoZW5jKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWNvbnYuZ2V0Q29kZWMoZW5jKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG4vLyBMZWdhY3kgYWxpYXNlcyB0byBjb252ZXJ0IGZ1bmN0aW9uc1xuaWNvbnYudG9FbmNvZGluZyA9IGljb252LmVuY29kZTtcbmljb252LmZyb21FbmNvZGluZyA9IGljb252LmRlY29kZTtcblxuLy8gU2VhcmNoIGZvciBhIGNvZGVjIGluIGljb252LmVuY29kaW5ncy4gQ2FjaGUgY29kZWMgZGF0YSBpbiBpY29udi5fY29kZWNEYXRhQ2FjaGUuXG5pY29udi5fY29kZWNEYXRhQ2FjaGUgPSB7fTtcbmljb252LmdldENvZGVjID0gZnVuY3Rpb24gZ2V0Q29kZWMoZW5jb2RpbmcpIHtcbiAgICBpZiAoIWljb252LmVuY29kaW5ncylcbiAgICAgICAgaWNvbnYuZW5jb2RpbmdzID0gcmVxdWlyZShcIi4uL2VuY29kaW5nc1wiKTsgLy8gTGF6eSBsb2FkIGFsbCBlbmNvZGluZyBkZWZpbml0aW9ucy5cbiAgICBcbiAgICAvLyBDYW5vbmljYWxpemUgZW5jb2RpbmcgbmFtZTogc3RyaXAgYWxsIG5vbi1hbHBoYW51bWVyaWMgY2hhcnMgYW5kIGFwcGVuZGVkIHllYXIuXG4gICAgdmFyIGVuYyA9ICgnJytlbmNvZGluZykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXjAtOWEtel18OlxcZHs0fSQvZywgXCJcIik7XG5cbiAgICAvLyBUcmF2ZXJzZSBpY29udi5lbmNvZGluZ3MgdG8gZmluZCBhY3R1YWwgY29kZWMuXG4gICAgdmFyIGNvZGVjT3B0aW9ucyA9IHt9O1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBjb2RlYyA9IGljb252Ll9jb2RlY0RhdGFDYWNoZVtlbmNdO1xuICAgICAgICBpZiAoY29kZWMpXG4gICAgICAgICAgICByZXR1cm4gY29kZWM7XG5cbiAgICAgICAgdmFyIGNvZGVjRGVmID0gaWNvbnYuZW5jb2RpbmdzW2VuY107XG5cbiAgICAgICAgc3dpdGNoICh0eXBlb2YgY29kZWNEZWYpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjogLy8gRGlyZWN0IGFsaWFzIHRvIG90aGVyIGVuY29kaW5nLlxuICAgICAgICAgICAgICAgIGVuYyA9IGNvZGVjRGVmO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIFwib2JqZWN0XCI6IC8vIEFsaWFzIHdpdGggb3B0aW9ucy4gQ2FuIGJlIGxheWVyZWQuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGNvZGVjRGVmKVxuICAgICAgICAgICAgICAgICAgICBjb2RlY09wdGlvbnNba2V5XSA9IGNvZGVjRGVmW2tleV07XG5cbiAgICAgICAgICAgICAgICBpZiAoIWNvZGVjT3B0aW9ucy5lbmNvZGluZ05hbWUpXG4gICAgICAgICAgICAgICAgICAgIGNvZGVjT3B0aW9ucy5lbmNvZGluZ05hbWUgPSBlbmM7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgZW5jID0gY29kZWNEZWYudHlwZTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6IC8vIENvZGVjIGl0c2VsZi5cbiAgICAgICAgICAgICAgICBpZiAoIWNvZGVjT3B0aW9ucy5lbmNvZGluZ05hbWUpXG4gICAgICAgICAgICAgICAgICAgIGNvZGVjT3B0aW9ucy5lbmNvZGluZ05hbWUgPSBlbmM7XG5cbiAgICAgICAgICAgICAgICAvLyBUaGUgY29kZWMgZnVuY3Rpb24gbXVzdCBsb2FkIGFsbCB0YWJsZXMgYW5kIHJldHVybiBvYmplY3Qgd2l0aCAuZW5jb2RlciBhbmQgLmRlY29kZXIgbWV0aG9kcy5cbiAgICAgICAgICAgICAgICAvLyBJdCdsbCBiZSBjYWxsZWQgb25seSBvbmNlIChmb3IgZWFjaCBkaWZmZXJlbnQgb3B0aW9ucyBvYmplY3QpLlxuICAgICAgICAgICAgICAgIGNvZGVjID0gbmV3IGNvZGVjRGVmKGNvZGVjT3B0aW9ucywgaWNvbnYpO1xuXG4gICAgICAgICAgICAgICAgaWNvbnYuX2NvZGVjRGF0YUNhY2hlW2NvZGVjT3B0aW9ucy5lbmNvZGluZ05hbWVdID0gY29kZWM7IC8vIFNhdmUgaXQgdG8gYmUgcmV1c2VkIGxhdGVyLlxuICAgICAgICAgICAgICAgIHJldHVybiBjb2RlYztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbmNvZGluZyBub3QgcmVjb2duaXplZDogJ1wiICsgZW5jb2RpbmcgKyBcIicgKHNlYXJjaGVkIGFzOiAnXCIrZW5jK1wiJylcIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmljb252LmdldEVuY29kZXIgPSBmdW5jdGlvbiBnZXRFbmNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgdmFyIGNvZGVjID0gaWNvbnYuZ2V0Q29kZWMoZW5jb2RpbmcpLFxuICAgICAgICBlbmNvZGVyID0gbmV3IGNvZGVjLmVuY29kZXIob3B0aW9ucywgY29kZWMpO1xuXG4gICAgaWYgKGNvZGVjLmJvbUF3YXJlICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5hZGRCT00pXG4gICAgICAgIGVuY29kZXIgPSBuZXcgYm9tSGFuZGxpbmcuUHJlcGVuZEJPTShlbmNvZGVyLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBlbmNvZGVyO1xufVxuXG5pY29udi5nZXREZWNvZGVyID0gZnVuY3Rpb24gZ2V0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucykge1xuICAgIHZhciBjb2RlYyA9IGljb252LmdldENvZGVjKGVuY29kaW5nKSxcbiAgICAgICAgZGVjb2RlciA9IG5ldyBjb2RlYy5kZWNvZGVyKG9wdGlvbnMsIGNvZGVjKTtcblxuICAgIGlmIChjb2RlYy5ib21Bd2FyZSAmJiAhKG9wdGlvbnMgJiYgb3B0aW9ucy5zdHJpcEJPTSA9PT0gZmFsc2UpKVxuICAgICAgICBkZWNvZGVyID0gbmV3IGJvbUhhbmRsaW5nLlN0cmlwQk9NKGRlY29kZXIsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGRlY29kZXI7XG59XG5cblxuLy8gTG9hZCBleHRlbnNpb25zIGluIE5vZGUuIEFsbCBvZiB0aGVtIGFyZSBvbWl0dGVkIGluIEJyb3dzZXJpZnkgYnVpbGQgdmlhICdicm93c2VyJyBmaWVsZCBpbiBwYWNrYWdlLmpzb24uXG52YXIgbm9kZVZlciA9IHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTtcbmlmIChub2RlVmVyKSB7XG5cbiAgICAvLyBMb2FkIHN0cmVhbWluZyBzdXBwb3J0IGluIE5vZGUgdjAuMTArXG4gICAgdmFyIG5vZGVWZXJBcnIgPSBub2RlVmVyLnNwbGl0KFwiLlwiKS5tYXAoTnVtYmVyKTtcbiAgICBpZiAobm9kZVZlckFyclswXSA+IDAgfHwgbm9kZVZlckFyclsxXSA+PSAxMCkge1xuICAgICAgICByZXF1aXJlKFwiLi9zdHJlYW1zXCIpKGljb252KTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIE5vZGUgcHJpbWl0aXZlIGV4dGVuc2lvbnMuXG4gICAgcmVxdWlyZShcIi4vZXh0ZW5kLW5vZGVcIikoaWNvbnYpO1xufVxuXG5pZiAoXCLEgFwiICE9IFwiXFx1MDEwMFwiKSB7XG4gICAgY29uc29sZS5lcnJvcihcImljb252LWxpdGUgd2FybmluZzogamF2YXNjcmlwdCBmaWxlcyB1c2UgZW5jb2RpbmcgZGlmZmVyZW50IGZyb20gdXRmLTguIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXNodHVjaGtpbi9pY29udi1saXRlL3dpa2kvSmF2YXNjcmlwdC1zb3VyY2UtZmlsZS1lbmNvZGluZ3MgZm9yIG1vcmUgaW5mby5cIik7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9saWIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDc5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInN0cmluZ19kZWNvZGVyXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwic3RyaW5nX2RlY29kZXJcIlxuLy8gbW9kdWxlIGlkID0gODBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBbW1wiYTE0MFwiLFwi7pOGXCIsNjJdLFtcImExODBcIixcIu6UhVwiLDMyXSxbXCJhMjQwXCIsXCLulKZcIiw2Ml0sW1wiYTI4MFwiLFwi7pWlXCIsMzJdLFtcImEyYWJcIixcIu6dplwiLDVdLFtcImEyZTNcIixcIuKCrO6drVwiXSxbXCJhMmVmXCIsXCLuna7una9cIl0sW1wiYTJmZFwiLFwi7p2w7p2xXCJdLFtcImEzNDBcIixcIu6WhlwiLDYyXSxbXCJhMzgwXCIsXCLul4VcIiwzMSxcIuOAgFwiXSxbXCJhNDQwXCIsXCLul6ZcIiw2Ml0sW1wiYTQ4MFwiLFwi7pilXCIsMzJdLFtcImE0ZjRcIixcIu6dslwiLDEwXSxbXCJhNTQwXCIsXCLumYZcIiw2Ml0sW1wiYTU4MFwiLFwi7pqFXCIsMzJdLFtcImE1ZjdcIixcIu6dvVwiLDddLFtcImE2NDBcIixcIu6aplwiLDYyXSxbXCJhNjgwXCIsXCLum6VcIiwzMl0sW1wiYTZiOVwiLFwi7p6FXCIsN10sW1wiYTZkOVwiLFwi7p6NXCIsNl0sW1wiYTZlY1wiLFwi7p6U7p6VXCJdLFtcImE2ZjNcIixcIu6ellwiXSxbXCJhNmY2XCIsXCLunpdcIiw4XSxbXCJhNzQwXCIsXCLunIZcIiw2Ml0sW1wiYTc4MFwiLFwi7p2FXCIsMzJdLFtcImE3YzJcIixcIu6eoFwiLDE0XSxbXCJhN2YyXCIsXCLunq9cIiwxMl0sW1wiYTg5NlwiLFwi7p68XCIsMTBdLFtcImE4YmNcIixcIu6fh1wiXSxbXCJhOGJmXCIsXCLHuVwiXSxbXCJhOGMxXCIsXCLun4nun4run4vun4xcIl0sW1wiYThlYVwiLFwi7p+NXCIsMjBdLFtcImE5NThcIixcIu6folwiXSxbXCJhOTViXCIsXCLun6NcIl0sW1wiYTk1ZFwiLFwi7p+k7p+l7p+mXCJdLFtcImE5ODlcIixcIuOAvuK/sFwiLDExXSxbXCJhOTk3XCIsXCLun7RcIiwxMl0sW1wiYTlmMFwiLFwi7qCBXCIsMTRdLFtcImFhYTFcIixcIu6AgFwiLDkzXSxbXCJhYmExXCIsXCLugZ5cIiw5M10sW1wiYWNhMVwiLFwi7oK8XCIsOTNdLFtcImFkYTFcIixcIu6EmlwiLDkzXSxbXCJhZWExXCIsXCLuhbhcIiw5M10sW1wiYWZhMVwiLFwi7oeWXCIsOTNdLFtcImQ3ZmFcIixcIu6gkFwiLDRdLFtcImY4YTFcIixcIu6ItFwiLDkzXSxbXCJmOWExXCIsXCLuipJcIiw5M10sW1wiZmFhMVwiLFwi7ouwXCIsOTNdLFtcImZiYTFcIixcIu6NjlwiLDkzXSxbXCJmY2ExXCIsXCLujqxcIiw5M10sW1wiZmRhMVwiLFwi7pCKXCIsOTNdLFtcImZlNTBcIixcIuK6ge6glu6gl+6gmOK6hOORs+ORh+K6iOK6i+6gnuOWnuOYmuOYjuK6jOK6l+OlruOkmO6gpuOnj+Onn+Ops+OnkO6gq+6grOOtjuOxruOzoOK6p+6gse6gsuK6quSBluSFn+K6ruSMt+K6s+K6tuK6t+6gu+SOseSOrOK6u+SPneSTluSZoeSZjO6hg1wiXSxbXCJmZTgwXCIsXCLknKPknKnknbzkno3iu4rkpYfkpbrkpb3kpoLkpoPkpoXkpobkpp/kppvkprfkprbuoZTuoZXksqPksp/ksqDksqHksbfksqLktJNcIiw2LFwi5Lau7qGk7pGoXCIsOTNdXVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvZ2JrLWFkZGVkLmpzb25cbi8vIG1vZHVsZSBpZCA9IDgxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gW1tcIjBcIixcIlxcdTAwMDBcIiwxMjddLFtcImExNDBcIixcIuOAgO+8jOOAgeOAgu+8juKAp++8m++8mu+8n++8ge+4sOKApuKApe+5kO+5ke+5ksK377mU77mV77mW77mX772c4oCT77ix4oCU77iz4pW077i077mP77yI77yJ77i177i2772b772d77i377i444CU44CV77i577i644CQ44CR77i777i844CK44CL77i977i+44CI44CJ77i/77mA44CM44CN77mB77mC44CO44CP77mD77mE77mZ77maXCJdLFtcImExYTFcIixcIu+5m++5nO+5ne+5nuKAmOKAmeKAnOKAneOAneOAnuKAteKAsu+8g++8hu+8iuKAu8Kn44CD4peL4peP4paz4pay4peO4piG4piF4peH4peG4pah4pag4pa94pa844qj4oSFwq/vv6PvvL/Lje+5ie+5iu+5je+5ju+5i++5jO+5n++5oO+5oe+8i++8jcOXw7fCseKImu+8nO+8nu+8neKJpuKJp+KJoOKInuKJkuKJoe+5olwiLDQsXCLvvZ7iiKniiKriiqXiiKDiiJ/iir/jj5Ljj5HiiKviiK7iiLXiiLTimYDimYLiipXiipnihpHihpPihpDihpLihpbihpfihpnihpjiiKXiiKPvvI9cIl0sW1wiYTI0MFwiLFwi77y84oiV77mo77yE77+l44CS77+g77+h77yF77yg4oSD4oSJ77mp77mq77mr44+V446c446d446e44+O446h446O446P44+EwrDlhZnlhZvlhZ7lhZ3lhaHlhaPll6fnk6nns47iloFcIiw3LFwi4paP4paO4paN4paM4paL4paK4paJ4pS84pS04pSs4pSk4pSc4paU4pSA4pSC4paV4pSM4pSQ4pSU4pSY4pWtXCJdLFtcImEyYTFcIixcIuKVruKVsOKVr+KVkOKVnuKVquKVoeKXouKXo+KXpeKXpOKVseKVsuKVs++8kFwiLDksXCLihaBcIiw5LFwi44ChXCIsOCxcIuWNgeWNhOWNhe+8oVwiLDI1LFwi772BXCIsMjFdLFtcImEzNDBcIixcIu+9l++9mO+9me+9ms6RXCIsMTYsXCLOo1wiLDYsXCLOsVwiLDE2LFwiz4NcIiw2LFwi44SFXCIsMTBdLFtcImEzYTFcIixcIuOEkFwiLDI1LFwiy5nLicuKy4fLi1wiXSxbXCJhM2UxXCIsXCLigqxcIl0sW1wiYTQ0MFwiLFwi5LiA5LmZ5LiB5LiD5LmD5Lmd5LqG5LqM5Lq65YS/5YWl5YWr5Yeg5YiA5YiB5Yqb5YyV5Y2B5Y2c5Y+I5LiJ5LiL5LiI5LiK5Lir5Li45Yeh5LmF5LmI5Lmf5Lme5LqO5Lqh5YWA5YiD5Yu65Y2D5Y+J5Y+j5Zyf5aOr5aSV5aSn5aWz5a2Q5a2R5a2T5a+45bCP5bCi5bC45bGx5bed5bel5bex5bey5bez5be+5bmy5bu+5byL5byT5omNXCJdLFtcImE0YTFcIixcIuS4keS4kOS4jeS4reS4sOS4ueS5i+WwueS6iOS6keS6leS6kuS6lOS6ouS7geS7gOS7g+S7huS7h+S7jeS7iuS7i+S7hOWFg+WFgeWFp+WFreWFruWFrOWGl+WHtuWIhuWIh+WIiOWLu+WLvuWLv+WMluWMueWNiOWNh+WNheWNnuWOhOWPi+WPiuWPjeWjrOWkqeWkq+WkquWkreWtlOWwkeWwpOWwuuWxr+W3tOW5u+W7v+W8lOW8leW/g+aIiOaItuaJi+aJjuaUr+aWh+aWl+aWpOaWueaXpeabsOaciOacqOasoOatouatueavi+avlOavm+awj+awtOeBq+eIqueItueIu+eJh+eJmeeJm+eKrOeOi+S4mVwiXSxbXCJhNTQwXCIsXCLkuJbkuJXkuJTkuJjkuLvkuY3kuY/kuY7ku6Xku5jku5Tku5Xku5bku5fku6Pku6Tku5nku57lhYXlhYTlhonlhorlhqzlh7nlh7rlh7jliIrliqDlip/ljIXljIbljJfljJ3ku5/ljYrljYnljaHljaDlja/lja7ljrvlj6/lj6Tlj7Plj6zlj67lj6nlj6jlj7zlj7jlj7Xlj6vlj6blj6rlj7Llj7Hlj7Dlj6Xlj63lj7vlm5vlm5rlpJZcIl0sW1wiYTVhMVwiLFwi5aSu5aSx5aW05aW25a2V5a6D5bC85beo5ben5bem5biC5biD5bmz5bm85byB5byY5byX5b+F5oiK5omT5omU5omS5omR5pal5pem5pyu5pys5pyq5pyr5pyt5q2j5q+N5rCR5rCQ5rC45rGB5rGA5rC+54qv546E546J55Oc55Om55SY55Sf55So55Sp55Sw55Sx55Sy55Sz55aL55m955qu55q/55uu55+b55+i55+z56S656a+56m056uL5Lie5Lif5LmS5LmT5Lmp5LqZ5Lqk5Lqm5Lql5Lu/5LyJ5LyZ5LyK5LyV5LyN5LyQ5LyR5LyP5Luy5Lu25Lu75Luw5Luz5Lu95LyB5LyL5YWJ5YWH5YWG5YWI5YWoXCJdLFtcImE2NDBcIixcIuWFseWGjeWGsOWIl+WIkeWIkuWIjuWIluWKo+WMiOWMoeWMoOWNsOWNseWQieWQj+WQjOWQiuWQkOWQgeWQi+WQhOWQkeWQjeWQiOWQg+WQjuWQhuWQkuWboOWbnuWbneWcs+WcsOWcqOWcreWcrOWcr+WcqeWkmeWkmuWkt+WkuOWmhOWluOWmg+WlveWlueWmguWmgeWtl+WtmOWuh+WuiOWuheWuieWvuuWwluWxueW3nuW4huW5tuW5tFwiXSxbXCJhNmExXCIsXCLlvI/lvJvlv5nlv5bmiI7miIzmiI3miJDmiaPmiZvmiZjmlLbml6nml6jml6zml63mm7Lmm7PmnInmnL3mnLTmnLHmnLXmrKHmraTmrbvmsJbmsZ3msZfmsZnmsZ/msaDmsZDmsZXmsaHmsZvmsY3msY7ngbDniZ/niZ3nmb7nq7nnsbPns7jnvLbnvornvr3ogIHogIPogIzogJLogLPogb/ogonogovogozoh6Poh6roh7Poh7zoiIzoiJvoiJ/oia7oibLoib7omavooYDooYzooaPopb/pmKHkuLLkuqjkvY3kvY/kvYfkvZfkvZ7kvLTkvZvkvZXkvLDkvZDkvZHkvL3kvLrkvLjkvYPkvZTkvLzkvYbkvaNcIl0sW1wiYTc0MFwiLFwi5L2c5L2g5Lyv5L2O5Ly25L2Z5L2d5L2I5L2a5YWM5YWL5YWN5YW15Ya25Ya35Yil5Yik5Yip5Yiq5Yio5Yqr5Yqp5Yqq5Yqs5Yyj5Y2z5Y215ZCd5ZCt5ZCe5ZC+5ZCm5ZGO5ZCn5ZGG5ZGD5ZCz5ZGI5ZGC5ZCb5ZCp5ZGK5ZC55ZC75ZC45ZCu5ZC15ZC25ZCg5ZC85ZGA5ZCx5ZCr5ZCf5ZCs5Zuq5Zuw5Zuk5Zur5Z2K5Z2R5Z2A5Z2NXCJdLFtcImE3YTFcIixcIuWdh+WdjuWcvuWdkOWdj+Wcu+Wjr+WkvuWmneWmkuWmqOWmnuWmo+WmmeWmluWmjeWmpOWmk+WmiuWmpeWtneWtnOWtmuWtm+WujOWui+Wuj+WwrOWxgOWxgeWwv+WwvuWykOWykeWylOWyjOW3q+W4jOW6j+W6h+W6iuW7t+W8hOW8n+W9pOW9ouW9t+W9ueW/mOW/jOW/l+W/jeW/seW/q+W/uOW/quaIkuaIkeaKhOaKl+aKluaKgOaJtuaKieaJreaKiuaJvOaJvuaJueaJs+aKkuaJr+aKmOaJruaKleaKk+aKkeaKhuaUueaUu+aUuOaXseabtOadn+adjuadj+adkOadkeadnOadluadnuadieadhuadoFwiXSxbXCJhODQwXCIsXCLmnZPmnZfmraXmr4/msYLmsZ7mspnmsoHmsojmsonmsoXmspvmsarmsbrmspDmsbDmsozmsajmspbmspLmsb3msoPmsbLmsb7msbTmsobmsbbmso3mspTmspjmsoLngbbngbzngb3ngbjniaLniaHniaDni4Tni4LnjpbnlKznlKvnlLfnlLjnmoLnm6/nn6Pnp4Hnp4Dnpr/nqbbns7vnvZXogpbogpPogp3ogpjogpvogprogrLoia/oipJcIl0sW1wiYThhMVwiLFwi6IqL6IqN6KaL6KeS6KiA6LC36LGG6LGV6LKd6LWk6LWw6Laz6Lqr6LuK6L6b6L6w6L+C6L+G6L+F6L+E5beh6YKR6YKi6YKq6YKm6YKj6YWJ6YeG6YeM6Ziy6Ziu6Zix6Ziq6Zis5Lim5LmW5Lmz5LqL5Lqb5Lqe5Lqr5Lqs5L2v5L6d5L6N5L2z5L2/5L2s5L6b5L6L5L6G5L6D5L2w5L215L6I5L2p5L275L6W5L2+5L6P5L6R5L265YWU5YWS5YWV5YWp5YW35YW25YW45Ya95Ye95Yi75Yi45Yi35Yi65Yiw5Yiu5Yi25YmB5Yq+5Yq75Y2S5Y2U5Y2T5Y2R5Y2m5Y235Y245Y255Y+W5Y+U5Y+X5ZGz5ZG1XCJdLFtcImE5NDBcIixcIuWSluWRuOWSleWSgOWRu+WRt+WShOWSkuWShuWRvOWSkOWRseWRtuWSjOWSmuWRouWRqOWSi+WRveWSjuWbuuWeg+Wdt+WdquWdqeWdoeWdpuWdpOWdvOWknOWlieWlh+WliOWlhOWllOWmvuWmu+WnlOWmueWmruWnkeWnhuWnkOWnjeWni+Wnk+WniuWmr+Wms+WnkuWnheWtn+WtpOWto+Wul+WumuWumOWunOWumeWum+WwmuWxiOWxhVwiXSxbXCJhOWExXCIsXCLlsYblsrflsqHlsrjlsqnlsqvlsrHlsrPluJjluJrluJbluJXluJvluJHlubjluprlupflupzlupXlupblu7blvKblvKflvKnlvoDlvoHlvb/lvbzlv53lv6Dlv73lv7Xlv7/mgI/mgJTmgK/mgLXmgJbmgKrmgJXmgKHmgKfmgKnmgKvmgJvmiJbmiJXmiL/miL7miYDmib/mi4nmi4zmi4Tmir/mi4Lmirnmi5Lmi5vmiqvmi5Pmi5Tmi4vmi4jmiqjmir3mirzmi5Dmi5nmi4fmi43mirXmi5rmirHmi5jmi5bmi5fmi4bmiqzmi47mlL7mlqfmlrzml7rmmJTmmJPmmIzmmIbmmILmmI7mmIDmmI/mmJXmmIpcIl0sW1wiYWE0MFwiLFwi5piH5pyN5pyL5p2t5p6L5p6V5p2x5p6c5p2z5p235p6H5p6d5p6X5p2v5p2w5p2/5p6J5p2+5p6Q5p215p6a5p6T5p285p2q5p2y5qyj5q2m5q2n5q2/5rCT5rCb5rOj5rOo5rOz5rKx5rOM5rOl5rKz5rK95rK+5rK85rOi5rKr5rOV5rOT5rK45rOE5rK55rOB5rKu5rOX5rOF5rOx5rK/5rK75rOh5rOb5rOK5rKs5rOv5rOc5rOW5rOgXCJdLFtcImFhYTFcIixcIueCleeCjueCkueCiueCmeeIrOeIreeIuOeJiOeJp+eJqeeLgOeLjueLmeeLl+eLkOeOqeeOqOeOn+eOq+eOpeeUveeWneeWmeeWmueahOebguebsuebtOefpeefveekvuelgOelgeenieeniOepuuepueeruuezvue9lOe+jOe+i+iAheiCuuiCpeiCouiCseiCoeiCq+iCqeiCtOiCquiCr+iHpeiHvuiIjeiKs+iKneiKmeiKreiKveiKn+iKueiKseiKrOiKpeiKr+iKuOiKo+iKsOiKvuiKt+iZjuiZseWIneihqOi7i+i/jui/lOi/kemCtemCuOmCsemCtumHh+mHkemVt+mWgOmYnOmZgOmYv+mYu+mZhFwiXSxbXCJhYjQwXCIsXCLpmYLpmrnpm6jpnZLpnZ7kup/kuq3kuq7kv6HkvrXkvq/kvr/kv6Dkv5Hkv4/kv53kv4Pkvrbkv5jkv5/kv4rkv5fkvq7kv5Dkv4Tkv4Lkv5rkv47kv57kvrflhZflhpLlhpHlhqDliY7liYPliYrliY3liYzliYvliYfli4fli4nli4Pli4HljI3ljZfljbvljprlj5vlkqzlk4Dlkqjlk47lk4nlkrjlkqblkrPlk4flk4Llkr3lkqrlk4FcIl0sW1wiYWJhMVwiLFwi5ZOE5ZOI5ZKv5ZKr5ZKx5ZK75ZKp5ZKn5ZK/5Zu/5Z6C5Z6L5Z6g5Z6j5Z6i5Z+O5Z6u5Z6T5aWV5aWR5aWP5aWO5aWQ5aec5aeY5ae/5aej5aeo5aiD5ael5aeq5aea5aem5aiB5ae75a2p5a6j5a6m5a6k5a6i5a6l5bCB5bGO5bGP5bGN5bGL5bOZ5bOS5be35bid5bil5bif5bm95bqg5bqm5bu65byI5byt5b2l5b6I5b6F5b6K5b6L5b6H5b6M5b6J5oCS5oCd5oCg5oCl5oCO5oCo5oGN5oGw5oGo5oGi5oGG5oGD5oGs5oGr5oGq5oGk5omB5ouc5oyW5oyJ5ou85out5oyB5ouu5ou95oyH5oux5ou3XCJdLFtcImFjNDBcIixcIuaLr+aLrOaLvuaLtOaMkeaMguaUv+aVheaWq+aWveaXouaYpeaYreaYoOaYp+aYr+aYn+aYqOaYseaYpOabt+afv+afk+afseaflOafkOafrOaetuaer+afteafqeafr+afhOafkeaetOafmuafpeaeuOafj+afnuafs+aesOafmeafouafneafkuatquaug+auhuauteavkuavl+awn+aziea0i+a0sua0qua1gea0pea0jOa0sea0nua0l1wiXSxbXCJhY2ExXCIsXCLmtLvmtL3mtL7mtLbmtJvms7XmtLnmtKfmtLjmtKnmtK7mtLXmtI7mtKvngqvngrrngrPngqzngq/ngq3ngrjngq7ngqTniLDnibLnia/nibTni6nni6Dni6Hnjrfnj4rnjrvnjrLnj43nj4DnjrPnlJrnlK3nlY/nlYznlY7nlYvnlqvnlqTnlqXnlqLnlqPnmbjnmobnmofnmojnm4jnm4bnm4Pnm4XnnIHnm7nnm7jnnInnnIvnm77nm7znnIfnn5znoILnoJTnoIznoI3npYbnpYnnpYjnpYfnprnnprrnp5Hnp5Lnp4vnqb/nqoHnq7/nq73nsb3ntILntIXntIDntInntIfntITntIbnvLjnvo7nvr/ogIRcIl0sW1wiYWQ0MFwiLFwi6ICQ6ICN6ICR6IC26IOW6IOl6IOa6IOD6IOE6IOM6IOh6IOb6IOO6IOe6IOk6IOd6Ie06Iii6Iun6IyD6IyF6Iuj6Iub6Ium6IyE6Iul6IyC6IyJ6IuS6IuX6Iux6IyB6Iuc6IuU6IuR6Iue6IuT6Iuf6Iuv6IyG6JmQ6Jm56Jm76Jm66KGN6KGr6KaB6KeU6KiI6KiC6KiD6LKe6LKg6LW06LWz6La06LuN6LuM6L+w6L+m6L+i6L+q6L+lXCJdLFtcImFkYTFcIixcIui/rei/q+i/pOi/qOmDiumDjumDgemDg+mFi+mFiumHjemWgumZkOmZi+mZjOmZjemdoumdqemfi+mfremfs+mggemiqOmjm+mjn+mmlummmeS5mOS6s+WAjOWAjeWAo+S/r+WApuWApeS/uOWAqeWAluWAhuWAvOWAn+WAmuWAkuWAkeS/uuWAgOWAlOWAqOS/seWAoeWAi+WAmeWAmOS/s+S/ruWAreWAquS/vuWAq+WAieWFvOWGpOWGpeWGouWHjeWHjOWHhuWHi+WJluWJnOWJlOWJm+WJneWMquWNv+WOn+WOneWPn+WTqOWUkOWUgeWUt+WTvOWTpeWTsuWUhuWTuuWUlOWTqeWTreWToeWUieWTruWTqlwiXSxbXCJhZTQwXCIsXCLlk6bllKfllIflk73llI/lnIPlnITln4Lln5Tln4vln4PloInlpI/lpZflpZjlpZrlqJHlqJjlqJzlqJ/lqJvlqJPlp6zlqKDlqKPlqKnlqKXlqIzlqInlravlsZjlrrDlrrPlrrblrrTlrq7lrrXlrrnlrrjlsITlsZHlsZXlsZDls63ls73ls7vls6rls6jls7Dls7bltIHls7Tlt67luK3luKvluqvluq3luqflvLHlvpLlvpHlvpDmgZlcIl0sW1wiYWVhMVwiLFwi5oGj5oGl5oGQ5oGV5oGt5oGp5oGv5oKE5oKf5oKa5oKN5oKU5oKM5oKF5oKW5omH5ouz5oyI5ou/5o2O5oy+5oyv5o2V5o2C5o2G5o2P5o2J5oy65o2Q5oy95oyq5oyr5oyo5o2N5o2M5pWI5pWJ5paZ5peB5peF5pmC5pmJ5pmP5pmD5pmS5pmM5pmF5pmB5pu45pyU5pyV5pyX5qCh5qC45qGI5qGG5qGT5qC55qGC5qGU5qCp5qKz5qCX5qGM5qGR5qC95p+05qGQ5qGA5qC85qGD5qCq5qGF5qCT5qCY5qGB5q6K5q6J5q635rCj5rCn5rCo5rCm5rCk5rOw5rWq5raV5raI5raH5rWm5rW45rW35rWZ5raTXCJdLFtcImFmNDBcIixcIua1rOa2iea1rua1mua1tOa1qea2jOa2iua1uea2hea1pea2lOeDiueDmOeDpOeDmeeDiOeDj+eIueeJueeLvOeLueeLveeLuOeLt+eOhuePreeQieePruePoOePquePnueVlOeVneeVnOeVmueVmeeWvueXheeXh+eWsueWs+eWveeWvOeWueeXgueWuOeai+easOebiuebjeebjuecqeecn+ecoOecqOefqeegsOegp+eguOegneegtOegt1wiXSxbXCJhZmExXCIsXCLnoKXnoK3noKDnoJ/noLLnpZXnpZDnpaDnpZ/npZbnpZ7npZ3npZfnpZrnp6Tnp6Pnp6fnp5/np6bnp6nnp5jnqoTnqojnq5nnrIbnrJHnsonntKHntJfntIvntIrntKDntKLntJTntJDntJXntJrntJzntI3ntJnntJvnvLrnvZ/nvpTnv4Xnv4HogIbogJjogJXogJnogJfogL3ogL/og7HohILog7DohIXog63og7TohIbog7jog7PohIjog73ohIrog7zog6/oh63oh6zoiIDoiJDoiKroiKvoiKjoiKzoirvojKvojZLojZTojYrojLjojZDojYnojLXojLTojY/ojLLojLnojLbojJfojYDojLHojKjojYNcIl0sW1wiYjA0MFwiLFwi6JmU6JqK6Jqq6JqT6Jqk6Jqp6JqM6Jqj6Jqc6KGw6KG36KKB6KKC6KG96KG56KiY6KiQ6KiO6KiM6KiV6KiK6KiX6KiT6KiW6KiP6KiR6LGI6LG66LG56LKh6LKi6LW36Lqs6LuS6LuU6LuP6L6x6YCB6YCG6L+36YCA6L+66L+06YCD6L+96YCF6L+46YKV6YOh6YOd6YOi6YWS6YWN6YWM6YeY6Yed6YeX6Yec6YeZ6ZaD6Zmi6Zmj6ZmhXCJdLFtcImIwYTFcIixcIumZm+mZnemZpOmZmOmZnumau+mjoummrOmqqOmrmOmspemssumsvOS5vuWBuuWBveWBnOWBh+WBg+WBjOWBmuWBieWBpeWBtuWBjuWBleWBteWBtOWBt+WBj+WAj+WBr+WBreWFnOWGleWHsOWJquWJr+WLkuWLmeWLmOWLleWMkOWMj+WMmeWMv+WNgOWMvuWPg+abvOWVhuWVquWVpuWVhOWVnuWVoeWVg+WViuWUseWVluWVj+WVleWUr+WVpOWUuOWUruWVnOWUrOWVo+WUs+WVgeWVl+WciOWci+WcieWfn+WgheWgiuWghuWfoOWfpOWfuuWgguWgteWft+WfueWkoOWlouWotuWpgeWpieWppuWpquWpgFwiXSxbXCJiMTQwXCIsXCLlqLzlqaLlqZrlqYblqYrlrbDlr4flr4Xlr4Tlr4Llrr/lr4blsInlsIjlsIflsaDlsZzlsZ3ltIfltIbltI7ltJvltJbltKLltJHltKnltJTltJnltKTltKfltJflt6LluLjluLbluLPluLflurflurjlurblurXlur7lvLXlvLflvZflvazlvanlvavlvpflvpnlvp7lvpjlvqHlvqDlvpzmgb/mgqPmgonmgqDmgqjmg4vmgrTmg6bmgr1cIl0sW1wiYjFhMVwiLFwi5oOF5oK75oK15oOc5oK85oOY5oOV5oOG5oOf5oK45oOa5oOH5oia5oib5omI5o6g5o6n5o2y5o6W5o6i5o6l5o235o2n5o6Y5o6q5o2x5o6p5o6J5o6D5o6b5o2r5o6o5o6E5o6I5o6Z5o6h5o6s5o6S5o6P5o6A5o275o2p5o2o5o265pWd5pWW5pWR5pWZ5pWX5ZWf5pWP5pWY5pWV5pWU5pac5pab5pas5peP5peL5peM5peO5pmd5pma5pmk5pmo5pmm5pme5pu55YuX5pyb5qKB5qKv5qKi5qKT5qK15qG/5qG25qKx5qKn5qKX5qKw5qKD5qOE5qKt5qKG5qKF5qKU5qKd5qKo5qKf5qKh5qKC5qyy5q66XCJdLFtcImIyNDBcIixcIuavq+avrOawq+a2jua2vOa3s+a3mea2sua3oea3jOa3pOa3u+a3uua4hea3h+a3i+a2r+a3kea2rua3nua3uea2uOa3t+a3tea3hea3kua4mua2tea3mua3q+a3mOa3qua3sea3rua3qOa3hua3hOa2qua3rOa2v+a3pueDueeEieeEiueDveeDr+eIveeJveeKgeeMnOeMm+eMlueMk+eMmeeOh+eQheeQiueQg+eQhuePvueQjeeToOeTtlwiXSxbXCJiMmExXCIsXCLnk7fnlJznlKLnlaXnlabnlaLnlbDnlo/nl5Tnl5XnlrXnl4rnl43nmo7nm5Tnm5Lnm5vnnLfnnL7nnLznnLbnnLjnnLrnoavnoYPnoY7npaXnpajnpa3np7vnqpLnqpXnrKDnrKjnrJvnrKznrKbnrJnnrJ7nrK7nspLnspfnspXntYbntYPntbHntK7ntLnntLzntYDntLDntLPntYTntK/ntYLntLLntLHnvL3nvp7nvprnv4znv47nv5LogJzogYrogYbohK/ohJbohKPohKvohKnohLDohKToiILoiLXoiLfoiLboiLnojo7ojp7ojpjojbjojqLojpbojr3ojqvojpLojorojpPojonojqDojbfojbvojbxcIl0sW1wiYjM0MFwiLFwi6I6G6I6n6JmV5b2q6JuH6JuA6Jq26JuE6Jq16JuG6JuL6Jqx6Jqv6JuJ6KGT6KKe6KKI6KKr6KKS6KKW6KKN6KKL6KaT6KaP6Kiq6Kid6Kij6Kil6Kix6Kit6Kif6Kib6Kii6LGJ6LGa6LKp6LKs6LKr6LKo6LKq6LKn6LWn6LWm6La+6La66Lub6Luf6YCZ6YCN6YCa6YCX6YCj6YCf6YCd6YCQ6YCV6YCe6YCg6YCP6YCi6YCW6YCb6YCUXCJdLFtcImIzYTFcIixcIumDqOmDremDvemFl+mHjumHtemHpumHo+mHp+mHremHqemWiemZqumZtemZs+mZuOmZsOmZtOmZtumZt+mZrOmbgOmbqumbqeeroOern+mggumgg+mtmumzpem5tem5v+m6pem6u+WCouWCjeWCheWCmeWCkeWCgOWCluWCmOWCmuacgOWHseWJsuWJtOWJteWJqeWLnuWLneWLm+WNmuWOpeWVu+WWgOWWp+WVvOWWiuWWneWWmOWWguWWnOWWquWWlOWWh+WWi+WWg+WWs+WWruWWn+WUvuWWsuWWmuWWu+WWrOWWseWVvuWWieWWq+WWmeWcjeWgr+WgquWgtOWgpOWgsOWgseWgoeWgneWgoOWjueWjuuWloFwiXSxbXCJiNDQwXCIsXCLlqbflqprlqb/lqpLlqpvlqqflrbPlrbHlr5Llr4zlr5Plr5DlsIrlsIvlsLHltYzltZDltLTltYflt73luYXluL3luYDluYPlub7lu4rlu4Hlu4Llu4TlvLzlva3lvqnlvqrlvqjmg5Hmg6HmgrLmgrbmg6DmhJzmhKPmg7rmhJXmg7Dmg7vmg7Tmhajmg7HmhI7mg7bmhInmhIDmhJLmiJ/miYnmjqPmjozmj4/mj4Dmj6nmj4nmj4bmj41cIl0sW1wiYjRhMVwiLFwi5o+S5o+j5o+Q5o+h5o+W5o+t5o+u5o225o+05o+q5o+b5pGS5o+a5o+55pWe5pWm5pWi5pWj5paR5paQ5pav5pmu5pmw5pm05pm25pmv5pqR5pm65pm+5pm35pu+5pu/5pyf5pyd5qO65qOV5qOg5qOY5qOX5qSF5qOf5qO15qOu5qOn5qO55qOS5qOy5qOj5qOL5qON5qSN5qSS5qSO5qOJ5qOa5qWu5qO75qy+5qy65qy95q6Y5q6W5q685q+v5rCu5rCv5rCs5riv5ri45rmU5rih5riy5rmn5rmK5rig5ril5rij5rib5rmb5rmY5rik5rmW5rmu5rit5rim5rmv5ri05rmN5ri65ris5rmD5rid5ri+5ruLXCJdLFtcImI1NDBcIixcIua6iea4mea5jua5o+a5hOa5sua5qea5n+eEmeeEmueEpueEsOeEoeeEtueFrueEnOeJjOeKhOeKgOeMtueMpeeMtOeMqeeQuueQqueQs+eQoueQpeeQteeQtueQtOeQr+eQm+eQpueQqOeUpeeUpueVq+eVqueXoueXm+eXo+eXmeeXmOeXnueXoOeZu+eZvOealueak+eatOebnOedj+efreehneehrOehr+eojeeoiOeoi+eoheeogOeqmFwiXSxbXCJiNWExXCIsXCLnqpfnqpbnq6Xnq6PnrYnnrZbnrYbnrZDnrZLnrZTnrY3nrYvnrY/nrZHnsp/nsqXntZ7ntZDntajntZXntKvnta7ntbLntaHntabntaLntbDntbPlloTnv5Tnv5XogIvogZLogoXohZXohZTohYvohZHohY7ohLnohYbohL7ohYzohZPohbToiJLoiJzoj6nokIPoj7jokI3oj6Doj4XokIvoj4Hoj6/oj7Hoj7TokZfokIroj7DokIzoj4zoj73oj7Loj4rokLjokI7okIToj5zokIfoj5Toj5/omZvom5/om5nom63om5Tom5vom6Tom5Dom57ooZfoo4Hoo4LoorHopoPoppboqLvoqaDoqZXoqZ7oqLzoqYFcIl0sW1wiYjY0MFwiLFwi6KmU6Kmb6KmQ6KmG6Ki06Ki66Ki26KmW6LGh6LKC6LKv6LK86LKz6LK96LOB6LK76LOA6LK06LK36LK26LK/6LK46LaK6LaF6LaB6LeO6Led6LeL6Lea6LeR6LeM6Leb6LeG6Lu76Lu46Lu86L6c6YCu6YC16YCx6YC46YCy6YC26YSC6YO16YSJ6YO+6YWj6YWl6YeP6YiU6YiV6Yij6YiJ6Yie6YiN6YiQ6YiH6YiR6ZaU6ZaP6ZaL6ZaRXCJdLFtcImI2YTFcIixcIumWk+mWkumWjumaiumajumai+mZvemahemahumajemZsumahOmbgembhembhOmbhumbh+mbr+mbsumfjOmghemghumgiOmjp+mjqumjr+mjqemjsumjremmrummrem7g+m7jem7keS6guWCreWCteWCsuWCs+WDheWCvuWCrOWCt+WCu+WCr+WDh+WJv+WJt+WJveWLn+WLpuWLpOWLouWLo+WMr+WXn+WXqOWXk+WXpuWXjuWXnOWXh+WXkeWXo+WXpOWXr+WXmuWXoeWXheWXhuWXpeWXieWckuWck+WhnuWhkeWhmOWhl+WhmuWhlOWhq+WhjOWhreWhiuWhouWhkuWhi+Wlp+WrgeWrieWrjOWqvuWqveWqvFwiXSxbXCJiNzQwXCIsXCLlqrPlq4LlqrLltanlta/luYzlubnlu4nlu4jlvJLlvZnlvqzlvq7mhJrmhI/mhYjmhJ/mg7PmhJvmg7nmhIHmhIjmhY7mhYzmhYTmhY3mhL7mhLTmhKfmhI3mhIbmhLfmiKHmiKLmkJPmkL7mkJ7mkKrmkK3mkL3mkKzmkI/mkJzmkJTmkI3mkLbmkJbmkJfmkIbmlazmlp/mlrDmmpfmmonmmofmmojmmpbmmoTmmpjmmo3mnIPmppTmpa1cIl0sW1wiYjdhMVwiLFwi5qWa5qW35qWg5qWU5qW15qSw5qaC5qWK5qWo5qWr5qWe5qWT5qW55qaG5qWd5qWj5qWb5q2H5q2y5q+A5q6/5q+T5q+95rqi5rqv5ruT5rq25ruC5rqQ5rqd5ruH5ruF5rql5rqY5rq85rq65rqr5ruR5rqW5rqc5ruE5ruU5rqq5rqn5rq054WO54WZ54Wp54Wk54WJ54Wn54Wc54Ws54Wm54WM54Wl54We54WG54Wo54WW54i654mS54y3542F54y/54y+55Gv55Ga55GV55Gf55Ge55GB55C/55GZ55Gb55Gc55W255W455iA55ew55iB55ey55ex55e655e/55e055ez55ue55uf552b552r552m552e552jXCJdLFtcImI4NDBcIixcIuedueedquedrOednOedpeedqOedouefrueijueisOeil+eimOeijOeiieehvOeikeeik+ehv+eluuelv+emgeiQrOemveeonOeomueooOeolOeon+eonueqn+eqoOett+evgOetoOetruetp+eyseeys+eytee2k+e1uee2kee2gee2j+e1m+e9rue9qee9que9sue+qee+qOe+pOiBluiBmOiChuiChOiFseiFsOiFuOiFpeiFruiFs+iFq1wiXSxbXCJiOGExXCIsXCLohbnohbrohaboiIXoiYfokoLokbfokL3okLHokbXokabokavokYnokazokZvokLzokLXokaHokaPokanoka3okYbomZ7omZzomZ/om7nonJPonIjonIfonIDom77om7vonILonIPonIbonIrooZnoo5/oo5Too5noo5zoo5joo53oo6Hoo4roo5Xoo5Loppzop6PoqavoqbLoqbPoqaboqanoqbDoqofoqbzoqaPoqqDoqbHoqoXoqa3oqaLoqa7oqazoqbnoqbvoqL7oqajosaLosorosonos4ros4fos4jos4TosrLos4Pos4Los4Xot6Hot5/ot6jot6/ot7Pot7rot6rot6Tot6bourLovIPovInou77ovIpcIl0sW1wiYjk0MFwiLFwi6L6f6L6y6YGL6YGK6YGT6YGC6YGU6YC86YGV6YGQ6YGH6YGP6YGO6YGN6YGR6YC+6YGB6YSS6YSX6YWs6YWq6YWp6YeJ6Yi36YmX6Yi46Yi96YmA6Yi+6Ymb6YmL6Ymk6YmR6Yi06YmJ6YmN6YmF6Yi56Yi/6Yma6ZaY6ZqY6ZqU6ZqV6ZuN6ZuL6ZuJ6ZuK6Zu36Zu76Zu56Zu26Z2W6Z206Z226aCQ6aCR6aCT6aCK6aCS6aCM6aO86aO0XCJdLFtcImI5YTFcIixcIumjvemjvumms+mmsemmtOmroemzqem6gum8jum8k+m8oOWDp+WDruWDpeWDluWDreWDmuWDleWDj+WDkeWDseWDjuWDqeWFouWHs+WKg+WKguWMseWOreWXvuWYgOWYm+WYl+WXveWYlOWYhuWYieWYjeWYjuWXt+WYluWYn+WYiOWYkOWXtuWcmOWcluWhteWhvuWig+Wik+WiiuWhueWiheWhveWjveWkpeWkouWkpOWlquWlqeWroeWrpuWrqeWrl+WrluWrmOWro+WtteWvnuWvp+WvoeWvpeWvpuWvqOWvouWvpOWvn+WwjeWxouW2hOW2h+W5m+W5o+W5leW5l+W5lOW7k+W7luW8iuW9huW9sOW+ueaFh1wiXSxbXCJiYTQwXCIsXCLmhL/mhYvmhbfmhaLmhaPmhZ/mhZrmhZjmhbXmiKrmkofmkZjmkZTmkqTmkbjmkZ/mkbrmkZHmkafmkLTmka3mkbvmlbLmlqHml5fml5bmmqLmmqjmmp3mppzmpqjmppXmp4Hmpq7mp5Pmp4vmppvmprfmprvmpqvmprTmp5Dmp43mpq3mp4zmpqbmp4PmpqPmrYnmrYzmsLPmvLPmvJTmu77mvJPmu7TmvKnmvL7mvKDmvKzmvI/mvILmvKJcIl0sW1wiYmFhMVwiLFwi5ru/5ruv5ryG5ryx5ry45ryy5ryj5ryV5ryr5ryv5r6I5ryq5rus5ryB5ruy5ruM5ru354aU54aZ54W954aK54aE54aS54i+54qS54qW542E542Q55Gk55Gj55Gq55Gw55Gt55SE55aR55in55iN55iL55iJ55iT55uh55uj556E5529552/552h56OB56Kf56Kn56Kz56Kp56Kj56aO56aP56aN56iu56ix56qq56qp56ut56uv566h566V566L5621566X566d566U566P5664566H566E57K557K957K+57a757aw57ac57a957a+57ag57eK57a057ay57ax57a657ai57a/57a157a457at57eS57eH57asXCJdLFtcImJiNDBcIixcIue9sOe/oOe/oee/n+iBnuiBmuiCh+iFkOiGgOiGj+iGiOiGiuiFv+iGguiHp+iHuuiIh+iIlOiInuiJi+iTieiSv+iThuiThOiSmeiSnuiSsuiSnOiTi+iSuOiTgOiTk+iSkOiSvOiTkeiTiuicv+icnOicu+icouicpeictOicmOidleict+icqeijs+ikguijtOijueijuOijveijqOikmuijr+iqpuiqjOiqnuiqo+iqjeiqoeiqk+iqpFwiXSxbXCJiYmExXCIsXCLoqqroqqXoqqjoqpjoqpHoqproqqfosaroso3osozos5Pos5Hos5LotavotpnotpXot7zovJTovJLovJXovJPovqPpgaDpgZjpgZzpgaPpgZnpgZ7pgaLpgZ3pgZvphJnphJjphJ7phbXphbjphbfphbTpibjpioDpioXpipjpipbpibvpipPpipzpiqjpibzpipHplqHplqjplqnplqPplqXplqTpmpnpmpzpmpvpm4zpm5LpnIDpnbzpnoXpn7bpoJfpoJjpoq/porHppIPppIXppIzppInpp4Hpqq/pqrDpq6bprYHprYLps7Tps7bps7PpurzpvLvpvYrlhITlhIDlg7vlg7Xlg7nlhILlhIjlhInlhIXlh5xcIl0sW1wiYmM0MFwiLFwi5YqH5YqI5YqJ5YqN5YqK5Yuw5Y6y5Ziu5Zi75Zi55Ziy5Zi/5Zi05Zip5ZmT5ZmO5ZmX5Zm05Zi25Ziv5Ziw5aKA5aKf5aKe5aKz5aKc5aKu5aKp5aKm5aWt5ayJ5au75ayL5au15ayM5ayI5a+u5a+s5a+p5a+r5bGk5bGl5bad5baU5bmi5bmf5bmh5bui5bua5buf5bud5buj5bug5b2I5b2x5b635b615oW25oWn5oWu5oWd5oWV5oaCXCJdLFtcImJjYTFcIixcIuaFvOaFsOaFq+aFvuaGp+aGkOaGq+aGjuaGrOaGmuaGpOaGlOaGruaIruaRqeaRr+aRueaSnuaSsuaSiOaSkOaSsOaSpeaSk+aSleaSqeaSkuaSruaSreaSq+aSmuaSrOaSmeaSouaSs+aVteaVt+aVuOaaruaaq+aatOaaseaoo+aon+anqOaogeaonuaomeanveaooeaok+aoiuans+aoguaoheanreaokeatkOatjuaupOavheavhua8v+a9vOa+hOa9kea9pua9lOa+hua9rea9m+a9uOa9rua+jua9uua9sOa9pOa+l+a9mOa7lea9r+a9oOa9n+eGn+eGrOeGseeGqOeJlueKm+eNjueNl+eRqeeSi+eSg1wiXSxbXCJiZDQwXCIsXCLnkb7nkoDnlb/nmKDnmKnnmJ/nmKTnmKbnmKHnmKLnmprnmrrnm6Tnno7nnofnnoznnpHnnovno4vno4Xnorrno4rnor7no5Xnorzno5DnqL/nqLznqYDnqL3nqLfnqLvnqq/nqq7nrq3nrrHnr4TnrrTnr4bnr4fnr4HnrqDnr4zns4rnt6Dnt7Tnt6/nt7vnt5jnt6znt53nt6jnt6Pnt5rnt57nt6nntp7nt5nnt7Lnt7nnvbXnvbfnvq9cIl0sW1wiYmRhMVwiLFwi57+p6ICm6Iab6Iac6Iad6Iag6Iaa6IaY6JSX6JS96JSa6JOu6JSs6JSt6JST6JSR6JSj6JSh6JSU6JOs6JSl6JO/6JSG6J6C6J206J226J2g6J2m6J246J2o6J2Z6J2X6J2M6J2T6KGb6KGd6KSQ6KSH6KSS6KST6KSV6KSK6Kq86KuS6KuH6KuE6KqV6KuL6Ku46Kqy6KuJ6KuC6Kq/6Kqw6KuW6KuN6Kq26Kq56Kub6LGM6LGO6LGs6LOg6LOe6LOm6LOk6LOs6LOt6LOi6LOj6LOc6LOq6LOh6LWt6Laf6Laj6Lir6LiQ6Lid6Lii6LiP6Lip6Lif6Lih6Lie6Lq66Lyd6Lyb6Lyf6Lyp6Lym6Lyq6Lyc6LyeXCJdLFtcImJlNDBcIixcIui8pemBqemBrumBqOmBremBt+mEsOmEremEp+mEsemGh+mGiemGi+mGg+mLhemKu+mKt+mLqumKrOmLpOmLgemKs+mKvOmLkumLh+mLsOmKsumWremWsemchOmchumch+mciemdoOmejemei+mej+mgoemgq+mgnOmis+mkiumkk+mkkumkmOmnnemnkOmnn+mnm+mnkemnlemnkumnmemqt+mrrumrr+msp+mthemthOmtt+mtr+m0hum0iVwiXSxbXCJiZWExXCIsXCLptIPpuqnpur7pu47loqjpvZLlhJLlhJjlhJTlhJDlhJXlhoDlhqrlh53lipHlipPli7PlmZnlmavlmbnlmanlmaTlmbjlmarlmajlmaXlmbHlma/lmazlmaLlmbblo4Hlor7lo4flo4Xlpa7lrJ3lrLTlrbjlr7DlsI7lvYrmhrLmhpHmhqnmhormh43mhrbmhr7mh4rmh4jmiLDmk4Xmk4Hmk4vmkrvmkrzmk5rmk4Tmk4fmk4Lmk43mkr/mk5Lmk5Tmkr7mlbTmm4bmm4nmmrnmm4Tmm4fmmrjmqL3mqLjmqLrmqZnmqavmqZjmqLnmqYTmqaLmqaHmqYvmqYfmqLXmqZ/mqYjmrZnmrbfmsIXmv4LmvrHmvqFcIl0sW1wiYmY0MFwiLFwi5r+D5r6k5r+B5r6n5r6z5r+A5r655r625r6m5r6g5r6054a+54eJ54eQ54eS54eI54eV54a554eO54eZ54ec54eD54eE542o55Kc55Kj55KY55Kf55Ke55Oi55SM55SN55i055i455i655un55ul556g556e556f556l56Oo56Oa56Os56On56am56mN56mO56mG56mM56mL56q656+Z57CR56+J56+k56+b56+h56+p56+m57OV57OW57iKXCJdLFtcImJmYTFcIixcIue4kee4iOe4m+e4o+e4nue4nee4iee4kOe9uee+sue/sOe/see/ruiAqOiGs+iGqeiGqOiHu+iIiOiJmOiJmeiViuiVmeiViOiVqOiVqeiVg+iVieiVreiVquiVnuieg+ien+ienuieouiejeihoeikquiksuikpeikq+ikoeimquimpuirpuiruuirq+irseisgOirnOirp+irruirvuisgeisguirt+irreirs+irtuirvOixq+ixreiyk+iztOi5hOi4sei4tOi5gui4uei4tei8u+i8r+i8uOi8s+i+qOi+pumBtemBtOmBuOmBsumBvOmBuumEtOmGkumMoOmMtumLuOmMs+mMr+mMoumLvOmMq+mMhOmMmlwiXSxbXCJjMDQwXCIsXCLpjJDpjKbpjKHpjJXpjK7pjJnplrvpmqfpmqjpmqrpm5XpnI7pnJHpnJbpnI3pnJPpnI/pnZvpnZzpnabpnpjpoLDpoLjpoLvpoLfpoK3poLnpoKTppJDppKjppJ7ppJvppKHppJrpp63pp6Lpp7Hpqrjpqrzpq7vpq63prKjprpHptJXptKPptKbptKjptJLptJvpu5jpu5Tpvo3pvpzlhKrlhJ/lhKHlhLLli7Xlmo7lmoDlmpDlmoXlmodcIl0sW1wiYzBhMVwiLFwi5ZqP5aOV5aOT5aOR5aOO5ayw5ayq5ayk5a265bC35bGo5ba85ba65ba95ba45bmr5b2M5b695oeJ5oeC5oeH5oem5oeL5oiy5oi05pOO5pOK5pOY5pOg5pOw5pOm5pOs5pOx5pOi5pOt5paC5paD5puZ5puW5qqA5qqU5qqE5qqi5qqc5qub5qqj5qm+5qqX5qqQ5qqg5q2c5q6u5q+a5rCI5r+Y5r+x5r+f5r+g5r+b5r+k5r+r5r+v5r6A5r+s5r+h5r+p5r+V5r+u5r+w54en54ef54eu54em54el54et54es54e054eg54i154mG542w542y55Kp55Kw55Km55Ko55mG55mC55mM55uq556z556q556w556sXCJdLFtcImMxNDBcIixcIueep+eereefr+ejt+ejuuejtOejr+ekgeemp+emquepl+eqv+ewh+ewjeevvuevt+ewjOevoOezoOeznOeznuezouezn+ezmeeznee4rue4vue5hue4t+e4sue5g+e4q+e4vee4see5hee5gee4tOe4uee5iOe4tee4v+e4r+e9hOe/s+e/vOiBseiBsuiBsOiBr+iBs+iHhuiHg+iGuuiHguiHgOiGv+iGveiHieiGvuiHqOiIieiJseiWqlwiXSxbXCJjMWExXCIsXCLoloTolb7olpzolpHolpTolq/olpvolofolqjoloromafon4Don5HonrPon5Lon4bonqvonrvonrron4jon4vopLvopLbopYTopLjopL3opqzorI7orJforJnorJvorIrorKDorJ3orITorJDosYHosL/osbPos7ros73os7zos7jos7votqjouYnouYvouYjouYrovYTovL7ovYLovYXovL/pgb/pgb3pgoTpgoHpgoLpgoDphLnphqPphp7phpzpjY3pjoLpjKjpjbXpjYrpjaXpjYvpjJjpjb7pjazpjZvpjbDpjZrpjZTpl4rpl4vpl4zpl4jpl4bpmrHpmrjpm5bpnJzpnJ7pnqDpn5PpoYbporbppLXpqIFcIl0sW1wiYzI0MFwiLFwi6ae/6a6u6a6r6a6q6a6t6bS76bS/6bqL6buP6bue6buc6bud6bub6by+6b2L5Y+i5ZqV5Zqu5aOZ5aOY5ay45b2d5oej5oiz5pO05pOy5pO+5pSG5pO65pO75pO35pa35puc5pym5qqz5qqs5quD5qq75qq45quC5qqu5qqv5q2f5q245q6v54CJ54CL5r++54CG5r+654CR54CP54e754e854e+54e45423542155Kn55K/55SV55mW55mYXCJdLFtcImMyYTFcIixcIueZkueeveeev+eeu+eevOekjuemruepoeepouepoOerhOerheewq+ewp+ewquewnuewo+ewoeezp+e5lOe5lee5nue5mue5oee5kue5mee9iOe/uee/u+iBt+iBtuiHjeiHj+iIiuiXj+iWqeiXjeiXkOiXieiWsOiWuuiWueiWpuifr+ifrOifsuifoOimhuimsuintOisqOisueisrOisq+ixkOi0hei5mei5o+i5pui5pOi5n+i5lei7gOi9iei9jemCh+mCg+mCiOmGq+mGrOmHkOmOlOmOiumOlumOoumOs+mOrumOrOmOsOmOmOmOmumOl+mXlOmXlumXkOmXlemboumbnOmbmembm+mbnumcpOmeo+meplwiXSxbXCJjMzQwXCIsXCLpnq3pn7npoY3poY/poYzpoY7poZPporrppL7ppL/ppL3ppK7ppqXpqI7pq4HprIPprIbprY/prY7prY3pr4rpr4npr73pr4jpr4DptZHptZ3ptaDpu6DpvJXpvKzlhLPlmqXlo57lo5/lo6Llr7XpvpDlu6zmh7Lmh7fmh7bmh7XmlIDmlI/mm6Dmm53mq6Xmq53mq5rmq5PngJvngJ/ngKjngJrngJ3ngJXngJjniIbniI3niZjniqLnjbhcIl0sW1wiYzNhMVwiLFwi542655K955OK55Oj55aH55aG55mf55mh55+H56SZ56ax56mr56mp57C+57C/57C457C957C357GA57mr57mt57m557mp57mq576F57mz5762576557646IeY6Jep6Jed6Jeq6JeV6Jek6Jel6Je36J+76KCF6KCN6J+56J++6KWg6KWf6KWW6KWe6K2B6K2c6K2Y6K2J6K2a6K2O6K2P6K2G6K2Z6LSI6LSK6Lm86Lmy6LqH6Lm26Lms6Lm66Lm06L2U6L2O6L6t6YKK6YKL6Yax6Yau6Y+h6Y+R6Y+f6Y+D6Y+I6Y+c6Y+d6Y+W6Y+i6Y+N6Y+Y6Y+k6Y+X6Y+o6Zec6Zq06Zuj6Zyq6Zyn6Z2h6Z+c6Z+76aGeXCJdLFtcImM0NDBcIixcIumhmOmhm+mivOmlhemliemolumomemsjemvqOmvp+mvlumvm+m2iem1oem1sum1qum1rOm6kum6l+m6k+m6tOWLuOWaqOWat+WatuWatOWavOWjpOWtgOWtg+WtveWvtuW3ieaHuOaHuuaUmOaUlOaUmeabpuacp+arrOeAvueAsOeAsueIkOeNu+eTj+eZoueZpeekpuekquekrOekq+erh+ertuexjOexg+exjeezr+ezsOi+rue5vee5vFwiXSxbXCJjNGExXCIsXCLnuoLnvYzogIDoh5roiabol7vol7nomJHol7romIbomIvomIfomIrooJTooJXopaToprrop7jorbDorazorabora/orZ/oravotI/otI3ouonouoHouoXouoLphrTph4vpkJjpkIPpj73pl6HpnLDpo4TppZLppZHppqjpqKvpqLDpqLfpqLXpsJPpsI3pubnpurXpu6jpvK/pvZ/pvaPpvaHlhLflhLjlm4Hlm4Dlm4LlpJTlsazlt43mh7zmh77mlJ3mlJzmlpXmm6nmq7vmrITmq7rmrrLngYzniJvniqfnk5bnk5Tnmannn5PnsZDnuo/nuoznvrzomJfomK3omJrooKPooKLooKHooJ/oparopazopr3orbRcIl0sW1wiYzU0MFwiLFwi6K236K296LST6LqK6LqN6LqL6L2f6L6v6Ya66ZCu6ZCz6ZC16ZC66ZC46ZCy6ZCr6Zei6Zy46Zy56Zyy6Z+/6aGn6aGl6aWX6amF6amD6amA6ai+6auP6a2U6a2R6bCt6bCl6bav6ba06beC6ba46bqd6buv6byZ6b2c6b2m6b2n5YS85YS75ZuI5ZuK5ZuJ5a2/5beU5beS5b2O5oe/5pSk5qyK5q2h54GR54GY546A55Ok55aK55mu55msXCJdLFtcImM1YTFcIixcIuems+exoOexn+iBvuiBveiHn+ilsuilr+invOiugOi0lui0l+i6kei6k+i9oemFiOmRhOmRkemRkumcvemcvumfg+mfgemhq+mllemplempjemrkumsmumxiemwsemwvumwu+m3k+m3l+m8tOm9rOm9qum+lOWbjOW3luaIgOaUo+aUq+aUquabrOaskOeTmueriuexpOexo+expee6k+e6lue6lOiHouiYuOiYv+igseiuiumCkOmCj+mRo+mRoOmRpOmdqOmhr+mlnOmpmumpm+mpl+mrk+mrlOmrkemxlOmxl+mxlum3pem6n+m7tOWbkeWjqeaUrOeBnueZseeZsuefl+e9kOe+iOigtuigueihouiuk+iuklwiXSxbXCJjNjQwXCIsXCLorpboibfotJvph4DpkarpnYLpnYjpnYTpn4bpobDpqZ/prKLprZjpsZ/pt7npt7rpubzpub3pvIfpvbfpvbLlu7PmrJbngaPnsaznsa7ooLvop4DouqHph4HpkbLpkbDpobHppZ7pq5bprKPpu4zngaTnn5rorprpkbfpn4npqaLpqaXnupzorpzouqrph4Xpkb3pkb7pkbzpsbfpsbjpu7fosZTpkb/puJrniKjpqarprLHpuJvpuJ7nsbJcIl0sW1wiYzk0MFwiLFwi5LmC5Lmc5Ye15Yya5Y6C5LiH5LiM5LmH5LqN5ZuX76iM5bGu5b2z5LiP5YaH5LiO5Liu5LqT5LuC5LuJ5LuI5YaY5Yu85Y2s5Y655Zyg5aSD5aSs5bCQ5be/5peh5q6z5q+M5rCU54i/5Lix5Li85Luo5Luc5Lup5Luh5Lud5Lua5YiM5Yyc5Y2M5Zyi5Zyj5aSX5aSv5a6B5a6E5bCS5bC75bG05bGz5biE5bqA5bqC5b+J5oiJ5omQ5rCVXCJdLFtcImM5YTFcIixcIuawtuaxg+awv+awu+eKrueKsOeOiuemuOiCiumYnuS8juS8mOS8rOS7teS8lOS7seS8gOS7t+S8iOS8neS8guS8heS8ouS8k+S8hOS7tOS8kuWGseWIk+WIieWIkOWKpuWMouWMn+WNjeWOiuWQh+WboeWbn+WcruWcquWctOWkvOWmgOWlvOWmheWlu+WlvuWlt+Wlv+WtluWwleWwpeWxvOWxuuWxu+WxvuW3n+W5teW6hOW8guW8muW9tOW/leW/lOW/j+aJnOaJnuaJpOaJoeaJpuaJouaJmeaJoOaJmuaJpeaXr+aXruacvuacueacuOacu+acuuacv+acvOacs+awmOaxhuaxkuaxnOaxj+axiuaxlOaxi1wiXSxbXCJjYTQwXCIsXCLmsYzngbHniZ7nirTnirXnjo7nlKrnmb/nqbXnvZHoibjoibzoioDoib3oib/omY3opb7pgpnpgpfpgpjpgpvpgpTpmKLpmKTpmKDpmKPkvZbkvLvkvaLkvYnkvZPkvaTkvL7kvafkvZLkvZ/kvYHkvZjkvK3kvLPkvL/kvaHlho/lhrnliJzliJ7liKHliq3liq7ljInljaPljbLljo7ljo/lkLDlkLflkKrlkZTlkYXlkJnlkJzlkKXlkJhcIl0sW1wiY2FhMVwiLFwi5ZC95ZGP5ZGB5ZCo5ZCk5ZGH5Zuu5Zun5Zul5Z2B5Z2F5Z2M5Z2J5Z2L5Z2S5aSG5aWA5aam5aaY5aag5aaX5aaO5aai5aaQ5aaP5aan5aah5a6O5a6S5bCo5bCq5bKN5bKP5bKI5bKL5bKJ5bKS5bKK5bKG5bKT5bKV5beg5biK5biO5bqL5bqJ5bqM5bqI5bqN5byF5byd5b245b225b+S5b+R5b+Q5b+t5b+o5b+u5b+z5b+h5b+k5b+j5b+65b+v5b+35b+75oCA5b+05oi65oqD5oqM5oqO5oqP5oqU5oqH5omx5om75om65omw5oqB5oqI5om35om95omy5om05pS35pew5pe05pez5pey5pe15p2F5p2HXCJdLFtcImNiNDBcIixcIuadmeadleadjOadiOadneadjeadmuadi+avkOawmeawmuaxuOaxp+axq+ayhOayi+ayj+axseaxr+axqeaymuaxreayh+ayleaynOaxpuaxs+axpeaxu+ayjueBtOeBuueJo+eKv+eKveeLg+eLhueLgeeKuueLheeOleeOl+eOk+eOlOeOkueUuueUueeWlOeWleeageekveiAtOiCleiCmeiCkOiCkuiCnOiKkOiKj+iKheiKjuiKkeiKk1wiXSxbXCJjYmExXCIsXCLoioroioPoioTosbjov4novr/pgp/pgqHpgqXpgp7pgqfpgqDpmLDpmKjpmK/pmK3kuLPkvpjkvbzkvoXkvb3kvoDkvofkvbbkvbTkvonkvoTkvbfkvYzkvpfkvarkvprkvbnkvoHkvbjkvpDkvpzkvpTkvp7kvpLkvoLkvpXkvavkva7lhp7lhrzlhr7liLXliLLliLPliYbliLHlirzljIrljIvljLzljpLljpTlkoflkb/lkoHlkpHlkoLlkojlkavlkbrlkb7lkaXlkazlkbTlkablko3lka/lkaHlkaDlkpjlkaPlkaflkaTlm7flm7nlna/lnbLlna3lnavlnbHlnbDlnbblnoDlnbXlnbvlnbPlnbTlnaJcIl0sW1wiY2M0MFwiLFwi5Z2o5Z295aSM5aWF5aa15aa65aeP5aeO5aay5aeM5aeB5aa25aa85aeD5aeW5aax5aa95aeA5aeI5aa05aeH5a2i5a2l5a6T5a6V5bGE5bGH5bKu5bKk5bKg5bK15bKv5bKo5bKs5bKf5bKj5bKt5bKi5bKq5bKn5bKd5bKl5bK25bKw5bKm5biX5biU5biZ5byo5byi5byj5byk5b2U5b6C5b2+5b295b+e5b+l5oCt5oCm5oCZ5oCy5oCLXCJdLFtcImNjYTFcIixcIuaAtOaAiuaAl+aAs+aAmuaAnuaArOaAouaAjeaAkOaAruaAk+aAkeaAjOaAieaAnOaIlOaIveaKreaKtOaLkeaKvuaKquaKtuaLiuaKruaKs+aKr+aKu+aKqeaKsOaKuOaUveaWqOaWu+aYieaXvOaYhOaYkuaYiOaXu+aYg+aYi+aYjeaYheaXveaYkeaYkOabtuaciuaeheadrOaejuaekuadtuadu+aemOaehuaehOadtOaejeaejOaduuaen+aekeaemeaeg+adveaegeaduOadueaelOaspeaugOatvuavnuawneayk+azrOazq+azruazmeaytuazlOayreazp+ayt+azkOazguayuuazg+azhuazreazslwiXSxbXCJjZDQwXCIsXCLms5Lms53msrTmsormsp3msoDms57ms4DmtLDms43ms4fmsrDms7nms4/ms6nms5HngpTngpjngoXngpPngobngoTngpHngpbngoLngprngoPniarni5bni4vni5jni4nni5zni5Lni5Tni5rni4zni5HnjqTnjqHnjq3njqbnjqLnjqDnjqznjp3nk53nk6jnlL/nlYDnlL7nloznlpjnmq/nm7Pnm7Hnm7Dnm7Xnn7jnn7znn7nnn7vnn7pcIl0sW1wiY2RhMVwiLFwi55+356WC56S/56eF56m456m756u757G157O96IC16IKP6IKu6IKj6IK46IK16IKt6Iig6Iqg6IuA6Iqr6Iqa6IqY6Iqb6Iq16Iqn6Iqu6Iq86Iqe6Iq66Iq06Iqo6Iqh6Iqp6IuC6Iqk6IuD6Iq26Iqi6Jmw6Jmv6Jmt6Jmu6LGW6L+S6L+L6L+T6L+N6L+W6L+V6L+X6YKy6YK06YKv6YKz6YKw6Zi56Zi96Zi86Zi66ZmD5L+N5L+F5L+T5L6y5L+J5L+L5L+B5L+U5L+c5L+Z5L675L6z5L+b5L+H5L+W5L665L+A5L655L+s5YmE5YmJ5YuA5YuC5Yy95Y285Y6X5Y6W5Y6Z5Y6Y5ZK65ZKh5ZKt5ZKl5ZOPXCJdLFtcImNlNDBcIixcIuWTg+iMjeWSt+WSruWTluWStuWTheWThuWSoOWRsOWSvOWSouWSvuWRsuWTnuWSsOWeteWenuWen+WepOWejOWel+WeneWem+WelOWemOWej+WemeWepeWemuWeleWjtOWkjeWlk+WnoeWnnuWnruWogOWnseWnneWnuuWnveWnvOWntuWnpOWnsuWnt+Wnm+WnqeWns+WnteWnoOWnvuWntOWnreWuqOWxjOWzkOWzmOWzjOWzl+Wzi+Wzm1wiXSxbXCJjZWExXCIsXCLls57ls5rls4nls4fls4rls5bls5Pls5Tls4/ls4jls4bls47ls5/ls7jlt7nluKHluKLluKPluKDluKTlurDluqTluqLlupvluqPluqXlvIflvK7lvZblvobmgLfmgLnmgZTmgbLmgZ7mgYXmgZPmgYfmgYnmgZvmgYzmgYDmgYLmgZ/mgKTmgYTmgZjmgabmga7miYLmiYPmi4/mjI3mjIvmi7XmjI7mjIPmi6vmi7nmjI/mjIzmi7jmi7bmjIDmjJPmjJTmi7rmjJXmi7vmi7DmlYHmlYPmlqrmlr/mmLbmmKHmmLLmmLXmmJzmmKbmmKLmmLPmmKvmmLrmmJ3mmLTmmLnmmK7mnI/mnJDmn4Hmn7Lmn4jmnrpcIl0sW1wiY2Y0MFwiLFwi5p+c5p675p+45p+Y5p+A5p635p+F5p+r5p+k5p+f5p615p+N5p6z5p+35p+25p+u5p+j5p+C5p655p+O5p+n5p+w5p6y5p+85p+G5p+t5p+M5p6u5p+m5p+b5p+65p+J5p+K5p+D5p+q5p+L5qyo5q6C5q6E5q625q+W5q+Y5q+g5rCg5rCh5rSo5rS05rSt5rSf5rS85rS/5rSS5rSK5rOa5rSz5rSE5rSZ5rS65rSa5rSR5rSA5rSd5rWCXCJdLFtcImNmYTFcIixcIua0gea0mOa0t+a0g+a0j+a1gOa0h+a0oOa0rOa0iOa0oua0iea0kOeCt+eCn+eCvueCseeCsOeCoeeCtOeCteeCqeeJgeeJieeJiueJrOeJsOeJs+eJrueLiueLpOeLqOeLq+eLn+eLqueLpueLo+eOheePjOePguePiOePheeOueeOtueOteeOtOePq+eOv+ePh+eOvuePg+ePhueOuOePi+eTrOeTrueUrueVh+eViOeWp+eWqueZueebhOeciOecg+echOecheeciuebt+ebu+ebuuefp+efqOeghuegkeegkuegheegkOegj+egjuegieegg+egk+eliueljOeli+elheelhOenleenjeenj+enluenjueqgFwiXSxbXCJkMDQwXCIsXCLnqb7nq5HnrIDnrIHnsbrnsbjnsbnnsb/nsoDnsoHntIPntIjntIHnvZjnvpHnvo3nvr7ogIfogI7ogI/ogJTogLfog5jog4fog6Dog5Hog4jog4Log5Dog4Xog6Pog5nog5zog4rog5Xog4nog4/og5fog6bog43oh7/oiKHoipToi5noi77oi7nojIfoi6jojIDoi5XojLroi6voi5boi7Toi6zoi6Hoi7Loi7XojIzoi7voi7boi7Doi6pcIl0sW1wiZDBhMVwiLFwi6Iuk6Iug6Iu66Iuz6Iut6Jm36Jm06Jm86Jmz6KGB6KGO6KGn6KGq6KGp6KeT6KiE6KiH6LWy6L+j6L+h6L+u6L+g6YOx6YK96YK/6YOV6YOF6YK+6YOH6YOL6YOI6YeU6YeT6ZmU6ZmP6ZmR6ZmT6ZmK6ZmO5YCe5YCF5YCH5YCT5YCi5YCw5YCb5L+15L+05YCz5YC35YCs5L+25L+35YCX5YCc5YCg5YCn5YC15YCv5YCx5YCO5YWa5YaU5YaT5YeK5YeE5YeF5YeI5YeO5Ymh5Yma5YmS5Yme5Ymf5YmV5Ymi5YuN5YyO5Y6e5ZSm5ZOi5ZSX5ZSS5ZOn5ZOz5ZOk5ZSa5ZO/5ZSE5ZSI5ZOr5ZSR5ZSF5ZOxXCJdLFtcImQxNDBcIixcIuWUiuWTu+WTt+WTuOWToOWUjuWUg+WUi+WcgeWcguWfjOWgsuWfleWfkuWeuuWfhuWeveWevOWeuOWetuWev+Wfh+WfkOWeueWfgeWkjuWliuWomeWoluWoreWoruWoleWoj+Wol+WoiuWonuWos+WtrOWup+WureWurOWwg+WxluWxlOWzrOWzv+WzruWzseWzt+W0gOWzueW4qeW4qOW6qOW6ruW6quW6rOW8s+W8sOW9p+aBneaBmuaBp1wiXSxbXCJkMWExXCIsXCLmgYHmgqLmgojmgoDmgpLmgoHmgp3mgoPmgpXmgpvmgpfmgofmgpzmgo7miJnmiYbmi7LmjJDmjZbmjKzmjYTmjYXmjLbmjYPmj6TmjLnmjYvmjYrmjLzmjKnmjYHmjLTmjZjmjZTmjZnmjK3mjYfmjLPmjZrmjZHmjLjmjZfmjYDmjYjmlYrmlYbml4bml4Pml4Tml4LmmYrmmZ/mmYfmmZHmnJLmnJPmoJ/moJrmoYnmoLLmoLPmoLvmoYvmoY/moJbmoLHmoJzmoLXmoKvmoK3moK/moY7moYTmoLTmoJ3moJLmoJTmoKbmoKjmoK7moY3moLrmoKXmoKDmrKzmrK/mrK3mrLHmrLTmra3ogoLmrojmr6bmr6RcIl0sW1wiZDI0MFwiLFwi5q+o5q+j5q+i5q+n5rCl5rW65rWj5rWk5rW25rSN5rWh5raS5rWY5rWi5rWt5rWv5raR5raN5rev5rW/5raG5rWe5rWn5rWg5raX5rWw5rW85rWf5raC5raY5rSv5rWo5raL5rW+5raA5raE5rSW5raD5rW75rW95rW15raQ54Oc54OT54OR54Od54OL57y554Oi54OX54OS54Oe54Og54OU54ON54OF54OG54OH54Oa54OO54Oh54mC54m4XCJdLFtcImQyYTFcIixcIueJt+eJtueMgOeLuueLtOeLvueLtueLs+eLu+eMgeePk+ePmeePpeePlueOvOePp+ePo+ePqeePnOePkuePm+ePlOePneePmuePl+ePmOePqOeTnueTn+eTtOeTteeUoeeVm+eVn+eWsOeXgeeWu+eXhOeXgOeWv+eWtueWuueaiuebieecneecm+eckOeck+eckueco+eckeecleecmeecmuecouecp+ego+egrOegouegteegr+egqOegruegq+egoeegqeegs+egquegseellOelm+elj+elnOelk+elkuelkeenq+enrOenoOenruenreenquennOennuenneeqhueqieeqheeqi+eqjOeqiueqh+ermOeskFwiXSxbXCJkMzQwXCIsXCLnrITnrJPnrIXnrI/nrIjnrIrnrI7nrInnrJLnsoTnspHnsornsoznsojnso3nsoXntJ7ntJ3ntJHntI7ntJjntJbntJPntJ/ntJLntI/ntIznvZznvaHnvZ7nvaDnvZ3nvZvnvpbnvpLnv4Pnv4Lnv4DogJbogL7ogLnog7rog7Log7nog7XohIHog7vohIDoiIHoiK/oiKXojLPojK3ojYTojJnojZHojKXojZbojL/ojYHojKbojJzojKJcIl0sW1wiZDNhMVwiLFwi6I2C6I2O6Iyb6Iyq6IyI6Iy86I2N6IyW6Iyk6Iyg6Iy36Iyv6Iyp6I2H6I2F6I2M6I2T6Iye6Iys6I2L6Iyn6I2I6JmT6JmS6Jqi6Jqo6JqW6JqN6JqR6Jqe6JqH6JqX6JqG6JqL6Jqa6JqF6Jql6JqZ6Jqh6Jqn6JqV6JqY6JqO6Jqd6JqQ6JqU6KGD6KGE6KGt6KG16KG26KGy6KKA6KGx6KG/6KGv6KKD6KG+6KG06KG86KiS6LGH6LGX6LG76LKk6LKj6LW26LW46La16La36La26LuR6LuT6L++6L+16YCC6L+/6L+76YCE6L+86L+26YOW6YOg6YOZ6YOa6YOj6YOf6YOl6YOY6YOb6YOX6YOc6YOk6YWQXCJdLFtcImQ0NDBcIixcIumFjumFj+mHlemHoumHmumZnOmZn+mavOmjo+mrn+msr+S5v+WBsOWBquWBoeWBnuWBoOWBk+WBi+WBneWBsuWBiOWBjeWBgeWBm+WBiuWBouWAleWBheWBn+WBqeWBq+WBo+WBpOWBhuWBgOWBruWBs+WBl+WBkeWHkOWJq+WJreWJrOWJruWLluWLk+WMreWOnOWVteWVtuWUvOWVjeWVkOWUtOWUquWVkeWVouWUtuWUteWUsOWVkuWVhVwiXSxbXCJkNGExXCIsXCLllIzllLLllaXllY7llLnllYjllK3llLvllYDllYvlnIrlnIfln7vloJTln6Lln7bln5zln7TloIDln63ln73loIjln7jloIvln7Pln4/loIfln67ln6Pln7Lln6Xln6zln6HloI7ln7zloJDln6floIHloIzln7Hln6nln7DloI3loITlpZzlqaDlqZjlqZXlqaflqZ7lqLjlqLXlqa3lqZDlqZ/lqaXlqazlqZPlqaTlqZflqYPlqZ3lqZLlqYTlqZvlqYjlqo7lqL7lqY3lqLnlqYzlqbDlqanlqYflqZHlqZblqYLlqZzlrbLlra7lr4Hlr4DlsZnltJ7ltIvltJ3ltJrltKDltIzltKjltI3ltKbltKXltI9cIl0sW1wiZDU0MFwiLFwi5bSw5bSS5bSj5bSf5bSu5bi+5bi05bqx5bq05bq55bqy5bqz5by25by45b6b5b6W5b6f5oKK5oKQ5oKG5oK+5oKw5oK65oOT5oOU5oOP5oOk5oOZ5oOd5oOI5oKx5oOb5oK35oOK5oK/5oOD5oON5oOA5oyy5o2l5o6K5o6C5o295o695o6e5o6t5o6d5o6X5o6r5o6O5o2v5o6H5o6Q5o2u5o6v5o215o6c5o2t5o6u5o285o6k5oy75o6fXCJdLFtcImQ1YTFcIixcIuaNuOaOheaOgeaOkeaOjeaNsOaVk+aXjeaZpeaZoeaZm+aZmeaZnOaZouacmOahueaih+aikOainOahreahruairuaiq+alluahr+aio+airOaiqeahteahtOaisuaij+aht+aikuahvOahq+ahsuaiquaigOahseahvuaim+ailuaii+aioOaiieaipOahuOahu+aikeaijOaiiuahveastuass+ast+asuOaukeauj+aujeaujuaujOawqua3gOa2q+a2tOa2s+a5tOa2rOa3qea3oua2t+a3tua3lOa4gOa3iOa3oOa3n+a3lua2vua3pea3nOa3nea3m+a3tOa3iua2vea3rea3sOa2uua3lea3gua3j+a3iVwiXSxbXCJkNjQwXCIsXCLmt5Dmt7Lmt5Pmt73mt5fmt43mt6Pmtrvng7rnhI3ng7fnhJfng7TnhIzng7DnhITng7PnhJDng7zng7/nhIbnhJPnhIDng7jng7bnhIvnhILnhI7nib7nibvnibznib/njJ3njJfnjIfnjJHnjJjnjIrnjIjni7/njI/njJ7njojnj7bnj7jnj7XnkITnkIHnj73nkIfnkIDnj7rnj7znj7/nkIznkIvnj7TnkIjnlaTnlaPnl47nl5Lnl49cIl0sW1wiZDZhMVwiLFwi55eL55eM55eR55eQ55qP55qJ55uT55y555yv55yt55yx55yy55y055yz55y955yl55y755y156GI56GS56GJ56GN56GK56GM56Cm56GF56GQ56Wk56Wn56Wp56Wq56Wj56Wr56Wh56a756e656e456e256e356qP56qU56qQ56y1562H56y056yl56yw56yi56yk56yz56yY56yq56yd56yx56yr56yt56yv56yy56y456ya56yj57KU57KY57KW57Kj57S157S957S457S257S657WF57Ss57Sp57WB57WH57S+57S/57WK57S757So572j576V576c576d576b57+K57+L57+N57+Q57+R57+H57+P57+J6ICfXCJdLFtcImQ3NDBcIixcIuiAnuiAm+iBh+iBg+iBiOiEmOiEpeiEmeiEm+iEreiEn+iErOiEnuiEoeiEleiEp+iEneiEouiIkeiIuOiIs+iIuuiItOiIsuiJtOiOkOiOo+iOqOiOjeiNuuiNs+iOpOiNtOiOj+iOgeiOleiOmeiNteiOlOiOqeiNveiOg+iOjOiOneiOm+iOquiOi+iNvuiOpeiOr+iOiOiOl+iOsOiNv+iOpuiOh+iOruiNtuiOmuiZmeiZluiav+iat1wiXSxbXCJkN2ExXCIsXCLom4Lom4Hom4XomrromrDom4jomrnomrPomrjom4zomrTomrvomrzom4Pomr3omr7ooZLooonoopXooqjooqLooqrooproopHooqHoop/oopjooqfoopnoopvoopfooqTooqzooozoopPooo7opoLop5bop5nop5XoqLDoqKfoqKzoqJ7osLnosLvosZzosZ3osb3osqXotb3otbvotbnotrzot4Lotrnotr/ot4Hou5jou57ou53ou5zou5fou6Dou6HpgKTpgIvpgJHpgJzpgIzpgKHpg6/pg6rpg7Dpg7Tpg7Lpg7Ppg5Tpg6vpg6zpg6nphZbphZjphZrphZPphZXph6zph7Tph7Hph7Pph7jph6Tph7nph6pcIl0sW1wiZDg0MFwiLFwi6Yer6Ye36Yeo6Yeu6ZW66ZaG6ZaI6Zm86Zmt6Zmr6Zmx6Zmv6Zq/6Z2q6aCE6aOl6aaX5YKb5YKV5YKU5YKe5YKL5YKj5YKD5YKM5YKO5YKd5YGo5YKc5YKS5YKC5YKH5YWf5YeU5YyS5YyR5Y6k5Y6n5ZaR5Zao5Zal5Zat5ZW35ZmF5Zai5ZaT5ZaI5ZaP5Za15ZaB5Zaj5ZaS5Zak5ZW95ZaM5Zam5ZW/5ZaV5Zah5ZaO5ZyM5aCp5aC3XCJdLFtcImQ4YTFcIixcIuWgmeWgnuWgp+Wgo+WgqOWfteWhiOWgpeWgnOWgm+Wgs+Wgv+WgtuWgruWgueWguOWgreWgrOWgu+WloeWqr+WqlOWqn+WpuuWqouWqnuWpuOWqpuWpvOWqpeWqrOWqleWqruWot+WqhOWqiuWql+Wqg+Wqi+WqqeWpu+WpveWqjOWqnOWqj+Wqk+WqneWvquWvjeWvi+WvlOWvkeWviuWvjuWwjOWwsOW0t+W1g+W1q+W1geW1i+W0v+W0teW1keW1juW1leW0s+W0uuW1kuW0veW0seW1meW1guW0ueW1ieW0uOW0vOW0suW0tuW1gOW1heW5hOW5geW9mOW+puW+peW+q+aDieaCueaDjOaDouaDjuaDhOaElFwiXSxbXCJkOTQwXCIsXCLmg7LmhIrmhJbmhIXmg7XmhJPmg7jmg7zmg77mg4HmhIPmhJjmhJ3mhJDmg7/mhITmhIvmiYrmjpTmjrHmjrDmj47mj6Xmj6jmj6/mj4Pmkp3mj7Pmj4rmj6Dmj7bmj5Xmj7Lmj7XmkaHmj5/mjr7mj53mj5zmj4Tmj5jmj5Pmj4Lmj4fmj4zmj4vmj4jmj7Dmj5fmj5nmlLLmlafmlarmlaTmlZzmlajmlaXmlozmlp3mlp7mlq7ml5Dml5JcIl0sW1wiZDlhMVwiLFwi5pm85pms5pm75pqA5pmx5pm55pmq5pmy5pyB5qSM5qOT5qSE5qOc5qSq5qOs5qOq5qOx5qSP5qOW5qO35qOr5qOk5qO25qST5qSQ5qOz5qOh5qSH5qOM5qSI5qWw5qK05qSR5qOv5qOG5qSU5qO45qOQ5qO95qO85qOo5qSL5qSK5qSX5qOO5qOI5qOd5qOe5qOm5qO05qOR5qSG5qOU5qOp5qSV5qSl5qOH5qy55qy75qy/5qy85q6U5q6X5q6Z5q6V5q695q+w5q+y5q+z5rCw5re85rmG5rmH5rif5rmJ5rqI5ri85ri95rmF5rmi5rir5ri/5rmB5rmd5rmz5ric5riz5rmL5rmA5rmR5ri75riD5riu5rmeXCJdLFtcImRhNDBcIixcIua5qOa5nOa5oea4sea4qOa5oOa5sea5q+a4uea4oua4sOa5k+a5pea4p+a5uOa5pOa5t+a5lea5uea5kua5pua4tea4tua5mueEoOeEnueEr+eDu+eErueEseeEo+eEpeeEoueEsueEn+eEqOeEuueEm+eJi+eJmueKiOeKieeKhueKheeKi+eMkueMi+eMsOeMoueMseeMs+eMp+eMsueMreeMpueMo+eMteeMjOeQrueQrOeQsOeQq+eQllwiXSxbXCJkYWExXCIsXCLnkJrnkKHnkK3nkLHnkKTnkKPnkJ3nkKnnkKDnkLLnk7vnlK/nla/nlaznl6fnl5rnl6Hnl6bnl53nl5/nl6Tnl5fnmpXnmpLnm5rnnYbnnYfnnYTnnY3nnYXnnYrnnY7nnYvnnYznn57nn6znoaDnoaTnoaXnoZznoa3nobHnoarnoa7nobDnoannoajnoZ7noaLnpbTnpbPnpbLnpbDnqILnqIrnqIPnqIznqITnqpnnq6bnq6TnrYrnrLvnrYTnrYjnrYznrY7nrYDnrZjnrYXnsqLnsp7nsqjnsqHntZjnta/ntaPntZPntZbntafntarntY/nta3ntZzntavntZLntZTntanntZHntZ/ntY7nvL7nvL/nvaVcIl0sW1wiZGI0MFwiLFwi572m576i576g576h57+X6IGR6IGP6IGQ6IO+6IOU6IWD6IWK6IWS6IWP6IWH6IS96IWN6IS66Iem6Ieu6Ie36Ie46Ie56IiE6Ii86Ii96Ii/6Im16Iy76I+P6I+56JCj6I+A6I+o6JCS6I+n6I+k6I+86I+26JCQ6I+G6I+I6I+r6I+j6I6/6JCB6I+d6I+l6I+Y6I+/6I+h6I+L6I+O6I+W6I+16I+J6JCJ6JCP6I+e6JCR6JCG6I+C6I+zXCJdLFtcImRiYTFcIixcIuiPleiPuuiPh+iPkeiPquiQk+iPg+iPrOiPruiPhOiPu+iPl+iPouiQm+iPm+iPvuibmOibouibpuibk+ibo+ibmuibquibneibq+ibnOibrOibqeibl+ibqOibkeihiOihluihleiiuuijl+iiueiiuOijgOiivuiituiivOiit+iiveiisuikgeijieimleimmOiml+inneinmuinm+ipjuipjeioueipmeipgOipl+ipmOiphOipheipkuipiOipkeipiuipjOipj+ixn+iygeiygOiyuuiyvuiysOiyueiytei2hOi2gOi2iei3mOi3k+i3jei3h+i3lui3nOi3j+i3lei3mei3iOi3l+i3hei7r+i7t+i7ulwiXSxbXCJkYzQwXCIsXCLou7nou6bou67ou6Xou7Xou6fou6jou7bou6vou7Hou6zou7Tou6npgK3pgLTpgK/phIbphKzphITpg7/pg7zphIjpg7npg7vphIHphIDphIfphIXphIPphaHphaTphZ/phaLphaDpiIHpiIrpiKXpiIPpiJrpiKbpiI/piIzpiIDpiJLph7/ph73piIbpiITpiKfpiILpiJzpiKTpiJnpiJfpiIXpiJbplbvplo3plozplpDpmofpmb7pmohcIl0sW1wiZGNhMVwiLFwi6ZqJ6ZqD6ZqA6ZuC6ZuI6ZuD6Zux6Zuw6Z2s6Z2w6Z2u6aCH6aKp6aOr6bOm6bu55LqD5LqE5Lq25YK95YK/5YOG5YKu5YOE5YOK5YK05YOI5YOC5YKw5YOB5YK65YKx5YOL5YOJ5YK25YK45YeX5Ym65Ym45Ym75Ym85ZeD5Zeb5ZeM5ZeQ5ZeL5ZeK5Zed5ZeA5ZeU5ZeE5Zep5Za/5ZeS5ZaN5ZeP5ZeV5Zei5ZeW5ZeI5Zey5ZeN5ZeZ5ZeC5ZyU5aGT5aGo5aGk5aGP5aGN5aGJ5aGv5aGV5aGO5aGd5aGZ5aGl5aGb5aC95aGj5aGx5aO85auH5auE5auL5aq65aq45aqx5aq15aqw5aq/5auI5aq75auGXCJdLFtcImRkNDBcIixcIuWqt+WrgOWriuWqtOWqtuWrjeWqueWqkOWvluWvmOWvmeWwn+Wws+W1seW1o+W1iuW1peW1suW1rOW1nuW1qOW1p+W1ouW3sOW5j+W5juW5iuW5jeW5i+W7heW7jOW7huW7i+W7h+W9gOW+r+W+reaDt+aFieaFiuaEq+aFheaEtuaEsuaEruaFhuaEr+aFj+aEqeaFgOaIoOmFqOaIo+aIpeaIpOaPheaPseaPq+aQkOaQkuaQieaQoOaQpFwiXSxbXCJkZGExXCIsXCLmkLPmkYPmkJ/mkJXmkJjmkLnmkLfmkKLmkKPmkIzmkKbmkLDmkKjmkYHmkLXmkK/mkIrmkJrmkYDmkKXmkKfmkIvmj6fmkJvmkK7mkKHmkI7mla/mlpLml5PmmobmmozmmpXmmpDmmovmmormmpnmmpTmmbjmnKDmpabmpZ/mpLjmpY7mpaLmpbHmpL/mpYXmparmpLnmpYLmpZfmpZnmpbrmpYjmpYnmpLXmpazmpLPmpL3mpaXmo7DmpbjmpLTmpanmpYDmpa/mpYTmpbbmpZjmpYHmpbTmpYzmpLvmpYvmpLfmpZzmpY/mpZHmpLLmpZLmpK/mpbvmpLzmrYbmrYXmrYPmrYLmrYjmrYHmrpvvqI3mr7vmr7xcIl0sW1wiZGU0MFwiLFwi5q+55q+35q+45rqb5ruW5ruI5rqP5ruA5rqf5rqT5rqU5rqg5rqx5rq55ruG5ruS5rq95ruB5rqe5ruJ5rq35rqw5ruN5rqm5ruP5rqy5rq+5ruD5ruc5ruY5rqZ5rqS5rqO5rqN5rqk5rqh5rq/5rqz5ruQ5ruK5rqX5rqu5rqj54WH54WU54WS54Wj54Wg54WB54Wd54Wi54Wy54W454Wq54Wh54WC54WY54WD54WL54Ww54Wf54WQ54WTXCJdLFtcImRlYTFcIixcIueFhOeFjeeFmueJj+eKjeeKjOeKkeeKkOeKjueMvOeNgueMu+eMuueNgOeNiueNieeRhOeRiueRi+eRkueRkeeRl+eRgOeRj+eRkOeRjueRgueRhueRjeeRlOeToeeTv+eTvueTveeUneeVueeVt+amg+eXr+eYj+eYg+eXt+eXvueXvOeXueeXuOeYkOeXu+eXtueXreeXteeXveeameeateebneedleedn+edoOedkuedluedmuedqeedp+edlOedmeedreefoOeih+eimueilOeij+eihOeileeiheeihueioeeig+ehueeimeeigOeiluehu+elvOemguelveelueeokeeomOeomeeokueol+eoleeooueok1wiXSxbXCJkZjQwXCIsXCLnqJvnqJDnqqPnqqLnqp7nq6vnrabnraTnra3nrbTnrannrbLnraXnrbPnrbHnrbDnraHnrbjnrbbnraPnsrLnsrTnsq/ntojntobntoDnto3ntb/ntoXntbrnto7ntbvntoPntbzntozntpTntoTntb3ntpLnva3nvavnvafnvajnvaznvqbnvqXnvqfnv5vnv5zogKHohaTohaDohbfohZzohanohZvohaLohbLmnKHohZ7ohbbohafoha9cIl0sW1wiZGZhMVwiLFwi6IWE6IWh6Iid6ImJ6ImE6ImA6ImC6ImF6JOx6JC/6JGW6JG26JG56JKP6JKN6JGl6JGR6JGA6JKG6JGn6JCw6JGN6JG96JGa6JGZ6JG06JGz6JGd6JSH6JGe6JC36JC66JC06JG66JGD6JG46JCy6JGF6JCp6I+Z6JGL6JCv6JGC6JCt6JGf6JGw6JC56JGO6JGM6JGS6JGv6JOF6JKO6JC76JGH6JC26JCz6JGo6JG+6JGE6JCr6JGg6JGU6JGu6JGQ6JyL6JyE6Ju36JyM6Ju66JuW6Ju16J2N6Ju46JyO6JyJ6JyB6Ju26JyN6JyF6KOW6KOL6KON6KOO6KOe6KOb6KOa6KOM6KOQ6KaF6Kab6Kef6Kel6KekXCJdLFtcImUwNDBcIixcIuinoeinoOinouinnOinpuiptuiqhuipv+ipoeiov+ipt+iqguiqhOipteiqg+iqgeiptOipuuiwvOixi+ixiuixpeixpOixpuiyhuiyhOiyheizjOi1qOi1qei2kei2jOi2jui2j+i2jei2k+i2lOi2kOi2kui3sOi3oOi3rOi3sei3rui3kOi3qei3o+i3oui3p+i3sui3q+i3tOi8hui7v+i8gei8gOi8hei8h+i8iOi8gui8i+mBkumAv1wiXSxbXCJlMGExXCIsXCLpgYTpgYnpgL3phJDphI3phI/phJHphJbphJTphIvphI7pha7pha/piYjpiZLpiLDpiLrpiabpiLPpiaXpiZ7pioPpiK7piYrpiYbpia3piazpiY/piaDpiafpia/piLbpiaHpibDpiLHpiZTpiaPpiZDpibLpiY7piZPpiYzpiZbpiLLplp/plpzplp7plpvpmpLpmpPpmpHpmpfpm47pm7rpm73pm7jpm7XpnbPpnbfpnbjpnbLpoI/poI3poI7poqzpo7bpo7nppq/pprLpprDpprXpqq3pqqvprZvps6rps63ps6fpuoDpu73lg6blg5Tlg5flg6jlg7Plg5vlg6rlg53lg6Tlg5Plg6zlg7Dlg6/lg6Plg6BcIl0sW1wiZTE0MFwiLFwi5YeY5YqA5YqB5Yup5Yur5Yyw5Y6s5Zin5ZiV5ZiM5ZiS5Ze85ZiP5Zic5ZiB5ZiT5ZiC5Ze65Zid5ZiE5Ze/5Ze55aKJ5aG85aKQ5aKY5aKG5aKB5aG/5aG05aKL5aG65aKH5aKR5aKO5aG25aKC5aKI5aG75aKU5aKP5aO+5aWr5auc5auu5aul5auV5auq5aua5aut5aur5auz5aui5aug5aub5aus5aue5aud5auZ5auo5auf5a235a+gXCJdLFtcImUxYTFcIixcIuWvo+Wxo+W2guW2gOW1veW2huW1uuW2geW1t+W2iuW2ieW2iOW1vuW1vOW2jeW1ueW1v+W5mOW5meW5k+W7mOW7keW7l+W7juW7nOW7leW7meW7kuW7lOW9hOW9g+W9r+W+tuaErOaEqOaFgeaFnuaFseaFs+aFkuaFk+aFsuaFrOaGgOaFtOaFlOaFuuaFm+aFpeaEu+aFquaFoeaFluaIqeaIp+aIq+aQq+aRjeaRm+aRneaRtOaRtuaRsuaRs+aRveaRteaRpuaSpuaRjuaSguaRnuaRnOaRi+aRk+aRoOaRkOaRv+aQv+aRrOaRq+aRmeaRpeaRt+aVs+aWoOaaoeaaoOaan+acheachOacouamseamtuaniVwiXSxbXCJlMjQwXCIsXCLmpqDmp47mppbmprDmpqzmprzmppHmppnmpo7mpqfmpo3mpqnmpr7mpq/mpr/mp4Tmpr3mpqTmp5Tmprnmp4rmpprmp4/mprPmppPmpqrmpqHmpp7mp5nmppfmppDmp4LmprXmpqXmp4bmrYrmrY3mrYvmrp7mrp/mrqDmr4Pmr4Tmr77mu47mu7Xmu7HmvIPmvKXmu7jmvLfmu7vmvK7mvInmvY7mvJnmvJrmvKfmvJjmvLvmvJLmu63mvIpcIl0sW1wiZTJhMVwiLFwi5ry25r2z5ru55ruu5ryt5r2A5ryw5ry85ry15rur5ryH5ryO5r2D5ryF5ru95ru25ry55ryc5ru85ry65ryf5ryN5rye5ryI5ryh54aH54aQ54aJ54aA54aF54aC54aP54W754aG54aB54aX54mE54mT54qX54qV54qT542D542N542R542M55Gi55Gz55Gx55G155Gy55Gn55Gu55SA55SC55SD55W955aQ55iW55iI55iM55iV55iR55iK55iU55q4556B5528556F556C552u556A552v552+556D56Ky56Kq56K056Kt56Ko56G+56Kr56Ke56Kl56Kg56Ks56Ki56Kk56aY56aK56aL56aW56aV56aU56aTXCJdLFtcImUzNDBcIixcIueml+emiOemkuemkOeoq+epiueosOeor+eoqOeopueqqOeqq+eqrOerrueuiOeunOeuiueukeeukOeulueujeeujOeum+eujueuheeumOWKhOeumeeupOeugueyu+eyv+eyvOeyuue2p+e2t+e3gue2o+e2que3gee3gOe3hee2nee3jue3hOe3hue3i+e3jOe2r+e2uee2lue2vOe2n+e2pue2rue2qee2oee3iee9s+e/oue/o+e/pee/nlwiXSxbXCJlM2ExXCIsXCLogKTogZ3ogZzohonohobohoPohofoho3ohozohovoiJXokpfokqTokqHokp/okrrok47ok4Lokqzokq7okqvokrnokrTok4Hok43okqrokprokrHok5Dokp3okqfokrvokqLokpTok4fok4zokpvokqnokq/okqjok5bokpjokrbok4/okqDok5fok5Tok5Lok5vokrDokpHomaHonLPonKPonKjonavonYDonK7onJ7onKHonJnonJvonYPonKzonYHonL7onYbonKDonLLonKronK3onLzonJLonLronLHonLXonYLonKbonKfonLjonKTonJronLDonJHoo7foo6foo7Hoo7Loo7roo77oo67oo7zoo7boo7tcIl0sW1wiZTQ0MFwiLFwi6KOw6KOs6KOr6Kad6Kah6Kaf6Kae6Kep6Ker6Keo6Kqr6KqZ6KqL6KqS6KqP6KqW6LC96LGo6LGp6LOV6LOP6LOX6LaW6LiJ6LiC6Le/6LiN6Le96LiK6LiD6LiH6LiG6LiF6Le+6LiA6LiE6LyQ6LyR6LyO6LyN6YSj6YSc6YSg6YSi6YSf6YSd6YSa6YSk6YSh6YSb6YW66YWy6YW56YWz6Yql6Yqk6Ym26Yqb6Ym66Yqg6YqU6Yqq6YqNXCJdLFtcImU0YTFcIixcIumKpumKmumKq+mJuemKl+mJv+mKo+mLrumKjumKgumKlemKoumJvemKiOmKoemKiumKhumKjOmKmemKp+mJvumKh+mKqemKnemKi+mIremanumaoembv+mdmOmdvemduumdvumeg+megOmegumdu+mehOmegemdv+mfjumfjemglumiremirumkgumkgOmkh+mmnemmnOmng+mmuemmu+mmuumngummvemnh+mqsemro+mrp+msvumsv+mtoOmtoemtn+mzsemzsumztem6p+WDv+WEg+WEsOWDuOWEhuWEh+WDtuWDvuWEi+WEjOWDveWEiuWKi+WKjOWLseWLr+WZiOWZguWZjOWYteWZgeWZiuWZieWZhuWZmFwiXSxbXCJlNTQwXCIsXCLlmZrlmYDlmLPlmL3lmKzlmL7lmLjlmKrlmLrlnJrloqvlop3lorHloqDloqPloq/loqzloqXloqHlo7/lq7/lq7Tlq73lq7flq7blrIPlq7jlrILlq7nlrIHlrIflrIXlrI/lsafltpnltpfltp/ltpLltqLltpPltpXltqDltpzltqHltprltp7luanluZ3luaDluZznt7Plu5vlu57lu6HlvYnlvrLmhovmhoPmhbnmhrHmhrDmhqLmholcIl0sW1wiZTVhMVwiLFwi5oab5oaT5oav5oat5oaf5oaS5oaq5oah5oaN5oWm5oaz5oit5pGu5pGw5pKW5pKg5pKF5pKX5pKc5pKP5pKL5pKK5pKM5pKj5pKf5pGo5pKx5pKY5pW25pW65pW55pW75pay5paz5pq15pqw5pqp5pqy5pq35pqq5pqv5qiA5qiG5qiX5qel5qe45qiV5qex5qek5qig5qe/5qes5qei5qib5qid5qe+5qin5qey5qeu5qiU5qe35qen5qmA5qiI5qem5qe75qiN5qe85qer5qiJ5qiE5qiY5qil5qiP5qe25qim5qiH5qe05qiW5q2R5q6l5q6j5q6i5q6m5rCB5rCA5q+/5rCC5r2B5rym5r2+5r6H5r+G5r6SXCJdLFtcImU2NDBcIixcIua+jea+iea+jOa9oua9j+a+hea9mua+lua9tua9rOa+gua9lea9sua9kua9kOa9l+a+lOa+k+a9nea8gOa9oea9q+a9vea9p+a+kOa9k+a+i+a9qea9v+a+lea9o+a9t+a9qua9u+eGsueGr+eGm+eGsOeGoOeGmueGqeeGteeGneeGpeeGnueGpOeGoeeGqueGnOeGp+eGs+eKmOeKmueNmOeNkueNnueNn+eNoOeNneeNm+eNoeeNmueNmVwiXSxbXCJlNmExXCIsXCLnjaLnkofnkonnkornkobnkoHnkb3nkoXnkojnkbznkbnnlIjnlIfnlb7nmKXnmJ7nmJnnmJ3nmJznmKPnmJrnmKjnmJvnmpznmp3nmp7nmpvnno3nno/nnonnnojno43norvno4/no4zno5Hno47no5Tno4jno4Pno4Tno4nnpprnpqHnpqDnppznpqLnppvmrbbnqLnnqrLnqrTnqrPnrrfnr4vnrr7nrqznr47nrq/nrrnnr4rnrrXns4Xns4jns4zns4vnt7fnt5vnt6rnt6fnt5fnt6HnuIPnt7rnt6bnt7bnt7Hnt7Dnt67nt5/nvbbnvqznvrDnvq3nv63nv6vnv6rnv6znv6bnv6jogaTogafohqPohp9cIl0sW1wiZTc0MFwiLFwi6Iae6IaV6Iai6IaZ6IaX6IiW6ImP6ImT6ImS6ImQ6ImO6ImR6JSk6JS76JSP6JSA6JSp6JSO6JSJ6JSN6JSf6JSK6JSn6JSc6JO76JSr6JO66JSI6JSM6JO06JSq6JOy6JSV6JO36JOr6JOz6JO86JSS6JOq6JOp6JSW6JO+6JSo6JSd6JSu6JSC6JO96JSe6JO26JSx6JSm6JOn6JOo6JOw6JOv6JO56JSY6JSg6JSw6JSL6JSZ6JSv6JmiXCJdLFtcImU3YTFcIixcIuidluido+idpOidt+ifoeids+idmOidlOidm+idkuidoeidmuidkeidnuidreidquidkOidjuidn+idneidr+idrOiduuidruidnOidpeidj+idu+idteidouidp+idqeihmuikheikjOiklOiki+ikl+ikmOikmeikhuikluikkeikjuikieimouimpOimo+inreinsOinrOirj+irhuiquOirk+irkeirlOirleiqu+irl+iqvuirgOirheirmOirg+iquuiqveirmeiwvuixjeiyj+izpeizn+izmeizqOizmuizneizp+i2oOi2nOi2oei2m+i4oOi4o+i4pei4pOi4rui4lei4m+i4lui4kei4mei4pui4p1wiXSxbXCJlODQwXCIsXCLouJTouJLouJjouJPouJzouJfouJrovKzovKTovJjovJrovKDovKPovJbovJfpgbPpgbDpga/pgafpgavphK/phKvphKnphKrphLLphKbphK7phoXphobphorphoHphoLphoTphoDpi5Dpi4Ppi4Tpi4Dpi5npirbpi4/pi7Hpi5/pi5jpi6npi5fpi53pi4zpi6/pi4Lpi6jpi4rpi4jpi47pi6bpi43pi5Xpi4npi6Dpi57pi6fpi5Hpi5NcIl0sW1wiZThhMVwiLFwi6Yq16Yuh6YuG6Yq06ZW86Zas6Zar6Zau6Zaw6Zqk6Zqi6ZuT6ZyF6ZyI6ZyC6Z2a6Z6K6Z6O6Z6I6Z+Q6Z+P6aCe6aCd6aCm6aCp6aCo6aCg6aCb6aCn6aKy6aSI6aO66aSR6aSU6aSW6aSX6aSV6aec6aeN6aeP6aeT6aeU6aeO6aeJ6aeW6aeY6aeL6aeX6aeM6aqz6aus6aur6auz6auy6aux6a2G6a2D6a2n6a206a2x6a2m6a226a216a2w6a2o6a2k6a2s6bO86bO66bO96bO/6bO36bSH6bSA6bO56bO76bSI6bSF6bSE6bqD6buT6byP6byQ5YSc5YST5YSX5YSa5YSR5Yee5Yy05Y+h5Zmw5Zmg5ZmuXCJdLFtcImU5NDBcIixcIuWZs+WZpuWZo+WZreWZsuWZnuWZt+WcnOWcm+WjiOWiveWjieWiv+WiuuWjguWivOWjhuWsl+WsmeWsm+WsoeWslOWsk+WskOWsluWsqOWsmuWsoOWsnuWvr+W2rOW2seW2qeW2p+W2teW2sOW2ruW2quW2qOW2suW2reW2r+W2tOW5p+W5qOW5puW5r+W7qeW7p+W7puW7qOW7peW9i+W+vOaGneaGqOaGluaHheaGtOaHhuaHgeaHjOaGulwiXSxbXCJlOWExXCIsXCLmhr/mhrjmhozmk5fmk5bmk5Dmk4/mk4nmkr3mkonmk4Pmk5vmk7Pmk5nmlLPmlb/mlbzmlqLmm4jmmr7mm4Dmm4rmm4vmm4/mmr3mmrvmmrrmm4zmnKPmqLTmqabmqYnmqafmqLLmqajmqL7mqZ3mqa3mqbbmqZvmqZHmqKjmqZrmqLvmqL/mqYHmqarmqaTmqZDmqY/mqZTmqa/mqanmqaDmqLzmqZ7mqZbmqZXmqY3mqY7mqYbmrZXmrZTmrZbmrqfmrqrmrqvmr4jmr4fmsITmsIPmsIbmvq3mv4vmvqPmv4fmvrzmv47mv4jmvZ7mv4Tmvr3mvp7mv4rmvqjngITmvqXmvq7mvrrmvqzmvqrmv4/mvr/mvrhcIl0sW1wiZWE0MFwiLFwi5r6i5r+J5r6r5r+N5r6v5r6y5r6w54eF54eC54a/54a454eW54eA54eB54eL54eU54eK54eH54eP54a954eY54a854eG54ea54eb54qd54qe542p542m542n542s542l542r542q55G/55Ka55Kg55KU55KS55KV55Kh55SL55aA55iv55it55ix55i955iz55i855i155iy55iw55q755um556a556d556h556c556b556i556j556V556ZXCJdLFtcImVhYTFcIixcIueel+ejneejqeejpeejquejnuejo+ejm+ejoeejouejreejn+ejoOempOephOepiOeph+eqtuequOeqteeqseeqt+evnuevo+evp+evneevleevpeevmuevqOevueevlOevquevouevnOevq+evmOevn+ezkuezlOezl+ezkOezkee4kue4oee4l+e4jOe4n+e4oOe4k+e4jue4nOe4lee4mue4oue4i+e4j+e4lue4jee4lOe4pee4pOe9g+e9u+e9vOe9uue+see/r+iAquiAqeiBrOiGseiGpuiGruiGueiGteiGq+iGsOiGrOiGtOiGsuiGt+iGp+iHsuiJleiJluiJl+iVluiVheiVq+iVjeiVk+iVoeiVmFwiXSxbXCJlYjQwXCIsXCLolYDolYbolaTolYHolaLolYTolZHolYfolaPolL7olZvolbHolY7ola7olbXolZXolafolaDolozolabolZ3olZTolaXolazomaPomaXomaTonpvono/onpfonpPonpLonojonoHonpbonpjonbnonofonqPonoXonpDonpHonp3onoTonpTonpzonprononopJ7opKbopLDopK3opK7opKfopLHopKLopKnopKPopK/opKzopJ/op7Hoq6BcIl0sW1wiZWJhMVwiLFwi6Kui6Kuy6Ku06Ku16Kud6KyU6Kuk6Kuf6Kuw6KuI6Kue6Kuh6Kuo6Ku/6Kuv6Ku76LKR6LKS6LKQ6LO16LOu6LOx6LOw6LOz6LWs6LWu6Lal6Lan6Liz6Li+6Li46LmA6LmF6Li26Li86Li96LmB6Liw6Li/6Lq96Ly26Lyu6Ly16Lyy6Ly56Ly36Ly06YG26YG56YG76YKG6YO66YSz6YS16YS26YaT6YaQ6YaR6YaN6YaP6Yyn6Yye6YyI6Yyf6YyG6YyP6Y266Yy46Yy86Yyb6Yyj6YyS6YyB6Y2G6Yyt6YyO6YyN6YuL6Yyd6Yu66Yyl6YyT6Yu56Yu36Yy06YyC6Yyk6Yu/6Yyp6Yy56Yy16Yyq6YyU6YyMXCJdLFtcImVjNDBcIixcIumMi+mLvumMiemMgOmLu+mMlumWvOmXjemWvumWuemWuumWtumWv+mWtemWvemaqemblOmci+mckumckOmememel+melOmfsOmfuOmgtemgr+mgsumkpOmkn+mkp+mkqemmnumnrumnrOmnpemnpOmnsOmno+mnqumnqemnp+mquemqv+mqtOmqu+mrtumruumruemrt+mss+mugOmuhemuh+mtvOmtvumtu+mugumuk+mukumukOmtuumulVwiXSxbXCJlY2ExXCIsXCLprb3projptKXptJfptKDptJ7ptJTptKnptJ3ptJjptKLptJDptJnptJ/puojpuobpuofpuq7puq3pu5Xpu5bpu7rpvJLpvL3lhKblhKXlhKLlhKTlhKDlhKnli7TlmpPlmozlmo3lmoblmoTlmoPlmb7lmoLlmb/lmoHlo5blo5Tlo4/lo5LlrK3lrKXlrLLlrKPlrKzlrKflrKblrK/lrK7lrbvlr7Hlr7Lltrfluazluarlvr7lvrvmh4PmhrXmhrzmh6fmh6Dmh6Xmh6Tmh6jmh57mk6/mk6nmk6Pmk6vmk6Tmk6jmloHmloDmlrbml5rmm5Lmqo3mqpbmqoHmqqXmqonmqp/mqpvmqqHmqp7mqofmqpPmqo5cIl0sW1wiZWQ0MFwiLFwi5qqV5qqD5qqo5qqk5qqR5qm/5qqm5qqa5qqF5qqM5qqS5q2b5q6t5rCJ5r+M5r6p5r+05r+U5r+j5r+c5r+t5r+n5r+m5r+e5r+y5r+d5r+i5r+o54eh54ex54eo54ey54ek54ew54ei542z542u542v55KX55Ky55Kr55KQ55Kq55Kt55Kx55Kl55Kv55SQ55SR55SS55SP55aE55mD55mI55mJ55mH55qk55up5561556r556y55635562XCJdLFtcImVkYTFcIixcIueetOeeseeeqOefsOejs+ejveekgueju+ejvOejsuekheejueejvuekhOemq+emqOepnOepm+epluepmOeplOepmueqvuergOergeewheewj+evsuewgOevv+evu+ewjuevtOewi+evs+ewguewieewg+ewgeevuOevveewhuevsOevseewkOewiuezqOe4ree4vOe5gue4s+mhiOe4uOe4que5iee5gOe5h+e4qee5jOe4sOe4u+e4tue5hOe4uue9hee9v+e9vue9vee/tOe/suiArOiGu+iHhOiHjOiHiuiHheiHh+iGvOiHqeiJm+iJmuiJnOiWg+iWgOiWj+iWp+iWleiWoOiWi+iWo+iVu+iWpOiWmuiWnlwiXSxbXCJlZTQwXCIsXCLolbfolbzolonolqHolbrolbjolZfolo7olpbolobolo3olpnolp3oloHolqLoloLolojoloXolbnolbbolpjolpDolp/omajonr7onqronq3on4XonrDonqzonrnonrXonrzonq7on4non4Pon4Lon4zonrfonq/on4Ton4ronrTonrbonr/onrjonr3on57onrLopLXopLPopLzopL7opYHopZLopLfopYLopq3opq/opq7op7Lop7PorJ5cIl0sW1wiZWVhMVwiLFwi6KyY6KyW6KyR6KyF6KyL6Kyi6KyP6KyS6KyV6KyH6KyN6KyI6KyG6Kyc6KyT6Kya6LGP6LGw6LGy6LGx6LGv6LKV6LKU6LO56LWv6LmO6LmN6LmT6LmQ6LmM6LmH6L2D6L2A6YKF6YG+6YS46Yaa6Yai6Yab6YaZ6Yaf6Yah6Yad6Yag6Y6h6Y6D6Y6v6Y2k6Y2W6Y2H6Y286Y2Y6Y2c6Y226Y2J6Y2Q6Y2R6Y2g6Y2t6Y6P6Y2M6Y2q6Y256Y2X6Y2V6Y2S6Y2P6Y2x6Y236Y276Y2h6Y2e6Y2j6Y2n6Y6A6Y2O6Y2Z6ZeH6ZeA6ZeJ6ZeD6ZeF6Za36Zqu6Zqw6Zqs6Zyg6Zyf6ZyY6Zyd6ZyZ6Z6a6Z6h6Z6cXCJdLFtcImVmNDBcIixcIumenumenemflemflOmfsemhgemhhOmhiumhiemhhemhg+mkpemkq+mkrOmkqumks+mksumkr+mkremksemksOmmmOmmo+mmoemogumnuumntOmnt+mnuemnuOmntumnu+mnvemnvumnvOmog+mqvumrvumrvemsgemrvOmtiOmumumuqOmunumum+mupumuoemupemupOmuhumuoumuoOmur+m0s+m1gem1p+m0tum0rum0r+m0sem0uOm0sFwiXSxbXCJlZmExXCIsXCLptYXptYLptYPptL7ptLfptYDptL3nv7XptK3puorpuonpuo3purDpu4jpu5rpu7vpu7/pvKTpvKPpvKLpvZTpvqDlhLHlhK3lhK7lmpjlmpzlmpflmprlmp3lmpnlpbDlrLzlsanlsarlt4Dlua3lua7mh5jmh5/mh63mh67mh7Hmh6rmh7Dmh6vmh5bmh6nmk7/mlITmk73mk7jmlIHmlIPmk7zmlpTml5vmm5rmm5vmm5jmq4Xmqrnmqr3mq6Hmq4bmqrrmqrbmqrfmq4fmqrTmqq3mrZ7mr4nmsIvngIfngIzngI3ngIHngIXngJTngI7mv7/ngIDmv7vngKbmv7zmv7fngIrniIHnh7/nh7nniIPnh73njbZcIl0sW1wiZjA0MFwiLFwi55K455OA55K155OB55K+55K255K755OC55SU55ST55mc55mk55mZ55mQ55mT55mX55ma55qm55q955us55+C556656O/56SM56ST56SU56SJ56SQ56SS56SR56at56as56mf57Cc57Cp57CZ57Cg57Cf57Ct57Cd57Cm57Co57Ci57Cl57Cw57mc57mQ57mW57mj57mY57mi57mf57mR57mg57mX57mT5761576z57+357+46IG16IeR6IeSXCJdLFtcImYwYTFcIixcIuiHkOiJn+iJnuiWtOiXhuiXgOiXg+iXguiWs+iWteiWveiXh+iXhOiWv+iXi+iXjuiXiOiXheiWseiWtuiXkuiYpOiWuOiWt+iWvuiZqeifp+ifpuifouifm+ifq+ifquifpeifn+ifs+ifpOiflOifnOifk+ifreifmOifo+iepOifl+ifmeiggeiftOifqOifneilk+ili+ilj+iljOilhuilkOilkeilieisquisp+iso+iss+issOisteith+isr+isvOisvuisseispeist+ispuistuisruispOisu+isveisuuixguixteiymeiymOiyl+izvui0hOi0gui0gOi5nOi5oui5oOi5l+i5lui5nui5pei5p1wiXSxbXCJmMTQwXCIsXCLouZvouZrouaHouZ3ouanouZTovYbovYfovYjovYvphKjphLrphLvphL7phqjphqXphqfphq/phqrpjrXpjozpjpLpjrfpjpvpjp3pjonpjqfpjo7pjqrpjp7pjqbpjpXpjojpjpnpjp/pjo3pjrHpjpHpjrLpjqTpjqjpjrTpjqPpjqXpl5Lpl5Ppl5HpmrPpm5fpm5rlt4Lpm5/pm5jpm53pnKPpnKLpnKXpnqzpnq7pnqjpnqvpnqTpnqpcIl0sW1wiZjFhMVwiLFwi6Z6i6Z6l6Z+X6Z+Z6Z+W6Z+Y6Z+66aGQ6aGR6aGS6aK46aWB6aS86aS66aiP6aiL6aiJ6aiN6aiE6aiR6aiK6aiF6aiH6aiG6auA6auc6ayI6ayE6ayF6ayp6ay16a2K6a2M6a2L6a+H6a+G6a+D6a6/6a+B6a616a646a+T6a626a+E6a656a696bWc6bWT6bWP6bWK6bWb6bWL6bWZ6bWW6bWM6bWX6bWS6bWU6bWf6bWY6bWa6bqO6bqM6buf6byB6byA6byW6byl6byr6byq6byp6byo6b2M6b2V5YS05YS15YqW5Yu35Y605Zqr5Zqt5Zqm5Zqn5Zqq5Zqs5aOa5aOd5aOb5aSS5ay95ay+5ay/5beD5bmwXCJdLFtcImYyNDBcIixcIuW+v+aHu+aUh+aUkOaUjeaUieaUjOaUjuaWhOaXnuaXneabnuarp+aroOarjOarkearmeari+arn+arnOarkOarq+arj+arjearnuatoOausOawjOeAmeeAp+eAoOeAlueAq+eAoeeAoueAo+eAqeeAl+eApOeAnOeAqueIjOeIiueIh+eIgueIheeKpeeKpueKpOeKo+eKoeeTi+eTheeSt+eTg+eUlueZoOefieefiuefhOefseekneekm1wiXSxbXCJmMmExXCIsXCLnpKHnpJznpJfnpJ7nprDnqafnqajnsLPnsLznsLnnsKznsLvns6zns6rnubbnubXnubjnubDnubfnua/nubrnubLnubTnuajnvYvnvYrnvoPnvobnvrfnv73nv77ogbjoh5foh5XoiaToiaHoiaPol6vol7Hol63ol5nol6Hol6jol5rol5fol6zol7Lol7jol5jol5/ol6Pol5zol5Hol7Dol6bol6/ol57ol6LooIDon7rooIPon7bon7fooInooIzooIvooIbon7zooIjon7/ooIrooILopaLopZropZvopZfopaHopZzopZjopZ3opZnopojoprfoprbop7borZDorYjorYrorYDorZPorZborZTorYvorZVcIl0sW1wiZjM0MFwiLFwi6K2R6K2C6K2S6K2X6LGD6LG36LG26LKa6LSG6LSH6LSJ6Las6Laq6Lat6Lar6Lmt6Lm46Lmz6Lmq6Lmv6Lm76LuC6L2S6L2R6L2P6L2Q6L2T6L606YWA6YS/6Yaw6Yat6Y+e6Y+H6Y+P6Y+C6Y+a6Y+Q6Y+56Y+s6Y+M6Y+Z6Y6p6Y+m6Y+K6Y+U6Y+u6Y+j6Y+V6Y+E6Y+O6Y+A6Y+S6Y+n6ZW96Zea6Zeb6Zuh6Zyp6Zyr6Zys6Zyo6ZymXCJdLFtcImYzYTFcIixcIumes+met+metumfnemfnumfn+mhnOmhmemhnemhl+miv+mivemiu+mivumliOmlh+mlg+mmpummp+momumolemopemonemopOmom+mooumooOmop+moo+monumonOmolOmrgumsi+msiumsjumsjOmst+mvqumvq+mvoOmvnumvpOmvpumvoumvsOmvlOmvl+mvrOmvnOmvmemvpemvlemvoemvmum1t+m2gem2ium2hOm2iOm1sem2gOm1uOm2hum2i+m2jOm1vem1q+m1tOm1tem1sOm1qem2hem1s+m1u+m2gum1r+m1uem1v+m2h+m1qOm6lOm6kem7gOm7vOm8rem9gOm9gem9jem9lum9l+m9mOWMt+WaslwiXSxbXCJmNDQwXCIsXCLlmrXlmrPlo6PlrYXlt4blt4flu67lu6/lv4Dlv4Hmh7nmlJfmlJbmlJXmlJPml5/mm6jmm6Pmm6Tmq7Pmq7Dmq6rmq6jmq7nmq7Hmq67mq6/ngLzngLXngK/ngLfngLTngLHngYLngLjngL/ngLrngLnngYDngLvngLPngYHniJPniJTniqjnjb3njbznkrrnmqvnmqrnmr7nm63nn4znn47nn4/nn43nn7LnpKXnpKPnpKfnpKjnpKTnpKlcIl0sW1wiZjRhMVwiLFwi56ay56mu56ms56mt56u357GJ57GI57GK57GH57GF57Ou57m757m+57qB57qA576657+/6IG56Ieb6IeZ6IiL6Imo6Imp6Jii6Je/6JiB6Je+6Jib6JiA6Je26JiE6JiJ6JiF6JiM6Je96KCZ6KCQ6KCR6KCX6KCT6KCW6KWj6KWm6Ka56Ke36K2g6K2q6K2d6K2o6K2j6K2l6K2n6K2t6Lau6LqG6LqI6LqE6L2Z6L2W6L2X6L2V6L2Y6L2a6YKN6YWD6YWB6Ya36Ya16Yay6Yaz6ZCL6ZCT6Y+76ZCg6ZCP6ZCU6Y++6ZCV6ZCQ6ZCo6ZCZ6ZCN6Y+16ZCA6Y+36ZCH6ZCO6ZCW6ZCS6Y+66ZCJ6Y+46ZCK6Y+/XCJdLFtcImY1NDBcIixcIumPvOmQjOmPtumQkemQhumXnumXoOmXn+mcrumcr+meuemeu+mfvemfvumhoOmhoumho+mhn+mjgemjgumlkOmljumlmemljOmli+mlk+mosumotOmosemorOmoqumotumoqemorumouOmoremrh+mriumrhumskOmskumskemwi+mwiOmvt+mwhemwkumvuOmxgOmwh+mwjumwhumwl+mwlOmwiem2n+m2mem2pOm2nem2kum2mOm2kOm2m1wiXSxbXCJmNWExXCIsXCLptqDptpTptpzptqrptpfptqHptprptqLptqjptp7ptqPptr/ptqnptpbptqbptqfpupnpupvpuprpu6Xpu6Tpu6fpu6bpvLDpvK7pvZvpvaDpvZ7pvZ3pvZnpvpHlhLrlhLnlipjlipflm4Plmr3lmr7lrYjlrYflt4vlt4/lu7Hmh73mlJvmrILmq7zmrIPmq7jmrIDngYPngYTngYrngYjngYnngYXngYbniJ3niJrniJnnjb7nlJfnmarnn5DnpK3npLHnpK/nsZTnsZPns7Lnuornuofnuojnuovnuobnuo3nvY3nvrvogLDoh53omJjomKromKbomJ/omKPomJzomJnomKfomK7omKHomKDomKnomJ7omKVcIl0sW1wiZjY0MFwiLFwi6KCp6KCd6KCb6KCg6KCk6KCc6KCr6KGK6KWt6KWp6KWu6KWr6Ke66K256K246K2F6K266K276LSQ6LSU6Lav6LqO6LqM6L2e6L2b6L2d6YWG6YWE6YWF6Ya56ZC/6ZC76ZC26ZCp6ZC96ZC86ZCw6ZC56ZCq6ZC36ZCs6ZGA6ZCx6Zel6Zek6Zej6Zy16Zy66Z6/6Z+h6aGk6aOJ6aOG6aOA6aWY6aWW6ai56ai96amG6amE6amC6amB6ai6XCJdLFtcImY2YTFcIixcIumov+mrjemslemsl+msmOmslumsuumtkumwq+mwnemwnOmwrOmwo+mwqOmwqemwpOmwoem2t+m2tum2vOm3gem3h+m3ium3j+m2vum3hem3g+m2u+m2tem3jum2uem2uum2rOm3iOm2sem2rem3jOm2s+m3jem2sum5uum6nOm7q+m7rum7rem8m+m8mOm8mum8sem9jum9pem9pOm+kuS6ueWbhuWbheWbi+WlseWti+WtjOW3leW3keW7suaUoeaUoOaUpuaUouasi+asiOasieawjeeBleeBlueBl+eBkueInueIn+eKqeeNv+eTmOeTleeTmeeTl+eZreeareekteemtOepsOepseexl+exnOexmeexm+exmlwiXSxbXCJmNzQwXCIsXCLns7Tns7HnupHnvY/nvofoh57oiavomLTomLXomLPomKzomLLomLbooKzooKjooKbooKrooKXopbHopr/opr7op7vorb7oroToroLoroboroXorb/otJXoupXoupTouproupLoupDoupboupfovaDovaLphYfpkYzpkZDpkYrpkYvpkY/pkYfpkYXpkYjpkYnpkYbpnL/pn6Ppoarpoanpo4vppZTppZvpqY7pqZPpqZTpqYzpqY/pqYjpqYpcIl0sW1wiZjdhMVwiLFwi6amJ6amS6amQ6auQ6ayZ6ayr6ay76a2W6a2V6bGG6bGI6bC/6bGE6bC56bCz6bGB6bC86bC36bC06bCy6bC96bC26beb6beS6bee6bea6beL6beQ6bec6beR6bef6bep6beZ6beY6beW6be16beV6bed6bq26buw6by16byz6byy6b2C6b2r6b6V6b6i5YS95YqZ5aOo5aOn5aWy5a2N5beY6KCv5b2P5oiB5oiD5oiE5pSp5pSl5paW5pur5qyR5qyS5qyP5q+K54Gb54Ga54ii546C546B546D55mw55+U57Gn57Gm57qV6Ims6Ji66JmA6Ji56Ji86Jix6Ji76Ji+6KCw6KCy6KCu6KCz6KW26KW06KWz6Ke+XCJdLFtcImY4NDBcIixcIuiujOiujuiui+iuiOixhei0mei6mOi9pOi9o+mGvOmRoumRlemRnemRl+mRnumfhOmfhemggOmplumpmemsnumsn+msoOmxkumxmOmxkOmxiumxjemxi+mxlemxmemxjOmxjum3u+m3t+m3r+m3o+m3q+m3uOm3pOm3tum3oem3rum3pum3sum3sOm3oum3rOm3tOm3s+m3qOm3rem7gum7kOm7sum7s+m8hum8nOm8uOm8t+m8tum9g+m9j1wiXSxbXCJmOGExXCIsXCLpvbHpvbDpva7pva/lm5Plm43lrY7lsa3mlK3mm63mm67mrJPngZ/ngaHngZ3ngaDniKPnk5vnk6Xnn5XnpLjnprfnprbnsarnupfnvonoia3omYPooLjooLfooLXooYvorpTorpXoup7oup/ouqDoup3phr7phr3ph4Lpkavpkajpkanpm6XpnYbpnYPpnYfpn4fpn6XpqZ7pq5XprZnpsaPpsafpsabpsaLpsZ7psaDpuILpt77puIfpuIPpuIbpuIXpuIDpuIHpuInpt7/pt73puITpuqDpvJ7pvYbpvbTpvbXpvbblm5TmlK7mlrjmrJjmrJnmrJfmrJrngaLniKbniqrnn5jnn5nnpLnnsannsavns7bnuppcIl0sW1wiZjk0MFwiLFwi57qY57qb57qZ6Ieg6Ieh6JmG6JmH6JmI6KW56KW66KW86KW76Ke/6K6Y6K6Z6Lql6Lqk6Lqj6ZGu6ZGt6ZGv6ZGx6ZGz6Z2J6aGy6aWf6bGo6bGu6bGt6biL6biN6biQ6biP6biS6biR6bqh6bu16byJ6b2H6b246b276b266b255Zye54Gm57Gv6KC86Lay6Lqm6YeD6ZG06ZG46ZG26ZG16amg6bG06bGz6bGx6bG16biU6biT6bu26byKXCJdLFtcImY5YTFcIixcIum+pOeBqOeBpeezt+iZquigvuigveigv+iunuiynOi6qei7iemdi+mhs+mhtOmjjOmloemmq+mppOmppumpp+mspOm4lem4l+m9iOaIh+asnueIp+iZjOi6qOmSgumSgOmSgempqempqOmsrum4meeIqeiZi+iun+mSg+mxuem6t+eZtempq+mxuum4neeBqeeBqum6pOm9vum9iem+mOeigemKueijj+Wiu+aBkueyp+WruuKVlOKVpuKVl+KVoOKVrOKVo+KVmuKVqeKVneKVkuKVpOKVleKVnuKVquKVoeKVmOKVp+KVm+KVk+KVpeKVluKVn+KVq+KVouKVmeKVqOKVnOKVkeKVkOKVreKVruKVsOKVr+KWk1wiXV1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdGFibGVzL2NwOTUwLmpzb25cbi8vIG1vZHVsZSBpZCA9IDgyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogdW5waXBlXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSB1bnBpcGVcblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdGhlcmUgYXJlIE5vZGUuanMgcGlwZS1saWtlIGRhdGEgbGlzdGVuZXJzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBoYXNQaXBlRGF0YUxpc3RlbmVycyhzdHJlYW0pIHtcbiAgdmFyIGxpc3RlbmVycyA9IHN0cmVhbS5saXN0ZW5lcnMoJ2RhdGEnKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGxpc3RlbmVyc1tpXS5uYW1lID09PSAnb25kYXRhJykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBVbnBpcGUgYSBzdHJlYW0gZnJvbSBhbGwgZGVzdGluYXRpb25zLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdHJlYW1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiB1bnBpcGUoc3RyZWFtKSB7XG4gIGlmICghc3RyZWFtKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgc3RyZWFtIGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RyZWFtLnVucGlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIG5ldy1zdHlsZVxuICAgIHN0cmVhbS51bnBpcGUoKVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gTm9kZS5qcyAwLjggaGFja1xuICBpZiAoIWhhc1BpcGVEYXRhTGlzdGVuZXJzKHN0cmVhbSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBsaXN0ZW5lclxuICB2YXIgbGlzdGVuZXJzID0gc3RyZWFtLmxpc3RlbmVycygnY2xvc2UnKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGlzdGVuZXIgPSBsaXN0ZW5lcnNbaV1cblxuICAgIGlmIChsaXN0ZW5lci5uYW1lICE9PSAnY2xlYW51cCcgJiYgbGlzdGVuZXIubmFtZSAhPT0gJ29uY2xvc2UnKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIGludm9rZSB0aGUgbGlzdGVuZXJcbiAgICBsaXN0ZW5lci5jYWxsKHN0cmVhbSlcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3VucGlwZS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gODNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiemxpYlwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcInpsaWJcIlxuLy8gbW9kdWxlIGlkID0gODRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBtaW1lLXR5cGVzXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZGIgPSByZXF1aXJlKCdtaW1lLWRiJylcbnZhciBleHRuYW1lID0gcmVxdWlyZSgncGF0aCcpLmV4dG5hbWVcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgRVhUUkFDVF9UWVBFX1JFR0VYUCA9IC9eXFxzKihbXjtcXHNdKikoPzo7fFxcc3wkKS9cbnZhciBURVhUX1RZUEVfUkVHRVhQID0gL150ZXh0XFwvL2lcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5leHBvcnRzLmNoYXJzZXQgPSBjaGFyc2V0XG5leHBvcnRzLmNoYXJzZXRzID0geyBsb29rdXA6IGNoYXJzZXQgfVxuZXhwb3J0cy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlXG5leHBvcnRzLmV4dGVuc2lvbiA9IGV4dGVuc2lvblxuZXhwb3J0cy5leHRlbnNpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuZXhwb3J0cy5sb29rdXAgPSBsb29rdXBcbmV4cG9ydHMudHlwZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG5cbi8vIFBvcHVsYXRlIHRoZSBleHRlbnNpb25zL3R5cGVzIG1hcHNcbnBvcHVsYXRlTWFwcyhleHBvcnRzLmV4dGVuc2lvbnMsIGV4cG9ydHMudHlwZXMpXG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IGNoYXJzZXQgZm9yIGEgTUlNRSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtib29sZWFufHN0cmluZ31cbiAqL1xuXG5mdW5jdGlvbiBjaGFyc2V0ICh0eXBlKSB7XG4gIGlmICghdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFRPRE86IHVzZSBtZWRpYS10eXBlclxuICB2YXIgbWF0Y2ggPSBFWFRSQUNUX1RZUEVfUkVHRVhQLmV4ZWModHlwZSlcbiAgdmFyIG1pbWUgPSBtYXRjaCAmJiBkYlttYXRjaFsxXS50b0xvd2VyQ2FzZSgpXVxuXG4gIGlmIChtaW1lICYmIG1pbWUuY2hhcnNldCkge1xuICAgIHJldHVybiBtaW1lLmNoYXJzZXRcbiAgfVxuXG4gIC8vIGRlZmF1bHQgdGV4dC8qIHRvIHV0Zi04XG4gIGlmIChtYXRjaCAmJiBURVhUX1RZUEVfUkVHRVhQLnRlc3QobWF0Y2hbMV0pKSB7XG4gICAgcmV0dXJuICdVVEYtOCdcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGZ1bGwgQ29udGVudC1UeXBlIGhlYWRlciBnaXZlbiBhIE1JTUUgdHlwZSBvciBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7Ym9vbGVhbnxzdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gY29udGVudFR5cGUgKHN0cikge1xuICAvLyBUT0RPOiBzaG91bGQgdGhpcyBldmVuIGJlIGluIHRoaXMgbW9kdWxlP1xuICBpZiAoIXN0ciB8fCB0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgdmFyIG1pbWUgPSBzdHIuaW5kZXhPZignLycpID09PSAtMVxuICAgID8gZXhwb3J0cy5sb29rdXAoc3RyKVxuICAgIDogc3RyXG5cbiAgaWYgKCFtaW1lKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBUT0RPOiB1c2UgY29udGVudC10eXBlIG9yIG90aGVyIG1vZHVsZVxuICBpZiAobWltZS5pbmRleE9mKCdjaGFyc2V0JykgPT09IC0xKSB7XG4gICAgdmFyIGNoYXJzZXQgPSBleHBvcnRzLmNoYXJzZXQobWltZSlcbiAgICBpZiAoY2hhcnNldCkgbWltZSArPSAnOyBjaGFyc2V0PScgKyBjaGFyc2V0LnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIHJldHVybiBtaW1lXG59XG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IGV4dGVuc2lvbiBmb3IgYSBNSU1FIHR5cGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge2Jvb2xlYW58c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGV4dGVuc2lvbiAodHlwZSkge1xuICBpZiAoIXR5cGUgfHwgdHlwZW9mIHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBUT0RPOiB1c2UgbWVkaWEtdHlwZXJcbiAgdmFyIG1hdGNoID0gRVhUUkFDVF9UWVBFX1JFR0VYUC5leGVjKHR5cGUpXG5cbiAgLy8gZ2V0IGV4dGVuc2lvbnNcbiAgdmFyIGV4dHMgPSBtYXRjaCAmJiBleHBvcnRzLmV4dGVuc2lvbnNbbWF0Y2hbMV0udG9Mb3dlckNhc2UoKV1cblxuICBpZiAoIWV4dHMgfHwgIWV4dHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXh0c1swXVxufVxuXG4vKipcbiAqIExvb2t1cCB0aGUgTUlNRSB0eXBlIGZvciBhIGZpbGUgcGF0aC9leHRlbnNpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm4ge2Jvb2xlYW58c3RyaW5nfVxuICovXG5cbmZ1bmN0aW9uIGxvb2t1cCAocGF0aCkge1xuICBpZiAoIXBhdGggfHwgdHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBnZXQgdGhlIGV4dGVuc2lvbiAoXCJleHRcIiBvciBcIi5leHRcIiBvciBmdWxsIHBhdGgpXG4gIHZhciBleHRlbnNpb24gPSBleHRuYW1lKCd4LicgKyBwYXRoKVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnN1YnN0cigxKVxuXG4gIGlmICghZXh0ZW5zaW9uKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZXhwb3J0cy50eXBlc1tleHRlbnNpb25dIHx8IGZhbHNlXG59XG5cbi8qKlxuICogUG9wdWxhdGUgdGhlIGV4dGVuc2lvbnMgYW5kIHR5cGVzIG1hcHMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBvcHVsYXRlTWFwcyAoZXh0ZW5zaW9ucywgdHlwZXMpIHtcbiAgLy8gc291cmNlIHByZWZlcmVuY2UgKGxlYXN0IC0+IG1vc3QpXG4gIHZhciBwcmVmZXJlbmNlID0gWyduZ2lueCcsICdhcGFjaGUnLCB1bmRlZmluZWQsICdpYW5hJ11cblxuICBPYmplY3Qua2V5cyhkYikuZm9yRWFjaChmdW5jdGlvbiBmb3JFYWNoTWltZVR5cGUgKHR5cGUpIHtcbiAgICB2YXIgbWltZSA9IGRiW3R5cGVdXG4gICAgdmFyIGV4dHMgPSBtaW1lLmV4dGVuc2lvbnNcblxuICAgIGlmICghZXh0cyB8fCAhZXh0cy5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIG1pbWUgLT4gZXh0ZW5zaW9uc1xuICAgIGV4dGVuc2lvbnNbdHlwZV0gPSBleHRzXG5cbiAgICAvLyBleHRlbnNpb24gLT4gbWltZVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXh0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGV4dGVuc2lvbiA9IGV4dHNbaV1cblxuICAgICAgaWYgKHR5cGVzW2V4dGVuc2lvbl0pIHtcbiAgICAgICAgdmFyIGZyb20gPSBwcmVmZXJlbmNlLmluZGV4T2YoZGJbdHlwZXNbZXh0ZW5zaW9uXV0uc291cmNlKVxuICAgICAgICB2YXIgdG8gPSBwcmVmZXJlbmNlLmluZGV4T2YobWltZS5zb3VyY2UpXG5cbiAgICAgICAgaWYgKHR5cGVzW2V4dGVuc2lvbl0gIT09ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nICYmXG4gICAgICAgICAgKGZyb20gPiB0byB8fCAoZnJvbSA9PT0gdG8gJiYgdHlwZXNbZXh0ZW5zaW9uXS5zdWJzdHIoMCwgMTIpID09PSAnYXBwbGljYXRpb24vJykpKSB7XG4gICAgICAgICAgLy8gc2tpcCB0aGUgcmVtYXBwaW5nXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBzZXQgdGhlIGV4dGVuc2lvbiAtPiBtaW1lXG4gICAgICB0eXBlc1tleHRlbnNpb25dID0gdHlwZVxuICAgIH1cbiAgfSlcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9taW1lLXR5cGVzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA4NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgaGV4VGFibGUgPSAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgICAgICAgYXJyYXkucHVzaCgnJScgKyAoKGkgPCAxNiA/ICcwJyA6ICcnKSArIGkudG9TdHJpbmcoMTYpKS50b1VwcGVyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyYXk7XG59KCkpO1xuXG52YXIgY29tcGFjdFF1ZXVlID0gZnVuY3Rpb24gY29tcGFjdFF1ZXVlKHF1ZXVlKSB7XG4gICAgdmFyIG9iajtcblxuICAgIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBxdWV1ZS5wb3AoKTtcbiAgICAgICAgb2JqID0gaXRlbS5vYmpbaXRlbS5wcm9wXTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICB2YXIgY29tcGFjdGVkID0gW107XG5cbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb2JqLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpbal0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBhY3RlZC5wdXNoKG9ialtqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpdGVtLm9ialtpdGVtLnByb3BdID0gY29tcGFjdGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbmV4cG9ydHMuYXJyYXlUb09iamVjdCA9IGZ1bmN0aW9uIGFycmF5VG9PYmplY3Qoc291cmNlLCBvcHRpb25zKSB7XG4gICAgdmFyIG9iaiA9IG9wdGlvbnMgJiYgb3B0aW9ucy5wbGFpbk9iamVjdHMgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzb3VyY2VbaV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBvYmpbaV0gPSBzb3VyY2VbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2JqO1xufTtcblxuZXhwb3J0cy5tZXJnZSA9IGZ1bmN0aW9uIG1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgICAgICAgdGFyZ2V0LnB1c2goc291cmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMucGxhaW5PYmplY3RzIHx8IG9wdGlvbnMuYWxsb3dQcm90b3R5cGVzIHx8ICFoYXMuY2FsbChPYmplY3QucHJvdG90eXBlLCBzb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W3NvdXJjZV0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFt0YXJnZXQsIHNvdXJjZV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gW3RhcmdldF0uY29uY2F0KHNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIG1lcmdlVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgIUFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICBtZXJnZVRhcmdldCA9IGV4cG9ydHMuYXJyYXlUb09iamVjdCh0YXJnZXQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICAgIHNvdXJjZS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpKSB7XG4gICAgICAgICAgICBpZiAoaGFzLmNhbGwodGFyZ2V0LCBpKSkge1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXRbaV0gJiYgdHlwZW9mIHRhcmdldFtpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2ldID0gZXhwb3J0cy5tZXJnZSh0YXJnZXRbaV0sIGl0ZW0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2ldID0gaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHNvdXJjZSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzb3VyY2Vba2V5XTtcblxuICAgICAgICBpZiAoaGFzLmNhbGwoYWNjLCBrZXkpKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IGV4cG9ydHMubWVyZ2UoYWNjW2tleV0sIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBtZXJnZVRhcmdldCk7XG59O1xuXG5leHBvcnRzLmFzc2lnbiA9IGZ1bmN0aW9uIGFzc2lnblNpbmdsZVNvdXJjZSh0YXJnZXQsIHNvdXJjZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzb3VyY2UpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgICAgYWNjW2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB0YXJnZXQpO1xufTtcblxuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChzdHIucmVwbGFjZSgvXFwrL2csICcgJykpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG59O1xuXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgICAvLyBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBCcmlhbiBXaGl0ZSAobXNjZGV4KSBmb3IgdGhlIGlvLmpzIGNvcmUgcXVlcnlzdHJpbmcgbGlicmFyeS5cbiAgICAvLyBJdCBoYXMgYmVlbiBhZGFwdGVkIGhlcmUgZm9yIHN0cmljdGVyIGFkaGVyZW5jZSB0byBSRkMgMzk4NlxuICAgIGlmIChzdHIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgdmFyIHN0cmluZyA9IHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnID8gc3RyIDogU3RyaW5nKHN0cik7XG5cbiAgICB2YXIgb3V0ID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjID09PSAweDJEIC8vIC1cbiAgICAgICAgICAgIHx8IGMgPT09IDB4MkUgLy8gLlxuICAgICAgICAgICAgfHwgYyA9PT0gMHg1RiAvLyBfXG4gICAgICAgICAgICB8fCBjID09PSAweDdFIC8vIH5cbiAgICAgICAgICAgIHx8IChjID49IDB4MzAgJiYgYyA8PSAweDM5KSAvLyAwLTlcbiAgICAgICAgICAgIHx8IChjID49IDB4NDEgJiYgYyA8PSAweDVBKSAvLyBhLXpcbiAgICAgICAgICAgIHx8IChjID49IDB4NjEgJiYgYyA8PSAweDdBKSAvLyBBLVpcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBvdXQgKz0gc3RyaW5nLmNoYXJBdChpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICAgICAgICBvdXQgPSBvdXQgKyBoZXhUYWJsZVtjXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgICAgICAgb3V0ID0gb3V0ICsgKGhleFRhYmxlWzB4QzAgfCAoYyA+PiA2KV0gKyBoZXhUYWJsZVsweDgwIHwgKGMgJiAweDNGKV0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyA8IDB4RDgwMCB8fCBjID49IDB4RTAwMCkge1xuICAgICAgICAgICAgb3V0ID0gb3V0ICsgKGhleFRhYmxlWzB4RTAgfCAoYyA+PiAxMildICsgaGV4VGFibGVbMHg4MCB8ICgoYyA+PiA2KSAmIDB4M0YpXSArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgKz0gMTtcbiAgICAgICAgYyA9IDB4MTAwMDAgKyAoKChjICYgMHgzRkYpIDw8IDEwKSB8IChzdHJpbmcuY2hhckNvZGVBdChpKSAmIDB4M0ZGKSk7XG4gICAgICAgIG91dCArPSBoZXhUYWJsZVsweEYwIHwgKGMgPj4gMTgpXVxuICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKChjID4+IDEyKSAmIDB4M0YpXVxuICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKChjID4+IDYpICYgMHgzRildXG4gICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufTtcblxuZXhwb3J0cy5jb21wYWN0ID0gZnVuY3Rpb24gY29tcGFjdCh2YWx1ZSkge1xuICAgIHZhciBxdWV1ZSA9IFt7IG9iajogeyBvOiB2YWx1ZSB9LCBwcm9wOiAnbycgfV07XG4gICAgdmFyIHJlZnMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBxdWV1ZVtpXTtcbiAgICAgICAgdmFyIG9iaiA9IGl0ZW0ub2JqW2l0ZW0ucHJvcF07XG5cbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2pdO1xuICAgICAgICAgICAgdmFyIHZhbCA9IG9ialtrZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCAhPT0gbnVsbCAmJiByZWZzLmluZGV4T2YodmFsKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKHsgb2JqOiBvYmosIHByb3A6IGtleSB9KTtcbiAgICAgICAgICAgICAgICByZWZzLnB1c2godmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYWN0UXVldWUocXVldWUpO1xufTtcblxuZXhwb3J0cy5pc1JlZ0V4cCA9IGZ1bmN0aW9uIGlzUmVnRXhwKG9iaikge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59O1xuXG5leHBvcnRzLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIob2JqKSB7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhKG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iaikpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9xcy9saWIvdXRpbHMuanNcbi8vIG1vZHVsZSBpZCA9IDg2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG52YXIgcGVyY2VudFR3ZW50aWVzID0gLyUyMC9nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICAnZGVmYXVsdCc6ICdSRkMzOTg2JyxcbiAgICBmb3JtYXR0ZXJzOiB7XG4gICAgICAgIFJGQzE3Mzg6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2UuY2FsbCh2YWx1ZSwgcGVyY2VudFR3ZW50aWVzLCAnKycpO1xuICAgICAgICB9LFxuICAgICAgICBSRkMzOTg2OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgUkZDMTczODogJ1JGQzE3MzgnLFxuICAgIFJGQzM5ODY6ICdSRkMzOTg2J1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9xcy9saWIvZm9ybWF0cy5qc1xuLy8gbW9kdWxlIGlkID0gODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicXVlcnlzdHJpbmdcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJxdWVyeXN0cmluZ1wiXG4vLyBtb2R1bGUgaWQgPSA4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV4cHJlc3NcbiAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDEzIFJvbWFuIFNodHlsbWFuXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIFJvdXRlID0gcmVxdWlyZSgnLi9yb3V0ZScpO1xudmFyIExheWVyID0gcmVxdWlyZSgnLi9sYXllcicpO1xudmFyIG1ldGhvZHMgPSByZXF1aXJlKCdtZXRob2RzJyk7XG52YXIgbWl4aW4gPSByZXF1aXJlKCd1dGlscy1tZXJnZScpO1xudmFyIGRlYnVnID0gcmVxdWlyZSgnZGVidWcnKSgnZXhwcmVzczpyb3V0ZXInKTtcbnZhciBkZXByZWNhdGUgPSByZXF1aXJlKCdkZXBkJykoJ2V4cHJlc3MnKTtcbnZhciBmbGF0dGVuID0gcmVxdWlyZSgnYXJyYXktZmxhdHRlbicpO1xudmFyIHBhcnNlVXJsID0gcmVxdWlyZSgncGFyc2V1cmwnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ3NldHByb3RvdHlwZW9mJylcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgb2JqZWN0UmVnRXhwID0gL15cXFtvYmplY3QgKFxcUyspXFxdJC87XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG4vKipcbiAqIEluaXRpYWxpemUgYSBuZXcgYFJvdXRlcmAgd2l0aCB0aGUgZ2l2ZW4gYG9wdGlvbnNgLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtSb3V0ZXJ9IHdoaWNoIGlzIGFuIGNhbGxhYmxlIGZ1bmN0aW9uXG4gKiBAcHVibGljXG4gKi9cblxudmFyIHByb3RvID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fTtcblxuICBmdW5jdGlvbiByb3V0ZXIocmVxLCByZXMsIG5leHQpIHtcbiAgICByb3V0ZXIuaGFuZGxlKHJlcSwgcmVzLCBuZXh0KTtcbiAgfVxuXG4gIC8vIG1peGluIFJvdXRlciBjbGFzcyBmdW5jdGlvbnNcbiAgc2V0UHJvdG90eXBlT2Yocm91dGVyLCBwcm90bylcblxuICByb3V0ZXIucGFyYW1zID0ge307XG4gIHJvdXRlci5fcGFyYW1zID0gW107XG4gIHJvdXRlci5jYXNlU2Vuc2l0aXZlID0gb3B0cy5jYXNlU2Vuc2l0aXZlO1xuICByb3V0ZXIubWVyZ2VQYXJhbXMgPSBvcHRzLm1lcmdlUGFyYW1zO1xuICByb3V0ZXIuc3RyaWN0ID0gb3B0cy5zdHJpY3Q7XG4gIHJvdXRlci5zdGFjayA9IFtdO1xuXG4gIHJldHVybiByb3V0ZXI7XG59O1xuXG4vKipcbiAqIE1hcCB0aGUgZ2l2ZW4gcGFyYW0gcGxhY2Vob2xkZXIgYG5hbWVgKHMpIHRvIHRoZSBnaXZlbiBjYWxsYmFjay5cbiAqXG4gKiBQYXJhbWV0ZXIgbWFwcGluZyBpcyB1c2VkIHRvIHByb3ZpZGUgcHJlLWNvbmRpdGlvbnMgdG8gcm91dGVzXG4gKiB3aGljaCB1c2Ugbm9ybWFsaXplZCBwbGFjZWhvbGRlcnMuIEZvciBleGFtcGxlIGEgXzp1c2VyX2lkXyBwYXJhbWV0ZXJcbiAqIGNvdWxkIGF1dG9tYXRpY2FsbHkgbG9hZCBhIHVzZXIncyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBkYXRhYmFzZSB3aXRob3V0XG4gKiBhbnkgYWRkaXRpb25hbCBjb2RlLFxuICpcbiAqIFRoZSBjYWxsYmFjayB1c2VzIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBtaWRkbGV3YXJlLCB0aGUgb25seSBkaWZmZXJlbmNlXG4gKiBiZWluZyB0aGF0IHRoZSB2YWx1ZSBvZiB0aGUgcGxhY2Vob2xkZXIgaXMgcGFzc2VkLCBpbiB0aGlzIGNhc2UgdGhlIF9pZF9cbiAqIG9mIHRoZSB1c2VyLiBPbmNlIHRoZSBgbmV4dCgpYCBmdW5jdGlvbiBpcyBpbnZva2VkLCBqdXN0IGxpa2UgbWlkZGxld2FyZVxuICogaXQgd2lsbCBjb250aW51ZSBvbiB0byBleGVjdXRlIHRoZSByb3V0ZSwgb3Igc3Vic2VxdWVudCBwYXJhbWV0ZXIgZnVuY3Rpb25zLlxuICpcbiAqIEp1c3QgbGlrZSBpbiBtaWRkbGV3YXJlLCB5b3UgbXVzdCBlaXRoZXIgcmVzcG9uZCB0byB0aGUgcmVxdWVzdCBvciBjYWxsIG5leHRcbiAqIHRvIGF2b2lkIHN0YWxsaW5nIHRoZSByZXF1ZXN0LlxuICpcbiAqICBhcHAucGFyYW0oJ3VzZXJfaWQnLCBmdW5jdGlvbihyZXEsIHJlcywgbmV4dCwgaWQpe1xuICogICAgVXNlci5maW5kKGlkLCBmdW5jdGlvbihlcnIsIHVzZXIpe1xuICogICAgICBpZiAoZXJyKSB7XG4gKiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAqICAgICAgfSBlbHNlIGlmICghdXNlcikge1xuICogICAgICAgIHJldHVybiBuZXh0KG5ldyBFcnJvcignZmFpbGVkIHRvIGxvYWQgdXNlcicpKTtcbiAqICAgICAgfVxuICogICAgICByZXEudXNlciA9IHVzZXI7XG4gKiAgICAgIG5leHQoKTtcbiAqICAgIH0pO1xuICogIH0pO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHJldHVybiB7YXBwfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5wcm90by5wYXJhbSA9IGZ1bmN0aW9uIHBhcmFtKG5hbWUsIGZuKSB7XG4gIC8vIHBhcmFtIGxvZ2ljXG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlcHJlY2F0ZSgncm91dGVyLnBhcmFtKGZuKTogUmVmYWN0b3IgdG8gdXNlIHBhdGggcGFyYW1zJyk7XG4gICAgdGhpcy5fcGFyYW1zLnB1c2gobmFtZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gYXBwbHkgcGFyYW0gZnVuY3Rpb25zXG4gIHZhciBwYXJhbXMgPSB0aGlzLl9wYXJhbXM7XG4gIHZhciBsZW4gPSBwYXJhbXMubGVuZ3RoO1xuICB2YXIgcmV0O1xuXG4gIGlmIChuYW1lWzBdID09PSAnOicpIHtcbiAgICBkZXByZWNhdGUoJ3JvdXRlci5wYXJhbSgnICsgSlNPTi5zdHJpbmdpZnkobmFtZSkgKyAnLCBmbik6IFVzZSByb3V0ZXIucGFyYW0oJyArIEpTT04uc3RyaW5naWZ5KG5hbWUuc3Vic3RyKDEpKSArICcsIGZuKSBpbnN0ZWFkJyk7XG4gICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEpO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChyZXQgPSBwYXJhbXNbaV0obmFtZSwgZm4pKSB7XG4gICAgICBmbiA9IHJldDtcbiAgICB9XG4gIH1cblxuICAvLyBlbnN1cmUgd2UgZW5kIHVwIHdpdGggYVxuICAvLyBtaWRkbGV3YXJlIGZ1bmN0aW9uXG4gIGlmICgnZnVuY3Rpb24nICE9PSB0eXBlb2YgZm4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcGFyYW0oKSBjYWxsIGZvciAnICsgbmFtZSArICcsIGdvdCAnICsgZm4pO1xuICB9XG5cbiAgKHRoaXMucGFyYW1zW25hbWVdID0gdGhpcy5wYXJhbXNbbmFtZV0gfHwgW10pLnB1c2goZm4pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXEsIHJlcyBpbnRvIHRoZSByb3V0ZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnByb3RvLmhhbmRsZSA9IGZ1bmN0aW9uIGhhbmRsZShyZXEsIHJlcywgb3V0KSB7XG4gIHZhciBzZWxmID0gdGhpcztcblxuICBkZWJ1ZygnZGlzcGF0Y2hpbmcgJXMgJXMnLCByZXEubWV0aG9kLCByZXEudXJsKTtcblxuICB2YXIgaWR4ID0gMDtcbiAgdmFyIHByb3RvaG9zdCA9IGdldFByb3RvaG9zdChyZXEudXJsKSB8fCAnJ1xuICB2YXIgcmVtb3ZlZCA9ICcnO1xuICB2YXIgc2xhc2hBZGRlZCA9IGZhbHNlO1xuICB2YXIgcGFyYW1jYWxsZWQgPSB7fTtcblxuICAvLyBzdG9yZSBvcHRpb25zIGZvciBPUFRJT05TIHJlcXVlc3RcbiAgLy8gb25seSB1c2VkIGlmIE9QVElPTlMgcmVxdWVzdFxuICB2YXIgb3B0aW9ucyA9IFtdO1xuXG4gIC8vIG1pZGRsZXdhcmUgYW5kIHJvdXRlc1xuICB2YXIgc3RhY2sgPSBzZWxmLnN0YWNrO1xuXG4gIC8vIG1hbmFnZSBpbnRlci1yb3V0ZXIgdmFyaWFibGVzXG4gIHZhciBwYXJlbnRQYXJhbXMgPSByZXEucGFyYW1zO1xuICB2YXIgcGFyZW50VXJsID0gcmVxLmJhc2VVcmwgfHwgJyc7XG4gIHZhciBkb25lID0gcmVzdG9yZShvdXQsIHJlcSwgJ2Jhc2VVcmwnLCAnbmV4dCcsICdwYXJhbXMnKTtcblxuICAvLyBzZXR1cCBuZXh0IGxheWVyXG4gIHJlcS5uZXh0ID0gbmV4dDtcblxuICAvLyBmb3Igb3B0aW9ucyByZXF1ZXN0cywgcmVzcG9uZCB3aXRoIGEgZGVmYXVsdCBpZiBub3RoaW5nIGVsc2UgcmVzcG9uZHNcbiAgaWYgKHJlcS5tZXRob2QgPT09ICdPUFRJT05TJykge1xuICAgIGRvbmUgPSB3cmFwKGRvbmUsIGZ1bmN0aW9uKG9sZCwgZXJyKSB7XG4gICAgICBpZiAoZXJyIHx8IG9wdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm4gb2xkKGVycik7XG4gICAgICBzZW5kT3B0aW9uc1Jlc3BvbnNlKHJlcywgb3B0aW9ucywgb2xkKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldHVwIGJhc2ljIHJlcSB2YWx1ZXNcbiAgcmVxLmJhc2VVcmwgPSBwYXJlbnRVcmw7XG4gIHJlcS5vcmlnaW5hbFVybCA9IHJlcS5vcmlnaW5hbFVybCB8fCByZXEudXJsO1xuXG4gIG5leHQoKTtcblxuICBmdW5jdGlvbiBuZXh0KGVycikge1xuICAgIHZhciBsYXllckVycm9yID0gZXJyID09PSAncm91dGUnXG4gICAgICA/IG51bGxcbiAgICAgIDogZXJyO1xuXG4gICAgLy8gcmVtb3ZlIGFkZGVkIHNsYXNoXG4gICAgaWYgKHNsYXNoQWRkZWQpIHtcbiAgICAgIHJlcS51cmwgPSByZXEudXJsLnN1YnN0cigxKTtcbiAgICAgIHNsYXNoQWRkZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyByZXN0b3JlIGFsdGVyZWQgcmVxLnVybFxuICAgIGlmIChyZW1vdmVkLmxlbmd0aCAhPT0gMCkge1xuICAgICAgcmVxLmJhc2VVcmwgPSBwYXJlbnRVcmw7XG4gICAgICByZXEudXJsID0gcHJvdG9ob3N0ICsgcmVtb3ZlZCArIHJlcS51cmwuc3Vic3RyKHByb3RvaG9zdC5sZW5ndGgpO1xuICAgICAgcmVtb3ZlZCA9ICcnO1xuICAgIH1cblxuICAgIC8vIHNpZ25hbCB0byBleGl0IHJvdXRlclxuICAgIGlmIChsYXllckVycm9yID09PSAncm91dGVyJykge1xuICAgICAgc2V0SW1tZWRpYXRlKGRvbmUsIG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBubyBtb3JlIG1hdGNoaW5nIGxheWVyc1xuICAgIGlmIChpZHggPj0gc3RhY2subGVuZ3RoKSB7XG4gICAgICBzZXRJbW1lZGlhdGUoZG9uZSwgbGF5ZXJFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZ2V0IHBhdGhuYW1lIG9mIHJlcXVlc3RcbiAgICB2YXIgcGF0aCA9IGdldFBhdGhuYW1lKHJlcSk7XG5cbiAgICBpZiAocGF0aCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gZG9uZShsYXllckVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBmaW5kIG5leHQgbWF0Y2hpbmcgbGF5ZXJcbiAgICB2YXIgbGF5ZXI7XG4gICAgdmFyIG1hdGNoO1xuICAgIHZhciByb3V0ZTtcblxuICAgIHdoaWxlIChtYXRjaCAhPT0gdHJ1ZSAmJiBpZHggPCBzdGFjay5sZW5ndGgpIHtcbiAgICAgIGxheWVyID0gc3RhY2tbaWR4KytdO1xuICAgICAgbWF0Y2ggPSBtYXRjaExheWVyKGxheWVyLCBwYXRoKTtcbiAgICAgIHJvdXRlID0gbGF5ZXIucm91dGU7XG5cbiAgICAgIGlmICh0eXBlb2YgbWF0Y2ggIT09ICdib29sZWFuJykge1xuICAgICAgICAvLyBob2xkIG9uIHRvIGxheWVyRXJyb3JcbiAgICAgICAgbGF5ZXJFcnJvciA9IGxheWVyRXJyb3IgfHwgbWF0Y2g7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXRjaCAhPT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFyb3V0ZSkge1xuICAgICAgICAvLyBwcm9jZXNzIG5vbi1yb3V0ZSBoYW5kbGVycyBub3JtYWxseVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxheWVyRXJyb3IpIHtcbiAgICAgICAgLy8gcm91dGVzIGRvIG5vdCBtYXRjaCB3aXRoIGEgcGVuZGluZyBlcnJvclxuICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIG1ldGhvZCA9IHJlcS5tZXRob2Q7XG4gICAgICB2YXIgaGFzX21ldGhvZCA9IHJvdXRlLl9oYW5kbGVzX21ldGhvZChtZXRob2QpO1xuXG4gICAgICAvLyBidWlsZCB1cCBhdXRvbWF0aWMgb3B0aW9ucyByZXNwb25zZVxuICAgICAgaWYgKCFoYXNfbWV0aG9kICYmIG1ldGhvZCA9PT0gJ09QVElPTlMnKSB7XG4gICAgICAgIGFwcGVuZE1ldGhvZHMob3B0aW9ucywgcm91dGUuX29wdGlvbnMoKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGRvbid0IGV2ZW4gYm90aGVyIG1hdGNoaW5nIHJvdXRlXG4gICAgICBpZiAoIWhhc19tZXRob2QgJiYgbWV0aG9kICE9PSAnSEVBRCcpIHtcbiAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gbm8gbWF0Y2hcbiAgICBpZiAobWF0Y2ggIT09IHRydWUpIHtcbiAgICAgIHJldHVybiBkb25lKGxheWVyRXJyb3IpO1xuICAgIH1cblxuICAgIC8vIHN0b3JlIHJvdXRlIGZvciBkaXNwYXRjaCBvbiBjaGFuZ2VcbiAgICBpZiAocm91dGUpIHtcbiAgICAgIHJlcS5yb3V0ZSA9IHJvdXRlO1xuICAgIH1cblxuICAgIC8vIENhcHR1cmUgb25lLXRpbWUgbGF5ZXIgdmFsdWVzXG4gICAgcmVxLnBhcmFtcyA9IHNlbGYubWVyZ2VQYXJhbXNcbiAgICAgID8gbWVyZ2VQYXJhbXMobGF5ZXIucGFyYW1zLCBwYXJlbnRQYXJhbXMpXG4gICAgICA6IGxheWVyLnBhcmFtcztcbiAgICB2YXIgbGF5ZXJQYXRoID0gbGF5ZXIucGF0aDtcblxuICAgIC8vIHRoaXMgc2hvdWxkIGJlIGRvbmUgZm9yIHRoZSBsYXllclxuICAgIHNlbGYucHJvY2Vzc19wYXJhbXMobGF5ZXIsIHBhcmFtY2FsbGVkLCByZXEsIHJlcywgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gbmV4dChsYXllckVycm9yIHx8IGVycik7XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICByZXR1cm4gbGF5ZXIuaGFuZGxlX3JlcXVlc3QocmVxLCByZXMsIG5leHQpO1xuICAgICAgfVxuXG4gICAgICB0cmltX3ByZWZpeChsYXllciwgbGF5ZXJFcnJvciwgbGF5ZXJQYXRoLCBwYXRoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyaW1fcHJlZml4KGxheWVyLCBsYXllckVycm9yLCBsYXllclBhdGgsIHBhdGgpIHtcbiAgICBpZiAobGF5ZXJQYXRoLmxlbmd0aCAhPT0gMCkge1xuICAgICAgLy8gVmFsaWRhdGUgcGF0aCBicmVha3Mgb24gYSBwYXRoIHNlcGFyYXRvclxuICAgICAgdmFyIGMgPSBwYXRoW2xheWVyUGF0aC5sZW5ndGhdXG4gICAgICBpZiAoYyAmJiBjICE9PSAnLycgJiYgYyAhPT0gJy4nKSByZXR1cm4gbmV4dChsYXllckVycm9yKVxuXG4gICAgICAvLyBUcmltIG9mZiB0aGUgcGFydCBvZiB0aGUgdXJsIHRoYXQgbWF0Y2hlcyB0aGUgcm91dGVcbiAgICAgIC8vIG1pZGRsZXdhcmUgKC51c2Ugc3R1ZmYpIG5lZWRzIHRvIGhhdmUgdGhlIHBhdGggc3RyaXBwZWRcbiAgICAgIGRlYnVnKCd0cmltIHByZWZpeCAoJXMpIGZyb20gdXJsICVzJywgbGF5ZXJQYXRoLCByZXEudXJsKTtcbiAgICAgIHJlbW92ZWQgPSBsYXllclBhdGg7XG4gICAgICByZXEudXJsID0gcHJvdG9ob3N0ICsgcmVxLnVybC5zdWJzdHIocHJvdG9ob3N0Lmxlbmd0aCArIHJlbW92ZWQubGVuZ3RoKTtcblxuICAgICAgLy8gRW5zdXJlIGxlYWRpbmcgc2xhc2hcbiAgICAgIGlmICghcHJvdG9ob3N0ICYmIHJlcS51cmxbMF0gIT09ICcvJykge1xuICAgICAgICByZXEudXJsID0gJy8nICsgcmVxLnVybDtcbiAgICAgICAgc2xhc2hBZGRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFNldHVwIGJhc2UgVVJMIChubyB0cmFpbGluZyBzbGFzaClcbiAgICAgIHJlcS5iYXNlVXJsID0gcGFyZW50VXJsICsgKHJlbW92ZWRbcmVtb3ZlZC5sZW5ndGggLSAxXSA9PT0gJy8nXG4gICAgICAgID8gcmVtb3ZlZC5zdWJzdHJpbmcoMCwgcmVtb3ZlZC5sZW5ndGggLSAxKVxuICAgICAgICA6IHJlbW92ZWQpO1xuICAgIH1cblxuICAgIGRlYnVnKCclcyAlcyA6ICVzJywgbGF5ZXIubmFtZSwgbGF5ZXJQYXRoLCByZXEub3JpZ2luYWxVcmwpO1xuXG4gICAgaWYgKGxheWVyRXJyb3IpIHtcbiAgICAgIGxheWVyLmhhbmRsZV9lcnJvcihsYXllckVycm9yLCByZXEsIHJlcywgbmV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheWVyLmhhbmRsZV9yZXF1ZXN0KHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogUHJvY2VzcyBhbnkgcGFyYW1ldGVycyBmb3IgdGhlIGxheWVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5wcm90by5wcm9jZXNzX3BhcmFtcyA9IGZ1bmN0aW9uIHByb2Nlc3NfcGFyYW1zKGxheWVyLCBjYWxsZWQsIHJlcSwgcmVzLCBkb25lKSB7XG4gIHZhciBwYXJhbXMgPSB0aGlzLnBhcmFtcztcblxuICAvLyBjYXB0dXJlZCBwYXJhbWV0ZXJzIGZyb20gdGhlIGxheWVyLCBrZXlzIGFuZCB2YWx1ZXNcbiAgdmFyIGtleXMgPSBsYXllci5rZXlzO1xuXG4gIC8vIGZhc3QgdHJhY2tcbiAgaWYgKCFrZXlzIHx8IGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGRvbmUoKTtcbiAgfVxuXG4gIHZhciBpID0gMDtcbiAgdmFyIG5hbWU7XG4gIHZhciBwYXJhbUluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgdmFyIHBhcmFtVmFsO1xuICB2YXIgcGFyYW1DYWxsYmFja3M7XG4gIHZhciBwYXJhbUNhbGxlZDtcblxuICAvLyBwcm9jZXNzIHBhcmFtcyBpbiBvcmRlclxuICAvLyBwYXJhbSBjYWxsYmFja3MgY2FuIGJlIGFzeW5jXG4gIGZ1bmN0aW9uIHBhcmFtKGVycikge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHJldHVybiBkb25lKGVycik7XG4gICAgfVxuXG4gICAgaWYgKGkgPj0ga2V5cy5sZW5ndGggKSB7XG4gICAgICByZXR1cm4gZG9uZSgpO1xuICAgIH1cblxuICAgIHBhcmFtSW5kZXggPSAwO1xuICAgIGtleSA9IGtleXNbaSsrXTtcbiAgICBuYW1lID0ga2V5Lm5hbWU7XG4gICAgcGFyYW1WYWwgPSByZXEucGFyYW1zW25hbWVdO1xuICAgIHBhcmFtQ2FsbGJhY2tzID0gcGFyYW1zW25hbWVdO1xuICAgIHBhcmFtQ2FsbGVkID0gY2FsbGVkW25hbWVdO1xuXG4gICAgaWYgKHBhcmFtVmFsID09PSB1bmRlZmluZWQgfHwgIXBhcmFtQ2FsbGJhY2tzKSB7XG4gICAgICByZXR1cm4gcGFyYW0oKTtcbiAgICB9XG5cbiAgICAvLyBwYXJhbSBwcmV2aW91c2x5IGNhbGxlZCB3aXRoIHNhbWUgdmFsdWUgb3IgZXJyb3Igb2NjdXJyZWRcbiAgICBpZiAocGFyYW1DYWxsZWQgJiYgKHBhcmFtQ2FsbGVkLm1hdGNoID09PSBwYXJhbVZhbFxuICAgICAgfHwgKHBhcmFtQ2FsbGVkLmVycm9yICYmIHBhcmFtQ2FsbGVkLmVycm9yICE9PSAncm91dGUnKSkpIHtcbiAgICAgIC8vIHJlc3RvcmUgdmFsdWVcbiAgICAgIHJlcS5wYXJhbXNbbmFtZV0gPSBwYXJhbUNhbGxlZC52YWx1ZTtcblxuICAgICAgLy8gbmV4dCBwYXJhbVxuICAgICAgcmV0dXJuIHBhcmFtKHBhcmFtQ2FsbGVkLmVycm9yKTtcbiAgICB9XG5cbiAgICBjYWxsZWRbbmFtZV0gPSBwYXJhbUNhbGxlZCA9IHtcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgbWF0Y2g6IHBhcmFtVmFsLFxuICAgICAgdmFsdWU6IHBhcmFtVmFsXG4gICAgfTtcblxuICAgIHBhcmFtQ2FsbGJhY2soKTtcbiAgfVxuXG4gIC8vIHNpbmdsZSBwYXJhbSBjYWxsYmFja3NcbiAgZnVuY3Rpb24gcGFyYW1DYWxsYmFjayhlcnIpIHtcbiAgICB2YXIgZm4gPSBwYXJhbUNhbGxiYWNrc1twYXJhbUluZGV4KytdO1xuXG4gICAgLy8gc3RvcmUgdXBkYXRlZCB2YWx1ZVxuICAgIHBhcmFtQ2FsbGVkLnZhbHVlID0gcmVxLnBhcmFtc1trZXkubmFtZV07XG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICAvLyBzdG9yZSBlcnJvclxuICAgICAgcGFyYW1DYWxsZWQuZXJyb3IgPSBlcnI7XG4gICAgICBwYXJhbShlcnIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghZm4pIHJldHVybiBwYXJhbSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZuKHJlcSwgcmVzLCBwYXJhbUNhbGxiYWNrLCBwYXJhbVZhbCwga2V5Lm5hbWUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHBhcmFtQ2FsbGJhY2soZSk7XG4gICAgfVxuICB9XG5cbiAgcGFyYW0oKTtcbn07XG5cbi8qKlxuICogVXNlIHRoZSBnaXZlbiBtaWRkbGV3YXJlIGZ1bmN0aW9uLCB3aXRoIG9wdGlvbmFsIHBhdGgsIGRlZmF1bHRpbmcgdG8gXCIvXCIuXG4gKlxuICogVXNlIChsaWtlIGAuYWxsYCkgd2lsbCBydW4gZm9yIGFueSBodHRwIE1FVEhPRCwgYnV0IGl0IHdpbGwgbm90IGFkZFxuICogaGFuZGxlcnMgZm9yIHRob3NlIG1ldGhvZHMgc28gT1BUSU9OUyByZXF1ZXN0cyB3aWxsIG5vdCBjb25zaWRlciBgLnVzZWBcbiAqIGZ1bmN0aW9ucyBldmVuIGlmIHRoZXkgY291bGQgcmVzcG9uZC5cbiAqXG4gKiBUaGUgb3RoZXIgZGlmZmVyZW5jZSBpcyB0aGF0IF9yb3V0ZV8gcGF0aCBpcyBzdHJpcHBlZCBhbmQgbm90IHZpc2libGVcbiAqIHRvIHRoZSBoYW5kbGVyIGZ1bmN0aW9uLiBUaGUgbWFpbiBlZmZlY3Qgb2YgdGhpcyBmZWF0dXJlIGlzIHRoYXQgbW91bnRlZFxuICogaGFuZGxlcnMgY2FuIG9wZXJhdGUgd2l0aG91dCBhbnkgY29kZSBjaGFuZ2VzIHJlZ2FyZGxlc3Mgb2YgdGhlIFwicHJlZml4XCJcbiAqIHBhdGhuYW1lLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuXG5wcm90by51c2UgPSBmdW5jdGlvbiB1c2UoZm4pIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBwYXRoID0gJy8nO1xuXG4gIC8vIGRlZmF1bHQgcGF0aCB0byAnLydcbiAgLy8gZGlzYW1iaWd1YXRlIHJvdXRlci51c2UoW2ZuXSlcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBhcmcgPSBmbjtcblxuICAgIHdoaWxlIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCAhPT0gMCkge1xuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIH1cblxuICAgIC8vIGZpcnN0IGFyZyBpcyB0aGUgcGF0aFxuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvZmZzZXQgPSAxO1xuICAgICAgcGF0aCA9IGZuO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjYWxsYmFja3MgPSBmbGF0dGVuKHNsaWNlLmNhbGwoYXJndW1lbnRzLCBvZmZzZXQpKTtcblxuICBpZiAoY2FsbGJhY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1JvdXRlci51c2UoKSByZXF1aXJlcyBhIG1pZGRsZXdhcmUgZnVuY3Rpb24nKVxuICB9XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZm4gPSBjYWxsYmFja3NbaV07XG5cbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdSb3V0ZXIudXNlKCkgcmVxdWlyZXMgYSBtaWRkbGV3YXJlIGZ1bmN0aW9uIGJ1dCBnb3QgYSAnICsgZ2V0dHlwZShmbikpXG4gICAgfVxuXG4gICAgLy8gYWRkIHRoZSBtaWRkbGV3YXJlXG4gICAgZGVidWcoJ3VzZSAlbyAlcycsIHBhdGgsIGZuLm5hbWUgfHwgJzxhbm9ueW1vdXM+JylcblxuICAgIHZhciBsYXllciA9IG5ldyBMYXllcihwYXRoLCB7XG4gICAgICBzZW5zaXRpdmU6IHRoaXMuY2FzZVNlbnNpdGl2ZSxcbiAgICAgIHN0cmljdDogZmFsc2UsXG4gICAgICBlbmQ6IGZhbHNlXG4gICAgfSwgZm4pO1xuXG4gICAgbGF5ZXIucm91dGUgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLnN0YWNrLnB1c2gobGF5ZXIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBSb3V0ZSBmb3IgdGhlIGdpdmVuIHBhdGguXG4gKlxuICogRWFjaCByb3V0ZSBjb250YWlucyBhIHNlcGFyYXRlIG1pZGRsZXdhcmUgc3RhY2sgYW5kIFZFUkIgaGFuZGxlcnMuXG4gKlxuICogU2VlIHRoZSBSb3V0ZSBhcGkgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvbiBhZGRpbmcgaGFuZGxlcnNcbiAqIGFuZCBtaWRkbGV3YXJlIHRvIHJvdXRlcy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHJldHVybiB7Um91dGV9XG4gKiBAcHVibGljXG4gKi9cblxucHJvdG8ucm91dGUgPSBmdW5jdGlvbiByb3V0ZShwYXRoKSB7XG4gIHZhciByb3V0ZSA9IG5ldyBSb3V0ZShwYXRoKTtcblxuICB2YXIgbGF5ZXIgPSBuZXcgTGF5ZXIocGF0aCwge1xuICAgIHNlbnNpdGl2ZTogdGhpcy5jYXNlU2Vuc2l0aXZlLFxuICAgIHN0cmljdDogdGhpcy5zdHJpY3QsXG4gICAgZW5kOiB0cnVlXG4gIH0sIHJvdXRlLmRpc3BhdGNoLmJpbmQocm91dGUpKTtcblxuICBsYXllci5yb3V0ZSA9IHJvdXRlO1xuXG4gIHRoaXMuc3RhY2sucHVzaChsYXllcik7XG4gIHJldHVybiByb3V0ZTtcbn07XG5cbi8vIGNyZWF0ZSBSb3V0ZXIjVkVSQiBmdW5jdGlvbnNcbm1ldGhvZHMuY29uY2F0KCdhbGwnKS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCl7XG4gIHByb3RvW21ldGhvZF0gPSBmdW5jdGlvbihwYXRoKXtcbiAgICB2YXIgcm91dGUgPSB0aGlzLnJvdXRlKHBhdGgpXG4gICAgcm91dGVbbWV0aG9kXS5hcHBseShyb3V0ZSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG4vLyBhcHBlbmQgbWV0aG9kcyB0byBhIGxpc3Qgb2YgbWV0aG9kc1xuZnVuY3Rpb24gYXBwZW5kTWV0aG9kcyhsaXN0LCBhZGRpdGlvbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFkZGl0aW9uLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1ldGhvZCA9IGFkZGl0aW9uW2ldO1xuICAgIGlmIChsaXN0LmluZGV4T2YobWV0aG9kKSA9PT0gLTEpIHtcbiAgICAgIGxpc3QucHVzaChtZXRob2QpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBnZXQgcGF0aG5hbWUgb2YgcmVxdWVzdFxuZnVuY3Rpb24gZ2V0UGF0aG5hbWUocmVxKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlVXJsKHJlcSkucGF0aG5hbWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLy8gR2V0IGdldCBwcm90b2NvbCArIGhvc3QgZm9yIGEgVVJMXG5mdW5jdGlvbiBnZXRQcm90b2hvc3QodXJsKSB7XG4gIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJyB8fCB1cmwubGVuZ3RoID09PSAwIHx8IHVybFswXSA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgdmFyIHNlYXJjaEluZGV4ID0gdXJsLmluZGV4T2YoJz8nKVxuICB2YXIgcGF0aExlbmd0aCA9IHNlYXJjaEluZGV4ICE9PSAtMVxuICAgID8gc2VhcmNoSW5kZXhcbiAgICA6IHVybC5sZW5ndGhcbiAgdmFyIGZxZG5JbmRleCA9IHVybC5zdWJzdHIoMCwgcGF0aExlbmd0aCkuaW5kZXhPZignOi8vJylcblxuICByZXR1cm4gZnFkbkluZGV4ICE9PSAtMVxuICAgID8gdXJsLnN1YnN0cigwLCB1cmwuaW5kZXhPZignLycsIDMgKyBmcWRuSW5kZXgpKVxuICAgIDogdW5kZWZpbmVkXG59XG5cbi8vIGdldCB0eXBlIGZvciBlcnJvciBtZXNzYWdlXG5mdW5jdGlvbiBnZXR0eXBlKG9iaikge1xuICB2YXIgdHlwZSA9IHR5cGVvZiBvYmo7XG5cbiAgaWYgKHR5cGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICAvLyBpbnNwZWN0IFtbQ2xhc3NdXSBmb3Igb2JqZWN0c1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChvYmopXG4gICAgLnJlcGxhY2Uob2JqZWN0UmVnRXhwLCAnJDEnKTtcbn1cblxuLyoqXG4gKiBNYXRjaCBwYXRoIHRvIGEgbGF5ZXIuXG4gKlxuICogQHBhcmFtIHtMYXllcn0gbGF5ZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG1hdGNoTGF5ZXIobGF5ZXIsIHBhdGgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbGF5ZXIubWF0Y2gocGF0aCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBlcnI7XG4gIH1cbn1cblxuLy8gbWVyZ2UgcGFyYW1zIHdpdGggcGFyZW50IHBhcmFtc1xuZnVuY3Rpb24gbWVyZ2VQYXJhbXMocGFyYW1zLCBwYXJlbnQpIHtcbiAgaWYgKHR5cGVvZiBwYXJlbnQgIT09ICdvYmplY3QnIHx8ICFwYXJlbnQpIHtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgLy8gbWFrZSBjb3B5IG9mIHBhcmVudCBmb3IgYmFzZVxuICB2YXIgb2JqID0gbWl4aW4oe30sIHBhcmVudCk7XG5cbiAgLy8gc2ltcGxlIG5vbi1udW1lcmljIG1lcmdpbmdcbiAgaWYgKCEoMCBpbiBwYXJhbXMpIHx8ICEoMCBpbiBwYXJlbnQpKSB7XG4gICAgcmV0dXJuIG1peGluKG9iaiwgcGFyYW1zKTtcbiAgfVxuXG4gIHZhciBpID0gMDtcbiAgdmFyIG8gPSAwO1xuXG4gIC8vIGRldGVybWluZSBudW1lcmljIGdhcHNcbiAgd2hpbGUgKGkgaW4gcGFyYW1zKSB7XG4gICAgaSsrO1xuICB9XG5cbiAgd2hpbGUgKG8gaW4gcGFyZW50KSB7XG4gICAgbysrO1xuICB9XG5cbiAgLy8gb2Zmc2V0IG51bWVyaWMgaW5kaWNlcyBpbiBwYXJhbXMgYmVmb3JlIG1lcmdlXG4gIGZvciAoaS0tOyBpID49IDA7IGktLSkge1xuICAgIHBhcmFtc1tpICsgb10gPSBwYXJhbXNbaV07XG5cbiAgICAvLyBjcmVhdGUgaG9sZXMgZm9yIHRoZSBtZXJnZSB3aGVuIG5lY2Vzc2FyeVxuICAgIGlmIChpIDwgbykge1xuICAgICAgZGVsZXRlIHBhcmFtc1tpXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWl4aW4ob2JqLCBwYXJhbXMpO1xufVxuXG4vLyByZXN0b3JlIG9iaiBwcm9wcyBhZnRlciBmdW5jdGlvblxuZnVuY3Rpb24gcmVzdG9yZShmbiwgb2JqKSB7XG4gIHZhciBwcm9wcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMik7XG4gIHZhciB2YWxzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAyKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgcHJvcHNbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIHZhbHNbaV0gPSBvYmpbcHJvcHNbaV1dO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAvLyByZXN0b3JlIHZhbHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvYmpbcHJvcHNbaV1dID0gdmFsc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxuLy8gc2VuZCBhbiBPUFRJT05TIHJlc3BvbnNlXG5mdW5jdGlvbiBzZW5kT3B0aW9uc1Jlc3BvbnNlKHJlcywgb3B0aW9ucywgbmV4dCkge1xuICB0cnkge1xuICAgIHZhciBib2R5ID0gb3B0aW9ucy5qb2luKCcsJyk7XG4gICAgcmVzLnNldCgnQWxsb3cnLCBib2R5KTtcbiAgICByZXMuc2VuZChib2R5KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbmV4dChlcnIpO1xuICB9XG59XG5cbi8vIHdyYXAgYSBmdW5jdGlvblxuZnVuY3Rpb24gd3JhcChvbGQsIGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBwcm94eSgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoICsgMSk7XG5cbiAgICBhcmdzWzBdID0gb2xkO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGFyZ3NbaSArIDFdID0gYXJndW1lbnRzW2ldO1xuICAgIH1cblxuICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9O1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3JvdXRlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gODlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxMyBSb21hbiBTaHR5bG1hblxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2V4cHJlc3M6cm91dGVyOnJvdXRlJyk7XG52YXIgZmxhdHRlbiA9IHJlcXVpcmUoJ2FycmF5LWZsYXR0ZW4nKTtcbnZhciBMYXllciA9IHJlcXVpcmUoJy4vbGF5ZXInKTtcbnZhciBtZXRob2RzID0gcmVxdWlyZSgnbWV0aG9kcycpO1xuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBSb3V0ZTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGBSb3V0ZWAgd2l0aCB0aGUgZ2l2ZW4gYHBhdGhgLFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUm91dGUocGF0aCkge1xuICB0aGlzLnBhdGggPSBwYXRoO1xuICB0aGlzLnN0YWNrID0gW107XG5cbiAgZGVidWcoJ25ldyAlbycsIHBhdGgpXG5cbiAgLy8gcm91dGUgaGFuZGxlcnMgZm9yIHZhcmlvdXMgaHR0cCBtZXRob2RzXG4gIHRoaXMubWV0aG9kcyA9IHt9O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgcm91dGUgaGFuZGxlcyBhIGdpdmVuIG1ldGhvZC5cbiAqIEBwcml2YXRlXG4gKi9cblxuUm91dGUucHJvdG90eXBlLl9oYW5kbGVzX21ldGhvZCA9IGZ1bmN0aW9uIF9oYW5kbGVzX21ldGhvZChtZXRob2QpIHtcbiAgaWYgKHRoaXMubWV0aG9kcy5fYWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB2YXIgbmFtZSA9IG1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChuYW1lID09PSAnaGVhZCcgJiYgIXRoaXMubWV0aG9kc1snaGVhZCddKSB7XG4gICAgbmFtZSA9ICdnZXQnO1xuICB9XG5cbiAgcmV0dXJuIEJvb2xlYW4odGhpcy5tZXRob2RzW25hbWVdKTtcbn07XG5cbi8qKlxuICogQHJldHVybiB7QXJyYXl9IHN1cHBvcnRlZCBIVFRQIG1ldGhvZHNcbiAqIEBwcml2YXRlXG4gKi9cblxuUm91dGUucHJvdG90eXBlLl9vcHRpb25zID0gZnVuY3Rpb24gX29wdGlvbnMoKSB7XG4gIHZhciBtZXRob2RzID0gT2JqZWN0LmtleXModGhpcy5tZXRob2RzKTtcblxuICAvLyBhcHBlbmQgYXV0b21hdGljIGhlYWRcbiAgaWYgKHRoaXMubWV0aG9kcy5nZXQgJiYgIXRoaXMubWV0aG9kcy5oZWFkKSB7XG4gICAgbWV0aG9kcy5wdXNoKCdoZWFkJyk7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGhvZHMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBtYWtlIHVwcGVyIGNhc2VcbiAgICBtZXRob2RzW2ldID0gbWV0aG9kc1tpXS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuXG4vKipcbiAqIGRpc3BhdGNoIHJlcSwgcmVzIGludG8gdGhpcyByb3V0ZVxuICogQHByaXZhdGVcbiAqL1xuXG5Sb3V0ZS5wcm90b3R5cGUuZGlzcGF0Y2ggPSBmdW5jdGlvbiBkaXNwYXRjaChyZXEsIHJlcywgZG9uZSkge1xuICB2YXIgaWR4ID0gMDtcbiAgdmFyIHN0YWNrID0gdGhpcy5zdGFjaztcbiAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBkb25lKCk7XG4gIH1cblxuICB2YXIgbWV0aG9kID0gcmVxLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xuICBpZiAobWV0aG9kID09PSAnaGVhZCcgJiYgIXRoaXMubWV0aG9kc1snaGVhZCddKSB7XG4gICAgbWV0aG9kID0gJ2dldCc7XG4gIH1cblxuICByZXEucm91dGUgPSB0aGlzO1xuXG4gIG5leHQoKTtcblxuICBmdW5jdGlvbiBuZXh0KGVycikge1xuICAgIC8vIHNpZ25hbCB0byBleGl0IHJvdXRlXG4gICAgaWYgKGVyciAmJiBlcnIgPT09ICdyb3V0ZScpIHtcbiAgICAgIHJldHVybiBkb25lKCk7XG4gICAgfVxuXG4gICAgLy8gc2lnbmFsIHRvIGV4aXQgcm91dGVyXG4gICAgaWYgKGVyciAmJiBlcnIgPT09ICdyb3V0ZXInKSB7XG4gICAgICByZXR1cm4gZG9uZShlcnIpXG4gICAgfVxuXG4gICAgdmFyIGxheWVyID0gc3RhY2tbaWR4KytdO1xuICAgIGlmICghbGF5ZXIpIHtcbiAgICAgIHJldHVybiBkb25lKGVycik7XG4gICAgfVxuXG4gICAgaWYgKGxheWVyLm1ldGhvZCAmJiBsYXllci5tZXRob2QgIT09IG1ldGhvZCkge1xuICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICBsYXllci5oYW5kbGVfZXJyb3IoZXJyLCByZXEsIHJlcywgbmV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheWVyLmhhbmRsZV9yZXF1ZXN0KHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQWRkIGEgaGFuZGxlciBmb3IgYWxsIEhUVFAgdmVyYnMgdG8gdGhpcyByb3V0ZS5cbiAqXG4gKiBCZWhhdmVzIGp1c3QgbGlrZSBtaWRkbGV3YXJlIGFuZCBjYW4gcmVzcG9uZCBvciBjYWxsIGBuZXh0YFxuICogdG8gY29udGludWUgcHJvY2Vzc2luZy5cbiAqXG4gKiBZb3UgY2FuIHVzZSBtdWx0aXBsZSBgLmFsbGAgY2FsbCB0byBhZGQgbXVsdGlwbGUgaGFuZGxlcnMuXG4gKlxuICogICBmdW5jdGlvbiBjaGVja19zb21ldGhpbmcocmVxLCByZXMsIG5leHQpe1xuICogICAgIG5leHQoKTtcbiAqICAgfTtcbiAqXG4gKiAgIGZ1bmN0aW9uIHZhbGlkYXRlX3VzZXIocmVxLCByZXMsIG5leHQpe1xuICogICAgIG5leHQoKTtcbiAqICAgfTtcbiAqXG4gKiAgIHJvdXRlXG4gKiAgIC5hbGwodmFsaWRhdGVfdXNlcilcbiAqICAgLmFsbChjaGVja19zb21ldGhpbmcpXG4gKiAgIC5nZXQoZnVuY3Rpb24ocmVxLCByZXMsIG5leHQpe1xuICogICAgIHJlcy5zZW5kKCdoZWxsbyB3b3JsZCcpO1xuICogICB9KTtcbiAqXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBoYW5kbGVyXG4gKiBAcmV0dXJuIHtSb3V0ZX0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJvdXRlLnByb3RvdHlwZS5hbGwgPSBmdW5jdGlvbiBhbGwoKSB7XG4gIHZhciBoYW5kbGVzID0gZmxhdHRlbihzbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBoYW5kbGUgPSBoYW5kbGVzW2ldO1xuXG4gICAgaWYgKHR5cGVvZiBoYW5kbGUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciB0eXBlID0gdG9TdHJpbmcuY2FsbChoYW5kbGUpO1xuICAgICAgdmFyIG1zZyA9ICdSb3V0ZS5hbGwoKSByZXF1aXJlcyBhIGNhbGxiYWNrIGZ1bmN0aW9uIGJ1dCBnb3QgYSAnICsgdHlwZVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihtc2cpO1xuICAgIH1cblxuICAgIHZhciBsYXllciA9IExheWVyKCcvJywge30sIGhhbmRsZSk7XG4gICAgbGF5ZXIubWV0aG9kID0gdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5tZXRob2RzLl9hbGwgPSB0cnVlO1xuICAgIHRoaXMuc3RhY2sucHVzaChsYXllcik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbm1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2Qpe1xuICBSb3V0ZS5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKCl7XG4gICAgdmFyIGhhbmRsZXMgPSBmbGF0dGVuKHNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhhbmRsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoYW5kbGUgPSBoYW5kbGVzW2ldO1xuXG4gICAgICBpZiAodHlwZW9mIGhhbmRsZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB2YXIgdHlwZSA9IHRvU3RyaW5nLmNhbGwoaGFuZGxlKTtcbiAgICAgICAgdmFyIG1zZyA9ICdSb3V0ZS4nICsgbWV0aG9kICsgJygpIHJlcXVpcmVzIGEgY2FsbGJhY2sgZnVuY3Rpb24gYnV0IGdvdCBhICcgKyB0eXBlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuXG4gICAgICBkZWJ1ZygnJXMgJW8nLCBtZXRob2QsIHRoaXMucGF0aClcblxuICAgICAgdmFyIGxheWVyID0gTGF5ZXIoJy8nLCB7fSwgaGFuZGxlKTtcbiAgICAgIGxheWVyLm1ldGhvZCA9IG1ldGhvZDtcblxuICAgICAgdGhpcy5tZXRob2RzW21ldGhvZF0gPSB0cnVlO1xuICAgICAgdGhpcy5zdGFjay5wdXNoKGxheWVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL3JvdXRlci9yb3V0ZS5qc1xuLy8gbW9kdWxlIGlkID0gOTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxMyBSb21hbiBTaHR5bG1hblxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBwYXRoUmVnZXhwID0gcmVxdWlyZSgncGF0aC10by1yZWdleHAnKTtcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2V4cHJlc3M6cm91dGVyOmxheWVyJyk7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IExheWVyO1xuXG5mdW5jdGlvbiBMYXllcihwYXRoLCBvcHRpb25zLCBmbikge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGF5ZXIpKSB7XG4gICAgcmV0dXJuIG5ldyBMYXllcihwYXRoLCBvcHRpb25zLCBmbik7XG4gIH1cblxuICBkZWJ1ZygnbmV3ICVvJywgcGF0aClcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHRoaXMuaGFuZGxlID0gZm47XG4gIHRoaXMubmFtZSA9IGZuLm5hbWUgfHwgJzxhbm9ueW1vdXM+JztcbiAgdGhpcy5wYXJhbXMgPSB1bmRlZmluZWQ7XG4gIHRoaXMucGF0aCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5yZWdleHAgPSBwYXRoUmVnZXhwKHBhdGgsIHRoaXMua2V5cyA9IFtdLCBvcHRzKTtcblxuICAvLyBzZXQgZmFzdCBwYXRoIGZsYWdzXG4gIHRoaXMucmVnZXhwLmZhc3Rfc3RhciA9IHBhdGggPT09ICcqJ1xuICB0aGlzLnJlZ2V4cC5mYXN0X3NsYXNoID0gcGF0aCA9PT0gJy8nICYmIG9wdHMuZW5kID09PSBmYWxzZVxufVxuXG4vKipcbiAqIEhhbmRsZSB0aGUgZXJyb3IgZm9yIHRoZSBsYXllci5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvclxuICogQHBhcmFtIHtSZXF1ZXN0fSByZXFcbiAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlc1xuICogQHBhcmFtIHtmdW5jdGlvbn0gbmV4dFxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuTGF5ZXIucHJvdG90eXBlLmhhbmRsZV9lcnJvciA9IGZ1bmN0aW9uIGhhbmRsZV9lcnJvcihlcnJvciwgcmVxLCByZXMsIG5leHQpIHtcbiAgdmFyIGZuID0gdGhpcy5oYW5kbGU7XG5cbiAgaWYgKGZuLmxlbmd0aCAhPT0gNCkge1xuICAgIC8vIG5vdCBhIHN0YW5kYXJkIGVycm9yIGhhbmRsZXJcbiAgICByZXR1cm4gbmV4dChlcnJvcik7XG4gIH1cblxuICB0cnkge1xuICAgIGZuKGVycm9yLCByZXEsIHJlcywgbmV4dCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIG5leHQoZXJyKTtcbiAgfVxufTtcblxuLyoqXG4gKiBIYW5kbGUgdGhlIHJlcXVlc3QgZm9yIHRoZSBsYXllci5cbiAqXG4gKiBAcGFyYW0ge1JlcXVlc3R9IHJlcVxuICogQHBhcmFtIHtSZXNwb25zZX0gcmVzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBuZXh0XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5MYXllci5wcm90b3R5cGUuaGFuZGxlX3JlcXVlc3QgPSBmdW5jdGlvbiBoYW5kbGUocmVxLCByZXMsIG5leHQpIHtcbiAgdmFyIGZuID0gdGhpcy5oYW5kbGU7XG5cbiAgaWYgKGZuLmxlbmd0aCA+IDMpIHtcbiAgICAvLyBub3QgYSBzdGFuZGFyZCByZXF1ZXN0IGhhbmRsZXJcbiAgICByZXR1cm4gbmV4dCgpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBmbihyZXEsIHJlcywgbmV4dCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIG5leHQoZXJyKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVjayBpZiB0aGlzIHJvdXRlIG1hdGNoZXMgYHBhdGhgLCBpZiBzb1xuICogcG9wdWxhdGUgYC5wYXJhbXNgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuTGF5ZXIucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gbWF0Y2gocGF0aCkge1xuICB2YXIgbWF0Y2hcblxuICBpZiAocGF0aCAhPSBudWxsKSB7XG4gICAgLy8gZmFzdCBwYXRoIG5vbi1lbmRpbmcgbWF0Y2ggZm9yIC8gKGFueSBwYXRoIG1hdGNoZXMpXG4gICAgaWYgKHRoaXMucmVnZXhwLmZhc3Rfc2xhc2gpIHtcbiAgICAgIHRoaXMucGFyYW1zID0ge31cbiAgICAgIHRoaXMucGF0aCA9ICcnXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIGZhc3QgcGF0aCBmb3IgKiAoZXZlcnl0aGluZyBtYXRjaGVkIGluIGEgcGFyYW0pXG4gICAgaWYgKHRoaXMucmVnZXhwLmZhc3Rfc3Rhcikge1xuICAgICAgdGhpcy5wYXJhbXMgPSB7JzAnOiBkZWNvZGVfcGFyYW0ocGF0aCl9XG4gICAgICB0aGlzLnBhdGggPSBwYXRoXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIG1hdGNoIHRoZSBwYXRoXG4gICAgbWF0Y2ggPSB0aGlzLnJlZ2V4cC5leGVjKHBhdGgpXG4gIH1cblxuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhpcy5wYXJhbXMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5wYXRoID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIHN0b3JlIHZhbHVlc1xuICB0aGlzLnBhcmFtcyA9IHt9O1xuICB0aGlzLnBhdGggPSBtYXRjaFswXVxuXG4gIHZhciBrZXlzID0gdGhpcy5rZXlzO1xuICB2YXIgcGFyYW1zID0gdGhpcy5wYXJhbXM7XG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBtYXRjaC5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2kgLSAxXTtcbiAgICB2YXIgcHJvcCA9IGtleS5uYW1lO1xuICAgIHZhciB2YWwgPSBkZWNvZGVfcGFyYW0obWF0Y2hbaV0pXG5cbiAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgfHwgIShoYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmFtcywgcHJvcCkpKSB7XG4gICAgICBwYXJhbXNbcHJvcF0gPSB2YWw7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIERlY29kZSBwYXJhbSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGRlY29kZV9wYXJhbSh2YWwpIHtcbiAgaWYgKHR5cGVvZiB2YWwgIT09ICdzdHJpbmcnIHx8IHZhbC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBVUklFcnJvcikge1xuICAgICAgZXJyLm1lc3NhZ2UgPSAnRmFpbGVkIHRvIGRlY29kZSBwYXJhbSBcXCcnICsgdmFsICsgJ1xcJyc7XG4gICAgICBlcnIuc3RhdHVzID0gZXJyLnN0YXR1c0NvZGUgPSA0MDA7XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvcm91dGVyL2xheWVyLmpzXG4vLyBtb2R1bGUgaWQgPSA5MVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV4cHJlc3NcbiAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDEzIFJvbWFuIFNodHlsbWFuXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgbWVyZ2UgPSByZXF1aXJlKCd1dGlscy1tZXJnZScpXG52YXIgcGFyc2VVcmwgPSByZXF1aXJlKCdwYXJzZXVybCcpO1xudmFyIHFzID0gcmVxdWlyZSgncXMnKTtcblxuLyoqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7RnVuY3Rpb259XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcXVlcnkob3B0aW9ucykge1xuICB2YXIgb3B0cyA9IG1lcmdlKHt9LCBvcHRpb25zKVxuICB2YXIgcXVlcnlwYXJzZSA9IHFzLnBhcnNlO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHF1ZXJ5cGFyc2UgPSBvcHRpb25zO1xuICAgIG9wdHMgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAob3B0cyAhPT0gdW5kZWZpbmVkICYmIG9wdHMuYWxsb3dQcm90b3R5cGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBiYWNrLWNvbXBhdCBmb3IgcXMgbW9kdWxlXG4gICAgb3B0cy5hbGxvd1Byb3RvdHlwZXMgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXJ5KHJlcSwgcmVzLCBuZXh0KXtcbiAgICBpZiAoIXJlcS5xdWVyeSkge1xuICAgICAgdmFyIHZhbCA9IHBhcnNlVXJsKHJlcSkucXVlcnk7XG4gICAgICByZXEucXVlcnkgPSBxdWVyeXBhcnNlKHZhbCwgb3B0cyk7XG4gICAgfVxuXG4gICAgbmV4dCgpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi9taWRkbGV3YXJlL3F1ZXJ5LmpzXG4vLyBtb2R1bGUgaWQgPSA5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiBlc2xpbnQtZGlzYWJsZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpICovXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJylcbnZhciBCdWZmZXIgPSBidWZmZXIuQnVmZmVyXG5cbi8vIGFsdGVybmF0aXZlIHRvIHVzaW5nIE9iamVjdC5rZXlzIGZvciBvbGQgYnJvd3NlcnNcbmZ1bmN0aW9uIGNvcHlQcm9wcyAoc3JjLCBkc3QpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGRzdFtrZXldID0gc3JjW2tleV1cbiAgfVxufVxuaWYgKEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5hbGxvYyAmJiBCdWZmZXIuYWxsb2NVbnNhZmUgJiYgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdykge1xuICBtb2R1bGUuZXhwb3J0cyA9IGJ1ZmZlclxufSBlbHNlIHtcbiAgLy8gQ29weSBwcm9wZXJ0aWVzIGZyb20gcmVxdWlyZSgnYnVmZmVyJylcbiAgY29weVByb3BzKGJ1ZmZlciwgZXhwb3J0cylcbiAgZXhwb3J0cy5CdWZmZXIgPSBTYWZlQnVmZmVyXG59XG5cbmZ1bmN0aW9uIFNhZmVCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXJcbmNvcHlQcm9wcyhCdWZmZXIsIFNhZmVCdWZmZXIpXG5cblNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWYuZmlsbCgwKVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKHNpemUpXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBidWZmZXIuU2xvd0J1ZmZlcihzaXplKVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGNvbnRlbnQtZGlzcG9zaXRpb25cbiAqIENvcHlyaWdodChjKSAyMDE0IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRlbnREaXNwb3NpdGlvblxubW9kdWxlLmV4cG9ydHMucGFyc2UgPSBwYXJzZVxuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxudmFyIGJhc2VuYW1lID0gcmVxdWlyZSgncGF0aCcpLmJhc2VuYW1lXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIG5vbiBhdHRyLWNoYXIsICphZnRlciogZW5jb2RlVVJJQ29tcG9uZW50IChpLmUuIG5vdCBpbmNsdWRpbmcgXCIlXCIpXG4gKi9cblxudmFyIEVOQ09ERV9VUkxfQVRUUl9DSEFSX1JFR0VYUCA9IC9bXFx4MDAtXFx4MjBcIicoKSosLzo7PD0+P0BbXFxcXFxcXXt9XFx4N2ZdL2cgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb250cm9sLXJlZ2V4XG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHBlcmNlbnQgZW5jb2RpbmcgZXNjYXBlLlxuICovXG5cbnZhciBIRVhfRVNDQVBFX1JFR0VYUCA9IC8lWzAtOUEtRmEtZl17Mn0vXG52YXIgSEVYX0VTQ0FQRV9SRVBMQUNFX1JFR0VYUCA9IC8lKFswLTlBLUZhLWZdezJ9KS9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIG5vbi1sYXRpbjEgY2hhcmFjdGVycy5cbiAqL1xuXG52YXIgTk9OX0xBVElOMV9SRUdFWFAgPSAvW15cXHgyMC1cXHg3ZVxceGEwLVxceGZmXS9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHF1b3RlZC1wYWlyIGluIFJGQyAyNjE2XG4gKlxuICogcXVvdGVkLXBhaXIgPSBcIlxcXCIgQ0hBUlxuICogQ0hBUiAgICAgICAgPSA8YW55IFVTLUFTQ0lJIGNoYXJhY3RlciAob2N0ZXRzIDAgLSAxMjcpPlxuICovXG5cbnZhciBRRVNDX1JFR0VYUCA9IC9cXFxcKFtcXHUwMDAwLVxcdTAwN2ZdKS9nXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGNoYXJzIHRoYXQgbXVzdCBiZSBxdW90ZWQtcGFpciBpbiBSRkMgMjYxNlxuICovXG5cbnZhciBRVU9URV9SRUdFWFAgPSAvKFtcXFxcXCJdKS9nXG5cbi8qKlxuICogUmVnRXhwIGZvciB2YXJpb3VzIFJGQyAyNjE2IGdyYW1tYXJcbiAqXG4gKiBwYXJhbWV0ZXIgICAgID0gdG9rZW4gXCI9XCIgKCB0b2tlbiB8IHF1b3RlZC1zdHJpbmcgKVxuICogdG9rZW4gICAgICAgICA9IDEqPGFueSBDSEFSIGV4Y2VwdCBDVExzIG9yIHNlcGFyYXRvcnM+XG4gKiBzZXBhcmF0b3JzICAgID0gXCIoXCIgfCBcIilcIiB8IFwiPFwiIHwgXCI+XCIgfCBcIkBcIlxuICogICAgICAgICAgICAgICB8IFwiLFwiIHwgXCI7XCIgfCBcIjpcIiB8IFwiXFxcIiB8IDxcIj5cbiAqICAgICAgICAgICAgICAgfCBcIi9cIiB8IFwiW1wiIHwgXCJdXCIgfCBcIj9cIiB8IFwiPVwiXG4gKiAgICAgICAgICAgICAgIHwgXCJ7XCIgfCBcIn1cIiB8IFNQIHwgSFRcbiAqIHF1b3RlZC1zdHJpbmcgPSAoIDxcIj4gKihxZHRleHQgfCBxdW90ZWQtcGFpciApIDxcIj4gKVxuICogcWR0ZXh0ICAgICAgICA9IDxhbnkgVEVYVCBleGNlcHQgPFwiPj5cbiAqIHF1b3RlZC1wYWlyICAgPSBcIlxcXCIgQ0hBUlxuICogQ0hBUiAgICAgICAgICA9IDxhbnkgVVMtQVNDSUkgY2hhcmFjdGVyIChvY3RldHMgMCAtIDEyNyk+XG4gKiBURVhUICAgICAgICAgID0gPGFueSBPQ1RFVCBleGNlcHQgQ1RMcywgYnV0IGluY2x1ZGluZyBMV1M+XG4gKiBMV1MgICAgICAgICAgID0gW0NSTEZdIDEqKCBTUCB8IEhUIClcbiAqIENSTEYgICAgICAgICAgPSBDUiBMRlxuICogQ1IgICAgICAgICAgICA9IDxVUy1BU0NJSSBDUiwgY2FycmlhZ2UgcmV0dXJuICgxMyk+XG4gKiBMRiAgICAgICAgICAgID0gPFVTLUFTQ0lJIExGLCBsaW5lZmVlZCAoMTApPlxuICogU1AgICAgICAgICAgICA9IDxVUy1BU0NJSSBTUCwgc3BhY2UgKDMyKT5cbiAqIEhUICAgICAgICAgICAgPSA8VVMtQVNDSUkgSFQsIGhvcml6b250YWwtdGFiICg5KT5cbiAqIENUTCAgICAgICAgICAgPSA8YW55IFVTLUFTQ0lJIGNvbnRyb2wgY2hhcmFjdGVyIChvY3RldHMgMCAtIDMxKSBhbmQgREVMICgxMjcpPlxuICogT0NURVQgICAgICAgICA9IDxhbnkgOC1iaXQgc2VxdWVuY2Ugb2YgZGF0YT5cbiAqL1xuXG52YXIgUEFSQU1fUkVHRVhQID0gLztbXFx4MDlcXHgyMF0qKFshIyQlJicqKy4wLTlBLVpeX2BhLXp8fi1dKylbXFx4MDlcXHgyMF0qPVtcXHgwOVxceDIwXSooXCIoPzpbXFx4MjAhXFx4MjMtXFx4NWJcXHg1ZC1cXHg3ZVxceDgwLVxceGZmXXxcXFxcW1xceDIwLVxceDdlXSkqXCJ8WyEjJCUmJyorLjAtOUEtWl5fYGEtenx+LV0rKVtcXHgwOVxceDIwXSovZyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbnZhciBURVhUX1JFR0VYUCA9IC9eW1xceDIwLVxceDdlXFx4ODAtXFx4ZmZdKyQvXG52YXIgVE9LRU5fUkVHRVhQID0gL15bISMkJSYnKisuMC05QS1aXl9gYS16fH4tXSskL1xuXG4vKipcbiAqIFJlZ0V4cCBmb3IgdmFyaW91cyBSRkMgNTk4NyBncmFtbWFyXG4gKlxuICogZXh0LXZhbHVlICAgICA9IGNoYXJzZXQgIFwiJ1wiIFsgbGFuZ3VhZ2UgXSBcIidcIiB2YWx1ZS1jaGFyc1xuICogY2hhcnNldCAgICAgICA9IFwiVVRGLThcIiAvIFwiSVNPLTg4NTktMVwiIC8gbWltZS1jaGFyc2V0XG4gKiBtaW1lLWNoYXJzZXQgID0gMSptaW1lLWNoYXJzZXRjXG4gKiBtaW1lLWNoYXJzZXRjID0gQUxQSEEgLyBESUdJVFxuICogICAgICAgICAgICAgICAvIFwiIVwiIC8gXCIjXCIgLyBcIiRcIiAvIFwiJVwiIC8gXCImXCJcbiAqICAgICAgICAgICAgICAgLyBcIitcIiAvIFwiLVwiIC8gXCJeXCIgLyBcIl9cIiAvIFwiYFwiXG4gKiAgICAgICAgICAgICAgIC8gXCJ7XCIgLyBcIn1cIiAvIFwiflwiXG4gKiBsYW5ndWFnZSAgICAgID0gKCAyKjNBTFBIQSBbIGV4dGxhbmcgXSApXG4gKiAgICAgICAgICAgICAgIC8gNEFMUEhBXG4gKiAgICAgICAgICAgICAgIC8gNSo4QUxQSEFcbiAqIGV4dGxhbmcgICAgICAgPSAqMyggXCItXCIgM0FMUEhBIClcbiAqIHZhbHVlLWNoYXJzICAgPSAqKCBwY3QtZW5jb2RlZCAvIGF0dHItY2hhciApXG4gKiBwY3QtZW5jb2RlZCAgID0gXCIlXCIgSEVYRElHIEhFWERJR1xuICogYXR0ci1jaGFyICAgICA9IEFMUEhBIC8gRElHSVRcbiAqICAgICAgICAgICAgICAgLyBcIiFcIiAvIFwiI1wiIC8gXCIkXCIgLyBcIiZcIiAvIFwiK1wiIC8gXCItXCIgLyBcIi5cIlxuICogICAgICAgICAgICAgICAvIFwiXlwiIC8gXCJfXCIgLyBcImBcIiAvIFwifFwiIC8gXCJ+XCJcbiAqL1xuXG52YXIgRVhUX1ZBTFVFX1JFR0VYUCA9IC9eKFtBLVphLXowLTkhIyQlJitcXC1eX2B7fX5dKyknKD86W0EtWmEtel17MiwzfSg/Oi1bQS1aYS16XXszfSl7MCwzfXxbQS1aYS16XXs0LDh9fCknKCg/OiVbMC05QS1GYS1mXXsyfXxbQS1aYS16MC05ISMkJisuXl9gfH4tXSkrKSQvXG5cbi8qKlxuICogUmVnRXhwIGZvciB2YXJpb3VzIFJGQyA2MjY2IGdyYW1tYXJcbiAqXG4gKiBkaXNwb3NpdGlvbi10eXBlID0gXCJpbmxpbmVcIiB8IFwiYXR0YWNobWVudFwiIHwgZGlzcC1leHQtdHlwZVxuICogZGlzcC1leHQtdHlwZSAgICA9IHRva2VuXG4gKiBkaXNwb3NpdGlvbi1wYXJtID0gZmlsZW5hbWUtcGFybSB8IGRpc3AtZXh0LXBhcm1cbiAqIGZpbGVuYW1lLXBhcm0gICAgPSBcImZpbGVuYW1lXCIgXCI9XCIgdmFsdWVcbiAqICAgICAgICAgICAgICAgICAgfCBcImZpbGVuYW1lKlwiIFwiPVwiIGV4dC12YWx1ZVxuICogZGlzcC1leHQtcGFybSAgICA9IHRva2VuIFwiPVwiIHZhbHVlXG4gKiAgICAgICAgICAgICAgICAgIHwgZXh0LXRva2VuIFwiPVwiIGV4dC12YWx1ZVxuICogZXh0LXRva2VuICAgICAgICA9IDx0aGUgY2hhcmFjdGVycyBpbiB0b2tlbiwgZm9sbG93ZWQgYnkgXCIqXCI+XG4gKi9cblxudmFyIERJU1BPU0lUSU9OX1RZUEVfUkVHRVhQID0gL14oWyEjJCUmJyorLjAtOUEtWl5fYGEtenx+LV0rKVtcXHgwOVxceDIwXSooPzokfDspLyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcblxuLyoqXG4gKiBDcmVhdGUgYW4gYXR0YWNobWVudCBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVuYW1lXVxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnR5cGU9YXR0YWNobWVudF1cbiAqIEBwYXJhbSB7c3RyaW5nfGJvb2xlYW59IFtvcHRpb25zLmZhbGxiYWNrPXRydWVdXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGNvbnRlbnREaXNwb3NpdGlvbiAoZmlsZW5hbWUsIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9XG5cbiAgLy8gZ2V0IHR5cGVcbiAgdmFyIHR5cGUgPSBvcHRzLnR5cGUgfHwgJ2F0dGFjaG1lbnQnXG5cbiAgLy8gZ2V0IHBhcmFtZXRlcnNcbiAgdmFyIHBhcmFtcyA9IGNyZWF0ZXBhcmFtcyhmaWxlbmFtZSwgb3B0cy5mYWxsYmFjaylcblxuICAvLyBmb3JtYXQgaW50byBzdHJpbmdcbiAgcmV0dXJuIGZvcm1hdChuZXcgQ29udGVudERpc3Bvc2l0aW9uKHR5cGUsIHBhcmFtcykpXG59XG5cbi8qKlxuICogQ3JlYXRlIHBhcmFtZXRlcnMgb2JqZWN0IGZyb20gZmlsZW5hbWUgYW5kIGZhbGxiYWNrLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmlsZW5hbWVdXG4gKiBAcGFyYW0ge3N0cmluZ3xib29sZWFufSBbZmFsbGJhY2s9dHJ1ZV1cbiAqIEByZXR1cm4ge29iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZXBhcmFtcyAoZmlsZW5hbWUsIGZhbGxiYWNrKSB7XG4gIGlmIChmaWxlbmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgcGFyYW1zID0ge31cblxuICBpZiAodHlwZW9mIGZpbGVuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ZpbGVuYW1lIG11c3QgYmUgYSBzdHJpbmcnKVxuICB9XG5cbiAgLy8gZmFsbGJhY2sgZGVmYXVsdHMgdG8gdHJ1ZVxuICBpZiAoZmFsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIGZhbGxiYWNrID0gdHJ1ZVxuICB9XG5cbiAgaWYgKHR5cGVvZiBmYWxsYmFjayAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIGZhbGxiYWNrICE9PSAnYm9vbGVhbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmYWxsYmFjayBtdXN0IGJlIGEgc3RyaW5nIG9yIGJvb2xlYW4nKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBmYWxsYmFjayA9PT0gJ3N0cmluZycgJiYgTk9OX0xBVElOMV9SRUdFWFAudGVzdChmYWxsYmFjaykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmYWxsYmFjayBtdXN0IGJlIElTTy04ODU5LTEgc3RyaW5nJylcbiAgfVxuXG4gIC8vIHJlc3RyaWN0IHRvIGZpbGUgYmFzZSBuYW1lXG4gIHZhciBuYW1lID0gYmFzZW5hbWUoZmlsZW5hbWUpXG5cbiAgLy8gZGV0ZXJtaW5lIGlmIG5hbWUgaXMgc3VpdGFibGUgZm9yIHF1b3RlZCBzdHJpbmdcbiAgdmFyIGlzUXVvdGVkU3RyaW5nID0gVEVYVF9SRUdFWFAudGVzdChuYW1lKVxuXG4gIC8vIGdlbmVyYXRlIGZhbGxiYWNrIG5hbWVcbiAgdmFyIGZhbGxiYWNrTmFtZSA9IHR5cGVvZiBmYWxsYmFjayAhPT0gJ3N0cmluZydcbiAgICA/IGZhbGxiYWNrICYmIGdldGxhdGluMShuYW1lKVxuICAgIDogYmFzZW5hbWUoZmFsbGJhY2spXG4gIHZhciBoYXNGYWxsYmFjayA9IHR5cGVvZiBmYWxsYmFja05hbWUgPT09ICdzdHJpbmcnICYmIGZhbGxiYWNrTmFtZSAhPT0gbmFtZVxuXG4gIC8vIHNldCBleHRlbmRlZCBmaWxlbmFtZSBwYXJhbWV0ZXJcbiAgaWYgKGhhc0ZhbGxiYWNrIHx8ICFpc1F1b3RlZFN0cmluZyB8fCBIRVhfRVNDQVBFX1JFR0VYUC50ZXN0KG5hbWUpKSB7XG4gICAgcGFyYW1zWydmaWxlbmFtZSonXSA9IG5hbWVcbiAgfVxuXG4gIC8vIHNldCBmaWxlbmFtZSBwYXJhbWV0ZXJcbiAgaWYgKGlzUXVvdGVkU3RyaW5nIHx8IGhhc0ZhbGxiYWNrKSB7XG4gICAgcGFyYW1zLmZpbGVuYW1lID0gaGFzRmFsbGJhY2tcbiAgICAgID8gZmFsbGJhY2tOYW1lXG4gICAgICA6IG5hbWVcbiAgfVxuXG4gIHJldHVybiBwYXJhbXNcbn1cblxuLyoqXG4gKiBGb3JtYXQgb2JqZWN0IHRvIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmpcbiAqIEBwYXJhbSB7c3RyaW5nfSBvYmoudHlwZVxuICogQHBhcmFtIHtvYmplY3R9IFtvYmoucGFyYW1ldGVyc11cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZvcm1hdCAob2JqKSB7XG4gIHZhciBwYXJhbWV0ZXJzID0gb2JqLnBhcmFtZXRlcnNcbiAgdmFyIHR5cGUgPSBvYmoudHlwZVxuXG4gIGlmICghdHlwZSB8fCB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycgfHwgIVRPS0VOX1JFR0VYUC50ZXN0KHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCB0eXBlJylcbiAgfVxuXG4gIC8vIHN0YXJ0IHdpdGggbm9ybWFsaXplZCB0eXBlXG4gIHZhciBzdHJpbmcgPSBTdHJpbmcodHlwZSkudG9Mb3dlckNhc2UoKVxuXG4gIC8vIGFwcGVuZCBwYXJhbWV0ZXJzXG4gIGlmIChwYXJhbWV0ZXJzICYmIHR5cGVvZiBwYXJhbWV0ZXJzID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBwYXJhbVxuICAgIHZhciBwYXJhbXMgPSBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5zb3J0KClcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBwYXJhbSA9IHBhcmFtc1tpXVxuXG4gICAgICB2YXIgdmFsID0gcGFyYW0uc3Vic3RyKC0xKSA9PT0gJyonXG4gICAgICAgID8gdXN0cmluZyhwYXJhbWV0ZXJzW3BhcmFtXSlcbiAgICAgICAgOiBxc3RyaW5nKHBhcmFtZXRlcnNbcGFyYW1dKVxuXG4gICAgICBzdHJpbmcgKz0gJzsgJyArIHBhcmFtICsgJz0nICsgdmFsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0cmluZ1xufVxuXG4vKipcbiAqIERlY29kZSBhIFJGQyA2OTg3IGZpZWxkIHZhbHVlIChncmFjZWZ1bGx5KS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBkZWNvZGVmaWVsZCAoc3RyKSB7XG4gIHZhciBtYXRjaCA9IEVYVF9WQUxVRV9SRUdFWFAuZXhlYyhzdHIpXG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgZXh0ZW5kZWQgZmllbGQgdmFsdWUnKVxuICB9XG5cbiAgdmFyIGNoYXJzZXQgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG4gIHZhciBlbmNvZGVkID0gbWF0Y2hbMl1cbiAgdmFyIHZhbHVlXG5cbiAgLy8gdG8gYmluYXJ5IHN0cmluZ1xuICB2YXIgYmluYXJ5ID0gZW5jb2RlZC5yZXBsYWNlKEhFWF9FU0NBUEVfUkVQTEFDRV9SRUdFWFAsIHBkZWNvZGUpXG5cbiAgc3dpdGNoIChjaGFyc2V0KSB7XG4gICAgY2FzZSAnaXNvLTg4NTktMSc6XG4gICAgICB2YWx1ZSA9IGdldGxhdGluMShiaW5hcnkpXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgIHZhbHVlID0gbmV3IEJ1ZmZlcihiaW5hcnksICdiaW5hcnknKS50b1N0cmluZygndXRmOCcpXG4gICAgICBicmVha1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCBjaGFyc2V0IGluIGV4dGVuZGVkIGZpZWxkJylcbiAgfVxuXG4gIHJldHVybiB2YWx1ZVxufVxuXG4vKipcbiAqIEdldCBJU08tODg1OS0xIHZlcnNpb24gb2Ygc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldGxhdGluMSAodmFsKSB7XG4gIC8vIHNpbXBsZSBVbmljb2RlIC0+IElTTy04ODU5LTEgdHJhbnNmb3JtYXRpb25cbiAgcmV0dXJuIFN0cmluZyh2YWwpLnJlcGxhY2UoTk9OX0xBVElOMV9SRUdFWFAsICc/Jylcbn1cblxuLyoqXG4gKiBQYXJzZSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlciBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7b2JqZWN0fVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2UgKHN0cmluZykge1xuICBpZiAoIXN0cmluZyB8fCB0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHN0cmluZyBpcyByZXF1aXJlZCcpXG4gIH1cblxuICB2YXIgbWF0Y2ggPSBESVNQT1NJVElPTl9UWVBFX1JFR0VYUC5leGVjKHN0cmluZylcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCB0eXBlIGZvcm1hdCcpXG4gIH1cblxuICAvLyBub3JtYWxpemUgdHlwZVxuICB2YXIgaW5kZXggPSBtYXRjaFswXS5sZW5ndGhcbiAgdmFyIHR5cGUgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIGtleVxuICB2YXIgbmFtZXMgPSBbXVxuICB2YXIgcGFyYW1zID0ge31cbiAgdmFyIHZhbHVlXG5cbiAgLy8gY2FsY3VsYXRlIGluZGV4IHRvIHN0YXJ0IGF0XG4gIGluZGV4ID0gUEFSQU1fUkVHRVhQLmxhc3RJbmRleCA9IG1hdGNoWzBdLnN1YnN0cigtMSkgPT09ICc7J1xuICAgID8gaW5kZXggLSAxXG4gICAgOiBpbmRleFxuXG4gIC8vIG1hdGNoIHBhcmFtZXRlcnNcbiAgd2hpbGUgKChtYXRjaCA9IFBBUkFNX1JFR0VYUC5leGVjKHN0cmluZykpKSB7XG4gICAgaWYgKG1hdGNoLmluZGV4ICE9PSBpbmRleCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgICB9XG5cbiAgICBpbmRleCArPSBtYXRjaFswXS5sZW5ndGhcbiAgICBrZXkgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG4gICAgdmFsdWUgPSBtYXRjaFsyXVxuXG4gICAgaWYgKG5hbWVzLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgZHVwbGljYXRlIHBhcmFtZXRlcicpXG4gICAgfVxuXG4gICAgbmFtZXMucHVzaChrZXkpXG5cbiAgICBpZiAoa2V5LmluZGV4T2YoJyonKSArIDEgPT09IGtleS5sZW5ndGgpIHtcbiAgICAgIC8vIGRlY29kZSBleHRlbmRlZCB2YWx1ZVxuICAgICAga2V5ID0ga2V5LnNsaWNlKDAsIC0xKVxuICAgICAgdmFsdWUgPSBkZWNvZGVmaWVsZCh2YWx1ZSlcblxuICAgICAgLy8gb3ZlcndyaXRlIGV4aXN0aW5nIHZhbHVlXG4gICAgICBwYXJhbXNba2V5XSA9IHZhbHVlXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcGFyYW1zW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmICh2YWx1ZVswXSA9PT0gJ1wiJykge1xuICAgICAgLy8gcmVtb3ZlIHF1b3RlcyBhbmQgZXNjYXBlc1xuICAgICAgdmFsdWUgPSB2YWx1ZVxuICAgICAgICAuc3Vic3RyKDEsIHZhbHVlLmxlbmd0aCAtIDIpXG4gICAgICAgIC5yZXBsYWNlKFFFU0NfUkVHRVhQLCAnJDEnKVxuICAgIH1cblxuICAgIHBhcmFtc1trZXldID0gdmFsdWVcbiAgfVxuXG4gIGlmIChpbmRleCAhPT0gLTEgJiYgaW5kZXggIT09IHN0cmluZy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHBhcmFtZXRlciBmb3JtYXQnKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBDb250ZW50RGlzcG9zaXRpb24odHlwZSwgcGFyYW1zKVxufVxuXG4vKipcbiAqIFBlcmNlbnQgZGVjb2RlIGEgc2luZ2xlIGNoYXJhY3Rlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge3N0cmluZ30gaGV4XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwZGVjb2RlIChzdHIsIGhleCkge1xuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChoZXgsIDE2KSlcbn1cblxuLyoqXG4gKiBQZXJjZW50IGVuY29kZSBhIHNpbmdsZSBjaGFyYWN0ZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNoYXJcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBlbmNvZGUgKGNoYXIpIHtcbiAgdmFyIGhleCA9IFN0cmluZyhjaGFyKVxuICAgIC5jaGFyQ29kZUF0KDApXG4gICAgLnRvU3RyaW5nKDE2KVxuICAgIC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBoZXgubGVuZ3RoID09PSAxXG4gICAgPyAnJTAnICsgaGV4XG4gICAgOiAnJScgKyBoZXhcbn1cblxuLyoqXG4gKiBRdW90ZSBhIHN0cmluZyBmb3IgSFRUUC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBxc3RyaW5nICh2YWwpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyh2YWwpXG5cbiAgcmV0dXJuICdcIicgKyBzdHIucmVwbGFjZShRVU9URV9SRUdFWFAsICdcXFxcJDEnKSArICdcIidcbn1cblxuLyoqXG4gKiBFbmNvZGUgYSBVbmljb2RlIHN0cmluZyBmb3IgSFRUUCAoUkZDIDU5ODcpLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHVzdHJpbmcgKHZhbCkge1xuICB2YXIgc3RyID0gU3RyaW5nKHZhbClcblxuICAvLyBwZXJjZW50IGVuY29kZSBhcyBVVEYtOFxuICB2YXIgZW5jb2RlZCA9IGVuY29kZVVSSUNvbXBvbmVudChzdHIpXG4gICAgLnJlcGxhY2UoRU5DT0RFX1VSTF9BVFRSX0NIQVJfUkVHRVhQLCBwZW5jb2RlKVxuXG4gIHJldHVybiAnVVRGLThcXCdcXCcnICsgZW5jb2RlZFxufVxuXG4vKipcbiAqIENsYXNzIGZvciBwYXJzZWQgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIgZm9yIHY4IG9wdGltaXphdGlvblxuICovXG5cbmZ1bmN0aW9uIENvbnRlbnREaXNwb3NpdGlvbiAodHlwZSwgcGFyYW1ldGVycykge1xuICB0aGlzLnR5cGUgPSB0eXBlXG4gIHRoaXMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnNcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb250ZW50LWRpc3Bvc2l0aW9uL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV0YWdcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTYgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZXRhZ1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKVxudmFyIFN0YXRzID0gcmVxdWlyZSgnZnMnKS5TdGF0c1xuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdcblxuLyoqXG4gKiBHZW5lcmF0ZSBhbiBlbnRpdHkgdGFnLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfHN0cmluZ30gZW50aXR5XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGVudGl0eXRhZyAoZW50aXR5KSB7XG4gIGlmIChlbnRpdHkubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gZmFzdC1wYXRoIGVtcHR5XG4gICAgcmV0dXJuICdcIjAtMmptajdsNXJTdzB5VmIvdmxXQVlrSy9ZQndrXCInXG4gIH1cblxuICAvLyBjb21wdXRlIGhhc2ggb2YgZW50aXR5XG4gIHZhciBoYXNoID0gY3J5cHRvXG4gICAgLmNyZWF0ZUhhc2goJ3NoYTEnKVxuICAgIC51cGRhdGUoZW50aXR5LCAndXRmOCcpXG4gICAgLmRpZ2VzdCgnYmFzZTY0JylcbiAgICAuc3Vic3RyaW5nKDAsIDI3KVxuXG4gIC8vIGNvbXB1dGUgbGVuZ3RoIG9mIGVudGl0eVxuICB2YXIgbGVuID0gdHlwZW9mIGVudGl0eSA9PT0gJ3N0cmluZydcbiAgICA/IEJ1ZmZlci5ieXRlTGVuZ3RoKGVudGl0eSwgJ3V0ZjgnKVxuICAgIDogZW50aXR5Lmxlbmd0aFxuXG4gIHJldHVybiAnXCInICsgbGVuLnRvU3RyaW5nKDE2KSArICctJyArIGhhc2ggKyAnXCInXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc2ltcGxlIEVUYWcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfFN0YXRzfSBlbnRpdHlcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMud2Vha11cbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBldGFnIChlbnRpdHksIG9wdGlvbnMpIHtcbiAgaWYgKGVudGl0eSA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgZW50aXR5IGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIC8vIHN1cHBvcnQgZnMuU3RhdHMgb2JqZWN0XG4gIHZhciBpc1N0YXRzID0gaXNzdGF0cyhlbnRpdHkpXG4gIHZhciB3ZWFrID0gb3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy53ZWFrID09PSAnYm9vbGVhbidcbiAgICA/IG9wdGlvbnMud2Vha1xuICAgIDogaXNTdGF0c1xuXG4gIC8vIHZhbGlkYXRlIGFyZ3VtZW50XG4gIGlmICghaXNTdGF0cyAmJiB0eXBlb2YgZW50aXR5ICE9PSAnc3RyaW5nJyAmJiAhQnVmZmVyLmlzQnVmZmVyKGVudGl0eSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBlbnRpdHkgbXVzdCBiZSBzdHJpbmcsIEJ1ZmZlciwgb3IgZnMuU3RhdHMnKVxuICB9XG5cbiAgLy8gZ2VuZXJhdGUgZW50aXR5IHRhZ1xuICB2YXIgdGFnID0gaXNTdGF0c1xuICAgID8gc3RhdHRhZyhlbnRpdHkpXG4gICAgOiBlbnRpdHl0YWcoZW50aXR5KVxuXG4gIHJldHVybiB3ZWFrXG4gICAgPyAnVy8nICsgdGFnXG4gICAgOiB0YWdcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgb2JqZWN0IGlzIGEgU3RhdHMgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBpc3N0YXRzIChvYmopIHtcbiAgLy8gZ2VudWluZSBmcy5TdGF0c1xuICBpZiAodHlwZW9mIFN0YXRzID09PSAnZnVuY3Rpb24nICYmIG9iaiBpbnN0YW5jZW9mIFN0YXRzKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vIHF1YWNrIHF1YWNrXG4gIHJldHVybiBvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiZcbiAgICAnY3RpbWUnIGluIG9iaiAmJiB0b1N0cmluZy5jYWxsKG9iai5jdGltZSkgPT09ICdbb2JqZWN0IERhdGVdJyAmJlxuICAgICdtdGltZScgaW4gb2JqICYmIHRvU3RyaW5nLmNhbGwob2JqLm10aW1lKSA9PT0gJ1tvYmplY3QgRGF0ZV0nICYmXG4gICAgJ2lubycgaW4gb2JqICYmIHR5cGVvZiBvYmouaW5vID09PSAnbnVtYmVyJyAmJlxuICAgICdzaXplJyBpbiBvYmogJiYgdHlwZW9mIG9iai5zaXplID09PSAnbnVtYmVyJ1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgdGFnIGZvciBhIHN0YXQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHN0YXRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc3RhdHRhZyAoc3RhdCkge1xuICB2YXIgbXRpbWUgPSBzdGF0Lm10aW1lLmdldFRpbWUoKS50b1N0cmluZygxNilcbiAgdmFyIHNpemUgPSBzdGF0LnNpemUudG9TdHJpbmcoMTYpXG5cbiAgcmV0dXJuICdcIicgKyBzaXplICsgJy0nICsgbXRpbWUgKyAnXCInXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXRhZy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTVcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBmcmVzaFxuICogQ29weXJpZ2h0KGMpIDIwMTIgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDE2LTIwMTcgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIFJlZ0V4cCB0byBjaGVjayBmb3Igbm8tY2FjaGUgdG9rZW4gaW4gQ2FjaGUtQ29udHJvbC5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIENBQ0hFX0NPTlRST0xfTk9fQ0FDSEVfUkVHRVhQID0gLyg/Ol58LClcXHMqP25vLWNhY2hlXFxzKj8oPzosfCQpL1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnJlc2hcblxuLyoqXG4gKiBDaGVjayBmcmVzaG5lc3Mgb2YgdGhlIHJlc3BvbnNlIHVzaW5nIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGhlYWRlcnMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHJlcUhlYWRlcnNcbiAqIEBwYXJhbSB7T2JqZWN0fSByZXNIZWFkZXJzXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZyZXNoIChyZXFIZWFkZXJzLCByZXNIZWFkZXJzKSB7XG4gIC8vIGZpZWxkc1xuICB2YXIgbW9kaWZpZWRTaW5jZSA9IHJlcUhlYWRlcnNbJ2lmLW1vZGlmaWVkLXNpbmNlJ11cbiAgdmFyIG5vbmVNYXRjaCA9IHJlcUhlYWRlcnNbJ2lmLW5vbmUtbWF0Y2gnXVxuXG4gIC8vIHVuY29uZGl0aW9uYWwgcmVxdWVzdFxuICBpZiAoIW1vZGlmaWVkU2luY2UgJiYgIW5vbmVNYXRjaCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gQWx3YXlzIHJldHVybiBzdGFsZSB3aGVuIENhY2hlLUNvbnRyb2w6IG5vLWNhY2hlXG4gIC8vIHRvIHN1cHBvcnQgZW5kLXRvLWVuZCByZWxvYWQgcmVxdWVzdHNcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI2MTYjc2VjdGlvbi0xNC45LjRcbiAgdmFyIGNhY2hlQ29udHJvbCA9IHJlcUhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXVxuICBpZiAoY2FjaGVDb250cm9sICYmIENBQ0hFX0NPTlRST0xfTk9fQ0FDSEVfUkVHRVhQLnRlc3QoY2FjaGVDb250cm9sKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gaWYtbm9uZS1tYXRjaFxuICBpZiAobm9uZU1hdGNoICYmIG5vbmVNYXRjaCAhPT0gJyonKSB7XG4gICAgdmFyIGV0YWcgPSByZXNIZWFkZXJzWydldGFnJ11cblxuICAgIGlmICghZXRhZykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIGV0YWdTdGFsZSA9IHRydWVcbiAgICB2YXIgbWF0Y2hlcyA9IHBhcnNlVG9rZW5MaXN0KG5vbmVNYXRjaClcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBtYXRjaCA9IG1hdGNoZXNbaV1cbiAgICAgIGlmIChtYXRjaCA9PT0gZXRhZyB8fCBtYXRjaCA9PT0gJ1cvJyArIGV0YWcgfHwgJ1cvJyArIG1hdGNoID09PSBldGFnKSB7XG4gICAgICAgIGV0YWdTdGFsZSA9IGZhbHNlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV0YWdTdGFsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLy8gaWYtbW9kaWZpZWQtc2luY2VcbiAgaWYgKG1vZGlmaWVkU2luY2UpIHtcbiAgICB2YXIgbGFzdE1vZGlmaWVkID0gcmVzSGVhZGVyc1snbGFzdC1tb2RpZmllZCddXG4gICAgdmFyIG1vZGlmaWVkU3RhbGUgPSAhbGFzdE1vZGlmaWVkIHx8ICEocGFyc2VIdHRwRGF0ZShsYXN0TW9kaWZpZWQpIDw9IHBhcnNlSHR0cERhdGUobW9kaWZpZWRTaW5jZSkpXG5cbiAgICBpZiAobW9kaWZpZWRTdGFsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBQYXJzZSBhbiBIVFRQIERhdGUgaW50byBhIG51bWJlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0ZVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZUh0dHBEYXRlIChkYXRlKSB7XG4gIHZhciB0aW1lc3RhbXAgPSBkYXRlICYmIERhdGUucGFyc2UoZGF0ZSlcblxuICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZ3VhcmQgYWdhaW5zdCBkYXRlLmpzIERhdGUucGFyc2UgcGF0Y2hpbmdcbiAgcmV0dXJuIHR5cGVvZiB0aW1lc3RhbXAgPT09ICdudW1iZXInXG4gICAgPyB0aW1lc3RhbXBcbiAgICA6IE5hTlxufVxuXG4vKipcbiAqIFBhcnNlIGEgSFRUUCB0b2tlbiBsaXN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VUb2tlbkxpc3QgKHN0cikge1xuICB2YXIgZW5kID0gMFxuICB2YXIgbGlzdCA9IFtdXG4gIHZhciBzdGFydCA9IDBcblxuICAvLyBnYXRoZXIgdG9rZW5zXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICBjYXNlIDB4MjA6IC8qICAgKi9cbiAgICAgICAgaWYgKHN0YXJ0ID09PSBlbmQpIHtcbiAgICAgICAgICBzdGFydCA9IGVuZCA9IGkgKyAxXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMHgyYzogLyogLCAqL1xuICAgICAgICBsaXN0LnB1c2goc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKSlcbiAgICAgICAgc3RhcnQgPSBlbmQgPSBpICsgMVxuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZW5kID0gaSArIDFcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvLyBmaW5hbCB0b2tlblxuICBsaXN0LnB1c2goc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKSlcblxuICByZXR1cm4gbGlzdFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ZyZXNoL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIHJhbmdlLXBhcnNlclxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTUtMjAxNiBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByYW5nZVBhcnNlclxuXG4vKipcbiAqIFBhcnNlIFwiUmFuZ2VcIiBoZWFkZXIgYHN0cmAgcmVsYXRpdmUgdG8gdGhlIGdpdmVuIGZpbGUgYHNpemVgLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBzaXplXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiByYW5nZVBhcnNlciAoc2l6ZSwgc3RyLCBvcHRpb25zKSB7XG4gIHZhciBpbmRleCA9IHN0ci5pbmRleE9mKCc9JylcblxuICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgcmV0dXJuIC0yXG4gIH1cblxuICAvLyBzcGxpdCB0aGUgcmFuZ2Ugc3RyaW5nXG4gIHZhciBhcnIgPSBzdHIuc2xpY2UoaW5kZXggKyAxKS5zcGxpdCgnLCcpXG4gIHZhciByYW5nZXMgPSBbXVxuXG4gIC8vIGFkZCByYW5nZXMgdHlwZVxuICByYW5nZXMudHlwZSA9IHN0ci5zbGljZSgwLCBpbmRleClcblxuICAvLyBwYXJzZSBhbGwgcmFuZ2VzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJhbmdlID0gYXJyW2ldLnNwbGl0KCctJylcbiAgICB2YXIgc3RhcnQgPSBwYXJzZUludChyYW5nZVswXSwgMTApXG4gICAgdmFyIGVuZCA9IHBhcnNlSW50KHJhbmdlWzFdLCAxMClcblxuICAgIC8vIC1ubm5cbiAgICBpZiAoaXNOYU4oc3RhcnQpKSB7XG4gICAgICBzdGFydCA9IHNpemUgLSBlbmRcbiAgICAgIGVuZCA9IHNpemUgLSAxXG4gICAgLy8gbm5uLVxuICAgIH0gZWxzZSBpZiAoaXNOYU4oZW5kKSkge1xuICAgICAgZW5kID0gc2l6ZSAtIDFcbiAgICB9XG5cbiAgICAvLyBsaW1pdCBsYXN0LWJ5dGUtcG9zIHRvIGN1cnJlbnQgbGVuZ3RoXG4gICAgaWYgKGVuZCA+IHNpemUgLSAxKSB7XG4gICAgICBlbmQgPSBzaXplIC0gMVxuICAgIH1cblxuICAgIC8vIGludmFsaWQgb3IgdW5zYXRpc2lmaWFibGVcbiAgICBpZiAoaXNOYU4oc3RhcnQpIHx8IGlzTmFOKGVuZCkgfHwgc3RhcnQgPiBlbmQgfHwgc3RhcnQgPCAwKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIGFkZCByYW5nZVxuICAgIHJhbmdlcy5wdXNoKHtcbiAgICAgIHN0YXJ0OiBzdGFydCxcbiAgICAgIGVuZDogZW5kXG4gICAgfSlcbiAgfVxuXG4gIGlmIChyYW5nZXMubGVuZ3RoIDwgMSkge1xuICAgIC8vIHVuc2F0aXNpZmlhYmxlXG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLmNvbWJpbmVcbiAgICA/IGNvbWJpbmVSYW5nZXMocmFuZ2VzKVxuICAgIDogcmFuZ2VzXG59XG5cbi8qKlxuICogQ29tYmluZSBvdmVybGFwcGluZyAmIGFkamFjZW50IHJhbmdlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29tYmluZVJhbmdlcyAocmFuZ2VzKSB7XG4gIHZhciBvcmRlcmVkID0gcmFuZ2VzLm1hcChtYXBXaXRoSW5kZXgpLnNvcnQoc29ydEJ5UmFuZ2VTdGFydClcblxuICBmb3IgKHZhciBqID0gMCwgaSA9IDE7IGkgPCBvcmRlcmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHJhbmdlID0gb3JkZXJlZFtpXVxuICAgIHZhciBjdXJyZW50ID0gb3JkZXJlZFtqXVxuXG4gICAgaWYgKHJhbmdlLnN0YXJ0ID4gY3VycmVudC5lbmQgKyAxKSB7XG4gICAgICAvLyBuZXh0IHJhbmdlXG4gICAgICBvcmRlcmVkWysral0gPSByYW5nZVxuICAgIH0gZWxzZSBpZiAocmFuZ2UuZW5kID4gY3VycmVudC5lbmQpIHtcbiAgICAgIC8vIGV4dGVuZCByYW5nZVxuICAgICAgY3VycmVudC5lbmQgPSByYW5nZS5lbmRcbiAgICAgIGN1cnJlbnQuaW5kZXggPSBNYXRoLm1pbihjdXJyZW50LmluZGV4LCByYW5nZS5pbmRleClcbiAgICB9XG4gIH1cblxuICAvLyB0cmltIG9yZGVyZWQgYXJyYXlcbiAgb3JkZXJlZC5sZW5ndGggPSBqICsgMVxuXG4gIC8vIGdlbmVyYXRlIGNvbWJpbmVkIHJhbmdlXG4gIHZhciBjb21iaW5lZCA9IG9yZGVyZWQuc29ydChzb3J0QnlSYW5nZUluZGV4KS5tYXAobWFwV2l0aG91dEluZGV4KVxuXG4gIC8vIGNvcHkgcmFuZ2VzIHR5cGVcbiAgY29tYmluZWQudHlwZSA9IHJhbmdlcy50eXBlXG5cbiAgcmV0dXJuIGNvbWJpbmVkXG59XG5cbi8qKlxuICogTWFwIGZ1bmN0aW9uIHRvIGFkZCBpbmRleCB2YWx1ZSB0byByYW5nZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG1hcFdpdGhJbmRleCAocmFuZ2UsIGluZGV4KSB7XG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IHJhbmdlLnN0YXJ0LFxuICAgIGVuZDogcmFuZ2UuZW5kLFxuICAgIGluZGV4OiBpbmRleFxuICB9XG59XG5cbi8qKlxuICogTWFwIGZ1bmN0aW9uIHRvIHJlbW92ZSBpbmRleCB2YWx1ZSBmcm9tIHJhbmdlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbWFwV2l0aG91dEluZGV4IChyYW5nZSkge1xuICByZXR1cm4ge1xuICAgIHN0YXJ0OiByYW5nZS5zdGFydCxcbiAgICBlbmQ6IHJhbmdlLmVuZFxuICB9XG59XG5cbi8qKlxuICogU29ydCBmdW5jdGlvbiB0byBzb3J0IHJhbmdlcyBieSBpbmRleC5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc29ydEJ5UmFuZ2VJbmRleCAoYSwgYikge1xuICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXhcbn1cblxuLyoqXG4gKiBTb3J0IGZ1bmN0aW9uIHRvIHNvcnQgcmFuZ2VzIGJ5IHN0YXJ0IHBvc2l0aW9uLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzb3J0QnlSYW5nZVN0YXJ0IChhLCBiKSB7XG4gIHJldHVybiBhLnN0YXJ0IC0gYi5zdGFydFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3JhbmdlLXBhcnNlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gOTdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBwcm94eS1hZGRyXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE2IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3h5YWRkclxubW9kdWxlLmV4cG9ydHMuYWxsID0gYWxsYWRkcnNcbm1vZHVsZS5leHBvcnRzLmNvbXBpbGUgPSBjb21waWxlXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGZvcndhcmRlZCA9IHJlcXVpcmUoJ2ZvcndhcmRlZCcpXG52YXIgaXBhZGRyID0gcmVxdWlyZSgnaXBhZGRyLmpzJylcblxuLyoqXG4gKiBWYXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBESUdJVF9SRUdFWFAgPSAvXlswLTldKyQvXG52YXIgaXNpcCA9IGlwYWRkci5pc1ZhbGlkXG52YXIgcGFyc2VpcCA9IGlwYWRkci5wYXJzZVxuXG4vKipcbiAqIFByZS1kZWZpbmVkIElQIHJhbmdlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIElQX1JBTkdFUyA9IHtcbiAgbGlua2xvY2FsOiBbJzE2OS4yNTQuMC4wLzE2JywgJ2ZlODA6Oi8xMCddLFxuICBsb29wYmFjazogWycxMjcuMC4wLjEvOCcsICc6OjEvMTI4J10sXG4gIHVuaXF1ZWxvY2FsOiBbJzEwLjAuMC4wLzgnLCAnMTcyLjE2LjAuMC8xMicsICcxOTIuMTY4LjAuMC8xNicsICdmYzAwOjovNyddXG59XG5cbi8qKlxuICogR2V0IGFsbCBhZGRyZXNzZXMgaW4gdGhlIHJlcXVlc3QsIG9wdGlvbmFsbHkgc3RvcHBpbmdcbiAqIGF0IHRoZSBmaXJzdCB1bnRydXN0ZWQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHJlcXVlc3RcbiAqIEBwYXJhbSB7RnVuY3Rpb258QXJyYXl8U3RyaW5nfSBbdHJ1c3RdXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gYWxsYWRkcnMgKHJlcSwgdHJ1c3QpIHtcbiAgLy8gZ2V0IGFkZHJlc3Nlc1xuICB2YXIgYWRkcnMgPSBmb3J3YXJkZWQocmVxKVxuXG4gIGlmICghdHJ1c3QpIHtcbiAgICAvLyBSZXR1cm4gYWxsIGFkZHJlc3Nlc1xuICAgIHJldHVybiBhZGRyc1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0cnVzdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRydXN0ID0gY29tcGlsZSh0cnVzdClcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWRkcnMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgaWYgKHRydXN0KGFkZHJzW2ldLCBpKSkgY29udGludWVcblxuICAgIGFkZHJzLmxlbmd0aCA9IGkgKyAxXG4gIH1cblxuICByZXR1cm4gYWRkcnNcbn1cblxuLyoqXG4gKiBDb21waWxlIGFyZ3VtZW50IGludG8gdHJ1c3QgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHtBcnJheXxTdHJpbmd9IHZhbFxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb21waWxlICh2YWwpIHtcbiAgaWYgKCF2YWwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBpcyByZXF1aXJlZCcpXG4gIH1cblxuICB2YXIgdHJ1c3RcblxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB0cnVzdCA9IFt2YWxdXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgdHJ1c3QgPSB2YWwuc2xpY2UoKVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Vuc3VwcG9ydGVkIHRydXN0IGFyZ3VtZW50JylcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdHJ1c3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YWwgPSB0cnVzdFtpXVxuXG4gICAgaWYgKCFJUF9SQU5HRVMuaGFzT3duUHJvcGVydHkodmFsKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBTcGxpY2UgaW4gcHJlLWRlZmluZWQgcmFuZ2VcbiAgICB2YWwgPSBJUF9SQU5HRVNbdmFsXVxuICAgIHRydXN0LnNwbGljZS5hcHBseSh0cnVzdCwgW2ksIDFdLmNvbmNhdCh2YWwpKVxuICAgIGkgKz0gdmFsLmxlbmd0aCAtIDFcbiAgfVxuXG4gIHJldHVybiBjb21waWxlVHJ1c3QoY29tcGlsZVJhbmdlU3VibmV0cyh0cnVzdCkpXG59XG5cbi8qKlxuICogQ29tcGlsZSBgYXJyYCBlbGVtZW50cyBpbnRvIHJhbmdlIHN1Ym5ldHMuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gYXJyXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbXBpbGVSYW5nZVN1Ym5ldHMgKGFycikge1xuICB2YXIgcmFuZ2VTdWJuZXRzID0gbmV3IEFycmF5KGFyci5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICByYW5nZVN1Ym5ldHNbaV0gPSBwYXJzZWlwTm90YXRpb24oYXJyW2ldKVxuICB9XG5cbiAgcmV0dXJuIHJhbmdlU3VibmV0c1xufVxuXG4vKipcbiAqIENvbXBpbGUgcmFuZ2Ugc3VibmV0IGFycmF5IGludG8gdHJ1c3QgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHtBcnJheX0gcmFuZ2VTdWJuZXRzXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbXBpbGVUcnVzdCAocmFuZ2VTdWJuZXRzKSB7XG4gIC8vIFJldHVybiBvcHRpbWl6ZWQgZnVuY3Rpb24gYmFzZWQgb24gbGVuZ3RoXG4gIHZhciBsZW4gPSByYW5nZVN1Ym5ldHMubGVuZ3RoXG4gIHJldHVybiBsZW4gPT09IDBcbiAgICA/IHRydXN0Tm9uZVxuICAgIDogbGVuID09PSAxXG4gICAgICA/IHRydXN0U2luZ2xlKHJhbmdlU3VibmV0c1swXSlcbiAgICAgIDogdHJ1c3RNdWx0aShyYW5nZVN1Ym5ldHMpXG59XG5cbi8qKlxuICogUGFyc2UgSVAgbm90YXRpb24gc3RyaW5nIGludG8gcmFuZ2Ugc3VibmV0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBub3RlXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlaXBOb3RhdGlvbiAobm90ZSkge1xuICB2YXIgcG9zID0gbm90ZS5sYXN0SW5kZXhPZignLycpXG4gIHZhciBzdHIgPSBwb3MgIT09IC0xXG4gICAgPyBub3RlLnN1YnN0cmluZygwLCBwb3MpXG4gICAgOiBub3RlXG5cbiAgaWYgKCFpc2lwKHN0cikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIElQIGFkZHJlc3M6ICcgKyBzdHIpXG4gIH1cblxuICB2YXIgaXAgPSBwYXJzZWlwKHN0cilcblxuICBpZiAocG9zID09PSAtMSAmJiBpcC5raW5kKCkgPT09ICdpcHY2JyAmJiBpcC5pc0lQdjRNYXBwZWRBZGRyZXNzKCkpIHtcbiAgICAvLyBTdG9yZSBhcyBJUHY0XG4gICAgaXAgPSBpcC50b0lQdjRBZGRyZXNzKClcbiAgfVxuXG4gIHZhciBtYXggPSBpcC5raW5kKCkgPT09ICdpcHY2J1xuICAgID8gMTI4XG4gICAgOiAzMlxuXG4gIHZhciByYW5nZSA9IHBvcyAhPT0gLTFcbiAgICA/IG5vdGUuc3Vic3RyaW5nKHBvcyArIDEsIG5vdGUubGVuZ3RoKVxuICAgIDogbnVsbFxuXG4gIGlmIChyYW5nZSA9PT0gbnVsbCkge1xuICAgIHJhbmdlID0gbWF4XG4gIH0gZWxzZSBpZiAoRElHSVRfUkVHRVhQLnRlc3QocmFuZ2UpKSB7XG4gICAgcmFuZ2UgPSBwYXJzZUludChyYW5nZSwgMTApXG4gIH0gZWxzZSBpZiAoaXAua2luZCgpID09PSAnaXB2NCcgJiYgaXNpcChyYW5nZSkpIHtcbiAgICByYW5nZSA9IHBhcnNlTmV0bWFzayhyYW5nZSlcbiAgfSBlbHNlIHtcbiAgICByYW5nZSA9IG51bGxcbiAgfVxuXG4gIGlmIChyYW5nZSA8PSAwIHx8IHJhbmdlID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCByYW5nZSBvbiBhZGRyZXNzOiAnICsgbm90ZSlcbiAgfVxuXG4gIHJldHVybiBbaXAsIHJhbmdlXVxufVxuXG4vKipcbiAqIFBhcnNlIG5ldG1hc2sgc3RyaW5nIGludG8gQ0lEUiByYW5nZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmV0bWFza1xuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZU5ldG1hc2sgKG5ldG1hc2spIHtcbiAgdmFyIGlwID0gcGFyc2VpcChuZXRtYXNrKVxuICB2YXIga2luZCA9IGlwLmtpbmQoKVxuXG4gIHJldHVybiBraW5kID09PSAnaXB2NCdcbiAgICA/IGlwLnByZWZpeExlbmd0aEZyb21TdWJuZXRNYXNrKClcbiAgICA6IG51bGxcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgYWRkcmVzcyBvZiBwcm94aWVkIHJlcXVlc3QuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHJlcXVlc3RcbiAqIEBwYXJhbSB7RnVuY3Rpb258QXJyYXl8U3RyaW5nfSB0cnVzdFxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHByb3h5YWRkciAocmVxLCB0cnVzdCkge1xuICBpZiAoIXJlcSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JlcSBhcmd1bWVudCBpcyByZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoIXRydXN0KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndHJ1c3QgYXJndW1lbnQgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgdmFyIGFkZHJzID0gYWxsYWRkcnMocmVxLCB0cnVzdClcbiAgdmFyIGFkZHIgPSBhZGRyc1thZGRycy5sZW5ndGggLSAxXVxuXG4gIHJldHVybiBhZGRyXG59XG5cbi8qKlxuICogU3RhdGljIHRydXN0IGZ1bmN0aW9uIHRvIHRydXN0IG5vdGhpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiB0cnVzdE5vbmUgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBDb21waWxlIHRydXN0IGZ1bmN0aW9uIGZvciBtdWx0aXBsZSBzdWJuZXRzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHN1Ym5ldHNcbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gdHJ1c3RNdWx0aSAoc3VibmV0cykge1xuICByZXR1cm4gZnVuY3Rpb24gdHJ1c3QgKGFkZHIpIHtcbiAgICBpZiAoIWlzaXAoYWRkcikpIHJldHVybiBmYWxzZVxuXG4gICAgdmFyIGlwID0gcGFyc2VpcChhZGRyKVxuICAgIHZhciBpcGNvbnZcbiAgICB2YXIga2luZCA9IGlwLmtpbmQoKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJuZXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc3VibmV0ID0gc3VibmV0c1tpXVxuICAgICAgdmFyIHN1Ym5ldGlwID0gc3VibmV0WzBdXG4gICAgICB2YXIgc3VibmV0a2luZCA9IHN1Ym5ldGlwLmtpbmQoKVxuICAgICAgdmFyIHN1Ym5ldHJhbmdlID0gc3VibmV0WzFdXG4gICAgICB2YXIgdHJ1c3RlZCA9IGlwXG5cbiAgICAgIGlmIChraW5kICE9PSBzdWJuZXRraW5kKSB7XG4gICAgICAgIGlmIChzdWJuZXRraW5kID09PSAnaXB2NCcgJiYgIWlwLmlzSVB2NE1hcHBlZEFkZHJlc3MoKSkge1xuICAgICAgICAgIC8vIEluY29tcGF0aWJsZSBJUCBhZGRyZXNzZXNcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpcGNvbnYpIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IElQIHRvIG1hdGNoIHN1Ym5ldCBJUCBraW5kXG4gICAgICAgICAgaXBjb252ID0gc3VibmV0a2luZCA9PT0gJ2lwdjQnXG4gICAgICAgICAgICA/IGlwLnRvSVB2NEFkZHJlc3MoKVxuICAgICAgICAgICAgOiBpcC50b0lQdjRNYXBwZWRBZGRyZXNzKClcbiAgICAgICAgfVxuXG4gICAgICAgIHRydXN0ZWQgPSBpcGNvbnZcbiAgICAgIH1cblxuICAgICAgaWYgKHRydXN0ZWQubWF0Y2goc3VibmV0aXAsIHN1Ym5ldHJhbmdlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8qKlxuICogQ29tcGlsZSB0cnVzdCBmdW5jdGlvbiBmb3Igc2luZ2xlIHN1Ym5ldC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gc3VibmV0XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHRydXN0U2luZ2xlIChzdWJuZXQpIHtcbiAgdmFyIHN1Ym5ldGlwID0gc3VibmV0WzBdXG4gIHZhciBzdWJuZXRraW5kID0gc3VibmV0aXAua2luZCgpXG4gIHZhciBzdWJuZXRpc2lwdjQgPSBzdWJuZXRraW5kID09PSAnaXB2NCdcbiAgdmFyIHN1Ym5ldHJhbmdlID0gc3VibmV0WzFdXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHRydXN0IChhZGRyKSB7XG4gICAgaWYgKCFpc2lwKGFkZHIpKSByZXR1cm4gZmFsc2VcblxuICAgIHZhciBpcCA9IHBhcnNlaXAoYWRkcilcbiAgICB2YXIga2luZCA9IGlwLmtpbmQoKVxuXG4gICAgaWYgKGtpbmQgIT09IHN1Ym5ldGtpbmQpIHtcbiAgICAgIGlmIChzdWJuZXRpc2lwdjQgJiYgIWlwLmlzSVB2NE1hcHBlZEFkZHJlc3MoKSkge1xuICAgICAgICAvLyBJbmNvbXBhdGlibGUgSVAgYWRkcmVzc2VzXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuXG4gICAgICAvLyBDb252ZXJ0IElQIHRvIG1hdGNoIHN1Ym5ldCBJUCBraW5kXG4gICAgICBpcCA9IHN1Ym5ldGlzaXB2NFxuICAgICAgICA/IGlwLnRvSVB2NEFkZHJlc3MoKVxuICAgICAgICA6IGlwLnRvSVB2NE1hcHBlZEFkZHJlc3MoKVxuICAgIH1cblxuICAgIHJldHVybiBpcC5tYXRjaChzdWJuZXRpcCwgc3VibmV0cmFuZ2UpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9wcm94eS1hZGRyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSA5OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAxMDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW9iamVjdC5qc1xuLy8gbW9kdWxlIGlkID0gMTAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgKGdsb2JhbFtTSEFSRURdID0ge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogY29yZS52ZXJzaW9uLFxuICBtb2RlOiByZXF1aXJlKCcuL19saWJyYXJ5JykgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanNcbi8vIG1vZHVsZSBpZCA9IDEwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTA0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2h0bWwuanNcbi8vIG1vZHVsZSBpZCA9IDEwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyA3LjEuMTMgVG9PYmplY3QoYXJndW1lbnQpXG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAxMDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZG9uZSwgdmFsdWUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmUgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qc1xuLy8gbW9kdWxlIGlkID0gMTA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qc1xuLy8gbW9kdWxlIGlkID0gMTA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDcuMy4yMCBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgRCkge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBEIDogYUZ1bmN0aW9uKFMpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3BlY2llcy1jb25zdHJ1Y3Rvci5qc1xuLy8gbW9kdWxlIGlkID0gMTA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBpbnZva2UgPSByZXF1aXJlKCcuL19pbnZva2UnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi9faHRtbCcpO1xudmFyIGNlbCA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgc2V0VGFzayA9IGdsb2JhbC5zZXRJbW1lZGlhdGU7XG52YXIgY2xlYXJUYXNrID0gZ2xvYmFsLmNsZWFySW1tZWRpYXRlO1xudmFyIE1lc3NhZ2VDaGFubmVsID0gZ2xvYmFsLk1lc3NhZ2VDaGFubmVsO1xudmFyIERpc3BhdGNoID0gZ2xvYmFsLkRpc3BhdGNoO1xudmFyIGNvdW50ZXIgPSAwO1xudmFyIHF1ZXVlID0ge307XG52YXIgT05SRUFEWVNUQVRFQ0hBTkdFID0gJ29ucmVhZHlzdGF0ZWNoYW5nZSc7XG52YXIgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG52YXIgcnVuID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaWQgPSArdGhpcztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICBpZiAocXVldWUuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4uY2FsbChldmVudC5kYXRhKTtcbn07XG4vLyBOb2RlLmpzIDAuOSsgJiBJRTEwKyBoYXMgc2V0SW1tZWRpYXRlLCBvdGhlcndpc2U6XG5pZiAoIXNldFRhc2sgfHwgIWNsZWFyVGFzaykge1xuICBzZXRUYXNrID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGZuKSB7XG4gICAgdmFyIGFyZ3MgPSBbXTtcbiAgICB2YXIgaSA9IDE7XG4gICAgd2hpbGUgKGFyZ3VtZW50cy5sZW5ndGggPiBpKSBhcmdzLnB1c2goYXJndW1lbnRzW2krK10pO1xuICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgICAgIGludm9rZSh0eXBlb2YgZm4gPT0gJ2Z1bmN0aW9uJyA/IGZuIDogRnVuY3Rpb24oZm4pLCBhcmdzKTtcbiAgICB9O1xuICAgIGRlZmVyKGNvdW50ZXIpO1xuICAgIHJldHVybiBjb3VudGVyO1xuICB9O1xuICBjbGVhclRhc2sgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShpZCkge1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZiAocmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soY3R4KHJ1biwgaWQsIDEpKTtcbiAgICB9O1xuICAvLyBTcGhlcmUgKEpTIGdhbWUgZW5naW5lKSBEaXNwYXRjaCBBUElcbiAgfSBlbHNlIGlmIChEaXNwYXRjaCAmJiBEaXNwYXRjaC5ub3cpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgRGlzcGF0Y2gubm93KGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuICB9IGVsc2UgaWYgKE1lc3NhZ2VDaGFubmVsKSB7XG4gICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIHBvcnQgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGlzdGVuZXI7XG4gICAgZGVmZXIgPSBjdHgocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCwgMSk7XG4gIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuICB9IGVsc2UgaWYgKGdsb2JhbC5hZGRFdmVudExpc3RlbmVyICYmIHR5cGVvZiBwb3N0TWVzc2FnZSA9PSAnZnVuY3Rpb24nICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBnbG9iYWwucG9zdE1lc3NhZ2UoaWQgKyAnJywgJyonKTtcbiAgICB9O1xuICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdGVuZXIsIGZhbHNlKTtcbiAgLy8gSUU4LVxuICB9IGVsc2UgaWYgKE9OUkVBRFlTVEFURUNIQU5HRSBpbiBjZWwoJ3NjcmlwdCcpKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGh0bWwuYXBwZW5kQ2hpbGQoY2VsKCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuLmNhbGwoaWQpO1xuICAgICAgfTtcbiAgICB9O1xuICAvLyBSZXN0IG9sZCBicm93c2Vyc1xuICB9IGVsc2Uge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBzZXRUaW1lb3V0KGN0eChydW4sIGlkLCAxKSwgMCk7XG4gICAgfTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0VGFzayxcbiAgY2xlYXI6IGNsZWFyVGFza1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdGFzay5qc1xuLy8gbW9kdWxlIGlkID0gMTEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlOiBmYWxzZSwgdjogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyBlOiB0cnVlLCB2OiBlIH07XG4gIH1cbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3BlcmZvcm0uanNcbi8vIG1vZHVsZSBpZCA9IDExMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9taXNlLXJlc29sdmUuanNcbi8vIG1vZHVsZSBpZCA9IDExMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZKSB7XG4gIHZhciBDID0gdHlwZW9mIGNvcmVbS0VZXSA9PSAnZnVuY3Rpb24nID8gY29yZVtLRVldIDogZ2xvYmFsW0tFWV07XG4gIGlmIChERVNDUklQVE9SUyAmJiBDICYmICFDW1NQRUNJRVNdKSBkUC5mKEMsIFNQRUNJRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gIH0pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanNcbi8vIG1vZHVsZSBpZCA9IDExM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZ2V0SnNvbkRhdGFTeW5jLCB3cml0ZUpzb25EYXRhU3luYyB9ICBmcm9tICcuL2pzb24nO1xuaW1wb3J0IHsgTUVUUklDU19QQVRIIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5mdW5jdGlvbiBzYXZlVGFyZ2V0cyh0YXJnZXRzKSB7XG4gIGxldCBtZXRyaWNzID0gW107XG4gIGZvciAobGV0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgbWV0cmljcy5wdXNoKHNhdmVUYXJnZXQodGFyZ2V0KSk7XG4gIH1cbiAgcmV0dXJuIG1ldHJpY3M7XG59XG5cbmZ1bmN0aW9uIHNhdmVUYXJnZXQodGFyZ2V0KSB7XG4gIC8vY29uc3QgbWQ1ID0gY3J5cHRvLmNyZWF0ZUhhc2goJ21kNScpXG4gIGNvbnN0IHRhcmdldElkID0gY3J5cHRvLmNyZWF0ZUhhc2goJ21kNScpLnVwZGF0ZShKU09OLnN0cmluZ2lmeSh0YXJnZXQpKS5kaWdlc3QoJ2hleCcpO1xuICBsZXQgZmlsZW5hbWUgPSBwYXRoLmpvaW4oTUVUUklDU19QQVRILCBgJHt0YXJnZXRJZH0uanNvbmApO1xuICB3cml0ZUpzb25EYXRhU3luYyhmaWxlbmFtZSwgdGFyZ2V0KTtcbiAgcmV0dXJuIHRhcmdldElkO1xufVxuXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0SWQpIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKE1FVFJJQ1NfUEFUSCwgYCR7dGFyZ2V0SWR9Lmpzb25gKTtcbiAgcmV0dXJuIGdldEpzb25EYXRhU3luYyhmaWxlbmFtZSk7XG59XG5cbmV4cG9ydCB7IHNhdmVUYXJnZXRzLCBnZXRUYXJnZXQgfVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc2VydmljZXMvbWV0cmljcy50cyIsInZhciBTdHJlYW0gPSByZXF1aXJlKFwic3RyZWFtXCIpXG52YXIgd3JpdGVNZXRob2RzID0gW1wid3JpdGVcIiwgXCJlbmRcIiwgXCJkZXN0cm95XCJdXG52YXIgcmVhZE1ldGhvZHMgPSBbXCJyZXN1bWVcIiwgXCJwYXVzZVwiXVxudmFyIHJlYWRFdmVudHMgPSBbXCJkYXRhXCIsIFwiY2xvc2VcIl1cbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGR1cGxleFxuXG5mdW5jdGlvbiBmb3JFYWNoIChhcnIsIGZuKSB7XG4gICAgaWYgKGFyci5mb3JFYWNoKSB7XG4gICAgICAgIHJldHVybiBhcnIuZm9yRWFjaChmbilcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICBmbihhcnJbaV0sIGkpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBkdXBsZXgod3JpdGVyLCByZWFkZXIpIHtcbiAgICB2YXIgc3RyZWFtID0gbmV3IFN0cmVhbSgpXG4gICAgdmFyIGVuZGVkID0gZmFsc2VcblxuICAgIGZvckVhY2god3JpdGVNZXRob2RzLCBwcm94eVdyaXRlcilcblxuICAgIGZvckVhY2gocmVhZE1ldGhvZHMsIHByb3h5UmVhZGVyKVxuXG4gICAgZm9yRWFjaChyZWFkRXZlbnRzLCBwcm94eVN0cmVhbSlcblxuICAgIHJlYWRlci5vbihcImVuZFwiLCBoYW5kbGVFbmQpXG5cbiAgICB3cml0ZXIub24oXCJkcmFpblwiLCBmdW5jdGlvbigpIHtcbiAgICAgIHN0cmVhbS5lbWl0KFwiZHJhaW5cIilcbiAgICB9KVxuXG4gICAgd3JpdGVyLm9uKFwiZXJyb3JcIiwgcmVlbWl0KVxuICAgIHJlYWRlci5vbihcImVycm9yXCIsIHJlZW1pdClcblxuICAgIHN0cmVhbS53cml0YWJsZSA9IHdyaXRlci53cml0YWJsZVxuICAgIHN0cmVhbS5yZWFkYWJsZSA9IHJlYWRlci5yZWFkYWJsZVxuXG4gICAgcmV0dXJuIHN0cmVhbVxuXG4gICAgZnVuY3Rpb24gcHJveHlXcml0ZXIobWV0aG9kTmFtZSkge1xuICAgICAgICBzdHJlYW1bbWV0aG9kTmFtZV0gPSBtZXRob2RcblxuICAgICAgICBmdW5jdGlvbiBtZXRob2QoKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JpdGVyW21ldGhvZE5hbWVdLmFwcGx5KHdyaXRlciwgYXJndW1lbnRzKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJveHlSZWFkZXIobWV0aG9kTmFtZSkge1xuICAgICAgICBzdHJlYW1bbWV0aG9kTmFtZV0gPSBtZXRob2RcblxuICAgICAgICBmdW5jdGlvbiBtZXRob2QoKSB7XG4gICAgICAgICAgICBzdHJlYW0uZW1pdChtZXRob2ROYW1lKVxuICAgICAgICAgICAgdmFyIGZ1bmMgPSByZWFkZXJbbWV0aG9kTmFtZV1cbiAgICAgICAgICAgIGlmIChmdW5jKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkocmVhZGVyLCBhcmd1bWVudHMpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWFkZXIuZW1pdChtZXRob2ROYW1lKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJveHlTdHJlYW0obWV0aG9kTmFtZSkge1xuICAgICAgICByZWFkZXIub24obWV0aG9kTmFtZSwgcmVlbWl0KVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlZW1pdCgpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMpXG4gICAgICAgICAgICBhcmdzLnVuc2hpZnQobWV0aG9kTmFtZSlcbiAgICAgICAgICAgIHN0cmVhbS5lbWl0LmFwcGx5KHN0cmVhbSwgYXJncylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZUVuZCgpIHtcbiAgICAgICAgaWYgKGVuZGVkKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBlbmRlZCA9IHRydWVcbiAgICAgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cylcbiAgICAgICAgYXJncy51bnNoaWZ0KFwiZW5kXCIpXG4gICAgICAgIHN0cmVhbS5lbWl0LmFwcGx5KHN0cmVhbSwgYXJncylcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWVtaXQoZXJyKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0KFwiZXJyb3JcIiwgZXJyKVxuICAgIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9kdXBsZXhlci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTE1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBNRVRBID0gcmVxdWlyZSgnLi9fdWlkJykoJ21ldGEnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHNldERlc2MgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGlkID0gMDtcbnZhciBpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlIHx8IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIEZSRUVaRSA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKTtcbn0pO1xudmFyIHNldE1ldGEgPSBmdW5jdGlvbiAoaXQpIHtcbiAgc2V0RGVzYyhpdCwgTUVUQSwgeyB2YWx1ZToge1xuICAgIGk6ICdPJyArICsraWQsIC8vIG9iamVjdCBJRFxuICAgIHc6IHt9ICAgICAgICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gfSk7XG59O1xudmFyIGZhc3RLZXkgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICAvLyByZXR1cm4gcHJpbWl0aXZlIHdpdGggcHJlZml4XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiAodHlwZW9mIGl0ID09ICdzdHJpbmcnID8gJ1MnIDogJ1AnKSArIGl0O1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuICdGJztcbiAgICAvLyBub3QgbmVjZXNzYXJ5IHRvIGFkZCBtZXRhZGF0YVxuICAgIGlmICghY3JlYXRlKSByZXR1cm4gJ0UnO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBvYmplY3QgSURcbiAgfSByZXR1cm4gaXRbTUVUQV0uaTtcbn07XG52YXIgZ2V0V2VhayA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBub3QgbmVjZXNzYXJ5IHRvIGFkZCBtZXRhZGF0YVxuICAgIGlmICghY3JlYXRlKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIGhhc2ggd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSByZXR1cm4gaXRbTUVUQV0udztcbn07XG4vLyBhZGQgbWV0YWRhdGEgb24gZnJlZXplLWZhbWlseSBtZXRob2RzIGNhbGxpbmdcbnZhciBvbkZyZWV6ZSA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoRlJFRVpFICYmIG1ldGEuTkVFRCAmJiBpc0V4dGVuc2libGUoaXQpICYmICFoYXMoaXQsIE1FVEEpKSBzZXRNZXRhKGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbnZhciBtZXRhID0gbW9kdWxlLmV4cG9ydHMgPSB7XG4gIEtFWTogTUVUQSxcbiAgTkVFRDogZmFsc2UsXG4gIGZhc3RLZXk6IGZhc3RLZXksXG4gIGdldFdlYWs6IGdldFdlYWssXG4gIG9uRnJlZXplOiBvbkZyZWV6ZVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWV0YS5qc1xuLy8gbW9kdWxlIGlkID0gMTE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRZUEUpIHtcbiAgaWYgKCFpc09iamVjdChpdCkgfHwgaXQuX3QgIT09IFRZUEUpIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQhJyk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3ZhbGlkYXRlLWNvbGxlY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDExN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgKiBhcyBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0ICogYXMgYm9keVBhcnNlciBmcm9tICdib2R5LXBhcnNlcic7XG5cbmltcG9ydCB7IHJvdXRlciBhcyBhbm9tYWxpZXNSb3V0ZXIgfSBmcm9tICcuL3JvdXRlcy9hbm9tYWxpZXMnO1xuaW1wb3J0IHsgcm91dGVyIGFzIHNlZ21lbnRzUm91dGVyIH0gZnJvbSAnLi9yb3V0ZXMvc2VnbWVudHMnO1xuaW1wb3J0IHsgcm91dGVyIGFzIGFsZXJ0c1JvdXRlciB9IGZyb20gJy4vcm91dGVzL2FsZXJ0cyc7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcbmNvbnN0IFBPUlQgPSBwcm9jZXNzLmVudi5IQVNUSUNfUE9SVCB8fCA4MDAwO1xuXG5hcHAudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcbmFwcC51c2UoYm9keVBhcnNlci51cmxlbmNvZGVkKHsgZXh0ZW5kZWQ6IHRydWUgfSkpO1xuXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xuICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nLCAnKicpO1xuICByZXMuaGVhZGVyKCdBY2Nlc3MtQ29udHJvbC1BbGxvdy1NZXRob2RzJywgJ0dFVCwgUE9TVCwgUFVULCBERUxFVEUsIFBBVENILCBPUFRJT05TJyk7XG4gIHJlcy5oZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMnLCAnT3JpZ2luLCBYLVJlcXVlc3RlZC1XaXRoLCBDb250ZW50LVR5cGUsIEFjY2VwdCcpO1xuICBuZXh0KCk7XG59KTtcblxuYXBwLnVzZSgnL2Fub21hbGllcycsIGFub21hbGllc1JvdXRlcik7XG5hcHAudXNlKCcvc2VnbWVudHMnLCBzZWdtZW50c1JvdXRlcik7XG5hcHAudXNlKCcvYWxlcnRzJywgYWxlcnRzUm91dGVyKTtcbmFwcC51c2UoJy8nLCAocmVxLCByZXMpID0+IHJlcy5zZW5kKHsgc3RhdHVzOiAnT0snIH0pKTtcblxuYXBwLmxpc3RlbihQT1JULCAoKSA9PiB7XG4gIGNvbnNvbGUubG9nKGBTZXJ2ZXIgaXMgcnVubmluZyBvbiA6JHtQT1JUfWApXG59KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2luZGV4LnRzIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxMyBSb21hbiBTaHR5bG1hblxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxudmFyIGJvZHlQYXJzZXIgPSByZXF1aXJlKCdib2R5LXBhcnNlcicpXG52YXIgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xudmFyIG1peGluID0gcmVxdWlyZSgnbWVyZ2UtZGVzY3JpcHRvcnMnKTtcbnZhciBwcm90byA9IHJlcXVpcmUoJy4vYXBwbGljYXRpb24nKTtcbnZhciBSb3V0ZSA9IHJlcXVpcmUoJy4vcm91dGVyL3JvdXRlJyk7XG52YXIgUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXInKTtcbnZhciByZXEgPSByZXF1aXJlKCcuL3JlcXVlc3QnKTtcbnZhciByZXMgPSByZXF1aXJlKCcuL3Jlc3BvbnNlJyk7XG5cbi8qKlxuICogRXhwb3NlIGBjcmVhdGVBcHBsaWNhdGlvbigpYC5cbiAqL1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVBcHBsaWNhdGlvbjtcblxuLyoqXG4gKiBDcmVhdGUgYW4gZXhwcmVzcyBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlQXBwbGljYXRpb24oKSB7XG4gIHZhciBhcHAgPSBmdW5jdGlvbihyZXEsIHJlcywgbmV4dCkge1xuICAgIGFwcC5oYW5kbGUocmVxLCByZXMsIG5leHQpO1xuICB9O1xuXG4gIG1peGluKGFwcCwgRXZlbnRFbWl0dGVyLnByb3RvdHlwZSwgZmFsc2UpO1xuICBtaXhpbihhcHAsIHByb3RvLCBmYWxzZSk7XG5cbiAgLy8gZXhwb3NlIHRoZSBwcm90b3R5cGUgdGhhdCB3aWxsIGdldCBzZXQgb24gcmVxdWVzdHNcbiAgYXBwLnJlcXVlc3QgPSBPYmplY3QuY3JlYXRlKHJlcSwge1xuICAgIGFwcDogeyBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZTogYXBwIH1cbiAgfSlcblxuICAvLyBleHBvc2UgdGhlIHByb3RvdHlwZSB0aGF0IHdpbGwgZ2V0IHNldCBvbiByZXNwb25zZXNcbiAgYXBwLnJlc3BvbnNlID0gT2JqZWN0LmNyZWF0ZShyZXMsIHtcbiAgICBhcHA6IHsgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWU6IGFwcCB9XG4gIH0pXG5cbiAgYXBwLmluaXQoKTtcbiAgcmV0dXJuIGFwcDtcbn1cblxuLyoqXG4gKiBFeHBvc2UgdGhlIHByb3RvdHlwZXMuXG4gKi9cblxuZXhwb3J0cy5hcHBsaWNhdGlvbiA9IHByb3RvO1xuZXhwb3J0cy5yZXF1ZXN0ID0gcmVxO1xuZXhwb3J0cy5yZXNwb25zZSA9IHJlcztcblxuLyoqXG4gKiBFeHBvc2UgY29uc3RydWN0b3JzLlxuICovXG5cbmV4cG9ydHMuUm91dGUgPSBSb3V0ZTtcbmV4cG9ydHMuUm91dGVyID0gUm91dGVyO1xuXG4vKipcbiAqIEV4cG9zZSBtaWRkbGV3YXJlXG4gKi9cblxuZXhwb3J0cy5qc29uID0gYm9keVBhcnNlci5qc29uXG5leHBvcnRzLnF1ZXJ5ID0gcmVxdWlyZSgnLi9taWRkbGV3YXJlL3F1ZXJ5Jyk7XG5leHBvcnRzLnN0YXRpYyA9IHJlcXVpcmUoJ3NlcnZlLXN0YXRpYycpO1xuZXhwb3J0cy51cmxlbmNvZGVkID0gYm9keVBhcnNlci51cmxlbmNvZGVkXG5cbi8qKlxuICogUmVwbGFjZSByZW1vdmVkIG1pZGRsZXdhcmUgd2l0aCBhbiBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlLlxuICovXG5cbjtbXG4gICdib2R5UGFyc2VyJyxcbiAgJ2NvbXByZXNzJyxcbiAgJ2Nvb2tpZVNlc3Npb24nLFxuICAnc2Vzc2lvbicsXG4gICdsb2dnZXInLFxuICAnY29va2llUGFyc2VyJyxcbiAgJ2Zhdmljb24nLFxuICAncmVzcG9uc2VUaW1lJyxcbiAgJ2Vycm9ySGFuZGxlcicsXG4gICd0aW1lb3V0JyxcbiAgJ21ldGhvZE92ZXJyaWRlJyxcbiAgJ3Zob3N0JyxcbiAgJ2NzcmYnLFxuICAnZGlyZWN0b3J5JyxcbiAgJ2xpbWl0JyxcbiAgJ211bHRpcGFydCcsXG4gICdzdGF0aWNDYWNoZScsXG5dLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTW9zdCBtaWRkbGV3YXJlIChsaWtlICcgKyBuYW1lICsgJykgaXMgbm8gbG9uZ2VyIGJ1bmRsZWQgd2l0aCBFeHByZXNzIGFuZCBtdXN0IGJlIGluc3RhbGxlZCBzZXBhcmF0ZWx5LiBQbGVhc2Ugc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zZW5jaGFsYWJzL2Nvbm5lY3QjbWlkZGxld2FyZS4nKTtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL2V4cHJlc3MuanNcbi8vIG1vZHVsZSBpZCA9IDExOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGRlcGRcbiAqIENvcHlyaWdodChjKSAyMDE0IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNhbGxTaXRlVG9TdHJpbmdcblxuLyoqXG4gKiBGb3JtYXQgYSBDYWxsU2l0ZSBmaWxlIGxvY2F0aW9uIHRvIGEgc3RyaW5nLlxuICovXG5cbmZ1bmN0aW9uIGNhbGxTaXRlRmlsZUxvY2F0aW9uIChjYWxsU2l0ZSkge1xuICB2YXIgZmlsZU5hbWVcbiAgdmFyIGZpbGVMb2NhdGlvbiA9ICcnXG5cbiAgaWYgKGNhbGxTaXRlLmlzTmF0aXZlKCkpIHtcbiAgICBmaWxlTG9jYXRpb24gPSAnbmF0aXZlJ1xuICB9IGVsc2UgaWYgKGNhbGxTaXRlLmlzRXZhbCgpKSB7XG4gICAgZmlsZU5hbWUgPSBjYWxsU2l0ZS5nZXRTY3JpcHROYW1lT3JTb3VyY2VVUkwoKVxuICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgIGZpbGVMb2NhdGlvbiA9IGNhbGxTaXRlLmdldEV2YWxPcmlnaW4oKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmaWxlTmFtZSA9IGNhbGxTaXRlLmdldEZpbGVOYW1lKClcbiAgfVxuXG4gIGlmIChmaWxlTmFtZSkge1xuICAgIGZpbGVMb2NhdGlvbiArPSBmaWxlTmFtZVxuXG4gICAgdmFyIGxpbmVOdW1iZXIgPSBjYWxsU2l0ZS5nZXRMaW5lTnVtYmVyKClcbiAgICBpZiAobGluZU51bWJlciAhPSBudWxsKSB7XG4gICAgICBmaWxlTG9jYXRpb24gKz0gJzonICsgbGluZU51bWJlclxuXG4gICAgICB2YXIgY29sdW1uTnVtYmVyID0gY2FsbFNpdGUuZ2V0Q29sdW1uTnVtYmVyKClcbiAgICAgIGlmIChjb2x1bW5OdW1iZXIpIHtcbiAgICAgICAgZmlsZUxvY2F0aW9uICs9ICc6JyArIGNvbHVtbk51bWJlclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmaWxlTG9jYXRpb24gfHwgJ3Vua25vd24gc291cmNlJ1xufVxuXG4vKipcbiAqIEZvcm1hdCBhIENhbGxTaXRlIHRvIGEgc3RyaW5nLlxuICovXG5cbmZ1bmN0aW9uIGNhbGxTaXRlVG9TdHJpbmcgKGNhbGxTaXRlKSB7XG4gIHZhciBhZGRTdWZmaXggPSB0cnVlXG4gIHZhciBmaWxlTG9jYXRpb24gPSBjYWxsU2l0ZUZpbGVMb2NhdGlvbihjYWxsU2l0ZSlcbiAgdmFyIGZ1bmN0aW9uTmFtZSA9IGNhbGxTaXRlLmdldEZ1bmN0aW9uTmFtZSgpXG4gIHZhciBpc0NvbnN0cnVjdG9yID0gY2FsbFNpdGUuaXNDb25zdHJ1Y3RvcigpXG4gIHZhciBpc01ldGhvZENhbGwgPSAhKGNhbGxTaXRlLmlzVG9wbGV2ZWwoKSB8fCBpc0NvbnN0cnVjdG9yKVxuICB2YXIgbGluZSA9ICcnXG5cbiAgaWYgKGlzTWV0aG9kQ2FsbCkge1xuICAgIHZhciBtZXRob2ROYW1lID0gY2FsbFNpdGUuZ2V0TWV0aG9kTmFtZSgpXG4gICAgdmFyIHR5cGVOYW1lID0gZ2V0Q29uc3RydWN0b3JOYW1lKGNhbGxTaXRlKVxuXG4gICAgaWYgKGZ1bmN0aW9uTmFtZSkge1xuICAgICAgaWYgKHR5cGVOYW1lICYmIGZ1bmN0aW9uTmFtZS5pbmRleE9mKHR5cGVOYW1lKSAhPT0gMCkge1xuICAgICAgICBsaW5lICs9IHR5cGVOYW1lICsgJy4nXG4gICAgICB9XG5cbiAgICAgIGxpbmUgKz0gZnVuY3Rpb25OYW1lXG5cbiAgICAgIGlmIChtZXRob2ROYW1lICYmIGZ1bmN0aW9uTmFtZS5sYXN0SW5kZXhPZignLicgKyBtZXRob2ROYW1lKSAhPT0gZnVuY3Rpb25OYW1lLmxlbmd0aCAtIG1ldGhvZE5hbWUubGVuZ3RoIC0gMSkge1xuICAgICAgICBsaW5lICs9ICcgW2FzICcgKyBtZXRob2ROYW1lICsgJ10nXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmUgKz0gdHlwZU5hbWUgKyAnLicgKyAobWV0aG9kTmFtZSB8fCAnPGFub255bW91cz4nKVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc0NvbnN0cnVjdG9yKSB7XG4gICAgbGluZSArPSAnbmV3ICcgKyAoZnVuY3Rpb25OYW1lIHx8ICc8YW5vbnltb3VzPicpXG4gIH0gZWxzZSBpZiAoZnVuY3Rpb25OYW1lKSB7XG4gICAgbGluZSArPSBmdW5jdGlvbk5hbWVcbiAgfSBlbHNlIHtcbiAgICBhZGRTdWZmaXggPSBmYWxzZVxuICAgIGxpbmUgKz0gZmlsZUxvY2F0aW9uXG4gIH1cblxuICBpZiAoYWRkU3VmZml4KSB7XG4gICAgbGluZSArPSAnICgnICsgZmlsZUxvY2F0aW9uICsgJyknXG4gIH1cblxuICByZXR1cm4gbGluZVxufVxuXG4vKipcbiAqIEdldCBjb25zdHJ1Y3RvciBuYW1lIG9mIHJldml2ZXIuXG4gKi9cblxuZnVuY3Rpb24gZ2V0Q29uc3RydWN0b3JOYW1lIChvYmopIHtcbiAgdmFyIHJlY2VpdmVyID0gb2JqLnJlY2VpdmVyXG4gIHJldHVybiAocmVjZWl2ZXIuY29uc3RydWN0b3IgJiYgcmVjZWl2ZXIuY29uc3RydWN0b3IubmFtZSkgfHwgbnVsbFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2RlcGQvbGliL2NvbXBhdC9jYWxsc2l0ZS10b3N0cmluZy5qc1xuLy8gbW9kdWxlIGlkID0gMTIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZGVwZFxuICogQ29weXJpZ2h0KGMpIDIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZXZlbnRMaXN0ZW5lckNvdW50XG5cbi8qKlxuICogR2V0IHRoZSBjb3VudCBvZiBsaXN0ZW5lcnMgb24gYW4gZXZlbnQgZW1pdHRlciBvZiBhIHNwZWNpZmljIHR5cGUuXG4gKi9cblxuZnVuY3Rpb24gZXZlbnRMaXN0ZW5lckNvdW50IChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGhcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvZXZlbnQtbGlzdGVuZXItY291bnQuanNcbi8vIG1vZHVsZSBpZCA9IDEyMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGJvZHktcGFyc2VyXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBieXRlcyA9IHJlcXVpcmUoJ2J5dGVzJylcbnZhciBjb250ZW50VHlwZSA9IHJlcXVpcmUoJ2NvbnRlbnQtdHlwZScpXG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCdodHRwLWVycm9ycycpXG52YXIgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpKCdib2R5LXBhcnNlcjpqc29uJylcbnZhciByZWFkID0gcmVxdWlyZSgnLi4vcmVhZCcpXG52YXIgdHlwZWlzID0gcmVxdWlyZSgndHlwZS1pcycpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBqc29uXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIHRoZSBmaXJzdCBub24tc3BhY2UgaW4gYSBzdHJpbmcuXG4gKlxuICogQWxsb3dlZCB3aGl0ZXNwYWNlIGlzIGRlZmluZWQgaW4gUkZDIDcxNTk6XG4gKlxuICogICAgd3MgPSAqKFxuICogICAgICAgICAgICAleDIwIC8gICAgICAgICAgICAgIDsgU3BhY2VcbiAqICAgICAgICAgICAgJXgwOSAvICAgICAgICAgICAgICA7IEhvcml6b250YWwgdGFiXG4gKiAgICAgICAgICAgICV4MEEgLyAgICAgICAgICAgICAgOyBMaW5lIGZlZWQgb3IgTmV3IGxpbmVcbiAqICAgICAgICAgICAgJXgwRCApICAgICAgICAgICAgICA7IENhcnJpYWdlIHJldHVyblxuICovXG5cbnZhciBGSVJTVF9DSEFSX1JFR0VYUCA9IC9eW1xceDIwXFx4MDlcXHgwYVxceDBkXSooLikvIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29udHJvbC1yZWdleFxuXG4vKipcbiAqIENyZWF0ZSBhIG1pZGRsZXdhcmUgdG8gcGFyc2UgSlNPTiBib2RpZXMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24ganNvbiAob3B0aW9ucykge1xuICB2YXIgb3B0cyA9IG9wdGlvbnMgfHwge31cblxuICB2YXIgbGltaXQgPSB0eXBlb2Ygb3B0cy5saW1pdCAhPT0gJ251bWJlcidcbiAgICA/IGJ5dGVzLnBhcnNlKG9wdHMubGltaXQgfHwgJzEwMGtiJylcbiAgICA6IG9wdHMubGltaXRcbiAgdmFyIGluZmxhdGUgPSBvcHRzLmluZmxhdGUgIT09IGZhbHNlXG4gIHZhciByZXZpdmVyID0gb3B0cy5yZXZpdmVyXG4gIHZhciBzdHJpY3QgPSBvcHRzLnN0cmljdCAhPT0gZmFsc2VcbiAgdmFyIHR5cGUgPSBvcHRzLnR5cGUgfHwgJ2FwcGxpY2F0aW9uL2pzb24nXG4gIHZhciB2ZXJpZnkgPSBvcHRzLnZlcmlmeSB8fCBmYWxzZVxuXG4gIGlmICh2ZXJpZnkgIT09IGZhbHNlICYmIHR5cGVvZiB2ZXJpZnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gdmVyaWZ5IG11c3QgYmUgZnVuY3Rpb24nKVxuICB9XG5cbiAgLy8gY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9uXG4gIHZhciBzaG91bGRQYXJzZSA9IHR5cGVvZiB0eXBlICE9PSAnZnVuY3Rpb24nXG4gICAgPyB0eXBlQ2hlY2tlcih0eXBlKVxuICAgIDogdHlwZVxuXG4gIGZ1bmN0aW9uIHBhcnNlIChib2R5KSB7XG4gICAgaWYgKGJvZHkubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBzcGVjaWFsLWNhc2UgZW1wdHkganNvbiBib2R5LCBhcyBpdCdzIGEgY29tbW9uIGNsaWVudC1zaWRlIG1pc3Rha2VcbiAgICAgIC8vIFRPRE86IG1heWJlIG1ha2UgdGhpcyBjb25maWd1cmFibGUgb3IgcGFydCBvZiBcInN0cmljdFwiIG9wdGlvblxuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgaWYgKHN0cmljdCkge1xuICAgICAgdmFyIGZpcnN0ID0gZmlyc3RjaGFyKGJvZHkpXG5cbiAgICAgIGlmIChmaXJzdCAhPT0gJ3snICYmIGZpcnN0ICE9PSAnWycpIHtcbiAgICAgICAgZGVidWcoJ3N0cmljdCB2aW9sYXRpb24nKVxuICAgICAgICB0aHJvdyBjcmVhdGVTdHJpY3RTeW50YXhFcnJvcihib2R5LCBmaXJzdClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgZGVidWcoJ3BhcnNlIGpzb24nKVxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYm9keSwgcmV2aXZlcilcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBub3JtYWxpemVKc29uU3ludGF4RXJyb3IoZSwge1xuICAgICAgICBzdGFjazogZS5zdGFja1xuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24ganNvblBhcnNlciAocmVxLCByZXMsIG5leHQpIHtcbiAgICBpZiAocmVxLl9ib2R5KSB7XG4gICAgICBkZWJ1ZygnYm9keSBhbHJlYWR5IHBhcnNlZCcpXG4gICAgICBuZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJlcS5ib2R5ID0gcmVxLmJvZHkgfHwge31cblxuICAgIC8vIHNraXAgcmVxdWVzdHMgd2l0aG91dCBib2RpZXNcbiAgICBpZiAoIXR5cGVpcy5oYXNCb2R5KHJlcSkpIHtcbiAgICAgIGRlYnVnKCdza2lwIGVtcHR5IGJvZHknKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBkZWJ1ZygnY29udGVudC10eXBlICVqJywgcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKVxuXG4gICAgLy8gZGV0ZXJtaW5lIGlmIHJlcXVlc3Qgc2hvdWxkIGJlIHBhcnNlZFxuICAgIGlmICghc2hvdWxkUGFyc2UocmVxKSkge1xuICAgICAgZGVidWcoJ3NraXAgcGFyc2luZycpXG4gICAgICBuZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIGFzc2VydCBjaGFyc2V0IHBlciBSRkMgNzE1OSBzZWMgOC4xXG4gICAgdmFyIGNoYXJzZXQgPSBnZXRDaGFyc2V0KHJlcSkgfHwgJ3V0Zi04J1xuICAgIGlmIChjaGFyc2V0LnN1YnN0cigwLCA0KSAhPT0gJ3V0Zi0nKSB7XG4gICAgICBkZWJ1ZygnaW52YWxpZCBjaGFyc2V0JylcbiAgICAgIG5leHQoY3JlYXRlRXJyb3IoNDE1LCAndW5zdXBwb3J0ZWQgY2hhcnNldCBcIicgKyBjaGFyc2V0LnRvVXBwZXJDYXNlKCkgKyAnXCInLCB7XG4gICAgICAgIGNoYXJzZXQ6IGNoYXJzZXQsXG4gICAgICAgIHR5cGU6ICdjaGFyc2V0LnVuc3VwcG9ydGVkJ1xuICAgICAgfSkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyByZWFkXG4gICAgcmVhZChyZXEsIHJlcywgbmV4dCwgcGFyc2UsIGRlYnVnLCB7XG4gICAgICBlbmNvZGluZzogY2hhcnNldCxcbiAgICAgIGluZmxhdGU6IGluZmxhdGUsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgICB2ZXJpZnk6IHZlcmlmeVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgc3RyaWN0IHZpb2xhdGlvbiBzeW50YXggZXJyb3IgbWF0Y2hpbmcgbmF0aXZlIGVycm9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGFyXG4gKiBAcmV0dXJuIHtFcnJvcn1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlU3RyaWN0U3ludGF4RXJyb3IgKHN0ciwgY2hhcikge1xuICB2YXIgaW5kZXggPSBzdHIuaW5kZXhPZihjaGFyKVxuICB2YXIgcGFydGlhbCA9IHN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpICsgJyMnXG5cbiAgdHJ5IHtcbiAgICBKU09OLnBhcnNlKHBhcnRpYWwpOyAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ3N0cmljdCB2aW9sYXRpb24nKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZUpzb25TeW50YXhFcnJvcihlLCB7XG4gICAgICBtZXNzYWdlOiBlLm1lc3NhZ2UucmVwbGFjZSgnIycsIGNoYXIpLFxuICAgICAgc3RhY2s6IGUuc3RhY2tcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBmaXJzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGZpcnN0Y2hhciAoc3RyKSB7XG4gIHJldHVybiBGSVJTVF9DSEFSX1JFR0VYUC5leGVjKHN0cilbMV1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNoYXJzZXQgb2YgYSByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldENoYXJzZXQgKHJlcSkge1xuICB0cnkge1xuICAgIHJldHVybiAoY29udGVudFR5cGUucGFyc2UocmVxKS5wYXJhbWV0ZXJzLmNoYXJzZXQgfHwgJycpLnRvTG93ZXJDYXNlKClcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIFN5bnRheEVycm9yIGZvciBKU09OLnBhcnNlLlxuICpcbiAqIEBwYXJhbSB7U3ludGF4RXJyb3J9IGVycm9yXG4gKiBAcGFyYW0ge29iamVjdH0gb2JqXG4gKiBAcmV0dXJuIHtTeW50YXhFcnJvcn1cbiAqL1xuXG5mdW5jdGlvbiBub3JtYWxpemVKc29uU3ludGF4RXJyb3IgKGVycm9yLCBvYmopIHtcbiAgdmFyIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlcnJvcilcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXVxuICAgIGlmIChrZXkgIT09ICdzdGFjaycgJiYga2V5ICE9PSAnbWVzc2FnZScpIHtcbiAgICAgIGRlbGV0ZSBlcnJvcltrZXldXG4gICAgfVxuICB9XG5cbiAgdmFyIHByb3BzID0gT2JqZWN0LmtleXMob2JqKVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgcHJvcHMubGVuZ3RoOyBqKyspIHtcbiAgICB2YXIgcHJvcCA9IHByb3BzW2pdXG4gICAgZXJyb3JbcHJvcF0gPSBvYmpbcHJvcF1cbiAgfVxuXG4gIHJldHVybiBlcnJvclxufVxuXG4vKipcbiAqIEdldCB0aGUgc2ltcGxlIHR5cGUgY2hlY2tlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cblxuZnVuY3Rpb24gdHlwZUNoZWNrZXIgKHR5cGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrVHlwZSAocmVxKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odHlwZWlzKHJlcSwgdHlwZSkpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9saWIvdHlwZXMvanNvbi5qc1xuLy8gbW9kdWxlIGlkID0gMTIyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0ge1wiMTAwXCI6XCJDb250aW51ZVwiLFwiMTAxXCI6XCJTd2l0Y2hpbmcgUHJvdG9jb2xzXCIsXCIxMDJcIjpcIlByb2Nlc3NpbmdcIixcIjIwMFwiOlwiT0tcIixcIjIwMVwiOlwiQ3JlYXRlZFwiLFwiMjAyXCI6XCJBY2NlcHRlZFwiLFwiMjAzXCI6XCJOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvblwiLFwiMjA0XCI6XCJObyBDb250ZW50XCIsXCIyMDVcIjpcIlJlc2V0IENvbnRlbnRcIixcIjIwNlwiOlwiUGFydGlhbCBDb250ZW50XCIsXCIyMDdcIjpcIk11bHRpLVN0YXR1c1wiLFwiMjA4XCI6XCJBbHJlYWR5IFJlcG9ydGVkXCIsXCIyMjZcIjpcIklNIFVzZWRcIixcIjMwMFwiOlwiTXVsdGlwbGUgQ2hvaWNlc1wiLFwiMzAxXCI6XCJNb3ZlZCBQZXJtYW5lbnRseVwiLFwiMzAyXCI6XCJGb3VuZFwiLFwiMzAzXCI6XCJTZWUgT3RoZXJcIixcIjMwNFwiOlwiTm90IE1vZGlmaWVkXCIsXCIzMDVcIjpcIlVzZSBQcm94eVwiLFwiMzA2XCI6XCIoVW51c2VkKVwiLFwiMzA3XCI6XCJUZW1wb3JhcnkgUmVkaXJlY3RcIixcIjMwOFwiOlwiUGVybWFuZW50IFJlZGlyZWN0XCIsXCI0MDBcIjpcIkJhZCBSZXF1ZXN0XCIsXCI0MDFcIjpcIlVuYXV0aG9yaXplZFwiLFwiNDAyXCI6XCJQYXltZW50IFJlcXVpcmVkXCIsXCI0MDNcIjpcIkZvcmJpZGRlblwiLFwiNDA0XCI6XCJOb3QgRm91bmRcIixcIjQwNVwiOlwiTWV0aG9kIE5vdCBBbGxvd2VkXCIsXCI0MDZcIjpcIk5vdCBBY2NlcHRhYmxlXCIsXCI0MDdcIjpcIlByb3h5IEF1dGhlbnRpY2F0aW9uIFJlcXVpcmVkXCIsXCI0MDhcIjpcIlJlcXVlc3QgVGltZW91dFwiLFwiNDA5XCI6XCJDb25mbGljdFwiLFwiNDEwXCI6XCJHb25lXCIsXCI0MTFcIjpcIkxlbmd0aCBSZXF1aXJlZFwiLFwiNDEyXCI6XCJQcmVjb25kaXRpb24gRmFpbGVkXCIsXCI0MTNcIjpcIlBheWxvYWQgVG9vIExhcmdlXCIsXCI0MTRcIjpcIlVSSSBUb28gTG9uZ1wiLFwiNDE1XCI6XCJVbnN1cHBvcnRlZCBNZWRpYSBUeXBlXCIsXCI0MTZcIjpcIlJhbmdlIE5vdCBTYXRpc2ZpYWJsZVwiLFwiNDE3XCI6XCJFeHBlY3RhdGlvbiBGYWlsZWRcIixcIjQxOFwiOlwiSSdtIGEgdGVhcG90XCIsXCI0MjFcIjpcIk1pc2RpcmVjdGVkIFJlcXVlc3RcIixcIjQyMlwiOlwiVW5wcm9jZXNzYWJsZSBFbnRpdHlcIixcIjQyM1wiOlwiTG9ja2VkXCIsXCI0MjRcIjpcIkZhaWxlZCBEZXBlbmRlbmN5XCIsXCI0MjVcIjpcIlVub3JkZXJlZCBDb2xsZWN0aW9uXCIsXCI0MjZcIjpcIlVwZ3JhZGUgUmVxdWlyZWRcIixcIjQyOFwiOlwiUHJlY29uZGl0aW9uIFJlcXVpcmVkXCIsXCI0MjlcIjpcIlRvbyBNYW55IFJlcXVlc3RzXCIsXCI0MzFcIjpcIlJlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2VcIixcIjQ1MVwiOlwiVW5hdmFpbGFibGUgRm9yIExlZ2FsIFJlYXNvbnNcIixcIjUwMFwiOlwiSW50ZXJuYWwgU2VydmVyIEVycm9yXCIsXCI1MDFcIjpcIk5vdCBJbXBsZW1lbnRlZFwiLFwiNTAyXCI6XCJCYWQgR2F0ZXdheVwiLFwiNTAzXCI6XCJTZXJ2aWNlIFVuYXZhaWxhYmxlXCIsXCI1MDRcIjpcIkdhdGV3YXkgVGltZW91dFwiLFwiNTA1XCI6XCJIVFRQIFZlcnNpb24gTm90IFN1cHBvcnRlZFwiLFwiNTA2XCI6XCJWYXJpYW50IEFsc28gTmVnb3RpYXRlc1wiLFwiNTA3XCI6XCJJbnN1ZmZpY2llbnQgU3RvcmFnZVwiLFwiNTA4XCI6XCJMb29wIERldGVjdGVkXCIsXCI1MDlcIjpcIkJhbmR3aWR0aCBMaW1pdCBFeGNlZWRlZFwiLFwiNTEwXCI6XCJOb3QgRXh0ZW5kZWRcIixcIjUxMVwiOlwiTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZFwifVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9zdGF0dXNlcy9jb2Rlcy5qc29uXG4vLyBtb2R1bGUgaWQgPSAxMjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHNfYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMTI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogVGhpcyBpcyB0aGUgd2ViIGJyb3dzZXIgaW1wbGVtZW50YXRpb24gb2YgYGRlYnVnKClgLlxuICpcbiAqIEV4cG9zZSBgZGVidWcoKWAgYXMgdGhlIG1vZHVsZS5cbiAqL1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2RlYnVnJyk7XG5leHBvcnRzLmxvZyA9IGxvZztcbmV4cG9ydHMuZm9ybWF0QXJncyA9IGZvcm1hdEFyZ3M7XG5leHBvcnRzLnNhdmUgPSBzYXZlO1xuZXhwb3J0cy5sb2FkID0gbG9hZDtcbmV4cG9ydHMudXNlQ29sb3JzID0gdXNlQ29sb3JzO1xuZXhwb3J0cy5zdG9yYWdlID0gJ3VuZGVmaW5lZCcgIT0gdHlwZW9mIGNocm9tZVxuICAgICAgICAgICAgICAgJiYgJ3VuZGVmaW5lZCcgIT0gdHlwZW9mIGNocm9tZS5zdG9yYWdlXG4gICAgICAgICAgICAgICAgICA/IGNocm9tZS5zdG9yYWdlLmxvY2FsXG4gICAgICAgICAgICAgICAgICA6IGxvY2Fsc3RvcmFnZSgpO1xuXG4vKipcbiAqIENvbG9ycy5cbiAqL1xuXG5leHBvcnRzLmNvbG9ycyA9IFtcbiAgJ2xpZ2h0c2VhZ3JlZW4nLFxuICAnZm9yZXN0Z3JlZW4nLFxuICAnZ29sZGVucm9kJyxcbiAgJ2RvZGdlcmJsdWUnLFxuICAnZGFya29yY2hpZCcsXG4gICdjcmltc29uJ1xuXTtcblxuLyoqXG4gKiBDdXJyZW50bHkgb25seSBXZWJLaXQtYmFzZWQgV2ViIEluc3BlY3RvcnMsIEZpcmVmb3ggPj0gdjMxLFxuICogYW5kIHRoZSBGaXJlYnVnIGV4dGVuc2lvbiAoYW55IEZpcmVmb3ggdmVyc2lvbikgYXJlIGtub3duXG4gKiB0byBzdXBwb3J0IFwiJWNcIiBDU1MgY3VzdG9taXphdGlvbnMuXG4gKlxuICogVE9ETzogYWRkIGEgYGxvY2FsU3RvcmFnZWAgdmFyaWFibGUgdG8gZXhwbGljaXRseSBlbmFibGUvZGlzYWJsZSBjb2xvcnNcbiAqL1xuXG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG4gIC8vIE5COiBJbiBhbiBFbGVjdHJvbiBwcmVsb2FkIHNjcmlwdCwgZG9jdW1lbnQgd2lsbCBiZSBkZWZpbmVkIGJ1dCBub3QgZnVsbHlcbiAgLy8gaW5pdGlhbGl6ZWQuIFNpbmNlIHdlIGtub3cgd2UncmUgaW4gQ2hyb21lLCB3ZSdsbCBqdXN0IGRldGVjdCB0aGlzIGNhc2VcbiAgLy8gZXhwbGljaXRseVxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnByb2Nlc3MgJiYgd2luZG93LnByb2Nlc3MudHlwZSA9PT0gJ3JlbmRlcmVyJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gaXMgd2Via2l0PyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xNjQ1OTYwNi8zNzY3NzNcbiAgLy8gZG9jdW1lbnQgaXMgdW5kZWZpbmVkIGluIHJlYWN0LW5hdGl2ZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0LW5hdGl2ZS9wdWxsLzE2MzJcbiAgcmV0dXJuICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLldlYmtpdEFwcGVhcmFuY2UpIHx8XG4gICAgLy8gaXMgZmlyZWJ1Zz8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzk4MTIwLzM3Njc3M1xuICAgICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuY29uc29sZSAmJiAod2luZG93LmNvbnNvbGUuZmlyZWJ1ZyB8fCAod2luZG93LmNvbnNvbGUuZXhjZXB0aW9uICYmIHdpbmRvdy5jb25zb2xlLnRhYmxlKSkpIHx8XG4gICAgLy8gaXMgZmlyZWZveCA+PSB2MzE/XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Ub29scy9XZWJfQ29uc29sZSNTdHlsaW5nX21lc3NhZ2VzXG4gICAgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9maXJlZm94XFwvKFxcZCspLykgJiYgcGFyc2VJbnQoUmVnRXhwLiQxLCAxMCkgPj0gMzEpIHx8XG4gICAgLy8gZG91YmxlIGNoZWNrIHdlYmtpdCBpbiB1c2VyQWdlbnQganVzdCBpbiBjYXNlIHdlIGFyZSBpbiBhIHdvcmtlclxuICAgICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiBuYXZpZ2F0b3IudXNlckFnZW50ICYmIG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvYXBwbGV3ZWJraXRcXC8oXFxkKykvKSk7XG59XG5cbi8qKlxuICogTWFwICVqIHRvIGBKU09OLnN0cmluZ2lmeSgpYCwgc2luY2Ugbm8gV2ViIEluc3BlY3RvcnMgZG8gdGhhdCBieSBkZWZhdWx0LlxuICovXG5cbmV4cG9ydHMuZm9ybWF0dGVycy5qID0gZnVuY3Rpb24odikge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuICdbVW5leHBlY3RlZEpTT05QYXJzZUVycm9yXTogJyArIGVyci5tZXNzYWdlO1xuICB9XG59O1xuXG5cbi8qKlxuICogQ29sb3JpemUgbG9nIGFyZ3VtZW50cyBpZiBlbmFibGVkLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0QXJncyhhcmdzKSB7XG4gIHZhciB1c2VDb2xvcnMgPSB0aGlzLnVzZUNvbG9ycztcblxuICBhcmdzWzBdID0gKHVzZUNvbG9ycyA/ICclYycgOiAnJylcbiAgICArIHRoaXMubmFtZXNwYWNlXG4gICAgKyAodXNlQ29sb3JzID8gJyAlYycgOiAnICcpXG4gICAgKyBhcmdzWzBdXG4gICAgKyAodXNlQ29sb3JzID8gJyVjICcgOiAnICcpXG4gICAgKyAnKycgKyBleHBvcnRzLmh1bWFuaXplKHRoaXMuZGlmZik7XG5cbiAgaWYgKCF1c2VDb2xvcnMpIHJldHVybjtcblxuICB2YXIgYyA9ICdjb2xvcjogJyArIHRoaXMuY29sb3I7XG4gIGFyZ3Muc3BsaWNlKDEsIDAsIGMsICdjb2xvcjogaW5oZXJpdCcpXG5cbiAgLy8gdGhlIGZpbmFsIFwiJWNcIiBpcyBzb21ld2hhdCB0cmlja3ksIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb3RoZXJcbiAgLy8gYXJndW1lbnRzIHBhc3NlZCBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSAlYywgc28gd2UgbmVlZCB0b1xuICAvLyBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IGluZGV4IHRvIGluc2VydCB0aGUgQ1NTIGludG9cbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3RDID0gMDtcbiAgYXJnc1swXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgaWYgKCclJScgPT09IG1hdGNoKSByZXR1cm47XG4gICAgaW5kZXgrKztcbiAgICBpZiAoJyVjJyA9PT0gbWF0Y2gpIHtcbiAgICAgIC8vIHdlIG9ubHkgYXJlIGludGVyZXN0ZWQgaW4gdGhlICpsYXN0KiAlY1xuICAgICAgLy8gKHRoZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIHRoZWlyIG93bilcbiAgICAgIGxhc3RDID0gaW5kZXg7XG4gICAgfVxuICB9KTtcblxuICBhcmdzLnNwbGljZShsYXN0QywgMCwgYyk7XG59XG5cbi8qKlxuICogSW52b2tlcyBgY29uc29sZS5sb2coKWAgd2hlbiBhdmFpbGFibGUuXG4gKiBOby1vcCB3aGVuIGBjb25zb2xlLmxvZ2AgaXMgbm90IGEgXCJmdW5jdGlvblwiLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gbG9nKCkge1xuICAvLyB0aGlzIGhhY2tlcnkgaXMgcmVxdWlyZWQgZm9yIElFOC85LCB3aGVyZVxuICAvLyB0aGUgYGNvbnNvbGUubG9nYCBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgJ2FwcGx5J1xuICByZXR1cm4gJ29iamVjdCcgPT09IHR5cGVvZiBjb25zb2xlXG4gICAgJiYgY29uc29sZS5sb2dcbiAgICAmJiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChjb25zb2xlLmxvZywgY29uc29sZSwgYXJndW1lbnRzKTtcbn1cblxuLyoqXG4gKiBTYXZlIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2F2ZShuYW1lc3BhY2VzKSB7XG4gIHRyeSB7XG4gICAgaWYgKG51bGwgPT0gbmFtZXNwYWNlcykge1xuICAgICAgZXhwb3J0cy5zdG9yYWdlLnJlbW92ZUl0ZW0oJ2RlYnVnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cG9ydHMuc3RvcmFnZS5kZWJ1ZyA9IG5hbWVzcGFjZXM7XG4gICAgfVxuICB9IGNhdGNoKGUpIHt9XG59XG5cbi8qKlxuICogTG9hZCBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHJldHVybiB7U3RyaW5nfSByZXR1cm5zIHRoZSBwcmV2aW91c2x5IHBlcnNpc3RlZCBkZWJ1ZyBtb2Rlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbG9hZCgpIHtcbiAgdmFyIHI7XG4gIHRyeSB7XG4gICAgciA9IGV4cG9ydHMuc3RvcmFnZS5kZWJ1ZztcbiAgfSBjYXRjaChlKSB7fVxuXG4gIC8vIElmIGRlYnVnIGlzbid0IHNldCBpbiBMUywgYW5kIHdlJ3JlIGluIEVsZWN0cm9uLCB0cnkgdG8gbG9hZCAkREVCVUdcbiAgaWYgKCFyICYmIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiAnZW52JyBpbiBwcm9jZXNzKSB7XG4gICAgciA9IHByb2Nlc3MuZW52LkRFQlVHO1xuICB9XG5cbiAgcmV0dXJuIHI7XG59XG5cbi8qKlxuICogRW5hYmxlIG5hbWVzcGFjZXMgbGlzdGVkIGluIGBsb2NhbFN0b3JhZ2UuZGVidWdgIGluaXRpYWxseS5cbiAqL1xuXG5leHBvcnRzLmVuYWJsZShsb2FkKCkpO1xuXG4vKipcbiAqIExvY2Fsc3RvcmFnZSBhdHRlbXB0cyB0byByZXR1cm4gdGhlIGxvY2Fsc3RvcmFnZS5cbiAqXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHNhZmFyaSB0aHJvd3NcbiAqIHdoZW4gYSB1c2VyIGRpc2FibGVzIGNvb2tpZXMvbG9jYWxzdG9yYWdlXG4gKiBhbmQgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGl0LlxuICpcbiAqIEByZXR1cm4ge0xvY2FsU3RvcmFnZX1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvY2Fsc3RvcmFnZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZTtcbiAgfSBjYXRjaCAoZSkge31cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvYnJvd3Nlci5qc1xuLy8gbW9kdWxlIGlkID0gMTI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgdHR5ID0gcmVxdWlyZSgndHR5Jyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLyoqXG4gKiBUaGlzIGlzIHRoZSBOb2RlLmpzIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqXG4gKiBFeHBvc2UgYGRlYnVnKClgIGFzIHRoZSBtb2R1bGUuXG4gKi9cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kZWJ1ZycpO1xuZXhwb3J0cy5pbml0ID0gaW5pdDtcbmV4cG9ydHMubG9nID0gbG9nO1xuZXhwb3J0cy5mb3JtYXRBcmdzID0gZm9ybWF0QXJncztcbmV4cG9ydHMuc2F2ZSA9IHNhdmU7XG5leHBvcnRzLmxvYWQgPSBsb2FkO1xuZXhwb3J0cy51c2VDb2xvcnMgPSB1c2VDb2xvcnM7XG5cbi8qKlxuICogQ29sb3JzLlxuICovXG5cbmV4cG9ydHMuY29sb3JzID0gWzYsIDIsIDMsIDQsIDUsIDFdO1xuXG4vKipcbiAqIEJ1aWxkIHVwIHRoZSBkZWZhdWx0IGBpbnNwZWN0T3B0c2Agb2JqZWN0IGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqXG4gKiAgICQgREVCVUdfQ09MT1JTPW5vIERFQlVHX0RFUFRIPTEwIERFQlVHX1NIT1dfSElEREVOPWVuYWJsZWQgbm9kZSBzY3JpcHQuanNcbiAqL1xuXG5leHBvcnRzLmluc3BlY3RPcHRzID0gT2JqZWN0LmtleXMocHJvY2Vzcy5lbnYpLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAvXmRlYnVnXy9pLnRlc3Qoa2V5KTtcbn0pLnJlZHVjZShmdW5jdGlvbiAob2JqLCBrZXkpIHtcbiAgLy8gY2FtZWwtY2FzZVxuICB2YXIgcHJvcCA9IGtleVxuICAgIC5zdWJzdHJpbmcoNilcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9fKFthLXpdKS9nLCBmdW5jdGlvbiAoXywgaykgeyByZXR1cm4gay50b1VwcGVyQ2FzZSgpIH0pO1xuXG4gIC8vIGNvZXJjZSBzdHJpbmcgdmFsdWUgaW50byBKUyB2YWx1ZVxuICB2YXIgdmFsID0gcHJvY2Vzcy5lbnZba2V5XTtcbiAgaWYgKC9eKHllc3xvbnx0cnVlfGVuYWJsZWQpJC9pLnRlc3QodmFsKSkgdmFsID0gdHJ1ZTtcbiAgZWxzZSBpZiAoL14obm98b2ZmfGZhbHNlfGRpc2FibGVkKSQvaS50ZXN0KHZhbCkpIHZhbCA9IGZhbHNlO1xuICBlbHNlIGlmICh2YWwgPT09ICdudWxsJykgdmFsID0gbnVsbDtcbiAgZWxzZSB2YWwgPSBOdW1iZXIodmFsKTtcblxuICBvYmpbcHJvcF0gPSB2YWw7XG4gIHJldHVybiBvYmo7XG59LCB7fSk7XG5cbi8qKlxuICogVGhlIGZpbGUgZGVzY3JpcHRvciB0byB3cml0ZSB0aGUgYGRlYnVnKClgIGNhbGxzIHRvLlxuICogU2V0IHRoZSBgREVCVUdfRkRgIGVudiB2YXJpYWJsZSB0byBvdmVycmlkZSB3aXRoIGFub3RoZXIgdmFsdWUuIGkuZS46XG4gKlxuICogICAkIERFQlVHX0ZEPTMgbm9kZSBzY3JpcHQuanMgMz5kZWJ1Zy5sb2dcbiAqL1xuXG52YXIgZmQgPSBwYXJzZUludChwcm9jZXNzLmVudi5ERUJVR19GRCwgMTApIHx8IDI7XG5cbmlmICgxICE9PSBmZCAmJiAyICE9PSBmZCkge1xuICB1dGlsLmRlcHJlY2F0ZShmdW5jdGlvbigpe30sICdleGNlcHQgZm9yIHN0ZGVycigyKSBhbmQgc3Rkb3V0KDEpLCBhbnkgb3RoZXIgdXNhZ2Ugb2YgREVCVUdfRkQgaXMgZGVwcmVjYXRlZC4gT3ZlcnJpZGUgZGVidWcubG9nIGlmIHlvdSB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBsb2cgZnVuY3Rpb24gKGh0dHBzOi8vZ2l0LmlvL2RlYnVnX2ZkKScpKClcbn1cblxudmFyIHN0cmVhbSA9IDEgPT09IGZkID8gcHJvY2Vzcy5zdGRvdXQgOlxuICAgICAgICAgICAgIDIgPT09IGZkID8gcHJvY2Vzcy5zdGRlcnIgOlxuICAgICAgICAgICAgIGNyZWF0ZVdyaXRhYmxlU3RkaW9TdHJlYW0oZmQpO1xuXG4vKipcbiAqIElzIHN0ZG91dCBhIFRUWT8gQ29sb3JlZCBvdXRwdXQgaXMgZW5hYmxlZCB3aGVuIGB0cnVlYC5cbiAqL1xuXG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG4gIHJldHVybiAnY29sb3JzJyBpbiBleHBvcnRzLmluc3BlY3RPcHRzXG4gICAgPyBCb29sZWFuKGV4cG9ydHMuaW5zcGVjdE9wdHMuY29sb3JzKVxuICAgIDogdHR5LmlzYXR0eShmZCk7XG59XG5cbi8qKlxuICogTWFwICVvIHRvIGB1dGlsLmluc3BlY3QoKWAsIGFsbCBvbiBhIHNpbmdsZSBsaW5lLlxuICovXG5cbmV4cG9ydHMuZm9ybWF0dGVycy5vID0gZnVuY3Rpb24odikge1xuICB0aGlzLmluc3BlY3RPcHRzLmNvbG9ycyA9IHRoaXMudXNlQ29sb3JzO1xuICByZXR1cm4gdXRpbC5pbnNwZWN0KHYsIHRoaXMuaW5zcGVjdE9wdHMpXG4gICAgLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24oc3RyKSB7XG4gICAgICByZXR1cm4gc3RyLnRyaW0oKVxuICAgIH0pLmpvaW4oJyAnKTtcbn07XG5cbi8qKlxuICogTWFwICVvIHRvIGB1dGlsLmluc3BlY3QoKWAsIGFsbG93aW5nIG11bHRpcGxlIGxpbmVzIGlmIG5lZWRlZC5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdHRlcnMuTyA9IGZ1bmN0aW9uKHYpIHtcbiAgdGhpcy5pbnNwZWN0T3B0cy5jb2xvcnMgPSB0aGlzLnVzZUNvbG9ycztcbiAgcmV0dXJuIHV0aWwuaW5zcGVjdCh2LCB0aGlzLmluc3BlY3RPcHRzKTtcbn07XG5cbi8qKlxuICogQWRkcyBBTlNJIGNvbG9yIGVzY2FwZSBjb2RlcyBpZiBlbmFibGVkLlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0QXJncyhhcmdzKSB7XG4gIHZhciBuYW1lID0gdGhpcy5uYW1lc3BhY2U7XG4gIHZhciB1c2VDb2xvcnMgPSB0aGlzLnVzZUNvbG9ycztcblxuICBpZiAodXNlQ29sb3JzKSB7XG4gICAgdmFyIGMgPSB0aGlzLmNvbG9yO1xuICAgIHZhciBwcmVmaXggPSAnICBcXHUwMDFiWzMnICsgYyArICc7MW0nICsgbmFtZSArICcgJyArICdcXHUwMDFiWzBtJztcblxuICAgIGFyZ3NbMF0gPSBwcmVmaXggKyBhcmdzWzBdLnNwbGl0KCdcXG4nKS5qb2luKCdcXG4nICsgcHJlZml4KTtcbiAgICBhcmdzLnB1c2goJ1xcdTAwMWJbMycgKyBjICsgJ20rJyArIGV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKSArICdcXHUwMDFiWzBtJyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc1swXSA9IG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKVxuICAgICAgKyAnICcgKyBuYW1lICsgJyAnICsgYXJnc1swXTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZXMgYHV0aWwuZm9ybWF0KClgIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMgYW5kIHdyaXRlcyB0byBgc3RyZWFtYC5cbiAqL1xuXG5mdW5jdGlvbiBsb2coKSB7XG4gIHJldHVybiBzdHJlYW0ud3JpdGUodXRpbC5mb3JtYXQuYXBwbHkodXRpbCwgYXJndW1lbnRzKSArICdcXG4nKTtcbn1cblxuLyoqXG4gKiBTYXZlIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2F2ZShuYW1lc3BhY2VzKSB7XG4gIGlmIChudWxsID09IG5hbWVzcGFjZXMpIHtcbiAgICAvLyBJZiB5b3Ugc2V0IGEgcHJvY2Vzcy5lbnYgZmllbGQgdG8gbnVsbCBvciB1bmRlZmluZWQsIGl0IGdldHMgY2FzdCB0byB0aGVcbiAgICAvLyBzdHJpbmcgJ251bGwnIG9yICd1bmRlZmluZWQnLiBKdXN0IGRlbGV0ZSBpbnN0ZWFkLlxuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5ERUJVRztcbiAgfSBlbHNlIHtcbiAgICBwcm9jZXNzLmVudi5ERUJVRyA9IG5hbWVzcGFjZXM7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJldHVybnMgdGhlIHByZXZpb3VzbHkgcGVyc2lzdGVkIGRlYnVnIG1vZGVzXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2FkKCkge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuREVCVUc7XG59XG5cbi8qKlxuICogQ29waWVkIGZyb20gYG5vZGUvc3JjL25vZGUuanNgLlxuICpcbiAqIFhYWDogSXQncyBsYW1lIHRoYXQgbm9kZSBkb2Vzbid0IGV4cG9zZSB0aGlzIEFQSSBvdXQtb2YtdGhlLWJveC4gSXQgYWxzb1xuICogcmVsaWVzIG9uIHRoZSB1bmRvY3VtZW50ZWQgYHR0eV93cmFwLmd1ZXNzSGFuZGxlVHlwZSgpYCB3aGljaCBpcyBhbHNvIGxhbWUuXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlV3JpdGFibGVTdGRpb1N0cmVhbSAoZmQpIHtcbiAgdmFyIHN0cmVhbTtcbiAgdmFyIHR0eV93cmFwID0gcHJvY2Vzcy5iaW5kaW5nKCd0dHlfd3JhcCcpO1xuXG4gIC8vIE5vdGUgc3RyZWFtLl90eXBlIGlzIHVzZWQgZm9yIHRlc3QtbW9kdWxlLWxvYWQtbGlzdC5qc1xuXG4gIHN3aXRjaCAodHR5X3dyYXAuZ3Vlc3NIYW5kbGVUeXBlKGZkKSkge1xuICAgIGNhc2UgJ1RUWSc6XG4gICAgICBzdHJlYW0gPSBuZXcgdHR5LldyaXRlU3RyZWFtKGZkKTtcbiAgICAgIHN0cmVhbS5fdHlwZSA9ICd0dHknO1xuXG4gICAgICAvLyBIYWNrIHRvIGhhdmUgc3RyZWFtIG5vdCBrZWVwIHRoZSBldmVudCBsb29wIGFsaXZlLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qb3llbnQvbm9kZS9pc3N1ZXMvMTcyNlxuICAgICAgaWYgKHN0cmVhbS5faGFuZGxlICYmIHN0cmVhbS5faGFuZGxlLnVucmVmKSB7XG4gICAgICAgIHN0cmVhbS5faGFuZGxlLnVucmVmKCk7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ0ZJTEUnOlxuICAgICAgdmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICAgIHN0cmVhbSA9IG5ldyBmcy5TeW5jV3JpdGVTdHJlYW0oZmQsIHsgYXV0b0Nsb3NlOiBmYWxzZSB9KTtcbiAgICAgIHN0cmVhbS5fdHlwZSA9ICdmcyc7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ1BJUEUnOlxuICAgIGNhc2UgJ1RDUCc6XG4gICAgICB2YXIgbmV0ID0gcmVxdWlyZSgnbmV0Jyk7XG4gICAgICBzdHJlYW0gPSBuZXcgbmV0LlNvY2tldCh7XG4gICAgICAgIGZkOiBmZCxcbiAgICAgICAgcmVhZGFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEZJWE1FIFNob3VsZCBwcm9iYWJseSBoYXZlIGFuIG9wdGlvbiBpbiBuZXQuU29ja2V0IHRvIGNyZWF0ZSBhXG4gICAgICAvLyBzdHJlYW0gZnJvbSBhbiBleGlzdGluZyBmZCB3aGljaCBpcyB3cml0YWJsZSBvbmx5LiBCdXQgZm9yIG5vd1xuICAgICAgLy8gd2UnbGwganVzdCBhZGQgdGhpcyBoYWNrIGFuZCBzZXQgdGhlIGByZWFkYWJsZWAgbWVtYmVyIHRvIGZhbHNlLlxuICAgICAgLy8gVGVzdDogLi9ub2RlIHRlc3QvZml4dHVyZXMvZWNoby5qcyA8IC9ldGMvcGFzc3dkXG4gICAgICBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZTtcbiAgICAgIHN0cmVhbS5yZWFkID0gbnVsbDtcbiAgICAgIHN0cmVhbS5fdHlwZSA9ICdwaXBlJztcblxuICAgICAgLy8gRklYTUUgSGFjayB0byBoYXZlIHN0cmVhbSBub3Qga2VlcCB0aGUgZXZlbnQgbG9vcCBhbGl2ZS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzE3MjZcbiAgICAgIGlmIChzdHJlYW0uX2hhbmRsZSAmJiBzdHJlYW0uX2hhbmRsZS51bnJlZikge1xuICAgICAgICBzdHJlYW0uX2hhbmRsZS51bnJlZigpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgLy8gUHJvYmFibHkgYW4gZXJyb3Igb24gaW4gdXZfZ3Vlc3NfaGFuZGxlKClcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW1wbGVtZW50IG1lLiBVbmtub3duIHN0cmVhbSBmaWxlIHR5cGUhJyk7XG4gIH1cblxuICAvLyBGb3Igc3VwcG9ydGluZyBsZWdhY3kgQVBJIHdlIHB1dCB0aGUgRkQgaGVyZS5cbiAgc3RyZWFtLmZkID0gZmQ7XG5cbiAgc3RyZWFtLl9pc1N0ZGlvID0gdHJ1ZTtcblxuICByZXR1cm4gc3RyZWFtO1xufVxuXG4vKipcbiAqIEluaXQgbG9naWMgZm9yIGBkZWJ1Z2AgaW5zdGFuY2VzLlxuICpcbiAqIENyZWF0ZSBhIG5ldyBgaW5zcGVjdE9wdHNgIG9iamVjdCBpbiBjYXNlIGB1c2VDb2xvcnNgIGlzIHNldFxuICogZGlmZmVyZW50bHkgZm9yIGEgcGFydGljdWxhciBgZGVidWdgIGluc3RhbmNlLlxuICovXG5cbmZ1bmN0aW9uIGluaXQgKGRlYnVnKSB7XG4gIGRlYnVnLmluc3BlY3RPcHRzID0ge307XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhleHBvcnRzLmluc3BlY3RPcHRzKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgZGVidWcuaW5zcGVjdE9wdHNba2V5c1tpXV0gPSBleHBvcnRzLmluc3BlY3RPcHRzW2tleXNbaV1dO1xuICB9XG59XG5cbi8qKlxuICogRW5hYmxlIG5hbWVzcGFjZXMgbGlzdGVkIGluIGBwcm9jZXNzLmVudi5ERUJVR2AgaW5pdGlhbGx5LlxuICovXG5cbmV4cG9ydHMuZW5hYmxlKGxvYWQoKSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZGVidWcvc3JjL25vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEyNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ0dHlcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwgXCJ0dHlcIlxuLy8gbW9kdWxlIGlkID0gMTI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogcmF3LWJvZHlcbiAqIENvcHlyaWdodChjKSAyMDEzLTIwMTQgSm9uYXRoYW4gT25nXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgYnl0ZXMgPSByZXF1aXJlKCdieXRlcycpXG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCdodHRwLWVycm9ycycpXG52YXIgaWNvbnYgPSByZXF1aXJlKCdpY29udi1saXRlJylcbnZhciB1bnBpcGUgPSByZXF1aXJlKCd1bnBpcGUnKVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3Qm9keVxuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBJQ09OVl9FTkNPRElOR19NRVNTQUdFX1JFR0VYUCA9IC9eRW5jb2Rpbmcgbm90IHJlY29nbml6ZWQ6IC9cblxuLyoqXG4gKiBHZXQgdGhlIGRlY29kZXIgZm9yIGEgZ2l2ZW4gZW5jb2RpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldERlY29kZXIgKGVuY29kaW5nKSB7XG4gIGlmICghZW5jb2RpbmcpIHJldHVybiBudWxsXG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gaWNvbnYuZ2V0RGVjb2RlcihlbmNvZGluZylcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGVycm9yIGdldHRpbmcgZGVjb2RlclxuICAgIGlmICghSUNPTlZfRU5DT0RJTkdfTUVTU0FHRV9SRUdFWFAudGVzdChlLm1lc3NhZ2UpKSB0aHJvdyBlXG5cbiAgICAvLyB0aGUgZW5jb2Rpbmcgd2FzIG5vdCBmb3VuZFxuICAgIHRocm93IGNyZWF0ZUVycm9yKDQxNSwgJ3NwZWNpZmllZCBlbmNvZGluZyB1bnN1cHBvcnRlZCcsIHtcbiAgICAgIGVuY29kaW5nOiBlbmNvZGluZyxcbiAgICAgIHR5cGU6ICdlbmNvZGluZy51bnN1cHBvcnRlZCdcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSByYXcgYm9keSBvZiBhIHN0cmVhbSAodHlwaWNhbGx5IEhUVFApLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBzdHJlYW1cbiAqIEBwYXJhbSB7b2JqZWN0fHN0cmluZ3xmdW5jdGlvbn0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZ2V0UmF3Qm9keSAoc3RyZWFtLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgZG9uZSA9IGNhbGxiYWNrXG4gIHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fVxuXG4gIGlmIChvcHRpb25zID09PSB0cnVlIHx8IHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgIC8vIHNob3J0IGN1dCBmb3IgZW5jb2RpbmdcbiAgICBvcHRzID0ge1xuICAgICAgZW5jb2Rpbmc6IG9wdGlvbnNcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkb25lID0gb3B0aW9uc1xuICAgIG9wdHMgPSB7fVxuICB9XG5cbiAgLy8gdmFsaWRhdGUgY2FsbGJhY2sgaXMgYSBmdW5jdGlvbiwgaWYgcHJvdmlkZWRcbiAgaWYgKGRvbmUgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZG9uZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbicpXG4gIH1cblxuICAvLyByZXF1aXJlIHRoZSBjYWxsYmFjayB3aXRob3V0IHByb21pc2VzXG4gIGlmICghZG9uZSAmJiAhZ2xvYmFsLlByb21pc2UpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBjYWxsYmFjayBpcyByZXF1aXJlZCcpXG4gIH1cblxuICAvLyBnZXQgZW5jb2RpbmdcbiAgdmFyIGVuY29kaW5nID0gb3B0cy5lbmNvZGluZyAhPT0gdHJ1ZVxuICAgID8gb3B0cy5lbmNvZGluZ1xuICAgIDogJ3V0Zi04J1xuXG4gIC8vIGNvbnZlcnQgdGhlIGxpbWl0IHRvIGFuIGludGVnZXJcbiAgdmFyIGxpbWl0ID0gYnl0ZXMucGFyc2Uob3B0cy5saW1pdClcblxuICAvLyBjb252ZXJ0IHRoZSBleHBlY3RlZCBsZW5ndGggdG8gYW4gaW50ZWdlclxuICB2YXIgbGVuZ3RoID0gb3B0cy5sZW5ndGggIT0gbnVsbCAmJiAhaXNOYU4ob3B0cy5sZW5ndGgpXG4gICAgPyBwYXJzZUludChvcHRzLmxlbmd0aCwgMTApXG4gICAgOiBudWxsXG5cbiAgaWYgKGRvbmUpIHtcbiAgICAvLyBjbGFzc2ljIGNhbGxiYWNrIHN0eWxlXG4gICAgcmV0dXJuIHJlYWRTdHJlYW0oc3RyZWFtLCBlbmNvZGluZywgbGVuZ3RoLCBsaW1pdCwgZG9uZSlcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBleGVjdXRvciAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVhZFN0cmVhbShzdHJlYW0sIGVuY29kaW5nLCBsZW5ndGgsIGxpbWl0LCBmdW5jdGlvbiBvblJlYWQgKGVyciwgYnVmKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gcmVqZWN0KGVycilcbiAgICAgIHJlc29sdmUoYnVmKVxuICAgIH0pXG4gIH0pXG59XG5cbi8qKlxuICogSGFsdCBhIHN0cmVhbS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gc3RyZWFtXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGhhbHQgKHN0cmVhbSkge1xuICAvLyB1bnBpcGUgZXZlcnl0aGluZyBmcm9tIHRoZSBzdHJlYW1cbiAgdW5waXBlKHN0cmVhbSlcblxuICAvLyBwYXVzZSBzdHJlYW1cbiAgaWYgKHR5cGVvZiBzdHJlYW0ucGF1c2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzdHJlYW0ucGF1c2UoKVxuICB9XG59XG5cbi8qKlxuICogUmVhZCB0aGUgZGF0YSBmcm9tIHRoZSBzdHJlYW0uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHN0cmVhbVxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcmVhZFN0cmVhbSAoc3RyZWFtLCBlbmNvZGluZywgbGVuZ3RoLCBsaW1pdCwgY2FsbGJhY2spIHtcbiAgdmFyIGNvbXBsZXRlID0gZmFsc2VcbiAgdmFyIHN5bmMgPSB0cnVlXG5cbiAgLy8gY2hlY2sgdGhlIGxlbmd0aCBhbmQgbGltaXQgb3B0aW9ucy5cbiAgLy8gbm90ZTogd2UgaW50ZW50aW9uYWxseSBsZWF2ZSB0aGUgc3RyZWFtIHBhdXNlZCxcbiAgLy8gc28gdXNlcnMgc2hvdWxkIGhhbmRsZSB0aGUgc3RyZWFtIHRoZW1zZWx2ZXMuXG4gIGlmIChsaW1pdCAhPT0gbnVsbCAmJiBsZW5ndGggIT09IG51bGwgJiYgbGVuZ3RoID4gbGltaXQpIHtcbiAgICByZXR1cm4gZG9uZShjcmVhdGVFcnJvcig0MTMsICdyZXF1ZXN0IGVudGl0eSB0b28gbGFyZ2UnLCB7XG4gICAgICBleHBlY3RlZDogbGVuZ3RoLFxuICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgICB0eXBlOiAnZW50aXR5LnRvby5sYXJnZSdcbiAgICB9KSlcbiAgfVxuXG4gIC8vIHN0cmVhbXMxOiBhc3NlcnQgcmVxdWVzdCBlbmNvZGluZyBpcyBidWZmZXIuXG4gIC8vIHN0cmVhbXMyKzogYXNzZXJ0IHRoZSBzdHJlYW0gZW5jb2RpbmcgaXMgYnVmZmVyLlxuICAvLyAgIHN0cmVhbS5fZGVjb2Rlcjogc3RyZWFtczFcbiAgLy8gICBzdGF0ZS5lbmNvZGluZzogc3RyZWFtczJcbiAgLy8gICBzdGF0ZS5kZWNvZGVyOiBzdHJlYW1zMiwgc3BlY2lmaWNhbGx5IDwgMC4xMC42XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZVxuICBpZiAoc3RyZWFtLl9kZWNvZGVyIHx8IChzdGF0ZSAmJiAoc3RhdGUuZW5jb2RpbmcgfHwgc3RhdGUuZGVjb2RlcikpKSB7XG4gICAgLy8gZGV2ZWxvcGVyIGVycm9yXG4gICAgcmV0dXJuIGRvbmUoY3JlYXRlRXJyb3IoNTAwLCAnc3RyZWFtIGVuY29kaW5nIHNob3VsZCBub3QgYmUgc2V0Jywge1xuICAgICAgdHlwZTogJ3N0cmVhbS5lbmNvZGluZy5zZXQnXG4gICAgfSkpXG4gIH1cblxuICB2YXIgcmVjZWl2ZWQgPSAwXG4gIHZhciBkZWNvZGVyXG5cbiAgdHJ5IHtcbiAgICBkZWNvZGVyID0gZ2V0RGVjb2RlcihlbmNvZGluZylcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGRvbmUoZXJyKVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IGRlY29kZXJcbiAgICA/ICcnXG4gICAgOiBbXVxuXG4gIC8vIGF0dGFjaCBsaXN0ZW5lcnNcbiAgc3RyZWFtLm9uKCdhYm9ydGVkJywgb25BYm9ydGVkKVxuICBzdHJlYW0ub24oJ2Nsb3NlJywgY2xlYW51cClcbiAgc3RyZWFtLm9uKCdkYXRhJywgb25EYXRhKVxuICBzdHJlYW0ub24oJ2VuZCcsIG9uRW5kKVxuICBzdHJlYW0ub24oJ2Vycm9yJywgb25FbmQpXG5cbiAgLy8gbWFyayBzeW5jIHNlY3Rpb24gY29tcGxldGVcbiAgc3luYyA9IGZhbHNlXG5cbiAgZnVuY3Rpb24gZG9uZSAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aClcblxuICAgIC8vIGNvcHkgYXJndW1lbnRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldXG4gICAgfVxuXG4gICAgLy8gbWFyayBjb21wbGV0ZVxuICAgIGNvbXBsZXRlID0gdHJ1ZVxuXG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soaW52b2tlQ2FsbGJhY2spXG4gICAgfSBlbHNlIHtcbiAgICAgIGludm9rZUNhbGxiYWNrKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnZva2VDYWxsYmFjayAoKSB7XG4gICAgICBjbGVhbnVwKClcblxuICAgICAgaWYgKGFyZ3NbMF0pIHtcbiAgICAgICAgLy8gaGFsdCB0aGUgc3RyZWFtIG9uIGVycm9yXG4gICAgICAgIGhhbHQoc3RyZWFtKVxuICAgICAgfVxuXG4gICAgICBjYWxsYmFjay5hcHBseShudWxsLCBhcmdzKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uQWJvcnRlZCAoKSB7XG4gICAgaWYgKGNvbXBsZXRlKSByZXR1cm5cblxuICAgIGRvbmUoY3JlYXRlRXJyb3IoNDAwLCAncmVxdWVzdCBhYm9ydGVkJywge1xuICAgICAgY29kZTogJ0VDT05OQUJPUlRFRCcsXG4gICAgICBleHBlY3RlZDogbGVuZ3RoLFxuICAgICAgbGVuZ3RoOiBsZW5ndGgsXG4gICAgICByZWNlaXZlZDogcmVjZWl2ZWQsXG4gICAgICB0eXBlOiAncmVxdWVzdC5hYm9ydGVkJ1xuICAgIH0pKVxuICB9XG5cbiAgZnVuY3Rpb24gb25EYXRhIChjaHVuaykge1xuICAgIGlmIChjb21wbGV0ZSkgcmV0dXJuXG5cbiAgICByZWNlaXZlZCArPSBjaHVuay5sZW5ndGhcblxuICAgIGlmIChsaW1pdCAhPT0gbnVsbCAmJiByZWNlaXZlZCA+IGxpbWl0KSB7XG4gICAgICBkb25lKGNyZWF0ZUVycm9yKDQxMywgJ3JlcXVlc3QgZW50aXR5IHRvbyBsYXJnZScsIHtcbiAgICAgICAgbGltaXQ6IGxpbWl0LFxuICAgICAgICByZWNlaXZlZDogcmVjZWl2ZWQsXG4gICAgICAgIHR5cGU6ICdlbnRpdHkudG9vLmxhcmdlJ1xuICAgICAgfSkpXG4gICAgfSBlbHNlIGlmIChkZWNvZGVyKSB7XG4gICAgICBidWZmZXIgKz0gZGVjb2Rlci53cml0ZShjaHVuaylcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLnB1c2goY2h1bmspXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25FbmQgKGVycikge1xuICAgIGlmIChjb21wbGV0ZSkgcmV0dXJuXG4gICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKVxuXG4gICAgaWYgKGxlbmd0aCAhPT0gbnVsbCAmJiByZWNlaXZlZCAhPT0gbGVuZ3RoKSB7XG4gICAgICBkb25lKGNyZWF0ZUVycm9yKDQwMCwgJ3JlcXVlc3Qgc2l6ZSBkaWQgbm90IG1hdGNoIGNvbnRlbnQgbGVuZ3RoJywge1xuICAgICAgICBleHBlY3RlZDogbGVuZ3RoLFxuICAgICAgICBsZW5ndGg6IGxlbmd0aCxcbiAgICAgICAgcmVjZWl2ZWQ6IHJlY2VpdmVkLFxuICAgICAgICB0eXBlOiAncmVxdWVzdC5zaXplLmludmFsaWQnXG4gICAgICB9KSlcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0cmluZyA9IGRlY29kZXJcbiAgICAgICAgPyBidWZmZXIgKyAoZGVjb2Rlci5lbmQoKSB8fCAnJylcbiAgICAgICAgOiBCdWZmZXIuY29uY2F0KGJ1ZmZlcilcbiAgICAgIGRvbmUobnVsbCwgc3RyaW5nKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFudXAgKCkge1xuICAgIGJ1ZmZlciA9IG51bGxcblxuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignYWJvcnRlZCcsIG9uQWJvcnRlZClcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbkRhdGEpXG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbkVuZClcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FbmQpXG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9yYXctYm9keS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTI4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogaHR0cC1lcnJvcnNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTYgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkZXByZWNhdGUgPSByZXF1aXJlKCdkZXBkJykoJ2h0dHAtZXJyb3JzJylcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ3NldHByb3RvdHlwZW9mJylcbnZhciBzdGF0dXNlcyA9IHJlcXVpcmUoJ3N0YXR1c2VzJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVycm9yXG5tb2R1bGUuZXhwb3J0cy5IdHRwRXJyb3IgPSBjcmVhdGVIdHRwRXJyb3JDb25zdHJ1Y3RvcigpXG5cbi8vIFBvcHVsYXRlIGV4cG9ydHMgZm9yIGFsbCBjb25zdHJ1Y3RvcnNcbnBvcHVsYXRlQ29uc3RydWN0b3JFeHBvcnRzKG1vZHVsZS5leHBvcnRzLCBzdGF0dXNlcy5jb2RlcywgbW9kdWxlLmV4cG9ydHMuSHR0cEVycm9yKVxuXG4vKipcbiAqIEdldCB0aGUgY29kZSBjbGFzcyBvZiBhIHN0YXR1cyBjb2RlLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb2RlQ2xhc3MgKHN0YXR1cykge1xuICByZXR1cm4gTnVtYmVyKFN0cmluZyhzdGF0dXMpLmNoYXJBdCgwKSArICcwMCcpXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IEhUVFAgRXJyb3IuXG4gKlxuICogQHJldHVybnMge0Vycm9yfVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yICgpIHtcbiAgLy8gc28gbXVjaCBhcml0eSBnb2luZyBvbiB+X35cbiAgdmFyIGVyclxuICB2YXIgbXNnXG4gIHZhciBzdGF0dXMgPSA1MDBcbiAgdmFyIHByb3BzID0ge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldXG4gICAgaWYgKGFyZyBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBlcnIgPSBhcmdcbiAgICAgIHN0YXR1cyA9IGVyci5zdGF0dXMgfHwgZXJyLnN0YXR1c0NvZGUgfHwgc3RhdHVzXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGVvZiBhcmcpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIG1zZyA9IGFyZ1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgc3RhdHVzID0gYXJnXG4gICAgICAgIGlmIChpICE9PSAwKSB7XG4gICAgICAgICAgZGVwcmVjYXRlKCdub24tZmlyc3QtYXJndW1lbnQgc3RhdHVzIGNvZGU7IHJlcGxhY2Ugd2l0aCBjcmVhdGVFcnJvcignICsgYXJnICsgJywgLi4uKScpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHByb3BzID0gYXJnXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBzdGF0dXMgPT09ICdudW1iZXInICYmIChzdGF0dXMgPCA0MDAgfHwgc3RhdHVzID49IDYwMCkpIHtcbiAgICBkZXByZWNhdGUoJ25vbi1lcnJvciBzdGF0dXMgY29kZTsgdXNlIG9ubHkgNHh4IG9yIDV4eCBzdGF0dXMgY29kZXMnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBzdGF0dXMgIT09ICdudW1iZXInIHx8XG4gICAgKCFzdGF0dXNlc1tzdGF0dXNdICYmIChzdGF0dXMgPCA0MDAgfHwgc3RhdHVzID49IDYwMCkpKSB7XG4gICAgc3RhdHVzID0gNTAwXG4gIH1cblxuICAvLyBjb25zdHJ1Y3RvclxuICB2YXIgSHR0cEVycm9yID0gY3JlYXRlRXJyb3Jbc3RhdHVzXSB8fCBjcmVhdGVFcnJvcltjb2RlQ2xhc3Moc3RhdHVzKV1cblxuICBpZiAoIWVycikge1xuICAgIC8vIGNyZWF0ZSBlcnJvclxuICAgIGVyciA9IEh0dHBFcnJvclxuICAgICAgPyBuZXcgSHR0cEVycm9yKG1zZylcbiAgICAgIDogbmV3IEVycm9yKG1zZyB8fCBzdGF0dXNlc1tzdGF0dXNdKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGVyciwgY3JlYXRlRXJyb3IpXG4gIH1cblxuICBpZiAoIUh0dHBFcnJvciB8fCAhKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvcikgfHwgZXJyLnN0YXR1cyAhPT0gc3RhdHVzKSB7XG4gICAgLy8gYWRkIHByb3BlcnRpZXMgdG8gZ2VuZXJpYyBlcnJvclxuICAgIGVyci5leHBvc2UgPSBzdGF0dXMgPCA1MDBcbiAgICBlcnIuc3RhdHVzID0gZXJyLnN0YXR1c0NvZGUgPSBzdGF0dXNcbiAgfVxuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgIGlmIChrZXkgIT09ICdzdGF0dXMnICYmIGtleSAhPT0gJ3N0YXR1c0NvZGUnKSB7XG4gICAgICBlcnJba2V5XSA9IHByb3BzW2tleV1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyXG59XG5cbi8qKlxuICogQ3JlYXRlIEhUVFAgZXJyb3IgYWJzdHJhY3QgYmFzZSBjbGFzcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlSHR0cEVycm9yQ29uc3RydWN0b3IgKCkge1xuICBmdW5jdGlvbiBIdHRwRXJyb3IgKCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Nhbm5vdCBjb25zdHJ1Y3QgYWJzdHJhY3QgY2xhc3MnKVxuICB9XG5cbiAgaW5oZXJpdHMoSHR0cEVycm9yLCBFcnJvcilcblxuICByZXR1cm4gSHR0cEVycm9yXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY29uc3RydWN0b3IgZm9yIGEgY2xpZW50IGVycm9yLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVDbGllbnRFcnJvckNvbnN0cnVjdG9yIChIdHRwRXJyb3IsIG5hbWUsIGNvZGUpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IG5hbWUubWF0Y2goL0Vycm9yJC8pID8gbmFtZSA6IG5hbWUgKyAnRXJyb3InXG5cbiAgZnVuY3Rpb24gQ2xpZW50RXJyb3IgKG1lc3NhZ2UpIHtcbiAgICAvLyBjcmVhdGUgdGhlIGVycm9yIG9iamVjdFxuICAgIHZhciBtc2cgPSBtZXNzYWdlICE9IG51bGwgPyBtZXNzYWdlIDogc3RhdHVzZXNbY29kZV1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKG1zZylcblxuICAgIC8vIGNhcHR1cmUgYSBzdGFjayB0cmFjZSB0byB0aGUgY29uc3RydWN0aW9uIHBvaW50XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCBDbGllbnRFcnJvcilcblxuICAgIC8vIGFkanVzdCB0aGUgW1tQcm90b3R5cGVdXVxuICAgIHNldFByb3RvdHlwZU9mKGVyciwgQ2xpZW50RXJyb3IucHJvdG90eXBlKVxuXG4gICAgLy8gcmVkZWZpbmUgdGhlIGVycm9yIG1lc3NhZ2VcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyLCAnbWVzc2FnZScsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogbXNnLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KVxuXG4gICAgLy8gcmVkZWZpbmUgdGhlIGVycm9yIG5hbWVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyLCAnbmFtZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGNsYXNzTmFtZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSlcblxuICAgIHJldHVybiBlcnJcbiAgfVxuXG4gIGluaGVyaXRzKENsaWVudEVycm9yLCBIdHRwRXJyb3IpXG5cbiAgQ2xpZW50RXJyb3IucHJvdG90eXBlLnN0YXR1cyA9IGNvZGVcbiAgQ2xpZW50RXJyb3IucHJvdG90eXBlLnN0YXR1c0NvZGUgPSBjb2RlXG4gIENsaWVudEVycm9yLnByb3RvdHlwZS5leHBvc2UgPSB0cnVlXG5cbiAgcmV0dXJuIENsaWVudEVycm9yXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY29uc3RydWN0b3IgZm9yIGEgc2VydmVyIGVycm9yLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVTZXJ2ZXJFcnJvckNvbnN0cnVjdG9yIChIdHRwRXJyb3IsIG5hbWUsIGNvZGUpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IG5hbWUubWF0Y2goL0Vycm9yJC8pID8gbmFtZSA6IG5hbWUgKyAnRXJyb3InXG5cbiAgZnVuY3Rpb24gU2VydmVyRXJyb3IgKG1lc3NhZ2UpIHtcbiAgICAvLyBjcmVhdGUgdGhlIGVycm9yIG9iamVjdFxuICAgIHZhciBtc2cgPSBtZXNzYWdlICE9IG51bGwgPyBtZXNzYWdlIDogc3RhdHVzZXNbY29kZV1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKG1zZylcblxuICAgIC8vIGNhcHR1cmUgYSBzdGFjayB0cmFjZSB0byB0aGUgY29uc3RydWN0aW9uIHBvaW50XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCBTZXJ2ZXJFcnJvcilcblxuICAgIC8vIGFkanVzdCB0aGUgW1tQcm90b3R5cGVdXVxuICAgIHNldFByb3RvdHlwZU9mKGVyciwgU2VydmVyRXJyb3IucHJvdG90eXBlKVxuXG4gICAgLy8gcmVkZWZpbmUgdGhlIGVycm9yIG1lc3NhZ2VcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyLCAnbWVzc2FnZScsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogbXNnLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KVxuXG4gICAgLy8gcmVkZWZpbmUgdGhlIGVycm9yIG5hbWVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyLCAnbmFtZScsIHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGNsYXNzTmFtZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSlcblxuICAgIHJldHVybiBlcnJcbiAgfVxuXG4gIGluaGVyaXRzKFNlcnZlckVycm9yLCBIdHRwRXJyb3IpXG5cbiAgU2VydmVyRXJyb3IucHJvdG90eXBlLnN0YXR1cyA9IGNvZGVcbiAgU2VydmVyRXJyb3IucHJvdG90eXBlLnN0YXR1c0NvZGUgPSBjb2RlXG4gIFNlcnZlckVycm9yLnByb3RvdHlwZS5leHBvc2UgPSBmYWxzZVxuXG4gIHJldHVybiBTZXJ2ZXJFcnJvclxufVxuXG4vKipcbiAqIFBvcHVsYXRlIHRoZSBleHBvcnRzIG9iamVjdCB3aXRoIGNvbnN0cnVjdG9ycyBmb3IgZXZlcnkgZXJyb3IgY2xhc3MuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBvcHVsYXRlQ29uc3RydWN0b3JFeHBvcnRzIChleHBvcnRzLCBjb2RlcywgSHR0cEVycm9yKSB7XG4gIGNvZGVzLmZvckVhY2goZnVuY3Rpb24gZm9yRWFjaENvZGUgKGNvZGUpIHtcbiAgICB2YXIgQ29kZUVycm9yXG4gICAgdmFyIG5hbWUgPSB0b0lkZW50aWZpZXIoc3RhdHVzZXNbY29kZV0pXG5cbiAgICBzd2l0Y2ggKGNvZGVDbGFzcyhjb2RlKSkge1xuICAgICAgY2FzZSA0MDA6XG4gICAgICAgIENvZGVFcnJvciA9IGNyZWF0ZUNsaWVudEVycm9yQ29uc3RydWN0b3IoSHR0cEVycm9yLCBuYW1lLCBjb2RlKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSA1MDA6XG4gICAgICAgIENvZGVFcnJvciA9IGNyZWF0ZVNlcnZlckVycm9yQ29uc3RydWN0b3IoSHR0cEVycm9yLCBuYW1lLCBjb2RlKVxuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIGlmIChDb2RlRXJyb3IpIHtcbiAgICAgIC8vIGV4cG9ydCB0aGUgY29uc3RydWN0b3JcbiAgICAgIGV4cG9ydHNbY29kZV0gPSBDb2RlRXJyb3JcbiAgICAgIGV4cG9ydHNbbmFtZV0gPSBDb2RlRXJyb3JcbiAgICB9XG4gIH0pXG5cbiAgLy8gYmFja3dhcmRzLWNvbXBhdGliaWxpdHlcbiAgZXhwb3J0c1tcIkknbWF0ZWFwb3RcIl0gPSBkZXByZWNhdGUuZnVuY3Rpb24oZXhwb3J0cy5JbUFUZWFwb3QsXG4gICAgJ1wiSVxcJ21hdGVhcG90XCI7IHVzZSBcIkltQVRlYXBvdFwiIGluc3RlYWQnKVxufVxuXG4vKipcbiAqIENvbnZlcnQgYSBzdHJpbmcgb2Ygd29yZHMgdG8gYSBKYXZhU2NyaXB0IGlkZW50aWZpZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHRvSWRlbnRpZmllciAoc3RyKSB7XG4gIHJldHVybiBzdHIuc3BsaXQoJyAnKS5tYXAoZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgcmV0dXJuIHRva2VuLnNsaWNlKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyB0b2tlbi5zbGljZSgxKVxuICB9KS5qb2luKCcnKS5yZXBsYWNlKC9bXiBfMC05YS16XS9naSwgJycpXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvcmF3LWJvZHkvbm9kZV9tb2R1bGVzL2h0dHAtZXJyb3JzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMjlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBkZXBkXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE3IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxudmFyIGNhbGxTaXRlVG9TdHJpbmcgPSByZXF1aXJlKCcuL2xpYi9jb21wYXQnKS5jYWxsU2l0ZVRvU3RyaW5nXG52YXIgZXZlbnRMaXN0ZW5lckNvdW50ID0gcmVxdWlyZSgnLi9saWIvY29tcGF0JykuZXZlbnRMaXN0ZW5lckNvdW50XG52YXIgcmVsYXRpdmUgPSByZXF1aXJlKCdwYXRoJykucmVsYXRpdmVcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlcGRcblxuLyoqXG4gKiBHZXQgdGhlIHBhdGggdG8gYmFzZSBmaWxlcyBvbi5cbiAqL1xuXG52YXIgYmFzZVBhdGggPSBwcm9jZXNzLmN3ZCgpXG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIG5hbWVzcGFjZSBpcyBjb250YWluZWQgaW4gdGhlIHN0cmluZy5cbiAqL1xuXG5mdW5jdGlvbiBjb250YWluc05hbWVzcGFjZSAoc3RyLCBuYW1lc3BhY2UpIHtcbiAgdmFyIHZhbCA9IHN0ci5zcGxpdCgvWyAsXSsvKVxuXG4gIG5hbWVzcGFjZSA9IFN0cmluZyhuYW1lc3BhY2UpLnRvTG93ZXJDYXNlKClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuICAgIGlmICghKHN0ciA9IHZhbFtpXSkpIGNvbnRpbnVlXG5cbiAgICAvLyBuYW1lc3BhY2UgY29udGFpbmVkXG4gICAgaWYgKHN0ciA9PT0gJyonIHx8IHN0ci50b0xvd2VyQ2FzZSgpID09PSBuYW1lc3BhY2UpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQ29udmVydCBhIGRhdGEgZGVzY3JpcHRvciB0byBhY2Nlc3NvciBkZXNjcmlwdG9yLlxuICovXG5cbmZ1bmN0aW9uIGNvbnZlcnREYXRhRGVzY3JpcHRvclRvQWNjZXNzb3IgKG9iaiwgcHJvcCwgbWVzc2FnZSkge1xuICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBwcm9wKVxuICB2YXIgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlXG5cbiAgZGVzY3JpcHRvci5nZXQgPSBmdW5jdGlvbiBnZXR0ZXIgKCkgeyByZXR1cm4gdmFsdWUgfVxuXG4gIGlmIChkZXNjcmlwdG9yLndyaXRhYmxlKSB7XG4gICAgZGVzY3JpcHRvci5zZXQgPSBmdW5jdGlvbiBzZXR0ZXIgKHZhbCkgeyByZXR1cm4gKHZhbHVlID0gdmFsKSB9XG4gIH1cblxuICBkZWxldGUgZGVzY3JpcHRvci52YWx1ZVxuICBkZWxldGUgZGVzY3JpcHRvci53cml0YWJsZVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIHByb3AsIGRlc2NyaXB0b3IpXG5cbiAgcmV0dXJuIGRlc2NyaXB0b3Jcbn1cblxuLyoqXG4gKiBDcmVhdGUgYXJndW1lbnRzIHN0cmluZyB0byBrZWVwIGFyaXR5LlxuICovXG5cbmZ1bmN0aW9uIGNyZWF0ZUFyZ3VtZW50c1N0cmluZyAoYXJpdHkpIHtcbiAgdmFyIHN0ciA9ICcnXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcml0eTsgaSsrKSB7XG4gICAgc3RyICs9ICcsIGFyZycgKyBpXG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cigyKVxufVxuXG4vKipcbiAqIENyZWF0ZSBzdGFjayBzdHJpbmcgZnJvbSBzdGFjay5cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVTdGFja1N0cmluZyAoc3RhY2spIHtcbiAgdmFyIHN0ciA9IHRoaXMubmFtZSArICc6ICcgKyB0aGlzLm5hbWVzcGFjZVxuXG4gIGlmICh0aGlzLm1lc3NhZ2UpIHtcbiAgICBzdHIgKz0gJyBkZXByZWNhdGVkICcgKyB0aGlzLm1lc3NhZ2VcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICBzdHIgKz0gJ1xcbiAgICBhdCAnICsgY2FsbFNpdGVUb1N0cmluZyhzdGFja1tpXSlcbiAgfVxuXG4gIHJldHVybiBzdHJcbn1cblxuLyoqXG4gKiBDcmVhdGUgZGVwcmVjYXRlIGZvciBuYW1lc3BhY2UgaW4gY2FsbGVyLlxuICovXG5cbmZ1bmN0aW9uIGRlcGQgKG5hbWVzcGFjZSkge1xuICBpZiAoIW5hbWVzcGFjZSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IG5hbWVzcGFjZSBpcyByZXF1aXJlZCcpXG4gIH1cblxuICB2YXIgc3RhY2sgPSBnZXRTdGFjaygpXG4gIHZhciBzaXRlID0gY2FsbFNpdGVMb2NhdGlvbihzdGFja1sxXSlcbiAgdmFyIGZpbGUgPSBzaXRlWzBdXG5cbiAgZnVuY3Rpb24gZGVwcmVjYXRlIChtZXNzYWdlKSB7XG4gICAgLy8gY2FsbCB0byBzZWxmIGFzIGxvZ1xuICAgIGxvZy5jYWxsKGRlcHJlY2F0ZSwgbWVzc2FnZSlcbiAgfVxuXG4gIGRlcHJlY2F0ZS5fZmlsZSA9IGZpbGVcbiAgZGVwcmVjYXRlLl9pZ25vcmVkID0gaXNpZ25vcmVkKG5hbWVzcGFjZSlcbiAgZGVwcmVjYXRlLl9uYW1lc3BhY2UgPSBuYW1lc3BhY2VcbiAgZGVwcmVjYXRlLl90cmFjZWQgPSBpc3RyYWNlZChuYW1lc3BhY2UpXG4gIGRlcHJlY2F0ZS5fd2FybmVkID0gT2JqZWN0LmNyZWF0ZShudWxsKVxuXG4gIGRlcHJlY2F0ZS5mdW5jdGlvbiA9IHdyYXBmdW5jdGlvblxuICBkZXByZWNhdGUucHJvcGVydHkgPSB3cmFwcHJvcGVydHlcblxuICByZXR1cm4gZGVwcmVjYXRlXG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIG5hbWVzcGFjZSBpcyBpZ25vcmVkLlxuICovXG5cbmZ1bmN0aW9uIGlzaWdub3JlZCAobmFtZXNwYWNlKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB0ZXN0ZWQgaW4gYSBjaGlsZCBwcm9jZXNzcyAqL1xuICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uKSB7XG4gICAgLy8gLS1uby1kZXByZWNhdGlvbiBzdXBwb3J0XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHZhciBzdHIgPSBwcm9jZXNzLmVudi5OT19ERVBSRUNBVElPTiB8fCAnJ1xuXG4gIC8vIG5hbWVzcGFjZSBpZ25vcmVkXG4gIHJldHVybiBjb250YWluc05hbWVzcGFjZShzdHIsIG5hbWVzcGFjZSlcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgbmFtZXNwYWNlIGlzIHRyYWNlZC5cbiAqL1xuXG5mdW5jdGlvbiBpc3RyYWNlZCAobmFtZXNwYWNlKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0OiB0ZXN0ZWQgaW4gYSBjaGlsZCBwcm9jZXNzcyAqL1xuICBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgLy8gLS10cmFjZS1kZXByZWNhdGlvbiBzdXBwb3J0XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHZhciBzdHIgPSBwcm9jZXNzLmVudi5UUkFDRV9ERVBSRUNBVElPTiB8fCAnJ1xuXG4gIC8vIG5hbWVzcGFjZSB0cmFjZWRcbiAgcmV0dXJuIGNvbnRhaW5zTmFtZXNwYWNlKHN0ciwgbmFtZXNwYWNlKVxufVxuXG4vKipcbiAqIERpc3BsYXkgZGVwcmVjYXRpb24gbWVzc2FnZS5cbiAqL1xuXG5mdW5jdGlvbiBsb2cgKG1lc3NhZ2UsIHNpdGUpIHtcbiAgdmFyIGhhc2xpc3RlbmVycyA9IGV2ZW50TGlzdGVuZXJDb3VudChwcm9jZXNzLCAnZGVwcmVjYXRpb24nKSAhPT0gMFxuXG4gIC8vIGFib3J0IGVhcmx5IGlmIG5vIGRlc3RpbmF0aW9uXG4gIGlmICghaGFzbGlzdGVuZXJzICYmIHRoaXMuX2lnbm9yZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBjYWxsZXJcbiAgdmFyIGNhbGxGaWxlXG4gIHZhciBjYWxsU2l0ZVxuICB2YXIgaSA9IDBcbiAgdmFyIHNlZW4gPSBmYWxzZVxuICB2YXIgc3RhY2sgPSBnZXRTdGFjaygpXG4gIHZhciBmaWxlID0gdGhpcy5fZmlsZVxuXG4gIGlmIChzaXRlKSB7XG4gICAgLy8gcHJvdmlkZWQgc2l0ZVxuICAgIGNhbGxTaXRlID0gY2FsbFNpdGVMb2NhdGlvbihzdGFja1sxXSlcbiAgICBjYWxsU2l0ZS5uYW1lID0gc2l0ZS5uYW1lXG4gICAgZmlsZSA9IGNhbGxTaXRlWzBdXG4gIH0gZWxzZSB7XG4gICAgLy8gZ2V0IGNhbGwgc2l0ZVxuICAgIGkgPSAyXG4gICAgc2l0ZSA9IGNhbGxTaXRlTG9jYXRpb24oc3RhY2tbaV0pXG4gICAgY2FsbFNpdGUgPSBzaXRlXG4gIH1cblxuICAvLyBnZXQgY2FsbGVyIG9mIGRlcHJlY2F0ZWQgdGhpbmcgaW4gcmVsYXRpb24gdG8gZmlsZVxuICBmb3IgKDsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgY2FsbGVyID0gY2FsbFNpdGVMb2NhdGlvbihzdGFja1tpXSlcbiAgICBjYWxsRmlsZSA9IGNhbGxlclswXVxuXG4gICAgaWYgKGNhbGxGaWxlID09PSBmaWxlKSB7XG4gICAgICBzZWVuID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoY2FsbEZpbGUgPT09IHRoaXMuX2ZpbGUpIHtcbiAgICAgIGZpbGUgPSB0aGlzLl9maWxlXG4gICAgfSBlbHNlIGlmIChzZWVuKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHZhciBrZXkgPSBjYWxsZXJcbiAgICA/IHNpdGUuam9pbignOicpICsgJ19fJyArIGNhbGxlci5qb2luKCc6JylcbiAgICA6IHVuZGVmaW5lZFxuXG4gIGlmIChrZXkgIT09IHVuZGVmaW5lZCAmJiBrZXkgaW4gdGhpcy5fd2FybmVkKSB7XG4gICAgLy8gYWxyZWFkeSB3YXJuZWRcbiAgICByZXR1cm5cbiAgfVxuXG4gIHRoaXMuX3dhcm5lZFtrZXldID0gdHJ1ZVxuXG4gIC8vIGdlbmVyYXRlIGF1dG9tYXRpYyBtZXNzYWdlIGZyb20gY2FsbCBzaXRlXG4gIGlmICghbWVzc2FnZSkge1xuICAgIG1lc3NhZ2UgPSBjYWxsU2l0ZSA9PT0gc2l0ZSB8fCAhY2FsbFNpdGUubmFtZVxuICAgICAgPyBkZWZhdWx0TWVzc2FnZShzaXRlKVxuICAgICAgOiBkZWZhdWx0TWVzc2FnZShjYWxsU2l0ZSlcbiAgfVxuXG4gIC8vIGVtaXQgZGVwcmVjYXRpb24gaWYgbGlzdGVuZXJzIGV4aXN0XG4gIGlmIChoYXNsaXN0ZW5lcnMpIHtcbiAgICB2YXIgZXJyID0gRGVwcmVjYXRpb25FcnJvcih0aGlzLl9uYW1lc3BhY2UsIG1lc3NhZ2UsIHN0YWNrLnNsaWNlKGkpKVxuICAgIHByb2Nlc3MuZW1pdCgnZGVwcmVjYXRpb24nLCBlcnIpXG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBmb3JtYXQgYW5kIHdyaXRlIG1lc3NhZ2VcbiAgdmFyIGZvcm1hdCA9IHByb2Nlc3Muc3RkZXJyLmlzVFRZXG4gICAgPyBmb3JtYXRDb2xvclxuICAgIDogZm9ybWF0UGxhaW5cbiAgdmFyIG1zZyA9IGZvcm1hdC5jYWxsKHRoaXMsIG1lc3NhZ2UsIGNhbGxlciwgc3RhY2suc2xpY2UoaSkpXG4gIHByb2Nlc3Muc3RkZXJyLndyaXRlKG1zZyArICdcXG4nLCAndXRmOCcpXG59XG5cbi8qKlxuICogR2V0IGNhbGwgc2l0ZSBsb2NhdGlvbiBhcyBhcnJheS5cbiAqL1xuXG5mdW5jdGlvbiBjYWxsU2l0ZUxvY2F0aW9uIChjYWxsU2l0ZSkge1xuICB2YXIgZmlsZSA9IGNhbGxTaXRlLmdldEZpbGVOYW1lKCkgfHwgJzxhbm9ueW1vdXM+J1xuICB2YXIgbGluZSA9IGNhbGxTaXRlLmdldExpbmVOdW1iZXIoKVxuICB2YXIgY29sbSA9IGNhbGxTaXRlLmdldENvbHVtbk51bWJlcigpXG5cbiAgaWYgKGNhbGxTaXRlLmlzRXZhbCgpKSB7XG4gICAgZmlsZSA9IGNhbGxTaXRlLmdldEV2YWxPcmlnaW4oKSArICcsICcgKyBmaWxlXG4gIH1cblxuICB2YXIgc2l0ZSA9IFtmaWxlLCBsaW5lLCBjb2xtXVxuXG4gIHNpdGUuY2FsbFNpdGUgPSBjYWxsU2l0ZVxuICBzaXRlLm5hbWUgPSBjYWxsU2l0ZS5nZXRGdW5jdGlvbk5hbWUoKVxuXG4gIHJldHVybiBzaXRlXG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBkZWZhdWx0IG1lc3NhZ2UgZnJvbSB0aGUgc2l0ZS5cbiAqL1xuXG5mdW5jdGlvbiBkZWZhdWx0TWVzc2FnZSAoc2l0ZSkge1xuICB2YXIgY2FsbFNpdGUgPSBzaXRlLmNhbGxTaXRlXG4gIHZhciBmdW5jTmFtZSA9IHNpdGUubmFtZVxuXG4gIC8vIG1ha2UgdXNlZnVsIGFub255bW91cyBuYW1lXG4gIGlmICghZnVuY05hbWUpIHtcbiAgICBmdW5jTmFtZSA9ICc8YW5vbnltb3VzQCcgKyBmb3JtYXRMb2NhdGlvbihzaXRlKSArICc+J1xuICB9XG5cbiAgdmFyIGNvbnRleHQgPSBjYWxsU2l0ZS5nZXRUaGlzKClcbiAgdmFyIHR5cGVOYW1lID0gY29udGV4dCAmJiBjYWxsU2l0ZS5nZXRUeXBlTmFtZSgpXG5cbiAgLy8gaWdub3JlIHVzZWxlc3MgdHlwZSBuYW1lXG4gIGlmICh0eXBlTmFtZSA9PT0gJ09iamVjdCcpIHtcbiAgICB0eXBlTmFtZSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gbWFrZSB1c2VmdWwgdHlwZSBuYW1lXG4gIGlmICh0eXBlTmFtZSA9PT0gJ0Z1bmN0aW9uJykge1xuICAgIHR5cGVOYW1lID0gY29udGV4dC5uYW1lIHx8IHR5cGVOYW1lXG4gIH1cblxuICByZXR1cm4gdHlwZU5hbWUgJiYgY2FsbFNpdGUuZ2V0TWV0aG9kTmFtZSgpXG4gICAgPyB0eXBlTmFtZSArICcuJyArIGZ1bmNOYW1lXG4gICAgOiBmdW5jTmFtZVxufVxuXG4vKipcbiAqIEZvcm1hdCBkZXByZWNhdGlvbiBtZXNzYWdlIHdpdGhvdXQgY29sb3IuXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0UGxhaW4gKG1zZywgY2FsbGVyLCBzdGFjaykge1xuICB2YXIgdGltZXN0YW1wID0gbmV3IERhdGUoKS50b1VUQ1N0cmluZygpXG5cbiAgdmFyIGZvcm1hdHRlZCA9IHRpbWVzdGFtcCArXG4gICAgJyAnICsgdGhpcy5fbmFtZXNwYWNlICtcbiAgICAnIGRlcHJlY2F0ZWQgJyArIG1zZ1xuXG4gIC8vIGFkZCBzdGFjayB0cmFjZVxuICBpZiAodGhpcy5fdHJhY2VkKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFjay5sZW5ndGg7IGkrKykge1xuICAgICAgZm9ybWF0dGVkICs9ICdcXG4gICAgYXQgJyArIGNhbGxTaXRlVG9TdHJpbmcoc3RhY2tbaV0pXG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZFxuICB9XG5cbiAgaWYgKGNhbGxlcikge1xuICAgIGZvcm1hdHRlZCArPSAnIGF0ICcgKyBmb3JtYXRMb2NhdGlvbihjYWxsZXIpXG4gIH1cblxuICByZXR1cm4gZm9ybWF0dGVkXG59XG5cbi8qKlxuICogRm9ybWF0IGRlcHJlY2F0aW9uIG1lc3NhZ2Ugd2l0aCBjb2xvci5cbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRDb2xvciAobXNnLCBjYWxsZXIsIHN0YWNrKSB7XG4gIHZhciBmb3JtYXR0ZWQgPSAnXFx4MWJbMzY7MW0nICsgdGhpcy5fbmFtZXNwYWNlICsgJ1xceDFiWzIyOzM5bScgKyAvLyBib2xkIGN5YW5cbiAgICAnIFxceDFiWzMzOzFtZGVwcmVjYXRlZFxceDFiWzIyOzM5bScgKyAvLyBib2xkIHllbGxvd1xuICAgICcgXFx4MWJbMG0nICsgbXNnICsgJ1xceDFiWzM5bScgLy8gcmVzZXRcblxuICAvLyBhZGQgc3RhY2sgdHJhY2VcbiAgaWYgKHRoaXMuX3RyYWNlZCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhY2subGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvcm1hdHRlZCArPSAnXFxuICAgIFxceDFiWzM2bWF0ICcgKyBjYWxsU2l0ZVRvU3RyaW5nKHN0YWNrW2ldKSArICdcXHgxYlszOW0nIC8vIGN5YW5cbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybWF0dGVkXG4gIH1cblxuICBpZiAoY2FsbGVyKSB7XG4gICAgZm9ybWF0dGVkICs9ICcgXFx4MWJbMzZtJyArIGZvcm1hdExvY2F0aW9uKGNhbGxlcikgKyAnXFx4MWJbMzltJyAvLyBjeWFuXG4gIH1cblxuICByZXR1cm4gZm9ybWF0dGVkXG59XG5cbi8qKlxuICogRm9ybWF0IGNhbGwgc2l0ZSBsb2NhdGlvbi5cbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRMb2NhdGlvbiAoY2FsbFNpdGUpIHtcbiAgcmV0dXJuIHJlbGF0aXZlKGJhc2VQYXRoLCBjYWxsU2l0ZVswXSkgK1xuICAgICc6JyArIGNhbGxTaXRlWzFdICtcbiAgICAnOicgKyBjYWxsU2l0ZVsyXVxufVxuXG4vKipcbiAqIEdldCB0aGUgc3RhY2sgYXMgYXJyYXkgb2YgY2FsbCBzaXRlcy5cbiAqL1xuXG5mdW5jdGlvbiBnZXRTdGFjayAoKSB7XG4gIHZhciBsaW1pdCA9IEVycm9yLnN0YWNrVHJhY2VMaW1pdFxuICB2YXIgb2JqID0ge31cbiAgdmFyIHByZXAgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZVxuXG4gIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJlcGFyZU9iamVjdFN0YWNrVHJhY2VcbiAgRXJyb3Iuc3RhY2tUcmFjZUxpbWl0ID0gTWF0aC5tYXgoMTAsIGxpbWl0KVxuXG4gIC8vIGNhcHR1cmUgdGhlIHN0YWNrXG4gIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKG9iailcblxuICAvLyBzbGljZSB0aGlzIGZ1bmN0aW9uIG9mZiB0aGUgdG9wXG4gIHZhciBzdGFjayA9IG9iai5zdGFjay5zbGljZSgxKVxuXG4gIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gcHJlcFxuICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBsaW1pdFxuXG4gIHJldHVybiBzdGFja1xufVxuXG4vKipcbiAqIENhcHR1cmUgY2FsbCBzaXRlIHN0YWNrIGZyb20gdjguXG4gKi9cblxuZnVuY3Rpb24gcHJlcGFyZU9iamVjdFN0YWNrVHJhY2UgKG9iaiwgc3RhY2spIHtcbiAgcmV0dXJuIHN0YWNrXG59XG5cbi8qKlxuICogUmV0dXJuIGEgd3JhcHBlZCBmdW5jdGlvbiBpbiBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuXG4gKi9cblxuZnVuY3Rpb24gd3JhcGZ1bmN0aW9uIChmbiwgbWVzc2FnZSkge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgZm4gbXVzdCBiZSBhIGZ1bmN0aW9uJylcbiAgfVxuXG4gIHZhciBhcmdzID0gY3JlYXRlQXJndW1lbnRzU3RyaW5nKGZuLmxlbmd0aClcbiAgdmFyIGRlcHJlY2F0ZSA9IHRoaXMgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgc3RhY2sgPSBnZXRTdGFjaygpXG4gIHZhciBzaXRlID0gY2FsbFNpdGVMb2NhdGlvbihzdGFja1sxXSlcblxuICBzaXRlLm5hbWUgPSBmbi5uYW1lXG5cbiAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1ldmFsXG4gIHZhciBkZXByZWNhdGVkZm4gPSBldmFsKCcoZnVuY3Rpb24gKCcgKyBhcmdzICsgJykge1xcbicgK1xuICAgICdcInVzZSBzdHJpY3RcIlxcbicgK1xuICAgICdsb2cuY2FsbChkZXByZWNhdGUsIG1lc3NhZ2UsIHNpdGUpXFxuJyArXG4gICAgJ3JldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXFxuJyArXG4gICAgJ30pJylcblxuICByZXR1cm4gZGVwcmVjYXRlZGZuXG59XG5cbi8qKlxuICogV3JhcCBwcm9wZXJ0eSBpbiBhIGRlcHJlY2F0aW9uIG1lc3NhZ2UuXG4gKi9cblxuZnVuY3Rpb24gd3JhcHByb3BlcnR5IChvYmosIHByb3AsIG1lc3NhZ2UpIHtcbiAgaWYgKCFvYmogfHwgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmogIT09ICdmdW5jdGlvbicpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgb2JqIG11c3QgYmUgb2JqZWN0JylcbiAgfVxuXG4gIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIHByb3ApXG5cbiAgaWYgKCFkZXNjcmlwdG9yKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbXVzdCBjYWxsIHByb3BlcnR5IG9uIG93bmVyIG9iamVjdCcpXG4gIH1cblxuICBpZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncHJvcGVydHkgbXVzdCBiZSBjb25maWd1cmFibGUnKVxuICB9XG5cbiAgdmFyIGRlcHJlY2F0ZSA9IHRoaXNcbiAgdmFyIHN0YWNrID0gZ2V0U3RhY2soKVxuICB2YXIgc2l0ZSA9IGNhbGxTaXRlTG9jYXRpb24oc3RhY2tbMV0pXG5cbiAgLy8gc2V0IHNpdGUgbmFtZVxuICBzaXRlLm5hbWUgPSBwcm9wXG5cbiAgLy8gY29udmVydCBkYXRhIGRlc2NyaXB0b3JcbiAgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikge1xuICAgIGRlc2NyaXB0b3IgPSBjb252ZXJ0RGF0YURlc2NyaXB0b3JUb0FjY2Vzc29yKG9iaiwgcHJvcCwgbWVzc2FnZSlcbiAgfVxuXG4gIHZhciBnZXQgPSBkZXNjcmlwdG9yLmdldFxuICB2YXIgc2V0ID0gZGVzY3JpcHRvci5zZXRcblxuICAvLyB3cmFwIGdldHRlclxuICBpZiAodHlwZW9mIGdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlc2NyaXB0b3IuZ2V0ID0gZnVuY3Rpb24gZ2V0dGVyICgpIHtcbiAgICAgIGxvZy5jYWxsKGRlcHJlY2F0ZSwgbWVzc2FnZSwgc2l0ZSlcbiAgICAgIHJldHVybiBnZXQuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgIH1cbiAgfVxuXG4gIC8vIHdyYXAgc2V0dGVyXG4gIGlmICh0eXBlb2Ygc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZGVzY3JpcHRvci5zZXQgPSBmdW5jdGlvbiBzZXR0ZXIgKCkge1xuICAgICAgbG9nLmNhbGwoZGVwcmVjYXRlLCBtZXNzYWdlLCBzaXRlKVxuICAgICAgcmV0dXJuIHNldC5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgcHJvcCwgZGVzY3JpcHRvcilcbn1cblxuLyoqXG4gKiBDcmVhdGUgRGVwcmVjYXRpb25FcnJvciBmb3IgZGVwcmVjYXRpb25cbiAqL1xuXG5mdW5jdGlvbiBEZXByZWNhdGlvbkVycm9yIChuYW1lc3BhY2UsIG1lc3NhZ2UsIHN0YWNrKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcigpXG4gIHZhciBzdGFja1N0cmluZ1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ2NvbnN0cnVjdG9yJywge1xuICAgIHZhbHVlOiBEZXByZWNhdGlvbkVycm9yXG4gIH0pXG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnbWVzc2FnZScsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IG1lc3NhZ2UsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSlcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICduYW1lJywge1xuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogJ0RlcHJlY2F0aW9uRXJyb3InLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pXG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnbmFtZXNwYWNlJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB2YWx1ZTogbmFtZXNwYWNlLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pXG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVycm9yLCAnc3RhY2snLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHN0YWNrU3RyaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrU3RyaW5nXG4gICAgICB9XG5cbiAgICAgIC8vIHByZXBhcmUgc3RhY2sgdHJhY2VcbiAgICAgIHJldHVybiAoc3RhY2tTdHJpbmcgPSBjcmVhdGVTdGFja1N0cmluZy5jYWxsKHRoaXMsIHN0YWNrKSlcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0dGVyICh2YWwpIHtcbiAgICAgIHN0YWNrU3RyaW5nID0gdmFsXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBlcnJvclxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3Jhdy1ib2R5L25vZGVfbW9kdWxlcy9kZXBkL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBkZXBkXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBjYWxsU2l0ZVRvU3RyaW5nXG5cbi8qKlxuICogRm9ybWF0IGEgQ2FsbFNpdGUgZmlsZSBsb2NhdGlvbiB0byBhIHN0cmluZy5cbiAqL1xuXG5mdW5jdGlvbiBjYWxsU2l0ZUZpbGVMb2NhdGlvbiAoY2FsbFNpdGUpIHtcbiAgdmFyIGZpbGVOYW1lXG4gIHZhciBmaWxlTG9jYXRpb24gPSAnJ1xuXG4gIGlmIChjYWxsU2l0ZS5pc05hdGl2ZSgpKSB7XG4gICAgZmlsZUxvY2F0aW9uID0gJ25hdGl2ZSdcbiAgfSBlbHNlIGlmIChjYWxsU2l0ZS5pc0V2YWwoKSkge1xuICAgIGZpbGVOYW1lID0gY2FsbFNpdGUuZ2V0U2NyaXB0TmFtZU9yU291cmNlVVJMKClcbiAgICBpZiAoIWZpbGVOYW1lKSB7XG4gICAgICBmaWxlTG9jYXRpb24gPSBjYWxsU2l0ZS5nZXRFdmFsT3JpZ2luKClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZmlsZU5hbWUgPSBjYWxsU2l0ZS5nZXRGaWxlTmFtZSgpXG4gIH1cblxuICBpZiAoZmlsZU5hbWUpIHtcbiAgICBmaWxlTG9jYXRpb24gKz0gZmlsZU5hbWVcblxuICAgIHZhciBsaW5lTnVtYmVyID0gY2FsbFNpdGUuZ2V0TGluZU51bWJlcigpXG4gICAgaWYgKGxpbmVOdW1iZXIgIT0gbnVsbCkge1xuICAgICAgZmlsZUxvY2F0aW9uICs9ICc6JyArIGxpbmVOdW1iZXJcblxuICAgICAgdmFyIGNvbHVtbk51bWJlciA9IGNhbGxTaXRlLmdldENvbHVtbk51bWJlcigpXG4gICAgICBpZiAoY29sdW1uTnVtYmVyKSB7XG4gICAgICAgIGZpbGVMb2NhdGlvbiArPSAnOicgKyBjb2x1bW5OdW1iZXJcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmlsZUxvY2F0aW9uIHx8ICd1bmtub3duIHNvdXJjZSdcbn1cblxuLyoqXG4gKiBGb3JtYXQgYSBDYWxsU2l0ZSB0byBhIHN0cmluZy5cbiAqL1xuXG5mdW5jdGlvbiBjYWxsU2l0ZVRvU3RyaW5nIChjYWxsU2l0ZSkge1xuICB2YXIgYWRkU3VmZml4ID0gdHJ1ZVxuICB2YXIgZmlsZUxvY2F0aW9uID0gY2FsbFNpdGVGaWxlTG9jYXRpb24oY2FsbFNpdGUpXG4gIHZhciBmdW5jdGlvbk5hbWUgPSBjYWxsU2l0ZS5nZXRGdW5jdGlvbk5hbWUoKVxuICB2YXIgaXNDb25zdHJ1Y3RvciA9IGNhbGxTaXRlLmlzQ29uc3RydWN0b3IoKVxuICB2YXIgaXNNZXRob2RDYWxsID0gIShjYWxsU2l0ZS5pc1RvcGxldmVsKCkgfHwgaXNDb25zdHJ1Y3RvcilcbiAgdmFyIGxpbmUgPSAnJ1xuXG4gIGlmIChpc01ldGhvZENhbGwpIHtcbiAgICB2YXIgbWV0aG9kTmFtZSA9IGNhbGxTaXRlLmdldE1ldGhvZE5hbWUoKVxuICAgIHZhciB0eXBlTmFtZSA9IGdldENvbnN0cnVjdG9yTmFtZShjYWxsU2l0ZSlcblxuICAgIGlmIChmdW5jdGlvbk5hbWUpIHtcbiAgICAgIGlmICh0eXBlTmFtZSAmJiBmdW5jdGlvbk5hbWUuaW5kZXhPZih0eXBlTmFtZSkgIT09IDApIHtcbiAgICAgICAgbGluZSArPSB0eXBlTmFtZSArICcuJ1xuICAgICAgfVxuXG4gICAgICBsaW5lICs9IGZ1bmN0aW9uTmFtZVxuXG4gICAgICBpZiAobWV0aG9kTmFtZSAmJiBmdW5jdGlvbk5hbWUubGFzdEluZGV4T2YoJy4nICsgbWV0aG9kTmFtZSkgIT09IGZ1bmN0aW9uTmFtZS5sZW5ndGggLSBtZXRob2ROYW1lLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgbGluZSArPSAnIFthcyAnICsgbWV0aG9kTmFtZSArICddJ1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsaW5lICs9IHR5cGVOYW1lICsgJy4nICsgKG1ldGhvZE5hbWUgfHwgJzxhbm9ueW1vdXM+JylcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNDb25zdHJ1Y3Rvcikge1xuICAgIGxpbmUgKz0gJ25ldyAnICsgKGZ1bmN0aW9uTmFtZSB8fCAnPGFub255bW91cz4nKVxuICB9IGVsc2UgaWYgKGZ1bmN0aW9uTmFtZSkge1xuICAgIGxpbmUgKz0gZnVuY3Rpb25OYW1lXG4gIH0gZWxzZSB7XG4gICAgYWRkU3VmZml4ID0gZmFsc2VcbiAgICBsaW5lICs9IGZpbGVMb2NhdGlvblxuICB9XG5cbiAgaWYgKGFkZFN1ZmZpeCkge1xuICAgIGxpbmUgKz0gJyAoJyArIGZpbGVMb2NhdGlvbiArICcpJ1xuICB9XG5cbiAgcmV0dXJuIGxpbmVcbn1cblxuLyoqXG4gKiBHZXQgY29uc3RydWN0b3IgbmFtZSBvZiByZXZpdmVyLlxuICovXG5cbmZ1bmN0aW9uIGdldENvbnN0cnVjdG9yTmFtZSAob2JqKSB7XG4gIHZhciByZWNlaXZlciA9IG9iai5yZWNlaXZlclxuICByZXR1cm4gKHJlY2VpdmVyLmNvbnN0cnVjdG9yICYmIHJlY2VpdmVyLmNvbnN0cnVjdG9yLm5hbWUpIHx8IG51bGxcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9yYXctYm9keS9ub2RlX21vZHVsZXMvZGVwZC9saWIvY29tcGF0L2NhbGxzaXRlLXRvc3RyaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAxMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBkZXBkXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBldmVudExpc3RlbmVyQ291bnRcblxuLyoqXG4gKiBHZXQgdGhlIGNvdW50IG9mIGxpc3RlbmVycyBvbiBhbiBldmVudCBlbWl0dGVyIG9mIGEgc3BlY2lmaWMgdHlwZS5cbiAqL1xuXG5mdW5jdGlvbiBldmVudExpc3RlbmVyQ291bnQgKGVtaXR0ZXIsIHR5cGUpIHtcbiAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJzKHR5cGUpLmxlbmd0aFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3Jhdy1ib2R5L25vZGVfbW9kdWxlcy9kZXBkL2xpYi9jb21wYXQvZXZlbnQtbGlzdGVuZXItY291bnQuanNcbi8vIG1vZHVsZSBpZCA9IDEzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoe19fcHJvdG9fXzpbXX0gaW5zdGFuY2VvZiBBcnJheSA/IHNldFByb3RvT2YgOiBtaXhpblByb3BlcnRpZXMpO1xuXG5mdW5jdGlvbiBzZXRQcm90b09mKG9iaiwgcHJvdG8pIHtcblx0b2JqLl9fcHJvdG9fXyA9IHByb3RvO1xuXHRyZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBtaXhpblByb3BlcnRpZXMob2JqLCBwcm90bykge1xuXHRmb3IgKHZhciBwcm9wIGluIHByb3RvKSB7XG5cdFx0aWYgKCFvYmouaGFzT3duUHJvcGVydHkocHJvcCkpIHtcblx0XHRcdG9ialtwcm9wXSA9IHByb3RvW3Byb3BdO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3Jhdy1ib2R5L25vZGVfbW9kdWxlcy9zZXRwcm90b3R5cGVvZi9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTMzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgQk9NQ2hhciA9ICdcXHVGRUZGJztcblxuZXhwb3J0cy5QcmVwZW5kQk9NID0gUHJlcGVuZEJPTVdyYXBwZXJcbmZ1bmN0aW9uIFByZXBlbmRCT01XcmFwcGVyKGVuY29kZXIsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmVuY29kZXIgPSBlbmNvZGVyO1xuICAgIHRoaXMuYWRkQk9NID0gdHJ1ZTtcbn1cblxuUHJlcGVuZEJPTVdyYXBwZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgaWYgKHRoaXMuYWRkQk9NKSB7XG4gICAgICAgIHN0ciA9IEJPTUNoYXIgKyBzdHI7XG4gICAgICAgIHRoaXMuYWRkQk9NID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZW5jb2Rlci53cml0ZShzdHIpO1xufVxuXG5QcmVwZW5kQk9NV3JhcHBlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5jb2Rlci5lbmQoKTtcbn1cblxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnRzLlN0cmlwQk9NID0gU3RyaXBCT01XcmFwcGVyO1xuZnVuY3Rpb24gU3RyaXBCT01XcmFwcGVyKGRlY29kZXIsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmRlY29kZXIgPSBkZWNvZGVyO1xuICAgIHRoaXMucGFzcyA9IGZhbHNlO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG59XG5cblN0cmlwQk9NV3JhcHBlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHtcbiAgICB2YXIgcmVzID0gdGhpcy5kZWNvZGVyLndyaXRlKGJ1Zik7XG4gICAgaWYgKHRoaXMucGFzcyB8fCAhcmVzKVxuICAgICAgICByZXR1cm4gcmVzO1xuXG4gICAgaWYgKHJlc1swXSA9PT0gQk9NQ2hhcikge1xuICAgICAgICByZXMgPSByZXMuc2xpY2UoMSk7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnN0cmlwQk9NID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0cmlwQk9NKCk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXNzID0gdHJ1ZTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5TdHJpcEJPTVdyYXBwZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlY29kZXIuZW5kKCk7XG59XG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2xpYi9ib20taGFuZGxpbmcuanNcbi8vIG1vZHVsZSBpZCA9IDEzNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcblxuLy8gVXBkYXRlIHRoaXMgYXJyYXkgaWYgeW91IGFkZC9yZW5hbWUvcmVtb3ZlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LlxuLy8gV2Ugc3VwcG9ydCBCcm93c2VyaWZ5IGJ5IHNraXBwaW5nIGF1dG9tYXRpYyBtb2R1bGUgZGlzY292ZXJ5IGFuZCByZXF1aXJpbmcgbW9kdWxlcyBkaXJlY3RseS5cbnZhciBtb2R1bGVzID0gW1xuICAgIHJlcXVpcmUoXCIuL2ludGVybmFsXCIpLFxuICAgIHJlcXVpcmUoXCIuL3V0ZjE2XCIpLFxuICAgIHJlcXVpcmUoXCIuL3V0ZjdcIiksXG4gICAgcmVxdWlyZShcIi4vc2Jjcy1jb2RlY1wiKSxcbiAgICByZXF1aXJlKFwiLi9zYmNzLWRhdGFcIiksXG4gICAgcmVxdWlyZShcIi4vc2Jjcy1kYXRhLWdlbmVyYXRlZFwiKSxcbiAgICByZXF1aXJlKFwiLi9kYmNzLWNvZGVjXCIpLFxuICAgIHJlcXVpcmUoXCIuL2RiY3MtZGF0YVwiKSxcbl07XG5cbi8vIFB1dCBhbGwgZW5jb2RpbmcvYWxpYXMvY29kZWMgZGVmaW5pdGlvbnMgdG8gc2luZ2xlIG9iamVjdCBhbmQgZXhwb3J0IGl0LiBcbmZvciAodmFyIGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtb2R1bGUgPSBtb2R1bGVzW2ldO1xuICAgIGZvciAodmFyIGVuYyBpbiBtb2R1bGUpXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kdWxlLCBlbmMpKVxuICAgICAgICAgICAgZXhwb3J0c1tlbmNdID0gbW9kdWxlW2VuY107XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDEzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBCdWZmZXIgPSByZXF1aXJlKFwiYnVmZmVyXCIpLkJ1ZmZlcjtcblxuLy8gRXhwb3J0IE5vZGUuanMgaW50ZXJuYWwgZW5jb2RpbmdzLlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICAvLyBFbmNvZGluZ3NcbiAgICB1dGY4OiAgIHsgdHlwZTogXCJfaW50ZXJuYWxcIiwgYm9tQXdhcmU6IHRydWV9LFxuICAgIGNlc3U4OiAgeyB0eXBlOiBcIl9pbnRlcm5hbFwiLCBib21Bd2FyZTogdHJ1ZX0sXG4gICAgdW5pY29kZTExdXRmODogXCJ1dGY4XCIsXG5cbiAgICB1Y3MyOiAgIHsgdHlwZTogXCJfaW50ZXJuYWxcIiwgYm9tQXdhcmU6IHRydWV9LFxuICAgIHV0ZjE2bGU6IFwidWNzMlwiLFxuXG4gICAgYmluYXJ5OiB7IHR5cGU6IFwiX2ludGVybmFsXCIgfSxcbiAgICBiYXNlNjQ6IHsgdHlwZTogXCJfaW50ZXJuYWxcIiB9LFxuICAgIGhleDogICAgeyB0eXBlOiBcIl9pbnRlcm5hbFwiIH0sXG5cbiAgICAvLyBDb2RlYy5cbiAgICBfaW50ZXJuYWw6IEludGVybmFsQ29kZWMsXG59O1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBJbnRlcm5hbENvZGVjKGNvZGVjT3B0aW9ucywgaWNvbnYpIHtcbiAgICB0aGlzLmVuYyA9IGNvZGVjT3B0aW9ucy5lbmNvZGluZ05hbWU7XG4gICAgdGhpcy5ib21Bd2FyZSA9IGNvZGVjT3B0aW9ucy5ib21Bd2FyZTtcblxuICAgIGlmICh0aGlzLmVuYyA9PT0gXCJiYXNlNjRcIilcbiAgICAgICAgdGhpcy5lbmNvZGVyID0gSW50ZXJuYWxFbmNvZGVyQmFzZTY0O1xuICAgIGVsc2UgaWYgKHRoaXMuZW5jID09PSBcImNlc3U4XCIpIHtcbiAgICAgICAgdGhpcy5lbmMgPSBcInV0ZjhcIjsgLy8gVXNlIHV0ZjggZm9yIGRlY29kaW5nLlxuICAgICAgICB0aGlzLmVuY29kZXIgPSBJbnRlcm5hbEVuY29kZXJDZXN1ODtcblxuICAgICAgICAvLyBBZGQgZGVjb2RlciBmb3IgdmVyc2lvbnMgb2YgTm9kZSBub3Qgc3VwcG9ydGluZyBDRVNVLThcbiAgICAgICAgaWYgKG5ldyBCdWZmZXIoJ2VkYTBiZGVkYjJhOScsICdoZXgnKS50b1N0cmluZygpICE9PSAn8J+SqScpIHtcbiAgICAgICAgICAgIHRoaXMuZGVjb2RlciA9IEludGVybmFsRGVjb2RlckNlc3U4O1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUgPSBpY29udi5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkludGVybmFsQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBJbnRlcm5hbEVuY29kZXI7XG5JbnRlcm5hbENvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gSW50ZXJuYWxEZWNvZGVyO1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBXZSB1c2Ugbm9kZS5qcyBpbnRlcm5hbCBkZWNvZGVyLiBJdHMgc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzIG91cnMuXG52YXIgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlcjtcblxuaWYgKCFTdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5lbmQpIC8vIE5vZGUgdjAuOCBkb2Vzbid0IGhhdmUgdGhpcyBtZXRob2QuXG4gICAgU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7fTtcblxuXG5mdW5jdGlvbiBJbnRlcm5hbERlY29kZXIob3B0aW9ucywgY29kZWMpIHtcbiAgICBTdHJpbmdEZWNvZGVyLmNhbGwodGhpcywgY29kZWMuZW5jKTtcbn1cblxuSW50ZXJuYWxEZWNvZGVyLnByb3RvdHlwZSA9IFN0cmluZ0RlY29kZXIucHJvdG90eXBlO1xuXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFbmNvZGVyIGlzIG1vc3RseSB0cml2aWFsXG5cbmZ1bmN0aW9uIEludGVybmFsRW5jb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuZW5jID0gY29kZWMuZW5jO1xufVxuXG5JbnRlcm5hbEVuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIoc3RyLCB0aGlzLmVuYyk7XG59XG5cbkludGVybmFsRW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG59XG5cblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEV4Y2VwdCBiYXNlNjQgZW5jb2Rlciwgd2hpY2ggbXVzdCBrZWVwIGl0cyBzdGF0ZS5cblxuZnVuY3Rpb24gSW50ZXJuYWxFbmNvZGVyQmFzZTY0KG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5wcmV2U3RyID0gJyc7XG59XG5cbkludGVybmFsRW5jb2RlckJhc2U2NC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICBzdHIgPSB0aGlzLnByZXZTdHIgKyBzdHI7XG4gICAgdmFyIGNvbXBsZXRlUXVhZHMgPSBzdHIubGVuZ3RoIC0gKHN0ci5sZW5ndGggJSA0KTtcbiAgICB0aGlzLnByZXZTdHIgPSBzdHIuc2xpY2UoY29tcGxldGVRdWFkcyk7XG4gICAgc3RyID0gc3RyLnNsaWNlKDAsIGNvbXBsZXRlUXVhZHMpO1xuXG4gICAgcmV0dXJuIG5ldyBCdWZmZXIoc3RyLCBcImJhc2U2NFwiKTtcbn1cblxuSW50ZXJuYWxFbmNvZGVyQmFzZTY0LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IEJ1ZmZlcih0aGlzLnByZXZTdHIsIFwiYmFzZTY0XCIpO1xufVxuXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDRVNVLTggZW5jb2RlciBpcyBhbHNvIHNwZWNpYWwuXG5cbmZ1bmN0aW9uIEludGVybmFsRW5jb2RlckNlc3U4KG9wdGlvbnMsIGNvZGVjKSB7XG59XG5cbkludGVybmFsRW5jb2RlckNlc3U4LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGggKiAzKSwgYnVmSWR4ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hhckNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgLy8gTmFpdmUgaW1wbGVtZW50YXRpb24sIGJ1dCBpdCB3b3JrcyBiZWNhdXNlIENFU1UtOCBpcyBlc3BlY2lhbGx5IGVhc3lcbiAgICAgICAgLy8gdG8gY29udmVydCBmcm9tIFVURi0xNiAod2hpY2ggYWxsIEpTIHN0cmluZ3MgYXJlIGVuY29kZWQgaW4pLlxuICAgICAgICBpZiAoY2hhckNvZGUgPCAweDgwKVxuICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IGNoYXJDb2RlO1xuICAgICAgICBlbHNlIGlmIChjaGFyQ29kZSA8IDB4ODAwKSB7XG4gICAgICAgICAgICBidWZbYnVmSWR4KytdID0gMHhDMCArIChjaGFyQ29kZSA+Pj4gNik7XG4gICAgICAgICAgICBidWZbYnVmSWR4KytdID0gMHg4MCArIChjaGFyQ29kZSAmIDB4M2YpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgeyAvLyBjaGFyQ29kZSB3aWxsIGFsd2F5cyBiZSA8IDB4MTAwMDAgaW4gamF2YXNjcmlwdC5cbiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSAweEUwICsgKGNoYXJDb2RlID4+PiAxMik7XG4gICAgICAgICAgICBidWZbYnVmSWR4KytdID0gMHg4MCArICgoY2hhckNvZGUgPj4+IDYpICYgMHgzZik7XG4gICAgICAgICAgICBidWZbYnVmSWR4KytdID0gMHg4MCArIChjaGFyQ29kZSAmIDB4M2YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBidWYuc2xpY2UoMCwgYnVmSWR4KTtcbn1cblxuSW50ZXJuYWxFbmNvZGVyQ2VzdTgucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xufVxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ0VTVS04IGRlY29kZXIgaXMgbm90IGltcGxlbWVudGVkIGluIE5vZGUgdjQuMCtcblxuZnVuY3Rpb24gSW50ZXJuYWxEZWNvZGVyQ2VzdTgob3B0aW9ucywgY29kZWMpIHtcbiAgICB0aGlzLmFjYyA9IDA7XG4gICAgdGhpcy5jb250Qnl0ZXMgPSAwO1xuICAgIHRoaXMuYWNjQnl0ZXMgPSAwO1xuICAgIHRoaXMuZGVmYXVsdENoYXJVbmljb2RlID0gY29kZWMuZGVmYXVsdENoYXJVbmljb2RlO1xufVxuXG5JbnRlcm5hbERlY29kZXJDZXN1OC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHtcbiAgICB2YXIgYWNjID0gdGhpcy5hY2MsIGNvbnRCeXRlcyA9IHRoaXMuY29udEJ5dGVzLCBhY2NCeXRlcyA9IHRoaXMuYWNjQnl0ZXMsIFxuICAgICAgICByZXMgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY3VyQnl0ZSA9IGJ1ZltpXTtcbiAgICAgICAgaWYgKChjdXJCeXRlICYgMHhDMCkgIT09IDB4ODApIHsgLy8gTGVhZGluZyBieXRlXG4gICAgICAgICAgICBpZiAoY29udEJ5dGVzID4gMCkgeyAvLyBQcmV2aW91cyBjb2RlIGlzIGludmFsaWRcbiAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgICAgICAgICAgICAgY29udEJ5dGVzID0gMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGN1ckJ5dGUgPCAweDgwKSB7IC8vIFNpbmdsZS1ieXRlIGNvZGVcbiAgICAgICAgICAgICAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjdXJCeXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VyQnl0ZSA8IDB4RTApIHsgLy8gVHdvLWJ5dGUgY29kZVxuICAgICAgICAgICAgICAgIGFjYyA9IGN1ckJ5dGUgJiAweDFGO1xuICAgICAgICAgICAgICAgIGNvbnRCeXRlcyA9IDE7IGFjY0J5dGVzID0gMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VyQnl0ZSA8IDB4RjApIHsgLy8gVGhyZWUtYnl0ZSBjb2RlXG4gICAgICAgICAgICAgICAgYWNjID0gY3VyQnl0ZSAmIDB4MEY7XG4gICAgICAgICAgICAgICAgY29udEJ5dGVzID0gMjsgYWNjQnl0ZXMgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHsgLy8gRm91ciBvciBtb3JlIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBDRVNVLTguXG4gICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgeyAvLyBDb250aW51YXRpb24gYnl0ZVxuICAgICAgICAgICAgaWYgKGNvbnRCeXRlcyA+IDApIHsgLy8gV2UncmUgd2FpdGluZyBmb3IgaXQuXG4gICAgICAgICAgICAgICAgYWNjID0gKGFjYyA8PCA2KSB8IChjdXJCeXRlICYgMHgzZik7XG4gICAgICAgICAgICAgICAgY29udEJ5dGVzLS07IGFjY0J5dGVzKys7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRCeXRlcyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3Igb3ZlcmxvbmcgZW5jb2RpbmcsIGJ1dCBzdXBwb3J0IE1vZGlmaWVkIFVURi04IChlbmNvZGluZyBOVUxMIGFzIEMwIDgwKVxuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjQnl0ZXMgPT09IDIgJiYgYWNjIDwgMHg4MCAmJiBhY2MgPiAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY2NCeXRlcyA9PT0gMyAmJiBhY2MgPCAweDgwMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWN0dWFsbHkgYWRkIGNoYXJhY3Rlci5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGFjYyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHsgLy8gVW5leHBlY3RlZCBjb250aW51YXRpb24gYnl0ZVxuICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmFjYyA9IGFjYzsgdGhpcy5jb250Qnl0ZXMgPSBjb250Qnl0ZXM7IHRoaXMuYWNjQnl0ZXMgPSBhY2NCeXRlcztcbiAgICByZXR1cm4gcmVzO1xufVxuXG5JbnRlcm5hbERlY29kZXJDZXN1OC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlcyA9IDA7XG4gICAgaWYgKHRoaXMuY29udEJ5dGVzID4gMClcbiAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlO1xuICAgIHJldHVybiByZXM7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvaW50ZXJuYWwuanNcbi8vIG1vZHVsZSBpZCA9IDEzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcbnZhciBCdWZmZXIgPSByZXF1aXJlKFwiYnVmZmVyXCIpLkJ1ZmZlcjtcblxuLy8gTm90ZTogVVRGMTYtTEUgKG9yIFVDUzIpIGNvZGVjIGlzIE5vZGUuanMgbmF0aXZlLiBTZWUgZW5jb2RpbmdzL2ludGVybmFsLmpzXG5cbi8vID09IFVURjE2LUJFIGNvZGVjLiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydHMudXRmMTZiZSA9IFV0ZjE2QkVDb2RlYztcbmZ1bmN0aW9uIFV0ZjE2QkVDb2RlYygpIHtcbn1cblxuVXRmMTZCRUNvZGVjLnByb3RvdHlwZS5lbmNvZGVyID0gVXRmMTZCRUVuY29kZXI7XG5VdGYxNkJFQ29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBVdGYxNkJFRGVjb2RlcjtcblV0ZjE2QkVDb2RlYy5wcm90b3R5cGUuYm9tQXdhcmUgPSB0cnVlO1xuXG5cbi8vIC0tIEVuY29kaW5nXG5cbmZ1bmN0aW9uIFV0ZjE2QkVFbmNvZGVyKCkge1xufVxuXG5VdGYxNkJFRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzdHIsICd1Y3MyJyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdmFyIHRtcCA9IGJ1ZltpXTsgYnVmW2ldID0gYnVmW2krMV07IGJ1ZltpKzFdID0gdG1wO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufVxuXG5VdGYxNkJFRW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG59XG5cblxuLy8gLS0gRGVjb2RpbmdcblxuZnVuY3Rpb24gVXRmMTZCRURlY29kZXIoKSB7XG4gICAgdGhpcy5vdmVyZmxvd0J5dGUgPSAtMTtcbn1cblxuVXRmMTZCRURlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7XG4gICAgaWYgKGJ1Zi5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuICcnO1xuXG4gICAgdmFyIGJ1ZjIgPSBuZXcgQnVmZmVyKGJ1Zi5sZW5ndGggKyAxKSxcbiAgICAgICAgaSA9IDAsIGogPSAwO1xuXG4gICAgaWYgKHRoaXMub3ZlcmZsb3dCeXRlICE9PSAtMSkge1xuICAgICAgICBidWYyWzBdID0gYnVmWzBdO1xuICAgICAgICBidWYyWzFdID0gdGhpcy5vdmVyZmxvd0J5dGU7XG4gICAgICAgIGkgPSAxOyBqID0gMjtcbiAgICB9XG5cbiAgICBmb3IgKDsgaSA8IGJ1Zi5sZW5ndGgtMTsgaSArPSAyLCBqKz0gMikge1xuICAgICAgICBidWYyW2pdID0gYnVmW2krMV07XG4gICAgICAgIGJ1ZjJbaisxXSA9IGJ1ZltpXTtcbiAgICB9XG5cbiAgICB0aGlzLm92ZXJmbG93Qnl0ZSA9IChpID09IGJ1Zi5sZW5ndGgtMSkgPyBidWZbYnVmLmxlbmd0aC0xXSA6IC0xO1xuXG4gICAgcmV0dXJuIGJ1ZjIuc2xpY2UoMCwgaikudG9TdHJpbmcoJ3VjczInKTtcbn1cblxuVXRmMTZCRURlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xufVxuXG5cbi8vID09IFVURi0xNiBjb2RlYyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNvZGVyIGNob29zZXMgYXV0b21hdGljYWxseSBmcm9tIFVURi0xNkxFIGFuZCBVVEYtMTZCRSB1c2luZyBCT00gYW5kIHNwYWNlLWJhc2VkIGhldXJpc3RpYy5cbi8vIERlZmF1bHRzIHRvIFVURi0xNkxFLCBhcyBpdCdzIHByZXZhbGVudCBhbmQgZGVmYXVsdCBpbiBOb2RlLlxuLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtMTYgYW5kIGh0dHA6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI3V0Zi0xNmxlXG4vLyBEZWNvZGVyIGRlZmF1bHQgY2FuIGJlIGNoYW5nZWQ6IGljb252LmRlY29kZShidWYsICd1dGYxNicsIHtkZWZhdWx0RW5jb2Rpbmc6ICd1dGYtMTZiZSd9KTtcblxuLy8gRW5jb2RlciB1c2VzIFVURi0xNkxFIGFuZCBwcmVwZW5kcyBCT00gKHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggYWRkQk9NOiBmYWxzZSkuXG5cbmV4cG9ydHMudXRmMTYgPSBVdGYxNkNvZGVjO1xuZnVuY3Rpb24gVXRmMTZDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7XG4gICAgdGhpcy5pY29udiA9IGljb252O1xufVxuXG5VdGYxNkNvZGVjLnByb3RvdHlwZS5lbmNvZGVyID0gVXRmMTZFbmNvZGVyO1xuVXRmMTZDb2RlYy5wcm90b3R5cGUuZGVjb2RlciA9IFV0ZjE2RGVjb2RlcjtcblxuXG4vLyAtLSBFbmNvZGluZyAocGFzcy10aHJvdWdoKVxuXG5mdW5jdGlvbiBVdGYxNkVuY29kZXIob3B0aW9ucywgY29kZWMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBpZiAob3B0aW9ucy5hZGRCT00gPT09IHVuZGVmaW5lZClcbiAgICAgICAgb3B0aW9ucy5hZGRCT00gPSB0cnVlO1xuICAgIHRoaXMuZW5jb2RlciA9IGNvZGVjLmljb252LmdldEVuY29kZXIoJ3V0Zi0xNmxlJywgb3B0aW9ucyk7XG59XG5cblV0ZjE2RW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGVyLndyaXRlKHN0cik7XG59XG5cblV0ZjE2RW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5jb2Rlci5lbmQoKTtcbn1cblxuXG4vLyAtLSBEZWNvZGluZ1xuXG5mdW5jdGlvbiBVdGYxNkRlY29kZXIob3B0aW9ucywgY29kZWMpIHtcbiAgICB0aGlzLmRlY29kZXIgPSBudWxsO1xuICAgIHRoaXMuaW5pdGlhbEJ5dGVzID0gW107XG4gICAgdGhpcy5pbml0aWFsQnl0ZXNMZW4gPSAwO1xuXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB0aGlzLmljb252ID0gY29kZWMuaWNvbnY7XG59XG5cblV0ZjE2RGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHtcbiAgICBpZiAoIXRoaXMuZGVjb2Rlcikge1xuICAgICAgICAvLyBDb2RlYyBpcyBub3QgY2hvc2VuIHlldC4gQWNjdW11bGF0ZSBpbml0aWFsIGJ5dGVzLlxuICAgICAgICB0aGlzLmluaXRpYWxCeXRlcy5wdXNoKGJ1Zik7XG4gICAgICAgIHRoaXMuaW5pdGlhbEJ5dGVzTGVuICs9IGJ1Zi5sZW5ndGg7XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5pbml0aWFsQnl0ZXNMZW4gPCAxNikgLy8gV2UgbmVlZCBtb3JlIGJ5dGVzIHRvIHVzZSBzcGFjZSBoZXVyaXN0aWMgKHNlZSBiZWxvdylcbiAgICAgICAgICAgIHJldHVybiAnJztcblxuICAgICAgICAvLyBXZSBoYXZlIGVub3VnaCBieXRlcyAtPiBkZXRlY3QgZW5kaWFubmVzcy5cbiAgICAgICAgdmFyIGJ1ZiA9IEJ1ZmZlci5jb25jYXQodGhpcy5pbml0aWFsQnl0ZXMpLFxuICAgICAgICAgICAgZW5jb2RpbmcgPSBkZXRlY3RFbmNvZGluZyhidWYsIHRoaXMub3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcpO1xuICAgICAgICB0aGlzLmRlY29kZXIgPSB0aGlzLmljb252LmdldERlY29kZXIoZW5jb2RpbmcsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHRoaXMuaW5pdGlhbEJ5dGVzLmxlbmd0aCA9IHRoaXMuaW5pdGlhbEJ5dGVzTGVuID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kZWNvZGVyLndyaXRlKGJ1Zik7XG59XG5cblV0ZjE2RGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLmRlY29kZXIpIHtcbiAgICAgICAgdmFyIGJ1ZiA9IEJ1ZmZlci5jb25jYXQodGhpcy5pbml0aWFsQnl0ZXMpLFxuICAgICAgICAgICAgZW5jb2RpbmcgPSBkZXRlY3RFbmNvZGluZyhidWYsIHRoaXMub3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcpO1xuICAgICAgICB0aGlzLmRlY29kZXIgPSB0aGlzLmljb252LmdldERlY29kZXIoZW5jb2RpbmcsIHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuZGVjb2Rlci53cml0ZShidWYpLFxuICAgICAgICAgICAgdHJhaWwgPSB0aGlzLmRlY29kZXIuZW5kKCk7XG5cbiAgICAgICAgcmV0dXJuIHRyYWlsID8gKHJlcyArIHRyYWlsKSA6IHJlcztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGVjb2Rlci5lbmQoKTtcbn1cblxuZnVuY3Rpb24gZGV0ZWN0RW5jb2RpbmcoYnVmLCBkZWZhdWx0RW5jb2RpbmcpIHtcbiAgICB2YXIgZW5jID0gZGVmYXVsdEVuY29kaW5nIHx8ICd1dGYtMTZsZSc7XG5cbiAgICBpZiAoYnVmLmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIC8vIENoZWNrIEJPTS5cbiAgICAgICAgaWYgKGJ1ZlswXSA9PSAweEZFICYmIGJ1ZlsxXSA9PSAweEZGKSAvLyBVVEYtMTZCRSBCT01cbiAgICAgICAgICAgIGVuYyA9ICd1dGYtMTZiZSc7XG4gICAgICAgIGVsc2UgaWYgKGJ1ZlswXSA9PSAweEZGICYmIGJ1ZlsxXSA9PSAweEZFKSAvLyBVVEYtMTZMRSBCT01cbiAgICAgICAgICAgIGVuYyA9ICd1dGYtMTZsZSc7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gTm8gQk9NIGZvdW5kLiBUcnkgdG8gZGVkdWNlIGVuY29kaW5nIGZyb20gaW5pdGlhbCBjb250ZW50LlxuICAgICAgICAgICAgLy8gTW9zdCBvZiB0aGUgdGltZSwgdGhlIGNvbnRlbnQgaGFzIEFTQ0lJIGNoYXJzIChVKzAwKiopLCBidXQgdGhlIG9wcG9zaXRlIChVKyoqMDApIGlzIHVuY29tbW9uLlxuICAgICAgICAgICAgLy8gU28sIHdlIGNvdW50IEFTQ0lJIGFzIGlmIGl0IHdhcyBMRSBvciBCRSwgYW5kIGRlY2lkZSBmcm9tIHRoYXQuXG4gICAgICAgICAgICB2YXIgYXNjaWlDaGFyc0xFID0gMCwgYXNjaWlDaGFyc0JFID0gMCwgLy8gQ291bnRzIG9mIGNoYXJzIGluIGJvdGggcG9zaXRpb25zXG4gICAgICAgICAgICAgICAgX2xlbiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSAoYnVmLmxlbmd0aCAlIDIpLCA2NCk7IC8vIExlbiBpcyBhbHdheXMgZXZlbi5cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfbGVuOyBpICs9IDIpIHtcbiAgICAgICAgICAgICAgICBpZiAoYnVmW2ldID09PSAwICYmIGJ1ZltpKzFdICE9PSAwKSBhc2NpaUNoYXJzQkUrKztcbiAgICAgICAgICAgICAgICBpZiAoYnVmW2ldICE9PSAwICYmIGJ1ZltpKzFdID09PSAwKSBhc2NpaUNoYXJzTEUrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGFzY2lpQ2hhcnNCRSA+IGFzY2lpQ2hhcnNMRSlcbiAgICAgICAgICAgICAgICBlbmMgPSAndXRmLTE2YmUnO1xuICAgICAgICAgICAgZWxzZSBpZiAoYXNjaWlDaGFyc0JFIDwgYXNjaWlDaGFyc0xFKVxuICAgICAgICAgICAgICAgIGVuYyA9ICd1dGYtMTZsZSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZW5jO1xufVxuXG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy91dGYxNi5qc1xuLy8gbW9kdWxlIGlkID0gMTM3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlwidXNlIHN0cmljdFwiO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoXCJidWZmZXJcIikuQnVmZmVyO1xuXG4vLyBVVEYtNyBjb2RlYywgYWNjb3JkaW5nIHRvIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMTUyXG4vLyBTZWUgYWxzbyBiZWxvdyBhIFVURi03LUlNQVAgY29kZWMsIGFjY29yZGluZyB0byBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNTAxI3NlY3Rpb24tNS4xLjNcblxuZXhwb3J0cy51dGY3ID0gVXRmN0NvZGVjO1xuZXhwb3J0cy51bmljb2RlMTF1dGY3ID0gJ3V0ZjcnOyAvLyBBbGlhcyBVTklDT0RFLTEtMS1VVEYtN1xuZnVuY3Rpb24gVXRmN0NvZGVjKGNvZGVjT3B0aW9ucywgaWNvbnYpIHtcbiAgICB0aGlzLmljb252ID0gaWNvbnY7XG59O1xuXG5VdGY3Q29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBVdGY3RW5jb2RlcjtcblV0ZjdDb2RlYy5wcm90b3R5cGUuZGVjb2RlciA9IFV0ZjdEZWNvZGVyO1xuVXRmN0NvZGVjLnByb3RvdHlwZS5ib21Bd2FyZSA9IHRydWU7XG5cblxuLy8gLS0gRW5jb2RpbmdcblxudmFyIG5vbkRpcmVjdENoYXJzID0gL1teQS1aYS16MC05J1xcKFxcKSwtXFwuXFwvOlxcPyBcXG5cXHJcXHRdKy9nO1xuXG5mdW5jdGlvbiBVdGY3RW5jb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjtcbn1cblxuVXRmN0VuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgLy8gTmFpdmUgaW1wbGVtZW50YXRpb24uXG4gICAgLy8gTm9uLWRpcmVjdCBjaGFycyBhcmUgZW5jb2RlZCBhcyBcIis8YmFzZTY0Pi1cIjsgc2luZ2xlIFwiK1wiIGNoYXIgaXMgZW5jb2RlZCBhcyBcIistXCIuXG4gICAgcmV0dXJuIG5ldyBCdWZmZXIoc3RyLnJlcGxhY2Uobm9uRGlyZWN0Q2hhcnMsIGZ1bmN0aW9uKGNodW5rKSB7XG4gICAgICAgIHJldHVybiBcIitcIiArIChjaHVuayA9PT0gJysnID8gJycgOiBcbiAgICAgICAgICAgIHRoaXMuaWNvbnYuZW5jb2RlKGNodW5rLCAndXRmMTYtYmUnKS50b1N0cmluZygnYmFzZTY0JykucmVwbGFjZSgvPSskLywgJycpKSBcbiAgICAgICAgICAgICsgXCItXCI7XG4gICAgfS5iaW5kKHRoaXMpKSk7XG59XG5cblV0ZjdFbmNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbn1cblxuXG4vLyAtLSBEZWNvZGluZ1xuXG5mdW5jdGlvbiBVdGY3RGVjb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjtcbiAgICB0aGlzLmluQmFzZTY0ID0gZmFsc2U7XG4gICAgdGhpcy5iYXNlNjRBY2N1bSA9ICcnO1xufVxuXG52YXIgYmFzZTY0UmVnZXggPSAvW0EtWmEtejAtOVxcLytdLztcbnZhciBiYXNlNjRDaGFycyA9IFtdO1xuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKylcbiAgICBiYXNlNjRDaGFyc1tpXSA9IGJhc2U2NFJlZ2V4LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShpKSk7XG5cbnZhciBwbHVzQ2hhciA9ICcrJy5jaGFyQ29kZUF0KDApLCBcbiAgICBtaW51c0NoYXIgPSAnLScuY2hhckNvZGVBdCgwKSxcbiAgICBhbmRDaGFyID0gJyYnLmNoYXJDb2RlQXQoMCk7XG5cblV0ZjdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1Zikge1xuICAgIHZhciByZXMgPSBcIlwiLCBsYXN0SSA9IDAsXG4gICAgICAgIGluQmFzZTY0ID0gdGhpcy5pbkJhc2U2NCxcbiAgICAgICAgYmFzZTY0QWNjdW0gPSB0aGlzLmJhc2U2NEFjY3VtO1xuXG4gICAgLy8gVGhlIGRlY29kZXIgaXMgbW9yZSBpbnZvbHZlZCBhcyB3ZSBtdXN0IGhhbmRsZSBjaHVua3MgaW4gc3RyZWFtLlxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFpbkJhc2U2NCkgeyAvLyBXZSdyZSBpbiBkaXJlY3QgbW9kZS5cbiAgICAgICAgICAgIC8vIFdyaXRlIGRpcmVjdCBjaGFycyB1bnRpbCAnKydcbiAgICAgICAgICAgIGlmIChidWZbaV0gPT0gcGx1c0NoYXIpIHtcbiAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJLCBpKSwgXCJhc2NpaVwiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLlxuICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxO1xuICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgLy8gV2UgZGVjb2RlIGJhc2U2NC5cbiAgICAgICAgICAgIGlmICghYmFzZTY0Q2hhcnNbYnVmW2ldXSkgeyAvLyBCYXNlNjQgZW5kZWQuXG4gICAgICAgICAgICAgICAgaWYgKGkgPT0gbGFzdEkgJiYgYnVmW2ldID09IG1pbnVzQ2hhcikgey8vIFwiKy1cIiAtPiBcIitcIlxuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCIrXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJLCBpKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUobmV3IEJ1ZmZlcihiNjRzdHIsICdiYXNlNjQnKSwgXCJ1dGYxNi1iZVwiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoYnVmW2ldICE9IG1pbnVzQ2hhcikgLy8gTWludXMgaXMgYWJzb3JiZWQgYWZ0ZXIgYmFzZTY0LlxuICAgICAgICAgICAgICAgICAgICBpLS07XG5cbiAgICAgICAgICAgICAgICBsYXN0SSA9IGkrMTtcbiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIWluQmFzZTY0KSB7XG4gICAgICAgIHJlcyArPSB0aGlzLmljb252LmRlY29kZShidWYuc2xpY2UobGFzdEkpLCBcImFzY2lpXCIpOyAvLyBXcml0ZSBkaXJlY3QgY2hhcnMuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJKS50b1N0cmluZygpO1xuXG4gICAgICAgIHZhciBjYW5CZURlY29kZWQgPSBiNjRzdHIubGVuZ3RoIC0gKGI2NHN0ci5sZW5ndGggJSA4KTsgLy8gTWluaW1hbCBjaHVuazogMiBxdWFkcyAtPiAyeDMgYnl0ZXMgLT4gMyBjaGFycy5cbiAgICAgICAgYmFzZTY0QWNjdW0gPSBiNjRzdHIuc2xpY2UoY2FuQmVEZWNvZGVkKTsgLy8gVGhlIHJlc3Qgd2lsbCBiZSBkZWNvZGVkIGluIGZ1dHVyZS5cbiAgICAgICAgYjY0c3RyID0gYjY0c3RyLnNsaWNlKDAsIGNhbkJlRGVjb2RlZCk7XG5cbiAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIoYjY0c3RyLCAnYmFzZTY0JyksIFwidXRmMTYtYmVcIik7XG4gICAgfVxuXG4gICAgdGhpcy5pbkJhc2U2NCA9IGluQmFzZTY0O1xuICAgIHRoaXMuYmFzZTY0QWNjdW0gPSBiYXNlNjRBY2N1bTtcblxuICAgIHJldHVybiByZXM7XG59XG5cblV0ZjdEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVzID0gXCJcIjtcbiAgICBpZiAodGhpcy5pbkJhc2U2NCAmJiB0aGlzLmJhc2U2NEFjY3VtLmxlbmd0aCA+IDApXG4gICAgICAgIHJlcyA9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIodGhpcy5iYXNlNjRBY2N1bSwgJ2Jhc2U2NCcpLCBcInV0ZjE2LWJlXCIpO1xuXG4gICAgdGhpcy5pbkJhc2U2NCA9IGZhbHNlO1xuICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJztcbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbi8vIFVURi03LUlNQVAgY29kZWMuXG4vLyBSRkMzNTAxIFNlYy4gNS4xLjMgTW9kaWZpZWQgVVRGLTcgKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1MDEjc2VjdGlvbi01LjEuMylcbi8vIERpZmZlcmVuY2VzOlxuLy8gICogQmFzZTY0IHBhcnQgaXMgc3RhcnRlZCBieSBcIiZcIiBpbnN0ZWFkIG9mIFwiK1wiXG4vLyAgKiBEaXJlY3QgY2hhcmFjdGVycyBhcmUgMHgyMC0weDdFLCBleGNlcHQgXCImXCIgKDB4MjYpXG4vLyAgKiBJbiBCYXNlNjQsIFwiLFwiIGlzIHVzZWQgaW5zdGVhZCBvZiBcIi9cIlxuLy8gICogQmFzZTY0IG11c3Qgbm90IGJlIHVzZWQgdG8gcmVwcmVzZW50IGRpcmVjdCBjaGFyYWN0ZXJzLlxuLy8gICogTm8gaW1wbGljaXQgc2hpZnQgYmFjayBmcm9tIEJhc2U2NCAoc2hvdWxkIGFsd2F5cyBlbmQgd2l0aCAnLScpXG4vLyAgKiBTdHJpbmcgbXVzdCBlbmQgaW4gbm9uLXNoaWZ0ZWQgcG9zaXRpb24uXG4vLyAgKiBcIi0mXCIgd2hpbGUgaW4gYmFzZTY0IGlzIG5vdCBhbGxvd2VkLlxuXG5cbmV4cG9ydHMudXRmN2ltYXAgPSBVdGY3SU1BUENvZGVjO1xuZnVuY3Rpb24gVXRmN0lNQVBDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7XG4gICAgdGhpcy5pY29udiA9IGljb252O1xufTtcblxuVXRmN0lNQVBDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IFV0ZjdJTUFQRW5jb2RlcjtcblV0ZjdJTUFQQ29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBVdGY3SU1BUERlY29kZXI7XG5VdGY3SU1BUENvZGVjLnByb3RvdHlwZS5ib21Bd2FyZSA9IHRydWU7XG5cblxuLy8gLS0gRW5jb2RpbmdcblxuZnVuY3Rpb24gVXRmN0lNQVBFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5pY29udiA9IGNvZGVjLmljb252O1xuICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTtcbiAgICB0aGlzLmJhc2U2NEFjY3VtID0gbmV3IEJ1ZmZlcig2KTtcbiAgICB0aGlzLmJhc2U2NEFjY3VtSWR4ID0gMDtcbn1cblxuVXRmN0lNQVBFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHZhciBpbkJhc2U2NCA9IHRoaXMuaW5CYXNlNjQsXG4gICAgICAgIGJhc2U2NEFjY3VtID0gdGhpcy5iYXNlNjRBY2N1bSxcbiAgICAgICAgYmFzZTY0QWNjdW1JZHggPSB0aGlzLmJhc2U2NEFjY3VtSWR4LFxuICAgICAgICBidWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGgqNSArIDEwKSwgYnVmSWR4ID0gMDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB1Q2hhciA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoMHgyMCA8PSB1Q2hhciAmJiB1Q2hhciA8PSAweDdFKSB7IC8vIERpcmVjdCBjaGFyYWN0ZXIgb3IgJyYnLlxuICAgICAgICAgICAgaWYgKGluQmFzZTY0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGJhc2U2NEFjY3VtSWR4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBidWZJZHggKz0gYnVmLndyaXRlKGJhc2U2NEFjY3VtLnNsaWNlKDAsIGJhc2U2NEFjY3VtSWR4KS50b1N0cmluZygnYmFzZTY0JykucmVwbGFjZSgvXFwvL2csICcsJykucmVwbGFjZSgvPSskLywgJycpLCBidWZJZHgpO1xuICAgICAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bUlkeCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IG1pbnVzQ2hhcjsgLy8gV3JpdGUgJy0nLCB0aGVuIGdvIHRvIGRpcmVjdCBtb2RlLlxuICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaW5CYXNlNjQpIHtcbiAgICAgICAgICAgICAgICBidWZbYnVmSWR4KytdID0gdUNoYXI7IC8vIFdyaXRlIGRpcmVjdCBjaGFyYWN0ZXJcblxuICAgICAgICAgICAgICAgIGlmICh1Q2hhciA9PT0gYW5kQ2hhcikgIC8vIEFtcGVyc2FuZCAtPiAnJi0nXG4gICAgICAgICAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSBtaW51c0NoYXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHsgLy8gTm9uLWRpcmVjdCBjaGFyYWN0ZXJcbiAgICAgICAgICAgIGlmICghaW5CYXNlNjQpIHtcbiAgICAgICAgICAgICAgICBidWZbYnVmSWR4KytdID0gYW5kQ2hhcjsgLy8gV3JpdGUgJyYnLCB0aGVuIGdvIHRvIGJhc2U2NCBtb2RlLlxuICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbkJhc2U2NCkge1xuICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtW2Jhc2U2NEFjY3VtSWR4KytdID0gdUNoYXIgPj4gODtcbiAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bVtiYXNlNjRBY2N1bUlkeCsrXSA9IHVDaGFyICYgMHhGRjtcblxuICAgICAgICAgICAgICAgIGlmIChiYXNlNjRBY2N1bUlkeCA9PSBiYXNlNjRBY2N1bS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmSWR4ICs9IGJ1Zi53cml0ZShiYXNlNjRBY2N1bS50b1N0cmluZygnYmFzZTY0JykucmVwbGFjZSgvXFwvL2csICcsJyksIGJ1ZklkeCk7XG4gICAgICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtSWR4ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmluQmFzZTY0ID0gaW5CYXNlNjQ7XG4gICAgdGhpcy5iYXNlNjRBY2N1bUlkeCA9IGJhc2U2NEFjY3VtSWR4O1xuXG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwLCBidWZJZHgpO1xufVxuXG5VdGY3SU1BUEVuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKDEwKSwgYnVmSWR4ID0gMDtcbiAgICBpZiAodGhpcy5pbkJhc2U2NCkge1xuICAgICAgICBpZiAodGhpcy5iYXNlNjRBY2N1bUlkeCA+IDApIHtcbiAgICAgICAgICAgIGJ1ZklkeCArPSBidWYud3JpdGUodGhpcy5iYXNlNjRBY2N1bS5zbGljZSgwLCB0aGlzLmJhc2U2NEFjY3VtSWR4KS50b1N0cmluZygnYmFzZTY0JykucmVwbGFjZSgvXFwvL2csICcsJykucmVwbGFjZSgvPSskLywgJycpLCBidWZJZHgpO1xuICAgICAgICAgICAgdGhpcy5iYXNlNjRBY2N1bUlkeCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBidWZbYnVmSWR4KytdID0gbWludXNDaGFyOyAvLyBXcml0ZSAnLScsIHRoZW4gZ28gdG8gZGlyZWN0IG1vZGUuXG4gICAgICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmLnNsaWNlKDAsIGJ1ZklkeCk7XG59XG5cblxuLy8gLS0gRGVjb2RpbmdcblxuZnVuY3Rpb24gVXRmN0lNQVBEZWNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5pY29udiA9IGNvZGVjLmljb252O1xuICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTtcbiAgICB0aGlzLmJhc2U2NEFjY3VtID0gJyc7XG59XG5cbnZhciBiYXNlNjRJTUFQQ2hhcnMgPSBiYXNlNjRDaGFycy5zbGljZSgpO1xuYmFzZTY0SU1BUENoYXJzWycsJy5jaGFyQ29kZUF0KDApXSA9IHRydWU7XG5cblV0ZjdJTUFQRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHtcbiAgICB2YXIgcmVzID0gXCJcIiwgbGFzdEkgPSAwLFxuICAgICAgICBpbkJhc2U2NCA9IHRoaXMuaW5CYXNlNjQsXG4gICAgICAgIGJhc2U2NEFjY3VtID0gdGhpcy5iYXNlNjRBY2N1bTtcblxuICAgIC8vIFRoZSBkZWNvZGVyIGlzIG1vcmUgaW52b2x2ZWQgYXMgd2UgbXVzdCBoYW5kbGUgY2h1bmtzIGluIHN0cmVhbS5cbiAgICAvLyBJdCBpcyBmb3JnaXZpbmcsIGNsb3NlciB0byBzdGFuZGFyZCBVVEYtNyAoZm9yIGV4YW1wbGUsICctJyBpcyBvcHRpb25hbCBhdCB0aGUgZW5kKS5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaW5CYXNlNjQpIHsgLy8gV2UncmUgaW4gZGlyZWN0IG1vZGUuXG4gICAgICAgICAgICAvLyBXcml0ZSBkaXJlY3QgY2hhcnMgdW50aWwgJyYnXG4gICAgICAgICAgICBpZiAoYnVmW2ldID09IGFuZENoYXIpIHtcbiAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJLCBpKSwgXCJhc2NpaVwiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLlxuICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxO1xuICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgLy8gV2UgZGVjb2RlIGJhc2U2NC5cbiAgICAgICAgICAgIGlmICghYmFzZTY0SU1BUENoYXJzW2J1ZltpXV0pIHsgLy8gQmFzZTY0IGVuZGVkLlxuICAgICAgICAgICAgICAgIGlmIChpID09IGxhc3RJICYmIGJ1ZltpXSA9PSBtaW51c0NoYXIpIHsgLy8gXCImLVwiIC0+IFwiJlwiXG4gICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIiZcIjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYjY0c3RyID0gYmFzZTY0QWNjdW0gKyBidWYuc2xpY2UobGFzdEksIGkpLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnLycpO1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUobmV3IEJ1ZmZlcihiNjRzdHIsICdiYXNlNjQnKSwgXCJ1dGYxNi1iZVwiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoYnVmW2ldICE9IG1pbnVzQ2hhcikgLy8gTWludXMgbWF5IGJlIGFic29yYmVkIGFmdGVyIGJhc2U2NC5cbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuXG4gICAgICAgICAgICAgICAgbGFzdEkgPSBpKzE7XG4gICAgICAgICAgICAgICAgaW5CYXNlNjQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpbkJhc2U2NCkge1xuICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJKSwgXCJhc2NpaVwiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBiNjRzdHIgPSBiYXNlNjRBY2N1bSArIGJ1Zi5zbGljZShsYXN0SSkudG9TdHJpbmcoKS5yZXBsYWNlKC8sL2csICcvJyk7XG5cbiAgICAgICAgdmFyIGNhbkJlRGVjb2RlZCA9IGI2NHN0ci5sZW5ndGggLSAoYjY0c3RyLmxlbmd0aCAlIDgpOyAvLyBNaW5pbWFsIGNodW5rOiAyIHF1YWRzIC0+IDJ4MyBieXRlcyAtPiAzIGNoYXJzLlxuICAgICAgICBiYXNlNjRBY2N1bSA9IGI2NHN0ci5zbGljZShjYW5CZURlY29kZWQpOyAvLyBUaGUgcmVzdCB3aWxsIGJlIGRlY29kZWQgaW4gZnV0dXJlLlxuICAgICAgICBiNjRzdHIgPSBiNjRzdHIuc2xpY2UoMCwgY2FuQmVEZWNvZGVkKTtcblxuICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUobmV3IEJ1ZmZlcihiNjRzdHIsICdiYXNlNjQnKSwgXCJ1dGYxNi1iZVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmluQmFzZTY0ID0gaW5CYXNlNjQ7XG4gICAgdGhpcy5iYXNlNjRBY2N1bSA9IGJhc2U2NEFjY3VtO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuVXRmN0lNQVBEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVzID0gXCJcIjtcbiAgICBpZiAodGhpcy5pbkJhc2U2NCAmJiB0aGlzLmJhc2U2NEFjY3VtLmxlbmd0aCA+IDApXG4gICAgICAgIHJlcyA9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIodGhpcy5iYXNlNjRBY2N1bSwgJ2Jhc2U2NCcpLCBcInV0ZjE2LWJlXCIpO1xuXG4gICAgdGhpcy5pbkJhc2U2NCA9IGZhbHNlO1xuICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJztcbiAgICByZXR1cm4gcmVzO1xufVxuXG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy91dGY3LmpzXG4vLyBtb2R1bGUgaWQgPSAxMzhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgQnVmZmVyID0gcmVxdWlyZShcImJ1ZmZlclwiKS5CdWZmZXI7XG5cbi8vIFNpbmdsZS1ieXRlIGNvZGVjLiBOZWVkcyBhICdjaGFycycgc3RyaW5nIHBhcmFtZXRlciB0aGF0IGNvbnRhaW5zIDI1NiBvciAxMjggY2hhcnMgdGhhdFxuLy8gY29ycmVzcG9uZCB0byBlbmNvZGVkIGJ5dGVzIChpZiAxMjggLSB0aGVuIGxvd2VyIGhhbGYgaXMgQVNDSUkpLiBcblxuZXhwb3J0cy5fc2JjcyA9IFNCQ1NDb2RlYztcbmZ1bmN0aW9uIFNCQ1NDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7XG4gICAgaWYgKCFjb2RlY09wdGlvbnMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNCQ1MgY29kZWMgaXMgY2FsbGVkIHdpdGhvdXQgdGhlIGRhdGEuXCIpXG4gICAgXG4gICAgLy8gUHJlcGFyZSBjaGFyIGJ1ZmZlciBmb3IgZGVjb2RpbmcuXG4gICAgaWYgKCFjb2RlY09wdGlvbnMuY2hhcnMgfHwgKGNvZGVjT3B0aW9ucy5jaGFycy5sZW5ndGggIT09IDEyOCAmJiBjb2RlY09wdGlvbnMuY2hhcnMubGVuZ3RoICE9PSAyNTYpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbmNvZGluZyAnXCIrY29kZWNPcHRpb25zLnR5cGUrXCInIGhhcyBpbmNvcnJlY3QgJ2NoYXJzJyAobXVzdCBiZSBvZiBsZW4gMTI4IG9yIDI1NilcIik7XG4gICAgXG4gICAgaWYgKGNvZGVjT3B0aW9ucy5jaGFycy5sZW5ndGggPT09IDEyOCkge1xuICAgICAgICB2YXIgYXNjaWlTdHJpbmcgPSBcIlwiO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEyODsgaSsrKVxuICAgICAgICAgICAgYXNjaWlTdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcbiAgICAgICAgY29kZWNPcHRpb25zLmNoYXJzID0gYXNjaWlTdHJpbmcgKyBjb2RlY09wdGlvbnMuY2hhcnM7XG4gICAgfVxuXG4gICAgdGhpcy5kZWNvZGVCdWYgPSBuZXcgQnVmZmVyKGNvZGVjT3B0aW9ucy5jaGFycywgJ3VjczInKTtcbiAgICBcbiAgICAvLyBFbmNvZGluZyBidWZmZXIuXG4gICAgdmFyIGVuY29kZUJ1ZiA9IG5ldyBCdWZmZXIoNjU1MzYpO1xuICAgIGVuY29kZUJ1Zi5maWxsKGljb252LmRlZmF1bHRDaGFyU2luZ2xlQnl0ZS5jaGFyQ29kZUF0KDApKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZWNPcHRpb25zLmNoYXJzLmxlbmd0aDsgaSsrKVxuICAgICAgICBlbmNvZGVCdWZbY29kZWNPcHRpb25zLmNoYXJzLmNoYXJDb2RlQXQoaSldID0gaTtcblxuICAgIHRoaXMuZW5jb2RlQnVmID0gZW5jb2RlQnVmO1xufVxuXG5TQkNTQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBTQkNTRW5jb2RlcjtcblNCQ1NDb2RlYy5wcm90b3R5cGUuZGVjb2RlciA9IFNCQ1NEZWNvZGVyO1xuXG5cbmZ1bmN0aW9uIFNCQ1NFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5lbmNvZGVCdWYgPSBjb2RlYy5lbmNvZGVCdWY7XG59XG5cblNCQ1NFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKVxuICAgICAgICBidWZbaV0gPSB0aGlzLmVuY29kZUJ1ZltzdHIuY2hhckNvZGVBdChpKV07XG4gICAgXG4gICAgcmV0dXJuIGJ1Zjtcbn1cblxuU0JDU0VuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xufVxuXG5cbmZ1bmN0aW9uIFNCQ1NEZWNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5kZWNvZGVCdWYgPSBjb2RlYy5kZWNvZGVCdWY7XG59XG5cblNCQ1NEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1Zikge1xuICAgIC8vIFN0cmluZ3MgYXJlIGltbXV0YWJsZSBpbiBKUyAtPiB3ZSB1c2UgdWNzMiBidWZmZXIgdG8gc3BlZWQgdXAgY29tcHV0YXRpb25zLlxuICAgIHZhciBkZWNvZGVCdWYgPSB0aGlzLmRlY29kZUJ1ZjtcbiAgICB2YXIgbmV3QnVmID0gbmV3IEJ1ZmZlcihidWYubGVuZ3RoKjIpO1xuICAgIHZhciBpZHgxID0gMCwgaWR4MiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWR4MSA9IGJ1ZltpXSoyOyBpZHgyID0gaSoyO1xuICAgICAgICBuZXdCdWZbaWR4Ml0gPSBkZWNvZGVCdWZbaWR4MV07XG4gICAgICAgIG5ld0J1ZltpZHgyKzFdID0gZGVjb2RlQnVmW2lkeDErMV07XG4gICAgfVxuICAgIHJldHVybiBuZXdCdWYudG9TdHJpbmcoJ3VjczInKTtcbn1cblxuU0JDU0RlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3NiY3MtY29kZWMuanNcbi8vIG1vZHVsZSBpZCA9IDEzOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcblxuLy8gTWFudWFsbHkgYWRkZWQgZGF0YSB0byBiZSB1c2VkIGJ5IHNiY3MgY29kZWMgaW4gYWRkaXRpb24gdG8gZ2VuZXJhdGVkIG9uZS5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgLy8gTm90IHN1cHBvcnRlZCBieSBpY29udiwgbm90IHN1cmUgd2h5LlxuICAgIFwiMTAwMjlcIjogXCJtYWNjZW50ZXVyb1wiLFxuICAgIFwibWFjY2VudGV1cm9cIjoge1xuICAgICAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgICAgICBcImNoYXJzXCI6IFwiw4TEgMSBw4nEhMOWw5zDocSFxIzDpMSNxIbEh8OpxbnFusSOw63Ej8SSxJPElsOzxJfDtMO2w7XDusSaxJvDvOKAoMKwxJjCo8Kn4oCiwrbDn8KuwqnihKLEmcKo4omgxKPErsSvxKriiaTiiaXEq8S24oiC4oiRxYLEu8S8xL3EvsS5xLrFhcWGxYPCrOKImsWExYfiiIbCq8K74oCmwqDFiMWQw5XFkcWM4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rFjcWUxZXFmOKAueKAusWZxZbFl8Wg4oCa4oCexaHFmsWbw4HFpMWlw43FvcW+xarDk8OUxavFrsOaxa/FsMWxxbLFs8Odw73Et8W7xYHFvMSiy4dcIlxuICAgIH0sXG5cbiAgICBcIjgwOFwiOiBcImNwODA4XCIsXG4gICAgXCJpYm04MDhcIjogXCJjcDgwOFwiLFxuICAgIFwiY3A4MDhcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgICAgICBcImNoYXJzXCI6IFwi0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paA0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/QgdGR0ITRlNCH0ZfQjtGewrDiiJnCt+KImuKEluKCrOKWoMKgXCJcbiAgICB9LFxuXG4gICAgLy8gQWxpYXNlcyBvZiBnZW5lcmF0ZWQgZW5jb2RpbmdzLlxuICAgIFwiYXNjaWk4Yml0XCI6IFwiYXNjaWlcIixcbiAgICBcInVzYXNjaWlcIjogXCJhc2NpaVwiLFxuICAgIFwiYW5zaXgzNFwiOiBcImFzY2lpXCIsXG4gICAgXCJhbnNpeDM0MTk2OFwiOiBcImFzY2lpXCIsXG4gICAgXCJhbnNpeDM0MTk4NlwiOiBcImFzY2lpXCIsXG4gICAgXCJjc2FzY2lpXCI6IFwiYXNjaWlcIixcbiAgICBcImNwMzY3XCI6IFwiYXNjaWlcIixcbiAgICBcImlibTM2N1wiOiBcImFzY2lpXCIsXG4gICAgXCJpc29pcjZcIjogXCJhc2NpaVwiLFxuICAgIFwiaXNvNjQ2dXNcIjogXCJhc2NpaVwiLFxuICAgIFwiaXNvNjQ2aXJ2XCI6IFwiYXNjaWlcIixcbiAgICBcInVzXCI6IFwiYXNjaWlcIixcblxuICAgIFwibGF0aW4xXCI6IFwiaXNvODg1OTFcIixcbiAgICBcImxhdGluMlwiOiBcImlzbzg4NTkyXCIsXG4gICAgXCJsYXRpbjNcIjogXCJpc284ODU5M1wiLFxuICAgIFwibGF0aW40XCI6IFwiaXNvODg1OTRcIixcbiAgICBcImxhdGluNVwiOiBcImlzbzg4NTk5XCIsXG4gICAgXCJsYXRpbjZcIjogXCJpc284ODU5MTBcIixcbiAgICBcImxhdGluN1wiOiBcImlzbzg4NTkxM1wiLFxuICAgIFwibGF0aW44XCI6IFwiaXNvODg1OTE0XCIsXG4gICAgXCJsYXRpbjlcIjogXCJpc284ODU5MTVcIixcbiAgICBcImxhdGluMTBcIjogXCJpc284ODU5MTZcIixcblxuICAgIFwiY3Npc29sYXRpbjFcIjogXCJpc284ODU5MVwiLFxuICAgIFwiY3Npc29sYXRpbjJcIjogXCJpc284ODU5MlwiLFxuICAgIFwiY3Npc29sYXRpbjNcIjogXCJpc284ODU5M1wiLFxuICAgIFwiY3Npc29sYXRpbjRcIjogXCJpc284ODU5NFwiLFxuICAgIFwiY3Npc29sYXRpbmN5cmlsbGljXCI6IFwiaXNvODg1OTVcIixcbiAgICBcImNzaXNvbGF0aW5hcmFiaWNcIjogXCJpc284ODU5NlwiLFxuICAgIFwiY3Npc29sYXRpbmdyZWVrXCIgOiBcImlzbzg4NTk3XCIsXG4gICAgXCJjc2lzb2xhdGluaGVicmV3XCI6IFwiaXNvODg1OThcIixcbiAgICBcImNzaXNvbGF0aW41XCI6IFwiaXNvODg1OTlcIixcbiAgICBcImNzaXNvbGF0aW42XCI6IFwiaXNvODg1OTEwXCIsXG5cbiAgICBcImwxXCI6IFwiaXNvODg1OTFcIixcbiAgICBcImwyXCI6IFwiaXNvODg1OTJcIixcbiAgICBcImwzXCI6IFwiaXNvODg1OTNcIixcbiAgICBcImw0XCI6IFwiaXNvODg1OTRcIixcbiAgICBcImw1XCI6IFwiaXNvODg1OTlcIixcbiAgICBcImw2XCI6IFwiaXNvODg1OTEwXCIsXG4gICAgXCJsN1wiOiBcImlzbzg4NTkxM1wiLFxuICAgIFwibDhcIjogXCJpc284ODU5MTRcIixcbiAgICBcImw5XCI6IFwiaXNvODg1OTE1XCIsXG4gICAgXCJsMTBcIjogXCJpc284ODU5MTZcIixcblxuICAgIFwiaXNvaXIxNFwiOiBcImlzbzY0NmpwXCIsXG4gICAgXCJpc29pcjU3XCI6IFwiaXNvNjQ2Y25cIixcbiAgICBcImlzb2lyMTAwXCI6IFwiaXNvODg1OTFcIixcbiAgICBcImlzb2lyMTAxXCI6IFwiaXNvODg1OTJcIixcbiAgICBcImlzb2lyMTA5XCI6IFwiaXNvODg1OTNcIixcbiAgICBcImlzb2lyMTEwXCI6IFwiaXNvODg1OTRcIixcbiAgICBcImlzb2lyMTQ0XCI6IFwiaXNvODg1OTVcIixcbiAgICBcImlzb2lyMTI3XCI6IFwiaXNvODg1OTZcIixcbiAgICBcImlzb2lyMTI2XCI6IFwiaXNvODg1OTdcIixcbiAgICBcImlzb2lyMTM4XCI6IFwiaXNvODg1OThcIixcbiAgICBcImlzb2lyMTQ4XCI6IFwiaXNvODg1OTlcIixcbiAgICBcImlzb2lyMTU3XCI6IFwiaXNvODg1OTEwXCIsXG4gICAgXCJpc29pcjE2NlwiOiBcInRpczYyMFwiLFxuICAgIFwiaXNvaXIxNzlcIjogXCJpc284ODU5MTNcIixcbiAgICBcImlzb2lyMTk5XCI6IFwiaXNvODg1OTE0XCIsXG4gICAgXCJpc29pcjIwM1wiOiBcImlzbzg4NTkxNVwiLFxuICAgIFwiaXNvaXIyMjZcIjogXCJpc284ODU5MTZcIixcblxuICAgIFwiY3A4MTlcIjogXCJpc284ODU5MVwiLFxuICAgIFwiaWJtODE5XCI6IFwiaXNvODg1OTFcIixcblxuICAgIFwiY3lyaWxsaWNcIjogXCJpc284ODU5NVwiLFxuXG4gICAgXCJhcmFiaWNcIjogXCJpc284ODU5NlwiLFxuICAgIFwiYXJhYmljOFwiOiBcImlzbzg4NTk2XCIsXG4gICAgXCJlY21hMTE0XCI6IFwiaXNvODg1OTZcIixcbiAgICBcImFzbW83MDhcIjogXCJpc284ODU5NlwiLFxuXG4gICAgXCJncmVla1wiIDogXCJpc284ODU5N1wiLFxuICAgIFwiZ3JlZWs4XCIgOiBcImlzbzg4NTk3XCIsXG4gICAgXCJlY21hMTE4XCIgOiBcImlzbzg4NTk3XCIsXG4gICAgXCJlbG90OTI4XCIgOiBcImlzbzg4NTk3XCIsXG5cbiAgICBcImhlYnJld1wiOiBcImlzbzg4NTk4XCIsXG4gICAgXCJoZWJyZXc4XCI6IFwiaXNvODg1OThcIixcblxuICAgIFwidHVya2lzaFwiOiBcImlzbzg4NTk5XCIsXG4gICAgXCJ0dXJraXNoOFwiOiBcImlzbzg4NTk5XCIsXG5cbiAgICBcInRoYWlcIjogXCJpc284ODU5MTFcIixcbiAgICBcInRoYWk4XCI6IFwiaXNvODg1OTExXCIsXG5cbiAgICBcImNlbHRpY1wiOiBcImlzbzg4NTkxNFwiLFxuICAgIFwiY2VsdGljOFwiOiBcImlzbzg4NTkxNFwiLFxuICAgIFwiaXNvY2VsdGljXCI6IFwiaXNvODg1OTE0XCIsXG5cbiAgICBcInRpczYyMDBcIjogXCJ0aXM2MjBcIixcbiAgICBcInRpczYyMDI1MjkxXCI6IFwidGlzNjIwXCIsXG4gICAgXCJ0aXM2MjAyNTMzMFwiOiBcInRpczYyMFwiLFxuXG4gICAgXCIxMDAwMFwiOiBcIm1hY3JvbWFuXCIsXG4gICAgXCIxMDAwNlwiOiBcIm1hY2dyZWVrXCIsXG4gICAgXCIxMDAwN1wiOiBcIm1hY2N5cmlsbGljXCIsXG4gICAgXCIxMDA3OVwiOiBcIm1hY2ljZWxhbmRcIixcbiAgICBcIjEwMDgxXCI6IFwibWFjdHVya2lzaFwiLFxuXG4gICAgXCJjc3BjOGNvZGVwYWdlNDM3XCI6IFwiY3A0MzdcIixcbiAgICBcImNzcGM3NzViYWx0aWNcIjogXCJjcDc3NVwiLFxuICAgIFwiY3NwYzg1MG11bHRpbGluZ3VhbFwiOiBcImNwODUwXCIsXG4gICAgXCJjc3BjcDg1MlwiOiBcImNwODUyXCIsXG4gICAgXCJjc3BjODYybGF0aW5oZWJyZXdcIjogXCJjcDg2MlwiLFxuICAgIFwiY3BnclwiOiBcImNwODY5XCIsXG5cbiAgICBcIm1zZWVcIjogXCJjcDEyNTBcIixcbiAgICBcIm1zY3lybFwiOiBcImNwMTI1MVwiLFxuICAgIFwibXNhbnNpXCI6IFwiY3AxMjUyXCIsXG4gICAgXCJtc2dyZWVrXCI6IFwiY3AxMjUzXCIsXG4gICAgXCJtc3R1cmtcIjogXCJjcDEyNTRcIixcbiAgICBcIm1zaGViclwiOiBcImNwMTI1NVwiLFxuICAgIFwibXNhcmFiXCI6IFwiY3AxMjU2XCIsXG4gICAgXCJ3aW5iYWx0cmltXCI6IFwiY3AxMjU3XCIsXG5cbiAgICBcImNwMjA4NjZcIjogXCJrb2k4clwiLFxuICAgIFwiMjA4NjZcIjogXCJrb2k4clwiLFxuICAgIFwiaWJtODc4XCI6IFwia29pOHJcIixcbiAgICBcImNza29pOHJcIjogXCJrb2k4clwiLFxuXG4gICAgXCJjcDIxODY2XCI6IFwia29pOHVcIixcbiAgICBcIjIxODY2XCI6IFwia29pOHVcIixcbiAgICBcImlibTExNjhcIjogXCJrb2k4dVwiLFxuXG4gICAgXCJzdHJrMTA0ODIwMDJcIjogXCJyazEwNDhcIixcblxuICAgIFwidGN2bjU3MTJcIjogXCJ0Y3ZuXCIsXG4gICAgXCJ0Y3ZuNTcxMjFcIjogXCJ0Y3ZuXCIsXG5cbiAgICBcImdiMTk4ODgwXCI6IFwiaXNvNjQ2Y25cIixcbiAgICBcImNuXCI6IFwiaXNvNjQ2Y25cIixcblxuICAgIFwiY3Npc28xNGppc2M2MjIwcm9cIjogXCJpc282NDZqcFwiLFxuICAgIFwiamlzYzYyMjAxOTY5cm9cIjogXCJpc282NDZqcFwiLFxuICAgIFwianBcIjogXCJpc282NDZqcFwiLFxuXG4gICAgXCJjc2hwcm9tYW44XCI6IFwiaHByb21hbjhcIixcbiAgICBcInI4XCI6IFwiaHByb21hbjhcIixcbiAgICBcInJvbWFuOFwiOiBcImhwcm9tYW44XCIsXG4gICAgXCJ4cm9tYW44XCI6IFwiaHByb21hbjhcIixcbiAgICBcImlibTEwNTFcIjogXCJocHJvbWFuOFwiLFxuXG4gICAgXCJtYWNcIjogXCJtYWNpbnRvc2hcIixcbiAgICBcImNzbWFjaW50b3NoXCI6IFwibWFjaW50b3NoXCIsXG59O1xuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3Mvc2Jjcy1kYXRhLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIEdlbmVyYXRlZCBkYXRhIGZvciBzYmNzIGNvZGVjLiBEb24ndCBlZGl0IG1hbnVhbGx5LiBSZWdlbmVyYXRlIHVzaW5nIGdlbmVyYXRpb24vZ2VuLXNiY3MuanMgc2NyaXB0LlxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFwiNDM3XCI6IFwiY3A0MzdcIixcbiAgXCI3MzdcIjogXCJjcDczN1wiLFxuICBcIjc3NVwiOiBcImNwNzc1XCIsXG4gIFwiODUwXCI6IFwiY3A4NTBcIixcbiAgXCI4NTJcIjogXCJjcDg1MlwiLFxuICBcIjg1NVwiOiBcImNwODU1XCIsXG4gIFwiODU2XCI6IFwiY3A4NTZcIixcbiAgXCI4NTdcIjogXCJjcDg1N1wiLFxuICBcIjg1OFwiOiBcImNwODU4XCIsXG4gIFwiODYwXCI6IFwiY3A4NjBcIixcbiAgXCI4NjFcIjogXCJjcDg2MVwiLFxuICBcIjg2MlwiOiBcImNwODYyXCIsXG4gIFwiODYzXCI6IFwiY3A4NjNcIixcbiAgXCI4NjRcIjogXCJjcDg2NFwiLFxuICBcIjg2NVwiOiBcImNwODY1XCIsXG4gIFwiODY2XCI6IFwiY3A4NjZcIixcbiAgXCI4NjlcIjogXCJjcDg2OVwiLFxuICBcIjg3NFwiOiBcIndpbmRvd3M4NzRcIixcbiAgXCI5MjJcIjogXCJjcDkyMlwiLFxuICBcIjEwNDZcIjogXCJjcDEwNDZcIixcbiAgXCIxMTI0XCI6IFwiY3AxMTI0XCIsXG4gIFwiMTEyNVwiOiBcImNwMTEyNVwiLFxuICBcIjExMjlcIjogXCJjcDExMjlcIixcbiAgXCIxMTMzXCI6IFwiY3AxMTMzXCIsXG4gIFwiMTE2MVwiOiBcImNwMTE2MVwiLFxuICBcIjExNjJcIjogXCJjcDExNjJcIixcbiAgXCIxMTYzXCI6IFwiY3AxMTYzXCIsXG4gIFwiMTI1MFwiOiBcIndpbmRvd3MxMjUwXCIsXG4gIFwiMTI1MVwiOiBcIndpbmRvd3MxMjUxXCIsXG4gIFwiMTI1MlwiOiBcIndpbmRvd3MxMjUyXCIsXG4gIFwiMTI1M1wiOiBcIndpbmRvd3MxMjUzXCIsXG4gIFwiMTI1NFwiOiBcIndpbmRvd3MxMjU0XCIsXG4gIFwiMTI1NVwiOiBcIndpbmRvd3MxMjU1XCIsXG4gIFwiMTI1NlwiOiBcIndpbmRvd3MxMjU2XCIsXG4gIFwiMTI1N1wiOiBcIndpbmRvd3MxMjU3XCIsXG4gIFwiMTI1OFwiOiBcIndpbmRvd3MxMjU4XCIsXG4gIFwiMjg1OTFcIjogXCJpc284ODU5MVwiLFxuICBcIjI4NTkyXCI6IFwiaXNvODg1OTJcIixcbiAgXCIyODU5M1wiOiBcImlzbzg4NTkzXCIsXG4gIFwiMjg1OTRcIjogXCJpc284ODU5NFwiLFxuICBcIjI4NTk1XCI6IFwiaXNvODg1OTVcIixcbiAgXCIyODU5NlwiOiBcImlzbzg4NTk2XCIsXG4gIFwiMjg1OTdcIjogXCJpc284ODU5N1wiLFxuICBcIjI4NTk4XCI6IFwiaXNvODg1OThcIixcbiAgXCIyODU5OVwiOiBcImlzbzg4NTk5XCIsXG4gIFwiMjg2MDBcIjogXCJpc284ODU5MTBcIixcbiAgXCIyODYwMVwiOiBcImlzbzg4NTkxMVwiLFxuICBcIjI4NjAzXCI6IFwiaXNvODg1OTEzXCIsXG4gIFwiMjg2MDRcIjogXCJpc284ODU5MTRcIixcbiAgXCIyODYwNVwiOiBcImlzbzg4NTkxNVwiLFxuICBcIjI4NjA2XCI6IFwiaXNvODg1OTE2XCIsXG4gIFwid2luZG93czg3NFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+977+977+977+94oCm77+977+977+977+977+977+977+977+977+977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCU77+977+977+977+977+977+977+977+9wqDguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrvv73vv73vv73vv73guL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvvv73vv73vv73vv71cIlxuICB9LFxuICBcIndpbjg3NFwiOiBcIndpbmRvd3M4NzRcIixcbiAgXCJjcDg3NFwiOiBcIndpbmRvd3M4NzRcIixcbiAgXCJ3aW5kb3dzMTI1MFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCa77+94oCe4oCm4oCg4oCh77+94oCwxaDigLnFmsWkxb3Fue+/veKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEosWh4oC6xZvFpcW+xbrCoMuHy5jFgcKkxITCpsKnwqjCqcWewqvCrMKtwq7Fu8KwwrHLm8WCwrTCtcK2wrfCuMSFxZ/Cu8S9y53EvsW8xZTDgcOCxILDhMS5xIbDh8SMw4nEmMOLxJrDjcOOxI7EkMWDxYfDk8OUxZDDlsOXxZjFrsOaxbDDnMOdxaLDn8WVw6HDosSDw6TEusSHw6fEjcOpxJnDq8Sbw63DrsSPxJHFhMWIw7PDtMWRw7bDt8WZxa/DusWxw7zDvcWjy5lcIlxuICB9LFxuICBcIndpbjEyNTBcIjogXCJ3aW5kb3dzMTI1MFwiLFxuICBcImNwMTI1MFwiOiBcIndpbmRvd3MxMjUwXCIsXG4gIFwid2luZG93czEyNTFcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItCC0IPigJrRk+KAnuKApuKAoOKAoeKCrOKAsNCJ4oC50IrQjNCL0I/RkuKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEotGZ4oC60ZrRnNGb0Z/CoNCO0Z7QiMKk0pDCpsKn0IHCqdCEwqvCrMKtwq7Qh8KwwrHQhtGW0pHCtcK2wrfRkeKEltGUwrvRmNCF0ZXRl9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPXCJcbiAgfSxcbiAgXCJ3aW4xMjUxXCI6IFwid2luZG93czEyNTFcIixcbiAgXCJjcDEyNTFcIjogXCJ3aW5kb3dzMTI1MVwiLFxuICBcIndpbmRvd3MxMjUyXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFku+/vcW977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLFoeKAusWT77+9xb7FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53DnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77Dv1wiXG4gIH0sXG4gIFwid2luMTI1MlwiOiBcIndpbmRvd3MxMjUyXCIsXG4gIFwiY3AxMjUyXCI6IFwid2luZG93czEyNTJcIixcbiAgXCJ3aW5kb3dzMTI1M1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCaxpLigJ7igKbigKDigKHvv73igLDvv73igLnvv73vv73vv73vv73vv73igJjigJnigJzigJ3igKLigJPigJTvv73ihKLvv73igLrvv73vv73vv73vv73CoM6FzobCo8KkwqXCpsKnwqjCqe+/vcKrwqzCrcKu4oCVwrDCscKywrPOhMK1wrbCt86IzonOisK7zozCvc6Ozo/OkM6RzpLOk86UzpXOls6XzpjOmc6azpvOnM6dzp7On86gzqHvv73Oo86kzqXOps6nzqjOqc6qzqvOrM6tzq7Or86wzrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Cz4PPhM+Fz4bPh8+Iz4nPis+Lz4zPjc+O77+9XCJcbiAgfSxcbiAgXCJ3aW4xMjUzXCI6IFwid2luZG93czEyNTNcIixcbiAgXCJjcDEyNTNcIjogXCJ3aW5kb3dzMTI1M1wiLFxuICBcIndpbmRvd3MxMjU0XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFku+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk++/ve+/vcW4wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPxJ7DkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zEsMWew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Sfw7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8xLHFn8O/XCJcbiAgfSxcbiAgXCJ3aW4xMjU0XCI6IFwid2luZG93czEyNTRcIixcbiAgXCJjcDEyNTRcIjogXCJ3aW5kb3dzMTI1NFwiLFxuICBcIndpbmRvd3MxMjU1XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCw77+94oC577+977+977+977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLvv73igLrvv73vv73vv73vv73CoMKhwqLCo+KCqsKlwqbCp8KowqnDl8KrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucO3wrvCvMK9wr7Cv9aw1rHWstaz1rTWtda21rfWuNa51rrWu9a81r3Wvta/14DXgdeC14PXsNex17LXs9e077+977+977+977+977+977+977+915DXkdeS15PXlNeV15bXl9eY15nXmteb15zXndee15/XoNeh16LXo9ek16XXpten16jXqdeq77+977+94oCO4oCP77+9XCJcbiAgfSxcbiAgXCJ3aW4xMjU1XCI6IFwid2luZG93czEyNTVcIixcbiAgXCJjcDEyNTVcIjogXCJ3aW5kb3dzMTI1NVwiLFxuICBcIndpbmRvd3MxMjU2XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLigqzZvuKAmsaS4oCe4oCm4oCg4oChy4bigLDZueKAucWS2obamNqI2q/igJjigJnigJzigJ3igKLigJPigJTaqeKEotqR4oC6xZPigIzigI3ausKg2IzCosKjwqTCpcKmwqfCqMKp2r7Cq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnYm8K7wrzCvcK+2J/bgdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi2w5fYt9i42LnYutmA2YHZgtmDw6DZhMOi2YXZhtmH2YjDp8Oow6nDqsOr2YnZisOuw6/Zi9mM2Y3ZjsO02Y/ZkMO32ZHDudmSw7vDvOKAjuKAj9uSXCJcbiAgfSxcbiAgXCJ3aW4xMjU2XCI6IFwid2luZG93czEyNTZcIixcbiAgXCJjcDEyNTZcIjogXCJ3aW5kb3dzMTI1NlwiLFxuICBcIndpbmRvd3MxMjU3XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLigqzvv73igJrvv73igJ7igKbigKDigKHvv73igLDvv73igLnvv73CqMuHwrjvv73igJjigJnigJzigJ3igKLigJPigJTvv73ihKLvv73igLrvv73Cr8ub77+9wqDvv73CosKjwqTvv73CpsKnw5jCqcWWwqvCrMKtwq7DhsKwwrHCssKzwrTCtcK2wrfDuMK5xZfCu8K8wr3CvsOmxITErsSAxIbDhMOFxJjEksSMw4nFucSWxKLEtsSqxLvFoMWDxYXDk8WMw5XDlsOXxbLFgcWaxarDnMW7xb3Dn8SFxK/EgcSHw6TDpcSZxJPEjcOpxbrEl8SjxLfEq8S8xaHFhMWGw7PFjcO1w7bDt8WzxYLFm8Wrw7zFvMW+y5lcIlxuICB9LFxuICBcIndpbjEyNTdcIjogXCJ3aW5kb3dzMTI1N1wiLFxuICBcImNwMTI1N1wiOiBcIndpbmRvd3MxMjU3XCIsXG4gIFwid2luZG93czEyNThcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKCrO+/veKAmsaS4oCe4oCm4oCg4oChy4bigLDvv73igLnFku+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSi77+94oC6xZPvv73vv73FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LEgsOEw4XDhsOHw4jDicOKw4vMgMONw47Dj8SQw5HMicOTw5TGoMOWw5fDmMOZw5rDm8Ocxq/Mg8Ofw6DDocOixIPDpMOlw6bDp8Oow6nDqsOrzIHDrcOuw6/EkcOxzKPDs8O0xqHDtsO3w7jDucO6w7vDvMaw4oKrw79cIlxuICB9LFxuICBcIndpbjEyNThcIjogXCJ3aW5kb3dzMTI1OFwiLFxuICBcImNwMTI1OFwiOiBcIndpbmRvd3MxMjU4XCIsXG4gIFwiaXNvODg1OTFcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w79cIlxuICB9LFxuICBcImNwMjg1OTFcIjogXCJpc284ODU5MVwiLFxuICBcImlzbzg4NTkyXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDEhMuYxYHCpMS9xZrCp8KoxaDFnsWkxbnCrcW9xbvCsMSFy5vFgsK0xL7Fm8uHwrjFocWfxaXFusudxb7FvMWUw4HDgsSCw4TEucSGw4fEjMOJxJjDi8Saw43DjsSOxJDFg8WHw5PDlMWQw5bDl8WYxa7DmsWww5zDncWiw5/FlcOhw6LEg8OkxLrEh8OnxI3DqcSZw6vEm8Otw67Ej8SRxYTFiMOzw7TFkcO2w7fFmcWvw7rFscO8w73Fo8uZXCJcbiAgfSxcbiAgXCJjcDI4NTkyXCI6IFwiaXNvODg1OTJcIixcbiAgXCJpc284ODU5M1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgxKbLmMKjwqTvv73EpMKnwqjEsMWexJ7EtMKt77+9xbvCsMSnwrLCs8K0wrXEpcK3wrjEscWfxJ/EtcK977+9xbzDgMOBw4Lvv73DhMSKxIjDh8OIw4nDisOLw4zDjcOOw4/vv73DkcOSw5PDlMSgw5bDl8Scw5nDmsObw5zFrMWcw5/DoMOhw6Lvv73DpMSLxInDp8Oow6nDqsOrw6zDrcOuw6/vv73DscOyw7PDtMShw7bDt8Sdw7nDusO7w7zFrcWdy5lcIlxuICB9LFxuICBcImNwMjg1OTNcIjogXCJpc284ODU5M1wiLFxuICBcImlzbzg4NTk0XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDEhMS4xZbCpMSoxLvCp8KoxaDEksSixabCrcW9wq/CsMSFy5vFl8K0xKnEvMuHwrjFocSTxKPFp8WKxb7Fi8SAw4HDgsODw4TDhcOGxK7EjMOJxJjDi8SWw43DjsSqxJDFhcWMxLbDlMOVw5bDl8OYxbLDmsObw5zFqMWqw5/EgcOhw6LDo8Okw6XDpsSvxI3DqcSZw6vEl8Otw67Eq8SRxYbFjcS3w7TDtcO2w7fDuMWzw7rDu8O8xanFq8uZXCJcbiAgfSxcbiAgXCJjcDI4NTk0XCI6IFwiaXNvODg1OTRcIixcbiAgXCJpc284ODU5NVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg0IHQgtCD0ITQhdCG0IfQiNCJ0IrQi9CMwq3QjtCP0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/ihJbRkdGS0ZPRlNGV0ZbRl9GY0ZnRmtGb0ZzCp9Ge0Z9cIlxuICB9LFxuICBcImNwMjg1OTVcIjogXCJpc284ODU5NVwiLFxuICBcImlzbzg4NTk2XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDvv73vv73vv73CpO+/ve+/ve+/ve+/ve+/ve+/ve+/vdiMwq3vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73Ym++/ve+/ve+/vdif77+92KHYotij2KTYpdim2KfYqNip2KrYq9is2K3Yrtiv2LDYsdiy2LPYtNi12LbYt9i42LnYuu+/ve+/ve+/ve+/ve+/vdmA2YHZgtmD2YTZhdmG2YfZiNmJ2YrZi9mM2Y3ZjtmP2ZDZkdmS77+977+977+977+977+977+977+977+977+977+977+977+977+9XCJcbiAgfSxcbiAgXCJjcDI4NTk2XCI6IFwiaXNvODg1OTZcIixcbiAgXCJpc284ODU5N1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg4oCY4oCZwqPigqzigq/CpsKnwqjCqc26wqvCrMKt77+94oCVwrDCscKywrPOhM6FzobCt86IzonOisK7zozCvc6Ozo/OkM6RzpLOk86UzpXOls6XzpjOmc6azpvOnM6dzp7On86gzqHvv73Oo86kzqXOps6nzqjOqc6qzqvOrM6tzq7Or86wzrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Cz4PPhM+Fz4bPh8+Iz4nPis+Lz4zPjc+O77+9XCJcbiAgfSxcbiAgXCJjcDI4NTk3XCI6IFwiaXNvODg1OTdcIixcbiAgXCJpc284ODU5OFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg77+9wqLCo8KkwqXCpsKnwqjCqcOXwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5w7fCu8K8wr3Cvu+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veKAl9eQ15HXkteT15TXldeW15fXmNeZ15rXm9ec153Xntef16DXodei16PXpNel16bXp9eo16nXqu+/ve+/veKAjuKAj++/vVwiXG4gIH0sXG4gIFwiY3AyODU5OFwiOiBcImlzbzg4NTk4XCIsXG4gIFwiaXNvODg1OTlcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/EnsORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMSwxZ7Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvxJ/DscOyw7PDtMO1w7bDt8O4w7nDusO7w7zEscWfw79cIlxuICB9LFxuICBcImNwMjg1OTlcIjogXCJpc284ODU5OVwiLFxuICBcImlzbzg4NTkxMFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgxITEksSixKrEqMS2wqfEu8SQxaDFpsW9wq3FqsWKwrDEhcSTxKPEq8SpxLfCt8S8xJHFocWnxb7igJXFq8WLxIDDgcOCw4PDhMOFw4bErsSMw4nEmMOLxJbDjcOOw4/DkMWFxYzDk8OUw5XDlsWow5jFssOaw5vDnMOdw57Dn8SBw6HDosOjw6TDpcOmxK/EjcOpxJnDq8SXw63DrsOvw7DFhsWNw7PDtMO1w7bFqcO4xbPDusO7w7zDvcO+xLhcIlxuICB9LFxuICBcImNwMjg2MDBcIjogXCJpc284ODU5MTBcIixcbiAgXCJpc284ODU5MTFcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOC4geC4guC4g+C4hOC4heC4huC4h+C4iOC4ieC4iuC4i+C4jOC4jeC4juC4j+C4kOC4keC4kuC4k+C4lOC4leC4luC4l+C4mOC4meC4muC4m+C4nOC4neC4nuC4n+C4oOC4oeC4ouC4o+C4pOC4peC4puC4p+C4qOC4qeC4quC4q+C4rOC4reC4ruC4r+C4sOC4seC4suC4s+C4tOC4teC4tuC4t+C4uOC4ueC4uu+/ve+/ve+/ve+/veC4v+C5gOC5geC5guC5g+C5hOC5heC5huC5h+C5iOC5ieC5iuC5i+C5jOC5jeC5juC5j+C5kOC5keC5kuC5k+C5lOC5leC5luC5l+C5mOC5meC5muC5m++/ve+/ve+/ve+/vVwiXG4gIH0sXG4gIFwiY3AyODYwMVwiOiBcImlzbzg4NTkxMVwiLFxuICBcImlzbzg4NTkxM1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg4oCdwqLCo8Kk4oCewqbCp8OYwqnFlsKrwqzCrcKuw4bCsMKxwrLCs+KAnMK1wrbCt8O4wrnFl8K7wrzCvcK+w6bEhMSuxIDEhsOEw4XEmMSSxIzDicW5xJbEosS2xKrEu8WgxYPFhcOTxYzDlcOWw5fFssWBxZrFqsOcxbvFvcOfxIXEr8SBxIfDpMOlxJnEk8SNw6nFusSXxKPEt8SrxLzFocWExYbDs8WNw7XDtsO3xbPFgsWbxavDvMW8xb7igJlcIlxuICB9LFxuICBcImNwMjg2MDNcIjogXCJpc284ODU5MTNcIixcbiAgXCJpc284ODU5MTRcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOG4guG4g8KjxIrEi+G4isKn4bqAwqnhuoLhuIvhu7LCrcKuxbjhuJ7huJ/EoMSh4bmA4bmBwrbhuZbhuoHhuZfhuoPhuaDhu7PhuoThuoXhuaHDgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8W0w5HDksOTw5TDlcOW4bmqw5jDmcOaw5vDnMOdxbbDn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvxbXDscOyw7PDtMO1w7bhuavDuMO5w7rDu8O8w73Ft8O/XCJcbiAgfSxcbiAgXCJjcDI4NjA0XCI6IFwiaXNvODg1OTE0XCIsXG4gIFwiaXNvODg1OTE1XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPigqzCpcWgwqfFocKpwqrCq8Kswq3CrsKvwrDCscKywrPFvcK1wrbCt8W+wrnCusK7xZLFk8W4wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53DnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77Dv1wiXG4gIH0sXG4gIFwiY3AyODYwNVwiOiBcImlzbzg4NTkxNVwiLFxuICBcImlzbzg4NTkxNlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgxITEhcWB4oKs4oCexaDCp8WhwqnImMKrxbnCrcW6xbvCsMKxxIzFgsW94oCdwrbCt8W+xI3ImcK7xZLFk8W4xbzDgMOBw4LEgsOExIbDhsOHw4jDicOKw4vDjMONw47Dj8SQxYPDksOTw5TFkMOWxZrFsMOZw5rDm8OcxJjImsOfw6DDocOixIPDpMSHw6bDp8Oow6nDqsOrw6zDrcOuw6/EkcWEw7LDs8O0xZHDtsWbxbHDucO6w7vDvMSZyJvDv1wiXG4gIH0sXG4gIFwiY3AyODYwNlwiOiBcImlzbzg4NTkxNlwiLFxuICBcImNwNDM3XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsOsw4TDhcOJw6bDhsO0w7bDssO7w7nDv8OWw5zCosKjwqXigqfGksOhw63Ds8O6w7HDkcKqwrrCv+KMkMKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqBcIlxuICB9LFxuICBcImlibTQzN1wiOiBcImNwNDM3XCIsXG4gIFwiY3NpYm00MzdcIjogXCJjcDQzN1wiLFxuICBcImNwNzM3XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLOkc6SzpPOlM6VzpbOl86YzpnOms6bzpzOnc6ezp/OoM6hzqPOpM6lzqbOp86ozqnOsc6yzrPOtM61zrbOt864zrnOus67zrzOvc6+zr/PgM+Bz4PPgs+Ez4XPhs+Hz4jilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDPic6szq3Ors+Kzq/PjM+Nz4vPjs6GzojOic6KzozOjs6PwrHiiaXiiaTOqs6rw7fiiYjCsOKImcK34oia4oG/wrLilqDCoFwiXG4gIH0sXG4gIFwiaWJtNzM3XCI6IFwiY3A3MzdcIixcbiAgXCJjc2libTczN1wiOiBcImNwNzM3XCIsXG4gIFwiY3A3NzVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsSGw7zDqcSBw6TEo8OlxIfFgsSTxZbFl8SrxbnDhMOFw4nDpsOGxY3DtsSiwqLFmsWbw5bDnMO4wqPDmMOXwqTEgMSqw7PFu8W8xbrigJ3CpsKpwq7CrMK9wrzFgcKrwrvilpHilpLilpPilILilKTEhMSMxJjEluKVo+KVkeKVl+KVncSuxaDilJDilJTilLTilKzilJzilIDilLzFssWq4pWa4pWU4pWp4pWm4pWg4pWQ4pWsxb3EhcSNxJnEl8SvxaHFs8Wrxb7ilJjilIzilojiloTilozilpDiloDDk8OfxYzFg8O1w5XCtcWExLbEt8S7xLzFhsSSxYXigJnCrcKx4oCcwr7CtsKnw7figJ7CsOKImcK3wrnCs8Ky4pagwqBcIlxuICB9LFxuICBcImlibTc3NVwiOiBcImNwNzc1XCIsXG4gIFwiY3NpYm03NzVcIjogXCJjcDc3NVwiLFxuICBcImNwODUwXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsOsw4TDhcOJw6bDhsO0w7bDssO7w7nDv8OWw5zDuMKjw5jDl8aSw6HDrcOzw7rDscORwqrCusK/wq7CrMK9wrzCocKrwrvilpHilpLilpPilILilKTDgcOCw4DCqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzDo8OD4pWa4pWU4pWp4pWm4pWg4pWQ4pWswqTDsMOQw4rDi8OIxLHDjcOOw4/ilJjilIzilojiloTCpsOM4paAw5PDn8OUw5LDtcOVwrXDvsOew5rDm8OZw73DncKvwrTCrcKx4oCXwr7CtsKnw7fCuMKwwqjCt8K5wrPCsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NTBcIjogXCJjcDg1MFwiLFxuICBcImNzaWJtODUwXCI6IFwiY3A4NTBcIixcbiAgXCJjcDg1MlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDpMWvxIfDp8WCw6vFkMWRw67FucOExIbDicS5xLrDtMO2xL3EvsWaxZvDlsOcxaTFpcWBw5fEjcOhw63Ds8O6xITEhcW9xb7EmMSZwqzFusSMxZ/Cq8K74paR4paS4paT4pSC4pSkw4HDgsSaxZ7ilaPilZHilZfilZ3Fu8W84pSQ4pSU4pS04pSs4pSc4pSA4pS8xILEg+KVmuKVlOKVqeKVpuKVoOKVkOKVrMKkxJHEkMSOw4vEj8WHw43DjsSb4pSY4pSM4paI4paExaLFruKWgMOTw5/DlMWDxYTFiMWgxaHFlMOaxZXFsMO9w53Fo8K0wq3Lncuby4fLmMKnw7fCuMKwwqjLmcWxxZjFmeKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NTJcIjogXCJjcDg1MlwiLFxuICBcImNzaWJtODUyXCI6IFwiY3A4NTJcIixcbiAgXCJjcDg1NVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi0ZLQgtGT0IPRkdCB0ZTQhNGV0IXRltCG0ZfQh9GY0IjRmdCJ0ZrQitGb0IvRnNCM0Z7QjtGf0I/RjtCu0YrQqtCw0JDQsdCR0YbQptC00JTQtdCV0YTQpNCz0JPCq8K74paR4paS4paT4pSC4pSk0YXQpdC40JjilaPilZHilZfilZ3QudCZ4pSQ4pSU4pS04pSs4pSc4pSA4pS80LrQmuKVmuKVlOKVqeKVpuKVoOKVkOKVrMKk0LvQm9C80JzQvdCd0L7QntC/4pSY4pSM4paI4paE0J/Rj+KWgNCv0YDQoNGB0KHRgtCi0YPQo9C20JbQstCS0YzQrOKElsKt0YvQq9C30JfRiNCo0Y3QrdGJ0KnRh9CnwqfilqDCoFwiXG4gIH0sXG4gIFwiaWJtODU1XCI6IFwiY3A4NTVcIixcbiAgXCJjc2libTg1NVwiOiBcImNwODU1XCIsXG4gIFwiY3A4NTZcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIteQ15HXkteT15TXldeW15fXmNeZ15rXm9ec153Xntef16DXodei16PXpNel16bXp9eo16nXqu+/vcKj77+9w5fvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73CrsKswr3CvO+/vcKrwrvilpHilpLilpPilILilKTvv73vv73vv73CqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzvv73vv73ilZrilZTilanilabilaDilZDilazCpO+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veKUmOKUjOKWiOKWhMKm77+94paA77+977+977+977+977+977+9wrXvv73vv73vv73vv73vv73vv73vv73Cr8K0wq3CseKAl8K+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoFwiXG4gIH0sXG4gIFwiaWJtODU2XCI6IFwiY3A4NTZcIixcbiAgXCJjc2libTg1NlwiOiBcImNwODU2XCIsXG4gIFwiY3A4NTdcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOHw7zDqcOiw6TDoMOlw6fDqsOrw6jDr8OuxLHDhMOFw4nDpsOGw7TDtsOyw7vDucSww5bDnMO4wqPDmMWexZ/DocOtw7PDusOxw5HEnsSfwr/CrsKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpMOBw4LDgMKp4pWj4pWR4pWX4pWdwqLCpeKUkOKUlOKUtOKUrOKUnOKUgOKUvMOjw4PilZrilZTilanilabilaDilZDilazCpMK6wqrDisOLw4jvv73DjcOOw4/ilJjilIzilojiloTCpsOM4paAw5PDn8OUw5LDtcOVwrXvv73Dl8Oaw5vDmcOsw7/Cr8K0wq3Cse+/vcK+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoFwiXG4gIH0sXG4gIFwiaWJtODU3XCI6IFwiY3A4NTdcIixcbiAgXCJjc2libTg1N1wiOiBcImNwODU3XCIsXG4gIFwiY3A4NThcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOHw7zDqcOiw6TDoMOlw6fDqsOrw6jDr8Ouw6zDhMOFw4nDpsOGw7TDtsOyw7vDucO/w5bDnMO4wqPDmMOXxpLDocOtw7PDusOxw5HCqsK6wr/CrsKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpMOBw4LDgMKp4pWj4pWR4pWX4pWdwqLCpeKUkOKUlOKUtOKUrOKUnOKUgOKUvMOjw4PilZrilZTilanilabilaDilZDilazCpMOww5DDisOLw4jigqzDjcOOw4/ilJjilIzilojiloTCpsOM4paAw5PDn8OUw5LDtcOVwrXDvsOew5rDm8OZw73DncKvwrTCrcKx4oCXwr7CtsKnw7fCuMKwwqjCt8K5wrPCsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NThcIjogXCJjcDg1OFwiLFxuICBcImNzaWJtODU4XCI6IFwiY3A4NThcIixcbiAgXCJjcDg2MFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDo8Ogw4HDp8Oqw4rDqMONw5TDrMODw4LDicOAw4jDtMO1w7LDmsO5w4zDlcOcwqLCo8OZ4oKnw5PDocOtw7PDusOxw5HCqsK6wr/DksKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqBcIlxuICB9LFxuICBcImlibTg2MFwiOiBcImNwODYwXCIsXG4gIFwiY3NpYm04NjBcIjogXCJjcDg2MFwiLFxuICBcImNwODYxXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow5DDsMOew4TDhcOJw6bDhsO0w7bDvsO7w53DvcOWw5zDuMKjw5jigqfGksOhw63Ds8O6w4HDjcOTw5rCv+KMkMKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqBcIlxuICB9LFxuICBcImlibTg2MVwiOiBcImNwODYxXCIsXG4gIFwiY3NpYm04NjFcIjogXCJjcDg2MVwiLFxuICBcImNwODYyXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLXkNeR15LXk9eU15XXlteX15jXmdea15vXnNed157Xn9eg16HXotej16TXpdem16fXqNep16rCosKjwqXigqfGksOhw63Ds8O6w7HDkcKqwrrCv+KMkMKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqBcIlxuICB9LFxuICBcImlibTg2MlwiOiBcImNwODYyXCIsXG4gIFwiY3NpYm04NjJcIjogXCJjcDg2MlwiLFxuICBcImNwODYzXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDh8O8w6nDosOCw6DCtsOnw6rDq8Oow6/DruKAl8OAwqfDicOIw4rDtMOLw4/Du8O5wqTDlMOcwqLCo8OZw5vGksKmwrTDs8O6wqjCuMKzwq/DjuKMkMKswr3CvMK+wqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqBcIlxuICB9LFxuICBcImlibTg2M1wiOiBcImNwODYzXCIsXG4gIFwiY3NpYm04NjNcIjogXCJjcDg2M1wiLFxuICBcImNwODY0XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCJcXHUwMDAwXFx1MDAwMVxcdTAwMDJcXHUwMDAzXFx1MDAwNFxcdTAwMDVcXHUwMDA2XFx1MDAwN1xcYlxcdFxcblxcdTAwMGJcXGZcXHJcXHUwMDBlXFx1MDAwZlxcdTAwMTBcXHUwMDExXFx1MDAxMlxcdTAwMTNcXHUwMDE0XFx1MDAxNVxcdTAwMTZcXHUwMDE3XFx1MDAxOFxcdTAwMTlcXHUwMDFhXFx1MDAxYlxcdTAwMWNcXHUwMDFkXFx1MDAxZVxcdTAwMWYgIVxcXCIjJNmqJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/wrDCt+KImeKImuKWkuKUgOKUguKUvOKUpOKUrOKUnOKUtOKUkOKUjOKUlOKUmM6y4oiez4bCscK9wrziiYjCq8K777u377u477+977+977u777u877+9wqDCre+6gsKjwqTvuoTvv73vv73vuo7vuo/vupXvupnYjO+6ne+6oe+6pdmg2aHZotmj2aTZpdmm2afZqNmp77uR2JvvurHvurXvurnYn8Ki77qA77qB77qD77qF77uK77qL77qN77qR77qT77qX77qb77qf77qj77qn77qp77qr77qt77qv77qz77q377q777q/77uB77uF77uL77uPwqbCrMO3w5fvu4nZgO+7k++7l++7m++7n++7o++7p++7q++7re+7r++7s++6ve+7jO+7ju+7je+7oe+5vdmR77ul77up77us77uw77uy77uQ77uV77u177u277ud77uZ77ux4pag77+9XCJcbiAgfSxcbiAgXCJpYm04NjRcIjogXCJjcDg2NFwiLFxuICBcImNzaWJtODY0XCI6IFwiY3A4NjRcIixcbiAgXCJjcDg2NVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDpMOgw6XDp8Oqw6vDqMOvw67DrMOEw4XDicOmw4bDtMO2w7LDu8O5w7/DlsOcw7jCo8OY4oKnxpLDocOtw7PDusOxw5HCqsK6wr/ijJDCrMK9wrzCocKrwqTilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjVcIjogXCJjcDg2NVwiLFxuICBcImNzaWJtODY1XCI6IFwiY3A4NjVcIixcbiAgXCJjcDg2NlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paA0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/QgdGR0ITRlNCH0ZfQjtGewrDiiJnCt+KImuKElsKk4pagwqBcIlxuICB9LFxuICBcImlibTg2NlwiOiBcImNwODY2XCIsXG4gIFwiY3NpYm04NjZcIjogXCJjcDg2NlwiLFxuICBcImNwODY5XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLvv73vv73vv73vv73vv73vv73Ohu+/vcK3wqzCpuKAmOKAmc6I4oCVzonOis6qzozvv73vv73Ojs6rwqnOj8KywrPOrMKjzq3Ors6vz4rOkM+Mz43Okc6SzpPOlM6VzpbOl8K9zpjOmcKrwrvilpHilpLilpPilILilKTOms6bzpzOneKVo+KVkeKVl+KVnc6ezp/ilJDilJTilLTilKzilJzilIDilLzOoM6h4pWa4pWU4pWp4pWm4pWg4pWQ4pWszqPOpM6lzqbOp86ozqnOsc6yzrPilJjilIzilojiloTOtM614paAzrbOt864zrnOus67zrzOvc6+zr/PgM+Bz4PPgs+EzoTCrcKxz4XPhs+HwqfPiM6FwrDCqM+Jz4vOsM+O4pagwqBcIlxuICB9LFxuICBcImlibTg2OVwiOiBcImNwODY5XCIsXG4gIFwiY3NpYm04NjlcIjogXCJjcDg2OVwiLFxuICBcImNwOTIyXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKu4oC+wrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8Wgw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53FvcOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/FocOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9xb7Dv1wiXG4gIH0sXG4gIFwiaWJtOTIyXCI6IFwiY3A5MjJcIixcbiAgXCJjc2libTkyMlwiOiBcImNwOTIyXCIsXG4gIFwiY3AxMDQ2XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLvuojDl8O376O276O176O076O377mxwojilqDilILilIDilJDilIzilJTilJjvubnvubvvub3vub/vubfvuorvu7Dvu7Pvu7Lvu47vu4/vu5Dvu7bvu7jvu7rvu7zCoO+juu+jue+juMKk76O777qL77qR77qX77qb77qf77qj2IzCre+6p++6s9mg2aHZotmj2aTZpdmm2afZqNmp77q32Jvvurvvur/vu4rYn++7i9ih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22Lfvu4fYudi677uM77qC77qE77qO77uT2YDZgdmC2YPZhNmF2YbZh9mI2YnZitmL2YzZjdmO2Y/ZkNmR2ZLvu5fvu5vvu5/vo7zvu7Xvu7fvu7nvu7vvu6Pvu6fvu6zvu6nvv71cIlxuICB9LFxuICBcImlibTEwNDZcIjogXCJjcDEwNDZcIixcbiAgXCJjc2libTEwNDZcIjogXCJjcDEwNDZcIixcbiAgXCJjcDExMjRcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoNCB0ILSkNCE0IXQhtCH0IjQidCK0IvQjMKt0I7Qj9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGP4oSW0ZHRktKR0ZTRldGW0ZfRmNGZ0ZrRm9GcwqfRntGfXCJcbiAgfSxcbiAgXCJpYm0xMTI0XCI6IFwiY3AxMTI0XCIsXG4gIFwiY3NpYm0xMTI0XCI6IFwiY3AxMTI0XCIsXG4gIFwiY3AxMTI1XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/ilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDRgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj9CB0ZHSkNKR0ITRlNCG0ZbQh9GXwrfiiJrihJbCpOKWoMKgXCJcbiAgfSxcbiAgXCJpYm0xMTI1XCI6IFwiY3AxMTI1XCIsXG4gIFwiY3NpYm0xMTI1XCI6IFwiY3AxMTI1XCIsXG4gIFwiY3AxMTI5XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8WTwqnCqsKrwqzCrcKuwq/CsMKxwrLCs8W4wrXCtsK3xZLCucK6wrvCvMK9wr7Cv8OAw4HDgsSCw4TDhcOGw4fDiMOJw4rDi8yAw43DjsOPxJDDkcyJw5PDlMagw5bDl8OYw5nDmsObw5zGr8yDw5/DoMOhw6LEg8Okw6XDpsOnw6jDqcOqw6vMgcOtw67Dr8SRw7HMo8Ozw7TGocO2w7fDuMO5w7rDu8O8xrDigqvDv1wiXG4gIH0sXG4gIFwiaWJtMTEyOVwiOiBcImNwMTEyOVwiLFxuICBcImNzaWJtMTEyOVwiOiBcImNwMTEyOVwiLFxuICBcImNwMTEzM1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg4LqB4LqC4LqE4LqH4LqI4Lqq4LqK4LqN4LqU4LqV4LqW4LqX4LqZ4Lqa4Lqb4Lqc4Lqd4Lqe4Lqf4Lqh4Lqi4Lqj4Lql4Lqn4Lqr4Lqt4Lqu77+977+977+94Lqv4Lqw4Lqy4Lqz4Lq04Lq14Lq24Lq34Lq44Lq54Lq84Lqx4Lq74Lq977+977+977+94LuA4LuB4LuC4LuD4LuE4LuI4LuJ4LuK4LuL4LuM4LuN4LuG77+94Luc4Lud4oKt77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+94LuQ4LuR4LuS4LuT4LuU4LuV4LuW4LuX4LuY4LuZ77+977+9wqLCrMKm77+9XCJcbiAgfSxcbiAgXCJpYm0xMTMzXCI6IFwiY3AxMTMzXCIsXG4gIFwiY3NpYm0xMTMzXCI6IFwiY3AxMTMzXCIsXG4gIFwiY3AxMTYxXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73guYjguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrguYnguYrguYvigqzguL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvCosKswqbCoFwiXG4gIH0sXG4gIFwiaWJtMTE2MVwiOiBcImNwMTE2MVwiLFxuICBcImNzaWJtMTE2MVwiOiBcImNwMTE2MVwiLFxuICBcImNwMTE2MlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKswoHCgsKDwoTigKbChsKHwojCicKKwovCjMKNwo7Cj8KQ4oCY4oCZ4oCc4oCd4oCi4oCT4oCUwpjCmcKawpvCnMKdwp7Cn8Kg4LiB4LiC4LiD4LiE4LiF4LiG4LiH4LiI4LiJ4LiK4LiL4LiM4LiN4LiO4LiP4LiQ4LiR4LiS4LiT4LiU4LiV4LiW4LiX4LiY4LiZ4Lia4Lib4Lic4Lid4Lie4Lif4Lig4Lih4Lii4Lij4Lik4Lil4Lim4Lin4Lio4Lip4Liq4Lir4Lis4Lit4Liu4Liv4Liw4Lix4Liy4Liz4Li04Li14Li24Li34Li44Li54Li677+977+977+977+94Li/4LmA4LmB4LmC4LmD4LmE4LmF4LmG4LmH4LmI4LmJ4LmK4LmL4LmM4LmN4LmO4LmP4LmQ4LmR4LmS4LmT4LmU4LmV4LmW4LmX4LmY4LmZ4Lma4Lmb77+977+977+977+9XCJcbiAgfSxcbiAgXCJpYm0xMTYyXCI6IFwiY3AxMTYyXCIsXG4gIFwiY3NpYm0xMTYyXCI6IFwiY3AxMTYyXCIsXG4gIFwiY3AxMTYzXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPigqzCpcKmwqfFk8KpwqrCq8Kswq3CrsKvwrDCscKywrPFuMK1wrbCt8WSwrnCusK7wrzCvcK+wr/DgMOBw4LEgsOEw4XDhsOHw4jDicOKw4vMgMONw47Dj8SQw5HMicOTw5TGoMOWw5fDmMOZw5rDm8Ocxq/Mg8Ofw6DDocOixIPDpMOlw6bDp8Oow6nDqsOrzIHDrcOuw6/EkcOxzKPDs8O0xqHDtsO3w7jDucO6w7vDvMaw4oKrw79cIlxuICB9LFxuICBcImlibTExNjNcIjogXCJjcDExNjNcIixcbiAgXCJjc2libTExNjNcIjogXCJjcDExNjNcIixcbiAgXCJtYWNjcm9hdGlhblwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvOKAoMKwwqLCo8Kn4oCiwrbDn8KuxaDihKLCtMKo4omgxb3DmOKInsKx4omk4oml4oiGwrXiiILiiJHiiI/FoeKIq8KqwrrihKbFvsO4wr/CocKs4oiaxpLiiYjEhsKrxIzigKbCoMOAw4PDlcWSxZPEkOKAlOKAnOKAneKAmOKAmcO34peK77+9wqnigYTCpOKAueKAusOGwrvigJPCt+KAmuKAnuKAsMOCxIfDgcSNw4jDjcOOw4/DjMOTw5TEkcOSw5rDm8OZxLHLhsucwq/PgMOLy5rCuMOKw6bLh1wiXG4gIH0sXG4gIFwibWFjY3lyaWxsaWNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItCQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/igKDCsMKiwqPCp+KAosK20IbCrsKp4oSi0ILRkuKJoNCD0ZPiiJ7CseKJpOKJpdGWwrXiiILQiNCE0ZTQh9GX0InRmdCK0ZrRmNCFwqziiJrGkuKJiOKIhsKrwrvigKbCoNCL0ZvQjNGc0ZXigJPigJTigJzigJ3igJjigJnDt+KAntCO0Z7Qj9Gf4oSW0IHRkdGP0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7CpFwiXG4gIH0sXG4gIFwibWFjZ3JlZWtcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOEwrnCssOJwrPDlsOczoXDoMOiw6TOhMKow6fDqcOow6rDq8Kj4oSiw67Dr+KAosK94oCww7TDtsKmwq3DucO7w7zigKDOk86UzpjOm86ezqDDn8KuwqnOo86qwqfiiaDCsM6HzpHCseKJpOKJpcKlzpLOlc6WzpfOmc6azpzOps6rzqjOqc6szp3CrM6fzqHiiYjOpMKrwrvigKbCoM6lzqfOhs6IxZPigJPigJXigJzigJ3igJjigJnDt86JzorOjM6Ozq3Ors6vz4zOj8+NzrHOss+IzrTOtc+GzrPOt865zr7Ous67zrzOvc6/z4DPjs+Bz4PPhM64z4nPgs+Hz4XOts+Kz4vOkM6w77+9XCJcbiAgfSxcbiAgXCJtYWNpY2VsYW5kXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O8w53CsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMOGw5jiiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbDpsO4wr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGEwqTDkMOww57DvsO9wrfigJrigJ7igLDDgsOKw4HDi8OIw43DjsOPw4zDk8OU77+9w5LDmsObw5nEscuGy5zCr8uYy5nLmsK4y53Lm8uHXCJcbiAgfSxcbiAgXCJtYWNyb21hblwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvOKAoMKwwqLCo8Kn4oCiwrbDn8KuwqnihKLCtMKo4omgw4bDmOKInsKx4omk4omlwqXCteKIguKIkeKIj8+A4oirwqrCuuKEpsOmw7jCv8KhwqziiJrGkuKJiOKIhsKrwrvigKbCoMOAw4PDlcWSxZPigJPigJTigJzigJ3igJjigJnDt+KXisO/xbjigYTCpOKAueKAuu+sge+sguKAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLh1wiXG4gIH0sXG4gIFwibWFjcm9tYW5pYVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvOKAoMKwwqLCo8Kn4oCiwrbDn8KuwqnihKLCtMKo4omgxILFnuKInsKx4omk4omlwqXCteKIguKIkeKIj8+A4oirwqrCuuKEpsSDxZ/Cv8KhwqziiJrGkuKJiOKIhsKrwrvigKbCoMOAw4PDlcWSxZPigJPigJTigJzigJ3igJjigJnDt+KXisO/xbjigYTCpOKAueKAusWixaPigKHCt+KAmuKAnuKAsMOCw4rDgcOLw4jDjcOOw4/DjMOTw5Tvv73DksOaw5vDmcSxy4bLnMKvy5jLmcuawrjLncuby4dcIlxuICB9LFxuICBcIm1hY3RoYWlcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKrwrvigKbvoozvoo/vopLvopXvopjvoovvoo7vopHvopTvopfigJzigJ3vopnvv73igKLvooTvoonvooXvoobvoofvoojvoorvoo3vopDvopPvopbigJjigJnvv73CoOC4geC4guC4g+C4hOC4heC4huC4h+C4iOC4ieC4iuC4i+C4jOC4jeC4juC4j+C4kOC4keC4kuC4k+C4lOC4leC4luC4l+C4mOC4meC4muC4m+C4nOC4neC4nuC4n+C4oOC4oeC4ouC4o+C4pOC4peC4puC4p+C4qOC4qeC4quC4q+C4rOC4reC4ruC4r+C4sOC4seC4suC4s+C4tOC4teC4tuC4t+C4uOC4ueC4uu+7v+KAi+KAk+KAlOC4v+C5gOC5geC5guC5g+C5hOC5heC5huC5h+C5iOC5ieC5iuC5i+C5jOC5jeKEouC5j+C5kOC5keC5kuC5k+C5lOC5leC5luC5l+C5mOC5mcKuwqnvv73vv73vv73vv71cIlxuICB9LFxuICBcIm1hY3R1cmtpc2hcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMOGw5jiiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbDpsO4wr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W4xJ7En8SwxLHFnsWf4oChwrfigJrigJ7igLDDgsOKw4HDi8OIw43DjsOPw4zDk8OU77+9w5LDmsObw5nvv73Lhsucwq/LmMuZy5rCuMudy5vLh1wiXG4gIH0sXG4gIFwibWFjdWtyYWluZVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr+KAoMKw0pDCo8Kn4oCiwrbQhsKuwqnihKLQgtGS4omg0IPRk+KInsKx4omk4oml0ZbCtdKR0IjQhNGU0IfRl9CJ0ZnQitGa0ZjQhcKs4oiaxpLiiYjiiIbCq8K74oCmwqDQi9Gb0IzRnNGV4oCT4oCU4oCc4oCd4oCY4oCZw7figJ7QjtGe0I/Rn+KEltCB0ZHRj9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGOwqRcIlxuICB9LFxuICBcImtvaThyXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLilIDilILilIzilJDilJTilJjilJzilKTilKzilLTilLziloDiloTilojilozilpDilpHilpLilpPijKDilqDiiJniiJriiYjiiaTiiaXCoOKMocKwwrLCt8O34pWQ4pWR4pWS0ZHilZPilZTilZXilZbilZfilZjilZnilZrilZvilZzilZ3ilZ7ilZ/ilaDilaHQgeKVouKVo+KVpOKVpeKVpuKVp+KVqOKVqeKVquKVq+KVrMKp0Y7QsNCx0YbQtNC10YTQs9GF0LjQudC60LvQvNC90L7Qv9GP0YDRgdGC0YPQttCy0YzRi9C30YjRjdGJ0YfRitCu0JDQkdCm0JTQldCk0JPQpdCY0JnQmtCb0JzQndCe0J/Qr9Cg0KHQotCj0JbQktCs0KvQl9Co0K3QqdCn0KpcIlxuICB9LFxuICBcImtvaTh1XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLilIDilILilIzilJDilJTilJjilJzilKTilKzilLTilLziloDiloTilojilozilpDilpHilpLilpPijKDilqDiiJniiJriiYjiiaTiiaXCoOKMocKwwrLCt8O34pWQ4pWR4pWS0ZHRlOKVlNGW0ZfilZfilZjilZnilZrilZvSkeKVneKVnuKVn+KVoOKVodCB0ITilaPQhtCH4pWm4pWn4pWo4pWp4pWq0pDilazCqdGO0LDQsdGG0LTQtdGE0LPRhdC40LnQutC70LzQvdC+0L/Rj9GA0YHRgtGD0LbQstGM0YvQt9GI0Y3RidGH0YrQrtCQ0JHQptCU0JXQpNCT0KXQmNCZ0JrQm9Cc0J3QntCf0K/QoNCh0KLQo9CW0JLQrNCr0JfQqNCt0KnQp9CqXCJcbiAgfSxcbiAgXCJrb2k4cnVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKUgOKUguKUjOKUkOKUlOKUmOKUnOKUpOKUrOKUtOKUvOKWgOKWhOKWiOKWjOKWkOKWkeKWkuKWk+KMoOKWoOKImeKImuKJiOKJpOKJpcKg4oyhwrDCssK3w7filZDilZHilZLRkdGU4pWU0ZbRl+KVl+KVmOKVmeKVmuKVm9KR0Z7ilZ7ilZ/ilaDilaHQgdCE4pWj0IbQh+KVpuKVp+KVqOKVqeKVqtKQ0I7CqdGO0LDQsdGG0LTQtdGE0LPRhdC40LnQutC70LzQvdC+0L/Rj9GA0YHRgtGD0LbQstGM0YvQt9GI0Y3RidGH0YrQrtCQ0JHQptCU0JXQpNCT0KXQmNCZ0JrQm9Cc0J3QntCf0K/QoNCh0KLQo9CW0JLQrNCr0JfQqNCt0KnQp9CqXCJcbiAgfSxcbiAgXCJrb2k4dFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi0pvSk+KAmtKS4oCe4oCm4oCg4oCh77+94oCw0rPigLnSstK30rbvv73SmuKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEou+/veKAuu+/ve+/ve+/ve+/ve+/vdOv067RkcKk06PCpsKn77+977+977+9wqvCrMKtwq7vv73CsMKxwrLQge+/vdOiwrbCt++/veKElu+/vcK777+977+977+9wqnRjtCw0LHRhtC00LXRhNCz0YXQuNC50LrQu9C80L3QvtC/0Y/RgNGB0YLRg9C20LLRjNGL0LfRiNGN0YnRh9GK0K7QkNCR0KbQlNCV0KTQk9Cl0JjQmdCa0JvQnNCd0J7Qn9Cv0KDQodCi0KPQltCS0KzQq9CX0KjQrdCp0KfQqlwiXG4gIH0sXG4gIFwiYXJtc2NpaThcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoO+/vdaH1okpKMK7wqvigJQu1Z0sLdaK4oCm1ZzVm9We1LHVodSy1aLUs9Wj1LTVpNS11aXUttWm1LfVp9S41ajUudWp1LrVqtS71avUvNWs1L3VrdS+1a7Uv9Wv1YDVsNWB1bHVgtWy1YPVs9WE1bTVhdW11YbVttWH1bfViNW41YnVudWK1brVi9W71YzVvNWN1b3VjtW+1Y/Vv9WQ1oDVkdaB1ZLWgtWT1oPVlNaE1ZXWhdWW1obVmu+/vVwiXG4gIH0sXG4gIFwicmsxMDQ4XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLQgtCD4oCa0ZPigJ7igKbigKDigKHigqzigLDQieKAudCK0prSutCP0ZLigJjigJnigJzigJ3igKLigJPigJTvv73ihKLRmeKAutGa0pvSu9GfwqDSsNKx05jCpNOowqbCp9CBwqnSksKrwqzCrcKu0q7CsMKx0IbRltOpwrXCtsK30ZHihJbSk8K705nSotKj0q/QkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj1wiXG4gIH0sXG4gIFwidGN2blwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiXFx1MDAwMMOa4bukXFx1MDAwM+G7quG7rOG7rlxcdTAwMDdcXGJcXHRcXG5cXHUwMDBiXFxmXFxyXFx1MDAwZVxcdTAwMGZcXHUwMDEw4buo4buw4buy4bu24bu4w53hu7RcXHUwMDE4XFx1MDAxOVxcdTAwMWFcXHUwMDFiXFx1MDAxY1xcdTAwMWRcXHUwMDFlXFx1MDAxZiAhXFxcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f8OA4bqiw4PDgeG6oOG6tuG6rMOI4bq64bq8w4nhurjhu4bDjOG7iMSow43hu4rDkuG7jsOVw5Phu4zhu5jhu5zhu57hu6Dhu5rhu6LDmeG7psWowqDEgsOCw4rDlMagxq/EkMSDw6LDqsO0xqHGsMSR4bqwzIDMicyDzIHMo8Og4bqjw6PDoeG6oeG6suG6seG6s+G6teG6r+G6tOG6ruG6puG6qOG6quG6pOG7gOG6t+G6p+G6qeG6q+G6peG6rcOo4buC4bq74bq9w6nhurnhu4Hhu4Phu4Xhur/hu4fDrOG7ieG7hOG6vuG7ksSpw63hu4vDsuG7lOG7j8O1w7Phu43hu5Phu5Xhu5fhu5Hhu5nhu53hu5/hu6Hhu5vhu6PDueG7luG7p8Wpw7rhu6Xhu6vhu63hu6/hu6nhu7Hhu7Phu7fhu7nDveG7teG7kFwiXG4gIH0sXG4gIFwiZ2VvcmdpYW5hY2FkZW15XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKB4oCaxpLigJ7igKbigKDigKHLhuKAsMWg4oC5xZLCjcKOwo/CkOKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk8Kdwp7FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/hg5Dhg5Hhg5Lhg5Phg5Thg5Xhg5bhg5fhg5jhg5nhg5rhg5vhg5zhg53hg57hg5/hg6Dhg6Hhg6Lhg6Phg6Thg6Xhg6bhg6fhg6jhg6nhg6rhg6vhg6zhg63hg67hg6/hg7Dhg7Hhg7Lhg7Phg7Thg7Xhg7bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77Dv1wiXG4gIH0sXG4gIFwiZ2VvcmdpYW5wc1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgeKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSwo3CjsKPwpDigJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPCncKexbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/4YOQ4YOR4YOS4YOT4YOU4YOV4YOW4YOx4YOX4YOY4YOZ4YOa4YOb4YOc4YOy4YOd4YOe4YOf4YOg4YOh4YOi4YOz4YOj4YOk4YOl4YOm4YOn4YOo4YOp4YOq4YOr4YOs4YOt4YOu4YO04YOv4YOw4YO1w6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77Dv1wiXG4gIH0sXG4gIFwicHQxNTRcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItKW0pLTrtKT4oCe4oCm0rbSrtKy0q/SoNOi0qLSmtK60rjSl+KAmOKAmeKAnOKAneKAouKAk+KAlNKz0rfSodOj0qPSm9K70rnCoNCO0Z7QiNOo0pjSsMKn0IHCqdOYwqvCrNOvwq7SnMKw0rHQhtGW0pnTqcK2wrfRkeKEltOZwrvRmNKq0qvSndCQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPXCJcbiAgfSxcbiAgXCJ2aXNjaWlcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIlxcdTAwMDBcXHUwMDAx4bqyXFx1MDAwM1xcdTAwMDThurThuqpcXHUwMDA3XFxiXFx0XFxuXFx1MDAwYlxcZlxcclxcdTAwMGVcXHUwMDBmXFx1MDAxMFxcdTAwMTFcXHUwMDEyXFx1MDAxM+G7tlxcdTAwMTVcXHUwMDE2XFx1MDAxN1xcdTAwMTjhu7hcXHUwMDFhXFx1MDAxYlxcdTAwMWNcXHUwMDFk4bu0XFx1MDAxZiAhXFxcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f+G6oOG6ruG6sOG6tuG6pOG6puG6qOG6rOG6vOG6uOG6vuG7gOG7guG7hOG7huG7kOG7kuG7lOG7luG7mOG7ouG7muG7nOG7nuG7iuG7juG7jOG7iOG7psWo4buk4buyw5Xhuq/hurHhurfhuqXhuqfhuqnhuq3hur3hurnhur/hu4Hhu4Phu4Xhu4fhu5Hhu5Phu5Xhu5fhu6DGoOG7meG7neG7n+G7i+G7sOG7qOG7quG7rMah4bubxq/DgMOBw4LDg+G6osSC4bqz4bq1w4jDicOK4bq6w4zDjcSo4buzxJDhu6nDksOTw5ThuqHhu7fhu6vhu63DmcOa4bu54bu1w53hu6HGsMOgw6HDosOj4bqjxIPhu6/huqvDqMOpw6rhurvDrMOtxKnhu4nEkeG7scOyw7PDtMO14buP4buN4bulw7nDusWp4bunw73hu6Phu65cIlxuICB9LFxuICBcImlzbzY0NmNuXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCJcXHUwMDAwXFx1MDAwMVxcdTAwMDJcXHUwMDAzXFx1MDAwNFxcdTAwMDVcXHUwMDA2XFx1MDAwN1xcYlxcdFxcblxcdTAwMGJcXGZcXHJcXHUwMDBlXFx1MDAwZlxcdTAwMTBcXHUwMDExXFx1MDAxMlxcdTAwMTNcXHUwMDE0XFx1MDAxNVxcdTAwMTZcXHUwMDE3XFx1MDAxOFxcdTAwMTlcXHUwMDFhXFx1MDAxYlxcdTAwMWNcXHUwMDFkXFx1MDAxZVxcdTAwMWYgIVxcXCIjwqUlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8feKAvn/vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv71cIlxuICB9LFxuICBcImlzbzY0NmpwXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCJcXHUwMDAwXFx1MDAwMVxcdTAwMDJcXHUwMDAzXFx1MDAwNFxcdTAwMDVcXHUwMDA2XFx1MDAwN1xcYlxcdFxcblxcdTAwMGJcXGZcXHJcXHUwMDBlXFx1MDAwZlxcdTAwMTBcXHUwMDExXFx1MDAxMlxcdTAwMTNcXHUwMDE0XFx1MDAxNVxcdTAwMTZcXHUwMDE3XFx1MDAxOFxcdTAwMTlcXHUwMDFhXFx1MDAxYlxcdTAwMWNcXHUwMDFkXFx1MDAxZVxcdTAwMWYgIVxcXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlvCpV1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8feKAvn/vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv71cIlxuICB9LFxuICBcImhwcm9tYW44XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDDgMOCw4jDisOLw47Dj8K0y4vLhsKoy5zDmcOb4oKkwq/DncO9wrDDh8Onw5HDscKhwr/CpMKjwqXCp8aSwqLDosOqw7TDu8Ohw6nDs8O6w6DDqMOyw7nDpMOrw7bDvMOFw67DmMOGw6XDrcO4w6bDhMOsw5bDnMOJw6/Dn8OUw4HDg8Ojw5DDsMONw4zDk8OSw5XDtcWgxaHDmsW4w7/DnsO+wrfCtcK2wr7igJTCvMK9wqrCusKr4pagwrvCse+/vVwiXG4gIH0sXG4gIFwibWFjaW50b3NoXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDDhsOY4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK64oSmw6bDuMK/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuOKBhMKk4oC54oC676yB76yC4oChwrfigJrigJ7igLDDgsOKw4HDi8OIw43DjsOPw4zDk8OU77+9w5LDmsObw5nEscuGy5zCr8uYy5nLmsK4y53Lm8uHXCJcbiAgfSxcbiAgXCJhc2NpaVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+9XCJcbiAgfSxcbiAgXCJ0aXM2MjBcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIu+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veC4geC4guC4g+C4hOC4heC4huC4h+C4iOC4ieC4iuC4i+C4jOC4jeC4juC4j+C4kOC4keC4kuC4k+C4lOC4leC4luC4l+C4mOC4meC4muC4m+C4nOC4neC4nuC4n+C4oOC4oeC4ouC4o+C4pOC4peC4puC4p+C4qOC4qeC4quC4q+C4rOC4reC4ruC4r+C4sOC4seC4suC4s+C4tOC4teC4tuC4t+C4uOC4ueC4uu+/ve+/ve+/ve+/veC4v+C5gOC5geC5guC5g+C5hOC5heC5huC5h+C5iOC5ieC5iuC5i+C5jOC5jeC5juC5j+C5kOC5keC5kuC5k+C5lOC5leC5luC5l+C5mOC5meC5muC5m++/ve+/ve+/ve+/vVwiXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3Mvc2Jjcy1kYXRhLWdlbmVyYXRlZC5qc1xuLy8gbW9kdWxlIGlkID0gMTQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlwidXNlIHN0cmljdFwiO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoXCJidWZmZXJcIikuQnVmZmVyO1xuXG4vLyBNdWx0aWJ5dGUgY29kZWMuIEluIHRoaXMgc2NoZW1lLCBhIGNoYXJhY3RlciBpcyByZXByZXNlbnRlZCBieSAxIG9yIG1vcmUgYnl0ZXMuXG4vLyBPdXIgY29kZWMgc3VwcG9ydHMgVVRGLTE2IHN1cnJvZ2F0ZXMsIGV4dGVuc2lvbnMgZm9yIEdCMTgwMzAgYW5kIHVuaWNvZGUgc2VxdWVuY2VzLlxuLy8gVG8gc2F2ZSBtZW1vcnkgYW5kIGxvYWRpbmcgdGltZSwgd2UgcmVhZCB0YWJsZSBmaWxlcyBvbmx5IHdoZW4gcmVxdWVzdGVkLlxuXG5leHBvcnRzLl9kYmNzID0gREJDU0NvZGVjO1xuXG52YXIgVU5BU1NJR05FRCA9IC0xLFxuICAgIEdCMTgwMzBfQ09ERSA9IC0yLFxuICAgIFNFUV9TVEFSVCAgPSAtMTAsXG4gICAgTk9ERV9TVEFSVCA9IC0xMDAwLFxuICAgIFVOQVNTSUdORURfTk9ERSA9IG5ldyBBcnJheSgweDEwMCksXG4gICAgREVGX0NIQVIgPSAtMTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCAweDEwMDsgaSsrKVxuICAgIFVOQVNTSUdORURfTk9ERVtpXSA9IFVOQVNTSUdORUQ7XG5cblxuLy8gQ2xhc3MgREJDU0NvZGVjIHJlYWRzIGFuZCBpbml0aWFsaXplcyBtYXBwaW5nIHRhYmxlcy5cbmZ1bmN0aW9uIERCQ1NDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7XG4gICAgdGhpcy5lbmNvZGluZ05hbWUgPSBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lO1xuICAgIGlmICghY29kZWNPcHRpb25zKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEQkNTIGNvZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRoZSBkYXRhLlwiKVxuICAgIGlmICghY29kZWNPcHRpb25zLnRhYmxlKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbmNvZGluZyAnXCIgKyB0aGlzLmVuY29kaW5nTmFtZSArIFwiJyBoYXMgbm8gZGF0YS5cIik7XG5cbiAgICAvLyBMb2FkIHRhYmxlcy5cbiAgICB2YXIgbWFwcGluZ1RhYmxlID0gY29kZWNPcHRpb25zLnRhYmxlKCk7XG5cblxuICAgIC8vIERlY29kZSB0YWJsZXM6IE1CQ1MgLT4gVW5pY29kZS5cblxuICAgIC8vIGRlY29kZVRhYmxlcyBpcyBhIHRyaWUsIGVuY29kZWQgYXMgYW4gYXJyYXkgb2YgYXJyYXlzIG9mIGludGVnZXJzLiBJbnRlcm5hbCBhcnJheXMgYXJlIHRyaWUgbm9kZXMgYW5kIGFsbCBoYXZlIGxlbiA9IDI1Ni5cbiAgICAvLyBUcmllIHJvb3QgaXMgZGVjb2RlVGFibGVzWzBdLlxuICAgIC8vIFZhbHVlczogPj0gIDAgLT4gdW5pY29kZSBjaGFyYWN0ZXIgY29kZS4gY2FuIGJlID4gMHhGRkZGXG4gICAgLy8gICAgICAgICA9PSBVTkFTU0lHTkVEIC0+IHVua25vd24vdW5hc3NpZ25lZCBzZXF1ZW5jZS5cbiAgICAvLyAgICAgICAgID09IEdCMTgwMzBfQ09ERSAtPiB0aGlzIGlzIHRoZSBlbmQgb2YgYSBHQjE4MDMwIDQtYnl0ZSBzZXF1ZW5jZS5cbiAgICAvLyAgICAgICAgIDw9IE5PREVfU1RBUlQgLT4gaW5kZXggb2YgdGhlIG5leHQgbm9kZSBpbiBvdXIgdHJpZSB0byBwcm9jZXNzIG5leHQgYnl0ZS5cbiAgICAvLyAgICAgICAgIDw9IFNFUV9TVEFSVCAgLT4gaW5kZXggb2YgdGhlIHN0YXJ0IG9mIGEgY2hhcmFjdGVyIGNvZGUgc2VxdWVuY2UsIGluIGRlY29kZVRhYmxlU2VxLlxuICAgIHRoaXMuZGVjb2RlVGFibGVzID0gW107XG4gICAgdGhpcy5kZWNvZGVUYWJsZXNbMF0gPSBVTkFTU0lHTkVEX05PREUuc2xpY2UoMCk7IC8vIENyZWF0ZSByb290IG5vZGUuXG5cbiAgICAvLyBTb21ldGltZXMgYSBNQkNTIGNoYXIgY29ycmVzcG9uZHMgdG8gYSBzZXF1ZW5jZSBvZiB1bmljb2RlIGNoYXJzLiBXZSBzdG9yZSB0aGVtIGFzIGFycmF5cyBvZiBpbnRlZ2VycyBoZXJlLiBcbiAgICB0aGlzLmRlY29kZVRhYmxlU2VxID0gW107XG5cbiAgICAvLyBBY3R1YWwgbWFwcGluZyB0YWJsZXMgY29uc2lzdCBvZiBjaHVua3MuIFVzZSB0aGVtIHRvIGZpbGwgdXAgZGVjb2RlIHRhYmxlcy5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hcHBpbmdUYWJsZS5sZW5ndGg7IGkrKylcbiAgICAgICAgdGhpcy5fYWRkRGVjb2RlQ2h1bmsobWFwcGluZ1RhYmxlW2ldKTtcblxuICAgIHRoaXMuZGVmYXVsdENoYXJVbmljb2RlID0gaWNvbnYuZGVmYXVsdENoYXJVbmljb2RlO1xuXG4gICAgXG4gICAgLy8gRW5jb2RlIHRhYmxlczogVW5pY29kZSAtPiBEQkNTLlxuXG4gICAgLy8gYGVuY29kZVRhYmxlYCBpcyBhcnJheSBtYXBwaW5nIGZyb20gdW5pY29kZSBjaGFyIHRvIGVuY29kZWQgY2hhci4gQWxsIGl0cyB2YWx1ZXMgYXJlIGludGVnZXJzIGZvciBwZXJmb3JtYW5jZS5cbiAgICAvLyBCZWNhdXNlIGl0IGNhbiBiZSBzcGFyc2UsIGl0IGlzIHJlcHJlc2VudGVkIGFzIGFycmF5IG9mIGJ1Y2tldHMgYnkgMjU2IGNoYXJzIGVhY2guIEJ1Y2tldCBjYW4gYmUgbnVsbC5cbiAgICAvLyBWYWx1ZXM6ID49ICAwIC0+IGl0IGlzIGEgbm9ybWFsIGNoYXIuIFdyaXRlIHRoZSB2YWx1ZSAoaWYgPD0yNTYgdGhlbiAxIGJ5dGUsIGlmIDw9NjU1MzYgdGhlbiAyIGJ5dGVzLCBldGMuKS5cbiAgICAvLyAgICAgICAgID09IFVOQVNTSUdORUQgLT4gbm8gY29udmVyc2lvbiBmb3VuZC4gT3V0cHV0IGEgZGVmYXVsdCBjaGFyLlxuICAgIC8vICAgICAgICAgPD0gU0VRX1NUQVJUICAtPiBpdCdzIGFuIGluZGV4IGluIGVuY29kZVRhYmxlU2VxLCBzZWUgYmVsb3cuIFRoZSBjaGFyYWN0ZXIgc3RhcnRzIGEgc2VxdWVuY2UuXG4gICAgdGhpcy5lbmNvZGVUYWJsZSA9IFtdO1xuICAgIFxuICAgIC8vIGBlbmNvZGVUYWJsZVNlcWAgaXMgdXNlZCB3aGVuIGEgc2VxdWVuY2Ugb2YgdW5pY29kZSBjaGFyYWN0ZXJzIGlzIGVuY29kZWQgYXMgYSBzaW5nbGUgY29kZS4gV2UgdXNlIGEgdHJlZSBvZlxuICAgIC8vIG9iamVjdHMgd2hlcmUga2V5cyBjb3JyZXNwb25kIHRvIGNoYXJhY3RlcnMgaW4gc2VxdWVuY2UgYW5kIGxlYWZzIGFyZSB0aGUgZW5jb2RlZCBkYmNzIHZhbHVlcy4gQSBzcGVjaWFsIERFRl9DSEFSIGtleVxuICAgIC8vIG1lYW5zIGVuZCBvZiBzZXF1ZW5jZSAobmVlZGVkIHdoZW4gb25lIHNlcXVlbmNlIGlzIGEgc3RyaWN0IHN1YnNlcXVlbmNlIG9mIGFub3RoZXIpLlxuICAgIC8vIE9iamVjdHMgYXJlIGtlcHQgc2VwYXJhdGVseSBmcm9tIGVuY29kZVRhYmxlIHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlLlxuICAgIHRoaXMuZW5jb2RlVGFibGVTZXEgPSBbXTtcblxuICAgIC8vIFNvbWUgY2hhcnMgY2FuIGJlIGRlY29kZWQsIGJ1dCBuZWVkIG5vdCBiZSBlbmNvZGVkLlxuICAgIHZhciBza2lwRW5jb2RlQ2hhcnMgPSB7fTtcbiAgICBpZiAoY29kZWNPcHRpb25zLmVuY29kZVNraXBWYWxzKVxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVjT3B0aW9ucy5lbmNvZGVTa2lwVmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHZhbCA9IGNvZGVjT3B0aW9ucy5lbmNvZGVTa2lwVmFsc1tpXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICBza2lwRW5jb2RlQ2hhcnNbdmFsXSA9IHRydWU7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IHZhbC5mcm9tOyBqIDw9IHZhbC50bzsgaisrKVxuICAgICAgICAgICAgICAgICAgICBza2lwRW5jb2RlQ2hhcnNbal0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgIC8vIFVzZSBkZWNvZGUgdHJpZSB0byByZWN1cnNpdmVseSBmaWxsIG91dCBlbmNvZGUgdGFibGVzLlxuICAgIHRoaXMuX2ZpbGxFbmNvZGVUYWJsZSgwLCAwLCBza2lwRW5jb2RlQ2hhcnMpO1xuXG4gICAgLy8gQWRkIG1vcmUgZW5jb2RpbmcgcGFpcnMgd2hlbiBuZWVkZWQuXG4gICAgaWYgKGNvZGVjT3B0aW9ucy5lbmNvZGVBZGQpIHtcbiAgICAgICAgZm9yICh2YXIgdUNoYXIgaW4gY29kZWNPcHRpb25zLmVuY29kZUFkZClcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY29kZWNPcHRpb25zLmVuY29kZUFkZCwgdUNoYXIpKVxuICAgICAgICAgICAgICAgIHRoaXMuX3NldEVuY29kZUNoYXIodUNoYXIuY2hhckNvZGVBdCgwKSwgY29kZWNPcHRpb25zLmVuY29kZUFkZFt1Q2hhcl0pO1xuICAgIH1cblxuICAgIHRoaXMuZGVmQ2hhclNCICA9IHRoaXMuZW5jb2RlVGFibGVbMF1baWNvbnYuZGVmYXVsdENoYXJTaW5nbGVCeXRlLmNoYXJDb2RlQXQoMCldO1xuICAgIGlmICh0aGlzLmRlZkNoYXJTQiA9PT0gVU5BU1NJR05FRCkgdGhpcy5kZWZDaGFyU0IgPSB0aGlzLmVuY29kZVRhYmxlWzBdWyc/J107XG4gICAgaWYgKHRoaXMuZGVmQ2hhclNCID09PSBVTkFTU0lHTkVEKSB0aGlzLmRlZkNoYXJTQiA9IFwiP1wiLmNoYXJDb2RlQXQoMCk7XG5cblxuICAgIC8vIExvYWQgJiBjcmVhdGUgR0IxODAzMCB0YWJsZXMgd2hlbiBuZWVkZWQuXG4gICAgaWYgKHR5cGVvZiBjb2RlY09wdGlvbnMuZ2IxODAzMCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmdiMTgwMzAgPSBjb2RlY09wdGlvbnMuZ2IxODAzMCgpOyAvLyBMb2FkIEdCMTgwMzAgcmFuZ2VzLlxuXG4gICAgICAgIC8vIEFkZCBHQjE4MDMwIGRlY29kZSB0YWJsZXMuXG4gICAgICAgIHZhciB0aGlyZEJ5dGVOb2RlSWR4ID0gdGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoO1xuICAgICAgICB2YXIgdGhpcmRCeXRlTm9kZSA9IHRoaXMuZGVjb2RlVGFibGVzW3RoaXJkQnl0ZU5vZGVJZHhdID0gVU5BU1NJR05FRF9OT0RFLnNsaWNlKDApO1xuXG4gICAgICAgIHZhciBmb3VydGhCeXRlTm9kZUlkeCA9IHRoaXMuZGVjb2RlVGFibGVzLmxlbmd0aDtcbiAgICAgICAgdmFyIGZvdXJ0aEJ5dGVOb2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbZm91cnRoQnl0ZU5vZGVJZHhdID0gVU5BU1NJR05FRF9OT0RFLnNsaWNlKDApO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAweDgxOyBpIDw9IDB4RkU7IGkrKykge1xuICAgICAgICAgICAgdmFyIHNlY29uZEJ5dGVOb2RlSWR4ID0gTk9ERV9TVEFSVCAtIHRoaXMuZGVjb2RlVGFibGVzWzBdW2ldO1xuICAgICAgICAgICAgdmFyIHNlY29uZEJ5dGVOb2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbc2Vjb25kQnl0ZU5vZGVJZHhdO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDB4MzA7IGogPD0gMHgzOTsgaisrKVxuICAgICAgICAgICAgICAgIHNlY29uZEJ5dGVOb2RlW2pdID0gTk9ERV9TVEFSVCAtIHRoaXJkQnl0ZU5vZGVJZHg7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDB4ODE7IGkgPD0gMHhGRTsgaSsrKVxuICAgICAgICAgICAgdGhpcmRCeXRlTm9kZVtpXSA9IE5PREVfU1RBUlQgLSBmb3VydGhCeXRlTm9kZUlkeDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDB4MzA7IGkgPD0gMHgzOTsgaSsrKVxuICAgICAgICAgICAgZm91cnRoQnl0ZU5vZGVbaV0gPSBHQjE4MDMwX0NPREVcbiAgICB9ICAgICAgICBcbn1cblxuREJDU0NvZGVjLnByb3RvdHlwZS5lbmNvZGVyID0gREJDU0VuY29kZXI7XG5EQkNTQ29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBEQkNTRGVjb2RlcjtcblxuLy8gRGVjb2RlciBoZWxwZXJzXG5EQkNTQ29kZWMucHJvdG90eXBlLl9nZXREZWNvZGVUcmllTm9kZSA9IGZ1bmN0aW9uKGFkZHIpIHtcbiAgICB2YXIgYnl0ZXMgPSBbXTtcbiAgICBmb3IgKDsgYWRkciA+IDA7IGFkZHIgPj49IDgpXG4gICAgICAgIGJ5dGVzLnB1c2goYWRkciAmIDB4RkYpO1xuICAgIGlmIChieXRlcy5sZW5ndGggPT0gMClcbiAgICAgICAgYnl0ZXMucHVzaCgwKTtcblxuICAgIHZhciBub2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbMF07XG4gICAgZm9yICh2YXIgaSA9IGJ5dGVzLmxlbmd0aC0xOyBpID4gMDsgaS0tKSB7IC8vIFRyYXZlcnNlIG5vZGVzIGRlZXBlciBpbnRvIHRoZSB0cmllLlxuICAgICAgICB2YXIgdmFsID0gbm9kZVtieXRlc1tpXV07XG5cbiAgICAgICAgaWYgKHZhbCA9PSBVTkFTU0lHTkVEKSB7IC8vIENyZWF0ZSBuZXcgbm9kZS5cbiAgICAgICAgICAgIG5vZGVbYnl0ZXNbaV1dID0gTk9ERV9TVEFSVCAtIHRoaXMuZGVjb2RlVGFibGVzLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuZGVjb2RlVGFibGVzLnB1c2gobm9kZSA9IFVOQVNTSUdORURfTk9ERS5zbGljZSgwKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsIDw9IE5PREVfU1RBUlQpIHsgLy8gRXhpc3Rpbmcgbm9kZS5cbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1tOT0RFX1NUQVJUIC0gdmFsXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJPdmVyd3JpdGUgYnl0ZSBpbiBcIiArIHRoaXMuZW5jb2RpbmdOYW1lICsgXCIsIGFkZHI6IFwiICsgYWRkci50b1N0cmluZygxNikpO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbn1cblxuXG5EQkNTQ29kZWMucHJvdG90eXBlLl9hZGREZWNvZGVDaHVuayA9IGZ1bmN0aW9uKGNodW5rKSB7XG4gICAgLy8gRmlyc3QgZWxlbWVudCBvZiBjaHVuayBpcyB0aGUgaGV4IG1iY3MgY29kZSB3aGVyZSB3ZSBzdGFydC5cbiAgICB2YXIgY3VyQWRkciA9IHBhcnNlSW50KGNodW5rWzBdLCAxNik7XG5cbiAgICAvLyBDaG9vc2UgdGhlIGRlY29kaW5nIG5vZGUgd2hlcmUgd2UnbGwgd3JpdGUgb3VyIGNoYXJzLlxuICAgIHZhciB3cml0ZVRhYmxlID0gdGhpcy5fZ2V0RGVjb2RlVHJpZU5vZGUoY3VyQWRkcik7XG4gICAgY3VyQWRkciA9IGN1ckFkZHIgJiAweEZGO1xuXG4gICAgLy8gV3JpdGUgYWxsIG90aGVyIGVsZW1lbnRzIG9mIHRoZSBjaHVuayB0byB0aGUgdGFibGUuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBjaHVuay5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgcGFydCA9IGNodW5rW2tdO1xuICAgICAgICBpZiAodHlwZW9mIHBhcnQgPT09IFwic3RyaW5nXCIpIHsgLy8gU3RyaW5nLCB3cml0ZSBhcy1pcy5cbiAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgcGFydC5sZW5ndGg7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGUgPSBwYXJ0LmNoYXJDb2RlQXQobCsrKTtcbiAgICAgICAgICAgICAgICBpZiAoMHhEODAwIDw9IGNvZGUgJiYgY29kZSA8IDB4REMwMCkgeyAvLyBEZWNvZGUgc3Vycm9nYXRlXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2RlVHJhaWwgPSBwYXJ0LmNoYXJDb2RlQXQobCsrKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKDB4REMwMCA8PSBjb2RlVHJhaWwgJiYgY29kZVRyYWlsIDwgMHhFMDAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVUYWJsZVtjdXJBZGRyKytdID0gMHgxMDAwMCArIChjb2RlIC0gMHhEODAwKSAqIDB4NDAwICsgKGNvZGVUcmFpbCAtIDB4REMwMCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkluY29ycmVjdCBzdXJyb2dhdGUgcGFpciBpbiBcIiAgKyB0aGlzLmVuY29kaW5nTmFtZSArIFwiIGF0IGNodW5rIFwiICsgY2h1bmtbMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICgweDBGRjAgPCBjb2RlICYmIGNvZGUgPD0gMHgwRkZGKSB7IC8vIENoYXJhY3RlciBzZXF1ZW5jZSAob3VyIG93biBlbmNvZGluZyB1c2VkKVxuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gMHhGRkYgLSBjb2RlICsgMjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlcSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBtID0gMDsgbSA8IGxlbjsgbSsrKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VxLnB1c2gocGFydC5jaGFyQ29kZUF0KGwrKykpOyAvLyBTaW1wbGUgdmFyaWF0aW9uOiBkb24ndCBzdXBwb3J0IHN1cnJvZ2F0ZXMgb3Igc3Vic2VxdWVuY2VzIGluIHNlcS5cblxuICAgICAgICAgICAgICAgICAgICB3cml0ZVRhYmxlW2N1ckFkZHIrK10gPSBTRVFfU1RBUlQgLSB0aGlzLmRlY29kZVRhYmxlU2VxLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNvZGVUYWJsZVNlcS5wdXNoKHNlcSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVUYWJsZVtjdXJBZGRyKytdID0gY29kZTsgLy8gQmFzaWMgY2hhclxuICAgICAgICAgICAgfVxuICAgICAgICB9IFxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgcGFydCA9PT0gXCJudW1iZXJcIikgeyAvLyBJbnRlZ2VyLCBtZWFuaW5nIGluY3JlYXNpbmcgc2VxdWVuY2Ugc3RhcnRpbmcgd2l0aCBwcmV2IGNoYXJhY3Rlci5cbiAgICAgICAgICAgIHZhciBjaGFyQ29kZSA9IHdyaXRlVGFibGVbY3VyQWRkciAtIDFdICsgMTtcbiAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgcGFydDsgbCsrKVxuICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IGNoYXJDb2RlKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW5jb3JyZWN0IHR5cGUgJ1wiICsgdHlwZW9mIHBhcnQgKyBcIicgZ2l2ZW4gaW4gXCIgICsgdGhpcy5lbmNvZGluZ05hbWUgKyBcIiBhdCBjaHVuayBcIiArIGNodW5rWzBdKTtcbiAgICB9XG4gICAgaWYgKGN1ckFkZHIgPiAweEZGKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbmNvcnJlY3QgY2h1bmsgaW4gXCIgICsgdGhpcy5lbmNvZGluZ05hbWUgKyBcIiBhdCBhZGRyIFwiICsgY2h1bmtbMF0gKyBcIjogdG9vIGxvbmdcIiArIGN1ckFkZHIpO1xufVxuXG4vLyBFbmNvZGVyIGhlbHBlcnNcbkRCQ1NDb2RlYy5wcm90b3R5cGUuX2dldEVuY29kZUJ1Y2tldCA9IGZ1bmN0aW9uKHVDb2RlKSB7XG4gICAgdmFyIGhpZ2ggPSB1Q29kZSA+PiA4OyAvLyBUaGlzIGNvdWxkIGJlID4gMHhGRiBiZWNhdXNlIG9mIGFzdHJhbCBjaGFyYWN0ZXJzLlxuICAgIGlmICh0aGlzLmVuY29kZVRhYmxlW2hpZ2hdID09PSB1bmRlZmluZWQpXG4gICAgICAgIHRoaXMuZW5jb2RlVGFibGVbaGlnaF0gPSBVTkFTU0lHTkVEX05PREUuc2xpY2UoMCk7IC8vIENyZWF0ZSBidWNrZXQgb24gZGVtYW5kLlxuICAgIHJldHVybiB0aGlzLmVuY29kZVRhYmxlW2hpZ2hdO1xufVxuXG5EQkNTQ29kZWMucHJvdG90eXBlLl9zZXRFbmNvZGVDaGFyID0gZnVuY3Rpb24odUNvZGUsIGRiY3NDb2RlKSB7XG4gICAgdmFyIGJ1Y2tldCA9IHRoaXMuX2dldEVuY29kZUJ1Y2tldCh1Q29kZSk7XG4gICAgdmFyIGxvdyA9IHVDb2RlICYgMHhGRjtcbiAgICBpZiAoYnVja2V0W2xvd10gPD0gU0VRX1NUQVJUKVxuICAgICAgICB0aGlzLmVuY29kZVRhYmxlU2VxW1NFUV9TVEFSVC1idWNrZXRbbG93XV1bREVGX0NIQVJdID0gZGJjc0NvZGU7IC8vIFRoZXJlJ3MgYWxyZWFkeSBhIHNlcXVlbmNlLCBzZXQgYSBzaW5nbGUtY2hhciBzdWJzZXF1ZW5jZSBvZiBpdC5cbiAgICBlbHNlIGlmIChidWNrZXRbbG93XSA9PSBVTkFTU0lHTkVEKVxuICAgICAgICBidWNrZXRbbG93XSA9IGRiY3NDb2RlO1xufVxuXG5EQkNTQ29kZWMucHJvdG90eXBlLl9zZXRFbmNvZGVTZXF1ZW5jZSA9IGZ1bmN0aW9uKHNlcSwgZGJjc0NvZGUpIHtcbiAgICBcbiAgICAvLyBHZXQgdGhlIHJvb3Qgb2YgY2hhcmFjdGVyIHRyZWUgYWNjb3JkaW5nIHRvIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgc2VxdWVuY2UuXG4gICAgdmFyIHVDb2RlID0gc2VxWzBdO1xuICAgIHZhciBidWNrZXQgPSB0aGlzLl9nZXRFbmNvZGVCdWNrZXQodUNvZGUpO1xuICAgIHZhciBsb3cgPSB1Q29kZSAmIDB4RkY7XG5cbiAgICB2YXIgbm9kZTtcbiAgICBpZiAoYnVja2V0W2xvd10gPD0gU0VRX1NUQVJUKSB7XG4gICAgICAgIC8vIFRoZXJlJ3MgYWxyZWFkeSBhIHNlcXVlbmNlIHdpdGggIC0gdXNlIGl0LlxuICAgICAgICBub2RlID0gdGhpcy5lbmNvZGVUYWJsZVNlcVtTRVFfU1RBUlQtYnVja2V0W2xvd11dO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gVGhlcmUgd2FzIG5vIHNlcXVlbmNlIG9iamVjdCAtIGFsbG9jYXRlIGEgbmV3IG9uZS5cbiAgICAgICAgbm9kZSA9IHt9O1xuICAgICAgICBpZiAoYnVja2V0W2xvd10gIT09IFVOQVNTSUdORUQpIG5vZGVbREVGX0NIQVJdID0gYnVja2V0W2xvd107IC8vIElmIGEgY2hhciB3YXMgc2V0IGJlZm9yZSAtIG1ha2UgaXQgYSBzaW5nbGUtY2hhciBzdWJzZXF1ZW5jZS5cbiAgICAgICAgYnVja2V0W2xvd10gPSBTRVFfU1RBUlQgLSB0aGlzLmVuY29kZVRhYmxlU2VxLmxlbmd0aDtcbiAgICAgICAgdGhpcy5lbmNvZGVUYWJsZVNlcS5wdXNoKG5vZGUpO1xuICAgIH1cblxuICAgIC8vIFRyYXZlcnNlIHRoZSBjaGFyYWN0ZXIgdHJlZSwgYWxsb2NhdGluZyBuZXcgbm9kZXMgYXMgbmVlZGVkLlxuICAgIGZvciAodmFyIGogPSAxOyBqIDwgc2VxLmxlbmd0aC0xOyBqKyspIHtcbiAgICAgICAgdmFyIG9sZFZhbCA9IG5vZGVbdUNvZGVdO1xuICAgICAgICBpZiAodHlwZW9mIG9sZFZhbCA9PT0gJ29iamVjdCcpXG4gICAgICAgICAgICBub2RlID0gb2xkVmFsO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUgPSBub2RlW3VDb2RlXSA9IHt9XG4gICAgICAgICAgICBpZiAob2xkVmFsICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgbm9kZVtERUZfQ0hBUl0gPSBvbGRWYWxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgbGVhZiB0byBnaXZlbiBkYmNzQ29kZS5cbiAgICB1Q29kZSA9IHNlcVtzZXEubGVuZ3RoLTFdO1xuICAgIG5vZGVbdUNvZGVdID0gZGJjc0NvZGU7XG59XG5cbkRCQ1NDb2RlYy5wcm90b3R5cGUuX2ZpbGxFbmNvZGVUYWJsZSA9IGZ1bmN0aW9uKG5vZGVJZHgsIHByZWZpeCwgc2tpcEVuY29kZUNoYXJzKSB7XG4gICAgdmFyIG5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1tub2RlSWR4XTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDB4MTAwOyBpKyspIHtcbiAgICAgICAgdmFyIHVDb2RlID0gbm9kZVtpXTtcbiAgICAgICAgdmFyIG1iQ29kZSA9IHByZWZpeCArIGk7XG4gICAgICAgIGlmIChza2lwRW5jb2RlQ2hhcnNbbWJDb2RlXSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICAgIGlmICh1Q29kZSA+PSAwKVxuICAgICAgICAgICAgdGhpcy5fc2V0RW5jb2RlQ2hhcih1Q29kZSwgbWJDb2RlKTtcbiAgICAgICAgZWxzZSBpZiAodUNvZGUgPD0gTk9ERV9TVEFSVClcbiAgICAgICAgICAgIHRoaXMuX2ZpbGxFbmNvZGVUYWJsZShOT0RFX1NUQVJUIC0gdUNvZGUsIG1iQ29kZSA8PCA4LCBza2lwRW5jb2RlQ2hhcnMpO1xuICAgICAgICBlbHNlIGlmICh1Q29kZSA8PSBTRVFfU1RBUlQpXG4gICAgICAgICAgICB0aGlzLl9zZXRFbmNvZGVTZXF1ZW5jZSh0aGlzLmRlY29kZVRhYmxlU2VxW1NFUV9TVEFSVCAtIHVDb2RlXSwgbWJDb2RlKTtcbiAgICB9XG59XG5cblxuXG4vLyA9PSBFbmNvZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBEQkNTRW5jb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIC8vIEVuY29kZXIgc3RhdGVcbiAgICB0aGlzLmxlYWRTdXJyb2dhdGUgPSAtMTtcbiAgICB0aGlzLnNlcU9iaiA9IHVuZGVmaW5lZDtcbiAgICBcbiAgICAvLyBTdGF0aWMgZGF0YVxuICAgIHRoaXMuZW5jb2RlVGFibGUgPSBjb2RlYy5lbmNvZGVUYWJsZTtcbiAgICB0aGlzLmVuY29kZVRhYmxlU2VxID0gY29kZWMuZW5jb2RlVGFibGVTZXE7XG4gICAgdGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUgPSBjb2RlYy5kZWZDaGFyU0I7XG4gICAgdGhpcy5nYjE4MDMwID0gY29kZWMuZ2IxODAzMDtcbn1cblxuREJDU0VuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgdmFyIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc3RyLmxlbmd0aCAqICh0aGlzLmdiMTgwMzAgPyA0IDogMykpLCBcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IHRoaXMubGVhZFN1cnJvZ2F0ZSxcbiAgICAgICAgc2VxT2JqID0gdGhpcy5zZXFPYmosIG5leHRDaGFyID0gLTEsXG4gICAgICAgIGkgPSAwLCBqID0gMDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIC8vIDAuIEdldCBuZXh0IGNoYXJhY3Rlci5cbiAgICAgICAgaWYgKG5leHRDaGFyID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGkgPT0gc3RyLmxlbmd0aCkgYnJlYWs7XG4gICAgICAgICAgICB2YXIgdUNvZGUgPSBzdHIuY2hhckNvZGVBdChpKyspO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHVDb2RlID0gbmV4dENoYXI7XG4gICAgICAgICAgICBuZXh0Q2hhciA9IC0xOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDEuIEhhbmRsZSBzdXJyb2dhdGVzLlxuICAgICAgICBpZiAoMHhEODAwIDw9IHVDb2RlICYmIHVDb2RlIDwgMHhFMDAwKSB7IC8vIENoYXIgaXMgb25lIG9mIHN1cnJvZ2F0ZXMuXG4gICAgICAgICAgICBpZiAodUNvZGUgPCAweERDMDApIHsgLy8gV2UndmUgZ290IGxlYWQgc3Vycm9nYXRlLlxuICAgICAgICAgICAgICAgIGlmIChsZWFkU3Vycm9nYXRlID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBsZWFkU3Vycm9nYXRlID0gdUNvZGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxlYWRTdXJyb2dhdGUgPSB1Q29kZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRG91YmxlIGxlYWQgc3Vycm9nYXRlIGZvdW5kLlxuICAgICAgICAgICAgICAgICAgICB1Q29kZSA9IFVOQVNTSUdORUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHsgLy8gV2UndmUgZ290IHRyYWlsIHN1cnJvZ2F0ZS5cbiAgICAgICAgICAgICAgICBpZiAobGVhZFN1cnJvZ2F0ZSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdUNvZGUgPSAweDEwMDAwICsgKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDApICogMHg0MDAgKyAodUNvZGUgLSAweERDMDApO1xuICAgICAgICAgICAgICAgICAgICBsZWFkU3Vycm9nYXRlID0gLTE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpciAtIG9ubHkgdHJhaWwgc3Vycm9nYXRlIGZvdW5kLlxuICAgICAgICAgICAgICAgICAgICB1Q29kZSA9IFVOQVNTSUdORUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUgIT09IC0xKSB7XG4gICAgICAgICAgICAvLyBJbmNvbXBsZXRlIHN1cnJvZ2F0ZSBwYWlyIC0gb25seSBsZWFkIHN1cnJvZ2F0ZSBmb3VuZC5cbiAgICAgICAgICAgIG5leHRDaGFyID0gdUNvZGU7IHVDb2RlID0gVU5BU1NJR05FRDsgLy8gV3JpdGUgYW4gZXJyb3IsIHRoZW4gY3VycmVudCBjaGFyLlxuICAgICAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQ29udmVydCB1Q29kZSBjaGFyYWN0ZXIuXG4gICAgICAgIHZhciBkYmNzQ29kZSA9IFVOQVNTSUdORUQ7XG4gICAgICAgIGlmIChzZXFPYmogIT09IHVuZGVmaW5lZCAmJiB1Q29kZSAhPSBVTkFTU0lHTkVEKSB7IC8vIFdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzZXF1ZW5jZVxuICAgICAgICAgICAgdmFyIHJlc0NvZGUgPSBzZXFPYmpbdUNvZGVdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNDb2RlID09PSAnb2JqZWN0JykgeyAvLyBTZXF1ZW5jZSBjb250aW51ZXMuXG4gICAgICAgICAgICAgICAgc2VxT2JqID0gcmVzQ29kZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzQ29kZSA9PSAnbnVtYmVyJykgeyAvLyBTZXF1ZW5jZSBmaW5pc2hlZC4gV3JpdGUgaXQuXG4gICAgICAgICAgICAgICAgZGJjc0NvZGUgPSByZXNDb2RlO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc0NvZGUgPT0gdW5kZWZpbmVkKSB7IC8vIEN1cnJlbnQgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSBzZXF1ZW5jZS5cblxuICAgICAgICAgICAgICAgIC8vIFRyeSBkZWZhdWx0IGNoYXJhY3RlciBmb3IgdGhpcyBzZXF1ZW5jZVxuICAgICAgICAgICAgICAgIHJlc0NvZGUgPSBzZXFPYmpbREVGX0NIQVJdO1xuICAgICAgICAgICAgICAgIGlmIChyZXNDb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGJjc0NvZGUgPSByZXNDb2RlOyAvLyBGb3VuZC4gV3JpdGUgaXQuXG4gICAgICAgICAgICAgICAgICAgIG5leHRDaGFyID0gdUNvZGU7IC8vIEN1cnJlbnQgY2hhcmFjdGVyIHdpbGwgYmUgd3JpdHRlbiB0b28gaW4gdGhlIG5leHQgaXRlcmF0aW9uLlxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogV2hhdCBpZiB3ZSBoYXZlIG5vIGRlZmF1bHQ/IChyZXNDb2RlID09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlbiwgd2Ugc2hvdWxkIHdyaXRlIGZpcnN0IGNoYXIgb2YgdGhlIHNlcXVlbmNlIGFzLWlzIGFuZCB0cnkgdGhlIHJlc3QgcmVjdXJzaXZlbHkuXG4gICAgICAgICAgICAgICAgICAgIC8vIERpZG4ndCBkbyBpdCBmb3Igbm93IGJlY2F1c2Ugbm8gZW5jb2RpbmcgaGFzIHRoaXMgc2l0dWF0aW9uIHlldC5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBqdXN0IHNraXAgdGhlIHNlcXVlbmNlIGFuZCB3cml0ZSBjdXJyZW50IGNoYXIuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VxT2JqID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVDb2RlID49IDApIHsgIC8vIFJlZ3VsYXIgY2hhcmFjdGVyXG4gICAgICAgICAgICB2YXIgc3VidGFibGUgPSB0aGlzLmVuY29kZVRhYmxlW3VDb2RlID4+IDhdO1xuICAgICAgICAgICAgaWYgKHN1YnRhYmxlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgZGJjc0NvZGUgPSBzdWJ0YWJsZVt1Q29kZSAmIDB4RkZdO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoZGJjc0NvZGUgPD0gU0VRX1NUQVJUKSB7IC8vIFNlcXVlbmNlIHN0YXJ0XG4gICAgICAgICAgICAgICAgc2VxT2JqID0gdGhpcy5lbmNvZGVUYWJsZVNlcVtTRVFfU1RBUlQtZGJjc0NvZGVdO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGJjc0NvZGUgPT0gVU5BU1NJR05FRCAmJiB0aGlzLmdiMTgwMzApIHtcbiAgICAgICAgICAgICAgICAvLyBVc2UgR0IxODAzMCBhbGdvcml0aG0gdG8gZmluZCBjaGFyYWN0ZXIocykgdG8gd3JpdGUuXG4gICAgICAgICAgICAgICAgdmFyIGlkeCA9IGZpbmRJZHgodGhpcy5nYjE4MDMwLnVDaGFycywgdUNvZGUpO1xuICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRiY3NDb2RlID0gdGhpcy5nYjE4MDMwLmdiQ2hhcnNbaWR4XSArICh1Q29kZSAtIHRoaXMuZ2IxODAzMC51Q2hhcnNbaWR4XSk7XG4gICAgICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gMHg4MSArIE1hdGguZmxvb3IoZGJjc0NvZGUgLyAxMjYwMCk7IGRiY3NDb2RlID0gZGJjc0NvZGUgJSAxMjYwMDtcbiAgICAgICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSAweDMwICsgTWF0aC5mbG9vcihkYmNzQ29kZSAvIDEyNjApOyBkYmNzQ29kZSA9IGRiY3NDb2RlICUgMTI2MDtcbiAgICAgICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSAweDgxICsgTWF0aC5mbG9vcihkYmNzQ29kZSAvIDEwKTsgZGJjc0NvZGUgPSBkYmNzQ29kZSAlIDEwO1xuICAgICAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IDB4MzAgKyBkYmNzQ29kZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gV3JpdGUgZGJjc0NvZGUgY2hhcmFjdGVyLlxuICAgICAgICBpZiAoZGJjc0NvZGUgPT09IFVOQVNTSUdORUQpXG4gICAgICAgICAgICBkYmNzQ29kZSA9IHRoaXMuZGVmYXVsdENoYXJTaW5nbGVCeXRlO1xuICAgICAgICBcbiAgICAgICAgaWYgKGRiY3NDb2RlIDwgMHgxMDApIHtcbiAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZGJjc0NvZGUgPCAweDEwMDAwKSB7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlID4+IDg7ICAgLy8gaGlnaCBieXRlXG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlICYgMHhGRjsgLy8gbG93IGJ5dGVcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgPj4gMTY7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IChkYmNzQ29kZSA+PiA4KSAmIDB4RkY7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlICYgMHhGRjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2VxT2JqID0gc2VxT2JqO1xuICAgIHRoaXMubGVhZFN1cnJvZ2F0ZSA9IGxlYWRTdXJyb2dhdGU7XG4gICAgcmV0dXJuIG5ld0J1Zi5zbGljZSgwLCBqKTtcbn1cblxuREJDU0VuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmxlYWRTdXJyb2dhdGUgPT09IC0xICYmIHRoaXMuc2VxT2JqID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybjsgLy8gQWxsIGNsZWFuLiBNb3N0IG9mdGVuIGNhc2UuXG5cbiAgICB2YXIgbmV3QnVmID0gbmV3IEJ1ZmZlcigxMCksIGogPSAwO1xuXG4gICAgaWYgKHRoaXMuc2VxT2JqKSB7IC8vIFdlJ3JlIGluIHRoZSBzZXF1ZW5jZS5cbiAgICAgICAgdmFyIGRiY3NDb2RlID0gdGhpcy5zZXFPYmpbREVGX0NIQVJdO1xuICAgICAgICBpZiAoZGJjc0NvZGUgIT09IHVuZGVmaW5lZCkgeyAvLyBXcml0ZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlLlxuICAgICAgICAgICAgaWYgKGRiY3NDb2RlIDwgMHgxMDApIHtcbiAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZSA+PiA4OyAgIC8vIGhpZ2ggYnl0ZVxuICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgJiAweEZGOyAvLyBsb3cgYnl0ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gU2VlIHRvZG8gYWJvdmUuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXFPYmogPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVhZFN1cnJvZ2F0ZSAhPT0gLTEpIHtcbiAgICAgICAgLy8gSW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpciAtIG9ubHkgbGVhZCBzdXJyb2dhdGUgZm91bmQuXG4gICAgICAgIG5ld0J1ZltqKytdID0gdGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGU7XG4gICAgICAgIHRoaXMubGVhZFN1cnJvZ2F0ZSA9IC0xO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gbmV3QnVmLnNsaWNlKDAsIGopO1xufVxuXG4vLyBFeHBvcnQgZm9yIHRlc3RpbmdcbkRCQ1NFbmNvZGVyLnByb3RvdHlwZS5maW5kSWR4ID0gZmluZElkeDtcblxuXG4vLyA9PSBEZWNvZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBEQkNTRGVjb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIC8vIERlY29kZXIgc3RhdGVcbiAgICB0aGlzLm5vZGVJZHggPSAwO1xuICAgIHRoaXMucHJldkJ1ZiA9IG5ldyBCdWZmZXIoMCk7XG5cbiAgICAvLyBTdGF0aWMgZGF0YVxuICAgIHRoaXMuZGVjb2RlVGFibGVzID0gY29kZWMuZGVjb2RlVGFibGVzO1xuICAgIHRoaXMuZGVjb2RlVGFibGVTZXEgPSBjb2RlYy5kZWNvZGVUYWJsZVNlcTtcbiAgICB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZSA9IGNvZGVjLmRlZmF1bHRDaGFyVW5pY29kZTtcbiAgICB0aGlzLmdiMTgwMzAgPSBjb2RlYy5nYjE4MDMwO1xufVxuXG5EQkNTRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHtcbiAgICB2YXIgbmV3QnVmID0gbmV3IEJ1ZmZlcihidWYubGVuZ3RoKjIpLFxuICAgICAgICBub2RlSWR4ID0gdGhpcy5ub2RlSWR4LCBcbiAgICAgICAgcHJldkJ1ZiA9IHRoaXMucHJldkJ1ZiwgcHJldkJ1Zk9mZnNldCA9IHRoaXMucHJldkJ1Zi5sZW5ndGgsXG4gICAgICAgIHNlcVN0YXJ0ID0gLXRoaXMucHJldkJ1Zi5sZW5ndGgsIC8vIGlkeCBvZiB0aGUgc3RhcnQgb2YgY3VycmVudCBwYXJzZWQgc2VxdWVuY2UuXG4gICAgICAgIHVDb2RlO1xuXG4gICAgaWYgKHByZXZCdWZPZmZzZXQgPiAwKSAvLyBNYWtlIHByZXYgYnVmIG92ZXJsYXAgYSBsaXR0bGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2xpY2UgbGF0ZXIuXG4gICAgICAgIHByZXZCdWYgPSBCdWZmZXIuY29uY2F0KFtwcmV2QnVmLCBidWYuc2xpY2UoMCwgMTApXSk7XG4gICAgXG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjdXJCeXRlID0gKGkgPj0gMCkgPyBidWZbaV0gOiBwcmV2QnVmW2kgKyBwcmV2QnVmT2Zmc2V0XTtcblxuICAgICAgICAvLyBMb29rdXAgaW4gY3VycmVudCB0cmllIG5vZGUuXG4gICAgICAgIHZhciB1Q29kZSA9IHRoaXMuZGVjb2RlVGFibGVzW25vZGVJZHhdW2N1ckJ5dGVdO1xuXG4gICAgICAgIGlmICh1Q29kZSA+PSAwKSB7IFxuICAgICAgICAgICAgLy8gTm9ybWFsIGNoYXJhY3RlciwganVzdCB1c2UgaXQuXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodUNvZGUgPT09IFVOQVNTSUdORUQpIHsgLy8gVW5rbm93biBjaGFyLlxuICAgICAgICAgICAgLy8gVE9ETzogQ2FsbGJhY2sgd2l0aCBzZXEuXG4gICAgICAgICAgICAvL3ZhciBjdXJTZXEgPSAoc2VxU3RhcnQgPj0gMCkgPyBidWYuc2xpY2Uoc2VxU3RhcnQsIGkrMSkgOiBwcmV2QnVmLnNsaWNlKHNlcVN0YXJ0ICsgcHJldkJ1Zk9mZnNldCwgaSsxICsgcHJldkJ1Zk9mZnNldCk7XG4gICAgICAgICAgICBpID0gc2VxU3RhcnQ7IC8vIFRyeSB0byBwYXJzZSBhZ2FpbiwgYWZ0ZXIgc2tpcHBpbmcgZmlyc3QgYnl0ZSBvZiB0aGUgc2VxdWVuY2UgKCdpJyB3aWxsIGJlIGluY3JlbWVudGVkIGJ5ICdmb3InIGN5Y2xlKS5cbiAgICAgICAgICAgIHVDb2RlID0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1Q29kZSA9PT0gR0IxODAzMF9DT0RFKSB7XG4gICAgICAgICAgICB2YXIgY3VyU2VxID0gKHNlcVN0YXJ0ID49IDApID8gYnVmLnNsaWNlKHNlcVN0YXJ0LCBpKzEpIDogcHJldkJ1Zi5zbGljZShzZXFTdGFydCArIHByZXZCdWZPZmZzZXQsIGkrMSArIHByZXZCdWZPZmZzZXQpO1xuICAgICAgICAgICAgdmFyIHB0ciA9IChjdXJTZXFbMF0tMHg4MSkqMTI2MDAgKyAoY3VyU2VxWzFdLTB4MzApKjEyNjAgKyAoY3VyU2VxWzJdLTB4ODEpKjEwICsgKGN1clNlcVszXS0weDMwKTtcbiAgICAgICAgICAgIHZhciBpZHggPSBmaW5kSWR4KHRoaXMuZ2IxODAzMC5nYkNoYXJzLCBwdHIpO1xuICAgICAgICAgICAgdUNvZGUgPSB0aGlzLmdiMTgwMzAudUNoYXJzW2lkeF0gKyBwdHIgLSB0aGlzLmdiMTgwMzAuZ2JDaGFyc1tpZHhdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IE5PREVfU1RBUlQpIHsgLy8gR28gdG8gbmV4dCB0cmllIG5vZGUuXG4gICAgICAgICAgICBub2RlSWR4ID0gTk9ERV9TVEFSVCAtIHVDb2RlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodUNvZGUgPD0gU0VRX1NUQVJUKSB7IC8vIE91dHB1dCBhIHNlcXVlbmNlIG9mIGNoYXJzLlxuICAgICAgICAgICAgdmFyIHNlcSA9IHRoaXMuZGVjb2RlVGFibGVTZXFbU0VRX1NUQVJUIC0gdUNvZGVdO1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBzZXEubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAgICAgICAgICAgdUNvZGUgPSBzZXFba107XG4gICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZSAmIDB4RkY7XG4gICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZSA+PiA4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdUNvZGUgPSBzZXFbc2VxLmxlbmd0aC0xXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpY29udi1saXRlIGludGVybmFsIGVycm9yOiBpbnZhbGlkIGRlY29kaW5nIHRhYmxlIHZhbHVlIFwiICsgdUNvZGUgKyBcIiBhdCBcIiArIG5vZGVJZHggKyBcIi9cIiArIGN1ckJ5dGUpO1xuXG4gICAgICAgIC8vIFdyaXRlIHRoZSBjaGFyYWN0ZXIgdG8gYnVmZmVyLCBoYW5kbGluZyBoaWdoZXIgcGxhbmVzIHVzaW5nIHN1cnJvZ2F0ZSBwYWlyLlxuICAgICAgICBpZiAodUNvZGUgPiAweEZGRkYpIHsgXG4gICAgICAgICAgICB1Q29kZSAtPSAweDEwMDAwO1xuICAgICAgICAgICAgdmFyIHVDb2RlTGVhZCA9IDB4RDgwMCArIE1hdGguZmxvb3IodUNvZGUgLyAweDQwMCk7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlTGVhZCAmIDB4RkY7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlTGVhZCA+PiA4O1xuXG4gICAgICAgICAgICB1Q29kZSA9IDB4REMwMCArIHVDb2RlICUgMHg0MDA7XG4gICAgICAgIH1cbiAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZSAmIDB4RkY7XG4gICAgICAgIG5ld0J1ZltqKytdID0gdUNvZGUgPj4gODtcblxuICAgICAgICAvLyBSZXNldCB0cmllIG5vZGUuXG4gICAgICAgIG5vZGVJZHggPSAwOyBzZXFTdGFydCA9IGkrMTtcbiAgICB9XG5cbiAgICB0aGlzLm5vZGVJZHggPSBub2RlSWR4O1xuICAgIHRoaXMucHJldkJ1ZiA9IChzZXFTdGFydCA+PSAwKSA/IGJ1Zi5zbGljZShzZXFTdGFydCkgOiBwcmV2QnVmLnNsaWNlKHNlcVN0YXJ0ICsgcHJldkJ1Zk9mZnNldCk7XG4gICAgcmV0dXJuIG5ld0J1Zi5zbGljZSgwLCBqKS50b1N0cmluZygndWNzMicpO1xufVxuXG5EQkNTRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJldCA9ICcnO1xuXG4gICAgLy8gVHJ5IHRvIHBhcnNlIGFsbCByZW1haW5pbmcgY2hhcnMuXG4gICAgd2hpbGUgKHRoaXMucHJldkJ1Zi5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIFNraXAgMSBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlci5cbiAgICAgICAgcmV0ICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlO1xuICAgICAgICB2YXIgYnVmID0gdGhpcy5wcmV2QnVmLnNsaWNlKDEpO1xuXG4gICAgICAgIC8vIFBhcnNlIHJlbWFpbmluZyBhcyB1c3VhbC5cbiAgICAgICAgdGhpcy5wcmV2QnVmID0gbmV3IEJ1ZmZlcigwKTtcbiAgICAgICAgdGhpcy5ub2RlSWR4ID0gMDtcbiAgICAgICAgaWYgKGJ1Zi5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0ICs9IHRoaXMud3JpdGUoYnVmKTtcbiAgICB9XG5cbiAgICB0aGlzLm5vZGVJZHggPSAwO1xuICAgIHJldHVybiByZXQ7XG59XG5cbi8vIEJpbmFyeSBzZWFyY2ggZm9yIEdCMTgwMzAuIFJldHVybnMgbGFyZ2VzdCBpIHN1Y2ggdGhhdCB0YWJsZVtpXSA8PSB2YWwuXG5mdW5jdGlvbiBmaW5kSWR4KHRhYmxlLCB2YWwpIHtcbiAgICBpZiAodGFibGVbMF0gPiB2YWwpXG4gICAgICAgIHJldHVybiAtMTtcblxuICAgIHZhciBsID0gMCwgciA9IHRhYmxlLmxlbmd0aDtcbiAgICB3aGlsZSAobCA8IHItMSkgeyAvLyBhbHdheXMgdGFibGVbbF0gPD0gdmFsIDwgdGFibGVbcl1cbiAgICAgICAgdmFyIG1pZCA9IGwgKyBNYXRoLmZsb29yKChyLWwrMSkvMik7XG4gICAgICAgIGlmICh0YWJsZVttaWRdIDw9IHZhbClcbiAgICAgICAgICAgIGwgPSBtaWQ7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHIgPSBtaWQ7XG4gICAgfVxuICAgIHJldHVybiBsO1xufVxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvZGJjcy1jb2RlYy5qc1xuLy8gbW9kdWxlIGlkID0gMTQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIlwidXNlIHN0cmljdFwiO1xuXG4vLyBEZXNjcmlwdGlvbiBvZiBzdXBwb3J0ZWQgZG91YmxlIGJ5dGUgZW5jb2RpbmdzIGFuZCBhbGlhc2VzLlxuLy8gVGFibGVzIGFyZSBub3QgcmVxdWlyZSgpLWQgdW50aWwgdGhleSBhcmUgbmVlZGVkIHRvIHNwZWVkIHVwIGxpYnJhcnkgbG9hZC5cbi8vIHJlcXVpcmUoKS1zIGFyZSBkaXJlY3QgdG8gc3VwcG9ydCBCcm93c2VyaWZ5LlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBcbiAgICAvLyA9PSBKYXBhbmVzZS9TaGlmdEpJUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQWxsIGphcGFuZXNlIGVuY29kaW5ncyBhcmUgYmFzZWQgb24gSklTIFggc2V0IG9mIHN0YW5kYXJkczpcbiAgICAvLyBKSVMgWCAwMjAxIC0gU2luZ2xlLWJ5dGUgZW5jb2Rpbmcgb2YgQVNDSUkgKyDCpSArIEthbmEgY2hhcnMgYXQgMHhBMS0weERGLlxuICAgIC8vIEpJUyBYIDAyMDggLSBNYWluIHNldCBvZiA2ODc5IGNoYXJhY3RlcnMsIHBsYWNlZCBpbiA5NHg5NCBwbGFuZSwgdG8gYmUgZW5jb2RlZCBieSAyIGJ5dGVzLiBcbiAgICAvLyAgICAgICAgICAgICAgSGFzIHNldmVyYWwgdmFyaWF0aW9ucyBpbiAxOTc4LCAxOTgzLCAxOTkwIGFuZCAxOTk3LlxuICAgIC8vIEpJUyBYIDAyMTIgLSBTdXBwbGVtZW50YXJ5IHBsYW5lIG9mIDYwNjcgY2hhcnMgaW4gOTR4OTQgcGxhbmUuIDE5OTAuIEVmZmVjdGl2ZWx5IGRlYWQuXG4gICAgLy8gSklTIFggMDIxMyAtIEV4dGVuc2lvbiBhbmQgbW9kZXJuIHJlcGxhY2VtZW50IG9mIDAyMDggYW5kIDAyMTIuIFRvdGFsIGNoYXJzOiAxMTIzMy5cbiAgICAvLyAgICAgICAgICAgICAgMiBwbGFuZXMsIGZpcnN0IGlzIHN1cGVyc2V0IG9mIDAyMDgsIHNlY29uZCAtIHJldmlzZWQgMDIxMi5cbiAgICAvLyAgICAgICAgICAgICAgSW50cm9kdWNlZCBpbiAyMDAwLCByZXZpc2VkIDIwMDQuIFNvbWUgY2hhcmFjdGVycyBhcmUgaW4gVW5pY29kZSBQbGFuZSAyICgweDJ4eHh4KVxuXG4gICAgLy8gQnl0ZSBlbmNvZGluZ3MgYXJlOlxuICAgIC8vICAqIFNoaWZ0X0pJUzogQ29tcGF0aWJsZSB3aXRoIDAyMDEsIHVzZXMgbm90IGRlZmluZWQgY2hhcnMgaW4gdG9wIGhhbGYgYXMgbGVhZCBieXRlcyBmb3IgZG91YmxlLWJ5dGVcbiAgICAvLyAgICAgICAgICAgICAgIGVuY29kaW5nIG9mIDAyMDguIExlYWQgYnl0ZSByYW5nZXM6IDB4ODEtMHg5RiwgMHhFMC0weEVGOyBUcmFpbCBieXRlIHJhbmdlczogMHg0MC0weDdFLCAweDgwLTB4OUUsIDB4OUYtMHhGQy5cbiAgICAvLyAgICAgICAgICAgICAgIFdpbmRvd3MgQ1A5MzIgaXMgYSBzdXBlcnNldCBvZiBTaGlmdF9KSVMuIFNvbWUgY29tcGFuaWVzIGFkZGVkIG1vcmUgY2hhcnMsIG5vdGFibHkgS0RESS5cbiAgICAvLyAgKiBFVUMtSlA6ICAgIFVwIHRvIDMgYnl0ZXMgcGVyIGNoYXJhY3Rlci4gVXNlZCBtb3N0bHkgb24gKm5peGVzLlxuICAgIC8vICAgICAgICAgICAgICAgMHgwMC0weDdGICAgICAgIC0gbG93ZXIgcGFydCBvZiAwMjAxXG4gICAgLy8gICAgICAgICAgICAgICAweDhFLCAweEExLTB4REYgLSB1cHBlciBwYXJ0IG9mIDAyMDFcbiAgICAvLyAgICAgICAgICAgICAgICgweEExLTB4RkUpeDIgICAtIDAyMDggcGxhbmUgKDk0eDk0KS5cbiAgICAvLyAgICAgICAgICAgICAgIDB4OEYsICgweEExLTB4RkUpeDIgLSAwMjEyIHBsYW5lICg5NHg5NCkuXG4gICAgLy8gICogSklTIFggMjA4OiA3LWJpdCwgZGlyZWN0IGVuY29kaW5nIG9mIDAyMDguIEJ5dGUgcmFuZ2VzOiAweDIxLTB4N0UgKDk0IHZhbHVlcykuIFVuY29tbW9uLlxuICAgIC8vICAgICAgICAgICAgICAgVXNlZCBhcy1pcyBpbiBJU08yMDIyIGZhbWlseS5cbiAgICAvLyAgKiBJU08yMDIyLUpQOiBTdGF0ZWZ1bCBlbmNvZGluZywgd2l0aCBlc2NhcGUgc2VxdWVuY2VzIHRvIHN3aXRjaCBiZXR3ZWVuIEFTQ0lJLCBcbiAgICAvLyAgICAgICAgICAgICAgICAwMjAxLTE5NzYgUm9tYW4sIDAyMDgtMTk3OCwgMDIwOC0xOTgzLlxuICAgIC8vICAqIElTTzIwMjItSlAtMTogQWRkcyBlc2Mgc2VxIGZvciAwMjEyLTE5OTAuXG4gICAgLy8gICogSVNPMjAyMi1KUC0yOiBBZGRzIGVzYyBzZXEgZm9yIEdCMjMxMy0xOTgwLCBLU1gxMDAxLTE5OTIsIElTTzg4NTktMSwgSVNPODg1OS03LlxuICAgIC8vICAqIElTTzIwMjItSlAtMzogQWRkcyBlc2Mgc2VxIGZvciAwMjAxLTE5NzYgS2FuYSBzZXQsIDAyMTMtMjAwMCBQbGFuZXMgMSwgMi5cbiAgICAvLyAgKiBJU08yMDIyLUpQLTIwMDQ6IEFkZHMgMDIxMy0yMDA0IFBsYW5lIDEuXG4gICAgLy9cbiAgICAvLyBBZnRlciBKSVMgWCAwMjEzIGFwcGVhcmVkLCBTaGlmdF9KSVMtMjAwNCwgRVVDLUpJU1gwMjEzIGFuZCBJU08yMDIyLUpQLTIwMDQgZm9sbG93ZWQsIHdpdGgganVzdCBjaGFuZ2luZyB0aGUgcGxhbmVzLlxuICAgIC8vXG4gICAgLy8gT3ZlcmFsbCwgaXQgc2VlbXMgdGhhdCBpdCdzIGEgbWVzcyA6KCBodHRwOi8vd3d3OC5wbGFsYS5vci5qcC90a3Vib3RhMS91bmljb2RlLXN5bWJvbHMtbWFwMi5odG1sXG5cbiAgICAnc2hpZnRqaXMnOiB7XG4gICAgICAgIHR5cGU6ICdfZGJjcycsXG4gICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJlcXVpcmUoJy4vdGFibGVzL3NoaWZ0amlzLmpzb24nKSB9LFxuICAgICAgICBlbmNvZGVBZGQ6IHsnXFx1MDBhNSc6IDB4NUMsICdcXHUyMDNFJzogMHg3RX0sXG4gICAgICAgIGVuY29kZVNraXBWYWxzOiBbe2Zyb206IDB4RUQ0MCwgdG86IDB4Rjk0MH1dLFxuICAgIH0sXG4gICAgJ2Nzc2hpZnRqaXMnOiAnc2hpZnRqaXMnLFxuICAgICdtc2thbmppJzogJ3NoaWZ0amlzJyxcbiAgICAnc2ppcyc6ICdzaGlmdGppcycsXG4gICAgJ3dpbmRvd3MzMWonOiAnc2hpZnRqaXMnLFxuICAgICdtczMxaic6ICdzaGlmdGppcycsXG4gICAgJ3hzamlzJzogJ3NoaWZ0amlzJyxcbiAgICAnd2luZG93czkzMic6ICdzaGlmdGppcycsXG4gICAgJ21zOTMyJzogJ3NoaWZ0amlzJyxcbiAgICAnOTMyJzogJ3NoaWZ0amlzJyxcbiAgICAnY3A5MzInOiAnc2hpZnRqaXMnLFxuXG4gICAgJ2V1Y2pwJzoge1xuICAgICAgICB0eXBlOiAnX2RiY3MnLFxuICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9ldWNqcC5qc29uJykgfSxcbiAgICAgICAgZW5jb2RlQWRkOiB7J1xcdTAwYTUnOiAweDVDLCAnXFx1MjAzRSc6IDB4N0V9LFxuICAgIH0sXG5cbiAgICAvLyBUT0RPOiBLRERJIGV4dGVuc2lvbiB0byBTaGlmdF9KSVNcbiAgICAvLyBUT0RPOiBJQk0gQ0NTSUQgOTQyID0gQ1A5MzIsIGJ1dCBGMC1GOSBjdXN0b20gY2hhcnMgYW5kIG90aGVyIGNoYXIgY2hhbmdlcy5cbiAgICAvLyBUT0RPOiBJQk0gQ0NTSUQgOTQzID0gU2hpZnRfSklTID0gQ1A5MzIgd2l0aCBvcmlnaW5hbCBTaGlmdF9KSVMgbG93ZXIgMTI4IGNoYXJzLlxuXG5cbiAgICAvLyA9PSBDaGluZXNlL0dCSyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HQktcbiAgICAvLyBXZSBtb3N0bHkgaW1wbGVtZW50IFczQyByZWNvbW1lbmRhdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL2VuY29kaW5nLyNnYmstZW5jb2RlclxuXG4gICAgLy8gT2xkZXN0IEdCMjMxMiAoMTk4MSwgfjc2MDAgY2hhcnMpIGlzIGEgc3Vic2V0IG9mIENQOTM2XG4gICAgJ2diMjMxMic6ICdjcDkzNicsXG4gICAgJ2diMjMxMjgwJzogJ2NwOTM2JyxcbiAgICAnZ2IyMzEyMTk4MCc6ICdjcDkzNicsXG4gICAgJ2NzZ2IyMzEyJzogJ2NwOTM2JyxcbiAgICAnY3Npc281OGdiMjMxMjgwJzogJ2NwOTM2JyxcbiAgICAnZXVjY24nOiAnY3A5MzYnLFxuXG4gICAgLy8gTWljcm9zb2Z0J3MgQ1A5MzYgaXMgYSBzdWJzZXQgYW5kIGFwcHJveGltYXRpb24gb2YgR0JLLlxuICAgICd3aW5kb3dzOTM2JzogJ2NwOTM2JyxcbiAgICAnbXM5MzYnOiAnY3A5MzYnLFxuICAgICc5MzYnOiAnY3A5MzYnLFxuICAgICdjcDkzNic6IHtcbiAgICAgICAgdHlwZTogJ19kYmNzJyxcbiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVxdWlyZSgnLi90YWJsZXMvY3A5MzYuanNvbicpIH0sXG4gICAgfSxcblxuICAgIC8vIEdCSyAofjIyMDAwIGNoYXJzKSBpcyBhbiBleHRlbnNpb24gb2YgQ1A5MzYgdGhhdCBhZGRlZCB1c2VyLW1hcHBlZCBjaGFycyBhbmQgc29tZSBvdGhlci5cbiAgICAnZ2JrJzoge1xuICAgICAgICB0eXBlOiAnX2RiY3MnLFxuICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9jcDkzNi5qc29uJykuY29uY2F0KHJlcXVpcmUoJy4vdGFibGVzL2diay1hZGRlZC5qc29uJykpIH0sXG4gICAgfSxcbiAgICAneGdiayc6ICdnYmsnLFxuICAgICdpc29pcjU4JzogJ2diaycsXG5cbiAgICAvLyBHQjE4MDMwIGlzIGFuIGFsZ29yaXRobWljIGV4dGVuc2lvbiBvZiBHQksuXG4gICAgLy8gTWFpbiBzb3VyY2U6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9lbmNvZGluZy8jZ2JrLWVuY29kZXJcbiAgICAvLyBodHRwOi8vaWN1LXByb2plY3Qub3JnL2RvY3MvcGFwZXJzL2diMTgwMzAuaHRtbFxuICAgIC8vIGh0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9kYXRhL3RydW5rL2NoYXJzZXQvZGF0YS94bWwvZ2ItMTgwMzAtMjAwMC54bWxcbiAgICAvLyBodHRwOi8vd3d3LmtobmdhaS5jb20vY2hpbmVzZS9jaGFybWFwL3RibGdiay5waHA/cGFnZT0wXG4gICAgJ2diMTgwMzAnOiB7XG4gICAgICAgIHR5cGU6ICdfZGJjcycsXG4gICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJlcXVpcmUoJy4vdGFibGVzL2NwOTM2Lmpzb24nKS5jb25jYXQocmVxdWlyZSgnLi90YWJsZXMvZ2JrLWFkZGVkLmpzb24nKSkgfSxcbiAgICAgICAgZ2IxODAzMDogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9nYjE4MDMwLXJhbmdlcy5qc29uJykgfSxcbiAgICAgICAgZW5jb2RlU2tpcFZhbHM6IFsweDgwXSxcbiAgICAgICAgZW5jb2RlQWRkOiB7J+KCrCc6IDB4QTJFM30sXG4gICAgfSxcblxuICAgICdjaGluZXNlJzogJ2diMTgwMzAnLFxuXG5cbiAgICAvLyA9PSBLb3JlYW4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gRVVDLUtSLCBLU19DXzU2MDEgYW5kIEtTIFggMTAwMSBhcmUgZXhhY3RseSB0aGUgc2FtZS5cbiAgICAnd2luZG93czk0OSc6ICdjcDk0OScsXG4gICAgJ21zOTQ5JzogJ2NwOTQ5JyxcbiAgICAnOTQ5JzogJ2NwOTQ5JyxcbiAgICAnY3A5NDknOiB7XG4gICAgICAgIHR5cGU6ICdfZGJjcycsXG4gICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJlcXVpcmUoJy4vdGFibGVzL2NwOTQ5Lmpzb24nKSB9LFxuICAgIH0sXG5cbiAgICAnY3NldWNrcic6ICdjcDk0OScsXG4gICAgJ2Nza3NjNTYwMTE5ODcnOiAnY3A5NDknLFxuICAgICdldWNrcic6ICdjcDk0OScsXG4gICAgJ2lzb2lyMTQ5JzogJ2NwOTQ5JyxcbiAgICAna29yZWFuJzogJ2NwOTQ5JyxcbiAgICAna3NjNTYwMTE5ODcnOiAnY3A5NDknLFxuICAgICdrc2M1NjAxMTk4OSc6ICdjcDk0OScsXG4gICAgJ2tzYzU2MDEnOiAnY3A5NDknLFxuXG5cbiAgICAvLyA9PSBCaWc1L1RhaXdhbi9Ib25nIEtvbmcgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVGhlcmUgYXJlIGxvdHMgb2YgdGFibGVzIGZvciBCaWc1IGFuZCBjcDk1MC4gUGxlYXNlIHNlZSB0aGUgZm9sbG93aW5nIGxpbmtzIGZvciBoaXN0b3J5OlxuICAgIC8vIGh0dHA6Ly9tb3p0dy5vcmcvZG9jcy9iaWc1LyAgaHR0cDovL3d3dy5oYWlibGUuZGUvYnJ1bm8vY2hhcnNldHMvY29udmVyc2lvbi10YWJsZXMvQmlnNS5odG1sXG4gICAgLy8gVmFyaWF0aW9ucywgaW4gcm91Z2hseSBudW1iZXIgb2YgZGVmaW5lZCBjaGFyczpcbiAgICAvLyAgKiBXaW5kb3dzIENQIDk1MDogTWljcm9zb2Z0IHZhcmlhbnQgb2YgQmlnNS4gQ2Fub25pY2FsOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9XSU5ET1dTL0NQOTUwLlRYVFxuICAgIC8vICAqIFdpbmRvd3MgQ1AgOTUxOiBNaWNyb3NvZnQgdmFyaWFudCBvZiBCaWc1LUhLU0NTLTIwMDEuIFNlZW1zIHRvIGJlIG5ldmVyIHB1YmxpYy4gaHR0cDovL21lLmFiZWxjaGV1bmcub3JnL2FydGljbGVzL3Jlc2VhcmNoL3doYXQtaXMtY3A5NTEvXG4gICAgLy8gICogQmlnNS0yMDAzIChUYWl3YW4gc3RhbmRhcmQpIGFsbW9zdCBzdXBlcnNldCBvZiBjcDk1MC5cbiAgICAvLyAgKiBVbmljb2RlLWF0LW9uIChVQU8pIC8gTW96aWxsYSAxLjguIEZhbGxpbmcgb3V0IG9mIHVzZSBvbiB0aGUgV2ViLiBOb3Qgc3VwcG9ydGVkIGJ5IG90aGVyIGJyb3dzZXJzLlxuICAgIC8vICAqIEJpZzUtSEtTQ1MgKC0yMDAxLCAtMjAwNCwgLTIwMDgpLiBIb25nIEtvbmcgc3RhbmRhcmQuIFxuICAgIC8vICAgIG1hbnkgdW5pY29kZSBjb2RlIHBvaW50cyBtb3ZlZCBmcm9tIFBVQSB0byBTdXBwbGVtZW50YXJ5IHBsYW5lIChVKzJYWFhYKSBvdmVyIHRoZSB5ZWFycy5cbiAgICAvLyAgICBQbHVzLCBpdCBoYXMgNCBjb21iaW5pbmcgc2VxdWVuY2VzLlxuICAgIC8vICAgIFNlZW1zIHRoYXQgTW96aWxsYSByZWZ1c2VkIHRvIHN1cHBvcnQgaXQgZm9yIDEwIHlycy4gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDMxIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMxMDI5OVxuICAgIC8vICAgIGJlY2F1c2UgYmlnNS1oa3NjcyBpcyB0aGUgb25seSBlbmNvZGluZyB0byBpbmNsdWRlIGFzdHJhbCBjaGFyYWN0ZXJzIGluIG5vbi1hbGdvcml0aG1pYyB3YXkuXG4gICAgLy8gICAgSW1wbGVtZW50YXRpb25zIGFyZSBub3QgY29uc2lzdGVudCB3aXRoaW4gYnJvd3NlcnM7IHNvbWV0aW1lcyBsYWJlbGVkIGFzIGp1c3QgYmlnNS5cbiAgICAvLyAgICBNUyBJbnRlcm5ldCBFeHBsb3JlciBzd2l0Y2hlcyBmcm9tIGJpZzUgdG8gYmlnNS1oa3NjcyB3aGVuIGEgcGF0Y2ggYXBwbGllZC5cbiAgICAvLyAgICBHcmVhdCBkaXNjdXNzaW9uICYgcmVjYXAgb2Ygd2hhdCdzIGdvaW5nIG9uIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjQ3MCNjMzFcbiAgICAvLyAgICBJbiB0aGUgZW5jb2RlciwgaXQgbWlnaHQgbWFrZSBzZW5zZSB0byBzdXBwb3J0IGVuY29kaW5nIG9sZCBQVUEgbWFwcGluZ3MgdG8gQmlnNSBieXRlcyBzZXEtcy5cbiAgICAvLyAgICBPZmZpY2lhbCBzcGVjOiBodHRwOi8vd3d3Lm9nY2lvLmdvdi5oay9lbi9idXNpbmVzcy90ZWNoX3Byb21vdGlvbi9jY2xpL3Rlcm1zL2RvYy8yMDAzY21wXzIwMDgudHh0XG4gICAgLy8gICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5vZ2Npby5nb3YuaGsvdGMvYnVzaW5lc3MvdGVjaF9wcm9tb3Rpb24vY2NsaS90ZXJtcy9kb2MvaGtzY3MtMjAwOC1iaWc1LWlzby50eHRcbiAgICAvLyBcbiAgICAvLyBDdXJyZW50IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRvIGRlYWwgd2l0aCBCaWc1KC1IS1NDUykgaXMgaW4gdGhlIEVuY29kaW5nIFN0YW5kYXJkLCBodHRwOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnLyNiaWc1LWVuY29kZXJcbiAgICAvLyBVbmljb2RlIG1hcHBpbmcgKGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBL09USEVSL0JJRzUuVFhUKSBpcyBzYWlkIHRvIGJlIHdyb25nLlxuXG4gICAgJ3dpbmRvd3M5NTAnOiAnY3A5NTAnLFxuICAgICdtczk1MCc6ICdjcDk1MCcsXG4gICAgJzk1MCc6ICdjcDk1MCcsXG4gICAgJ2NwOTUwJzoge1xuICAgICAgICB0eXBlOiAnX2RiY3MnLFxuICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9jcDk1MC5qc29uJykgfSxcbiAgICB9LFxuXG4gICAgLy8gQmlnNSBoYXMgbWFueSB2YXJpYXRpb25zIGFuZCBpcyBhbiBleHRlbnNpb24gb2YgY3A5NTAuIFdlIHVzZSBFbmNvZGluZyBTdGFuZGFyZCdzIGFzIGEgY29uc2Vuc3VzLlxuICAgICdiaWc1JzogJ2JpZzVoa3NjcycsXG4gICAgJ2JpZzVoa3Njcyc6IHtcbiAgICAgICAgdHlwZTogJ19kYmNzJyxcbiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVxdWlyZSgnLi90YWJsZXMvY3A5NTAuanNvbicpLmNvbmNhdChyZXF1aXJlKCcuL3RhYmxlcy9iaWc1LWFkZGVkLmpzb24nKSkgfSxcbiAgICAgICAgZW5jb2RlU2tpcFZhbHM6IFsweGEyY2NdLFxuICAgIH0sXG5cbiAgICAnY25iaWc1JzogJ2JpZzVoa3NjcycsXG4gICAgJ2NzYmlnNSc6ICdiaWc1aGtzY3MnLFxuICAgICd4eGJpZzUnOiAnYmlnNWhrc2NzJyxcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvZGJjcy1kYXRhLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBbW1wiMFwiLFwiXFx1MDAwMFwiLDEyOF0sW1wiYTFcIixcIu+9oVwiLDYyXSxbXCI4MTQwXCIsXCLjgIDjgIHjgILvvIzvvI7jg7vvvJrvvJvvvJ/vvIHjgpvjgpzCtO+9gMKo77y+77+j77y/44O944O+44Kd44Ke44CD5Lud44CF44CG44CH44O84oCV4oCQ77yP77y8772e4oil772c4oCm4oCl4oCY4oCZ4oCc4oCd77yI77yJ44CU44CV77y777y9772b772d44CIXCIsOSxcIu+8i++8jcKxw5dcIl0sW1wiODE4MFwiLFwiw7fvvJ3iiaDvvJzvvJ7iiabiiafiiJ7iiLTimYLimYDCsOKAsuKAs+KEg++/pe+8hO+/oO+/oe+8he+8g++8hu+8iu+8oMKn4piG4piF4peL4peP4peO4peH4peG4pah4pag4paz4pay4pa94pa84oC744CS4oaS4oaQ4oaR4oaT44CTXCJdLFtcIjgxYjhcIixcIuKIiOKIi+KKhuKKh+KKguKKg+KIquKIqVwiXSxbXCI4MWM4XCIsXCLiiKfiiKjvv6Lih5Lih5TiiIDiiINcIl0sW1wiODFkYVwiLFwi4oig4oql4oyS4oiC4oiH4omh4omS4omq4omr4oia4oi94oid4oi14oir4oisXCJdLFtcIjgxZjBcIixcIuKEq+KAsOKZr+KZreKZquKAoOKAocK2XCJdLFtcIjgxZmNcIixcIuKXr1wiXSxbXCI4MjRmXCIsXCLvvJBcIiw5XSxbXCI4MjYwXCIsXCLvvKFcIiwyNV0sW1wiODI4MVwiLFwi772BXCIsMjVdLFtcIjgyOWZcIixcIuOBgVwiLDgyXSxbXCI4MzQwXCIsXCLjgqFcIiw2Ml0sW1wiODM4MFwiLFwi44OgXCIsMjJdLFtcIjgzOWZcIixcIs6RXCIsMTYsXCLOo1wiLDZdLFtcIjgzYmZcIixcIs6xXCIsMTYsXCLPg1wiLDZdLFtcIjg0NDBcIixcItCQXCIsNSxcItCB0JZcIiwyNV0sW1wiODQ3MFwiLFwi0LBcIiw1LFwi0ZHQtlwiLDddLFtcIjg0ODBcIixcItC+XCIsMTddLFtcIjg0OWZcIixcIuKUgOKUguKUjOKUkOKUmOKUlOKUnOKUrOKUpOKUtOKUvOKUgeKUg+KUj+KUk+KUm+KUl+KUo+KUs+KUq+KUu+KVi+KUoOKUr+KUqOKUt+KUv+KUneKUsOKUpeKUuOKVglwiXSxbXCI4NzQwXCIsXCLikaBcIiwxOSxcIuKFoFwiLDldLFtcIjg3NWZcIixcIuONieOMlOOMouONjeOMmOOMp+OMg+OMtuONkeONl+OMjeOMpuOMo+OMq+ONiuOMu+OOnOOOneOOnuOOjuOOj+OPhOOOoVwiXSxbXCI4NzdlXCIsXCLjjbtcIl0sW1wiODc4MFwiLFwi44Cd44Cf4oSW44+N4oSh44qkXCIsNCxcIuOIseOIsuOIueONvuONveONvOKJkuKJoeKIq+KIruKIkeKImuKKpeKIoOKIn+KKv+KIteKIqeKIqlwiXSxbXCI4ODlmXCIsXCLkupzllJblqIPpmL/lk4DmhJvmjKjlp7bpgKLokbXojJznqZDmgqrmj6HmuKXml63okaboiqbpr7XmopPlnKfmlqHmibHlrpvlp5Dombvpo7TntaLntr7pro7miJbnsp/oorflronlurXmjInmmpfmoYjpl4fpno3mnY/ku6XkvIrkvY3kvp3lgYnlm7LlpLflp5TlqIHlsInmg5/mhI/mhbDmmJPmpIXngrrnlY/nlbDnp7vntq3nt6/og4PokI7ooaPorILpgZXpgbrljLvkupXkuqXln5/ogrLpg4Hno6/kuIDlo7HmuqLpgLjnqLLojKjoiovpsK/lhYHljbDlkr3lk6Hlm6Dlp7vlvJXpo7Lmt6vog6TolK1cIl0sW1wiODk0MFwiLFwi6Zmi6Zmw6Zqg6Z+75ZCL5Y+z5a6H54OP57696L+C6Zuo5Y2v6bWc56q65LiR56KT6Ie85rim5ZiY5ZSE5qyd6JSa6bC75ael5Y6p5rWm55Oc6ZaP5ZmC5LqR6YGL6Zuy6I2P6aSM5Y+h5Za25ayw5b2x5pig5puz5qCE5rC45rOz5rSp55Gb55uI56mO6aC06Iux6KGb6Kmg6Yut5ray55ar55uK6aeF5oKm6KyB6LaK6Zay5qaO5Y6t5YaGXCJdLFtcIjg5ODBcIixcIuWckuWgsOWlhOWutOW7tuaAqOaOqeaPtOayv+a8lOeCjueElOeFmeeHleeMv+e4geiJtuiLkeiWl+mBoOmJm+m0m+WhqeaWvOaxmueUpeWHueWkruWlpeW+gOW/nOaKvOaXuuaoquasp+autOeOi+e/geillum0rOm0jum7hOWyoeayluiNu+WEhOWxi+aGtuiHhuahtueJoeS5meS/uuWNuOaBqea4qeepj+mfs+S4i+WMluS7ruS9leS8veS+oeS9s+WKoOWPr+WYieWkj+WrgeWutuWvoeenkeaah+aenOaetuatjOays+eBq+ePguemjeemvueovOeuh+iKseiLm+iMhOiNt+iPr+iPk+idpuiqsuWYqeiyqOi/pumBjumcnuiaiuS/hOWzqOaIkeeJmeeUu+iHpeiKveibvuizgOmbhemkk+mnleS7i+S8muino+WbnuWhiuWjiuW7u+W/q+aAquaClOaBouaHkOaIkuaLkOaUuVwiXSxbXCI4YTQwXCIsXCLprYHmmabmorDmtbfngbDnlYznmobntbXoiqXon7nplovpmo7osp3lh7Hlir7lpJblkrPlrrPltJbmhajmpoLmtq/noo3ok4vooZfoqbLpjqfpqrjmtazppqjom5nlnqPmn7/om47piI7lioPlmoflkITlu5Pmi6HmkrnmoLzmoLjmrrvnjbLnorrnqavopprop5LotavovIPpg63plqPpmpTpnanlrablsrPmpb3poY3poY7mjpvnrKDmqKtcIl0sW1wiOGE4MFwiLFwi5qm/5qK26bCN5r2f5Ymy5Zad5oGw5ous5rS75riH5ruR6JGb6KSQ6L2E5LiU6bC55Y+25qSb5qi66Z6E5qCq5YWc56uD6JKy6Yec6Y6M5Zmb6bSo5qCi6IyF6JCx57Kl5YiI6IuF55Om5Lm+5L6D5Yag5a+S5YiK5YuY5Yun5be75Zaa5aCq5aem5a6M5a6Y5a+b5bmy5bm55oKj5oSf5oWj5oa+5o+b5pWi5p+R5qGT5qO65qy+5q2T5rGX5ryi5r6X5r2F55Kw55SY55uj55yL56u/566h57Ch57ep57y257+w6IKd6Imm6I6e6Kaz6KuM6LKr6YKE6ZGR6ZaT6ZaR6Zai6Zml6Z+T6aSo6IiY5Li45ZCr5bK45beM546p55mM55y85bKp57+r6LSL6ZuB6aCR6aGU6aGY5LyB5LyO5Y2x5Zac5Zmo5Z+65aWH5ayJ5a+E5bKQ5biM5bm+5b+M5o+u5py65peX5pei5pyf5qOL5qOEXCJdLFtcIjhiNDBcIixcIuapn+W4sOavheawl+axveeVv+eliOWto+eogOe0gOW+veimj+iomOiytOi1t+i7jOi8nemjoumojumsvOS6gOWBveWEgOWmk+WunOaIr+aKgOaTrOasuueKoOeWkeelh+e+qeifu+iqvOitsOaOrOiPiumeoOWQieWQg+WWq+ahlOapmOipsOegp+adtem7jeWNtOWuouiEmuiZkOmAhuS4mOS5heS7h+S8keWPiuWQuOWuruW8k+aApeaVkVwiXSxbXCI4YjgwXCIsXCLmnL3msYLmsbLms6PngbjnkIPnqbbnqq7nrIjntJrns77ntabml6fniZvljrvlsYXlt6jmi5Lmi6DmjJnmuKDomZroqLHot53pi7jmvIHnpqbprZrkuqjkuqvkuqzkvpvkvqDlg5HlhYfnq7blhbHlh7bljZTljKHljb/lj6vllqzlooPls6HlvLflvYrmgK/mgZDmga3mjJ/mlZnmqYvms4Hni4Lni63nn6/og7johIXoiIjolY7pg7fpj6Hpn7/ppZfpqZrku7Dlh53lsK3mmoHmpa3lsYDmm7LmpbXnjonmoZDnsoHlg4Xli6TlnYflt77pjKbmlqTmrKPmrL3nkLTnpoHnpr3nrYvnt4roirnoj4zoob/opZ/orLnov5Hph5HlkJ/pioDkuZ3lgLblj6XljLrni5fnjpbnn6noi6bouq/pp4bpp4jpp5LlhbfmhJromZ7llrDnqbrlgbblr5PpgYfpmoXkuLLmq5vph6flsZHlsYhcIl0sW1wiOGM0MFwiLFwi5o6Y56qf5rKT6Z206L2h56qq54aK6ZqI57KC5qCX57mw5qGR6Y2s5Yuy5ZCb6Jar6KiT576k6LuN6YOh5Y2m6KKI56WB5L+C5YK+5YiR5YWE5ZWT5Zyt54+q5Z6L5aWR5b2i5b6E5oG15oW25oWn5oap5o6y5pC65pWs5pmv5qGC5riT55Wm56i957O757WM57aZ57mL572r6IyO6I2K6JuN6KiI6Kmj6K2m6Lu96aCa6baP6Iq46L+O6a+oXCJdLFtcIjhjODBcIixcIuWKh+aIn+aSg+a/gOmameahgeWCkeasoOaxuua9lOeptOe1kOihgOioo+aciOS7tuWAueWApuWBpeWFvOWIuOWJo+WWp+Wcj+WgheWrjOW7uuaGsuaHuOaLs+aNsuaknOaoqeeJveeKrOeMrueglOehr+e1ueecjOiCqeimi+ismeizoui7kumBo+mNtemZuumhlemok+m5uOWFg+WOn+WOs+W5u+W8pua4m+a6kOeOhOePvue1g+iIt+iogOiruumZkOS5juWAi+WPpOWRvOWbuuWnkeWtpOW3seW6q+W8p+aIuOaVheaer+a5lueLkOeziuiitOiCoeiDoeiPsOiZjuiqh+i3qOmIt+mbh+mhp+m8k+S6lOS6kuS8jeWNiOWRieWQvuWor+W+jOW+oeaCn+aip+aqjueRmueigeiqnuiqpOitt+mGkOS5numvieS6pOS9vOS+r+WAmeWAluWFieWFrOWKn+WKueWLvuWOmuWPo+WQkVwiXSxbXCI4ZDQwXCIsXCLlkI7llonlnZHlnqLlpb3lrZTlrZ3lro/lt6Xlt6flt7flubjluoPluprlurflvJjmgZLmhYzmipfmi5jmjqfmlLvmmILmmYPmm7Tmna3moKHmopfmp4vmsZ/mtKrmtanmuK/mup3nlLLnmofnoaznqL/ns6DntIXntJjntZ7ntrHogJXogIPogq/ogrHohZToho/oiKrojZLooYzooaHorJvosqLos7zpg4rphbXpibHnoL/pi7zplqTpmY1cIl0sW1wiOGQ4MFwiLFwi6aCF6aaZ6auY6bS75Ymb5Yqr5Y+35ZCI5aOV5ou35r+g6LGq6L2f6bq55YWL5Yi75ZGK5Zu956mA6YW36bWg6buS542E5ryJ6IWw55SR5b+95oOa6aqo54ub6L685q2k6aCD5LuK5Zuw5Z2k5aK+5ama5oGo5oeH5piP5piG5qC55qKx5re355eV57S66Imu6a2C5Lqb5L2Q5Y+J5ZSG5bWv5bem5beu5p+75rKZ55Gz56CC6KmQ6Y6W6KOf5Z2Q5bqn5oyr5YK15YKs5YaN5pyA5ZOJ5aGe5aa75a6w5b2p5omN5o6h5qC95q2z5riI54G96YeH54qA56CV56Cm56Wt5paO57Sw6I+c6KOB6LyJ6Zqb5Ymk5Zyo5p2Q572q6LKh5Ya05Z2C6Ziq5aC65qaK6IK05ZKy5bSO5Z+856KV6be65L2c5YmK5ZKL5pC+5pio5pyU5p+156qE562W57Si6Yyv5qGc6a6t56y55YyZ5YaK5Yi3XCJdLFtcIjhlNDBcIixcIuWvn+aLtuaSruaTpuacreauuuiWqembkeeakOmvluaNjOmMhumuq+eav+aZkuS4ieWCmOWPguWxseaDqOaSkuaVo+ahn+eHpuePiueUo+eul+e6guialeiug+izm+mFuOmkkOaWrOaaq+aui+S7leS7lOS8uuS9v+WIuuWPuOWPsuWXo+Wbm+Wjq+Wni+WnieWnv+WtkOWxjeW4guW4q+W/l+aAneaMh+aUr+WtnOaWr+aWveaXqOaeneatolwiXSxbXCI4ZTgwXCIsXCLmrbvmsI/njYXnpYnnp4Hns7jntJnntKvogqLohILoh7PoppboqZ7oqanoqaboqozoq67os4fos5zpm4zpo7zmra/kuovkvLzkvo3lhZDlrZflr7rmhYjmjIHmmYLmrKHmu4vmsrvniL7nkr3nl5Tno4HnpLrogIzogLPoh6rokpTovp7msZDpub/lvI/orZjptKvnq7rou7jlro3pm6vkuIPlj7Hln7flpLHlq4nlrqTmgonmub/mvIbnlr7os6rlrp/olIDnr6DlgbLmn7Toip3lsaHolYrnuJ7oiI7lhpnlsITmjajotabmlpznha7npL7ntJfogIXorJ3ou4rpga7om4fpgqrlgJ/li7rlsLrmnZPngbzniLXphYzph4jpjKvoi6Xlr4LlvLHmg7nkuLvlj5blrojmiYvmnLHmrorni6nnj6DnqK7ohavotqPphZLpppblhJLlj5flkarlr7/mjojmqLnntqzpnIDlm5rlj47lkahcIl0sW1wiOGY0MFwiLFwi5a6X5bCx5bee5L+u5oSB5ou+5rSy56eA56eL57WC57mN57+S6Iet6Iif6JKQ6KGG6KWy6K6Q6Lm06Lyv6YCx6YWL6YWs6ZuG6Yac5LuA5L2P5YWF5Y2B5b6T5oiO5p+U5rGB5riL542j57im6YeN6YqD5Y+U5aSZ5a6/5reR56Wd57iu57Kb5aG+54af5Ye66KGT6L+w5L+K5bO75pil556s56uj6Iic6ae/5YeG5b6q5pes5qWv5q6J5rezXCJdLFtcIjhmODBcIixcIua6lua9pOebvue0lOW3oemBtemGh+mghuWHpuWIneaJgOaakeabmea4muW6tue3kue9suabuOiWr+iXt+iruOWKqeWPmeWls+W6j+W+kOaBlemLpOmZpOWCt+WEn+WLneWMoOWNh+WPrOWTqOWVhuWUseWYl+WlqOWmvuWovOWuteWwhuWwj+WwkeWwmuW6hOW6iuW7oOW9sOaJv+aKhOaLm+aOjOaNt+aYh+aYjOaYreaZtuadvuaiouaon+aoteayvOa2iOa4iea5mOeEvOeEpueFp+eXh+ecgeehneekgeelpeensOeroOeskeeyp+e0ueiCluiPluiSi+iVieihneijs+ion+iovOiplOips+ixoeiznumGpOmJpumNvumQmOmanOmemOS4iuS4iOS4nuS5l+WGl+WJsOWfjuWgtOWjjOWsouW4uOaDheaTvuadoeadlua1hOeKtueVs+epo+iSuOitsumGuOmMoOWYseWftOmjvlwiXSxbXCI5MDQwXCIsXCLmi63mpI3mrpbnh63nuZTogbfoibLop6bpo5/onZXovrHlsLvkvLjkv6HkvrXllIflqKDlr53lr6nlv4PmhY7mjK/mlrDmmYvmo67mppvmtbjmt7HnlLPnlrnnnJ/npZ7np6bntLPoh6Poiq/olqropqroqLrouqvovpvpgLLph53pnIfkurrku4HliIPlobXlo6zlsIvnlJrlsL3ohY7oqIrov4XpmaPpna3nrKXoq4/poIjphaLlm7PljqhcIl0sW1wiOTA4MFwiLFwi6YCX5ZC55Z6C5bil5o6o5rC054KK552h57KL57+g6KGw6YGC6YWU6YyQ6YyY6ZqP55Ge6auE5bSH5bWp5pWw5p6i6Lao6Zub5o2u5p2J5qSZ6I+F6aCX6ZuA6KO+5r6E5pG65a+45LiW54Cs55Wd5piv5YeE5Yi25Yui5aeT5b6B5oCn5oiQ5pS/5pW05pif5pm05qOy5qCW5q2j5riF54my55Sf55ub57K+6IGW5aOw6KO96KW/6Kqg6KqT6KuL6YCd6YaS6Z2S6Z2Z5paJ56iO6ISG6Zq75bit5oOc5oia5pal5piU5p6Q55+z56mN57GN57i+6ISK6LKs6LWk6Leh6Lmf56Kp5YiH5ouZ5o6l5pGC5oqY6Kit56qD56+A6Kqs6Zuq57W26IiM6J2J5LuZ5YWI5Y2D5Y2g5a6j5bCC5bCW5bed5oim5omH5pKw5qCT5qC05rOJ5rWF5rSX5p+T5r2c54WO54W95peL56m/566t57eaXCJdLFtcIjkxNDBcIixcIue5iue+qOiFuuiIm+iIueiWpuipruizjui3temBuOmBt+mKremKkemWg+muruWJjeWWhOa8uOeEtuWFqOemhee5leiGs+ezjuWZjOWhkeWyqOaOquabvuabvealmueLmeeWj+eWjuekjuelluenn+eyl+e0oOe1hOiYh+iotOmYu+mBoem8oOWDp+WJteWPjOWPouWAieWWquWjruWlj+eIveWui+WxpOWMneaDo+aDs+aNnOaOg+aMv+aOu1wiXSxbXCI5MTgwXCIsXCLmk43ml6nmm7nlt6Pmp43mp73mvJXnh6Xkuonnl6nnm7jnqpPns5/nt4/ntpzogaHojYnojZjokazokrzol7voo4XotbDpgIHpga3pjpfpnJzpqJLlg4/lopfmho7oh5PolLXotIjpgKDkv4PlgbTliYfljbPmga/mjYnmnZ/muKzotrPpgJ/kv5flsZ7os4rml4/ntprljZLoopblhbbmj4PlrZjlravlsIrmkI3mnZHpgZzku5blpJrlpKrmsbDoqZHllL7loJXlpqXmg7DmiZPmn4HoiLXmpZXpmYDpp4TpqKjkvZPloIblr77ogJDlsrHluK/lvoXmgKDmhYvmiLTmm7/ms7Dmu57og47ohb/oi5TooovosrjpgIDpgK7pmorpu5vpr5vku6Plj7DlpKfnrKzpho3poYzpt7nmu53ngKfljZPllYTlroXmiZjmip7mi5PmsqLmv6/nkKLoqJfpkLjmv4Hoq77ojLjlh6fom7jlj6pcIl0sW1wiOTI0MFwiLFwi5Y+p5L2G6YGU6L6w5aWq6ISx5be956uq6L6/5qOa6LC354u46bGI5qi96Kqw5Li55Y2Y5ZiG5Z2m5ouF5o6i5pem5q2O5reh5rmb54Kt55+t56uv566q57a76IC96IOG6JuL6KqV6Y2b5Zuj5aOH5by+5pat5pqW5qqA5q6155S36KuH5YCk55+l5Zyw5byb5oGl5pm65rGg55e056ia572u6Ie06JyY6YGF6aaz56+J55Wc56u5562R6JOEXCJdLFtcIjkyODBcIixcIumAkOenqeeqkuiMtuWroeedgOS4reS7suWumeW/oOaKveaYvOafseazqOiZq+iht+iou+mFjumLs+mnkOaol+eApueMquiLp+iRl+iyr+S4geWFhuWHi+WWi+WvteW4luW4s+W6geW8lOW8teW9q+W+tOaHsuaMkeaaouacnea9rueJkueUuuecuuiBtOiEueiFuOidtuiqv+irnOi2hei3s+mKmumVt+mggumzpeWLheaNl+ebtOacleayiOePjeizg+mOrumZs+a0peWinOakjuanjOi/vemOmueXm+mAmuWhmuagguaOtOanu+S9g+a8rOafmOi+u+iUpue2tOmNlOakv+a9sOWdquWjt+WsrOe0rOeIquWQiumHo+m2tOS6reS9juWBnOWBteWJg+iynuWRiOWgpOWumuW4neW6leW6reW7t+W8n+aCjOaKteaMuuaPkOair+axgOeih+emjueoi+e3oOiJh+ioguirpui5hOmAk1wiXSxbXCI5MzQwXCIsXCLpgrjphK3ph5jpvI7ms6XmkZjmk6LmlbXmu7TnmoTnrJvpganpj5Hmurrlk7LlvrnmkqTovY3ov63piYTlhbjloavlpKnlsZXlupfmt7vnuo/nlJzosrzou6LpoZvngrnkvJ3mrr/mvrHnlLDpm7vlhY7lkJDloLXloZflpqzlsaDlvpLmlpfmnZzmuKHnmbvoj5/os63pgJTpg73pjY3noKXnoLrliqrluqblnJ/lpbTmgJLlgJLlhZrlhqxcIl0sW1wiOTM4MFwiLFwi5YeN5YiA5ZSQ5aGU5aGY5aWX5a6V5bO25baL5oK85oqV5pCt5p2x5qGD5qK85qOf55uX5reY5rmv5rab54Gv54eI5b2T55eY56W3562J562U562S57OW57Wx5Yiw6JGj6JWp6Jek6KiO6KyE6LGG6LiP6YCD6YCP6ZCZ6Zm26aCt6aiw6ZeY5YON5YuV5ZCM5aCC5bCO5oan5pKe5rSe556z56ul6IO06JCE6YGT6YqF5bOg6bSH5Yy/5b6X5b6z5rac54m5552j56a/56+k5q+S54us6Kqt5qCD5qmh5Ye456qB5qS05bGK6bO26Iur5a+F6YWJ54Ce5Zm45bGv5oOH5pWm5rKM6LGa6YGB6aCT5ZGR5puH6YiN5aWI6YKj5YaF5LmN5Yeq6JaZ6KyO54GY5o266Y2L5qWi6aa057iE55W35Y2X5qWg6Luf6Zuj5rGd5LqM5bC85byQ6L+p5YyC6LOR6IKJ6Jm55bu/5pel5Lmz5YWlXCJdLFtcIjk0NDBcIixcIuWmguWwv+mfruS7u+WmiuW/jeiqjea/oeemsOelouWvp+iRseeMq+eGseW5tOW/teaNu+aSmueHg+eymOS5g+W7vOS5i+WfnOWaouaCqea/g+e0jeiDveiEs+iGv+i+suiml+iapOW3tOaKiuaSreimh+adt+azoua0vueQtuegtOWphue9teiKremmrOS/s+W7g+aLneaOkuaVl+adr+ebg+eJjOiDjOiCuui8qemFjeWAjeWfueWqkuaihVwiXSxbXCI5NDgwXCIsXCLmpbPnhaTni73osrflo7Los6DpmarpgJnonb/np6Tnn6fokKnkvK/liaXljZrmi43mn4/ms4rnmb3nrpTnspXoiLboloTov6vmm53mvKDniIbnuJvojqvpp4Hpuqblh73nrrHnobLnrrjogofnrYjmq6jluaHogoznlZHnlaDlhavpiaLmuoznmbrphpfpq6rkvJDnvbDmipznrY/plqXps6nlmbrloZnom6TpmrzkvLTliKTljYrlj43lj5vluIbmkKzmlpHmnb/msL7msY7niYjniq/nj63nlZTnuYHoiKzol6nosqnnr4Tph4bnhanpoJLpo6/mjL3mmannlarnm6Tno5DolYPom67ljKrljZHlkKblpoPluoflvbzmgrLmiYnmibnmiqvmlpDmr5Tms4znlrLnmq7nopHnp5jnt4vnvbfogqXooqvoqrnosrvpgb/pnZ7po5vmqIvnsLjlgpnlsL7lvq7mnofmr5jnkLXnnInnvo5cIl0sW1wiOTU0MFwiLFwi6by75p+K56iX5Yy555aL6aut5b2m6Iad6I+x6IKY5by85b+F55Wi562G6YC85qGn5aer5aqb57SQ55m+6Kys5L+15b2q5qiZ5rC35ryC55Oi56Wo6KGo6KmV6LG55buf5o+P55eF56eS6IuX6Yyo6Yuy6JKc6Jut6bCt5ZOB5b2s5paM5rWc54CV6LKn6LOT6aC75pWP55O25LiN5LuY5Z+g5aSr5amm5a+M5Yao5biD5bqc5oCW5om25pW3XCJdLFtcIjk1ODBcIixcIuaWp+aZrua1rueItuespuiFkOiGmuiKmeitnOiyoOizpui1tOmYnOmZhOS+ruaSq+atpuiInuiRoeiVqumDqOWwgealk+miqOiRuuiVl+S8j+WJr+W+qeW5heacjeemj+iFueikh+imhua3teW8l+aJleayuOS7j+eJqemukuWIhuWQu+WZtOWis+aGpOaJrueEmuWlrueyieeznue0m+mbsOaWh+iBnuS4meS9teWFteWhgOW5o+W5s+W8iuafhOS4puiUvemWiemZm+exs+mggeWDu+WjgeeZlueip+WIpeeepeiUkeeuhuWBj+WkieeJh+evh+e3qOi+uui/lOmBjeS+v+WLieWoqeW8gemereS/neiIl+mLquWcg+aNleatqeeUq+ijnOi8lOepguWLn+Wik+aFleaIiuaaruavjeewv+iPqeWAo+S/uOWMheWRhuWgseWlieWuneWzsOWzr+W0qeW6luaKseaNp+aUvuaWueaci1wiXSxbXCI5NjQwXCIsXCLms5Xms6Hng7nnoLLnuKvog57oirPokIzok6zonILopJLoqKrosYrpgqbpi5Lpo73ps7PptazkuY/kuqHlgo3liZblnYrlpqjluL3lv5jlv5nmiL/mmrTmnJvmn5Dmo5LlhpLntKHogqrohqjorIDosozosr/pib7pmLLlkKDpoKzljJflg5XljZzloqjmkrLmnLTniafnnabnqYbph6bli4PmsqHmrobloIDluYzlpZTmnKznv7vlh6Hnm4ZcIl0sW1wiOTY4MFwiLFwi5pGp56Oo6a2U6bq75Z+L5aa55pin5p6a5q+O5ZOp5qeZ5bmV6Iac5p6V6a6q5p++6bGS5qGd5Lqm5L+j5Y+I5oq55pyr5rKr6L+E5L6t57mt6bq/5LiH5oWi5rqA5ryr6JST5ZGz5pyq6a2F5bez566V5bKs5a+G6Jyc5rmK6JOR56iU6ISI5aaZ57KN5rCR55yg5YuZ5aSi54Sh54mf55+b6Zyn6bWh5qSL5am/5aiY5Yal5ZCN5ZG95piO55uf6L+36YqY6bO05aeq54md5ruF5YWN5qOJ57a/57es6Z2i6bq65pG45qih6IyC5aaE5a2f5q+b54yb55uy57ay6ICX6JKZ5YSy5pyo6buZ55uu5p2i5Yu/6aSF5bCk5oi757G+6LKw5ZWP5oK257SL6ZaA5YyB5Lmf5Ya25aSc54i66IC26YeO5byl55+i5Y6E5b2557SE6Jas6Kiz6LqN6Z2W5p+z6Jau6ZGT5oSJ5oSI5rK555mSXCJdLFtcIjk3NDBcIixcIuirrei8uOWUr+S9keWEquWLh+WPi+WupeW5veaCoOaGguaPluacieafmua5p+a2jOeMtueMt+eUseelkOijleiqmOmBiumCkemDtembhOiejeWkleS6iOS9meS4juiqiei8v+mgkOWCreW5vOWmluWuueW6uOaPmuaPuuaTgeabnOaliuanmOa0i+a6tueGlOeUqOeqr+e+iuiAgOiRieiTieimgeisoei4iumBpemZvemkiuaFvuaKkeasslwiXSxbXCI5NzgwXCIsXCLmsoPmtbTnv4znv7zmt4DnvoXonrroo7jmnaXojrHpoLzpm7fmtJvntaHokL3pharkubHljbXltZDmrITmv6vol43omK3opqfliKnlkI/lsaXmnY7moqjnkIbnkoPnl6Loo4/oo6Hph4zpm6Lpmbjlvovnjofnq4vokY7mjqDnlaXlionmtYHmupznkInnlZnnoavnspLpmobnq5zpvo3kvrbmha7ml4XomZzkuobkuq7lg5rkuKHlh4zlr67mlpnmooHmtrznjJ/nmYLnnq3nqJzns6foia/oq5Lpgbzph4/pmbXpoJjlipvnt5HlgKvljpjmnpfmt4vnh5DnkLPoh6jovKrpmqPpsZfpup/nkaDloYHmtpnntK/poZ7ku6TkvLbkvovlhrflirHltrrmgJznjrLnpLzoi5PpiLTpmrfpm7bpnIrpupfpvaLmmqbmrbTliJfliqPng4joo4Llu4nmgYvmhpDmvKPnhYnnsL7nt7Toga9cIl0sW1wiOTg0MFwiLFwi6JOu6YCj6Yys5ZGC6a2v5quT54KJ6LOC6Lev6Zyy5Yq05amB5buK5byE5pyX5qW85qaU5rWq5ryP54mi54u856+t6ICB6IG+6J2L6YOO5YWt6bqT56aE6IKL6Yyy6KuW5YCt5ZKM6Kmx5q2q6LOE6ISH5oOR5p6g6bey5LqZ5LqY6bCQ6Kmr6JeB6JWo5qSA5rm+56KX6IWVXCJdLFtcIjk4OWZcIixcIuW8jOS4kOS4leS4quS4seS4tuS4vOS4v+S5guS5luS5mOS6guS6heixq+S6iuiIkuW8jeS6juS6nuS6n+S6oOS6ouS6sOS6s+S6tuS7juS7jeS7hOS7huS7guS7l+S7nuS7reS7n+S7t+S8ieS9muS8sOS9m+S9neS9l+S9h+S9tuS+iOS+j+S+mOS9u+S9qeS9sOS+keS9r+S+huS+luWEmOS/lOS/n+S/juS/mOS/m+S/keS/muS/kOS/pOS/peWAmuWAqOWAlOWAquWApeWAheS8nOS/tuWAoeWAqeWArOS/vuS/r+WAkeWAhuWBg+WBh+acg+WBleWBkOWBiOWBmuWBluWBrOWBuOWCgOWCmuWCheWCtOWCslwiXSxbXCI5OTQwXCIsXCLlg4nlg4rlgrPlg4Llg5blg57lg6Xlg63lg6Plg67lg7nlg7XlhInlhIHlhILlhJblhJXlhJTlhJrlhKHlhLrlhLflhLzlhLvlhL/lhYDlhZLlhYzlhZTlhaLnq7jlhanlharlha7lhoDlhoLlm5jlhozlhonlho/lhpHlhpPlhpXlhpblhqTlhqblhqLlhqnlhqrlhqvlhrPlhrHlhrLlhrDlhrXlhr3lh4Xlh4nlh5vlh6DomZXlh6nlh61cIl0sW1wiOTk4MFwiLFwi5Yew5Ye15Ye+5YiE5YiL5YiU5YiO5Yin5Yiq5Yiu5Yiz5Yi55YmP5YmE5YmL5YmM5Yme5YmU5Ymq5Ym05Ymp5Ymz5Ym/5Ym95YqN5YqU5YqS5Ymx5YqI5YqR6L6o6L6n5Yqs5Yqt5Yq85Yq15YuB5YuN5YuX5Yue5Yuj5Yum6aOt5Yug5Yuz5Yu15Yu45Yu55YyG5YyI55S45YyN5YyQ5YyP5YyV5Yya5Yyj5Yyv5Yyx5Yyz5Yy45Y2A5Y2G5Y2F5LiX5Y2J5Y2N5YeW5Y2e5Y2p5Y2u5aSY5Y275Y235Y6C5Y6W5Y6g5Y6m5Y6l5Y6u5Y6w5Y625Y+D57CS6ZuZ5Y+f5pu854eu5Y+u5Y+o5Y+t5Y+65ZCB5ZC95ZGA5ZCs5ZCt5ZC85ZCu5ZC25ZCp5ZCd5ZGO5ZKP5ZG15ZKO5ZGf5ZGx5ZG35ZGw5ZKS5ZG75ZKA5ZG25ZKE5ZKQ5ZKG5ZOH5ZKi5ZK45ZKl5ZKs5ZOE5ZOI5ZKoXCJdLFtcIjlhNDBcIixcIuWSq+WTguWSpOWSvuWSvOWTmOWTpeWTpuWUj+WUlOWTveWTruWTreWTuuWTouWUueWVgOWVo+WVjOWUruWVnOWVheWVluWVl+WUuOWUs+WVneWWmeWWgOWSr+WWiuWWn+WVu+WVvuWWmOWWnuWWruWVvOWWg+WWqeWWh+WWqOWXmuWXheWXn+WXhOWXnOWXpOWXlOWYlOWXt+WYluWXvuWXveWYm+WXueWZjuWZkOeHn+WYtOWYtuWYsuWYuFwiXSxbXCI5YTgwXCIsXCLlmavlmaTlmK/lmazlmarlmoblmoDlmorlmqDlmpTlmo/lmqXlmq7lmrblmrTlm4Llmrzlm4Hlm4Plm4Dlm4jlm47lm5Hlm5Plm5flm67lm7nlnIDlm7/lnITlnInlnIjlnIvlnI3lnJPlnJjlnJbll4flnJzlnKblnLflnLjlnY7lnLvlnYDlnY/lnanln4DlnojlnaHlnb/lnonlnpPlnqDlnrPlnqTlnqrlnrDln4Pln4bln5Tln5Lln5PloIrln5bln6PloIvloJnloJ3lobLloKHloaLloYvlobDmr4DloZLloL3lobnlooXlornlop/loqvlorrlo57lorvlorjloq7lo4Xlo5Plo5Hlo5flo5nlo5jlo6Xlo5zlo6Tlo5/lo6/lo7rlo7nlo7vlo7zlo73lpILlpIrlpJDlpJvmoqblpKXlpKzlpK3lpLLlpLjlpL7nq5LlpZXlpZDlpY7lpZrlpZjlpaLlpaDlpaflpazlpalcIl0sW1wiOWI0MFwiLFwi5aW45aaB5aad5L2e5L6r5aaj5aay5aeG5aeo5aec5aaN5aeZ5aea5ail5aif5aiR5aic5aiJ5aia5amA5ams5amJ5ai15ai25ami5amq5aqa5aq85aq+5auL5auC5aq95auj5auX5aum5aup5auW5au65au75ayM5ayL5ayW5ayy5auQ5ayq5ay25ay+5a2D5a2F5a2A5a2R5a2V5a2a5a2b5a2l5a2p5a2w5a2z5a215a245paI5a265a6AXCJdLFtcIjliODBcIixcIuWug+WupuWuuOWvg+Wvh+WvieWvlOWvkOWvpOWvpuWvouWvnuWvpeWvq+WvsOWvtuWvs+WwheWwh+WwiOWwjeWwk+WwoOWwouWwqOWwuOWwueWxgeWxhuWxjuWxk+WxkOWxj+WtseWxrOWxruS5ouWxtuWxueWyjOWykeWylOWmm+Wyq+Wyu+WytuWyvOWyt+WzheWyvuWzh+WzmeWzqeWzveWzuuWzreW2jOWzquW0i+W0leW0l+W1nOW0n+W0m+W0keW0lOW0ouW0muW0meW0mOW1jOW1kuW1juW1i+W1rOW1s+W1tuW2h+W2hOW2guW2ouW2neW2rOW2ruW2veW2kOW2t+W2vOW3ieW3jeW3k+W3kuW3luW3m+W3q+W3suW3teW4i+W4muW4meW4keW4m+W4tuW4t+W5hOW5g+W5gOW5juW5l+W5lOW5n+W5ouW5pOW5h+W5teW5tuW5uum6vOW5v+W6oOW7geW7guW7iOW7kOW7j1wiXSxbXCI5YzQwXCIsXCLlu5blu6Plu53lu5rlu5vlu6Llu6Hlu6jlu6nlu6zlu7Hlu7Plu7Dlu7Tlu7jlu77lvIPlvInlvZ3lvZzlvIvlvJHlvJblvKnlvK3lvLjlvYHlvYjlvYzlvY7lvK/lvZHlvZblvZflvZnlvaHlva3lvbPlvbflvoPlvoLlvb/lvorlvojlvpHlvoflvp7lvpnlvpjlvqDlvqjlvq3lvrzlv5blv7vlv6Tlv7jlv7Hlv53mgrPlv7/mgKHmgaBcIl0sW1wiOWM4MFwiLFwi5oCZ5oCQ5oCp5oCO5oCx5oCb5oCV5oCr5oCm5oCP5oC65oGa5oGB5oGq5oG35oGf5oGK5oGG5oGN5oGj5oGD5oGk5oGC5oGs5oGr5oGZ5oKB5oKN5oOn5oKD5oKa5oKE5oKb5oKW5oKX5oKS5oKn5oKL5oOh5oK45oOg5oOT5oK05b+w5oK95oOG5oK15oOY5oWN5oSV5oSG5oO25oO35oSA5oO05oO65oSD5oSh5oO75oOx5oSN5oSO5oWH5oS+5oSo5oSn5oWK5oS/5oS85oSs5oS05oS95oWC5oWE5oWz5oW35oWY5oWZ5oWa5oWr5oW05oWv5oWl5oWx5oWf5oWd5oWT5oW15oaZ5oaW5oaH5oas5oaU5oaa5oaK5oaR5oar5oau5oeM5oeK5oeJ5oe35oeI5oeD5oeG5oa65oeL57255oeN5oem5oej5oe25oe65oe05oe/5oe95oe85oe+5oiA5oiI5oiJ5oiN5oiM5oiU5oibXCJdLFtcIjlkNDBcIixcIuaInuaIoeaIquaIruaIsOaIsuaIs+aJgeaJjuaJnuaJo+aJm+aJoOaJqOaJvOaKguaKieaJvuaKkuaKk+aKluaLlOaKg+aKlOaLl+aLkeaKu+aLj+aLv+aLhuaTlOaLiOaLnOaLjOaLiuaLguaLh+aKm+aLieaMjOaLruaLseaMp+aMguaMiOaLr+aLteaNkOaMvuaNjeaQnOaNj+aOluaOjuaOgOaOq+aNtuaOo+aOj+aOieaOn+aOteaNq1wiXSxbXCI5ZDgwXCIsXCLmjanmjr7mj6nmj4Dmj4bmj6Pmj4nmj5Lmj7bmj4TmkJbmkLTmkIbmkJPmkKbmkLbmlJ3mkJfmkKjmkI/mkafmka/mkbbmkY7mlKrmkpXmkpPmkqXmkqnmkojmkrzmk5rmk5Lmk4Xmk4fmkrvmk5jmk4Lmk7Hmk6foiInmk6Dmk6Hmiqzmk6Pmk6/mlKzmk7bmk7Tmk7Lmk7rmlIDmk73mlJjmlJzmlIXmlKTmlKPmlKvmlLTmlLXmlLfmlLbmlLjnlYvmlYjmlZbmlZXmlY3mlZjmlZ7mlZ3mlbLmlbjmloLmloPorormlpvmlp/mlqvmlrfml4Pml4bml4Hml4Tml4zml5Lml5vml5nml6Dml6Hml7HmnbLmmIrmmIPml7vmnbPmmLXmmLbmmLTmmJzmmY/mmYTmmYnmmYHmmZ7mmZ3mmaTmmafmmajmmZ/mmaLmmbDmmoPmmojmmo7mmonmmoTmmpjmmp3mm4Hmmrnmm4nmmr7mmrxcIl0sW1wiOWU0MFwiLFwi5puE5pq45puW5pua5pug5pi/5pum5pup5puw5pu15pu35pyP5pyW5pye5pym5pyn6Zy45pyu5py/5py25p2B5py45py35p2G5p2e5p2g5p2Z5p2j5p2k5p6J5p2w5p6p5p285p2q5p6M5p6L5p6m5p6h5p6F5p635p+v5p605p+s5p6z5p+p5p645p+k5p+e5p+d5p+i5p+u5p655p+O5p+G5p+n5qqc5qCe5qGG5qCp5qGA5qGN5qCy5qGOXCJdLFtcIjllODBcIixcIuais+agq+ahmeaho+aht+ahv+ain+aij+aireailOaineaim+aig+aqruaiueahtOaiteaioOaiuuakj+aijeahvuakgeajiuakiOajmOakouakpuajoeakjOajjeajlOajp+ajleaktuakkuakhOajl+ajo+akpeajueajoOajr+akqOakquakmuako+akoeajhualuealt+alnOaluOalq+allOalvualruakuealtOakvealmeaksOaloealnualneamgealquamsuamruankOamv+angeank+amvuanjuWvqOaniuanneamu+ang+amp+aoruamkeamoOamnOamleamtOannuanqOaoguaom+anv+asiuanueansuanp+aoheamseaonuanreaolOanq+aoiuaokuargeaoo+aok+aphOaojOapsuaotuapuOaph+apouapmeappuapiOaouOaoouaqkOaqjeaqoOaqhOaqouaqo1wiXSxbXCI5ZjQwXCIsXCLmqpfomJfmqrvmq4Pmq4LmqrjmqrPmqqzmq57mq5Hmq5/mqqrmq5rmq6rmq7vmrIXomJbmq7rmrJLmrJbprLHmrJ/mrLjmrLfnm5zmrLnpo67mrYfmrYPmrYnmrZDmrZnmrZTmrZvmrZ/mraHmrbjmrbnmrb/mroDmroTmroPmro3mrpjmrpXmrp7mrqTmrqrmrqvmrq/mrrLmrrHmrrPmrrfmrrzmr4bmr4vmr5Pmr5/mr6zmr6vmr7Pmr69cIl0sW1wiOWY4MFwiLFwi6bq+5rCI5rCT5rCU5rCb5rCk5rCj5rGe5rGV5rGi5rGq5rKC5rKN5rKa5rKB5rKb5rG+5rGo5rGz5rKS5rKQ5rOE5rOx5rOT5rK95rOX5rOF5rOd5rKu5rKx5rK+5rK65rOb5rOv5rOZ5rOq5rSf6KGN5rS25rSr5rS95rS45rSZ5rS15rSz5rSS5rSM5rWj5raT5rWk5rWa5rW55rWZ5raO5raV5r+k5raF5re55riV5riK5ra15reH5rem5ra45reG5res5ree5reM5reo5reS5reF5re65reZ5rek5reV5req5reu5rit5rmu5riu5riZ5rmy5rmf5ri+5rij5rmr5rir5rm25rmN5rif5rmD5ri65rmO5rik5ru/5rid5ri45rqC5rqq5rqY5ruJ5rq35ruT5rq95rqv5ruE5rqy5ruU5ruV5rqP5rql5ruC5rqf5r2B5ryR54GM5rus5ru45ru+5ry/5ruy5ryx5ruv5ryy5ruMXCJdLFtcImUwNDBcIixcIua8vua8k+a7t+a+hua9uua9uOa+gea+gOa9r+a9m+a/s+a9rea+gua9vOa9mOa+jua+kea/gua9pua+s+a+o+a+oea+pOa+uea/hua+qua/n+a/lea/rOa/lOa/mOa/sea/rua/m+eAieeAi+a/uueAkeeAgeeAj+a/vueAm+eAmua9tOeAneeAmOeAn+eAsOeAvueAsueBkeeBo+eCmeeCkueCr+eDseeCrOeCuOeCs+eCrueDn+eDi+eDnVwiXSxbXCJlMDgwXCIsXCLng5nnhInng73nhJznhJnnhaXnhZXnhojnhabnhaLnhYznhZbnhaznho/nh7vnhoTnhpXnhqjnhqznh5fnhrnnhr7nh5Lnh4nnh5Tnh47nh6Dnh6znh6fnh7Xnh7znh7nnh7/niI3niJDniJvniKjniK3niKzniLDniLLniLvniLzniL/niYDniYbniYvniZjnibTnib7nioLnioHniofnipLnipbniqLniqfnirnnirLni4Pni4bni4Tni47ni5Lni6Lni6Dni6Hni7nni7flgI/njJfnjIrnjJznjJbnjJ3njLTnjK/njKnnjKXnjL7njY7njY/pu5jnjZfnjarnjajnjbDnjbjnjbXnjbvnjbrnj4jnjrPnj47njrvnj4Dnj6Xnj67nj57nkqLnkIXnka/nkKXnj7jnkLLnkLrnkZXnkL/nkZ/nkZnnkYHnkZznkannkbDnkaPnkarnkbbnkb7nkovnkp7nkqfnk4rnk4/nk5Tnj7FcIl0sW1wiZTE0MFwiLFwi55Og55Oj55On55Op55Ou55Oy55Ow55Ox55O455O355SE55SD55SF55SM55SO55SN55SV55ST55Se55Sm55Ss55S855WE55WN55WK55WJ55Wb55WG55Wa55Wp55Wk55Wn55Wr55Wt55W455W255aG55aH55W055aK55aJ55aC55aU55aa55ad55al55aj55eC55az55eD55a155a955a455a855ax55eN55eK55eS55eZ55ej55ee55e+55e/XCJdLFtcImUxODBcIixcIueXvOeYgeeXsOeXuueXsueXs+eYi+eYjeeYieeYn+eYp+eYoOeYoeeYoueYpOeYtOeYsOeYu+eZh+eZiOeZhueZnOeZmOeZoeeZoueZqOeZqeeZqueZp+eZrOeZsOeZsueZtueZuOeZvOeagOeag+eaiOeai+eajuealueak+eameeamueasOeatOeauOeaueeauuebguebjeebluebkuebnueboeebpeebp+ebquiYr+ebu+eciOech+echOecqeecpOecnuecpeecpuecm+ect+ecuOedh+edmuedqOedq+edm+edpeedv+edvuedueeejueei+eekeeeoOeenueesOeetueeueeev+eevOeeveeeu+efh+efjeefl+efmuefnOefo+efruefvOegjOegkuekpuegoOekquehheeijuehtOeihuehvOeimueijOeio+eiteeiqueir+ejkeejhueji+ejlOeivueivOejheejiuejrFwiXSxbXCJlMjQwXCIsXCLno6fno5rno73no7TnpIfnpJLnpJHnpJnnpKznpKvnpYDnpaDnpZfnpZ/npZrnpZXnpZPnpbrnpb/npornpp3npqfpvYvnpqrnpq7nprPnprnnprrnp4nnp5Xnp6fnp6znp6Hnp6PnqIjnqI3nqJjnqJnnqKDnqJ/npoDnqLHnqLvnqL7nqLfnqYPnqZfnqYnnqaHnqaLnqanpvp3nqbDnqbnnqb3nqojnqpfnqpXnqpjnqpbnqqnnq4jnqrBcIl0sW1wiZTI4MFwiLFwi56q256uF56uE56q/6YKD56uH56uK56uN56uP56uV56uT56uZ56ua56ud56uh56ui56um56ut56uw56yC56yP56yK56yG56yz56yY56yZ56ye56y156yo56y2562Q562656yE562N56yL562M562F5621562l5620562n562w562x562s562u566d566Y566f566N566c566a566L566S566P562d566Z56+L56+B56+M56+P566056+G56+d56+p57CR57CU56+m56+l57Gg57CA57CH57CT56+z56+357CX57CN56+257Cj57Cn57Cq57Cf57C357Cr57C957GM57GD57GU57GP57GA57GQ57GY57Gf57Gk57GW57Gl57Gs57G157KD57KQ57Kk57Kt57Ki57Kr57Kh57Ko57Kz57Ky57Kx57Ku57K557K957OA57OF57OC57OY57OS57Oc57Oi6ay757Ov57Oy57O057O257O657SGXCJdLFtcImUzNDBcIixcIue0gue0nOe0lee0iue1hee1i+e0rue0sue0v+e0tee1hue1s+e1lue1jue1sue1qOe1rue1j+e1o+e2k+e2iee1m+e2j+e1vee2m+e2uue2rue2o+e2tee3h+e2vee2q+e4vee2oue2r+e3nOe2uOe2n+e2sOe3mOe3nee3pOe3nue3u+e3sue3oee4hee4iue4o+e4oee4kue4see4n+e4iee4i+e4oue5hue5pue4u+e4tee4uee5g+e4t1wiXSxbXCJlMzgwXCIsXCLnuLLnuLrnuafnuZ3nuZbnuZ7nuZnnuZrnubnnuarnuannubznubvnuoPnt5Xnub3ovq7nub/nuojnuonnuoznupLnupDnupPnupTnupbnuo7nupvnupznvLjnvLrnvYXnvYznvY3nvY7nvZDnvZHnvZXnvZTnvZjnvZ/nvaDnvajnvannvafnvbjnvoLnvobnvoPnvojnvofnvoznvpTnvp7nvp3nvprnvqPnvq/nvrLnvrnnvq7nvrbnvrjorbHnv4Xnv4bnv4rnv5Xnv5Tnv6Hnv6bnv6nnv7Pnv7npo5zogIbogITogIvogJLogJjogJnogJzogKHogKjogL/ogLvogYrogYbogZLogZjogZrogZ/ogaLogajogbPogbLogbDogbbogbnogb3ogb/ogoTogobogoXogpvogpPogprogq3lhpDogqzog5vog6Xog5nog53og4Tog5rog5bohInog6/og7HohJvohKnohKPohK/ohYtcIl0sW1wiZTQ0MFwiLFwi6ZqL6IWG6IS+6IWT6IWR6IO86IWx6IWu6IWl6IWm6IW06IaD6IaI6IaK6IaA6IaC6Iag6IaV6Iak6Iaj6IWf6IaT6Iap6Iaw6Ia16Ia+6Ia46Ia96IeA6IeC6Ia66IeJ6IeN6IeR6IeZ6IeY6IeI6Iea6Ief6Ieg6Ien6Ie66Ie76Ie+6IiB6IiC6IiF6IiH6IiK6IiN6IiQ6IiW6Iip6Iir6Ii46Iiz6ImA6ImZ6ImY6Imd6Ima6Imf6ImkXCJdLFtcImU0ODBcIixcIuiJouiJqOiJquiJq+iIruiJseiJt+iJuOiJvuiKjeiKkuiKq+iKn+iKu+iKrOiLoeiLo+iLn+iLkuiLtOiLs+iLuuiOk+iMg+iLu+iLueiLnuiMhuiLnOiMieiLmeiMteiMtOiMluiMsuiMseiNgOiMueiNkOiNheiMr+iMq+iMl+iMmOiOheiOmuiOquiOn+iOouiOluiMo+iOjuiOh+iOiuiNvOiOteiNs+iNteiOoOiOieiOqOiPtOiQk+iPq+iPjuiPveiQg+iPmOiQi+iPgeiPt+iQh+iPoOiPsuiQjeiQouiQoOiOveiQuOiUhuiPu+iRreiQquiQvOiVmuiShOiRt+iRq+iSreiRruiSguiRqeiRhuiQrOiRr+iRueiQteiTiuiRouiSueiSv+iSn+iTmeiTjeiSu+iTmuiTkOiTgeiThuiTluiSoeiUoeiTv+iTtOiUl+iUmOiUrOiUn+iUleiUlOiTvOiVgOiVo+iVmOiViFwiXSxbXCJlNTQwXCIsXCLolYHomILolYvolZXoloDolqTolojolpHolorolqjola3olpTolpvol6rolofolpzolbfolb7olpDol4nolrrol4/olrnol5Dol5Xol53ol6Xol5zol7nomIromJPomIvol77ol7romIbomKLomJromLDomL/omY3kuZXomZTomZ/omafombHompPomqPomqnomqromovomozomrbomq/om4Tom4bomrDom4nooKPomqvom5Tom57om6nom6xcIl0sW1wiZTU4MFwiLFwi6Juf6Jub6Juv6JyS6JyG6JyI6JyA6JyD6Ju76JyR6JyJ6JyN6Ju56JyK6Jy06Jy/6Jy36Jy76Jyl6Jyp6Jya6J2g6J2f6J246J2M6J2O6J206J2X6J2o6J2u6J2Z6J2T6J2j6J2q6KCF6J6i6J6f6J6C6J6v6J+L6J696J+A6J+Q6ZuW6J6r6J+E6J6z6J+H6J+G6J676J+v6J+y6J+g6KCP6KCN6J++6J+26J+36KCO6J+S6KCR6KCW6KCV6KCi6KCh6KCx6KC26KC56KCn6KC76KGE6KGC6KGS6KGZ6KGe6KGi6KGr6KKB6KG+6KKe6KG16KG96KK16KGy6KKC6KKX6KKS6KKu6KKZ6KKi6KKN6KKk6KKw6KK/6KKx6KOD6KOE6KOU6KOY6KOZ6KOd6KO56KSC6KO86KO06KOo6KOy6KSE6KSM6KSK6KST6KWD6KSe6KSl6KSq6KSr6KWB6KWE6KS76KS26KS46KWM6KSd6KWg6KWeXCJdLFtcImU2NDBcIixcIuilpuilpOilreilquilr+iltOilt+ilvuimg+imiOimiuimk+immOimoeimqeimpuimrOimr+imsuimuuimveimv+ingOinmuinnOinneinp+intOinuOiog+ioluiokOiojOiom+ioneiopeiotuipgeipm+ipkuiphuipiOipvOipreiprOipouiqheiqguiqhOiqqOiqoeiqkeiqpeiqpuiqmuiqo+irhOirjeirguirmuirq+irs+irp1wiXSxbXCJlNjgwXCIsXCLoq6Toq7HorJToq6Doq6Loq7foq57oq5vorIzorIforJroq6HorJborJDorJforKDorLPpnqvorKborKvorL7orKjorYHorYzorY/orY7orYnorZborZvorZroravorZ/orazora/orbTorb3oroDorozoro7orpLorpPorpborpnorprosLrosYHosL/osYjosYzosY7osZDosZXosaLosazosbjosbrosoLosonosoXosoroso3oso7ospTosbzospjmiJ3osq3osqrosr3osrLosrPosq7osrbos4jos4Hos6Tos6Pos5ros73os7ros7votITotIXotIrotIfotI/otI3otJDpvY7otJPos43otJTotJbotafota3otbHotbPotoHotpnot4Lotr7otrrot4/ot5rot5bot4zot5vot4vot6rot6vot5/ot6Pot7zouIjouInot7/ouJ3ouJ7ouJDouJ/ouYLouLXouLDouLTouYpcIl0sW1wiZTc0MFwiLFwi6LmH6LmJ6LmM6LmQ6LmI6LmZ6Lmk6Lmg6Liq6Lmj6LmV6Lm26Lmy6Lm86LqB6LqH6LqF6LqE6LqL6LqK6LqT6LqR6LqU6LqZ6Lqq6Lqh6Lqs6Lqw6LuG6Lqx6Lq+6LuF6LuI6LuL6Lub6Luj6Lu86Lu76Lur6Lu+6LyK6LyF6LyV6LyS6LyZ6LyT6Lyc6Lyf6Lyb6LyM6Lym6Lyz6Ly76Ly56L2F6L2C6Ly+6L2M6L2J6L2G6L2O6L2X6L2cXCJdLFtcImU3ODBcIixcIui9oui9o+i9pOi+nOi+n+i+o+i+rei+r+i+t+i/mui/pei/oui/qui/r+mCh+i/tOmAhei/uei/uumAkemAlemAoemAjemAnumAlumAi+mAp+mAtumAtemAuei/uOmBj+mBkOmBkemBkumAjumBiemAvumBlumBmOmBnumBqOmBr+mBtumaqOmBsumCgumBvemCgemCgOmCiumCiemCj+mCqOmCr+mCsemCtemDoumDpOaJiOmDm+mEgumEkumEmemEsumEsOmFiumFlumFmOmFo+mFpemFqemFs+mFsumGi+mGiemGgumGoumGq+mGr+mGqumGtemGtOmGuumHgOmHgemHiemHi+mHkOmHlumHn+mHoemHm+mHvOmHtemHtumInumHv+mIlOmIrOmIlemIkemJnumJl+mJhemJiemJpOmJiOmKlemIv+mJi+mJkOmKnOmKlumKk+mKm+mJmumLj+mKuemKt+mLqemMj+mLuumNhOmMrlwiXSxbXCJlODQwXCIsXCLpjJnpjKLpjJrpjKPpjLrpjLXpjLvpjZzpjaDpjbzpja7pjZbpjrDpjqzpjq3pjpTpjrnpj5bpj5fpj6jpj6Xpj5jpj4Ppj53pj5Dpj4jpj6TpkJrpkJTpkJPpkIPpkIfpkJDpkLbpkKvpkLXpkKHpkLrpkYHpkZLpkYTpkZvpkaDpkaLpkZ7pkarpiKnpkbDpkbXpkbfpkb3pkZrpkbzpkb7pkoHpkb/ploLplofplorplpTplpbplpjplplcIl0sW1wiZTg4MFwiLFwi6Zag6Zao6Zan6Zat6Za86Za76Za56Za+6ZeK5r+26ZeD6ZeN6ZeM6ZeV6ZeU6ZeW6Zec6Zeh6Zel6Zei6Zih6Zio6Ziu6Ziv6ZmC6ZmM6ZmP6ZmL6Zm36Zmc6Zme6Zmd6Zmf6Zmm6Zmy6Zms6ZqN6ZqY6ZqV6ZqX6Zqq6Zqn6Zqx6Zqy6Zqw6Zq06Zq26Zq46Zq56ZuO6ZuL6ZuJ6ZuN6KWN6Zuc6ZyN6ZuV6Zu56ZyE6ZyG6ZyI6ZyT6ZyO6ZyR6ZyP6ZyW6ZyZ6Zyk6Zyq6Zyw6Zy56Zy96Zy+6Z2E6Z2G6Z2I6Z2C6Z2J6Z2c6Z2g6Z2k6Z2m6Z2o5YuS6Z2r6Z2x6Z256Z6F6Z286Z6B6Z266Z6G6Z6L6Z6P6Z6Q6Z6c6Z6o6Z6m6Z6j6Z6z6Z606Z+D6Z+G6Z+I6Z+L6Z+c6Z+t6b2P6Z+y56uf6Z+26Z+16aCP6aCM6aC46aCk6aCh6aC36aC96aGG6aGP6aGL6aGr6aGv6aGwXCJdLFtcImU5NDBcIixcIumhsemhtOmhs+miqumir+misemitumjhOmjg+mjhumjqemjq+mkg+mkiemkkumklOmkmOmkoemknemknumkpOmkoOmkrOmkrumkvemkvumlgumliemlhemlkOmli+mlkemlkumljOmllemml+mmmOmmpemmremmrummvOmnn+mnm+mnnemnmOmnkemnremnrumnsemnsumnu+mnuOmogemoj+mohemnoumomemoq+mot+mphempgumpgOmpg1wiXSxbXCJlOTgwXCIsXCLpqL7pqZXpqY3pqZvpqZfpqZ/pqaLpqaXpqaTpqanpqavpqarpqq3pqrDpqrzpq4Dpq4/pq5Hpq5Ppq5Tpq57pq5/pq6Lpq6Ppq6bpq6/pq6vpq67pq7Tpq7Hpq7fpq7vprIbprJjprJrprJ/prKLprKPprKXprKfprKjprKnprKrprK7prK/prLLprYTprYPprY/prY3prY7prZHprZjprbTprpPproPprpHprpbprpfprp/prqDprqjprrTpr4Dpr4rprrnpr4bpr4/pr5Hpr5Lpr6Ppr6Lpr6Tpr5Tpr6HpsLrpr7Lpr7Hpr7DpsJXpsJTpsInpsJPpsIzpsIbpsIjpsJLpsIrpsITpsK7psJvpsKXpsKTpsKHpsLDpsYfpsLLpsYbpsL7psZrpsaDpsafpsbbpsbjps6fps6zps7DptInptIjps6vptIPptIbptKrptKbptq/ptKPptJ/ptYTptJXptJLptYHptL/ptL7ptYbptYhcIl0sW1wiZWE0MFwiLFwi6bWd6bWe6bWk6bWR6bWQ6bWZ6bWy6baJ6baH6bar6bWv6bW66baa6bak6bap6bay6beE6beB6ba76ba46ba66beG6beP6beC6beZ6beT6be46bem6bet6bev6be96bia6bib6bie6bm16bm56bm96bqB6bqI6bqL6bqM6bqS6bqV6bqR6bqd6bql6bqp6bq46bqq6bqt6Z2h6buM6buO6buP6buQ6buU6buc6bue6bud6bug6bul6buo6buvXCJdLFtcImVhODBcIixcIum7tOm7tum7t+m7uem7u+m7vOm7vem8h+m8iOeat+m8lem8oem8rOm8vum9ium9kum9lOm9o+m9n+m9oOm9oem9pum9p+m9rOm9qum9t+m9sum9tum+lem+nOm+oOWgr+anh+mBmeeRpOWHnOeGmVwiXSxbXCJlZDQwXCIsXCLnuoropJzpjYjpiojok5zkv4nngrvmmLHmo4jpi7nmm7vlvYXkuKjku6Hku7zkvIDkvIPkvLnkvZbkvpLkvorkvprkvpTkv43lgYDlgKLkv7/lgJ7lgYblgbDlgYLlgpTlg7Tlg5jlhYrlhaTlhp3lhr7lh6zliJXlipzliqbli4Dli5vljIDljIfljKTljbLljpPljrLlj53vqI7lkpzlkorlkqnlk7/lloblnZnlnaXlnqzln4jln4fvqI9cIl0sW1wiZWQ4MFwiLFwi76iQ5aKe5aKy5aSL5aWT5aWb5aWd5aWj5aak5aa65a2W5a+A55Sv5a+Y5a+s5bCe5bKm5bK65bO15bSn5bWT76iR5bWC5bWt5ba45ba55beQ5byh5by05b2n5b635b+e5oGd5oKF5oKK5oOe5oOV5oSg5oOy5oSR5oS35oSw5oaY5oiT5oqm5o+15pGg5pKd5pOO5pWO5piA5piV5pi75piJ5piu5pie5pik5pml5pmX5pmZ76iS5pmz5pqZ5pqg5pqy5pq/5pu65pyO76Sp5p2m5p675qGS5p+A5qCB5qGE5qOP76iT5qWo76iU5qaY5qei5qiw5qmr5qmG5qmz5qm+5qui5quk5q+W5rC/5rGc5rKG5rGv5rOa5rSE5raH5rWv5raW5ras5reP5re45rey5re85ri55rmc5rin5ri85rq/5r6I5r615r+154CF54CH54Co54KF54Kr54SP54SE54Wc54WG54WH76iV54eB54e+54qxXCJdLFtcImVlNDBcIixcIueKvueMpO+olueNt+eOveePieePluePo+ePkueQh+ePteeQpueQqueQqeeQrueRoueSieeSn+eUgeeVr+eagueanOeanueam+eapu+ol+edhuWKr+egoeehjuehpOehuueksO+omO+ome+omuemlO+om+emm+erkeerp++onOerq+eunu+onee1iOe1nOe2t+e2oOe3lue5kue9h+e+oe+onuiMgeiNouiNv+iPh+iPtuiRiOiStOiVk+iVmVwiXSxbXCJlZTgwXCIsXCLolavvqJ/olrDvqKDvqKHooIfoo7XoqJLoqLfoqbnoqqfoqr7oq5/vqKLoq7borZPorb/os7Dos7TotJLotbbvqKPou4/vqKTvqKXpgafpg57vqKbphJXphKfph5rph5fph57ph63ph67ph6Tph6XpiIbpiJDpiIrpiLrpiYDpiLzpiY7piZnpiZHpiLnpiafpiqfpibfpibjpi6fpi5fpi5npi5DvqKfpi5Xpi6Dpi5PpjKXpjKHpi7vvqKjpjJ7pi7/pjJ3pjILpjbDpjZfpjqTpj4bpj57pj7jpkLHpkYXpkYjplpLvp5zvqKnpmp3pmq/pnLPpnLvpnYPpnY3pnY/pnZHpnZXpoZfpoaXvqKrvqKvppKfvqKzppp7pqY7pq5npq5zprbXprbLpro/prrHprrvpsIDptbDptavvqK3puJnpu5FcIl0sW1wiZWVlZlwiLFwi4oWwXCIsOSxcIu+/ou+/pO+8h++8glwiXSxbXCJmMDQwXCIsXCLugIBcIiw2Ml0sW1wiZjA4MFwiLFwi7oC/XCIsMTI0XSxbXCJmMTQwXCIsXCLugrxcIiw2Ml0sW1wiZjE4MFwiLFwi7oO7XCIsMTI0XSxbXCJmMjQwXCIsXCLuhbhcIiw2Ml0sW1wiZjI4MFwiLFwi7oa3XCIsMTI0XSxbXCJmMzQwXCIsXCLuiLRcIiw2Ml0sW1wiZjM4MFwiLFwi7omzXCIsMTI0XSxbXCJmNDQwXCIsXCLui7BcIiw2Ml0sW1wiZjQ4MFwiLFwi7oyvXCIsMTI0XSxbXCJmNTQwXCIsXCLujqxcIiw2Ml0sW1wiZjU4MFwiLFwi7o+rXCIsMTI0XSxbXCJmNjQwXCIsXCLukahcIiw2Ml0sW1wiZjY4MFwiLFwi7pKnXCIsMTI0XSxbXCJmNzQwXCIsXCLulKRcIiw2Ml0sW1wiZjc4MFwiLFwi7pWjXCIsMTI0XSxbXCJmODQwXCIsXCLul6BcIiw2Ml0sW1wiZjg4MFwiLFwi7pifXCIsMTI0XSxbXCJmOTQwXCIsXCLumpxcIl0sW1wiZmE0MFwiLFwi4oWwXCIsOSxcIuKFoFwiLDksXCLvv6Lvv6TvvIfvvILjiLHihJbihKHiiLXnuoropJzpjYjpiojok5zkv4nngrvmmLHmo4jpi7nmm7vlvYXkuKjku6Hku7zkvIDkvIPkvLnkvZbkvpLkvorkvprkvpTkv43lgYDlgKLkv7/lgJ7lgYblgbDlgYLlgpTlg7Tlg5jlhYpcIl0sW1wiZmE4MFwiLFwi5YWk5Yad5Ya+5Yes5YiV5Yqc5Yqm5YuA5Yub5YyA5YyH5Yyk5Y2y5Y6T5Y6y5Y+d76iO5ZKc5ZKK5ZKp5ZO/5ZaG5Z2Z5Z2l5Z6s5Z+I5Z+H76iP76iQ5aKe5aKy5aSL5aWT5aWb5aWd5aWj5aak5aa65a2W5a+A55Sv5a+Y5a+s5bCe5bKm5bK65bO15bSn5bWT76iR5bWC5bWt5ba45ba55beQ5byh5by05b2n5b635b+e5oGd5oKF5oKK5oOe5oOV5oSg5oOy5oSR5oS35oSw5oaY5oiT5oqm5o+15pGg5pKd5pOO5pWO5piA5piV5pi75piJ5piu5pie5pik5pml5pmX5pmZ76iS5pmz5pqZ5pqg5pqy5pq/5pu65pyO76Sp5p2m5p675qGS5p+A5qCB5qGE5qOP76iT5qWo76iU5qaY5qei5qiw5qmr5qmG5qmz5qm+5qui5quk5q+W5rC/5rGc5rKG5rGv5rOa5rSE5raH5rWvXCJdLFtcImZiNDBcIixcIua2lua2rOa3j+a3uOa3sua3vOa4uea5nOa4p+a4vOa6v+a+iOa+tea/teeAheeAh+eAqOeCheeCq+eEj+eEhOeFnOeFhueFh++oleeHgeeHvueKseeKvueMpO+olueNt+eOveePieePluePo+ePkueQh+ePteeQpueQqueQqeeQrueRoueSieeSn+eUgeeVr+eagueanOeanueam+eapu+ol+edhuWKr+egoeehjuehpOehuueksO+omO+omVwiXSxbXCJmYjgwXCIsXCLvqJrnppTvqJvnppvnq5Hnq6fvqJznq6vnrp7vqJ3ntYjntZzntrfntqDnt5bnuZLnvYfnvqHvqJ7ojIHojaLojb/oj4foj7bokYjokrTolZPolZnolavvqJ/olrDvqKDvqKHooIfoo7XoqJLoqLfoqbnoqqfoqr7oq5/vqKLoq7borZPorb/os7Dos7TotJLotbbvqKPou4/vqKTvqKXpgafpg57vqKbphJXphKfph5rph5fph57ph63ph67ph6Tph6XpiIbpiJDpiIrpiLrpiYDpiLzpiY7piZnpiZHpiLnpiafpiqfpibfpibjpi6fpi5fpi5npi5DvqKfpi5Xpi6Dpi5PpjKXpjKHpi7vvqKjpjJ7pi7/pjJ3pjILpjbDpjZfpjqTpj4bpj57pj7jpkLHpkYXpkYjplpLvp5zvqKnpmp3pmq/pnLPpnLvpnYPpnY3pnY/pnZHpnZXpoZfpoaXvqKrvqKvppKfvqKzppp7pqY7pq5lcIl0sW1wiZmM0MFwiLFwi6auc6a216a2y6a6P6a6x6a676bCA6bWw6bWr76it6biZ6buRXCJdXVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvc2hpZnRqaXMuanNvblxuLy8gbW9kdWxlIGlkID0gMTQ0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gW1tcIjBcIixcIlxcdTAwMDBcIiwxMjddLFtcIjhlYTFcIixcIu+9oVwiLDYyXSxbXCJhMWExXCIsXCLjgIDjgIHjgILvvIzvvI7jg7vvvJrvvJvvvJ/vvIHjgpvjgpzCtO+9gMKo77y+77+j77y/44O944O+44Kd44Ke44CD5Lud44CF44CG44CH44O84oCV4oCQ77yP77y8772e4oil772c4oCm4oCl4oCY4oCZ4oCc4oCd77yI77yJ44CU44CV77y777y9772b772d44CIXCIsOSxcIu+8i++8jcKxw5fDt++8neKJoO+8nO+8nuKJpuKJp+KInuKItOKZguKZgMKw4oCy4oCz4oSD77+l77yE77+g77+h77yF77yD77yG77yK77ygwqfimIbimIXil4vil4/il47il4dcIl0sW1wiYTJhMVwiLFwi4peG4pah4pag4paz4pay4pa94pa84oC744CS4oaS4oaQ4oaR4oaT44CTXCJdLFtcImEyYmFcIixcIuKIiOKIi+KKhuKKh+KKguKKg+KIquKIqVwiXSxbXCJhMmNhXCIsXCLiiKfiiKjvv6Lih5Lih5TiiIDiiINcIl0sW1wiYTJkY1wiLFwi4oig4oql4oyS4oiC4oiH4omh4omS4omq4omr4oia4oi94oid4oi14oir4oisXCJdLFtcImEyZjJcIixcIuKEq+KAsOKZr+KZreKZquKAoOKAocK2XCJdLFtcImEyZmVcIixcIuKXr1wiXSxbXCJhM2IwXCIsXCLvvJBcIiw5XSxbXCJhM2MxXCIsXCLvvKFcIiwyNV0sW1wiYTNlMVwiLFwi772BXCIsMjVdLFtcImE0YTFcIixcIuOBgVwiLDgyXSxbXCJhNWExXCIsXCLjgqFcIiw4NV0sW1wiYTZhMVwiLFwizpFcIiwxNixcIs6jXCIsNl0sW1wiYTZjMVwiLFwizrFcIiwxNixcIs+DXCIsNl0sW1wiYTdhMVwiLFwi0JBcIiw1LFwi0IHQllwiLDI1XSxbXCJhN2QxXCIsXCLQsFwiLDUsXCLRkdC2XCIsMjVdLFtcImE4YTFcIixcIuKUgOKUguKUjOKUkOKUmOKUlOKUnOKUrOKUpOKUtOKUvOKUgeKUg+KUj+KUk+KUm+KUl+KUo+KUs+KUq+KUu+KVi+KUoOKUr+KUqOKUt+KUv+KUneKUsOKUpeKUuOKVglwiXSxbXCJhZGExXCIsXCLikaBcIiwxOSxcIuKFoFwiLDldLFtcImFkYzBcIixcIuONieOMlOOMouONjeOMmOOMp+OMg+OMtuONkeONl+OMjeOMpuOMo+OMq+ONiuOMu+OOnOOOneOOnuOOjuOOj+OPhOOOoVwiXSxbXCJhZGRmXCIsXCLjjbvjgJ3jgJ/ihJbjj43ihKHjiqRcIiw0LFwi44ix44iy44i5442+442944284omS4omh4oir4oiu4oiR4oia4oql4oig4oif4oq/4oi14oip4oiqXCJdLFtcImIwYTFcIixcIuS6nOWUluWog+mYv+WTgOaEm+aMqOWntumAouiRteiMnOepkOaCquaPoea4peaXreiRpuiKpumvteaik+Wcp+aWoeaJseWum+WnkOiZu+mjtOe1oue2vumujuaIlueyn+iit+WuieW6teaMieaal+ahiOmXh+mejeadj+S7peS8iuS9jeS+neWBieWbsuWkt+WnlOWogeWwieaDn+aEj+aFsOaYk+akheeCuueVj+eVsOenu+e2ree3r+iDg+iQjuiho+isgumBlemBuuWMu+S6leS6peWfn+iCsumDgeejr+S4gOWjsea6oumAuOeosuiMqOiKi+mwr+WFgeWNsOWSveWToeWboOWnu+W8lemjsua3q+iDpOiUrVwiXSxbXCJiMWExXCIsXCLpmaLpmbDpmqDpn7vlkIvlj7Plrofng4/nvr3ov4Lpm6jlja/ptZznqrrkuJHnopPoh7zmuKblmJjllITmrJ3olJrpsLvlp6Xljqnmtabnk5zplo/lmYLkupHpgYvpm7LojY/ppIzlj6HllrblrLDlvbHmmKDmm7PmoITmsLjms7PmtKnnkZvnm4jnqY7poLToi7HooZvoqaDpi63mtrLnlqvnm4rpp4XmgqborIHotorplrLmpo7ljq3lhoblnJLloLDlpYTlrrTlu7bmgKjmjqnmj7Tmsr/mvJTngo7nhJTnhZnnh5XnjL/nuIHoibboi5HolpfpgaDpiZvptJvloanmlrzmsZrnlKXlh7nlpK7lpaXlvoDlv5xcIl0sW1wiYjJhMVwiLFwi5oq85pe65qiq5qyn5q60546L57+B6KWW6bSs6bSO6buE5bKh5rKW6I275YSE5bGL5oa26IeG5qG254mh5LmZ5L+65Y245oGp5rip56mP6Z+z5LiL5YyW5Luu5L2V5Ly95L6h5L2z5Yqg5Y+v5ZiJ5aSP5auB5a625a+h56eR5pqH5p6c5p625q2M5rKz54Gr54+C56aN56a+56i8566H6Iqx6Iub6IyE6I236I+v6I+T6J2m6Kqy5Zip6LKo6L+m6YGO6Zye6JqK5L+E5bOo5oiR54mZ55S76Iel6Iq96Ju+6LOA6ZuF6aST6aeV5LuL5Lya6Kej5Zue5aGK5aOK5bu75b+r5oCq5oKU5oGi5oeQ5oiS5ouQ5pS5XCJdLFtcImIzYTFcIixcIumtgeaZpuaisOa1t+eBsOeVjOeahue1teiKpeifuemWi+majuiyneWHseWKvuWkluWSs+Wus+W0luaFqOamgua2r+eijeiTi+ihl+ipsumOp+mquOa1rOmmqOibmeWeo+afv+ibjumIjuWKg+Wah+WQhOW7k+aLoeaSueagvOaguOauu+eNsueiuuepq+immuinkui1q+i8g+mDremWo+malOmdqeWtpuWys+alvemhjemhjuaOm+esoOaoq+apv+aitumwjea9n+WJsuWWneaBsOaLrOa0u+a4h+a7keiRm+ikkOi9hOS4lOmwueWPtuakm+aouumehOagquWFnOerg+iSsumHnOmOjOWZm+m0qOagouiMheiQsVwiXSxbXCJiNGExXCIsXCLnsqXliIjoi4Xnk6bkub7kvoPlhqDlr5LliIrli5jli6flt7vllprloKrlp6blrozlrpjlr5vlubLlubnmgqPmhJ/mhaPmhr7mj5vmlaLmn5HmoZPmo7rmrL7mrZPmsZfmvKLmvpfmvYXnkrDnlJjnm6PnnIvnq7/nrqHnsKHnt6nnvLbnv7Dogp3oiabojp7oprPoq4zosqvpgoTpkZHplpPplpHplqLpmaXpn5PppKjoiJjkuLjlkKvlsrjlt4znjqnnmYznnLzlsqnnv6votIvpm4HpoJHpoZTpoZjkvIHkvI7ljbHllpzlmajln7rlpYflrInlr4TlspDluIzlub7lv4zmj67mnLrml5fml6LmnJ/mo4vmo4RcIl0sW1wiYjVhMVwiLFwi5qmf5biw5q+F5rCX5rG955W/56WI5a2j56iA57SA5b696KaP6KiY6LK06LW36LuM6Lyd6aOi6aiO6ay85LqA5YG95YSA5aaT5a6c5oiv5oqA5pOs5qy654qg55aR56WH576p6J+76Kq86K2w5o6s6I+K6Z6g5ZCJ5ZCD5Zar5qGU5qmY6Kmw56Cn5p216buN5Y205a6i6ISa6JmQ6YCG5LiY5LmF5LuH5LyR5Y+K5ZC45a6u5byT5oCl5pWR5py95rGC5rGy5rOj54G455CD56m256qu56yI57Sa57O+57Wm5pen54mb5Y675bGF5beo5ouS5oug5oyZ5rig6Jma6Kix6Led6Yu45ryB56am6a2a5Lqo5Lqr5LqsXCJdLFtcImI2YTFcIixcIuS+m+S+oOWDkeWFh+ertuWFseWHtuWNlOWMoeWNv+WPq+WWrOWig+WzoeW8t+W9iuaAr+aBkOaBreaMn+aVmeapi+azgeeLgueLreefr+iDuOiEheiIiOiVjumDt+mPoemfv+mll+mpmuS7sOWHneWwreaagealreWxgOabsualteeOieahkOeygeWDheWLpOWdh+W3vumMpuaWpOaso+asveeQtOemgeemveeti+e3iuiKueiPjOihv+iln+isuei/kemHkeWQn+mKgOS5neWAtuWPpeWMuueLl+eOluefqeiLpui6r+mnhumniOmnkuWFt+aEmuiZnuWWsOepuuWBtuWvk+mBh+maheS4suarm+mHp+WxkeWxiFwiXSxbXCJiN2ExXCIsXCLmjpjnqp/mspPpnbTovaHnqqrnhorpmojnsoLmoJfnubDmoZHpjazli7LlkJvolqvoqJPnvqTou43pg6HljabooojnpYHkv4Llgr7liJHlhYTllZPlnK3nj6rlnovlpZHlvaLlvoTmgbXmhbbmhafmhqnmjrLmkLrmlazmma/moYLmuJPnlabnqL3ns7vntYzntpnnuYvnvavojI7ojYrom43oqIjoqaPorabou73poJrpto/oirjov47pr6jliofmiJ/mkoPmv4DpmpnmoYHlgpHmrKDmsbrmvZTnqbTntZDooYDoqKPmnIjku7blgLnlgKblgaXlhbzliLjliaPllqflnI/loIXlq4zlu7rmhrLmh7jmi7PmjbJcIl0sW1wiYjhhMVwiLFwi5qSc5qip54m954qs54yu56CU56Gv57W555yM6IKp6KaL6KyZ6LOi6LuS6YGj6Y216Zm66aGV6aiT6bm45YWD5Y6f5Y6z5bm75bym5rib5rqQ546E54++57WD6Ii36KiA6Ku66ZmQ5LmO5YCL5Y+k5ZG85Zu65aeR5a2k5bex5bqr5byn5oi45pWF5p6v5rmW54uQ57OK6KK06IKh6IOh6I+w6JmO6KqH6Leo6Yi36ZuH6aGn6byT5LqU5LqS5LyN5Y2I5ZGJ5ZC+5aiv5b6M5b6h5oKf5qKn5qqO55Ga56KB6Kqe6Kqk6K236YaQ5Lme6a+J5Lqk5L285L6v5YCZ5YCW5YWJ5YWs5Yqf5Yq55Yu+5Y6a5Y+j5ZCRXCJdLFtcImI5YTFcIixcIuWQjuWWieWdkeWeouWlveWtlOWtneWuj+W3peW3p+W3t+W5uOW6g+W6muW6t+W8mOaBkuaFjOaKl+aLmOaOp+aUu+aYguaZg+abtOadreagoeail+ani+axn+a0qua1qea4r+a6neeUsueah+ehrOeov+ezoOe0hee0mOe1nue2seiAleiAg+iCr+iCseiFlOiGj+iIquiNkuihjOihoeism+iyouizvOmDiumFtemJseegv+mLvOmWpOmZjemghemmmemrmOm0u+WJm+WKq+WPt+WQiOWjleaLt+a/oOixqui9n+m6ueWFi+WIu+WRiuWbveepgOmFt+m1oOm7kueNhOa8ieiFsOeUkeW/veaDmumqqOeLm+i+vFwiXSxbXCJiYWExXCIsXCLmraTpoIPku4rlm7DlnaTlor7lqZrmgajmh4fmmI/mmIbmoLnmorHmt7fnl5XntLroia7prYLkupvkvZDlj4nllIblta/lt6blt67mn7vmspnnkbPnoILoqZDpjpboo5/lnZDluqfmjKvlgrXlgqzlho3mnIDlk4nloZ7lprvlrrDlvanmiY3mjqHmoL3mrbPmuIjngb3ph4fnioDnoJXnoKbnpa3mlo7ntLDoj5zoo4HovInpmpvliaTlnKjmnZDnvarosqHlhrTlnYLpmKrloLrmporogrTlkrLltI7ln7znopXpt7rkvZzliYrlkovmkL7mmKjmnJTmn7XnqoTnrZbntKLpjK/moZzprq3nrLnljJnlhorliLdcIl0sW1wiYmJhMVwiLFwi5a+f5ou25pKu5pOm5pyt5q666Jap6ZuR55qQ6a+W5o2M6YyG6a6r55q/5pmS5LiJ5YKY5Y+C5bGx5oOo5pKS5pWj5qGf54em54+K55Sj566X57qC6JqV6K6D6LOb6YW46aSQ5pas5pqr5q6L5LuV5LuU5Ly65L2/5Yi65Y+45Y+y5Zej5Zub5aOr5aeL5aeJ5ae/5a2Q5bGN5biC5bir5b+X5oCd5oyH5pSv5a2c5pav5pa95peo5p6d5q2i5q275rCP542F56WJ56eB57O457SZ57Sr6IKi6ISC6Iez6KaW6Kme6Kmp6Kmm6KqM6Kuu6LOH6LOc6ZuM6aO85q2v5LqL5Ly85L6N5YWQ5a2X5a+65oWI5oyB5pmCXCJdLFtcImJjYTFcIixcIuasoea7i+ayu+eIvueSveeXlOejgeekuuiAjOiAs+iHquiSlOi+nuaxkOm5v+W8j+itmOm0q+eruui7uOWujembq+S4g+WPseWft+WkseWrieWupOaCiea5v+a8hueWvuizquWun+iUgOevoOWBsuaftOiKneWxoeiViue4nuiIjuWGmeWwhOaNqOi1puaWnOeFruekvue0l+iAheisnei7iumBruibh+mCquWAn+WLuuWwuuadk+eBvOeItemFjOmHiOmMq+iLpeWvguW8seaDueS4u+WPluWuiOaJi+acseauiueLqeePoOeoruiFq+i2o+mFkummluWEkuWPl+WRquWvv+aOiOaouee2rOmcgOWbmuWPjuWRqFwiXSxbXCJiZGExXCIsXCLlrpflsLHlt57kv67mhIHmi77mtLLnp4Dnp4vntYLnuY3nv5Loh63oiJ/okpDooYbopbLorpDoubTovK/pgLHphYvphazpm4bphpzku4DkvY/lhYXljYHlvpPmiI7mn5TmsYHmuIvnjaPnuKbph43pioPlj5TlpJnlrr/mt5HnpZ3nuK7nspvlob7nhp/lh7rooZPov7Dkv4rls7vmmKXnnqznq6PoiJzpp7/lh4blvqrml6zmpa/mronmt7PmupbmvaTnm77ntJTlt6HpgbXphofpoIblh6bliJ3miYDmmpHmm5nmuJrlurbnt5LnvbLmm7jolq/ol7foq7jliqnlj5nlpbPluo/lvpDmgZXpi6TpmaTlgrflhJ9cIl0sW1wiYmVhMVwiLFwi5Yud5Yyg5Y2H5Y+s5ZOo5ZWG5ZSx5ZiX5aWo5aa+5ai85a615bCG5bCP5bCR5bCa5bqE5bqK5bug5b2w5om/5oqE5oub5o6M5o235piH5piM5pit5pm25p2+5qKi5qif5qi15rK85raI5riJ5rmY54S854Sm54Wn55eH55yB56Gd56SB56Wl56ew56ug56yR57Kn57S56IKW6I+W6JKL6JWJ6KGd6KOz6Kif6Ki86KmU6Kmz6LGh6LOe6Yak6Ymm6Y2+6ZCY6Zqc6Z6Y5LiK5LiI5Lie5LmX5YaX5Ymw5Z+O5aC05aOM5ayi5bi45oOF5pO+5p2h5p2W5rWE54q255Wz56mj6JK46K2y6Ya46Yyg5Zix5Z+06aO+XCJdLFtcImJmYTFcIixcIuaLreakjeaulueHree5lOiBt+iJsuinpumjn+idlei+seWwu+S8uOS/oeS+teWUh+WooOWvneWvqeW/g+aFjuaMr+aWsOaZi+ajruamm+a1uOa3seeUs+eWueecn+elnuenpue0s+iHo+iKr+iWquimquiouui6q+i+m+mAsumHnemch+S6uuS7geWIg+WhteWjrOWwi+eUmuWwveiFjuioiui/hemZo+mdreespeirj+mgiOmFouWbs+WOqOmAl+WQueWeguW4peaOqOawtOeCiuedoeeyi+e/oOihsOmBgumFlOmMkOmMmOmaj+eRnumrhOW0h+W1qeaVsOaeoui2qOmbm+aNruadieakmeiPhemgl+mbgOijvlwiXSxbXCJjMGExXCIsXCLmvoTmkbrlr7jkuJbngKznlZ3mmK/lh4TliLbli6Llp5PlvoHmgKfmiJDmlL/mlbTmmJ/mmbTmo7LmoJbmraPmuIXnibLnlJ/nm5vnsr7ogZblo7Doo73opb/oqqDoqpPoq4vpgJ3phpLpnZLpnZnmlonnqI7ohIbpmrvluK3mg5zmiJrmlqXmmJTmnpDnn7PnqY3nsY3nuL7ohIrosqzotaTot6HouZ/noqnliIfmi5nmjqXmkYLmipjoqK3nqoPnr4Doqqzpm6rntbboiIzonYnku5nlhYjljYPljaDlrqPlsILlsJblt53miKbmiYfmkrDmoJPmoLTms4nmtYXmtJfmn5PmvZznhY7nhb3ml4vnqb/nrq3nt5pcIl0sW1wiYzFhMVwiLFwi57mK576o6IW66Iib6Ii56Jam6Kmu6LOO6Le16YG46YG36Yqt6YqR6ZaD6a6u5YmN5ZaE5ry454S25YWo56aF57mV6Iaz57OO5ZmM5aGR5bKo5o6q5pu+5pu95qWa54uZ55aP55aO56SO56WW56ef57KX57Sg57WE6JiH6Ki06Zi76YGh6byg5YOn5Ym15Y+M5Y+i5YCJ5Zaq5aOu5aWP54i95a6L5bGk5Yyd5oOj5oOz5o2c5o6D5oy/5o675pON5pep5pu55bej5qeN5qe95ryV54el5LqJ55ep55u456qT57Of57eP57ac6IGh6I2J6I2Y6JGs6JK86Je76KOF6LWw6YCB6YGt6Y6X6Zyc6aiS5YOP5aKX5oaOXCJdLFtcImMyYTFcIixcIuiHk+iUtei0iOmAoOS/g+WBtOWJh+WNs+aBr+aNieadn+a4rOi2s+mAn+S/l+WxnuiziuaXj+e2muWNkuiiluWFtuaPg+WtmOWtq+WwiuaQjeadkemBnOS7luWkmuWkquaxsOipkeWUvuWgleWmpeaDsOaJk+afgeiIteallemZgOmnhOmoqOS9k+WghuWvvuiAkOWyseW4r+W+heaAoOaFi+aItOabv+azsOa7nuiDjuiFv+iLlOiii+iyuOmAgOmArumaium7m+mvm+S7o+WPsOWkp+esrOmGjemhjOm3uea7neeAp+WNk+WVhOWuheaJmOaKnuaLk+ayoua/r+eQouiol+mQuOa/geirvuiMuOWHp+ibuOWPqlwiXSxbXCJjM2ExXCIsXCLlj6nkvYbpgZTovrDlparohLHlt73nq6rovr/mo5rosLfni7jpsYjmqL3oqrDkuLnljZjlmIblnabmi4XmjqLml6bmrY7mt6HmuZvngq3nn63nq6/nrqrntrvogL3og4bom4voqpXpjZvlm6Plo4flvL7mlq3mmpbmqoDmrrXnlLfoq4flgKTnn6XlnLDlvJvmgaXmmbrmsaDnl7TnqJrnva7oh7TonJjpgYXpprPnr4nnlZznq7nnrZHok4TpgJDnp6nnqpLojLblq6HnnYDkuK3ku7Llrpnlv6Dmir3mmLzmn7Hms6jomavoobfoqLvphY7pi7Ppp5DmqJfngKbnjKroi6fokZfosq/kuIHlhYblh4vllovlr7VcIl0sW1wiYzRhMVwiLFwi5biW5biz5bqB5byU5by15b2r5b605oey5oyR5pqi5pyd5r2u54mS55S655y66IG06IS56IW46J226Kq/6Kuc6LaF6Lez6Yqa6ZW36aCC6bOl5YuF5o2X55u05pyV5rKI54+N6LOD6Y6u6Zmz5rSl5aKc5qSO5qeM6L+96Y6a55eb6YCa5aGa5qCC5o605qe75L2D5rys5p+Y6L676JSm57a06Y2U5qS/5r2w5Z2q5aO35ays57Ss54iq5ZCK6Yej6ba05Lqt5L2O5YGc5YG15YmD6LKe5ZGI5aCk5a6a5bid5bqV5bqt5bu35byf5oKM5oq15oy65o+Q5qKv5rGA56KH56aO56iL57eg6ImH6KiC6Kum6LmE6YCTXCJdLFtcImM1YTFcIixcIumCuOmEremHmOm8juazpeaRmOaTouaVtea7tOeahOesm+mBqemPkea6uuWTsuW+ueaSpOi9jei/remJhOWFuOWhq+WkqeWxleW6l+a3u+e6j+eUnOiyvOi7oumhm+eCueS8neauv+a+seeUsOmbu+WFjuWQkOWgteWhl+WmrOWxoOW+kuaWl+adnOa4oeeZu+iPn+izremAlOmDvemNjeegpeeguuWKquW6puWcn+WltOaAkuWAkuWFmuWGrOWHjeWIgOWUkOWhlOWhmOWll+WuleWztuW2i+aCvOaKleaQreadseahg+aivOajn+ebl+a3mOa5r+a2m+eBr+eHiOW9k+eXmOelt+etieetlOetkuezlue1seWIsFwiXSxbXCJjNmExXCIsXCLokaPolanol6ToqI7orITosYbouI/pgIPpgI/pkJnpmbbpoK3pqLDpl5jlg43li5XlkIzloILlsI7mhqfmkp7mtJ7nnrPnq6Xog7TokITpgZPpioXls6DptIfljL/lvpflvrPmtpznibnnnaPnpr/nr6Tmr5Lni6zoqq3moIPmqaHlh7jnqoHmpLTlsYrps7boi6vlr4XphYnngJ7lmbjlsa/mg4fmlabmsozosZrpgYHpoJPlkZHmm4fpiI3lpYjpgqPlhoXkuY3lh6rolpnorI7ngZjmjbrpjYvmpaLpprTnuITnlbfljZfmpaDou5/pm6PmsZ3kuozlsLzlvJDov6nljILos5Hogonombnlu7/ml6XkubPlhaVcIl0sW1wiYzdhMVwiLFwi5aaC5bC/6Z+u5Lu75aaK5b+N6KqN5r+h56aw56Wi5a+n6JGx54yr54ax5bm05b+15o275pKa54eD57KY5LmD5bu85LmL5Z+c5Zqi5oKp5r+D57SN6IO96ISz6Ia/6L6y6KaX6Jqk5be05oqK5pKt6KaH5p235rOi5rS+55C256C05amG57216Iqt6aas5L+z5buD5oud5o6S5pWX5p2v55uD54mM6IOM6IK66Lyp6YWN5YCN5Z+55aqS5qKF5qWz54Wk54u96LK35aOy6LOg6Zmq6YCZ6J2/56ek55+n6JCp5Lyv5Yml5Y2a5ouN5p+P5rOK55m9566U57KV6Ii26JaE6L+r5pud5ryg54iG57ib6I6r6aeB6bqmXCJdLFtcImM4YTFcIixcIuWHveeuseehsueuuOiCh+etiOarqOW5oeiCjOeVkeeVoOWFq+mJoua6jOeZuumGl+mrquS8kOe9sOaKnOetj+mWpemzqeWZuuWhmeibpOmavOS8tOWIpOWNiuWPjeWPm+W4huaQrOaWkeadv+awvuaxjueJiOeKr+ePreeVlOe5geiIrOiXqeiyqeevhOmHhueFqemgkumjr+aMveaZqeeVquebpOejkOiVg+ibruWMquWNkeWQpuWmg+W6h+W9vOaCsuaJieaJueaKq+aWkOavlOazjOeWsuearueikeenmOe3i+e9t+iCpeiiq+iqueiyu+mBv+mdnumjm+aoi+ewuOWCmeWwvuW+ruaeh+avmOeQteeciee+jlwiXSxbXCJjOWExXCIsXCLpvLvmn4rnqJfljLnnlovpq63lvabohp3oj7HogpjlvLzlv4XnlaLnrYbpgLzmoaflp6vlqpvntJDnmb7orKzkv7XlvarmqJnmsLfmvILnk6LnpajooajoqZXosbnlu5/mj4/nl4Xnp5Loi5fpjKjpi7Lokpzom63psK3lk4HlvazmlozmtZzngJXosqfos5PpoLvmlY/nk7bkuI3ku5jln6DlpKvlqablr4zlhqjluIPlupzmgJbmibbmlbfmlqfmma7mta7niLbnrKbohZDohproipnorZzosqDos6botbTpmJzpmYTkvq7mkqvmraboiJ7okaHolarpg6jlsIHmpZPpoqjokbrolZfkvI/lia/lvqnluYXmnI1cIl0sW1wiY2FhMVwiLFwi56aP6IW56KSH6KaG5re15byX5omV5rK45LuP54mp6a6S5YiG5ZC75Zm05aKz5oak5omu54Sa5aWu57KJ57Oe57Sb6Zuw5paH6IGe5LiZ5L215YW15aGA5bmj5bmz5byK5p+E5Lim6JS96ZaJ6Zmb57Gz6aCB5YO75aOB55mW56Kn5Yil556l6JSR566G5YGP5aSJ54mH56+H57eo6L666L+U6YGN5L6/5YuJ5aip5byB6Z6t5L+d6IiX6Yuq5ZyD5o2V5q2p55Sr6KOc6LyU56mC5Yuf5aKT5oWV5oiK5pqu5q+N57C/6I+p5YCj5L+45YyF5ZGG5aCx5aWJ5a6d5bOw5bOv5bSp5bqW5oqx5o2n5pS+5pa55pyLXCJdLFtcImNiYTFcIixcIuazleazoeeDueegsue4q+iDnuiKs+iQjOiTrOicguikkuioquixiumCpumLkumjvemzs+m1rOS5j+S6oeWCjeWJluWdiuWmqOW4veW/mOW/meaIv+aatOacm+afkOajkuWGkue0oeiCquiGqOisgOiyjOiyv+mJvumYsuWQoOmgrOWMl+WDleWNnOWiqOaSsuactOeJp+edpuephumHpuWLg+ayoeauhuWggOW5jOWllOacrOe/u+WHoeebhuaRqeejqOmtlOm6u+Wfi+WmueaYp+aemuavjuWTqeanmeW5leiGnOaelemuquafvumxkuahneS6puS/o+WPiOaKueacq+ayq+i/hOS+ree5rem6v+S4h+aFoua6gFwiXSxbXCJjY2ExXCIsXCLmvKvolJPlkbPmnKrprYXlt7PnrpXlsqzlr4bonJzmuYrok5HnqJTohIjlppnnso3msJHnnKDli5nlpKLnhKHniZ/nn5vpnKfptaHmpIvlqb/lqJjlhqXlkI3lkb3mmI7nm5/ov7fpipjps7Tlp6rniZ3mu4XlhY3mo4nntr/nt6zpnaLpurrmkbjmqKHojILlpoTlrZ/mr5vnjJvnm7LntrLogJfokpnlhLLmnKjpu5nnm67mnaLli7/ppIXlsKTmiLvnsb7osrDllY/mgrbntIvploDljIHkuZ/lhrblpJzniLrogLbph47lvKXnn6LljoTlvbnntITolqzoqLPouo3pnZbmn7Polq7pkZPmhInmhIjmsrnnmZJcIl0sW1wiY2RhMVwiLFwi6Kut6Ly45ZSv5L2R5YSq5YuH5Y+L5a6l5bm95oKg5oaC5o+W5pyJ5p+a5rmn5raM54y254y355Sx56WQ6KOV6KqY6YGK6YKR6YO16ZuE6J6N5aSV5LqI5L2Z5LiO6KqJ6Ly/6aCQ5YKt5bm85aaW5a655bq45o+a5o+65pOB5puc5qWK5qeY5rSL5rq254aU55So56qv576K6ICA6JGJ6JOJ6KaB6Kyh6LiK6YGl6Zm96aSK5oW+5oqR5qyy5rKD5rW057+M57+85reA576F6J666KO45p2l6I6x6aC86Zu35rSb57Wh6JC96YWq5Lmx5Y215bWQ5qyE5r+r6JeN6Jit6Kan5Yip5ZCP5bGl5p2O5qKo55CG55KDXCJdLFtcImNlYTFcIixcIueXouijj+ijoemHjOmboumZuOW+i+eOh+eri+iRjuaOoOeVpeWKiea1gea6nOeQieeVmeehq+eykumahuernOm+jeS+tuaFruaXheiZnOS6huS6ruWDmuS4oeWHjOWvruaWmeaigea2vOeMn+eZgueereeonOezp+iJr+irkumBvOmHj+mZtemgmOWKm+e3keWAq+WOmOael+a3i+eHkOeQs+iHqOi8qumao+mxl+m6n+eRoOWhgea2mee0r+mhnuS7pOS8tuS+i+WGt+WKseW2uuaAnOeOsuekvOiLk+mItOmat+mbtumcium6l+m9ouaapuattOWIl+WKo+eDiOijguW7ieaBi+aGkOa8o+eFieewvue3tOiBr1wiXSxbXCJjZmExXCIsXCLok67pgKPpjKzlkYLpra/mq5Pngonos4Lot6/pnLLlirTlqYHlu4rlvITmnJfmpbzmppTmtarmvI/niaLni7znr63ogIHogb7onYvpg47lha3pupPnpoTogovpjLLoq5blgK3lkozoqbHmraros4TohIfmg5HmnqDpt7LkupnkupjpsJDoqavol4HolajmpIDmub7nopfohZVcIl0sW1wiZDBhMVwiLFwi5byM5LiQ5LiV5Liq5Lix5Li25Li85Li/5LmC5LmW5LmY5LqC5LqF6LGr5LqK6IiS5byN5LqO5Lqe5Lqf5Lqg5Lqi5Lqw5Lqz5Lq25LuO5LuN5LuE5LuG5LuC5LuX5Lue5Lut5Luf5Lu35LyJ5L2a5Lyw5L2b5L2d5L2X5L2H5L225L6I5L6P5L6Y5L275L2p5L2w5L6R5L2v5L6G5L6W5YSY5L+U5L+f5L+O5L+Y5L+b5L+R5L+a5L+Q5L+k5L+l5YCa5YCo5YCU5YCq5YCl5YCF5Lyc5L+25YCh5YCp5YCs5L++5L+v5YCR5YCG5YGD5YGH5pyD5YGV5YGQ5YGI5YGa5YGW5YGs5YG45YKA5YKa5YKF5YK05YKyXCJdLFtcImQxYTFcIixcIuWDieWDiuWCs+WDguWDluWDnuWDpeWDreWDo+WDruWDueWDteWEieWEgeWEguWEluWEleWElOWEmuWEoeWEuuWEt+WEvOWEu+WEv+WFgOWFkuWFjOWFlOWFoueruOWFqeWFquWFruWGgOWGguWbmOWGjOWGieWGj+WGkeWGk+WGleWGluWGpOWGpuWGouWGqeWGquWGq+WGs+WGseWGsuWGsOWGteWGveWHheWHieWHm+WHoOiZleWHqeWHreWHsOWHteWHvuWIhOWIi+WIlOWIjuWIp+WIquWIruWIs+WIueWJj+WJhOWJi+WJjOWJnuWJlOWJquWJtOWJqeWJs+WJv+WJveWKjeWKlOWKkuWJseWKiOWKkei+qFwiXSxbXCJkMmExXCIsXCLovqfliqzliq3lirzlirXli4Hli43li5fli57li6Pli6bpo63li6Dli7Pli7Xli7jli7nljIbljIjnlLjljI3ljJDljI/ljJXljJrljKPljK/ljLHljLPljLjljYDljYbljYXkuJfljYnljY3lh5bljZ7ljanlja7lpJjljbvljbfljoLljpbljqDljqbljqXljq7ljrDljrblj4PnsJLpm5nlj5/mm7znh67lj67lj6jlj63lj7rlkIHlkL3lkYDlkKzlkK3lkLzlkK7lkLblkKnlkJ3lkY7lko/lkbXlko7lkZ/lkbHlkbflkbDlkpLlkbvlkoDlkbblkoTlkpDlkoblk4flkqLlkrjlkqXlkqzlk4Tlk4jlkqhcIl0sW1wiZDNhMVwiLFwi5ZKr5ZOC5ZKk5ZK+5ZK85ZOY5ZOl5ZOm5ZSP5ZSU5ZO95ZOu5ZOt5ZO65ZOi5ZS55ZWA5ZWj5ZWM5ZSu5ZWc5ZWF5ZWW5ZWX5ZS45ZSz5ZWd5ZaZ5ZaA5ZKv5ZaK5Zaf5ZW75ZW+5ZaY5Zae5Zau5ZW85ZaD5Zap5ZaH5Zao5Zea5ZeF5Zef5ZeE5Zec5Zek5ZeU5ZiU5Ze35ZiW5Ze+5Ze95Zib5Ze55ZmO5ZmQ54ef5Zi05Zi25Ziy5Zi45Zmr5Zmk5Ziv5Zms5Zmq5ZqG5ZqA5ZqK5Zqg5ZqU5ZqP5Zql5Zqu5Zq25Zq05ZuC5Zq85ZuB5ZuD5ZuA5ZuI5ZuO5ZuR5ZuT5ZuX5Zuu5Zu55ZyA5Zu/5ZyE5ZyJXCJdLFtcImQ0YTFcIixcIuWciOWci+WcjeWck+WcmOWcluWXh+WcnOWcpuWct+WcuOWdjuWcu+WdgOWdj+WdqeWfgOWeiOWdoeWdv+WeieWek+WeoOWes+WepOWequWesOWfg+WfhuWflOWfkuWfk+WgiuWfluWfo+Wgi+WgmeWgneWhsuWgoeWhouWhi+WhsOavgOWhkuWgveWhueWiheWiueWin+Wiq+WiuuWjnuWiu+WiuOWiruWjheWjk+WjkeWjl+WjmeWjmOWjpeWjnOWjpOWjn+Wjr+WjuuWjueWju+WjvOWjveWkguWkiuWkkOWkm+aipuWkpeWkrOWkreWksuWkuOWkvuerkuWlleWlkOWljuWlmuWlmOWlouWloOWlp+WlrOWlqVwiXSxbXCJkNWExXCIsXCLlpbjlpoHlpp3kvZ7kvqvlpqPlprLlp4blp6jlp5zlpo3lp5nlp5rlqKXlqJ/lqJHlqJzlqInlqJrlqYDlqazlqYnlqLXlqLblqaLlqarlqprlqrzlqr7lq4vlq4Llqr3lq6Plq5flq6blq6nlq5blq7rlq7vlrIzlrIvlrJblrLLlq5DlrKrlrLblrL7lrYPlrYXlrYDlrZHlrZXlrZrlrZvlraXlranlrbDlrbPlrbXlrbjmlojlrbrlroDlroPlrqblrrjlr4Plr4flr4nlr5Tlr5Dlr6Tlr6blr6Llr57lr6Xlr6vlr7Dlr7blr7PlsIXlsIflsIjlsI3lsJPlsKDlsKLlsKjlsLjlsLnlsYHlsYblsY7lsZNcIl0sW1wiZDZhMVwiLFwi5bGQ5bGP5a2x5bGs5bGu5Lmi5bG25bG55bKM5bKR5bKU5aab5bKr5bK75bK25bK85bK35bOF5bK+5bOH5bOZ5bOp5bO95bO65bOt5baM5bOq5bSL5bSV5bSX5bWc5bSf5bSb5bSR5bSU5bSi5bSa5bSZ5bSY5bWM5bWS5bWO5bWL5bWs5bWz5bW25baH5baE5baC5bai5bad5bas5bau5ba95baQ5ba35ba85beJ5beN5beT5beS5beW5beb5ber5bey5be15biL5bia5biZ5biR5bib5bi25bi35bmE5bmD5bmA5bmO5bmX5bmU5bmf5bmi5bmk5bmH5bm15bm25bm66bq85bm/5bqg5buB5buC5buI5buQ5buPXCJdLFtcImQ3YTFcIixcIuW7luW7o+W7neW7muW7m+W7ouW7oeW7qOW7qeW7rOW7seW7s+W7sOW7tOW7uOW7vuW8g+W8ieW9neW9nOW8i+W8keW8luW8qeW8reW8uOW9geW9iOW9jOW9juW8r+W9keW9luW9l+W9meW9oeW9reW9s+W9t+W+g+W+guW9v+W+iuW+iOW+keW+h+W+nuW+meW+mOW+oOW+qOW+reW+vOW/luW/u+W/pOW/uOW/seW/neaCs+W/v+aAoeaBoOaAmeaAkOaAqeaAjuaAseaAm+aAleaAq+aApuaAj+aAuuaBmuaBgeaBquaBt+aBn+aBiuaBhuaBjeaBo+aBg+aBpOaBguaBrOaBq+aBmeaCgeaCjeaDp+aCg+aCmlwiXSxbXCJkOGExXCIsXCLmgoTmgpvmgpbmgpfmgpLmgqfmgovmg6Hmgrjmg6Dmg5PmgrTlv7Dmgr3mg4bmgrXmg5jmhY3mhJXmhIbmg7bmg7fmhIDmg7Tmg7rmhIPmhKHmg7vmg7HmhI3mhI7mhYfmhL7mhKjmhKfmhYrmhL/mhLzmhKzmhLTmhL3mhYLmhYTmhbPmhbfmhZjmhZnmhZrmhavmhbTmha/mhaXmhbHmhZ/mhZ3mhZPmhbXmhpnmhpbmhofmhqzmhpTmhprmhormhpHmhqvmhq7mh4zmh4rmh4nmh7fmh4jmh4Pmh4bmhrrmh4vnvbnmh43mh6bmh6Pmh7bmh7rmh7Tmh7/mh73mh7zmh77miIDmiIjmiInmiI3miIzmiJTmiJtcIl0sW1wiZDlhMVwiLFwi5oie5oih5oiq5oiu5oiw5oiy5oiz5omB5omO5ome5omj5omb5omg5omo5om85oqC5oqJ5om+5oqS5oqT5oqW5ouU5oqD5oqU5ouX5ouR5oq75ouP5ou/5ouG5pOU5ouI5ouc5ouM5ouK5ouC5ouH5oqb5ouJ5oyM5ouu5oux5oyn5oyC5oyI5ouv5ou15o2Q5oy+5o2N5pCc5o2P5o6W5o6O5o6A5o6r5o225o6j5o6P5o6J5o6f5o615o2r5o2p5o6+5o+p5o+A5o+G5o+j5o+J5o+S5o+25o+E5pCW5pC05pCG5pCT5pCm5pC25pSd5pCX5pCo5pCP5pGn5pGv5pG25pGO5pSq5pKV5pKT5pKl5pKp5pKI5pK8XCJdLFtcImRhYTFcIixcIuaTmuaTkuaTheaTh+aSu+aTmOaTguaTseaTp+iIieaToOaToeaKrOaTo+aTr+aUrOaTtuaTtOaTsuaTuuaUgOaTveaUmOaUnOaUheaUpOaUo+aUq+aUtOaUteaUt+aUtuaUuOeVi+aViOaVluaVleaVjeaVmOaVnuaVneaVsuaVuOaWguaWg+iuiuaWm+aWn+aWq+aWt+aXg+aXhuaXgeaXhOaXjOaXkuaXm+aXmeaXoOaXoeaXseadsuaYiuaYg+aXu+ads+aYteaYtuaYtOaYnOaZj+aZhOaZieaZgeaZnuaZneaZpOaZp+aZqOaZn+aZouaZsOaag+aaiOaajuaaieaahOaamOaaneabgeaaueabieaavuaavFwiXSxbXCJkYmExXCIsXCLmm4Tmmrjmm5bmm5rmm6DmmL/mm6bmm6nmm7Dmm7Xmm7fmnI/mnJbmnJ7mnKbmnKfpnLjmnK7mnL/mnLbmnYHmnLjmnLfmnYbmnZ7mnaDmnZnmnaPmnaTmnonmnbDmnqnmnbzmnarmnozmnovmnqbmnqHmnoXmnrfmn6/mnrTmn6zmnrPmn6nmnrjmn6Tmn57mn53mn6Lmn67mnrnmn47mn4bmn6fmqpzmoJ7moYbmoKnmoYDmoY3moLLmoY7morPmoKvmoZnmoaPmobfmob/mop/moo/moq3mopTmop3mopvmooPmqq7mornmobTmorXmoqDmorrmpI/moo3mob7mpIHmo4rmpIjmo5jmpKLmpKbmo6HmpIzmo41cIl0sW1wiZGNhMVwiLFwi5qOU5qOn5qOV5qS25qSS5qSE5qOX5qOj5qSl5qO55qOg5qOv5qSo5qSq5qSa5qSj5qSh5qOG5qW55qW35qWc5qW45qWr5qWU5qW+5qWu5qS55qW05qS95qWZ5qSw5qWh5qWe5qWd5qaB5qWq5qay5qau5qeQ5qa/5qeB5qeT5qa+5qeO5a+o5qeK5qed5qa75qeD5qan5qiu5qaR5qag5qac5qaV5qa05qee5qeo5qiC5qib5qe/5qyK5qe55qey5qen5qiF5qax5qie5qet5qiU5qer5qiK5qiS5quB5qij5qiT5qmE5qiM5qmy5qi25qm45qmH5qmi5qmZ5qmm5qmI5qi45qii5qqQ5qqN5qqg5qqE5qqi5qqjXCJdLFtcImRkYTFcIixcIuaql+iYl+aqu+arg+arguaquOaqs+aqrOarnuarkearn+aqquarmuarquaru+asheiYluaruuaskuaslumsseasn+asuOast+ebnOasuemjruath+atg+atieatkOatmeatlOatm+atn+atoeatuOatueatv+augOauhOaug+aujeaumOauleaunuaupOauquauq+aur+ausuauseaus+aut+auvOavhuavi+avk+avn+avrOavq+avs+avr+m6vuawiOawk+awlOawm+awpOawo+axnuaxleaxouaxquayguayjeaymuaygeaym+axvuaxqOaxs+aykuaykOazhOazseazk+ayveazl+azheazneayruayseayvlwiXSxbXCJkZWExXCIsXCLmsrrms5vms6/ms5nms6rmtJ/ooY3mtLbmtKvmtL3mtLjmtJnmtLXmtLPmtJLmtIzmtaPmtpPmtaTmtZrmtbnmtZnmto7mtpXmv6TmtoXmt7nmuJXmuIrmtrXmt4fmt6bmtrjmt4bmt6zmt57mt4zmt6jmt5Lmt4Xmt7rmt5nmt6Tmt5Xmt6rmt67muK3mua7muK7muJnmubLmuZ/muL7muKPmuavmuKvmubbmuY3muJ/muYPmuLrmuY7muKTmu7/muJ3muLjmuoLmuqrmupjmu4nmurfmu5Pmur3muq/mu4TmurLmu5Tmu5Xmuo/muqXmu4Lmup/mvYHmvJHngYzmu6zmu7jmu77mvL/mu7LmvLHmu6/mvLLmu4xcIl0sW1wiZGZhMVwiLFwi5ry+5ryT5ru35r6G5r265r245r6B5r6A5r2v5r2b5r+z5r2t5r6C5r285r2Y5r6O5r6R5r+C5r2m5r6z5r6j5r6h5r6k5r655r+G5r6q5r+f5r+V5r+s5r+U5r+Y5r+x5r+u5r+b54CJ54CL5r+654CR54CB54CP5r++54Cb54Ca5r2054Cd54CY54Cf54Cw54C+54Cy54GR54Gj54KZ54KS54Kv54Ox54Ks54K454Kz54Ku54Of54OL54Od54OZ54SJ54O954Sc54SZ54Wl54WV54aI54Wm54Wi54WM54WW54Ws54aP54e754aE54aV54ao54as54eX54a554a+54eS54eJ54eU54eO54eg54es54en54e154e8XCJdLFtcImUwYTFcIixcIueHueeHv+eIjeeIkOeIm+eIqOeIreeIrOeIsOeIsueIu+eIvOeIv+eJgOeJhueJi+eJmOeJtOeJvueKgueKgeeKh+eKkueKlueKoueKp+eKueeKsueLg+eLhueLhOeLjueLkueLoueLoOeLoeeLueeLt+WAj+eMl+eMiueMnOeMlueMneeMtOeMr+eMqeeMpeeMvueNjueNj+m7mOeNl+eNqueNqOeNsOeNuOeNteeNu+eNuuePiOeOs+ePjueOu+ePgOePpeePruePnueSoueQheeRr+eQpeePuOeQsueQuueRleeQv+eRn+eRmeeRgeeRnOeRqeeRsOeRo+eRqueRtueRvueSi+eSnueSp+eTiueTj+eTlOePsVwiXSxbXCJlMWExXCIsXCLnk6Dnk6Pnk6fnk6nnk67nk7Lnk7Dnk7Hnk7jnk7fnlITnlIPnlIXnlIznlI7nlI3nlJXnlJPnlJ7nlKbnlKznlLznlYTnlY3nlYrnlYnnlZvnlYbnlZrnlannlaTnlafnlavnla3nlbjnlbbnlobnlofnlbTnlornlonnloLnlpTnlprnlp3nlqXnlqPnl4LnlrPnl4PnlrXnlr3nlrjnlrznlrHnl43nl4rnl5Lnl5nnl6Pnl57nl77nl7/nl7znmIHnl7Dnl7rnl7Lnl7PnmIvnmI3nmInnmJ/nmKfnmKDnmKHnmKLnmKTnmLTnmLDnmLvnmYfnmYjnmYbnmZznmZjnmaHnmaLnmajnmannmarnmafnmaznmbBcIl0sW1wiZTJhMVwiLFwi55my55m255m455m855qA55qD55qI55qL55qO55qW55qT55qZ55qa55qw55q055q455q555q655uC55uN55uW55uS55ue55uh55ul55un55uq6Jiv55u755yI55yH55yE55yp55yk55ye55yl55ym55yb55y355y4552H552a552o552r552b552l552/552+5525556O556L556R556g556e556w55625565556/55685569556755+H55+N55+X55+a55+c55+j55+u55+856CM56CS56Sm56Cg56Sq56GF56KO56G056KG56G856Ka56KM56Kj56K156Kq56Kv56OR56OG56OL56OU56K+56K856OF56OK56OsXCJdLFtcImUzYTFcIixcIuejp+ejmuejveejtOekh+ekkuekkeekmeekrOekq+elgOeloOell+eln+elmuelleelk+eluuelv+emiuemneemp+m9i+emquemruems+emueemuuenieenleenp+enrOenoeeno+eoiOeojeeomOeomeeooOeon+emgOeoseeou+eovueot+epg+epl+epieepoeepouepqem+neepsOepueepveeqiOeql+eqleeqmOeqlueqqeeriOeqsOeqtuerheerhOeqv+mCg+erh+eriuerjeerj+erleerk+ermeermuerneeroeerouerpuerreersOesguesj+esiueshuess+esmOesmeesnuesteesqOestuetkFwiXSxbXCJlNGExXCIsXCLnrbrnrITnrY3nrIvnrYznrYXnrbXnraXnrbTnrafnrbDnrbHnraznra7nrp3nrpjnrp/nro3nrpznrprnrovnrpLnro/nrZ3nrpnnr4vnr4Hnr4znr4/nrrTnr4bnr53nr6nnsJHnsJTnr6bnr6XnsaDnsIDnsIfnsJPnr7Pnr7fnsJfnsI3nr7bnsKPnsKfnsKrnsJ/nsLfnsKvnsL3nsYznsYPnsZTnsY/nsYDnsZDnsZjnsZ/nsaTnsZbnsaXnsaznsbXnsoPnspDnsqTnsq3nsqLnsqvnsqHnsqjnsrPnsrLnsrHnsq7nsrnnsr3ns4Dns4Xns4Lns5jns5Lns5zns6LprLvns6/ns7Lns7Tns7bns7rntIZcIl0sW1wiZTVhMVwiLFwi57SC57Sc57SV57SK57WF57WL57Su57Sy57S/57S157WG57Wz57WW57WO57Wy57Wo57Wu57WP57Wj57aT57aJ57Wb57aP57W957ab57a657au57aj57a157eH57a957ar57i957ai57av57ec57a457af57aw57eY57ed57ek57ee57e757ey57eh57iF57iK57ij57ih57iS57ix57if57iJ57iL57ii57mG57mm57i757i157i557mD57i357iy57i657mn57md57mW57me57mZ57ma57m557mq57mp57m857m757qD57eV57m96L6u57m/57qI57qJ57qM57qS57qQ57qT57qU57qW57qO57qb57qc57y457y6XCJdLFtcImU2YTFcIixcIue9hee9jOe9jee9jue9kOe9kee9lee9lOe9mOe9n+e9oOe9qOe9qee9p+e9uOe+gue+hue+g+e+iOe+h+e+jOe+lOe+nue+nee+mue+o+e+r+e+sue+uee+rue+tue+uOitsee/hee/hue/iue/lee/lOe/oee/pue/qee/s+e/uemjnOiAhuiAhOiAi+iAkuiAmOiAmeiAnOiAoeiAqOiAv+iAu+iBiuiBhuiBkuiBmOiBmuiBn+iBouiBqOiBs+iBsuiBsOiBtuiBueiBveiBv+iChOiChuiCheiCm+iCk+iCmuiCreWGkOiCrOiDm+iDpeiDmeiDneiDhOiDmuiDluiEieiDr+iDseiEm+iEqeiEo+iEr+iFi1wiXSxbXCJlN2ExXCIsXCLpmovohYbohL7ohZPohZHog7zohbHoha7ohaXohabohbTohoPohojohorohoDohoLohqDohpXohqTohqPohZ/ohpPohqnohrDohrXohr7ohrjohr3oh4Doh4Lohrroh4noh43oh5Hoh5noh5joh4joh5roh5/oh6Doh6foh7roh7voh77oiIHoiILoiIXoiIfoiIroiI3oiJDoiJboiKnoiKvoiLjoiLPoiYDoiZnoiZjoiZ3oiZroiZ/oiaToiaLoiajoiaroiavoiK7oibHoibfoibjoib7oio3oipLoiqvoip/oirvoiqzoi6Hoi6Poi5/oi5Loi7Toi7Poi7rojpPojIPoi7voi7noi57ojIboi5zojInoi5lcIl0sW1wiZThhMVwiLFwi6Iy16Iy06IyW6Iyy6Iyx6I2A6Iy56I2Q6I2F6Iyv6Iyr6IyX6IyY6I6F6I6a6I6q6I6f6I6i6I6W6Iyj6I6O6I6H6I6K6I286I616I2z6I216I6g6I6J6I6o6I+06JCT6I+r6I+O6I+96JCD6I+Y6JCL6I+B6I+36JCH6I+g6I+y6JCN6JCi6JCg6I696JC46JSG6I+76JGt6JCq6JC86JWa6JKE6JG36JGr6JKt6JGu6JKC6JGp6JGG6JCs6JGv6JG56JC16JOK6JGi6JK56JK/6JKf6JOZ6JON6JK76JOa6JOQ6JOB6JOG6JOW6JKh6JSh6JO/6JO06JSX6JSY6JSs6JSf6JSV6JSU6JO86JWA6JWj6JWY6JWIXCJdLFtcImU5YTFcIixcIuiVgeiYguiVi+iVleiWgOiWpOiWiOiWkeiWiuiWqOiVreiWlOiWm+iXquiWh+iWnOiVt+iVvuiWkOiXieiWuuiXj+iWueiXkOiXleiXneiXpeiXnOiXueiYiuiYk+iYi+iXvuiXuuiYhuiYouiYmuiYsOiYv+iZjeS5leiZlOiZn+iZp+iZseiak+iao+iaqeiaquiai+iajOiatuiar+ibhOibhuiasOibieigo+iaq+iblOibnuibqeibrOibn+ibm+ibr+ickuichuiciOicgOicg+ibu+ickeicieicjeibueiciuictOicv+ict+icu+icpeicqeicmuidoOidn+iduOidjOidjuidtOidl+idqOidruidmVwiXSxbXCJlYWExXCIsXCLonZPonaPonarooIXonqLonp/onoLonq/on4vonr3on4Don5Dpm5bonqvon4TonrPon4fon4bonrvon6/on7Lon6DooI/ooI3on77on7bon7fooI7on5LooJHooJbooJXooKLooKHooLHooLbooLnooKfooLvooYTooYLooZLooZnooZ7ooaLooavoooHoob7oop7oobXoob3oorXoobLoooLoopfoopLooq7oopnooqLooo3ooqToorDoor/oorHoo4Poo4Too5Too5joo5noo53oo7nopILoo7zoo7Too6joo7LopITopIzopIropJPopYPopJ7opKXopKropKvopYHopYTopLvopLbopLjopYzopJ3opaDopZ5cIl0sW1wiZWJhMVwiLFwi6KWm6KWk6KWt6KWq6KWv6KW06KW36KW+6KaD6KaI6KaK6KaT6KaY6Kah6Kap6Kam6Kas6Kav6Kay6Ka66Ka96Ka/6KeA6Kea6Kec6Ked6Ken6Ke06Ke46KiD6KiW6KiQ6KiM6Kib6Kid6Kil6Ki26KmB6Kmb6KmS6KmG6KmI6Km86Kmt6Kms6Kmi6KqF6KqC6KqE6Kqo6Kqh6KqR6Kql6Kqm6Kqa6Kqj6KuE6KuN6KuC6Kua6Kur6Kuz6Kun6Kuk6Kux6KyU6Kug6Kui6Ku36Kue6Kub6KyM6KyH6Kya6Kuh6KyW6KyQ6KyX6Kyg6Kyz6Z6r6Kym6Kyr6Ky+6Kyo6K2B6K2M6K2P6K2O6K2J6K2W6K2b6K2a6K2rXCJdLFtcImVjYTFcIixcIuitn+itrOitr+ittOitveiugOiujOiujuiukuiuk+iuluiumeiumuiwuuixgeiwv+ixiOixjOixjuixkOixleixouixrOixuOixuuiyguiyieiyheiyiuiyjeiyjuiylOixvOiymOaIneiyreiyquiyveiysuiys+iyruiytuiziOizgeizpOizo+izmuizveizuuizu+i0hOi0hei0iui0h+i0j+i0jei0kOm9jui0k+izjei0lOi0lui1p+i1rei1sei1s+i2gei2mei3gui2vui2uui3j+i3mui3lui3jOi3m+i3i+i3qui3q+i3n+i3o+i3vOi4iOi4iei3v+i4nei4nui4kOi4n+i5gui4tei4sOi4tOi5ilwiXSxbXCJlZGExXCIsXCLouYfouYnouYzouZDouYjouZnouaTouaDouKrouaPouZXoubboubLoubzouoHouofouoXouoTouovouoroupPoupHoupToupnouqrouqHouqzourDou4bourHour7ou4Xou4jou4vou5vou6Pou7zou7vou6vou77ovIrovIXovJXovJLovJnovJPovJzovJ/ovJvovIzovKbovLPovLvovLnovYXovYLovL7ovYzovYnovYbovY7ovZfovZzovaLovaPovaTovpzovp/ovqPovq3ovq/ovrfov5rov6Xov6Lov6rov6/pgofov7TpgIXov7nov7rpgJHpgJXpgKHpgI3pgJ7pgJbpgIvpgKfpgLbpgLXpgLnov7hcIl0sW1wiZWVhMVwiLFwi6YGP6YGQ6YGR6YGS6YCO6YGJ6YC+6YGW6YGY6YGe6YGo6YGv6YG26Zqo6YGy6YKC6YG96YKB6YKA6YKK6YKJ6YKP6YKo6YKv6YKx6YK16YOi6YOk5omI6YOb6YSC6YSS6YSZ6YSy6YSw6YWK6YWW6YWY6YWj6YWl6YWp6YWz6YWy6YaL6YaJ6YaC6Yai6Yar6Yav6Yaq6Ya16Ya06Ya66YeA6YeB6YeJ6YeL6YeQ6YeW6Yef6Yeh6Yeb6Ye86Ye16Ye26Yie6Ye/6YiU6Yis6YiV6YiR6Yme6YmX6YmF6YmJ6Ymk6YmI6YqV6Yi/6YmL6YmQ6Yqc6YqW6YqT6Yqb6Yma6YuP6Yq56Yq36Yup6YyP6Yu66Y2E6YyuXCJdLFtcImVmYTFcIixcIumMmemMoumMmumMo+mMuumMtemMu+mNnOmNoOmNvOmNrumNlumOsOmOrOmOremOlOmOuemPlumPl+mPqOmPpemPmOmPg+mPnemPkOmPiOmPpOmQmumQlOmQk+mQg+mQh+mQkOmQtumQq+mQtemQoemQuumRgemRkumRhOmRm+mRoOmRoumRnumRqumIqemRsOmRtemRt+mRvemRmumRvOmRvumSgemRv+mWgumWh+mWiumWlOmWlumWmOmWmemWoOmWqOmWp+mWremWvOmWu+mWuemWvumXiua/tumXg+mXjemXjOmXlemXlOmXlumXnOmXoemXpemXoumYoemYqOmYrumYr+mZgumZjOmZj+mZi+mZt+mZnOmZnlwiXSxbXCJmMGExXCIsXCLpmZ3pmZ/pmabpmbLpmazpmo3pmpjpmpXpmpfpmqrpmqfpmrHpmrLpmrDpmrTpmrbpmrjpmrnpm47pm4vpm4npm43opY3pm5zpnI3pm5Xpm7npnITpnIbpnIjpnJPpnI7pnJHpnI/pnJbpnJnpnKTpnKrpnLDpnLnpnL3pnL7pnYTpnYbpnYjpnYLpnYnpnZzpnaDpnaTpnabpnajli5LpnavpnbHpnbnpnoXpnbzpnoHpnbrpnobpnovpno/pnpDpnpzpnqjpnqbpnqPpnrPpnrTpn4Ppn4bpn4jpn4vpn5zpn63pvY/pn7Lnq5/pn7bpn7XpoI/poIzpoLjpoKTpoKHpoLfpoL3poYbpoY/poYvpoavpoa/pobBcIl0sW1wiZjFhMVwiLFwi6aGx6aG06aGz6aKq6aKv6aKx6aK26aOE6aOD6aOG6aOp6aOr6aSD6aSJ6aSS6aSU6aSY6aSh6aSd6aSe6aSk6aSg6aSs6aSu6aS96aS+6aWC6aWJ6aWF6aWQ6aWL6aWR6aWS6aWM6aWV6aaX6aaY6aal6aat6aau6aa86aef6aeb6aed6aeY6aeR6aet6aeu6aex6aey6ae76ae46aiB6aiP6aiF6aei6aiZ6air6ai36amF6amC6amA6amD6ai+6amV6amN6amb6amX6amf6ami6aml6amk6amp6amr6amq6aqt6aqw6aq86auA6auP6auR6auT6auU6aue6auf6aui6auj6aum6auv6aur6auu6au06aux6au3XCJdLFtcImYyYTFcIixcIumru+mshumsmOmsmumsn+msoumso+mspemsp+msqOmsqemsqumsrumsr+mssumthOmtg+mtj+mtjemtjumtkemtmOmttOmuk+mug+mukemulumul+mun+muoOmuqOmutOmvgOmviumuuemvhumvj+mvkemvkumvo+mvoumvpOmvlOmvoemwuumvsumvsemvsOmwlemwlOmwiemwk+mwjOmwhumwiOmwkumwiumwhOmwrumwm+mwpemwpOmwoemwsOmxh+mwsumxhumwvumxmumxoOmxp+mxtumxuOmzp+mzrOmzsOm0iem0iOmzq+m0g+m0hum0qum0pum2r+m0o+m0n+m1hOm0lem0kum1gem0v+m0vum1hum1iFwiXSxbXCJmM2ExXCIsXCLptZ3ptZ7ptaTptZHptZDptZnptbLptonptofptqvpta/ptbrptprptqTptqnptrLpt4Tpt4Hptrvptrjptrrpt4bpt4/pt4Lpt5npt5Ppt7jpt6bpt63pt6/pt73puJrpuJvpuJ7pubXpubnpub3puoHpuojpuovpuozpupLpupXpupHpup3puqXpuqnpurjpuqrpuq3pnaHpu4zpu47pu4/pu5Dpu5Tpu5zpu57pu53pu6Dpu6Xpu6jpu6/pu7Tpu7bpu7fpu7npu7vpu7zpu73pvIfpvIjnmrfpvJXpvKHpvKzpvL7pvYrpvZLpvZTpvaPpvZ/pvaDpvaHpvabpvafpvazpvarpvbfpvbLpvbbpvpXpvpzpvqBcIl0sW1wiZjRhMVwiLFwi5aCv5qeH6YGZ55Gk5Yec54aZXCJdLFtcImY5YTFcIixcIue6iuiknOmNiOmKiOiTnOS/ieeCu+aYseajiOmLueabu+W9heS4qOS7oeS7vOS8gOS8g+S8ueS9luS+kuS+iuS+muS+lOS/jeWBgOWAouS/v+WAnuWBhuWBsOWBguWClOWDtOWDmOWFiuWFpOWGneWGvuWHrOWIleWKnOWKpuWLgOWLm+WMgOWMh+WMpOWNsuWOk+WOsuWPne+ojuWSnOWSiuWSqeWTv+WWhuWdmeWdpeWerOWfiOWfh++oj++okOWinuWisuWki+Wlk+Wlm+WlneWlo+WmpOWmuuWtluWvgOeUr+WvmOWvrOWwnuWypuWyuuWzteW0p+W1k++okeW1guW1reW2uOW2ueW3kOW8oeW8tOW9p+W+t1wiXSxbXCJmYWExXCIsXCLlv57mgZ3mgoXmgormg57mg5XmhKDmg7LmhJHmhLfmhLDmhpjmiJPmiqbmj7XmkaDmkp3mk47mlY7mmIDmmJXmmLvmmInmmK7mmJ7mmKTmmaXmmZfmmZnvqJLmmbPmmpnmmqDmmrLmmr/mm7rmnI7vpKnmnabmnrvmoZLmn4DmoIHmoYTmo4/vqJPmpajvqJTmppjmp6LmqLDmqavmqYbmqbPmqb7mq6Lmq6Tmr5bmsL/msZzmsobmsa/ms5rmtITmtofmta/mtpbmtqzmt4/mt7jmt7Lmt7zmuLnmuZzmuKfmuLzmur/mvojmvrXmv7XngIXngIfngKjngoXngqvnhI/nhITnhZznhYbnhYfvqJXnh4Hnh77nirFcIl0sW1wiZmJhMVwiLFwi54q+54yk76iW5423546954+J54+W54+j54+S55CH54+155Cm55Cq55Cp55Cu55Gi55KJ55Kf55SB55Wv55qC55qc55qe55qb55qm76iX552G5Yqv56Ch56GO56Gk56G656Sw76iY76iZ76ia56aU76ib56ab56uR56un76ic56ur566e76id57WI57Wc57a357ag57eW57mS572H576h76ie6IyB6I2i6I2/6I+H6I+26JGI6JK06JWT6JWZ6JWr76if6Jaw76ig76ih6KCH6KO16KiS6Ki36Km56Kqn6Kq+6Kuf76ii6Ku26K2T6K2/6LOw6LO06LSS6LW276ij6LuP76ik76il6YGn6YOe76im6YSV6YSn6YeaXCJdLFtcImZjYTFcIixcIumHl+mHnumHremHrumHpOmHpemIhumIkOmIiumIuumJgOmIvOmJjumJmemJkemIuemJp+mKp+mJt+mJuOmLp+mLl+mLmemLkO+op+mLlemLoOmLk+mMpemMoemLu++oqOmMnumLv+mMnemMgumNsOmNl+mOpOmPhumPnumPuOmQsemRhemRiOmWku+nnO+oqemanemar+mcs+mcu+mdg+mdjemdj+mdkemdlemhl+mhpe+oqu+oq+mkp++orOmmnumpjumrmemrnOmttemtsumuj+musemuu+mwgOm1sOm1q++orem4mem7kVwiXSxbXCJmY2YxXCIsXCLihbBcIiw5LFwi77+i77+k77yH77yCXCJdLFtcIjhmYTJhZlwiLFwiy5jLh8K4y5nLncKvy5vLmu+9ns6EzoVcIl0sW1wiOGZhMmMyXCIsXCLCocKmwr9cIl0sW1wiOGZhMmViXCIsXCLCusKqwqnCruKEosKk4oSWXCJdLFtcIjhmYTZlMVwiLFwizobOiM6JzorOqlwiXSxbXCI4ZmE2ZTdcIixcIs6MXCJdLFtcIjhmYTZlOVwiLFwizo7Oq1wiXSxbXCI4ZmE2ZWNcIixcIs6PXCJdLFtcIjhmYTZmMVwiLFwizqzOrc6uzq/Pis6Qz4zPgs+Nz4vOsM+OXCJdLFtcIjhmYTdjMlwiLFwi0IJcIiwxMCxcItCO0I9cIl0sW1wiOGZhN2YyXCIsXCLRklwiLDEwLFwi0Z7Rn1wiXSxbXCI4ZmE5YTFcIixcIsOGxJBcIl0sW1wiOGZhOWE0XCIsXCLEplwiXSxbXCI4ZmE5YTZcIixcIsSyXCJdLFtcIjhmYTlhOFwiLFwixYHEv1wiXSxbXCI4ZmE5YWJcIixcIsWKw5jFklwiXSxbXCI4ZmE5YWZcIixcIsWmw55cIl0sW1wiOGZhOWMxXCIsXCLDpsSRw7DEp8SxxLPEuMWCxYDFicWLw7jFk8OfxafDvlwiXSxbXCI4ZmFhYTFcIixcIsOBw4DDhMOCxILHjcSAxITDhcODxIbEiMSMw4fEisSOw4nDiMOLw4rEmsSWxJLEmFwiXSxbXCI4ZmFhYmFcIixcIsScxJ7EosSgxKTDjcOMw4/DjsePxLDEqsSuxKjEtMS2xLnEvcS7xYPFh8WFw5HDk8OSw5bDlMeRxZDFjMOVxZTFmMWWxZrFnMWgxZ7FpMWiw5rDmcOcw5vFrMeTxbDFqsWyxa7FqMeXx5vHmceVxbTDncW4xbbFucW9xbtcIl0sW1wiOGZhYmExXCIsXCLDocOgw6TDosSDx47EgcSFw6XDo8SHxInEjcOnxIvEj8Opw6jDq8OqxJvEl8STxJnHtcSdxJ9cIl0sW1wiOGZhYmJkXCIsXCLEocSlw63DrMOvw67HkFwiXSxbXCI4ZmFiYzVcIixcIsSrxK/EqcS1xLfEusS+xLzFhMWIxYbDscOzw7LDtsO0x5LFkcWNw7XFlcWZxZfFm8WdxaHFn8WlxaPDusO5w7zDu8Wtx5TFscWrxbPFr8Wpx5jHnMeax5bFtcO9w7/Ft8W6xb7FvFwiXSxbXCI4ZmIwYTFcIixcIuS4guS4hOS4heS4jOS4kuS4n+S4o+S4pOS4qOS4q+S4ruS4r+S4sOS4teS5gOS5geS5hOS5h+S5keS5muS5nOS5o+S5qOS5qeS5tOS5teS5ueS5v+S6jeS6luS6l+S6neS6r+S6ueS7g+S7kOS7muS7m+S7oOS7oeS7ouS7qOS7r+S7seS7s+S7teS7veS7vuS7v+S8gOS8guS8g+S8iOS8i+S8jOS8kuS8leS8luS8l+S8meS8ruS8seS9oOS8s+S8teS8t+S8ueS8u+S8vuS9gOS9guS9iOS9ieS9i+S9jOS9kuS9lOS9luS9mOS9n+S9o+S9quS9rOS9ruS9seS9t+S9uOS9ueS9uuS9veS9vuS+geS+guS+hFwiXSxbXCI4ZmIxYTFcIixcIuS+heS+ieS+iuS+jOS+juS+kOS+kuS+k+S+lOS+l+S+meS+muS+nuS+n+S+suS+t+S+ueS+u+S+vOS+veS+vuS/gOS/geS/heS/huS/iOS/ieS/i+S/jOS/jeS/j+S/kuS/nOS/oOS/ouS/sOS/suS/vOS/veS/v+WAgOWAgeWAhOWAh+WAiuWAjOWAjuWAkOWAk+WAl+WAmOWAm+WAnOWAneWAnuWAouWAp+WAruWAsOWAsuWAs+WAteWBgOWBgeWBguWBheWBhuWBiuWBjOWBjuWBkeWBkuWBk+WBl+WBmeWBn+WBoOWBouWBo+WBpuWBp+WBquWBreWBsOWBseWAu+WCgeWCg+WChOWChuWCiuWCjuWCj+WCkFwiXSxbXCI4ZmIyYTFcIixcIuWCkuWCk+WClOWCluWCm+WCnOWCnlwiLDQsXCLlgqrlgq/lgrDlgrnlgrrlgr3lg4Dlg4Plg4Tlg4flg4zlg47lg5Dlg5Plg5Tlg5jlg5zlg53lg5/lg6Llg6Tlg6blg6jlg6nlg6/lg7Hlg7blg7rlg77lhIPlhIblhIflhIjlhIvlhIzlhI3lhI7lg7LlhJDlhJflhJnlhJvlhJzlhJ3lhJ7lhKPlhKflhKjlhKzlhK3lhK/lhLHlhLPlhLTlhLXlhLjlhLnlhYLlhYrlhY/lhZPlhZXlhZflhZjlhZ/lhaTlhablhb7lhoPlhoTlhovlho7lhpjlhp3lhqHlhqPlhq3lhrjlhrrlhrzlhr7lhr/lh4JcIl0sW1wiOGZiM2ExXCIsXCLlh4jlh4/lh5Hlh5Llh5Plh5Xlh5jlh57lh6Llh6Xlh67lh7Llh7Plh7Tlh7fliIHliILliIXliJLliJPliJXliJbliJjliKLliKjliLHliLLliLXliLzliYXliYnliZXliZfliZjliZrliZzliZ/liaDliaHliablia7libflibjlibnlioDlioLlioXliorliozlipPlipXlipblipflipjliprlipzliqTliqXliqbliqfliq/lirDlirblirflirjlirrlirvlir3li4Dli4Tli4bli4jli4zli4/li5Hli5Tli5bli5vli5zli6Hli6Xli6jli6nli6rli6zli7Dli7Hli7Tli7bli7fljIDljIPljIrljItcIl0sW1wiOGZiNGExXCIsXCLljIzljJHljJPljJjljJvljJzljJ7ljJ/ljKXljKfljKjljKnljKvljKzljK3ljLDljLLljLXljLzljL3ljL7ljYLljYzljYvljZnljZvljaHljaPljaXljazlja3ljbLljbnljb7ljoPljofljojljo7ljpPljpTljpnljp3ljqHljqTljqrljqvljq/ljrLljrTljrXljrfljrjljrrljr3lj4Dlj4Xlj4/lj5Llj5Plj5Xlj5rlj53lj57lj6Dlj6blj6flj7XlkILlkJPlkJrlkKHlkKflkKjlkKrlkK/lkLHlkLTlkLXlkYPlkYTlkYflkY3lkY/lkZ7lkaLlkaTlkablkaflkanlkavlka3lka7lkbTlkb9cIl0sW1wiOGZiNWExXCIsXCLlkoHlkoPlkoXlkojlkonlko3lkpHlkpXlkpblkpzlkp/lkqHlkqblkqflkqnlkqrlkq3lkq7lkrHlkrflkrnlkrrlkrvlkr/lk4blk4rlk43lk47lk6Dlk6rlk6zlk6/lk7blk7zlk77lk7/llIDllIHllIXllIjllInllIzllI3llI7llJXllKrllKvllLLllLXllLbllLvllLzllL3llYHllYfllYnllYrllY3llZDllZHllZjllZrllZvllZ7llaDllaHllaTllabllb/lloHlloLllobllojllo7llo/llpHllpLllpPllpTllpfllqPllqTllq3llrLllr/ll4Hll4Pll4bll4nll4vll4zll47ll5Hll5JcIl0sW1wiOGZiNmExXCIsXCLll5Pll5fll5jll5vll57ll6Lll6nll7bll7/lmIXlmIjlmIrlmI1cIiw1LFwi5ZiZ5Zis5Ziw5Ziz5Zi15Zi35Zi55Zi75Zi85Zi95Zi/5ZmA5ZmB5ZmD5ZmE5ZmG5ZmJ5ZmL5ZmN5ZmP5ZmU5Zme5Zmg5Zmh5Zmi5Zmj5Zmm5Zmp5Zmt5Zmv5Zmx5Zmy5Zm15ZqE5ZqF5ZqI5ZqL5ZqM5ZqV5ZqZ5Zqa5Zqd5Zqe5Zqf5Zqm5Zqn5Zqo5Zqp5Zqr5Zqs5Zqt5Zqx5Zqz5Zq35Zq+5ZuF5ZuJ5ZuK5ZuL5ZuP5ZuQ5ZuM5ZuN5ZuZ5Zuc5Zud5Zuf5Zuh5ZukXCIsNCxcIuWbseWbq+WbrVwiXSxbXCI4ZmI3YTFcIixcIuWbtuWbt+WcgeWcguWch+WciuWcjOWckeWcleWcmuWcm+WcneWcoOWcouWco+WcpOWcpeWcqeWcquWcrOWcruWcr+Wcs+WctOWcveWcvuWcv+WdheWdhuWdjOWdjeWdkuWdouWdpeWdp+WdqOWdq+WdrVwiLDQsXCLlnbPlnbTlnbXlnbflnbnlnbrlnbvlnbzlnb7lnoHlnoPlnozlnpTlnpflnpnlnprlnpzlnp3lnp7lnp/lnqHlnpXlnqflnqjlnqnlnqzlnrjlnr3ln4fln4jln4zln4/ln5Xln53ln57ln6Tln6bln6fln6nln63ln7Dln7Xln7bln7jln73ln77ln7/loIPloITloIjloInln6FcIl0sW1wiOGZiOGExXCIsXCLloIzloI3loJvloJ7loJ/loKDloKbloKfloK3loLLloLnloL/loYnloYzloY3loY/loZDloZXloZ/loaHloaTloafloajlobjlobzlob/looDlooHloofloojloonloorloozloo3loo/lopDlopTlopblop3loqDloqHloqLloqbloqnlorHlorLlo4Tlorzlo4Llo4jlo43lo47lo5Dlo5Llo5Tlo5blo5rlo53lo6Hlo6Llo6nlo7PlpIXlpIblpIvlpIzlpJLlpJPlpJTomYHlpJ3lpKHlpKPlpKTlpKjlpK/lpLDlpLPlpLXlpLblpL/lpYPlpYblpZLlpZPlpZnlpZvlpZ3lpZ7lpZ/lpaHlpaPlpavlpa1cIl0sW1wiOGZiOWExXCIsXCLlpa/lpbLlpbXlpbblpbnlpbvlpbzlpovlpozlpo7lppLlppXlppflpp/lpqTlpqflpq3lpq7lpq/lprDlprPlprflprrlprzlp4Hlp4Plp4Tlp4jlp4rlp43lp5Llp53lp57lp5/lp6Plp6Tlp6flp67lp6/lp7Hlp7Llp7Tlp7flqIDlqITlqIzlqI3lqI7lqJLlqJPlqJ7lqKPlqKTlqKflqKjlqKrlqK3lqLDlqYTlqYXlqYflqYjlqYzlqZDlqZXlqZ7lqaPlqaXlqaflqa3lqbflqbrlqbvlqb7lqovlqpDlqpPlqpblqpnlqpzlqp7lqp/lqqDlqqLlqqflqqzlqrHlqrLlqrPlqrXlqrjlqrrlqrvlqr9cIl0sW1wiOGZiYWExXCIsXCLlq4Tlq4blq4jlq4/lq5rlq5zlq6Dlq6Xlq6rlq67lq7Xlq7blq73lrIDlrIHlrIjlrJflrLTlrJnlrJvlrJ3lrKHlrKXlrK3lrLjlrYHlrYvlrYzlrZLlrZblrZ7lrajlra7lra/lrbzlrb3lrb7lrb/lroHlroTlroblrorlro7lrpDlrpHlrpPlrpTlrpblrqjlrqnlrqzlrq3lrq/lrrHlrrLlrrflrrrlrrzlr4Dlr4Hlr43lr4/lr5ZcIiw0LFwi5a+g5a+v5a+x5a+05a+95bCM5bCX5bCe5bCf5bCj5bCm5bCp5bCr5bCs5bCu5bCw5bCy5bC15bC25bGZ5bGa5bGc5bGi5bGj5bGn5bGo5bGpXCJdLFtcIjhmYmJhMVwiLFwi5bGt5bGw5bG05bG15bG65bG75bG85bG95bKH5bKI5bKK5bKP5bKS5bKd5bKf5bKg5bKi5bKj5bKm5bKq5bKy5bK05bK15bK65bOJ5bOL5bOS5bOd5bOX5bOu5bOx5bOy5bO05bSB5bSG5bSN5bSS5bSr5bSj5bSk5bSm5bSn5bSx5bS05bS55bS95bS/5bWC5bWD5bWG5bWI5bWV5bWR5bWZ5bWK5bWf5bWg5bWh5bWi5bWk5bWq5bWt5bWw5bW55bW65bW+5bW/5baB5baD5baI5baK5baS5baT5baU5baV5baZ5bab5baf5bag5ban5bar5baw5ba05ba45ba55beD5beH5beL5beQ5beO5beY5beZ5beg5bekXCJdLFtcIjhmYmNhMVwiLFwi5bep5be45be55biA5biH5biN5biS5biU5biV5biY5bif5big5biu5bio5biy5bi15bi+5bmL5bmQ5bmJ5bmR5bmW5bmY5bmb5bmc5bme5bmo5bmqXCIsNCxcIuW5sOW6gOW6i+W6juW6ouW6pOW6peW6qOW6quW6rOW6seW6s+W6veW6vuW6v+W7huW7jOW7i+W7juW7keW7kuW7lOW7leW7nOW7nuW7peW7q+W8guW8huW8h+W8iOW8juW8meW8nOW8neW8oeW8ouW8o+W8pOW8qOW8q+W8rOW8ruW8sOW8tOW8tuW8u+W8veW8v+W9gOW9hOW9heW9h+W9jeW9kOW9lOW9mOW9m+W9oOW9o+W9pOW9p1wiXSxbXCI4ZmJkYTFcIixcIuW9r+W9suW9tOW9teW9uOW9uuW9veW9vuW+ieW+jeW+j+W+luW+nOW+neW+ouW+p+W+q+W+pOW+rOW+r+W+sOW+seW+uOW/hOW/h+W/iOW/ieW/i+W/kFwiLDQsXCLlv57lv6Hlv6Llv6jlv6nlv6rlv6zlv63lv67lv6/lv7Llv7Plv7blv7rlv7zmgIfmgIrmgI3mgJPmgJTmgJfmgJjmgJrmgJ/mgKTmgK3mgLPmgLXmgYDmgYfmgYjmgYnmgYzmgZHmgZTmgZbmgZfmgZ3mgaHmgafmgbHmgb7mgb/mgoLmgobmgojmgormgo7mgpHmgpPmgpXmgpjmgp3mgp7mgqLmgqTmgqXmgqjmgrDmgrHmgrdcIl0sW1wiOGZiZWExXCIsXCLmgrvmgr7mg4Lmg4Tmg4jmg4nmg4rmg4vmg47mg4/mg5Tmg5Xmg5nmg5vmg53mg57mg6Lmg6Xmg7Lmg7Xmg7jmg7zmg73mhILmhIfmhIrmhIzmhJBcIiw0LFwi5oSW5oSX5oSZ5oSc5oSe5oSi5oSq5oSr5oSw5oSx5oS15oS25oS35oS55oWB5oWF5oWG5oWJ5oWe5oWg5oWs5oWy5oW45oW75oW85oW/5oaA5oaB5oaD5oaE5oaL5oaN5oaS5oaT5oaX5oaY5oac5oad5oaf5oag5oal5oao5oaq5oat5oa45oa55oa85oeA5oeB5oeC5oeO5oeP5oeV5oec5oed5oee5oef5oeh5oei5oen5oep5oelXCJdLFtcIjhmYmZhMVwiLFwi5oes5oet5oev5oiB5oiD5oiE5oiH5oiT5oiV5oic5oig5oii5oij5oin5oip5oir5oi55oi95omC5omD5omE5omG5omM5omQ5omR5omS5omU5omW5oma5omc5omk5omt5omv5omz5om65om95oqN5oqO5oqP5oqQ5oqm5oqo5oqz5oq25oq35oq65oq+5oq/5ouE5ouO5ouV5ouW5oua5ouq5ouy5ou05ou85ou95oyD5oyE5oyK5oyL5oyN5oyQ5oyT5oyW5oyY5oyp5oyq5oyt5oy15oy25oy55oy85o2B5o2C5o2D5o2E5o2G5o2K5o2L5o2O5o2S5o2T5o2U5o2Y5o2b5o2l5o2m5o2s5o2t5o2x5o205o21XCJdLFtcIjhmYzBhMVwiLFwi5o245o285o295o2/5o6C5o6E5o6H5o6K5o6Q5o6U5o6V5o6Z5o6a5o6e5o6k5o6m5o6t5o6u5o6v5o695o+B5o+F5o+I5o+O5o+R5o+T5o+U5o+V5o+c5o+g5o+l5o+q5o+s5o+y5o+z5o+15o+45o+55pCJ5pCK5pCQ5pCS5pCU5pCY5pCe5pCg5pCi5pCk5pCl5pCp5pCq5pCv5pCw5pC15pC95pC/5pGL5pGP5pGR5pGS5pGT5pGU5pGa5pGb5pGc5pGd5pGf5pGg5pGh5pGj5pGt5pGz5pG05pG75pG95pKF5pKH5pKP5pKQ5pKR5pKY5pKZ5pKb5pKd5pKf5pKh5pKj5pKm5pKo5pKs5pKz5pK95pK+5pK/XCJdLFtcIjhmYzFhMVwiLFwi5pOE5pOJ5pOK5pOL5pOM5pOO5pOQ5pOR5pOV5pOX5pOk5pOl5pOp5pOq5pOt5pOw5pO15pO35pO75pO/5pSB5pSE5pSI5pSJ5pSK5pSP5pST5pSU5pSW5pSZ5pSb5pSe5pSf5pSi5pSm5pSp5pSu5pSx5pS65pS85pS95pWD5pWH5pWJ5pWQ5pWS5pWU5pWf5pWg5pWn5pWr5pW65pW95paB5paF5paK5paS5paV5paY5pad5pag5paj5pam5pau5pay5paz5pa05pa/5peC5peI5peJ5peO5peQ5peU5peW5peY5pef5pew5pey5pe05pe15pe55pe+5pe/5piA5piE5piI5piJ5piN5piR5piS5piV5piW5pidXCJdLFtcIjhmYzJhMVwiLFwi5pie5pih5pii5pij5pik5pim5pip5piq5pir5pis5piu5piw5pix5piz5pi55pi35pmA5pmF5pmG5pmK5pmM5pmR5pmO5pmX5pmY5pmZ5pmb5pmc5pmg5pmh5pu75pmq5pmr5pms5pm+5pmz5pm15pm/5pm35pm45pm55pm75pqA5pm85pqL5pqM5pqN5pqQ5pqS5pqZ5pqa5pqb5pqc5pqf5pqg5pqk5pqt5pqx5pqy5pq15pq75pq/5puA5puC5puD5puI5puM5puO5puP5puU5pub5puf5puo5pur5pus5puu5pu65pyF5pyH5pyO5pyT5pyZ5pyc5pyg5pyi5pyz5py+5p2F5p2H5p2I5p2M5p2U5p2V5p2dXCJdLFtcIjhmYzNhMVwiLFwi5p2m5p2s5p2u5p205p225p275p6B5p6E5p6O5p6P5p6R5p6T5p6W5p6Y5p6Z5p6b5p6w5p6x5p6y5p615p675p685p695p+55p+A5p+C5p+D5p+F5p+I5p+J5p+S5p+X5p+Z5p+c5p+h5p+m5p+w5p+y5p+25p+35qGS5qCU5qCZ5qCd5qCf5qCo5qCn5qCs5qCt5qCv5qCw5qCx5qCz5qC75qC/5qGE5qGF5qGK5qGM5qGV5qGX5qGY5qGb5qGr5qGuXCIsNCxcIuahteahueahuuahu+ahvOaiguaihOaihuaiiOailuaimOaimuainOaioeaio+aipeaiqeaiquairuaisuaiu+ajheajiOajjOajj1wiXSxbXCI4ZmM0YTFcIixcIuajkOajkeajk+ajluajmeajnOajneajpeajqOajquajq+ajrOajreajsOajseajteajtuaju+ajvOajveakhuakieakiuakkOakkeakk+akluakl+akseaks+akteakuOaku+algualhealiealjuall+alm+alo+alpOalpealpualqOalqealrOalsOalsealsualuualu+alv+amgOamjeamkuamluammOamoeampeampuamqOamq+amreamr+amt+amuOamuuamvOanheaniOankeanluanl+anouanpeanruanr+anseans+anteanvuaogOaogeaog+aoj+aokeaoleaomuaoneaooOaopOaoqOaosOaoslwiXSxbXCI4ZmM1YTFcIixcIuaotOaot+aou+aovuaov+apheaphuapieapiuapjuapkOapkeapkuapleapluapm+appOapp+apquapseaps+apvuaqgeaqg+aqhuaqh+aqieaqi+aqkeaqm+aqneaqnuaqn+aqpeaqq+aqr+aqsOaqseaqtOaqveaqvuaqv+arhuarieariOarjOarkOarlOarlearluarnOarnearpOarp+arrOarsOarsearsuarvOarveasguasg+ashuash+asieasj+askOaskeasl+asm+asnuaspOasqOasq+asrOasr+asteastuasu+asv+athuatiuatjeatkuatluatmOatneatoOatp+atq+atruatsOatteatvVwiXSxbXCI4ZmM2YTFcIixcIuatvuauguauheaul+aum+aun+auoOauouauo+auqOauqeaurOaureauruausOauuOauueauveauvuavg+avhOavieavjOavluavmuavoeavo+avpuavp+avruavseavt+avueavv+awguawhOawheawieawjeawjuawkOawkuawmeawn+awpuawp+awqOawrOawruaws+awteawtuawuuawu+awv+axiuaxi+axjeaxj+axkuaxlOaxmeaxm+axnOaxq+axreaxr+axtOaxtuaxuOaxueaxu+ayheayhuayh+ayieaylOayleayl+aymOaynOayn+aysOaysuaytOazguazhuazjeazj+azkOazkeazkuazlOazllwiXSxbXCI4ZmM3YTFcIixcIuazmuaznOazoOazp+azqeazq+azrOazruazsuaztOa0hOa0h+a0iua0jua0j+a0kea0k+a0mua0pua0p+a0qOaxp+a0rua0r+a0sea0uea0vOa0v+a1l+a1nua1n+a1oea1pea1p+a1r+a1sOa1vOa2gua2h+a2kea2kua2lOa2lua2l+a2mOa2qua2rOa2tOa2t+a2uea2vea2v+a3hOa3iOa3iua3jua3j+a3lua3m+a3nea3n+a3oOa3oua3pea3qea3r+a3sOa3tOa3tua3vOa4gOa4hOa4nua4oua4p+a4sua4tua4uea4u+a4vOa5hOa5hea5iOa5iea5i+a5j+a5kea5kua5k+a5lOa5l+a5nOa5nea5nlwiXSxbXCI4ZmM4YTFcIixcIua5oua5o+a5qOa5s+a5u+a5vea6jea6k+a6mea6oOa6p+a6rea6rua6sea6s+a6u+a6v+a7gOa7gea7g+a7h+a7iOa7iua7jea7jua7j+a7q+a7rea7rua7uea7u+a7vea8hOa8iOa8iua8jOa8jea8lua8mOa8mua8m+a8pua8qea8qua8r+a8sOa8s+a8tua8u+a8vOa8rea9j+a9kea9kua9k+a9l+a9mea9mua9nea9nua9oea9oua9qOa9rOa9vea9vua+g+a+h+a+iOa+i+a+jOa+jea+kOa+kua+k+a+lOa+lua+mua+n+a+oOa+pea+pua+p+a+qOa+rua+r+a+sOa+tea+tua+vOa/hea/h+a/iOa/ilwiXSxbXCI4ZmM5YTFcIixcIua/mua/nua/qOa/qea/sOa/tea/uea/vOa/veeAgOeAheeAhueAh+eAjeeAl+eAoOeAo+eAr+eAtOeAt+eAueeAvOeBg+eBhOeBiOeBieeBiueBi+eBlOeBleeBneeBnueBjueBpOeBpeeBrOeBrueBteeBtueBvueCgeeCheeChueClFwiLDQsXCLngpvngqTngqvngrDngrHngrTngrfng4rng5Hng5Png5Tng5Xng5bng5jng5zng6Tng7rnhINcIiw0LFwi54SL54SM54SP54Se54Sg54Sr54St54Sv54Sw54Sx54S454WB54WF54WG54WH54WK54WL54WQ54WS54WX54Wa54Wc54We54WgXCJdLFtcIjhmY2FhMVwiLFwi54Wo54W554aA54aF54aH54aM54aS54aa54ab54ag54ai54av54aw54ay54az54a654a/54eA54eB54eE54eL54eM54eT54eW54eZ54ea54ec54e454e+54iA54iH54iI54iJ54iT54iX54ia54id54if54ik54ir54iv54i054i454i554mB54mC54mD54mF54mO54mP54mQ54mT54mV54mW54ma54mc54me54mg54mj54mo54mr54mu54mv54mx54m354m454m754m854m/54qE54qJ54qN54qO54qT54qb54qo54qt54qu54qx54q054q+54uB54uH54uJ54uM54uV54uW54uY54uf54ul54uz54u054u654u7XCJdLFtcIjhmY2JhMVwiLFwi54u+54yC54yE54yF54yH54yL54yN54yS54yT54yY54yZ54ye54yi54yk54yn54yo54ys54yx54yy54y154y654y754y9542D542N542Q542S542W542Y542d542e542f542g542m542n542p542r542s542u542v542x542354255428546A546B546D546F546G546O546Q546T546V546X546Y546c546e546f546g546i546l546m546q546r546t54615463546554685469546/54+F54+G54+J54+L54+M54+P54+S54+T54+W54+Z54+d54+h54+j54+m54+n54+p54+054+154+354+554+654+754+9XCJdLFtcIjhmY2NhMVwiLFwi54+/55CA55CB55CE55CH55CK55CR55Ca55Cb55Ck55Cm55CoXCIsOSxcIueQueeRgOeRg+eRhOeRhueRh+eRi+eRjeeRkeeRkueRl+eRneeRoueRpueRp+eRqOeRq+eRreeRrueRseeRsueSgOeSgeeSheeShueSh+eSieeSj+eSkOeSkeeSkueSmOeSmeeSmueSnOeSn+eSoOeSoeeSo+eSpueSqOeSqeeSqueSq+eSrueSr+eSseeSsueSteeSueeSu+eSv+eTiOeTieeTjOeTkOeTk+eTmOeTmueTm+eTnueTn+eTpOeTqOeTqueTq+eTr+eTtOeTuueTu+eTvOeTv+eUhlwiXSxbXCI4ZmNkYTFcIixcIueUkueUlueUl+eUoOeUoeeUpOeUp+eUqeeUqueUr+eUtueUueeUveeUvueUv+eVgOeVg+eVh+eViOeVjueVkOeVkueVl+eVnueVn+eVoeeVr+eVseeVuVwiLDUsXCLnloHnloXnlpDnlpLnlpPnlpXnlpnnlpznlqLnlqTnlrTnlrrnlr/nl4Dnl4Hnl4Tnl4bnl4znl47nl4/nl5fnl5znl5/nl6Dnl6Hnl6Tnl6fnl6znl67nl6/nl7Hnl7nnmIDnmILnmIPnmITnmIfnmIjnmIrnmIznmI/nmJLnmJPnmJXnmJbnmJnnmJvnmJznmJ3nmJ7nmKPnmKXnmKbnmKnnmK3nmLLnmLPnmLXnmLjnmLlcIl0sW1wiOGZjZWExXCIsXCLnmLrnmLznmYrnmYDnmYHnmYPnmYTnmYXnmYnnmYvnmZXnmZnnmZ/nmaTnmaXnma3nma7nma/nmbHnmbTnmoHnmoXnmoznmo3nmpXnmpvnmpznmp3nmp/nmqDnmqJcIiw2LFwi55qq55qt55q955uB55uF55uJ55uL55uM55uO55uU55uZ55ug55um55uo55us55uw55ux55u255u555u855yA55yG55yK55yO55yS55yU55yV55yX55yZ55ya55yc55yi55yo55yt55yu55yv55y055y155y255y555y955y+552C552F552G552K552N552O552P552S552W552X552c552e552f552g552iXCJdLFtcIjhmY2ZhMVwiLFwi552k552n552q552s552w552y552z552055265529556A556E556M556N556U556V556W556a556f556i556n556q556u556v556x5561556+55+D55+J55+R55+S55+V55+Z55+e55+f55+g55+k55+m55+q55+s55+w55+x55+055+455+756CF56CG56CJ56CN56CO56CR56Cd56Ch56Ci56Cj56Ct56Cu56Cw56C156C356GD56GE56GH56GI56GM56GO56GS56Gc56Ge56Gg56Gh56Gj56Gk56Go56Gq56Gu56G656G+56KK56KP56KU56KY56Kh56Kd56Ke56Kf56Kk56Ko56Ks56Kt56Kw56Kx56Ky56KzXCJdLFtcIjhmZDBhMVwiLFwi56K756K956K/56OH56OI56OJ56OM56OO56OS56OT56OV56OW56Ok56Ob56Of56Og56Oh56Om56Oq56Oy56Oz56SA56O256O356O656O756O/56SG56SM56SQ56Sa56Sc56Se56Sf56Sg56Sl56Sn56Sp56St56Sx56S056S156S756S956S/56WE56WF56WG56WK56WL56WP56WR56WU56WY56Wb56Wc56Wn56Wp56Wr56Wy56W556W756W856W+56aL56aM56aR56aT56aU56aV56aW56aY56ab56ac56ah56ao56ap56ar56av56ax56a056a456a756eC56eE56eH56eI56eK56eP56eU56eW56ea56ed56eeXCJdLFtcIjhmZDFhMVwiLFwi56eg56ei56el56eq56er56et56ex56e456e856iC56iD56iH56iJ56iK56iM56iR56iV56ib56ie56ih56in56ir56it56iv56iw56i056i156i456i556i656mE56mF56mH56mI56mM56mV56mW56mZ56mc56md56mf56mg56ml56mn56mq56mt56m156m456m+56qA56qC56qF56qG56qK56qL56qQ56qR56qU56qe56qg56qj56qs56qz56q156q556q756q856uG56uJ56uM56uO56uR56ub56uo56up56ur56us56ux56u056u756u956u+56yH56yU56yf56yj56yn56yp56yq56yr56yt56yu56yv56ywXCJdLFtcIjhmZDJhMVwiLFwi56yx56y056y956y/562A562B562H562O562V562g562k562m562p562q562t562v562y562z5623566E566J566O566Q566R566W566b566e566g566l566s566v566w566y56615662566656675668566956+C56+F56+I56+K56+U56+W56+X56+Z56+a56+b56+o56+q56+y56+056+156+456+556+656+856++57CB57CC57CD57CE57CG57CJ57CL57CM57CO57CP57CZ57Cb57Cg57Cl57Cm57Co57Cs57Cx57Cz57C057C257C557C657GG57GK57GV57GR57GS57GT57GZXCIsNV0sW1wiOGZkM2ExXCIsXCLnsaHnsaPnsafnsannsa3nsa7nsbDnsbLnsbnnsbznsb3nsobnsofnso/nspTnsp7nsqDnsqbnsrDnsrbnsrfnsrrnsrvnsrznsr/ns4Tns4fns4jns4nns43ns4/ns5Pns5Tns5Xns5fns5nns5rns53ns6bns6nns6vns7XntIPntIfntIjntInntI/ntJHntJLntJPntJbntJ3ntJ7ntKPntKbntKrntK3ntLHntLzntL3ntL7ntYDntYHntYfntYjntY3ntZHntZPntZfntZnntZrntZzntZ3ntaXntafntarntbDntbjntbrntbvntb/ntoHntoLntoPntoXntobntojntovntoznto3ntpHntpbntpfntp1cIl0sW1wiOGZkNGExXCIsXCLntp7ntqbntqfntqrntrPntrbntrfntrnnt4JcIiw0LFwi57eM57eN57eO57eX57eZ57iA57ei57el57em57eq57er57et57ex57e157e257e557e657iI57iQ57iR57iV57iX57ic57id57ig57in57io57is57it57iv57iz57i257i/57mE57mF57mH57mO57mQ57mS57mY57mf57mh57mi57ml57mr57mu57mv57mz57m457m+57qB57qG57qH57qK57qN57qR57qV57qY57qa57qd57qe57y857y757y957y+57y/572D572E572H572P572S572T572b572c572d572h572j572k572l572m572tXCJdLFtcIjhmZDVhMVwiLFwi572x5729572+572/576A576L576N576P576Q576R576W576X576c576h576i576m576q576t57605768576/57+A57+D57+I57+O57+P57+b57+f57+j57+l57+o57+s57+u57+v57+y57+657+957++57+/6ICH6ICI6ICK6ICN6ICO6ICP6ICR6ICT6ICU6ICW6ICd6ICe6ICf6ICg6ICk6ICm6ICs6ICu6ICw6IC06IC16IC36IC56IC66IC86IC+6IGA6IGE6IGg6IGk6IGm6IGt6IGx6IG16IKB6IKI6IKO6IKc6IKe6IKm6IKn6IKr6IK46IK56IOI6ION6IOP6IOS6IOU6IOV6IOX6IOY6IOg6IOt6IOuXCJdLFtcIjhmZDZhMVwiLFwi6IOw6IOy6IOz6IO26IO56IO66IO+6ISD6ISL6ISW6ISX6ISY6ISc6ISe6ISg6ISk6ISn6ISs6ISw6IS16IS66IS86IWF6IWH6IWK6IWM6IWS6IWX6IWg6IWh6IWn6IWo6IWp6IWt6IWv6IW36IaB6IaQ6IaE6IaF6IaG6IaL6IaO6IaW6IaY6Iab6Iae6Iai6Iau6Iay6Ia06Ia76IeL6IeD6IeF6IeK6IeO6IeP6IeV6IeX6Ieb6Ied6Iee6Ieh6Iek6Ier6Ies6Iew6Iex6Iey6Ie16Ie26Ie46Ie56Ie96Ie/6IiA6IiD6IiP6IiT6IiU6IiZ6Iia6Iid6Iih6Iii6Iio6Iiy6Ii06Ii66ImD6ImE6ImF6ImGXCJdLFtcIjhmZDdhMVwiLFwi6ImL6ImO6ImP6ImR6ImW6Imc6Img6Imj6Imn6Imt6Im06Im76Im96Im/6IqA6IqB6IqD6IqE6IqH6IqJ6IqK6IqO6IqR6IqU6IqW6IqY6Iqa6Iqb6Iqg6Iqh6Iqj6Iqk6Iqn6Iqo6Iqp6Iqq6Iqu6Iqw6Iqy6Iq06Iq36Iq66Iq86Iq+6Iq/6IuG6IuQ6IuV6Iua6Iug6Iui6Iuk6Iuo6Iuq6Iut6Iuv6Iu26Iu36Iu96Iu+6IyA6IyB6IyH6IyI6IyK6IyL6I2U6Iyb6Iyd6Iye6Iyf6Iyh6Iyi6Iys6Iyt6Iyu6Iyw6Iyz6Iy36Iy66Iy86Iy96I2C6I2D6I2E6I2H6I2N6I2O6I2R6I2V6I2W6I2X6I2w6I24XCJdLFtcIjhmZDhhMVwiLFwi6I296I2/6I6A6I6C6I6E6I6G6I6N6I6S6I6U6I6V6I6Y6I6Z6I6b6I6c6I6d6I6m6I6n6I6p6I6s6I6+6I6/6I+A6I+H6I+J6I+P6I+Q6I+R6I+U6I+d6I2T6I+o6I+q6I+26I+46I+56I+86JCB6JCG6JCK6JCP6JCR6JCV6JCZ6I6t6JCv6JC56JGF6JGH6JGI6JGK6JGN6JGP6JGR6JGS6JGW6JGY6JGZ6JGa6JGc6JGg6JGk6JGl6JGn6JGq6JGw6JGz6JG06JG26JG46JG86JG96JKB6JKF6JKS6JKT6JKV6JKe6JKm6JKo6JKp6JKq6JKv6JKx6JK06JK66JK96JK+6JOA6JOC6JOH6JOI6JOM6JOP6JOTXCJdLFtcIjhmZDlhMVwiLFwi6JOc6JOn6JOq6JOv6JOw6JOx6JOy6JO36JSy6JO66JO76JO96JSC6JSD6JSH6JSM6JSO6JSQ6JSc6JSe6JSi6JSj6JSk6JSl6JSn6JSq6JSr6JSv6JSz6JS06JS26JS/6JWG6JWPXCIsNCxcIuiVluiVmeiVnFwiLDYsXCLolaTolavola/olbnolbrolbvolb3olb/oloHoloXolobolonolovolozolo/olpPolpjolp3olp/olqDolqLolqXolqfolrTolrbolrfolrjolrzolr3olr7olr/ol4Lol4fol4rol4vol47olq3ol5jol5rol5/ol6Dol6bol6jol63ol7Pol7bol7xcIl0sW1wiOGZkYWExXCIsXCLol7/omIDomITomIXomI3omI7omJDomJHomJLomJjomJnomJvomJ7omKHomKfomKnomLbomLjomLromLzomL3omYDomYLomYbomZLomZPomZbomZfomZjomZnomZ3omaBcIiw0LFwi6Jmp6Jms6Jmv6Jm16Jm26Jm36Jm66JqN6JqR6JqW6JqY6Jqa6Jqc6Jqh6Jqm6Jqn6Jqo6Jqt6Jqx6Jqz6Jq06Jq16Jq36Jq46Jq56Jq/6JuA6JuB6JuD6JuF6JuR6JuS6JuV6JuX6Jua6Juc6Jug6Juj6Jul6Jun6JqI6Ju66Ju86Ju96JyE6JyF6JyH6JyL6JyO6JyP6JyQ6JyT6JyU6JyZ6Jye6Jyf6Jyh6JyjXCJdLFtcIjhmZGJhMVwiLFwi6Jyo6Jyu6Jyv6Jyx6Jyy6Jy56Jy66Jy86Jy96Jy+6J2A6J2D6J2F6J2N6J2Y6J2d6J2h6J2k6J2l6J2v6J2x6J2y6J276J6DXCIsNixcIuiei+iejOiekOiek+ieleiel+iemOiemeienuieoOieo+iep+ierOiereieruieseieteievuiev+ifgeifiOifieifiuifjuifleifluifmeifmuifnOifn+ifouifo+ifpOifquifq+ifreifseifs+ifuOifuuifv+iggeigg+ighuigieigiuigi+igkOigmeigkuigk+iglOigmOigmuigm+ignOignuign+igqOigreigruigsOigsuigtVwiXSxbXCI4ZmRjYTFcIixcIuiguuigvOihgeihg+ihheihiOihieihiuihi+ihjuihkeihleihluihmOihmuihnOihn+ihoOihpOihqeihseihueihu+iigOiimOiimuiim+iinOiin+iioOiiqOiiquiiuuiiveiivuijgOijilwiLDQsXCLoo5Hoo5Loo5Poo5voo57oo6foo6/oo7Doo7Hoo7Xoo7fopIHopIbopI3opI7opI/opJXopJbopJjopJnopJropJzopKDopKbopKfopKjopLDopLHopLLopLXopLnopLropL7opYDopYLopYXopYbopYnopY/opZLopZfopZropZvopZzopaHopaLopaPopavopa7opbDopbPopbXopbpcIl0sW1wiOGZkZGExXCIsXCLopbvopbzopb3oponopo3oppDoppToppXoppvoppzopp/opqDopqXoprDoprToprXoprboprfoprzop5RcIiw0LFwi6Kel6Kep6Ker6Ket6Kex6Kez6Ke26Ke56Ke96Ke/6KiE6KiF6KiH6KiP6KiR6KiS6KiU6KiV6Kie6Kig6Kii6Kik6Kim6Kir6Kis6Kiv6Ki16Ki36Ki96Ki+6KmA6KmD6KmF6KmH6KmJ6KmN6KmO6KmT6KmW6KmX6KmY6Kmc6Kmd6Kmh6Kml6Kmn6Km16Km26Km36Km56Km66Km76Km+6Km/6KqA6KqD6KqG6KqL6KqP6KqQ6KqS6KqW6KqX6KqZ6Kqf6Kqn6Kqp6Kqu6Kqv6KqzXCJdLFtcIjhmZGVhMVwiLFwi6Kq26Kq36Kq76Kq+6KuD6KuG6KuI6KuJ6KuK6KuR6KuT6KuU6KuV6KuX6Kud6Kuf6Kus6Kuw6Ku06Ku16Ku26Ku86Ku/6KyF6KyG6KyL6KyR6Kyc6Kye6Kyf6KyK6Kyt6Kyw6Ky36Ky86K2CXCIsNCxcIuitiOitkuitk+itlOitmeitjeitnuito+itreittuituOitueitvOitvuiugeiuhOiuheiui+iujeiuj+iulOiuleiunOiunuiun+iwuOiwueiwveiwvuixheixh+ixieixi+ixj+ixkeixk+ixlOixl+ixmOixm+ixneixmeixo+ixpOixpuixqOixqeixreixs+ixteixtuixu+ixvuiyhlwiXSxbXCI4ZmRmYTFcIixcIuiyh+iyi+iykOiykuiyk+iymeiym+iynOiypOiyueiyuuizheizhuizieizi+izj+izluizleizmeizneizoeizqOizrOizr+izsOizsuizteizt+izuOizvuizv+i0gei0g+i0iei0kui0l+i0m+i1pei1qei1rOi1rui1v+i2gui2hOi2iOi2jei2kOi2kei2lei2nui2n+i2oOi2pui2q+i2rOi2r+i2sui2tei2t+i2uei2u+i3gOi3hei3hui3h+i3iOi3iui3jui3kei3lOi3lei3l+i3mei3pOi3pei3p+i3rOi3sOi2vOi3sei3sui3tOi3vei4gei4hOi4hei4hui4i+i4kei4lOi4lui4oOi4oei4olwiXSxbXCI4ZmUwYTFcIixcIui4o+i4pui4p+i4sei4s+i4tui4t+i4uOi4uei4vei5gOi5gei5i+i5jei5jui5j+i5lOi5m+i5nOi5nei5nui5oei5oui5qei5rOi5rei5r+i5sOi5sei5uei5uui5u+i6gui6g+i6iei6kOi6kui6lei6mui6m+i6nei6nui6oui6p+i6qei6rei6rui6s+i6tei6uui6u+i7gOi7gei7g+i7hOi7h+i7j+i7kei7lOi7nOi7qOi7rui7sOi7sei7t+i7uei7uui7rei8gOi8gui8h+i8iOi8j+i8kOi8lui8l+i8mOi8nui8oOi8oei8o+i8pei8p+i8qOi8rOi8rei8rui8tOi8tei8tui8t+i8uui9gOi9gVwiXSxbXCI4ZmUxYTFcIixcIui9g+i9h+i9j+i9kVwiLDQsXCLovZjovZ3ovZ7ovaXovp3ovqDovqHovqTovqXovqbovrXovrbovrjovr7ov4Dov4Hov4bov4rov4vov43ov5Dov5Lov5Pov5Xov6Dov6Pov6Tov6jov67ov7Hov7Xov7bov7vov77pgILpgITpgIjpgIzpgJjpgJvpgKjpgKnpgK/pgKrpgKzpgK3pgLPpgLTpgLfpgL/pgYPpgYTpgYzpgZvpgZ3pgaLpgabpgafpgazpgbDpgbTpgbnpgoXpgojpgovpgozpgo7pgpDpgpXpgpfpgpjpgpnpgpvpgqDpgqHpgqLpgqXpgrDpgrLpgrPpgrTpgrbpgr3pg4zpgr7pg4NcIl0sW1wiOGZlMmExXCIsXCLpg4Tpg4Xpg4fpg4jpg5Xpg5fpg5jpg5npg5zpg53pg5/pg6Xpg5Lpg7bpg6vpg6/pg7Dpg7Tpg77pg7/phIDphITphIXphIbphIjphI3phJDphJTphJbphJfphJjphJrphJzphJ7phKDphKXphKLphKPphKfphKnphK7phK/phLHphLTphLbphLfphLnphLrphLzphL3phYPphYfphYjphY/phZPphZfphZnphZrphZvphaHphaTphafpha3phbTphbnphbrphbvphoHphoPphoXphobphorpho7phpHphpPphpTphpXphpjphp7phqHphqbphqjphqzphq3phq7phrDphrHphrLphrPphrbphrvphrzphr3phr9cIl0sW1wiOGZlM2ExXCIsXCLph4Lph4Pph4Xph5Pph5Tph5fph5nph5rph57ph6Tph6Xph6nph6rph6xcIiw1LFwi6Ye36Ye56Ye76Ye96YiA6YiB6YiE6YiF6YiG6YiH6YiJ6YiK6YiM6YiQ6YiS6YiT6YiW6YiY6Yic6Yid6Yij6Yik6Yil6Yim6Yio6Yiu6Yiv6Yiw6Yiz6Yi16Yi26Yi46Yi56Yi66Yi86Yi+6YmA6YmC6YmD6YmG6YmH6YmK6YmN6YmO6YmP6YmR6YmY6YmZ6Ymc6Ymd6Ymg6Ymh6Yml6Ymn6Ymo6Ymp6Ymu6Ymv6Ymw6Ym1XCIsNCxcIumJu+mJvOmJvemJv+mKiOmKiemKiumKjemKjumKkumKl1wiXSxbXCI4ZmU0YTFcIixcIumKmemKn+mKoOmKpOmKpemKp+mKqOmKq+mKr+mKsumKtumKuOmKuumKu+mKvOmKvemKv1wiLDQsXCLpi4Xpi4bpi4fpi4jpi4vpi4zpi43pi47pi5Dpi5Ppi5Xpi5fpi5jpi5npi5zpi53pi5/pi6Dpi6Hpi6Ppi6Xpi6fpi6jpi6zpi67pi7Dpi7npi7vpi7/pjIDpjILpjIjpjI3pjJHpjJTpjJXpjJzpjJ3pjJ7pjJ/pjKHpjKTpjKXpjKfpjKnpjKrpjLPpjLTpjLbpjLfpjYfpjYjpjYnpjZDpjZHpjZLpjZXpjZfpjZjpjZrpjZ7pjaTpjaXpjafpjanpjarpja3pja/pjbDpjbHpjbPpjbTpjbZcIl0sW1wiOGZlNWExXCIsXCLpjbrpjb3pjb/pjoDpjoHpjoLpjojpjorpjovpjo3pjo/pjpLpjpXpjpjpjpvpjp7pjqHpjqPpjqTpjqbpjqjpjqvpjrTpjrXpjrbpjrrpjqnpj4Hpj4Tpj4Xpj4bpj4fpj4lcIiw0LFwi6Y+T6Y+Z6Y+c6Y+e6Y+f6Y+i6Y+m6Y+n6Y+56Y+36Y+46Y+66Y+76Y+96ZCB6ZCC6ZCE6ZCI6ZCJ6ZCN6ZCO6ZCP6ZCV6ZCW6ZCX6ZCf6ZCu6ZCv6ZCx6ZCy6ZCz6ZC06ZC76ZC/6ZC96ZGD6ZGF6ZGI6ZGK6ZGM6ZGV6ZGZ6ZGc6ZGf6ZGh6ZGj6ZGo6ZGr6ZGt6ZGu6ZGv6ZGx6ZGy6ZKE6ZKD6ZW46ZW5XCJdLFtcIjhmZTZhMVwiLFwi6ZW+6ZaE6ZaI6ZaM6ZaN6ZaO6Zad6Zae6Zaf6Zah6Zam6Zap6Zar6Zas6Za06Za26Za66Za96Za/6ZeG6ZeI6ZeJ6ZeL6ZeQ6ZeR6ZeS6ZeT6ZeZ6Zea6Zed6Zee6Zef6Zeg6Zek6Zem6Zid6Zie6Zii6Zik6Zil6Zim6Zis6Zix6Ziz6Zi36Zi46Zi56Zi66Zi86Zi96ZmB6ZmS6ZmU6ZmW6ZmX6ZmY6Zmh6Zmu6Zm06Zm76Zm86Zm+6Zm/6ZqB6ZqC6ZqD6ZqE6ZqJ6ZqR6ZqW6Zqa6Zqd6Zqf6Zqk6Zql6Zqm6Zqp6Zqu6Zqv6Zqz6Zq66ZuK6ZuS5bay6ZuY6Zua6Zud6Zue6Zuf6Zup6Zuv6Zux6Zu66ZyCXCJdLFtcIjhmZTdhMVwiLFwi6ZyD6ZyF6ZyJ6Zya6Zyb6Zyd6Zyh6Zyi6Zyj6Zyo6Zyx6Zyz6Z2B6Z2D6Z2K6Z2O6Z2P6Z2V6Z2X6Z2Y6Z2a6Z2b6Z2j6Z2n6Z2q6Z2u6Z2z6Z226Z236Z246Z276Z296Z2/6Z6A6Z6J6Z6V6Z6W6Z6X6Z6Z6Z6a6Z6e6Z6f6Z6i6Z6s6Z6u6Z6x6Z6y6Z616Z626Z646Z656Z666Z686Z6+6Z6/6Z+B6Z+E6Z+F6Z+H6Z+J6Z+K6Z+M6Z+N6Z+O6Z+Q6Z+R6Z+U6Z+X6Z+Y6Z+Z6Z+d6Z+e6Z+g6Z+b6Z+h6Z+k6Z+v6Z+x6Z+06Z+36Z+46Z+66aCH6aCK6aCZ6aCN6aCO6aCU6aCW6aCc6aCe6aCg6aCj6aCmXCJdLFtcIjhmZThhMVwiLFwi6aCr6aCu6aCv6aCw6aCy6aCz6aC16aCl6aC+6aGE6aGH6aGK6aGR6aGS6aGT6aGW6aGX6aGZ6aGa6aGi6aGj6aGl6aGm6aGq6aGs6aKr6aKt6aKu6aKw6aK06aK36aK46aK66aK76aK/6aOC6aOF6aOI6aOM6aOh6aOj6aOl6aOm6aOn6aOq6aOz6aO26aSC6aSH6aSI6aSR6aSV6aSW6aSX6aSa6aSb6aSc6aSf6aSi6aSm6aSn6aSr6aSxXCIsNCxcIumkuemkuumku+mkvOmlgOmlgemlhumlh+mliOmljemljumllOmlmOmlmemlm+mlnOmlnumln+mloOmmm+mmnemmn+mmpummsOmmsemmsummtVwiXSxbXCI4ZmU5YTFcIixcIummuemmuummvemmv+mng+mniemnk+mnlOmnmemnmumnnOmnnumnp+mnqumnq+mnrOmnsOmntOmntemnuemnvemnvumogumog+mohOmoi+mojOmokOmokemolumonumooOmooumoo+mopOmop+moremorumos+motemotumouOmph+mpgemphOmpiumpi+mpjOmpjumpkemplOmplumpnemqqumqrOmqrumqr+mqsumqtOmqtemqtumquemqu+mqvumqv+mrgemrg+mrhumriOmrjumrkOmrkumrlemrlumrl+mrm+mrnOmroOmrpOmrpemrp+mrqemrrOmrsumrs+mrtemruemruumrvemrv1wiLDRdLFtcIjhmZWFhMVwiLFwi6ayE6ayF6ayI6ayJ6ayL6ayM6ayN6ayO6ayQ6ayS6ayW6ayZ6ayb6ayc6ayg6aym6ayr6ayt6ayz6ay06ay16ay36ay56ay66ay96a2I6a2L6a2M6a2V6a2W6a2X6a2b6a2e6a2h6a2j6a2l6a2m6a2o6a2qXCIsNCxcIumts+mttemtt+mtuOmtuemtv+mugOmuhOmuhemuhumuh+muiemuiumui+mujemuj+mukOmulOmumumunemunumupumup+muqemurOmusOmusemusumut+muuOmuu+muvOmuvumuv+mvgemvh+mviOmvjumvkOmvl+mvmOmvnemvn+mvpemvp+mvqumvq+mvr+mvs+mvt+mvuFwiXSxbXCI4ZmViYTFcIixcIumvuemvuumvvemvv+mwgOmwgumwi+mwj+mwkemwlumwmOmwmemwmumwnOmwnumwoumwo+mwplwiLDQsXCLpsLHpsLXpsLbpsLfpsL3psYHpsYPpsYTpsYXpsYnpsYrpsY7psY/psZDpsZPpsZTpsZbpsZjpsZvpsZ3psZ7psZ/psaPpsanpsarpsZzpsavpsajpsa7psbDpsbLpsbXpsbfpsbvps6bps7Lps7fps7nptIvptILptJHptJfptJjptJzptJ3ptJ7ptK/ptLDptLLptLPptLTptLrptLzptYXptL3ptYLptYPptYfptYrptZPptZTptZ/ptaPptaLptaXptanptarptavptbDptbbptbfptbtcIl0sW1wiOGZlY2ExXCIsXCLptbzptb7ptoPptoTptobptorpto3pto7ptpLptpPptpXptpbptpfptpjptqHptqrptqzptq7ptrHptrXptrnptrzptr/pt4Ppt4fpt4npt4rpt5Tpt5Xpt5bpt5fpt5rpt57pt5/pt6Dpt6Xpt6fpt6npt6vpt67pt7Dpt7Ppt7Tpt77puIrpuILpuIfpuI7puJDpuJHpuJLpuJXpuJbpuJnpuJzpuJ3pubrpubvpubzpuoDpuoLpuoPpuoTpuoXpuofpuo7puo/pupbpupjpupvpup7puqTpuqjpuqzpuq7puq/purDpurPpurTpurXpu4bpu4jpu4vpu5Xpu5/pu6Tpu6fpu6zpu63pu67pu7Dpu7Hpu7Lpu7VcIl0sW1wiOGZlZGExXCIsXCLpu7jpu7/pvILpvIPpvInpvI/pvJDpvJHpvJLpvJTpvJbpvJfpvJnpvJrpvJvpvJ/pvKLpvKbpvKrpvKvpvK/pvLHpvLLpvLTpvLfpvLnpvLrpvLzpvL3pvL/pvYHpvYNcIiw0LFwi6b2T6b2V6b2W6b2X6b2Y6b2a6b2d6b2e6b2o6b2p6b2tXCIsNCxcIum9s+m9tem9uum9vem+j+m+kOm+kem+kum+lOm+lum+l+m+num+oem+oum+o+m+pVwiXV1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdGFibGVzL2V1Y2pwLmpzb25cbi8vIG1vZHVsZSBpZCA9IDE0NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHtcInVDaGFyc1wiOlsxMjgsMTY1LDE2OSwxNzgsMTg0LDIxNiwyMjYsMjM1LDIzOCwyNDQsMjQ4LDI1MSwyNTMsMjU4LDI3NiwyODQsMzAwLDMyNSwzMjksMzM0LDM2NCw0NjMsNDY1LDQ2Nyw0NjksNDcxLDQ3Myw0NzUsNDc3LDUwNiw1OTQsNjEwLDcxMiw3MTYsNzMwLDkzMCw5MzgsOTYyLDk3MCwxMDI2LDExMDQsMTEwNiw4MjA5LDgyMTUsODIxOCw4MjIyLDgyMzEsODI0MSw4MjQ0LDgyNDYsODI1Miw4MzY1LDg0NTIsODQ1NCw4NDU4LDg0NzEsODQ4Miw4NTU2LDg1NzAsODU5Niw4NjAyLDg3MTMsODcyMCw4NzIyLDg3MjYsODczMSw4NzM3LDg3NDAsODc0Miw4NzQ4LDg3NTEsODc2MCw4NzY2LDg3NzcsODc4MSw4Nzg3LDg4MDIsODgwOCw4ODE2LDg4NTQsODg1OCw4ODcwLDg4OTYsODk3OSw5MzIyLDkzNzIsOTU0OCw5NTg4LDk2MTYsOTYyMiw5NjM0LDk2NTIsOTY2Miw5NjcyLDk2NzYsOTY4MCw5NzAyLDk3MzUsOTczOCw5NzkzLDk3OTUsMTE5MDYsMTE5MDksMTE5MTMsMTE5MTcsMTE5MjgsMTE5NDQsMTE5NDcsMTE5NTEsMTE5NTYsMTE5NjAsMTE5NjQsMTE5NzksMTIyODQsMTIyOTIsMTIzMTIsMTIzMTksMTIzMzAsMTIzNTEsMTI0MzYsMTI0NDcsMTI1MzUsMTI1NDMsMTI1ODYsMTI4NDIsMTI4NTAsMTI5NjQsMTMyMDAsMTMyMTUsMTMyMTgsMTMyNTMsMTMyNjMsMTMyNjcsMTMyNzAsMTMzODQsMTM0MjgsMTM3MjcsMTM4MzksMTM4NTEsMTQ2MTcsMTQ3MDMsMTQ4MDEsMTQ4MTYsMTQ5NjQsMTUxODMsMTU0NzEsMTU1ODUsMTY0NzEsMTY3MzYsMTcyMDgsMTczMjUsMTczMzAsMTczNzQsMTc2MjMsMTc5OTcsMTgwMTgsMTgyMTIsMTgyMTgsMTgzMDEsMTgzMTgsMTg3NjAsMTg4MTEsMTg4MTQsMTg4MjAsMTg4MjMsMTg4NDQsMTg4NDgsMTg4NzIsMTk1NzYsMTk2MjAsMTk3MzgsMTk4ODcsNDA4NzAsNTkyNDQsNTkzMzYsNTkzNjcsNTk0MTMsNTk0MTcsNTk0MjMsNTk0MzEsNTk0MzcsNTk0NDMsNTk0NTIsNTk0NjAsNTk0NzgsNTk0OTMsNjM3ODksNjM4NjYsNjM4OTQsNjM5NzYsNjM5ODYsNjQwMTYsNjQwMTgsNjQwMjEsNjQwMjUsNjQwMzQsNjQwMzcsNjQwNDIsNjUwNzQsNjUwOTMsNjUxMDcsNjUxMTIsNjUxMjcsNjUxMzIsNjUzNzUsNjU1MTAsNjU1MzZdLFwiZ2JDaGFyc1wiOlswLDM2LDM4LDQ1LDUwLDgxLDg5LDk1LDk2LDEwMCwxMDMsMTA0LDEwNSwxMDksMTI2LDEzMywxNDgsMTcyLDE3NSwxNzksMjA4LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzQxLDQyOCw0NDMsNTQ0LDU0NSw1NTgsNzQxLDc0Miw3NDksNzUwLDgwNSw4MTksODIwLDc5MjIsNzkyNCw3OTI1LDc5MjcsNzkzNCw3OTQzLDc5NDQsNzk0NSw3OTUwLDgwNjIsODE0OCw4MTQ5LDgxNTIsODE2NCw4MTc0LDgyMzYsODI0MCw4MjYyLDgyNjQsODM3NCw4MzgwLDgzODEsODM4NCw4Mzg4LDgzOTAsODM5Miw4MzkzLDgzOTQsODM5Niw4NDAxLDg0MDYsODQxNiw4NDE5LDg0MjQsODQzNyw4NDM5LDg0NDUsODQ4Miw4NDg1LDg0OTYsODUyMSw4NjAzLDg5MzYsODk0Niw5MDQ2LDkwNTAsOTA2Myw5MDY2LDkwNzYsOTA5Miw5MTAwLDkxMDgsOTExMSw5MTEzLDkxMzEsOTE2Miw5MTY0LDkyMTgsOTIxOSwxMTMyOSwxMTMzMSwxMTMzNCwxMTMzNiwxMTM0NiwxMTM2MSwxMTM2MywxMTM2NiwxMTM3MCwxMTM3MiwxMTM3NSwxMTM4OSwxMTY4MiwxMTY4NiwxMTY4NywxMTY5MiwxMTY5NCwxMTcxNCwxMTcxNiwxMTcyMywxMTcyNSwxMTczMCwxMTczNiwxMTk4MiwxMTk4OSwxMjEwMiwxMjMzNiwxMjM0OCwxMjM1MCwxMjM4NCwxMjM5MywxMjM5NSwxMjM5NywxMjUxMCwxMjU1MywxMjg1MSwxMjk2MiwxMjk3MywxMzczOCwxMzgyMywxMzkxOSwxMzkzMywxNDA4MCwxNDI5OCwxNDU4NSwxNDY5OCwxNTU4MywxNTg0NywxNjMxOCwxNjQzNCwxNjQzOCwxNjQ4MSwxNjcyOSwxNzEwMiwxNzEyMiwxNzMxNSwxNzMyMCwxNzQwMiwxNzQxOCwxNzg1OSwxNzkwOSwxNzkxMSwxNzkxNSwxNzkxNiwxNzkzNiwxNzkzOSwxNzk2MSwxODY2NCwxODcwMywxODgxNCwxODk2MiwxOTA0MywzMzQ2OSwzMzQ3MCwzMzQ3MSwzMzQ4NCwzMzQ4NSwzMzQ5MCwzMzQ5NywzMzUwMSwzMzUwNSwzMzUxMywzMzUyMCwzMzUzNiwzMzU1MCwzNzg0NSwzNzkyMSwzNzk0OCwzODAyOSwzODAzOCwzODA2NCwzODA2NSwzODA2NiwzODA2OSwzODA3NSwzODA3NiwzODA3OCwzOTEwOCwzOTEwOSwzOTExMywzOTExNCwzOTExNSwzOTExNiwzOTI2NSwzOTM5NCwxODkwMDBdfVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy90YWJsZXMvZ2IxODAzMC1yYW5nZXMuanNvblxuLy8gbW9kdWxlIGlkID0gMTQ2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gW1tcIjBcIixcIlxcdTAwMDBcIiwxMjddLFtcIjgxNDFcIixcIuqwguqwg+qwheqwhuqwi1wiLDQsXCLqsJjqsJ7qsJ/qsKHqsKLqsKPqsKVcIiw2LFwi6rCu6rCy6rCz6rC0XCJdLFtcIjgxNjFcIixcIuqwteqwtuqwt+qwuuqwu+qwveqwvuqwv+qxgVwiLDksXCLqsYzqsY5cIiw1LFwi6rGVXCJdLFtcIjgxODFcIixcIuqxluqxl+qxmeqxmuqxm+qxnVwiLDE4LFwi6rGy6rGz6rG16rG26rG56rG7XCIsNCxcIuqyguqyh+qyiOqyjeqyjuqyj+qykeqykuqyk+qylVwiLDYsXCLqsp7qsqJcIiw1LFwi6rKr6rKt6rKu6rKxXCIsNixcIuqyuuqyvuqyv+qzgOqzguqzg+qzheqzhuqzh+qzieqziuqzi+qzjVwiLDcsXCLqs5bqs5hcIiw3LFwi6rOi6rOj6rOl6rOm6rOp6rOr6rOt6rOu6rOy6rO06rO3XCIsNCxcIuqzvuqzv+q0geq0guq0g+q0heq0h1wiLDQsXCLqtI7qtJDqtJLqtJNcIl0sW1wiODI0MVwiLFwi6rSU6rSV6rSW6rSX6rSZ6rSa6rSb6rSd6rSe6rSf6rShXCIsNyxcIuq0quq0q+q0rlwiLDVdLFtcIjgyNjFcIixcIuq0tuq0t+q0ueq0uuq0u+q0vVwiLDYsXCLqtYbqtYjqtYpcIiw1LFwi6rWR6rWS6rWT6rWV6rWW6rWXXCJdLFtcIjgyODFcIixcIuq1mVwiLDcsXCLqtaLqtaRcIiw3LFwi6rWu6rWv6rWx6rWy6rW36rW46rW56rW66rW+6raA6raDXCIsNCxcIuq2iuq2i+q2jeq2juq2j+q2kVwiLDEwLFwi6raeXCIsNSxcIuq2pVwiLDE3LFwi6ra4XCIsNyxcIuq3guq3g+q3heq3huq3h+q3iVwiLDYsXCLqt5Lqt5RcIiw3LFwi6red6ree6ref6reh6rei6rej6relXCIsMThdLFtcIjgzNDFcIixcIuq3uuq3u+q3veq3vuq4glwiLDUsXCLquIrquIzquI5cIiw1LFwi6riVXCIsN10sW1wiODM2MVwiLFwi6ridXCIsMTgsXCLquLLquLPquLXquLbquLnquLvquLxcIl0sW1wiODM4MVwiLFwi6ri96ri+6ri/6rmC6rmE6rmH6rmI6rmJ6rmL6rmP6rmR6rmS6rmT6rmV6rmXXCIsNCxcIuq5nuq5ouq5o+q5pOq5puq5p+q5quq5q+q5req5ruq5r+q5sVwiLDYsXCLqubrqub5cIiw1LFwi6rqGXCIsNSxcIuq6jVwiLDQ2LFwi6rq/6ruB6ruC6ruD6ruFXCIsNixcIuq7juq7klwiLDUsXCLqu5rqu5vqu51cIiw4XSxbXCI4NDQxXCIsXCLqu6bqu6fqu6nqu6rqu6zqu65cIiw1LFwi6ru16ru26ru36ru56ru66ru76ru9XCIsOF0sW1wiODQ2MVwiLFwi6ryG6ryJ6ryK6ryL6ryM6ryO6ryP6ryRXCIsMThdLFtcIjg0ODFcIixcIuq8pFwiLDcsXCLqvK7qvK/qvLHqvLPqvLVcIiw2LFwi6ry+6r2A6r2E6r2F6r2G6r2H6r2KXCIsNSxcIuq9kVwiLDEwLFwi6r2eXCIsNSxcIuq9plwiLDE4LFwi6r26XCIsNSxcIuq+geq+guq+g+q+heq+huq+h+q+iVwiLDYsXCLqvpLqvpPqvpTqvpZcIiw1LFwi6r6dXCIsMjYsXCLqvrrqvrvqvr3qvr5cIl0sW1wiODU0MVwiLFwi6r6/6r+BXCIsNSxcIuq/iuq/jOq/j1wiLDQsXCLqv5VcIiw2LFwi6r+dXCIsNF0sW1wiODU2MVwiLFwi6r+iXCIsNSxcIuq/qlwiLDUsXCLqv7Lqv7Pqv7Xqv7bqv7fqv7lcIiw2LFwi64CC64CDXCJdLFtcIjg1ODFcIixcIuuAhVwiLDYsXCLrgI3rgI7rgI/rgJHrgJLrgJPrgJVcIiw2LFwi64CeXCIsOSxcIuuAqVwiLDI2LFwi64GG64GH64GJ64GL64GN64GP64GQ64GR64GS64GW64GY64Ga64Gb64Gc64GeXCIsMjksXCLrgb7rgb/rgoHrgoLrgoPrgoVcIiw2LFwi64KO64KQ64KSXCIsNSxcIuuCm+uCneuCnuuCo+uCpFwiXSxbXCI4NjQxXCIsXCLrgqXrgqbrgqfrgqrrgrDrgrLrgrbrgrfrgrnrgrrrgrvrgr1cIiw2LFwi64OG64OKXCIsNSxcIuuDklwiXSxbXCI4NjYxXCIsXCLrg5Prg5Xrg5brg5frg5lcIiw2LFwi64Oh64Oi64Oj64Ok64OmXCIsMTBdLFtcIjg2ODFcIixcIuuDsVwiLDIyLFwi64SK64SN64SO64SP64SR64SU64SV64SW64SX64Sa64SeXCIsNCxcIuuEpuuEp+uEqeuEquuEq+uErVwiLDYsXCLrhLbrhLpcIiw1LFwi64WC64WD64WF64WG64WH64WJXCIsNixcIuuFkuuFk+uFluuFl+uFmeuFmuuFm+uFneuFnuuFn+uFoVwiLDIyLFwi64W664W764W964W+64W/64aB64aDXCIsNCxcIuuGiuuGjOuGjuuGj+uGkOuGkeuGleuGluuGl+uGmeuGmuuGm+uGnVwiXSxbXCI4NzQxXCIsXCLrhp5cIiw5LFwi64apXCIsMTVdLFtcIjg3NjFcIixcIuuGuVwiLDE4LFwi64eN64eO64eP64eR64eS64eT64eVXCJdLFtcIjg3ODFcIixcIuuHllwiLDUsXCLrh57rh6BcIiw3LFwi64eq64er64et64eu64ev64exXCIsNyxcIuuHuuuHvOuHvlwiLDUsXCLriIbriIfriInriIrriI1cIiw2LFwi64iW64iY64iaXCIsNSxcIuuIoVwiLDE4LFwi64i1XCIsNixcIuuIvVwiLDI2LFwi64mZ64ma64mb64md64me64mf64mhXCIsNixcIuuJqlwiLDRdLFtcIjg4NDFcIixcIuuJr1wiLDQsXCLribZcIiw1LFwi64m9XCIsNixcIuuKhuuKh+uKiOuKilwiLDRdLFtcIjg4NjFcIixcIuuKj+uKkuuKk+uKleuKluuKl+uKm1wiLDQsXCLriqLriqTriqfriqjriqnriqvriq3riq7riq/rirHrirLrirPrirXrirbrirdcIl0sW1wiODg4MVwiLFwi64q4XCIsMTUsXCLri4rri4vri43ri47ri4/ri5Hri5NcIiw0LFwi64ua64uc64ue64uf64ug64uh64uj64un64up64uq64uw64ux64uy64u264u864u964u+64yC64yD64yF64yG64yH64yJXCIsNixcIuuMkuuMllwiLDUsXCLrjJ1cIiw1NCxcIuuNl+uNmeuNmuuNneuNoOuNoeuNouuNo1wiXSxbXCI4OTQxXCIsXCLrjabrjajrjarrjazrja3rja/rjbLrjbPrjbXrjbbrjbfrjblcIiw2LFwi646C646GXCIsNSxcIuuOjVwiXSxbXCI4OTYxXCIsXCLrjo7rjo/rjpHrjpLrjpPrjpVcIiwxMCxcIuuOolwiLDUsXCLrjqnrjqrrjqvrjq1cIl0sW1wiODk4MVwiLFwi646uXCIsMjEsXCLrj4brj4frj4nrj4rrj43rj4/rj5Hrj5Lrj5Prj5brj5jrj5rrj5zrj57rj5/rj6Hrj6Lrj6Prj6Xrj6brj6frj6lcIiwxOCxcIuuPvVwiLDE4LFwi65CRXCIsNixcIuuQmeuQmuuQm+uQneuQnuuQn+uQoVwiLDYsXCLrkKrrkKxcIiw3LFwi65C1XCIsMTVdLFtcIjhhNDFcIixcIuuRhVwiLDEwLFwi65GS65GT65GV65GW65GX65GZXCIsNixcIuuRouuRpOuRplwiXSxbXCI4YTYxXCIsXCLrkadcIiw0LFwi65GtXCIsMTgsXCLrkoHrkoJcIl0sW1wiOGE4MVwiLFwi65KDXCIsNCxcIuuSiVwiLDE5LFwi65KeXCIsNSxcIuuSpeuSpuuSp+uSqeuSquuSq+uSrVwiLDcsXCLrkrbrkrjrkrpcIiw1LFwi65OB65OC65OD65OF65OG65OH65OJXCIsNixcIuuTkeuTkuuTk+uTlOuTllwiLDUsXCLrk57rk5/rk6Hrk6Lrk6Xrk6dcIiw0LFwi65Ou65Ow65OyXCIsNSxcIuuTuVwiLDI2LFwi65SW65SX65SZ65Sa65SdXCJdLFtcIjhiNDFcIixcIuuUnlwiLDUsXCLrlKbrlKtcIiw0LFwi65Sy65Sz65S165S265S365S5XCIsNixcIuuVguuVhlwiXSxbXCI4YjYxXCIsXCLrlYfrlYjrlYnrlYrrlY7rlY/rlZHrlZLrlZPrlZVcIiw2LFwi65We65WiXCIsOF0sW1wiOGI4MVwiLFwi65WrXCIsNTIsXCLrlqLrlqPrlqXrlqbrlqfrlqnrlqzrlq3rlq7rlq/rlrLrlrZcIiw0LFwi65a+65a/65eB65eC65eD65eFXCIsNixcIuuXjuuXklwiLDUsXCLrl5lcIiwxOCxcIuuXrVwiLDE4XSxbXCI4YzQxXCIsXCLrmIBcIiwxNSxcIuuYkuuYk+uYleuYluuYl+uYmVwiLDRdLFtcIjhjNjFcIixcIuuYnlwiLDYsXCLrmKZcIiw1LFwi65itXCIsNixcIuuYtVwiLDVdLFtcIjhjODFcIixcIuuYu1wiLDEyLFwi65mJXCIsMjYsXCLrmaXrmabrmafrmalcIiw1MCxcIuuanuuan+uaoeuaouuao+uapVwiLDUsXCLrmq3rmq7rmq/rmrDrmrJcIiwxNl0sW1wiOGQ0MVwiLFwi65uDXCIsMTYsXCLrm5VcIiw4XSxbXCI4ZDYxXCIsXCLrm55cIiwxNyxcIuubseubsuubs+ubteubtuubt+ubueubulwiXSxbXCI4ZDgxXCIsXCLrm7tcIiw0LFwi65yC65yD65yE65yGXCIsMzMsXCLrnKrrnKvrnK3rnK7rnLFcIiw2LFwi65y665y8XCIsNyxcIuudheudhuudh+udieudiuudi+udjVwiLDYsXCLrnZZcIiw5LFwi652h652i652j652l652m652n652pXCIsNixcIuudsuudtOudtlwiLDUsXCLrnb7rnb/rnoHrnoLrnoPrnoVcIiw2LFwi656O656T656U656V656a656b656d656eXCJdLFtcIjhlNDFcIixcIuuen+ueoVwiLDYsXCLrnqrrnq5cIiw1LFwi656265636565XCIsOF0sW1wiOGU2MVwiLFwi65+CXCIsNCxcIuufiOufilwiLDE5XSxbXCI4ZTgxXCIsXCLrn55cIiwxMyxcIuufruufr+ufseufsuufs+uftVwiLDYsXCLrn77roIJcIiw0LFwi66CK66CL66CN66CO66CP66CRXCIsNixcIuugmuugnOugnlwiLDUsXCLroKbroKfroKnroKrroKvroK1cIiw2LFwi66C266C6XCIsNSxcIuuhgeuhguuhg+uhhVwiLDExLFwi66GS66GUXCIsNyxcIuuhnuuhn+uhoeuhouuho+uhpVwiLDYsXCLroa7robDrobJcIiw1LFwi66G566G666G766G9XCIsN10sW1wiOGY0MVwiLFwi66KFXCIsNyxcIuuijlwiLDE3XSxbXCI4ZjYxXCIsXCLroqBcIiw3LFwi66KpXCIsNixcIuuiseuisuuis+uiteuituuit+uiuVwiLDRdLFtcIjhmODFcIixcIuuivuuiv+ujguujhOujhlwiLDUsXCLro43ro47ro4/ro5Hro5Lro5Pro5VcIiw3LFwi66Oe66Og66OiXCIsNSxcIuujquujq+ujreujruujr+ujsVwiLDYsXCLro7rro7zro75cIiw1LFwi66SFXCIsMTgsXCLrpJlcIiw2LFwi66ShXCIsMjYsXCLrpL7rpL/rpYHrpYLrpYPrpYVcIiw2LFwi66WN66WO66WQ66WSXCIsNV0sW1wiOTA0MVwiLFwi66Wa66Wb66Wd66We66Wf66WhXCIsNixcIuulquulrOulrlwiLDUsXCLrpbbrpbfrpbnrpbrrpbvrpb1cIl0sW1wiOTA2MVwiLFwi66W+XCIsNSxcIuumhuumiOumi+umjOumj1wiLDE1XSxbXCI5MDgxXCIsXCLrpp9cIiwxMixcIuumruumr+umseumsuums+umtVwiLDYsXCLrpr7rp4Drp4JcIiw1LFwi66eK66eL66eN66eTXCIsNCxcIuunmuunnOunn+unoOunouunpuunp+unqeunquunq+unrVwiLDYsXCLrp7brp7tcIiw0LFwi66iCXCIsNSxcIuuoiVwiLDExLFwi66iWXCIsMzMsXCLrqLrrqLvrqL3rqL7rqL/rqYHrqYPrqYTrqYXrqYZcIl0sW1wiOTE0MVwiLFwi66mH66mK66mM66mP66mQ66mR66mS66mW66mX66mZ66ma66mb66mdXCIsNixcIuuppuupqlwiLDVdLFtcIjkxNjFcIixcIuupsuups+upteuptuupt+upuVwiLDksXCLrqobrqojrqonrqorrqovrqo1cIiw1XSxbXCI5MTgxXCIsXCLrqpNcIiwyMCxcIuuqquuqreuqruuqr+uqseuqs1wiLDQsXCLrqrrrqrzrqr5cIiw1LFwi66uF66uG66uH66uJXCIsMTQsXCLrq5pcIiwzMyxcIuurveurvuurv+usgeusguusg+ushVwiLDcsXCLrrI7rrJDrrJJcIiw1LFwi66yZ66ya66yb66yd66ye66yf66yhXCIsNl0sW1wiOTI0MVwiLFwi66yo66yq66ysXCIsNyxcIuust+usueusuuusv1wiLDQsXCLrrYbrrYjrrYrrrYvrrYzrrY7rrZHrrZJcIl0sW1wiOTI2MVwiLFwi662T662V662W662X662ZXCIsNyxcIuutouutpFwiLDcsXCLrra1cIiw0XSxbXCI5MjgxXCIsXCLrrbJcIiwyMSxcIuuuieuuiuuui+uujeuujuuuj+uukVwiLDE4LFwi666l666m666n666p666q666r666tXCIsNixcIuuuteuutuuuuFwiLDcsXCLrr4Hrr4Lrr4Prr4Xrr4brr4frr4lcIiw2LFwi66+R66+S66+UXCIsMzUsXCLrr7rrr7vrr73rr77rsIFcIl0sW1wiOTM0MVwiLFwi67CDXCIsNCxcIuuwiuuwjuuwkOuwkuuwk+uwmeuwmuuwoOuwoeuwouuwo+uwpuuwqOuwquuwq+uwrOuwruuwr+uwsuuws+uwtVwiXSxbXCI5MzYxXCIsXCLrsLbrsLfrsLlcIiw2LFwi67GC67GG67GH67GI67GK67GL67GO67GP67GRXCIsOF0sW1wiOTM4MVwiLFwi67Ga67Gb67Gc67GeXCIsMzcsXCLrsobrsofrsonrsorrso3rso9cIiw0LFwi67KW67KY67KbXCIsNCxcIuuyouuyo+uypeuypuuyqVwiLDYsXCLrsrLrsrZcIiw1LFwi67K+67K/67OB67OC67OD67OFXCIsNyxcIuuzjuuzkuuzk+uzlOuzluuzl+uzmeuzmuuzm+uznVwiLDIyLFwi67O367O567O667O767O9XCJdLFtcIjk0NDFcIixcIuuzvlwiLDUsXCLrtIbrtIjrtIpcIiw1LFwi67SR67SS67ST67SVXCIsOF0sW1wiOTQ2MVwiLFwi67SeXCIsNSxcIuu0pVwiLDYsXCLrtK1cIiwxMl0sW1wiOTQ4MVwiLFwi67S6XCIsNSxcIuu1gVwiLDYsXCLrtYrrtYvrtY3rtY7rtY/rtZFcIiw2LFwi67WaXCIsOSxcIuu1peu1puu1p+u1qVwiLDIyLFwi67aC67aD67aF67aG67aLXCIsNCxcIuu2kuu2lOu2luu2l+u2mOu2m+u2nVwiLDYsXCLrtqVcIiwxMCxcIuu2sVwiLDYsXCLrtrlcIiwyNF0sW1wiOTU0MVwiLFwi67eS67eT67eW67eX67eZ67ea67eb67edXCIsMTEsXCLrt6pcIiw1LFwi67exXCJdLFtcIjk1NjFcIixcIuu3suu3s+u3teu3tuu3t+u3uVwiLDYsXCLruIHruILruITruIZcIiw1LFwi67iO67iP67iR67iS67iTXCJdLFtcIjk1ODFcIixcIuu4lVwiLDYsXCLruJ7ruKBcIiwzNSxcIuu5huu5h+u5ieu5iuu5i+u5jeu5j1wiLDQsXCLruZbruZjruZzruZ3ruZ7ruZ/ruaLruaPruaXruabruafruanruatcIiw0LFwi67my67m2XCIsNCxcIuu5vuu5v+u6geu6guu6g+u6hVwiLDYsXCLruo7rupJcIiw1LFwi67qaXCIsMTMsXCLruqlcIiwxNF0sW1wiOTY0MVwiLFwi67q4XCIsMjMsXCLru5Lru5NcIl0sW1wiOTY2MVwiLFwi67uV67uW67uZXCIsNixcIuu7oeu7ouu7plwiLDUsXCLru61cIiw4XSxbXCI5NjgxXCIsXCLru7ZcIiwxMCxcIuu8glwiLDUsXCLrvIpcIiwxMyxcIuu8muu8nlwiLDMzLFwi672C672D672F672G672H672JXCIsNixcIuu9kuu9k+u9lOu9llwiLDQ0XSxbXCI5NzQxXCIsXCLrvoNcIiwxNixcIuu+lVwiLDhdLFtcIjk3NjFcIixcIuu+nlwiLDE3LFwi676xXCIsN10sW1wiOTc4MVwiLFwi6765XCIsMTEsXCLrv4ZcIiw1LFwi67+O67+P67+R67+S67+T67+VXCIsNixcIuu/neu/nuu/oOu/olwiLDg5LFwi7IC97IC+7IC/XCJdLFtcIjk4NDFcIixcIuyBgFwiLDE2LFwi7IGSXCIsNSxcIuyBmeyBmuyBm1wiXSxbXCI5ODYxXCIsXCLsgZ3sgZ7sgZ/sgaFcIiw2LFwi7IGqXCIsMTVdLFtcIjk4ODFcIixcIuyBulwiLDIxLFwi7IKS7IKT7IKV7IKW7IKX7IKZXCIsNixcIuyCouyCpOyCplwiLDUsXCLsgq7sgrHsgrLsgrdcIiw0LFwi7IK+7IOC7IOD7IOE7IOG7IOH7IOK7IOL7ION7IOO7IOP7IORXCIsNixcIuyDmuyDnlwiLDUsXCLsg6bsg6fsg6nsg6rsg6vsg61cIiw2LFwi7IO27IO47IO6XCIsNSxcIuyEgeyEguyEg+yEheyEhuyEh+yEiVwiLDYsXCLshJHshJLshJPshJTshJZcIiw1LFwi7ISh7ISi7ISl7ISo7ISp7ISq7ISr7ISuXCJdLFtcIjk5NDFcIixcIuyEsuyEs+yEtOyEteyEt+yEuuyEu+yEveyEvuyEv+yFgVwiLDYsXCLshYrshY5cIiw1LFwi7IWW7IWXXCJdLFtcIjk5NjFcIixcIuyFmeyFmuyFm+yFnVwiLDYsXCLshabshapcIiw1LFwi7IWx7IWy7IWz7IW17IW27IW37IW57IW67IW7XCJdLFtcIjk5ODFcIixcIuyFvFwiLDgsXCLshoZcIiw1LFwi7IaP7IaR7IaS7IaT7IaV7IaXXCIsNCxcIuyGnuyGoOyGouyGo+yGpOyGpuyGp+yGquyGq+yGreyGruyGr+yGsVwiLDExLFwi7Ia+XCIsNSxcIuyHheyHhuyHh+yHieyHiuyHi+yHjVwiLDYsXCLsh5Xsh5bsh5lcIiw2LFwi7Ieh7Iei7Iej7Iel7Iem7Ien7IepXCIsNixcIuyHsuyHtFwiLDcsXCLsh77sh7/siIHsiILsiIPsiIVcIiw2LFwi7IiO7IiQ7IiSXCIsNSxcIuyImuyIm+yIneyInuyIoeyIouyIo1wiXSxbXCI5YTQxXCIsXCLsiKTsiKXsiKbsiKfsiKrsiKzsiK7siLDsiLPsiLVcIiwxNl0sW1wiOWE2MVwiLFwi7ImG7ImH7ImJXCIsNixcIuyJkuyJk+yJleyJluyJl+yJmVwiLDYsXCLsiaHsiaLsiaPsiaTsiaZcIl0sW1wiOWE4MVwiLFwi7ImnXCIsNCxcIuyJruyJr+yJseyJsuyJs+yJtVwiLDYsXCLsib7sioDsioJcIiw1LFwi7IqKXCIsNSxcIuyKkVwiLDYsXCLsipnsiprsipzsip5cIiw1LFwi7Iqm7Iqn7Iqp7Iqq7Iqr7IquXCIsNSxcIuyKtuyKuOyKulwiLDMzLFwi7Iue7Iuf7Iuh7Iui7IulXCIsNSxcIuyLruyLsOyLsuyLs+yLtOyLteyLt+yLuuyLveyLvuyLv+yMgVwiLDYsXCLsjIrsjIvsjI7sjI9cIl0sW1wiOWI0MVwiLFwi7IyQ7IyR7IyS7IyW7IyX7IyZ7Iya7Iyb7IydXCIsNixcIuyMpuyMp+yMqlwiLDhdLFtcIjliNjFcIixcIuyMs1wiLDE3LFwi7I2GXCIsN10sW1wiOWI4MVwiLFwi7I2OXCIsMjUsXCLsjarsjavsja3sja7sja/sjbHsjbNcIiw0LFwi7I267I277I2+XCIsNSxcIuyOheyOhuyOh+yOieyOiuyOi+yOjVwiLDUwLFwi7I+BXCIsMjIsXCLsj5pcIl0sW1wiOWM0MVwiLFwi7I+b7I+d7I+e7I+h7I+jXCIsNCxcIuyPquyPq+yPrOyPrlwiLDUsXCLsj7bsj7fsj7lcIiw1XSxbXCI5YzYxXCIsXCLsj79cIiw4LFwi7JCJXCIsNixcIuyQkVwiLDldLFtcIjljODFcIixcIuyQm1wiLDgsXCLskKVcIiw2LFwi7JCt7JCu7JCv7JCx7JCy7JCz7JC1XCIsNixcIuyQvlwiLDksXCLskYlcIiwyNixcIuyRpuyRp+yRqeyRquyRq+yRrVwiLDYsXCLskbbskbfskbjskbpcIiw1LFwi7JKBXCIsMTgsXCLskpVcIiw2LFwi7JKdXCIsMTJdLFtcIjlkNDFcIixcIuySqlwiLDEzLFwi7JK57JK67JK77JK9XCIsOF0sW1wiOWQ2MVwiLFwi7JOGXCIsMjVdLFtcIjlkODFcIixcIuyToFwiLDgsXCLsk6pcIiw1LFwi7JOy7JOz7JO17JO27JO37JO57JO77JO87JO97JO+7JSCXCIsOSxcIuyUjeyUjuyUj+yUkeyUkuyUk+yUlVwiLDYsXCLslJ1cIiwxMCxcIuyUquyUq+yUreyUruyUr+yUsVwiLDYsXCLslLrslLzslL5cIiw1LFwi7JWG7JWH7JWL7JWP7JWQ7JWR7JWS7JWW7JWa7JWb7JWc7JWf7JWi7JWj7JWl7JWm7JWn7JWpXCIsNixcIuyVsuyVtlwiLDUsXCLslb7slb/sloHsloLsloPsloXslobslojslonslorslovslo7slpDslpLslpPslpRcIl0sW1wiOWU0MVwiLFwi7JaW7JaZ7Jaa7Jab7Jad7Jae7Jaf7JahXCIsNyxcIuyWqlwiLDksXCLslrZcIl0sW1wiOWU2MVwiLFwi7Ja37Ja67Ja/XCIsNCxcIuyXi+yXjeyXj+yXkuyXk+yXleyXluyXl+yXmVwiLDYsXCLsl6Lsl6Tsl6bsl6dcIl0sW1wiOWU4MVwiLFwi7Jeo7Jep7Jeq7Jer7Jev7Jex7Jey7Jez7Je17Je47Je57Je67Je77JiC7JiD7JiE7JiJ7JiK7JiL7JiN7JiO7JiP7JiRXCIsNixcIuyYmuyYnVwiLDYsXCLsmKbsmKfsmKnsmKrsmKvsmK/smLHsmLLsmLbsmLjsmLrsmLzsmL3smL7smL/smYLsmYPsmYXsmYbsmYfsmYlcIiw2LFwi7JmS7JmWXCIsNSxcIuyZnuyZn+yZoVwiLDEwLFwi7Jmt7Jmu7Jmw7JmyXCIsNSxcIuyZuuyZu+yZveyZvuyZv+yagVwiLDYsXCLsmorsmozsmo5cIiw1LFwi7JqW7JqX7JqZ7Jqa7Jqb7JqdXCIsNixcIuyaplwiXSxbXCI5ZjQxXCIsXCLsmqjsmqpcIiw1LFwi7Jqy7Jqz7Jq17Jq27Jq37Jq7XCIsNCxcIuybguybhOybhlwiLDUsXCLsm45cIl0sW1wiOWY2MVwiLFwi7JuP7JuR7JuS7JuT7JuVXCIsNixcIuybnuybn+ybolwiLDUsXCLsm6rsm6vsm63sm67sm6/sm7Hsm7JcIl0sW1wiOWY4MVwiLFwi7JuzXCIsNCxcIuybuuybu+ybvOybvlwiLDUsXCLsnIbsnIfsnInsnIrsnIvsnI1cIiw2LFwi7JyW7JyY7JyaXCIsNSxcIuycouyco+ycpeycpuycp+ycqVwiLDYsXCLsnLLsnLTsnLbsnLjsnLnsnLrsnLvsnL7snL/snYHsnYLsnYPsnYVcIiw0LFwi7J2L7J2O7J2Q7J2Z7J2a7J2b7J2d7J2e7J2f7J2hXCIsNixcIuydqeydquydrFwiLDcsXCLsnbbsnbfsnbnsnbrsnbvsnb/snoDsnoHsnoLsnobsnovsnozsno3sno/snpLsnpPsnpXsnpnsnptcIiw0LFwi7J6i7J6nXCIsNCxcIuyeruyer+yeseyesuyes+yeteyetuyet1wiXSxbXCJhMDQxXCIsXCLsnrjsnrnsnrrsnrvsnr7sn4JcIiw1LFwi7J+K7J+L7J+N7J+P7J+RXCIsNixcIuyfmeyfmuyfm+yfnFwiXSxbXCJhMDYxXCIsXCLsn55cIiw1LFwi7J+l7J+m7J+n7J+p7J+q7J+r7J+tXCIsMTNdLFtcImEwODFcIixcIuyfu1wiLDQsXCLsoILsoIPsoIXsoIbsoIfsoInsoItcIiw0LFwi7KCS7KCU7KCXXCIsNCxcIuygnuygn+ygoeygouygo+ygpVwiLDYsXCLsoK7soLDsoLJcIiw1LFwi7KC57KC67KC77KC97KC+7KC/7KGBXCIsNixcIuyhiuyhi+yhjlwiLDUsXCLsoZVcIiwyNixcIuyhsuyhs+yhteyhtuyht+yhueyhu1wiLDQsXCLsooLsooTsoojsoonsoorsoo5cIiw1LFwi7KKVXCIsNyxcIuyinuyioOyiouyio+yipFwiXSxbXCJhMTQxXCIsXCLsoqXsoqbsoqfsoqlcIiwxOCxcIuyivuyiv+yjgOyjgVwiXSxbXCJhMTYxXCIsXCLso4Lso4Pso4Xso4bso4fso4nso4rso4vso41cIiw2LFwi7KOW7KOY7KOaXCIsNSxcIuyjouyjo+yjpVwiXSxbXCJhMTgxXCIsXCLso6ZcIiwxNCxcIuyjtlwiLDUsXCLso77so7/spIHspILspIPspIdcIiw0LFwi7KSO44CA44CB44CCwrfigKXigKbCqOOAg8Kt4oCV4oil77y84oi84oCY4oCZ4oCc4oCd44CU44CV44CIXCIsOSxcIsKxw5fDt+KJoOKJpOKJpeKInuKItMKw4oCy4oCz4oSD4oSr77+g77+h77+l4pmC4pmA4oig4oql4oyS4oiC4oiH4omh4omSwqfigLvimIbimIXil4vil4/il47il4fil4bilqHilqDilrPilrLilr3ilrzihpLihpDihpHihpPihpTjgJPiiariiaviiJriiL3iiJ3iiLXiiKviiKziiIjiiIviiobiiofiioLiioPiiKriiKniiKfiiKjvv6JcIl0sW1wiYTI0MVwiLFwi7KSQ7KSSXCIsNSxcIuykmVwiLDE4XSxbXCJhMjYxXCIsXCLspK1cIiw2LFwi7KS1XCIsMThdLFtcImEyODFcIixcIuyliFwiLDcsXCLspZLspZPspZXspZbspZfspZlcIiw2LFwi7KWi7KWkXCIsNyxcIuylreylruylr+KHkuKHlOKIgOKIg8K0772ey4fLmMudy5rLmcK4y5vCocK/y5DiiK7iiJHiiI/CpOKEieKAsOKXgeKXgOKWt+KWtuKZpOKZoOKZoeKZpeKZp+KZo+KKmeKXiOKWo+KXkOKXkeKWkuKWpOKWpeKWqOKWp+KWpuKWqeKZqOKYj+KYjuKYnOKYnsK24oCg4oCh4oaV4oaX4oaZ4oaW4oaY4pmt4pmp4pmq4pms44m/44ic4oSW44+H4oSi44+C44+Y4oSh4oKswq5cIl0sW1wiYTM0MVwiLFwi7KWx7KWy7KWz7KW1XCIsNixcIuylvVwiLDEwLFwi7KaK7KaL7KaN7KaO7KaPXCJdLFtcImEzNjFcIixcIuymkVwiLDYsXCLspprsppzspp5cIiwxNl0sW1wiYTM4MVwiLFwi7KavXCIsMTYsXCLsp4Lsp4Psp4Xsp4bsp4nsp4tcIiw0LFwi7KeS7KeU7KeX7KeY7Keb77yBXCIsNTgsXCLvv6bvvL1cIiwzMixcIu+/o1wiXSxbXCJhNDQxXCIsXCLsp57sp5/sp6Hsp6Psp6Xsp6bsp6jsp6nsp6rsp6vsp67sp7JcIiw1LFwi7Ke67Ke77Ke97Ke+7Ke/7KiB7KiC7KiD7KiEXCJdLFtcImE0NjFcIixcIuyoheyohuyoh+yoiuyojlwiLDUsXCLsqJXsqJbsqJfsqJlcIiwxMl0sW1wiYTQ4MVwiLFwi7Kim7Kin7Kio7KiqXCIsMjgsXCLjhLFcIiw5M10sW1wiYTU0MVwiLFwi7KmHXCIsNCxcIuypjuypj+ypkeypkuypk+yplVwiLDYsXCLsqZ7sqaJcIiw1LFwi7Kmp7KmqXCJdLFtcImE1NjFcIixcIuypq1wiLDE3LFwi7Km+XCIsNSxcIuyqheyqhlwiXSxbXCJhNTgxXCIsXCLsqodcIiwxNixcIuyqmVwiLDE0LFwi4oWwXCIsOV0sW1wiYTViMFwiLFwi4oWgXCIsOV0sW1wiYTVjMVwiLFwizpFcIiwxNixcIs6jXCIsNl0sW1wiYTVlMVwiLFwizrFcIiwxNixcIs+DXCIsNl0sW1wiYTY0MVwiLFwi7KqoXCIsMTksXCLsqr7sqr/sq4Hsq4Lsq4Psq4VcIl0sW1wiYTY2MVwiLFwi7KuGXCIsNSxcIuyrjuyrkOyrkuyrlOyrleyrluyrl+yrmlwiLDUsXCLsq6FcIiw2XSxbXCJhNjgxXCIsXCLsq6jsq6nsq6rsq6vsq61cIiw2LFwi7Ku1XCIsMTgsXCLsrInsrIrilIDilILilIzilJDilJjilJTilJzilKzilKTilLTilLzilIHilIPilI/ilJPilJvilJfilKPilLPilKvilLvilYvilKDilK/ilKjilLfilL/ilJ3ilLDilKXilLjilYLilJLilJHilJrilJnilJbilJXilI7ilI3ilJ7ilJ/ilKHilKLilKbilKfilKnilKrilK3ilK7ilLHilLLilLXilLbilLnilLrilL3ilL7ilYDilYHilYNcIiw3XSxbXCJhNzQxXCIsXCLsrItcIiw0LFwi7KyR7KyS7KyT7KyV7KyW7KyX7KyZXCIsNixcIuysolwiLDddLFtcImE3NjFcIixcIuysqlwiLDIyLFwi7K2C7K2D7K2EXCJdLFtcImE3ODFcIixcIuytheythuyth+ytiuyti+ytjeytjuytj+ytkVwiLDYsXCLsrZrsrZvsrZzsrZ5cIiw1LFwi7K2lXCIsNyxcIuOOleOOluOOl+KEk+OOmOOPhOOOo+OOpOOOpeOOpuOOmVwiLDksXCLjj4rjjo3jjo7jjo/jj4/jjojjjonjj4jjjqfjjqjjjrBcIiw5LFwi446AXCIsNCxcIuOOulwiLDUsXCLjjpBcIiw0LFwi4oSm44+A44+B446K446L446M44+W44+F446t446u446v44+b446p446q446r446s44+d44+Q44+T44+D44+J44+c44+GXCJdLFtcImE4NDFcIixcIuytrVwiLDEwLFwi7K26XCIsMTRdLFtcImE4NjFcIixcIuyuiVwiLDE4LFwi7K6dXCIsNl0sW1wiYTg4MVwiLFwi7K6kXCIsMTksXCLsrrlcIiwxMSxcIsOGw5DCqsSmXCJdLFtcImE4YTZcIixcIsSyXCJdLFtcImE4YThcIixcIsS/xYHDmMWSwrrDnsWmxYpcIl0sW1wiYThiMVwiLFwi44mgXCIsMjcsXCLik5BcIiwyNSxcIuKRoFwiLDE0LFwiwr3ihZPihZTCvMK+4oWb4oWc4oWd4oWeXCJdLFtcImE5NDFcIixcIuyvhVwiLDE0LFwi7K+VXCIsMTBdLFtcImE5NjFcIixcIuyvoOyvoeyvouyvo+yvpeyvpuyvqOyvqlwiLDE4XSxbXCJhOTgxXCIsXCLsr71cIiwxNCxcIuywjuywj+ywkeywkuywk+ywlVwiLDYsXCLssJ7ssJ/ssKDssKPssKTDpsSRw7DEp8SxxLPEuMWAxYLDuMWTw5/DvsWnxYvFieOIgFwiLDI3LFwi4pKcXCIsMjUsXCLikbRcIiwxNCxcIsK5wrLCs+KBtOKBv+KCgeKCguKCg+KChFwiXSxbXCJhYTQxXCIsXCLssKXssKbssKrssKvssK3ssK/ssLFcIiw2LFwi7LC67LC/XCIsNCxcIuyxhuyxh+yxieyxiuyxi+yxjeyxjlwiXSxbXCJhYTYxXCIsXCLssY9cIiw0LFwi7LGW7LGaXCIsNSxcIuyxoeyxouyxo+yxpeyxp+yxqVwiLDYsXCLssbHssbJcIl0sW1wiYWE4MVwiLFwi7LGz7LG07LG2XCIsMjksXCLjgYFcIiw4Ml0sW1wiYWI0MVwiLFwi7LKU7LKV7LKW7LKX7LKa7LKb7LKd7LKe7LKf7LKhXCIsNixcIuyyquyyrlwiLDUsXCLssrbssrfssrlcIl0sW1wiYWI2MVwiLFwi7LK67LK77LK9XCIsNixcIuyzhuyziOyzilwiLDUsXCLss5Hss5Lss5Pss5VcIiw1XSxbXCJhYjgxXCIsXCLss5tcIiw4LFwi7LOlXCIsNixcIuyzreyzruyzr+yzsVwiLDEyLFwi44KhXCIsODVdLFtcImFjNDFcIixcIuyzvuyzv+y0gOy0glwiLDUsXCLstIrstIvstI3stI7stI/stJFcIiw2LFwi7LSa7LSc7LSe7LSf7LSgXCJdLFtcImFjNjFcIixcIuy0oey0ouy0o+y0pey0puy0p+y0qey0quy0q+y0rVwiLDExLFwi7LS6XCIsNF0sW1wiYWM4MVwiLFwi7LS/XCIsMjgsXCLstZ3stZ7stZ/QkFwiLDUsXCLQgdCWXCIsMjVdLFtcImFjZDFcIixcItCwXCIsNSxcItGR0LZcIiwyNV0sW1wiYWQ0MVwiLFwi7LWh7LWi7LWj7LWlXCIsNixcIuy1ruy1sOy1slwiLDUsXCLstblcIiw3XSxbXCJhZDYxXCIsXCLstoFcIiw2LFwi7LaJXCIsMTAsXCLstpbstpfstpnstprstpvstp3stp7stp9cIl0sW1wiYWQ4MVwiLFwi7Lag7Lah7Lai7Laj7Lam7Lao7LaqXCIsNSxcIuy2sVwiLDE4LFwi7LeFXCJdLFtcImFlNDFcIixcIuy3hlwiLDUsXCLst43st47st4/st5FcIiwxNl0sW1wiYWU2MVwiLFwi7LeiXCIsNSxcIuy3qey3quy3q+y3rey3ruy3r+y3sVwiLDYsXCLst7rst7zst75cIiw0XSxbXCJhZTgxXCIsXCLsuIPsuIXsuIbsuIfsuInsuIrsuIvsuI1cIiw2LFwi7LiV7LiW7LiX7LiY7LiaXCIsNSxcIuy4ouy4o+y4pey4puy4p+y4qey4quy4q1wiXSxbXCJhZjQxXCIsXCLsuKzsuK3suK7suK/suLLsuLTsuLZcIiwxOV0sW1wiYWY2MVwiLFwi7LmKXCIsMTMsXCLsuZrsuZvsuZ3suZ7suaJcIiw1LFwi7Lmq7LmsXCJdLFtcImFmODFcIixcIuy5rlwiLDUsXCLsubbsubfsubnsubrsubvsub1cIiw2LFwi7LqG7LqI7LqKXCIsNSxcIuy6kuy6k+y6ley6luy6l+y6mVwiXSxbXCJiMDQxXCIsXCLsuppcIiw1LFwi7Lqi7LqmXCIsNSxcIuy6rlwiLDEyXSxbXCJiMDYxXCIsXCLsurtcIiw1LFwi7LuCXCIsMTldLFtcImIwODFcIixcIuy7llwiLDEzLFwi7Lum7Lun7Lup7Luq7LutXCIsNixcIuy7tuy7ulwiLDUsXCLqsIDqsIHqsITqsIfqsIjqsInqsIrqsJBcIiw3LFwi6rCZXCIsNCxcIuqwoOqwpOqwrOqwreqwr+qwsOqwseqwuOqwueqwvOqxgOqxi+qxjeqxlOqxmOqxnOqxsOqxseqxtOqxt+qxuOqxuuqygOqygeqyg+qyhOqyheqyhuqyieqyiuqyi+qyjOqykOqylOqynOqyneqyn+qyoOqyoeqyqOqyqeqyquqyrOqyr+qysOqyuOqyueqyu+qyvOqyveqzgeqzhOqziOqzjOqzleqzl+qzoOqzoeqzpOqzp+qzqOqzquqzrOqzr+qzsOqzseqzs+qzteqztuqzvOqzveq0gOq0hOq0hlwiXSxbXCJiMTQxXCIsXCLsvILsvIPsvIXsvIbsvIfsvIlcIiw2LFwi7LyS7LyU7LyWXCIsNSxcIuy8ney8nuy8n+y8oey8ouy8o1wiXSxbXCJiMTYxXCIsXCLsvKVcIiw2LFwi7Lyu7LyyXCIsNSxcIuy8uVwiLDExXSxbXCJiMTgxXCIsXCLsvYVcIiwxNCxcIuy9luy9l+y9mey9muy9m+y9nVwiLDYsXCLsvabsvajsvarsvavsvazqtIzqtI3qtI/qtJHqtJjqtJzqtKDqtKnqtKzqtK3qtLTqtLXqtLjqtLzqtYTqtYXqtYfqtYnqtZDqtZTqtZjqtaHqtaPqtazqta3qtbDqtbPqtbTqtbXqtbbqtbvqtbzqtb3qtb/qtoHqtoLqtojqtonqtozqtpDqtpzqtp3qtqTqtrfqt4Dqt4Hqt4Tqt4jqt5Dqt5Hqt5Pqt5zqt6Dqt6Tqt7jqt7nqt7zqt7/quIDquIHquIjquInquIvquI3quJTquLDquLHquLTquLfquLjquLrquYDquYHquYPquYXquYbquYrquYzquY3quY7quZDquZTquZbquZzquZ3quZ/quaDquaHquaXquajquanquazqubDqubhcIl0sW1wiYjI0MVwiLFwi7L2t7L2u7L2v7L2y7L2z7L217L227L237L25XCIsNixcIuy+gey+guy+g+y+hOy+hlwiLDUsXCLsvo1cIl0sW1wiYjI2MVwiLFwi7L6OXCIsMTgsXCLsvqJcIiw1LFwi7L6pXCJdLFtcImIyODFcIixcIuy+qlwiLDUsXCLsvrFcIiwxOCxcIuy/hVwiLDYsXCLqubnqubvqubzqub3quoTquoXquozqurzqur3qur7qu4Dqu4Tqu4zqu43qu4/qu5Dqu5Hqu5jqu5nqu5zqu6jqu6vqu63qu7Tqu7jqu7zqvIfqvIjqvI3qvJDqvKzqvK3qvLDqvLLqvLTqvLzqvL3qvL/qvYHqvYLqvYPqvYjqvYnqvZDqvZzqvZ3qvaTqvaXqvbnqvoDqvoTqvojqvpDqvpHqvpXqvpzqvrjqvrnqvrzqv4Dqv4fqv4jqv4nqv4vqv43qv47qv5Tqv5zqv6jqv6nqv7Dqv7Hqv7Tqv7jrgIDrgIHrgITrgIzrgJDrgJTrgJzrgJ3rgKjrgYTrgYXrgYjrgYrrgYzrgY7rgZPrgZTrgZXrgZfrgZlcIl0sW1wiYjM0MVwiLFwi7L+MXCIsMTksXCLsv6Lsv6Psv6Xsv6bsv6fsv6lcIl0sW1wiYjM2MVwiLFwi7L+qXCIsNSxcIuy/suy/tOy/tlwiLDUsXCLsv73sv77sv7/tgIHtgILtgIPtgIVcIiw1XSxbXCJiMzgxXCIsXCLtgItcIiw1LFwi7YCSXCIsNSxcIu2AmVwiLDE5LFwi64Gd64G864G964KA64KE64KM64KN64KP64KR64KY64KZ64Ka64Kc64Kf64Kg64Kh64Ki64Ko64Kp64KrXCIsNCxcIuuCseuCs+uCtOuCteuCuOuCvOuDhOuDheuDh+uDiOuDieuDkOuDkeuDlOuDmOuDoOuDpeuEiOuEieuEi+uEjOuEkOuEkuuEk+uEmOuEmeuEm+uEnOuEneuEo+uEpOuEpeuEqOuErOuEtOuEteuEt+uEuOuEueuFgOuFgeuFhOuFiOuFkOuFkeuFlOuFleuFmOuFnOuFoOuFuOuFueuFvOuGgOuGguuGiOuGieuGi+uGjeuGkuuGk+uGlOuGmOuGnOuGqOuHjOuHkOuHlOuHnOuHnVwiXSxbXCJiNDQxXCIsXCLtgK5cIiw1LFwi7YC27YC37YC57YC67YC77YC9XCIsNixcIu2Bhu2BiO2BilwiLDVdLFtcImI0NjFcIixcIu2Bke2Bku2Bk+2Ble2Blu2Bl+2BmVwiLDYsXCLtgaFcIiwxMCxcIu2Bru2Br1wiXSxbXCJiNDgxXCIsXCLtgbHtgbLtgbPtgbVcIiw2LFwi7YG+7YG/7YKA7YKCXCIsMTgsXCLrh5/rh6jrh6nrh6zrh7Drh7nrh7vrh73riITriIXriIjriIvriIzriJTriJXriJfriJnriKDriLTriLzriZjriZzriaDriajrianribTribXribzrioTrioXrionripDripHripTripjripnriprriqDriqHriqPriqXriqbriqrriqzrirDrirTri4jri4nri4zri5Dri5Lri5jri5nri5vri53ri6Lri6Tri6Xri6bri6jri6tcIiw0LFwi64uz64u064u164u3XCIsNCxcIuuLv+uMgOuMgeuMhOuMiOuMkOuMkeuMk+uMlOuMleuMnOuNlOuNleuNluuNmOuNm+uNnOuNnuuNn+uNpOuNpVwiXSxbXCJiNTQxXCIsXCLtgpVcIiwxNCxcIu2Cpu2Cp+2Cqe2Cqu2Cq+2CrVwiLDVdLFtcImI1NjFcIixcIu2Cs+2Ctu2CuO2CulwiLDUsXCLtg4Ltg4Ptg4Xtg4btg4ftg4pcIiw1LFwi7YOS7YOWXCIsNF0sW1wiYjU4MVwiLFwi7YOb7YOe7YOf7YOh7YOi7YOj7YOlXCIsNixcIu2Dru2DslwiLDUsXCLtg7lcIiwxMSxcIuuNp+uNqeuNq+uNruuNsOuNseuNtOuNuOuOgOuOgeuOg+uOhOuOheuOjOuOkOuOlOuOoOuOoeuOqOuOrOuPhOuPheuPiOuPi+uPjOuPjuuPkOuPlOuPleuPl+uPmeuPm+uPneuPoOuPpOuPqOuPvOuQkOuQmOuQnOuQoOuQqOuQqeuQq+uQtOuRkOuRkeuRlOuRmOuRoOuRoeuRo+uRpeuRrOuSgOuSiOuSneuSpOuSqOuSrOuSteuSt+uSueuTgOuThOuTiOuTkOuTleuTnOuTneuToOuTo+uTpOuTpuuTrOuTreuTr+uTseuTuOuUlOuUleuUmOuUm+uUnOuUpOuUpeuUp+uUqOuUqeuUquuUsOuUseuUtOuUuFwiXSxbXCJiNjQxXCIsXCLthIVcIiw3LFwi7YSOXCIsMTddLFtcImI2NjFcIixcIu2EoFwiLDE1LFwi7YSy7YSz7YS17YS27YS37YS57YS77YS87YS97YS+XCJdLFtcImI2ODFcIixcIu2Ev+2Fgu2FhlwiLDUsXCLthY7thY/thZHthZLthZPthZVcIiw2LFwi7YWe7YWg7YWiXCIsNSxcIu2Fqe2Fqu2Fq+2FreuVgOuVgeuVg+uVhOuVheuVi+uVjOuVjeuVkOuVlOuVnOuVneuVn+uVoOuVoeuWoOuWoeuWpOuWqOuWquuWq+uWsOuWseuWs+uWtOuWteuWu+uWvOuWveuXgOuXhOuXjOuXjeuXj+uXkOuXkeuXmOuXrOuYkOuYkeuYlOuYmOuYpeuYrOuYtOuZiOuZpOuZqOuanOuaneuaoOuapOuaq+uarOuaseublOubsOubtOubuOucgOucgeucheucqOucqeucrOucr+ucsOucuOucueucu+udhOudiOudjOudlOudleudoOudpOudqOudsOudseuds+udteudvOudveuegOuehOuejOuejeuej+uekOuekeuekuueluuel1wiXSxbXCJiNzQxXCIsXCLtha5cIiwxMyxcIu2FvVwiLDYsXCLthoXthobthofthonthopcIl0sW1wiYjc2MVwiLFwi7YaLXCIsMjAsXCLthqLthqPthqXthqbthqdcIl0sW1wiYjc4MVwiLFwi7YapXCIsNixcIu2Gsu2GtO2Gtu2Gt+2GuO2Gue2Gu+2Gve2Gvu2Gv+2HgVwiLDE0LFwi656Y656Z656c656g656o656p656r656s656t65606561656465+H65+J65+s65+t65+w65+065+865+965+/66CA66CB66CH66CI66CJ66CM66CQ66CY66CZ66Cb66Cd66Ck66Cl66Co66Cs66C066C166C366C466C566GA66GE66GR66GT66Gc66Gd66Gg66Gk66Gs66Gt66Gv66Gx66G466G866KN66Ko66Kw66K066K466OA66OB66OD66OF66OM66OQ66OU66Od66Of66Oh66Oo66Op66Os66Ow66O466O566O766O966SE66SY66Sg66S866S966WA66WE66WM66WP66WR66WY66WZ66Wc66Wg66Wo66WpXCJdLFtcImI4NDFcIixcIu2HkFwiLDcsXCLth5lcIiwxN10sW1wiYjg2MVwiLFwi7YerXCIsOCxcIu2Hte2Htu2Ht+2HuVwiLDEzXSxbXCJiODgxXCIsXCLtiIjtiIpcIiw1LFwi7YiRXCIsMjQsXCLrpavrpa3rpbTrpbXrpbjrpbzrpoTrpoXrpofrponrporrpo3rpo7rpqzrpq3rprDrprTrprzrpr3rpr/rp4Hrp4jrp4nrp4zrp45cIiw0LFwi66eY66eZ66eb66ed66ee66eh66ej66ek66el66eo66es66e066e166e366e466e566e666iA66iB66iI66iV66i466i566i866mA66mC66mI66mJ66mL66mN66mO66mT66mU66mV66mY66mc66mk66ml66mn66mo66mp66mw66mx66m066m466qD66qE66qF66qH66qM66qo66qp66qr66qs66qw66qy66q466q566q766q966uE66uI66uY66uZ66u8XCJdLFtcImI5NDFcIixcIu2Iqu2Iq+2Iru2Ir+2Ise2Isu2Is+2ItVwiLDYsXCLtiL7tiYDtiYJcIiw1LFwi7YmJ7YmK7YmL7YmMXCJdLFtcImI5NjFcIixcIu2JjVwiLDE0LFwi7YmdXCIsNixcIu2Jpe2Jpu2Jp+2JqFwiXSxbXCJiOTgxXCIsXCLtialcIiwyMixcIu2Kgu2Kg+2Khe2Khu2Kh+2Kie2Kiu2Ki+2KjOusgOushOusjeusj+uskeusmOusnOusoOusqeusq+ustOusteustuusuOusu+usvOusveusvuuthOutheuth+utieutjeutj+utkOutlOutmOutoeuto+utrOuuiOuujOuukOuupOuuqOuurOuutOuut+uvgOuvhOuviOuvkOuvk+uvuOuvueuvvOuvv+uwgOuwguuwiOuwieuwi+uwjOuwjeuwj+uwkeuwlFwiLDQsXCLrsJtcIiw0LFwi67Ck67Cl67Cn67Cp67Ct67Cw67Cx67C067C467GA67GB67GD67GE67GF67GJ67GM67GN67GQ67Gd67KE67KF67KI67KL67KM67KO67KU67KV67KXXCJdLFtcImJhNDFcIixcIu2Kje2Kju2Kj+2Kku2Kk+2KlO2KllwiLDUsXCLtip3tip7tip/tiqHtiqLtiqPtiqVcIiw2LFwi7YqtXCJdLFtcImJhNjFcIixcIu2Kru2Kr+2KsO2KslwiLDUsXCLtirrtirvtir3tir7ti4Hti4NcIiw0LFwi7YuK7YuMXCIsNV0sW1wiYmE4MVwiLFwi7YuS7YuT7YuV7YuW7YuX7YuZ7Yua7Yub7YudXCIsNixcIu2LplwiLDksXCLti7Lti7Pti7Xti7bti7fti7nti7rrspnrsprrsqDrsqHrsqTrsqfrsqjrsrDrsrHrsrPrsrTrsrXrsrzrsr3rs4Drs4Trs43rs4/rs5Drs5Hrs5Xrs5jrs5zrs7Trs7Xrs7brs7jrs7zrtITrtIXrtIfrtInrtJDrtJTrtKTrtKzrtYDrtYjrtYnrtYzrtZDrtZjrtZnrtaTrtajrtoDrtoHrtoTrtofrtojrtonrtorrtpDrtpHrtpPrtpXrtpnrtprrtpzrtqTrtrDrtrjrt5Trt5Xrt5jrt5zrt6nrt7Drt7Trt7jruIDruIPruIXruIzruI3ruJDruJTruJzruJ3ruJ/ruYTruYXruYjruYzruY7ruZTruZXruZfruZnruZrruZvruaDruaHruaRcIl0sW1wiYmI0MVwiLFwi7Yu7XCIsNCxcIu2Mgu2MhO2MhlwiLDUsXCLtjI/tjJHtjJLtjJPtjJXtjJdcIiw0LFwi7Yye7Yyi7YyjXCJdLFtcImJiNjFcIixcIu2MpO2Mpu2Mp+2Mqu2Mq+2Mre2Mru2Mr+2MsVwiLDYsXCLtjLrtjL5cIiw1LFwi7Y2G7Y2H7Y2I7Y2JXCJdLFtcImJiODFcIixcIu2NilwiLDMxLFwi67mo67mq67mw67mx67mz67m067m167m767m867m967qA67qE67qM67qN67qP67qQ67qR67qY67qZ67qo67uQ67uR67uU67uX67uY67ug67uj67uk67ul67us67yB67yI67yJ67yY67yZ67yb67yc67yd672A672B672E672I672Q672R672V676U676w67+F67+M67+N67+Q67+U67+c67+f67+h7IC87IGR7IGY7IGc7IGg7IGo7IGp7IKQ7IKR7IKU7IKY7IKg7IKh7IKj7IKl7IKs7IKt7IKv7IKw7IKz7IK07IK17IK27IK87IK97IK/7IOA7IOB7IOF7IOI7IOJ7IOM7IOQ7IOY7IOZ7IOb7IOc7IOd7IOkXCJdLFtcImJjNDFcIixcIu2NqlwiLDE3LFwi7Y2+7Y2/7Y6B7Y6C7Y6D7Y6F7Y6G7Y6HXCJdLFtcImJjNjFcIixcIu2OiO2Oie2Oiu2Oi+2Oju2OklwiLDUsXCLtjprtjpvtjp3tjp7tjp/tjqFcIiw2LFwi7Y6q7Y6s7Y6uXCJdLFtcImJjODFcIixcIu2Or1wiLDQsXCLtjrXtjrbtjrftjrntjrrtjrvtjr1cIiw2LFwi7Y+G7Y+H7Y+KXCIsNSxcIu2PkVwiLDUsXCLsg6Xsg6jsg6zsg7Tsg7Xsg7fsg7nshIDshITshIjshJDshJXshJxcIiw0LFwi7ISj7ISk7ISm7ISn7ISs7ISt7ISv7ISw7ISx7IS27IS47IS57IS87IWA7IWI7IWJ7IWL7IWM7IWN7IWU7IWV7IWY7IWc7IWk7IWl7IWn7IWo7IWp7IWw7IW07IW47IaF7IaM7IaN7IaO7IaQ7IaU7IaW7Iac7Iad7Iaf7Iah7Ial7Iao7Iap7Ias7Iaw7Ia97IeE7IeI7IeM7IeU7IeX7IeY7Ieg7Iek7Ieo7Iew7Iex7Iez7Ie87Ie97IiA7IiE7IiM7IiN7IiP7IiR7IiY7IiZ7Iic7Iif7Iig7Iio7Iip7Iir7IitXCJdLFtcImJkNDFcIixcIu2Pl+2PmVwiLDcsXCLtj6Ltj6RcIiw3LFwi7Y+u7Y+v7Y+x7Y+y7Y+z7Y+17Y+27Y+3XCJdLFtcImJkNjFcIixcIu2PuO2Pue2Puu2Pu+2Pvu2QgO2QglwiLDUsXCLtkIlcIiwxM10sW1wiYmQ4MVwiLFwi7ZCXXCIsNSxcIu2QnlwiLDI1LFwi7Iiv7Iix7Iiy7Ii07ImI7ImQ7ImR7ImU7ImY7Img7Iml7Ims7Imt7Imw7Im07Im87Im97Im/7IqB7IqI7IqJ7IqQ7IqY7Iqb7Iqd7Iqk7Iql7Iqo7Iqs7Iqt7Iq07Iq17Iq37Iq57Iuc7Iud7Iug7Iuj7Iuk7Iur7Ius7Iut7Iuv7Iux7Iu27Iu47Iu57Iu77Iu87IyA7IyI7IyJ7IyM7IyN7IyT7IyU7IyV7IyY7Iyc7Iyk7Iyl7Iyo7Iyp7I2F7I2o7I2p7I2s7I2w7I2y7I247I257I287I297I6E7I6I7I6M7I+A7I+Y7I+Z7I+c7I+f7I+g7I+i7I+o7I+p7I+t7I+07I+17I+47JCI7JCQ7JCk7JCs7JCwXCJdLFtcImJlNDFcIixcIu2QuFwiLDcsXCLtkYHtkYLtkYPtkYVcIiwxNF0sW1wiYmU2MVwiLFwi7ZGUXCIsNyxcIu2Rne2Rnu2Rn+2Roe2Rou2Ro+2RpVwiLDcsXCLtka7tkbDtkbHtkbJcIl0sW1wiYmU4MVwiLFwi7ZGzXCIsNCxcIu2Ruu2Ru+2Rve2Rvu2Sge2Sg1wiLDQsXCLtkortkoztko5cIiw1LFwi7ZKVXCIsOCxcIuyQtOyQvOyQveyRiOyRpOyRpeyRqOyRrOyRtOyRteyRueySgOySlOySnOySuOySvOyTqeyTsOyTseyTtOyTuOyTuuyTv+yUgOyUgeyUjOyUkOyUlOyUnOyUqOyUqeyUrOyUsOyUuOyUueyUu+yUveyVhOyVheyViOyVieyViuyVjOyVjeyVjuyVk+yVlOyVleyVl+yVmOyVmeyVneyVnuyVoOyVoeyVpOyVqOyVsOyVseyVs+yVtOyVteyVvOyVveyWgOyWhOyWh+yWjOyWjeyWj+yWkeyWleyWl+yWmOyWnOyWoOyWqeyWtOyWteyWuOyWueyWu+yWvOyWveyWvuyXhFwiLDYsXCLsl4zsl45cIl0sW1wiYmY0MVwiLFwi7ZKeXCIsMTAsXCLtkqpcIiwxNF0sW1wiYmY2MVwiLFwi7ZK5XCIsMTgsXCLtk43tk47tk4/tk5Htk5Ltk5Ptk5VcIl0sW1wiYmY4MVwiLFwi7ZOWXCIsNSxcIu2Tne2Tnu2ToFwiLDcsXCLtk6ntk6rtk6vtk63tk67tk6/tk7FcIiw2LFwi7ZO57ZO67ZO87JeQ7JeR7JeU7JeY7Jeg7Jeh7Jej7Jel7Jes7Jet7Jeu7Jew7Je07Je27Je37Je8XCIsNSxcIuyYheyYhuyYh+yYiOyYjOyYkOyYmOyYmeyYm+yYnOyYpOyYpeyYqOyYrOyYreyYruyYsOyYs+yYtOyYteyYt+yYueyYu+yZgOyZgeyZhOyZiOyZkOyZkeyZk+yZlOyZleyZnOyZneyZoOyZrOyZr+yZseyZuOyZueyZvOyagOyaiOyaieyai+yajeyalOyaleyamOyanOyapOyapeyap+yaqeyasOyaseyatOyauOyaueyauuybgOybgeybg+ybheybjOybjeybkOyblOybnOybneyboOyboeybqFwiXSxbXCJjMDQxXCIsXCLtk75cIiw1LFwi7ZSF7ZSG7ZSH7ZSJ7ZSK7ZSL7ZSNXCIsNixcIu2Ulu2UmFwiLDVdLFtcImMwNjFcIixcIu2UnlwiLDI1XSxbXCJjMDgxXCIsXCLtlLjtlLntlLrtlLvtlL7tlL/tlYHtlYLtlYPtlYVcIiw2LFwi7ZWO7ZWQ7ZWSXCIsNSxcIu2Vmu2Vm+2Vne2Vnu2Vn+2Voe2Vou2Vo+ybqeybrOybsOybuOybueybveychOycheyciOycjOyclOycleycl+ycmeycoOycoeycpOycqOycsOycseycs+ycteyct+ycvOycveydgOydhOydiuydjOydjeydj+ydkVwiLDcsXCLsnZzsnaDsnajsnavsnbTsnbXsnbjsnbzsnb3snb7snoPsnoTsnoXsnofsnojsnonsnorsno7snpDsnpHsnpTsnpbsnpfsnpjsnprsnqDsnqHsnqPsnqTsnqXsnqbsnqzsnq3snrDsnrTsnrzsnr3snr/sn4Dsn4Hsn4jsn4nsn4zsn47sn5Dsn5jsn53sn6Tsn6jsn6zsoIDsoIHsoITsoIjsoIpcIl0sW1wiYzE0MVwiLFwi7ZWk7ZWm7ZWn7ZWq7ZWs7ZWuXCIsNSxcIu2Vtu2Vt+2Vue2Vuu2Vu+2VvVwiLDYsXCLtlobtlortlotcIl0sW1wiYzE2MVwiLFwi7ZaM7ZaN7ZaO7ZaP7ZaRXCIsMTksXCLtlqbtlqdcIl0sW1wiYzE4MVwiLFwi7ZaoXCIsMzEsXCLsoJDsoJHsoJPsoJXsoJbsoJzsoJ3soKDsoKTsoKzsoK3soK/soLHsoLjsoLzsoYDsoYjsoYnsoYzsoY3soZTsobDsobHsobTsobjsobrsooDsooHsooPsooXsoobsoofsoovsoozsoo3sopTsop3sop/soqHsoqjsorzsor3so4Tso4jso4zso5Tso5Xso5fso5nso6Dso6Hso6Tso7Xso7zso73spIDspITspIXspIbspIzspI3spI/spJHspJjspKzspLTspZDspZHspZTspZjspaDspaHspaPspazspbDspbTspbzspojsponspozsppDsppjsppnsppvspp3sp4Dsp4Hsp4Tsp4fsp4jsp4rsp5Dsp5Hsp5NcIl0sW1wiYzI0MVwiLFwi7ZeK7ZeL7ZeN7ZeO7ZeP7ZeR7ZeTXCIsNCxcIu2Xmu2XnO2XnlwiLDUsXCLtl6btl6ftl6ntl6rtl6vtl63tl65cIl0sW1wiYzI2MVwiLFwi7ZevXCIsNCxcIu2Xtu2XuO2XulwiLDUsXCLtmILtmIPtmIXtmIbtmIftmIlcIiw2LFwi7ZiSXCJdLFtcImMyODFcIixcIu2YllwiLDUsXCLtmJ3tmJ7tmJ/tmKHtmKLtmKPtmKVcIiw3LFwi7ZiuXCIsOSxcIu2Yuu2Yu+ynleynluynmeynmuynnOynneynoOynouynpOynp+ynrOynreynr+ynsOynseynuOynueynvOyogOyoiOyoieyoi+yojOyojeyolOyomOyoqeypjOypjeypkOyplOypnOypneypn+ypoOypoeypqOypveyqhOyqmOyqvOyqveyrgOyrhOyrjOyrjeyrj+yrkeyrk+yrmOyrmeyroOyrrOyrtOysiOyskOyslOysmOysoOysoeytgeytiOytieytjOytkOytmOytmeytneytpOytuOytueyunOyuuOyvlOyvpOyvp+yvqeywjOywjeywkOywlOywnOywneywoeywouywp+ywqOywqeywrOywruywsOywuOywueywu1wiXSxbXCJjMzQxXCIsXCLtmL3tmL7tmL/tmYHtmYLtmYPtmYTtmYbtmYftmYrtmYztmY7tmY/tmZDtmZLtmZPtmZbtmZftmZntmZrtmZvtmZ1cIiw0XSxbXCJjMzYxXCIsXCLtmaJcIiw0LFwi7Zmo7ZmqXCIsNSxcIu2Zsu2Zs+2ZtVwiLDExXSxbXCJjMzgxXCIsXCLtmoHtmoLtmoTtmoZcIiw1LFwi7ZqO7ZqP7ZqR7ZqS7ZqT7ZqVXCIsNyxcIu2anu2aoO2aolwiLDUsXCLtmqntmqrssLzssL3ssL7ssYTssYXssYjssYzssZTssZXssZfssZjssZnssaDssaTssabssajssbDssbXsspjsspnsspzssqDssqjssqnssqvssqzssq3ssrTssrXssrjssrzss4Tss4Xss4fss4nss5Dss5Tss6Tss6zss7DstIHstIjstInstIzstJDstJjstJnstJvstJ3stKTstKjstKzstLnstZzstaDstaTstazsta3sta/stbHstbjstojstpTstpXstpjstpzstqTstqXstqfstqnstrDst4Tst4zst5Dst6jst6zst7Dst7jst7nst7vst73suITsuIjsuIzsuJTsuJnsuKDsuKHsuKTsuKjsuLDsuLHsuLPsuLVcIl0sW1wiYzQ0MVwiLFwi7Zqr7Zqt7Zqu7Zqv7ZqxXCIsNyxcIu2auu2avFwiLDcsXCLtm4btm4ftm4ntm4rtm4tcIl0sW1wiYzQ2MVwiLFwi7ZuN7ZuO7ZuP7ZuQ7ZuS7ZuT7ZuV7ZuW7ZuY7ZuaXCIsNSxcIu2boe2bou2bo+2bpe2bpu2bp+2bqVwiLDRdLFtcImM0ODFcIixcIu2bru2br+2bse2bsu2bs+2btO2btlwiLDUsXCLtm77tm7/tnIHtnILtnIPtnIVcIiwxMSxcIu2cku2ck+2clOy5mOy5mey5nOy5n+y5oOy5oey5qOy5qey5q+y5rey5tOy5tey5uOy5vOy6hOy6hey6h+y6iey6kOy6key6lOy6mOy6oOy6oey6o+y6pOy6pey6rOy6rey7gey7pOy7pey7qOy7q+y7rOy7tOy7tey7t+y7uOy7uey8gOy8gey8hOy8iOy8kOy8key8k+y8ley8nOy8oOy8pOy8rOy8rey8r+y8sOy8sey8uOy9lOy9ley9mOy9nOy9pOy9pey9p+y9qey9sOy9sey9tOy9uOy+gOy+hey+jOy+oey+qOy+sOy/hOy/oOy/oey/pOy/qOy/sOy/sey/s+y/tey/vO2AgO2AhO2Ake2AmO2Are2AtO2Ate2AuO2AvFwiXSxbXCJjNTQxXCIsXCLtnJXtnJbtnJftnJrtnJvtnJ3tnJ7tnJ/tnKFcIiw2LFwi7Zyq7Zys7ZyuXCIsNSxcIu2ctu2ct+2cuVwiXSxbXCJjNTYxXCIsXCLtnLrtnLvtnL1cIiw2LFwi7Z2F7Z2G7Z2I7Z2KXCIsNSxcIu2dku2dk+2dle2dmlwiLDRdLFtcImM1ODFcIixcIu2dn+2dou2dpO2dpu2dp+2dqO2dqu2dq+2dre2dru2dr+2dse2dsu2ds+2dtVwiLDYsXCLtnb7tnb/tnoDtnoJcIiw1LFwi7Z6K7Z6L7YGE7YGF7YGH7YGJ7YGQ7YGU7YGY7YGg7YGs7YGt7YGw7YG07YG87YG97YKB7YKk7YKl7YKo7YKs7YK07YK17YK37YK57YOA7YOB7YOE7YOI7YOJ7YOQ7YOR7YOT7YOU7YOV7YOc7YOd7YOg7YOk7YOs7YOt7YOv7YOw7YOx7YO47YSN7YSw7YSx7YS07YS47YS67YWA7YWB7YWD7YWE7YWF7YWM7YWN7YWQ7YWU7YWc7YWd7YWf7YWh7YWo7YWs7YW87YaE7YaI7Yag7Yah7Yak7Yao7Yaw7Yax7Yaz7Ya17Ya67Ya87YeA7YeY7Ye07Ye47YiH7YiJ7YiQ7Yis7Yit7Yiw7Yi07Yi87Yi97Yi/7YmB7YmI7YmcXCJdLFtcImM2NDFcIixcIu2eje2eju2ej+2ekVwiLDYsXCLtnprtnpztnp5cIiw1XSxbXCJjNmExXCIsXCLtiaTtioDtioHtioTtiojtipDtipHtipXtipztiqDtiqTtiqztirHtirjtirntirztir/ti4Dti4Lti4jti4nti4vti5Tti5jti5zti6Tti6Xti7Dti7Hti7Tti7jtjIDtjIHtjIPtjIXtjIztjI3tjI7tjJDtjJTtjJbtjJztjJ3tjJ/tjKDtjKHtjKXtjKjtjKntjKztjLDtjLjtjLntjLvtjLztjL3tjYTtjYXtjbztjb3tjoDtjoTtjoztjo3tjo/tjpDtjpHtjpjtjpntjpztjqDtjqjtjqntjqvtjq3tjrTtjrjtjrztj4Ttj4Xtj4jtj4ntj5Dtj5jtj6Htj6Ptj6ztj63tj7Dtj7Ttj7ztj73tj7/tkIFcIl0sW1wiYzdhMVwiLFwi7ZCI7ZCd7ZGA7ZGE7ZGc7ZGg7ZGk7ZGt7ZGv7ZG47ZG57ZG87ZG/7ZKA7ZKC7ZKI7ZKJ7ZKL7ZKN7ZKU7ZKp7ZOM7ZOQ7ZOU7ZOc7ZOf7ZOo7ZOs7ZOw7ZO47ZO77ZO97ZSE7ZSI7ZSM7ZSU7ZSV7ZSX7ZS87ZS97ZWA7ZWE7ZWM7ZWN7ZWP7ZWR7ZWY7ZWZ7ZWc7ZWg7ZWl7ZWo7ZWp7ZWr7ZWt7ZW07ZW17ZW47ZW87ZaE7ZaF7ZaH7ZaI7ZaJ7ZaQ7Zal7ZeI7ZeJ7ZeM7ZeQ7ZeS7ZeY7ZeZ7Zeb7Zed7Zek7Zel7Zeo7Zes7Ze07Ze17Ze37Ze57ZiA7ZiB7ZiE7ZiI7ZiQ7ZiR7ZiT7ZiU7ZiV7Zic7ZigXCJdLFtcImM4YTFcIixcIu2YpO2Yre2YuO2Yue2YvO2ZgO2Zhe2ZiO2Zie2Zi+2Zje2Zke2ZlO2Zle2ZmO2ZnO2Zp+2Zqe2ZsO2Zse2ZtO2ag+2ahe2ajO2aje2akO2alO2ane2an+2aoe2aqO2arO2asO2aue2au+2bhO2bhe2biO2bjO2bke2blO2bl+2bme2boO2bpO2bqO2bsO2bte2bvO2bve2cgO2chO2cke2cmO2cme2cnO2coO2cqO2cqe2cq+2cre2ctO2cte2cuO2cvO2dhO2dh+2die2dkO2dke2dlO2dlu2dl+2dmO2dme2doO2doe2do+2dpe2dqe2drO2dsO2dtO2dvO2dve2ege2eiO2eie2ejO2ekO2emO2eme2em+2enVwiXSxbXCJjYWExXCIsXCLkvL3kvbPlgYflg7nliqDlj6/lkbXlk6XlmInlq4Hlrrbmmofmnrbmnrfmn6/mrYznj4Lnl4LnqLzoi5vojITooZfooojoqLbos4jot4/ou7vov6bpp5XliLvljbTlkITmgarmhaTmrrznj4/ohJroprrop5LplqPkvoPliIrlor7lpbjlp6blubLlubnmh4fmj4DmnYbmn6zmob/mvpfnmY7nnIvno7XnqIjnq7/nsKHogp3oia7oibHoq6vplpPkuavllp3mm7fmuLTnoqPnq63okZvopJDonY7pnqjli5jlnY7loKrltYzmhJ/mhr7miKHmlaLmn5HmqYTmuJvnlJjnlrPnm6PnnrDntLrpgq/pkZHpkZLpvpVcIl0sW1wiY2JhMVwiLFwi5Yyj5bKs55Sy6IOb6YmA6ZaY5Ymb5aCI5aec5bKh5bSX5bq35by65b2K5oW35rGf55W655aG57Og57Wz57ax576M6IWU6Iih6JaR6KWB6Kyb6Yu86ZmN6bGH5LuL5Lu35YCL5Yex5aGP5oS35oS+5oWo5pS55qeq5ryR55al55qG55uW566H6Iql6JOL76SA6Y6n6ZaL5ZaA5a6i5Z2R76SB57Kz57656Ya15YCo5Y675bGF5beo5ouS5o2u5pOa5pOn5rig54Ks56Wb6Led6Lie76SC6YG96YmF6Yu45Lm+5Lu25YGl5be+5bu65oSG5qWX6IWx6JmU6LmH6Y216air5Lme5YKR5p2w5qGA5YSJ5YqN5YqS5qqiXCJdLFtcImNjYTFcIixcIueevOmIkOm7lOWKq+aAr+i/suWBiOaGqeaPreaTiuagvOaqhOa/gOiGiOimoemalOWgheeJveeKrOeUhOe1uee5reiCqeimi+ittOmBo+m1keaKieaxuua9lOe1kOe8uuioo+WFvOaFiueuneismemJl+mOjOS6rOS/k+WAnuWCvuWEhuWLgeWLjeWNv+WdsOWig+W6muW+keaFtuaGrOaTjuaVrOaZr+aau+abtOail+a2h+eCheeDseeSn+eSpeeTiueXmeehrOejrOern+ertue1hee2k+iAleiAv+iEm+iOluitpui8lemAlemPoemgg+mguOmpmumvqOS/guWVk+WguuWlkeWto+WxhuaCuOaIkuahguaisFwiXSxbXCJjZGExXCIsXCLmo6jmuqrnlYznmbjno47nqL3ns7vnuavnubzoqIjoqqHosL/pmo7pt4Tlj6Tlj6nlkYrlkbHlm7rlp5HlraTlsLvluqvmi7fmlLfmlYXmlbLmmqDmnq/mp4Hmsr3nl7znmpDnnb7nqL/nvpTogIPogqHoho/oi6boi73oj7Dol4HooLHoorToqqXvpIPovpzpjK7pm4fpoafpq5jpvJPlk63mlpvmm7Lmoo/nqYDosLfptaDlm7DlnaTltJHmmIbmorHmo43mu77nkKjoop7pr6TmsajvpITpqqjkvpvlhazlhbHlip/lrZTlt6XmgZDmga3mi7HmjqfmlLvnj5nnqbromqPosqLpno/kuLLlr6HmiIjmnpznk5xcIl0sW1wiY2VhMVwiLFwi56eR6I+T6KqH6Kqy6Leo6YGO6Y2L6aGG5buT5qeo6Je/6YOt76SF5Yag5a6Y5a+s5oWj5qO65qy+54GM55Cv55OY566h572Q6I+F6KeA6LKr6Zec6aSo5Yiu5oGd5ous6YCC5L6K5YWJ5Yyh5aOZ5buj5pug5rS454Ka54uC54+W562Q6IOx6ZGb5Y2m5o6b572r5LmW5YKA5aGK5aOe5oCq5oSn5ouQ5qeQ6a2B5a6P57SY6IKx6L2f5Lqk5YOR5ZKs5Zas5ayM5bag5ben5pSq5pWO5qCh5qmL54uh55qO55+v57We57+56Iag6JWO6Juf6LyD6L2O6YOK6aSD6amV6a6r5LiY5LmF5Lmd5LuH5L+x5YW35Yu+XCJdLFtcImNmYTFcIixcIuWNgOWPo+WPpeWSjuWYlOWdteWeouWvh+W2h+W7kOaHvOaLmOaVkeaeuOafqeani+atkOavhuavrOaxgua6neeBuOeLl+eOlueQg+eev+efqeeptue1v+iAieiHvOiIheiIiuiLn+ihouiss+izvOi7gOmAkemCsemJpOmKtumnkumphemzqem3l+m+nOWci+WxgOiPiumeoOmeq+m6tOWQm+eqmOe+pOijmei7jemDoeWggOWxiOaOmOeqn+WuruW8k+epueeqruiKjui6rOWApuWIuOWLuOWNt+WciOaLs+aNsuasiua3g+ect+WOpeeNl+iVqOi5tumXleacuuarg+a9sOiprei7jOmli++khuaZt+atuOiytFwiXSxbXCJkMGExXCIsXCLprLzvpIflj6vlnK3lpY7mj4bmp7vnj6rnoYXnqrrnq4Xns77okbXopo/otbPpgLXplqjli7vlnYfnlYfnraDoj4zpiJ7vpIjmqZjlhYvliYvliofmiJ/mo5jmpbXpmpnlg4XliqTli6Tmh4PmlqTmoLnmp7/nkb7nrYvoirnoj6voprLorLnov5HppYnvpInku4rlppfmk5LmmJHmqo7nkLTnpoHnpr3oiqnoob7oob/opZ/vpIrpjKbkvIvlj4rmgKXmibHmsbLntJrntabkupjlhaLnn5zogq/kvIHkvI7lhbblhoDll5zlmajlnLvln7rln7zlpJTlpYflppPlr4TlspDltI7lt7Hlub7lv4zmioDml5fml6NcIl0sW1wiZDFhMVwiLFwi5pye5pyf5p2e5qOL5qOE5qmf5qy65rCj5rG95rKC5reH546Y55Cm55Cq55KC55Kj55W455W/56KB56Ov56WB56WH56WI56W6566V57SA57a6576I6ICG6ICt6IKM6KiY6K2P6LGI6LW36Yyh6Yyk6aOi6aWR6aiO6aiP6aml6bqS57eK5L225ZCJ5ouu5qGU6YeR5Zar5YS676SL76SM5aic5oem76SN5ouP5ou/76SOXCIsNSxcIumCo++klFwiLDQsXCLoq77vpJnvpJrvpJvvpJzmmpbvpJ3nhZbvpJ7vpJ/pm6PvpKDmjY/mjbrljZfvpKHmno/mpaDmubPvpKLnlLfvpKPvpKTvpKVcIl0sW1wiZDJhMVwiLFwi57SN76Sm76Sn6KGy5ZuK5aiY76SoXCIsNCxcIuS5g++kreWFp+WliOafsOiAkO+kruWls+W5tOaSmueniuW/teaBrOaLiOaNu+Wvp+Wvl+WKqu+kr+WltOW8qeaAku+ksO+kse+ksueRme+ks1wiLDUsXCLpp5HvpLlcIiwxMCxcIua/g++lhO+lheiGv+i+suaDse+lhu+lh+iFpu+liO+lieWwv++lilwiLDcsXCLlq6noqKXmnbvntJDvpZJcIiw1LFwi6IO976WY76WZ5bC85rOl5Yy/5rq65aSa6Iy2XCJdLFtcImQzYTFcIixcIuS4ueS6tuS9huWWruWcmOWjh+W9luaWt+aXpuaqgOautea5jeefreerr+ewnue3nuibi+iikumEsumNm+aSu+a+vueNuueWuOmBlOWVluWdjeaGuuaTlOabh+a3oea5m+a9rea+ueeXsOiBg+iGveiVgeimg+irh+itmumMn+ayk+eVk+etlOi4j+mBneWUkOWgguWhmOW5ouaIh+aSnuajoOeVtuezluies+m7qOS7o+WeiOWdruWkp+WwjeWyseW4tuW+heaItOaToeeOs+iHuuiii+iyuOmaium7m+WuheW+t+aCs+WAkuWIgOWIsOWcluWgteWhl+WwjuWxoOWztuW2i+W6puW+kuaCvOaMkeaOieaQl+ahg1wiXSxbXCJkNGExXCIsXCLmo7nmq4Lmt5jmuKHmu5Tmv6Tnh77nm5znnbnnprHnqLvokITopqnos63ot7PouYjpgIPpgJTpgZPpg73pjY3pmbbpn5zmr5LngIbniZjniqLnjajnnaPnpr/nr6TnupvoroDloqnmg4fmlabml73mmr7msoznhJ7nh4nosZrpoJPkua3nqoHku53lhqzlh43li5XlkIzmhqfmnbHmoZDmo5/mtJ7mvbznlrznnrPnq6Xog7TokaPpioXlhZzmlpfmnZzmnpPnl5jnq4fojbPvpZrosYbpgJfpoK3lsa/oh4DoiprpgYHpga/piI3lvpfltp3mqZnnh4jnmbvnrYnol6TorITphKfpqLDllofmh7bvpZvnmannvoVcIl0sW1wiZDVhMVwiLFwi6Ji/6J666KO46YKP76Wc5rSb54OZ54+e57Wh6JC976Wd6YWq6aex76We5LqC5Y215qyE5qyS54C+54ib6Jit6bie5YmM6L6j5bWQ5pOl5pSs5qyW5r+r57GD57qc6JeN6KWk6Ka95ouJ6IeY6KCf5buK5pyX5rWq54u855CF55Gv6J6C6YOe5L6G5bSN5b6g6JCK5Ya35o6g55Wl5Lqu5YCG5YWp5YeJ5qKB5qiR57Ku57Kx57On6Imv6KuS6Lyb6YeP5L625YS35Yu15ZGC5bus5oWu5oi+5peF5qua5r++56Sq6Jec6KCj6Zat6ami6amq6bqX6buO5Yqb5puG5q2354Cd56Sr6L2i6Z2C5oaQ5oiA5pSj5ryjXCJdLFtcImQ2YTFcIixcIueFieeSiee3tOiBr+iTrui8pumAo+mNiuWGveWIl+WKo+a0jOeDiOijguW7ieaWguaurua/guewvueNteS7pOS8tuWbue+ln+WyuuW2uuaAnOeOsuesree+mue/juiBhumAnumItOmbtumdiOmgmOm9oeS+i+a+p+emrumGtOmat+WLnu+loOaSiOaThOark+a9nueAmOeIkOebp+iAgeiYhuiZnOi3r+i8hemcsumtr+m3uum5teeijOelv+e2oOiPiemMhOm5v+m6k+irluWjn+W8hOacp+eAp+eTj+exoOiBvuWEoeeAqOeJouejiuizguizmuiztOmbt+S6huWDmuWvruW7luaWmeeHjueZgueereiBiuiTvFwiXSxbXCJkN2ExXCIsXCLpgbzprKfpvo3lo5jlqYHlsaLmqJPmt5rmvI/nmLvntK/nuLfolJ7opLjpj6TpmYvlionml5Lmn7PmprTmtYHmupzngI/nkInnkaDnlZnnmKTnoavorKzpoZ7lha3miK7pmbjkvpblgKvltJnmt6rntrjovKrlvovmhYTmoJfvpaHpmobli5Logovlh5zlh4zmpZ7nqJzntr7oj7HpmbXkv5rliKnljpjlkI/llI7lsaXmgqfmnY7moqjmtaznioHni7jnkIbnkoPvpaLnl6Lnsaznvbnnvrjojonoo4/oo6Hph4zph5Dpm6Lpr4nlkJ3mvb7nh5Dnkpjol7rouqrpmqPpsZfpup/mnpfmt4vnkLPoh6jpnJbnoKxcIl0sW1wiZDhhMVwiLFwi56uL56yg57KS5pGp55Gq55ey56K856Oo6aas6a2U6bq75a+e5bmV5ryg6Iac6I6r6YKI5LiH5Y2N5aip5beS5b2O5oWi5oy95pmp5pu85ru/5ryr54Gj556e6JCs6JST6KC76LyT6aWF6bC75ZSc5oq55pyr5rKr6IyJ6KWq6Z265Lqh5aaE5b+Y5b+Z5pyb57ay572U6IqS6Iyr6I696Lye6YKZ5Z+L5aa55aqS5a+Q5pin5p6a5qKF5q+P54Wk57216LK36LOj6YKB6a2F6ISI6LKK6ZmM6amA6bql5a2f5rCT54yb55uy55uf6JCM5Yaq6KaT5YWN5YaV5YuJ5qOJ5rKU55yE55yg57a/57es6Z2i6bq15ruFXCJdLFtcImQ5YTFcIixcIuiUkeWGpeWQjeWRveaYjuaaneakp+a6n+eav+eekeiMl+iTguien+mFqemKmOmztOiiguS+ruWGkuWLn+WnhuW4veaFleaRuOaRueaaruafkOaooeavjeavm+eJn+eJoeeRgeecuOefm+iAl+iKvOiMheisgOisqOiyjOacqOaykOeJp+ebruedpuephum2qeatv+aykuWkouacpuiSmeWNr+Wik+WmmeW7n+aPj+aYtOads+a4uueMq+erl+iLl+mMqOWLmeW3q+aGruaHi+aIiuaLh+aSq+aXoOalmeatpuavi+eEoeePt+eVnee5huiInuiMguiVquiqo+iyv+mcp+m1oeWiqOm7mOWAkeWIjuWQu+WVj+aWh1wiXSxbXCJkYWExXCIsXCLmsbbntIrntIvogZ7omorploDpm6/li7/mspXnianlkbPlqprlsL7ltYvlvYzlvq7mnKrmorbmpaPmuLzmuYTnnInnsbPnvo7oloforI7ov7fpnaHpu7TlsrfmgrbmhI3mhqvmlY/ml7vml7zmsJHms6/njp/nj4nnt6HplpTlr4bonJzorJDliZ3ljZrmi43mkI/mkrLmnLTmqLjms4rnj4Dnkp7nrpTnspXnuJvohoroiLboloTov6vpm7npp4HkvLTljYrlj43lj5vmi4zmkKzmlIDmlpHmp4Pms67mvZjnj63nlZTnmKLnm6Tnm7zno5Dno7vnpKzntYboiKzon6Dov5TpoJLpo6/li4Pmi5TmkqXmuKTmvZFcIl0sW1wiZGJhMVwiLFwi55m86LeL6Yax6Ymi6auu6a2D5YCj5YKN5Z2K5aao5bCo5bmH5b235oi/5pS+5pa55peB5piJ5p6L5qac5ruC56OF57Sh6IKq6IaA6Iir6Iqz6JKh6JqM6Kiq6KyX6YKm6Ziy6b6Q5YCN5L+z76Wj5Z+55b6Y5ouc5o6S5p2v5rmD54SZ55uD6IOM6IOa6KO06KO16KSZ6LOg6Lyp6YWN6Zmq5Lyv5L2w5bib5p+P5qCi55m955m+6a2E5bmh5qiK54Wp54eU55Wq76Wk57mB6JWD6Jep6aOc5LyQ562P572w6Zal5Yeh5biG5qK15rC+5rGO5rOb54qv56+E6IyD5rOV55C65YO75YqI5aOB5pOY5qqX55Kn55mWXCJdLFtcImRjYTFcIixcIueip+iYl+mXoumcue+lpeWNnuW8geiuiui+qOi+r+mCiuWIpeeepemxiem8iOS4meWAguWFteWxm+W5t+aYnuaYuuafhOajheeCs+eUgeeXheenieernei8p+mkoOmoiOS/neWgoeWgseWvtuaZruatpea0kea5uua9veePpOeUq+iPqeijnOikk+itnOi8lOS8j+WDleWMkOWNnOWuk+W+qeacjeemj+iFueiMr+iUlOikh+imhui8uei8u+mmpemwkuacrOS5tuS/uOWlieWwgeWzr+WzsOaNp+ajkueDveeGoueQq+e4q+iTrOicgumAoumLkumzs+S4jeS7mOS/r+WCheWJluWJr+WQpuWSkOWfoOWkq+WpplwiXSxbXCJkZGExXCIsXCLlrZrlrbXlr4zlupzvpabmibbmlbfmlqfmta7muqXniLbnrKbnsL/nvLbohZDohZHohproiYDoipnojqnoqIPosqDos6bos7votbTotrrpg6jph5zpmJzpmYTpp5nps6fljJfliIblkKnlmbTlorPlpZTlpa7lv7/mhqTmia7mmJDmsb7nhJrnm4bnsonns57ntJvoiqzos4Hpm7DvpafkvZvlvJflvb/mi4LltKnmnIvmo5rnobznuYPptazkuJXlgpnljJXljKrljZHlpoPlqaLluofmgrLmhormiYnmibnmlpDmnofmpqfmr5Tmr5bmr5fmr5jmsrjvpajnkLXnl7rnoJLnopHnp5Xnp5jnsoPnt4vnv6HogqVcIl0sW1wiZGVhMVwiLFwi6IS+6IeC6I+y6Jya6KOo6Kq56K2s6LK76YSZ6Z2e6aOb6by75Zqs5ayq5b2s5paM5qqz5q6v5rWc5r+x54CV54md546t6LKn6LOT6aC75oaR5rC36IGY6aiB5LmN5LqL5Lqb5LuV5Ly65Ly85L2/5L+f5YO/5Y+y5Y+45ZSG5Zej5Zub5aOr5aWi5aiR5a+r5a+65bCE5bez5bir5b6Z5oCd5o2o5pac5pav5p+25p+75qKt5q275rKZ5rOX5rij54CJ542F56CC56S+56WA56Wg56eB56+p57SX57Wy6IKG6IiN6I6O6JOR6JuH6KOf6KmQ6Kme6Kyd6LOc6LWm6L6t6YKq6aO86aef6bqd5YmK76Wp5pyU76WqXCJdLFtcImRmYTFcIixcIuWCmOWIquWxseaVo+axleePiueUo+eWneeul+iSnOmFuOmcsOS5t+aSkuauuueFnuiWqeS4ie+lq+adieajrua4l+iKn+iUmOihq+aPt+a+gemIkumir+S4iuWCt+WDj+WEn+WVhuWWquWYl+WtgOWwmeWzoOW4uOW6iuW6oOW7guaDs+ahkeapoea5mOeIveeJgOeLgOebuOelpeeusee/lOijs+intOips+ixoeiznumcnOWhnueSveizveWXh++lrOepoee0ouiJsueJsueUn+eUpe+lreesmeWiheWju+W2vOW6j+W6tuW+kOaBleaKkuaNv+aVjeaakeabmeabuOagluajsueKgOeRnuetrue1rue3lue9slwiXSxbXCJlMGExXCIsXCLog6XoiJLolq/opb/oqpPpgJ3pi6Tpu43pvKDlpJXlpa3luK3mg5zmmJTmmbPmnpDmsZDmt4XmvZ/nn7Pnoqnok4bph4vpjKvku5nlg4rlhYjlloTlrIvlrqPmiYfmlb7ml4vmuLLnhb3nkIHnkYTnkofnkr/nmaznpqrnt5rnuZXnvqjohbrohrPoiLnomJron6zoqbXot6PpgbjpipHpkKXppY3prq7ljajlsZHmpZTms4TmtKnmuKvoiIzolpvopLvoqK3oqqrpm6rpvafliaHmmrnmrrLnupbon77otI3ploPpmZ3mlJ3mtonnh67vpa7ln47lp5PlrqzmgKfmg7rmiJDmmJ/mmZ/njKnnj7nnm5vnnIHnraxcIl0sW1wiZTFhMVwiLFwi6IGW6IGy6IWl6Kqg6YaS5LiW5Yui5q2y5rSX56iF56y557Sw76Wv6LKw5Y+s5Ziv5aGR5a615bCP5bCR5bei5omA5o6D5pCU5pit5qKz5rK85raI5rqv54Cf54Kk54eS55Sm55aP55aO55iZ56yR56+g57Cr57Sg57S56JSs6JWt6JiH6Ki06YCN6YGh6YK16Yq36Z+26ai35L+X5bGs5p2f5raR57Kf57qM6KyW6LSW6YCf5a2r5be95pCN6JOA6YGc6aOh546H5a6L5oKa5p2+5ree6Kif6Kqm6YCB6aCM5Yi376Ww54GR56KO6Y6W6KGw6YeX5L+u5Y+X5Ze95Zua5Z6C5aO95auC5a6I5bKr5bOA5bil5oSBXCJdLFtcImUyYTFcIixcIuaIjeaJi+aOiOaQnOaUtuaVuOaoueauiuawtOa0mea8seeHp+eLqeeNuOeQh+eSsueYpuedoeengOepl+erqueyuee2j+e2rOe5oee+nuiEqeiMseiSkOiTmuiXquiiluiqsOiukOi8uOmBgumCg+mFrOmKlumKuemai+map+maqOmblumcgOmgiOmmlumrk+msmuWPlOWhvuWkmeWtsOWuv+a3kea9mueGn+eQoeeSueiCheiPveW3oeW+h+W+quaBguaXrOagkualr+apk+auiea0tea3s+ePo+ebvueerOetjee0lOiEo+iInOiNgOiTtOiVo+ipouirhOmGh+mMnumghummtOaIjOihk+i/sOmJpeW0h+W0p1wiXSxbXCJlM2ExXCIsXCLltannkZ/ohp3onajmv5Xmi77nv5LopLbopbLkuJ7kuZjlg6fli53ljYfmib/mmIfnuanooIXpmZ7kvo3ljJnlmLblp4vlqqTlsLjlsY7lsY3luILlvJHmgYPmlr3mmK/mmYLmnr7mn7TnjJznn6LnpLrnv4XokpTok43oppboqaboqanoq6HosZXosbrln7Tlr5TlvI/mga/mi63mpI3mrpbmuZznhoTnr5LonZXorZjou77po5/po77kvLjkvoHkv6HlkbvlqKDlrrjmhLzmlrDmmajnh7znlLPnpZ7ntLPohY7oh6Pojpjolqrol47onIPoqIrouqvovpvvpbHov4XlpLHlrqTlr6bmgonlr6nlsIvlv4PmsoFcIl0sW1wiZTRhMVwiLFwi76Wy5rex54CL55Sa6Iqv6Ku25LuA5Y2B76Wz6ZuZ5rCP5Lqe5L+E5YWS5ZWe5ail5bOo5oiR54mZ6Iq96I6q6Ju+6KGZ6Kid6Zi/6ZuF6aST6bSJ6bWd5aCK5bKz5ba95bmE5oOh5oSV5o+h5qiC5ril6YSC6Y2U6aGO6bCQ6b235a6J5bK45oyJ5pmP5qGI55y86ZuB6Z6N6aGU6a6f5pah6KyB6LuL6Za85ZS15bKp5beW5bq15pqX55mM6I+06ZeH5aOT5oq854uO6bSo5Luw5aSu5oCP5pi75q6D56en6bSm5Y6T5ZOA5Z+D5bSW5oSb5puW5rav56KN6Im+6ZqY6Z2E5Y6E5om85o6W5ray57iK6IWL6aGNXCJdLFtcImU1YTFcIixcIuaru+e9jOm2r+m4muS5n+WAu+WGtuWknOaDueaPtuaksOeIuuiAtu+ltOmHjuW8se+lte+ltue0hOiLpeiRr+iSu+iXpei6je+lt+S9r++luO+lueWjpOWtg+aBmeaPmuaUmOaVreaamO+luualiuaoo+a0i+eAgeeFrOeXkueYjeems+epsO+lu+e+iu+lvOilhO+lveiuk+mHgOmZve+lvumkiuWchOW+oeaWvOa8geeYgOempuiqnummremtmum9rOWEhOaGtuaKkeaqjeiHhuWBg+WgsOW9pueEieiogOiruuWtvOiYluS/uuWEvOWatOWlhOaOqea3ueW2qualreWGhuS6iOS9me+lv++mgO+mgeWmgu+mglwiXSxbXCJlNmExXCIsXCLvpoPmrZ/msZ3vpoTnkrXnpJbvpoXoiIfoiYXojLnovL/ovZ3vpobppJjvpofvpojvponkuqbvporln5/lvbnmmJPvpovvpoznlqvnubnora/vpo3pgIbpqZvlmqXloKflp7jlqJ/lrrTvpo7lu7bvpo/vppDmjZDmjLvvppHmpL3msofmsr/mto7mtpPmt7XmvJTvppLng5/nhLbnhZnvppPnh4Pnh5XvppTnoY/noa/vppXnrbXnt6PvppbnuK/vppfooY3ou5/vppjvppnvpprpiZvvppvps7bvppzvpp3vpp7mgoXmtoXvpp/nhrHvpqDvpqHplrHljq3vpqLvpqPvpqTmn5PvpqXngo7nhLDnkLDoibboi5JcIl0sW1wiZTdhMVwiLFwi76am6Za76aul6bm95puE76an54eB6JGJ76ao76ap5aGL76aq76ar5ba45b2x76as5pig5pqO5qW55qau5rC45rOz5ri25r2B5r+a54Cb54Cv54WQ54ef542w76at55Gb76au55OU55uI56mO57qT76av76aw6Iux6Kmg6L+O76ax6Y2I76ay6ZyZ76az76a05LmC5YCq76a15YiI5Y+h5puz5rGt5r+K54yK552/56mi6Iqu6Jed6JiC76a26KOU6Kmj6K296LGr76a36Yqz76a46ZyT6aCQ5LqU5LyN5L+J5YKy5Y2I5ZC+5ZCz5Zea5aGi5aK65aWn5aib5a+k5oKf76a55oeK5pWW5pe/5pmk5qKn5rGa5r6zXCJdLFtcImU4YTFcIixcIueDj+eGrOeNkuetveiciOiqpOmwsum8h+Wxi+ayg+eNhOeOiemIuua6q+eRpeeYn+epqee4leiYiuWFgOWjheaTgeeTrueUleeZsOe/gemClembjemllOa4pueTpueqqeeqquiHpeibmeiduOiom+WpieWujOWum+aioeakgOa1o+eOqeeQk+eQrOeil+e3qee/q+iEmOiFleiOnuixjOmYrumgkeabsOW+gOaXuuaeieaxqueOi+WAreWog+atquefruWkluW1rOW3jeeMpeeVj++muu+mu+WDpeWHueWgr+WkreWmluWnmuWvpe+mvO+mveW2ouaLl+aQluaSk+aTvu+mvuabnO+mv+apiO+ngOeHv+eRpO+ngVwiXSxbXCJlOWExXCIsXCLnqojnqq/nuYfnuZ7ogIDohbDvp4Lon6/opoHorKDpgZnvp4PpgoDppZLmhb7mrLLmtbTnuJ/opKXovrHkv5Hlgq3lhpfli4fln4floonlrrnlurjmhYLmppXmtozmuafmurbnhpTnkaLnlKjnlKzogbPojLjok4nouIrpjpTpj57vp4Tkuo7kvZHlgbblhKrlj4jlj4vlj7Plroflr5PlsKTmhJrmhoLml7TniZvnjpfnkYDnm4LnpZDnppHnprnntIbnvr3oiovol5XomZ7ov4LpgYfpg7Xph6rpmoXpm6jpm6nli5blvafml63mmLHmoK/nhZznqLbpg4HpoIrkupHvp4XmqZLmrp7mvpDnhonogJjoirjolZNcIl0sW1wiZWFhMVwiLFwi6YGL6ZqV6Zuy6Z+76JSa6ayx5LqQ54aK6ZuE5YWD5Y6f5ZOh5ZyT5ZyS5Z6j5aqb5auE5a+D5oCo5oS/5o+05rKF5rS55rmy5rqQ54iw54y/55GX6IuR6KKB6L2F6YGg76eG6Zmi6aGY6bSb5pyI6LaK6Yme5L2N5YGJ5YOe5Y2x5ZyN5aeU5aiB5bCJ5oWw5pqQ5rit54iy55GL57ev6IOD6JCO6JGm6JS/6J2f6KGb6KSY6KyC6YGV6Z+L6a2P5Lmz5L6R5YSS5YWq76eH5ZSv5Zap5a265a6l5bm85bm95bq+5oKg5oOf5oSI5oSJ5o+E5pS45pyJ76eI5p+U5p+a76eJ5qWh5qWi5rK55rSn76eK5ri476eLXCJdLFtcImViYTFcIixcIua/oeeMtueMt++njOeRnOeUse+njeeZku+nju+nj+e2reiHvuiQuOijleiqmOirm+irrei4sOi5gumBiumAvumBuumFiemHiemNru+nkO+nkeWgie+nkuavk+iCieiCsu+nk++nlOWFgeWlq+Wwue+nle+nlua9pOeOp+iDpOi0h++nl+mIl+mWj++nmO+nme+nmu+nm+iBv+aIjueAnOe1qOieje+nnOWeoOaBqeaFh+aut+iqvumKgOmaseS5meWQn+a3q+iUremZsOmfs+mjruaPluazo+mCkeWHneaHieiGuum3ueS+neWAmuWEgOWunOaEj+aHv+aTrOakheavheeWkeefo+e+qeiJpOiWj+ifu+iho+iqvFwiXSxbXCJlY2ExXCIsXCLorbDphqvkuozku6XkvIrvp53vp57lpLflp6jvp5/lt7LlvJvlvZvmgKHvp6Dvp6Hvp6Lvp6PniL7nj6Xvp6TnlbDnl43vp6Xnp7vvp6bogIzogLPogoToi6HojZHvp6fvp6josr3osrPpgofvp6nvp6rpo7TppIzvp6vvp6zngLfnm4rnv4rnv4znv7zorJrkurrku4HliIPljbDvp63lkr3lm6Dlp7vlr4XlvJXlv43mua7vp67vp6/ntarojLXvp7DompPoqo3vp7Hpna3pnbfvp7Lvp7PkuIDkvZrkvb7lo7nml6XmuqLpgLjpjrDpprnku7vlo6zlporlp5nmgYHvp7Tvp7XnqJTvp7bojY/os4PlhaXljYRcIl0sW1wiZWRhMVwiLFwi76e376e476e55LuN5Ymp5a2V6Iq/5LuU5Yi65ZKo5aeJ5ae/5a2Q5a2X5a2c5oGj5oWI5ruL54KZ54Wu546G55O355a156OB57Sr6ICF6Ieq6Iyo6JSX6JeJ6Kuu6LOH6ZuM5L2c5Yu65Zq85par5pio54G854K454i157a96IqN6YWM6ZuA6bWy5a2x5qOn5q6Y5r2655ue5bKR5pqr5r2b566057Cq6KC26Zuc5LiI5LuX5Yyg5aC05aK75aOv5aWs5bCH5biz5bqE5by15o6M5pqy5p2W5qif5qqj5qyM5ry/54mG76e6542Q55KL56ug57Kn6IW46Ief6Ien6I6K6JGs6JSj6JaU6JeP6KOd6LST6Yas6ZW3XCJdLFtcImVlYTFcIixcIumanOWGjeWTieWcqOWusOaJjeadkOagveaik+a4vea7k+eBvee4oeijgeiyoei8iem9i+m9jueIreeuj+irjemMmuS9h+S9juWEsuWSgOWnkOW6leaKteadtealruaol+ayrua4mueLmeeMqueWveeuuOe0teiLp+iPueiRl+iXt+ipm+iyr+i6h+mAmemCuOmbjum9n+WLo+WQiuWroeWvguaRmOaVtea7tOeLhO+nu+eahOepjeesm+exjee4vue/n+iNu+isq+iziui1pOi3oei5n+i/qui/uemBqemPkeS9g+S9uuWCs+WFqOWFuOWJjeWJquWhoeWhvOWloOWwiOWxleW7m+aCm+aIsOagk+auv+awiOa+sVwiXSxbXCJlZmExXCIsXCLnhY7nkKDnlLDnlLjnlZHnmbLnrYznrovnrq3nr4bnuo/oqa7ovL7ovYnpiL/pipPpjKLpkKvpm7vpoZrpoavppJ7liIfmiKrmipjmtZnnmaTnq4rnr4DntbbljaDlsr7lupfmvLjngrnnspjpnJHpro7pu57mjqXmkbronbbkuIHkupXkuq3lgZzlgbXlkYjlp4PlrprluYDluq3lu7flvoHmg4XmjLrmlL/mlbTml4zmmbbmmbjmn77mpajmqonmraPmsYDmt4Dmt6jmuJ/muZ7ngJ7ngqHnjo7nj73nlLrnnZvnoofnpo7nqIvnqb3nsr7nto7oiYfoqILoq6rosp7phK3phYrph5jpiabpi4zpjKDpnIbpnZZcIl0sW1wiZjBhMVwiLFwi6Z2c6aCC6byO5Yi25YqR5ZW85aCk5bid5byf5oKM5o+Q5qKv5r+f56Wt56ys6IeN6Ja66KO96Ku46LmE6YaN6Zmk6Zqb6Zy96aGM6b2K5L+O5YWG5YeL5Yqp5Ziy5byU5b2r5o6q5pON5pep5pmB5pu65pu55pyd5qKd5qOX5qe95ryV5r2u54Wn54el54iq55Kq55y656WW56Wa56ef56ig56qV57KX57Of57WE57mw6IKH6Je76Jqk6KmU6Kq/6LaZ6LqB6YCg6YGt6Yej6Zi76ZuV6bOl5peP57CH6Laz6Y+D5a2Y5bCK5Y2S5ouZ54yd5YCn5a6X5b6e5oKw5oWr5qOV5reZ55Cu56iu57WC57ac57ix6IWrXCJdLFtcImYxYTFcIixcIui4qui4temNvumQmOS9kOWdkOW3puW6p+aMq+e9quS4u+S9j+S+j+WBmuWnneiDhOWRquWRqOWXvuWlj+WumeW3nuW7muaZneacseafseagquazqOa0sua5iua+jeeCt+ePoOeWh+exjOe0gue0rOe2ouiIn+ibm+iou+iqhei1sOi6iui8s+mAsemFjumFkumRhOmnkOerueeypeS/iuWEgeWHhuWfiOWvr+Wzu+aZmeaovea1mua6lua/rOeEjOeVr+ero+igoumAoemBtembi+mnv+iMgeS4reS7suihhumHjeWNvearm+alq+axgeiRuuWinuaGjuabvuaLr+eDneeUkeeXh+e5kuiSuOitiei0iOS5i+WPqlwiXSxbXCJmMmExXCIsXCLlkqvlnLDlnYDlv5fmjIHmjIfmka/mlK/ml6jmmbrmnp3mnrPmraLmsaDmsprmvKznn6XnoKXnpYnnpZfntJnogqLohILoh7Poip3oirfonJjoqozvp7zotITotr7pgbLnm7TnqJnnqLfnuZTogbfllIfll5TlobXmjK/mkKLmmYnmmYvmoa3mppvmroTmtKXmurHnj43nkajnkqHnlZvnlrnnm6HnnJ7nnovnp6bnuInnuJ3oh7volK/oopfoqLros5Hou6vovrDpgLLpjq3pmaPpmbPpnIfkvoTlj7Hlp6rlq4nluJnmoY7nk4bnlr7np6nnqpLohqPom63os6rot4zov63mlp/mnJXvp73ln7fmvZfnt53ovK9cIl0sW1wiZjNhMVwiLFwi6Y+26ZuG5b615oey5r6E5LiU5L6Y5YCf5Y+J5Zef5bWv5beu5qyh5q2k56OL566a76e+6LmJ6LuK6YGu5o2J5pC+552A56qE6Yyv6ZG/6b2q5pKw5r6v54em55Ko55Oa56uE57CS57qC57Ky57qY6K6a6LSK6ZG96aSQ6aWM5Yi55a+f5pOm5pyt57Su5YOt5Y+D5aG55oWY5oWZ5oe65pas56uZ6K6S6K6W5YCJ5YCh5Ym15ZSx5ai85bug5b2w5oS05pWe5piM5pi25pqi5qeN5ruE5ryy54yW55ih56qT6IS56ImZ6I+W6JK85YK15Z+w5a+A5a+o5b2p5o6h56Cm57a16I+c6JSh6YeH6Ye15YaK5p+1562WXCJdLFtcImY0YTFcIixcIuiyrOWHhOWmu+aCveiZleWAnO+nv+WJlOWwuuaFveaImuaLk+aTsuaWpea7jOeYoOiEiui5oOmZn+mau+S7n+WNg+WWmOWkqeW3neaTheaziea3uueOlOepv+iIm+iWpuizpOi4kOmBt+mHp+mXoemYoemfhuWHuOWTsuWWhuW+ueaSpOa+iOe2tOi8n+i9jemQteWDieWwluayvua3u+eUm+eeu+ewveexpOipueirguWgnuWmvuW4luaNt+eJkueWiuedq+irnOiyvOi8kuW7s+aZtOa3uOiBveiPgeiri+mdkemvlu+ogOWJg+abv+a2lea7r+e3oOirpumArumBnumrlOWIneWJv+WTqOaGlOaKhOaLm+aiolwiXSxbXCJmNWExXCIsXCLmpJLmpZrmqLXngpLnhKbnoZ3npIHnpI7np5LnqI3ogpboibjoi5XojYnolYnosoLotoXphaLphovphq7kv4Plm5Hnh63nn5fonIDop7jlr7jlv5bmnZHpgqjlj6LloZrlr7XmgqTmhoHmkaDnuL3ogbDolKXpioPmkq7lgqzltJTmnIDlopzmir3mjqjmpI7mpbjmqJ7muavnmrrnp4voirvokKnoq4/otqjov73phJLphYvphpzpjJDpjJjpjprpm5vpqLbpsI3kuJHnlZznpZ3nq7rnrZHnr4nnuK7ok4TouZnoubTou7jpgJDmmKXmpL/nkYPlh7rmnK7pu5zlhYXlv6Dmspbon7LooZ3oobfmgrTohrXokINcIl0sW1wiZjZhMVwiLFwi6LSF5Y+W5ZC55Zi05ai25bCx54KK57+g6IGa6ISG6Iet6Laj6YaJ6amf6bey5YG05LuE5Y6g5oO75ris5bGk5L6I5YCk5Zek5bOZ5bmf5oGl5qKU5rK75reE54a+55eU55e055mh56ia56mJ57eH57e7572u6Ie06Jqp6Lyc6ZuJ6aaz6b2S5YmH5YuF6aOt6Kaq5LiD5p+S5ryG5L615a+i5p6V5rKI5rW455Cb56Cn6Yed6Y286J+E56ek56ix5b+r5LuW5ZKk5ZS+5aKu5aal5oOw5omT5ouW5py25qWV6Ii16ZmA6aax6aed5YCs5Y2T5ZWE5Z2876iB5omY76iC5pOi5pmr5p+d5r+B5r+v55Ci55C46KiXXCJdLFtcImY3YTFcIixcIumQuOWRkeWYhuWdpuW9iOaGmuatjueBmOeCree2u+iqleWlquiEq+aOoueciOiAveiyquWhlOaQreamu+WuleW4kea5r++og+iVqeWFjOWPsOWkquaAoOaFi+auhuaxsOazsOesnuiDjuiLlOi3humCsOmise+ohOaTh+a+pOaSkeaUhOWFjuWQkOWcn+iojuaFn+ahtu+oheeXm+etkue1semAmuWghuanjOiFv+ikqumAgOmgueWBuOWll+WmrOaKlemAj+msquaFneeJuemXluWdoeWphuW3tOaKiuaSreaTuuadt+azoua0vueIrOeQtuegtOe9t+iKrei3m+mgl+WIpOWdguadv+eJiOeTo+iyqei+pumIkVwiXSxbXCJmOGExXCIsXCLpmKrlhavlj63mjYzkvanllITmgpbmlZfmspvmtb/niYzni73nqJfopofosp3lva3mvo7ng7nohqjmhI7kvr/lgY/miYHniYfnr4fnt6jnv6npgY3pnq3pqJnosrblnarlubPmnrDokI3oqZXlkKDlrJbluaPlu6LlvIrmloPogrrolL3plonpmZvkvYjljIXljI3ljI/lkoblk7rlnIPluIPmgJbmipvmirHmjZXvqIbms6HmtabnlrHnoLLog57ohK/oi57okaHokrLooo3opJLpgIvpi6rpo73prpHluYXmmrTmm53ngJHniIbvqIfkv7Xlib3lvarmhZPmnZPmqJnmvILnk6Lnpajooajosbnpo4fpo4TpqYNcIl0sW1wiZjlhMVwiLFwi5ZOB56if5qWT6Ku36LGK6aKo6aau5b285oqr55ay55qu6KKr6YG/6ZmC5Yy55by85b+F5rOM54+M55Wi55aL562G6Iu+6aad5LmP6YC85LiL5L2V5Y6m5aSP5buI5piw5rKz55GV6I236J2m6LOA6YGQ6Zye6bCV5aOR5a246JmQ6KyU6ba05a+S5oGo5oKN5pex5rGX5ryi5r6j54Ca572V57+w6ZaR6ZaS6ZmQ6Z+T5Ymy6L2E5Ye95ZCr5ZK45ZWj5ZaK5qq75ra157eY6Imm6Yqc6Zm36bm55ZCI5ZOI55uS6Juk6Zak6ZeU6Zmc5Lqi5LyJ5aeu5aum5be35oGS5oqX5p2t5qGB5rKG5riv57y46IKb6IiqXCJdLFtcImZhYTFcIixcIu+oiO+oiemgheS6peWBleWSs+Wek+WlmuWtqeWus+aHiOalt+a1t+eAo+ifueino+ipsuirp+mCgumnremquOWKvuaguOWAluW5uOadj+iNh+ihjOS6q+WQkeWaruePpumElemfv+mkiemll+mmmeWZk+Win+iZm+ioseaGsuartueNu+i7kuath+maqumpl+WlleeIgOi1q+mdqeS/lOWztOW8puaHuOaZm+azq+eCq+eOhOeOueePvuecqeedjee1g+e1oue4o+iIt+ihku+oiuizoumJiemhr+WtkeeptOihgOmggeWrjOS/oOWNlOWkvuWzveaMvua1ueeLueiEheiEh+iOoumLj+mgsOS6qOWFhOWIkeWei1wiXSxbXCJmYmExXCIsXCLlvaLms4Lmu47ngIXngZDngq/nhpLnj6nnkanojYronqLooaHpgIjpgqLpjqPppqjlha7lvZfmg6DmhafmmrPolZnouYrphq/pnovkuY7kupLlkbzlo5Xlo7rlpb3lsrXlvKfmiLbmiYjmmIrmmafmr6vmtanmt4/muZbmu7jmvpTmv6Dmv6nngZ3ni5DnkKXnkZrnk6DnmpPnpZzns4rnuJ7og6Hoiqbokavokr/omY7omZ/onbTorbfosarpjqzpoIDpoaXmg5HmiJbphbflqZrmmI/mt7fmuL7nkL/prYLlv73mg5rnrI/lk4TlvJjmsZ7ms5PmtKrng5jntIXombnoqIzptLvljJblkozlrIXmqLrngavnlbVcIl0sW1wiZmNhMVwiLFwi56aN56a+6Iqx6I+v6Kmx6K2B6LKo6Z2076iL5pO05pSr56K656K756mr5Li45Zaa5aWQ5a6m5bm75oKj5o+b5q2h5pml5qGT5riZ54Wl55Kw57SI6YKE6amp6bCl5rS75ruR54y+6LGB6ZeK5Yew5bmM5b6o5oGN5oO25oSw5oWM5pmD5pmE5qal5rOB5rmf5ruJ5r2i54WM55Kc55qH56+B57Cn6I2S6J2X6YGR6ZqN6buD5Yyv5Zue5bu75b6K5oGi5oKU5oe35pmm5pyD5qqc5reu5r6u54Gw542q57mq6Ia+6Iy06JuU6Kqo6LOE5YqD542y5a6W5qmr6ZCE5ZOu5ZqG5a2d5pWI5paF5puJ5qKf5raN5reGXCJdLFtcImZkYTFcIixcIueIu+iCtOmFtempjeS+r+WAmeWOmuWQjuWQvOWWieWXheW4v+W+jOacveeFpuePnemAheWLm+WLs+WhpOWjjueEhOeGj+eHu+iWsOiok+aaiOiWqOWWp+aahOeFiuiQseWNieWWmeavgeW9meW+veaPruaaieeFh+irsei8nem6vuS8keaQuueDi+eVpuiZp+aBpOitjum3uOWFh+WHtuWMiOa0tuiDuOm7keaYleaso+eCmOeXleWQg+Wxuee0h+ioluasoOasveathuWQuOaBsOa0vee/leiIiOWDluWHnuWWnOWZq+WbjeWnrOWsieW4jOaGmeaGmOaIseaZnuabpueGmeeGueeGuueKp+emp+eogOe+suipsFwiXV1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdGFibGVzL2NwOTQ5Lmpzb25cbi8vIG1vZHVsZSBpZCA9IDE0N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IFtbXCI4NzQwXCIsXCLkj7DksLLkmIPklqbklbjwp4mn5LW35Jaz8KeyseSzovCns4XjrpXknLbknYTksYfksYDwpIq/8KOYl/CnjZLwprqL8KeDkuSxl/CqjZHknY/kl5rksoXwp7Gs5LSH5Kqk5Jqh8Kaso+eIpfClqZTwoamj8KO4hvCjvaHmmY3lm7tcIl0sW1wiODc2N1wiLFwi57aV5aSd8KiuueO3tOmctPCnr6/lr5vwobWe5aqk45il8Km6sOWrkeWut+WzvOadruiWk/CppYXnkaHnkp3jobXwobWT8KOanvCmgKHju6xcIl0sW1wiODdhMVwiLFwi8KWjnuOrteervOm+l/CkhaHwqKSN8KOHqvCgqorwo4me5IyK6JKE6b6W6ZCv5KSw6JiT5aKW6Z2K6YiY56eQ56iy5pmg5qip6KKd55GM56+F5p6C56is5YmP6YGG45Om54+E8KW2ueeThum/h+Wes+Skr+WRjOSEsfCjmo7loJjnqbLwp62l6K6P5Jqu8Ka6iOSGgfCltpnnrq7wopK86b+I8KKTgfCik4nwopOM6b+J6JSE8KOWu+SCtOm/iuSTofCqt7/mi4Hnga7pv4tcIl0sW1wiODg0MFwiLFwi44eAXCIsNCxcIvCghIzjh4XwoIOR8KCDjeOHhuOHh/Cgg4vwob+o44eI8KCDiuOHieOHiuOHi+OHjPCghI7jh43jh47EgMOBx43DgMSSw4nEmsOIxYzDk8eRw5Lgv7/DisyE4bq+4L+/w4rMjOG7gMOKxIHDoceOw6DJkcSTw6nEm8OoxKvDrceQw6zFjcOzx5LDssWrw7rHlMO5x5bHmMeaXCJdLFtcIjg4YTFcIixcIsecw7zgv7/DqsyE4bq/4L+/w6rMjOG7gcOqyaHij5rij5tcIl0sW1wiODk0MFwiLFwi8KqOqfChhYVcIl0sW1wiODk0M1wiLFwi5pSKXCJdLFtcIjg5NDZcIixcIuS4vea7nem1jumHn1wiXSxbXCI4OTRjXCIsXCLwp5y15pKR5Lya5Lyo5L6o5YWW5YW05Yac5Yek5Yqh5Yqo5Yy75Y2O5Y+R5Y+Y5Zui5aOw5aSE5aSH5aSy5aS05a2m5a6e5a6f5bKa5bqG5oC75paJ5p++5qCE5qGl5rWO54K855S157qk57qs57q657uH57uP57uf57yG57y36Im66IuP6I2v6KeG6K6+6K+i6L2m6L2n6L2uXCJdLFtcIjg5YTFcIixcIueQkeezvOe3jealhuerieWIp1wiXSxbXCI4OWFiXCIsXCLphoznorjphZ7ogrxcIl0sW1wiODliMFwiLFwi6LSL6IO28KCnp1wiXSxbXCI4OWI1XCIsXCLogp/pu4fks43pt4npuIzksL7wqbe28KeAjum4ivCqhLPjl4FcIl0sW1wiODljMVwiLFwi5rqa6Ii+55SZXCJdLFtcIjg5YzVcIixcIuSkkemprOmqj+m+meemh/CokazwobeK8KCXkPCiq6bkuKTkuoHkuoDkuofkur/ku6vkvLfjkYzkvr3juYjlgIPlgojjkb3jkpPjkqXlhoblpIXlh5vlh7zliIXkuonlibnlipDljKfjl4fljqnjlZHljrDjlZPlj4LlkKPjla3jlbLjmoHlkpPlkqPlkrTlkrnlk5Dlk6/llJjllKPllKjjlpjllL/jlqXjlr/ll5fjl4VcIl0sW1wiOGE0MFwiLFwi8Ke2hOWUpVwiXSxbXCI4YTQzXCIsXCLwoLGC8KC0lfClhKvllpDworOG46es8KCNgei5hvCktrjwqZOl5IGT8KiCvueduvCisLjjqLTkn5XwqIWd8KansvCkt6rmk53woLW88KC+tPCgs5XwoYO05pKN6Lm+8KC6lvCgsIvwoL2k8KKyqfCoiZbwpJOTXCJdLFtcIjhhNjRcIixcIvCgtYbwqamN8KiDqeSftPCkuqfworOC6aqy46mn8KmXtOO/reOUhvCli4fwqZ+U8KejiPCitYTpta7poJVcIl0sW1wiOGE3NlwiLFwi5I+Z8KaCpeaStOWTo/CitYzwoq+K8KGBt+Onu/Chga9cIl0sW1wiOGFhMVwiLFwi8KabmvCmnJbwp6ag5pOq8KWBkvCgsYPouajwooah8KitjPCgnLFcIl0sW1wiOGFhY1wiLFwi5KCL8KCGqeO/uuWhs/Cito1cIl0sW1wiOGFiMlwiLFwi8KSXiPCgk7zwpoKX8KC9jPCgtpbllbnkgrvkjrpcIl0sW1wiOGFiYlwiLFwi5Kq08KKppvChgp3ohqrpo7XwoLac5o2546e+8KKdtei3gOWaoeaRvOO5g1wiXSxbXCI4YWM5XCIsXCLwqpiB8KC4ifCiq4/worOJXCJdLFtcIjhhY2VcIixcIvChg4jwo6eC46aS46iG8KiKm+OVuPCluYnwooOH5ZmS8KC8sfCisrLwqZyg45K85rC98KS4u1wiXSxbXCI4YWRmXCIsXCLwp5W08KK6i/CiiIjwqpmb8KizjfCgubrwoLC08KagnOe+k/Chg4/woqCD8KKkueOXu/Clh6PwoLqM8KC+jfCguqrjvpPwoLyw8KC1h/ChhY/woLmMXCJdLFtcIjhhZjZcIixcIvCguqvwoK6p8KC1iPChg4DwoYS947+58KKaluaQsvCgvq1cIl0sW1wiOGI0MFwiLFwi8KOPtPCnmLnwoq+O8KC1vvCgtb/worGR8KKxleOomPCgupjwoYOH8KC8rvCqmLLwpq2Q8KizkvCotpnwqLOK6Zaq5ZOM6IuE5Za5XCJdLFtcIjhiNTVcIixcIvCpu4PpsKbpqrbwp52e8KK3rueFgOiFreiDrOWwnPCmlbLohLTjnpfljZ/wqIK96Ya28KC7uvCguI/woLm38KC7u+OXnfCkt6vjmInwoLOW5Zqv8KKetfChg4nwoLiQ8KC5uPChgbjwoYWI8KiIh/ChkZXwoLm58KS5kPCitqTlqZTwoYCd8KGAnvChg7XwoYO25Z6c8KC4kVwiXSxbXCI4YmExXCIsXCLwp5qU8KiLjfCgvrXwoLm78KWFvuOcg/CgvrbwoYaA8KWLmPCqir3wpKea8KGguvCkhbfwqIm85aKZ5Ymo45ia8KWcveeusuWtqOSggOSsrOm8p+Snp+mwn+mujfClrbTwo4S95Ze745ey5ZqJ5Lio5aSC8KGvgfCvobjpnZHwoIKG5Lmb5Lq745S+5bCj5b2R5b+E46O65omM5pS15q265rC15rC654Gs54ir5Lis54qt8KSjqee9kueku+ezuee9k/Cmiarjk4FcIl0sW1wiOGJkZVwiLFwi8KaNi+iAguiCgPCmmJLwpqWR5Y2d6KGk6KeB8KeisuiuoOi0nemShemVuOmVv+mXqPCouI/pn6bpobXpo47po57ppaPwqaCQ6bG86bif6buE5q2v76SH5Li38KCCh+mYneaIt+mSolwiXSxbXCI4YzQwXCIsXCLlgLvmt77wqbGz6b6m47eJ6KKP8KSFjueBt+WzteSsoPClh43jlZnwpbSw5oSi8Kiosui+p+mHtueGkeacmeeOuvCjioHwqoSH47KL8KGmgOSskOejpOeQguWGrvConI/kgInmqaPwqoq65Iij6JiP8KCpr+eoqvCppYfwqKuq6Z2V54GN5Yyk8KKBvumPtOebmfCop6Ppvqfnn53kuqPkv7DlgrzkuK/kvJfpvqjlkLTntovlopLlo5Dwoba25bqS5bqZ5b+C8KKckuaWi1wiXSxbXCI4Y2ExXCIsXCLwo4+55qSZ5qmD8KOxo+azv1wiXSxbXCI4Y2E3XCIsXCLniIDwpJSF546M47ub8KSok+WsleeSueiug/ClsqTwpZqV56qT56+s57OD57ms6Iu46JaX6b6p6KKQ6b6q6Lq56b6r6L+P6JWf6aeg6Yih6b6s8Ki2ufChkL/kgbHkiqLlqJpcIl0sW1wiOGNjOVwiLFwi6aGo5p2r5Im25Zy9XCJdLFtcIjhjY2VcIixcIuiXlvCkpbvoir/wp4SN5LKB8Ka1tOW1u/CmrJXwpr6+6b6t6b6u5a6W6b6v5pun57mb5rmX56eK47aI5JOD8KOJlvCinpbkjprklLZcIl0sW1wiOGNlNlwiLFwi5bOV8KOsmuirueWxuOO0kvCjlZHltbjpvrLnhZfklZjwpIOs8KG4o+Sxt+OluOORivCghqTwprGB6KuM5L608KCIueWmv+iFrOmhlvCpo7rlvLtcIl0sW1wiOGQ0MFwiLFwi8KCun1wiXSxbXCI4ZDQyXCIsXCLwooeB8KilreSEguSau/CpgbnjvIfpvrPwqoa15IO445+W5Ju38KaxhuSFvPComrLwp4+/5JWt46OU8KWSmuSVoeSUm+S2ieSxu+S1tuSXquO/iPCkrI/jmaHkk57kkr3kh63ltL7ltYjltZbjt7zjoI/ltqTltrnjoKDjoLjluYLlur3lvKXlvoPjpIjjpJTjpL/jpY3mg5fmhL3ls6Xjponmhrfmhrnmh4/jprjmiKzmipDmi6XmjJjjp7jlmrFcIl0sW1wiOGRhMVwiLFwi46iD5o+i5o+75pCH5pGa46mL5pOA5bSV5Zih6b6f46qX5paG46q95pe/5pmT46uy5pqS46yi5pyW462C5p6k5qCA462Y5qGK5qKE462y462x46275qSJ5qWD54mc5qWk5qaf5qaF46685qeW46+d5qml5qm05qmx5qqC46+s5qqZ46+y5qqr5qq15quU5qu25q6B5q+B5q+q5rG15rKq47OL5rSC5rSG5rSm5raB47Ov5rak5rax5riV5riY5rip5rqG8KingOa6u+a7oua7mum9v+a7qOa7qea8pOa8tOO1hvCjvYHmvoHmvr7jtarjtbXnhrflspnjtorngKzjtpHngZDngZTnga/ngb/ngonwoIyl5I+B45ex8KC7mFwiXSxbXCI4ZTQwXCIsXCLwo7uX5Z6+8Ka7k+eEvvCln6DjmY7mpqLwqK+p5a2056mJ8KWjofCpk5nnqaXnqb3wpaas56q756qw56uC56uD54eR8KaSjeSHiuermuerneerquSHr+WSsvClsIHnrIvnrZXnrKnwpYyO8KWzvueuouetr+iOnPClrrTwprG/56+Q6JCh566S56648KW0oOO2rfClsaXokpLnr7rnsIbnsLXwpbOB57GE57KD8KSigueypuaZvfCklbjns4nns4fns6bnsbTns7Pns7Xns45cIl0sW1wiOGVhMVwiLFwi57mn5JSd8Ka5hOe1nfCmu5bnko3ntonntqvnhLXntrPnt5LwpIGX8KaAqee3pOO0k+e3tfChn7nnt6XwqI2t57id8KaEofCmhZrnua7nupLkjKvpkaznuKfnvYDnvYHnvYfnpLbwpouQ6aeh576X8KaNkee+o/ChmaHwoIGo5JWc8KOdpuSUg/CojLrnv7rwppKJ6ICF6ICI6ICd6ICo6ICv8KqCh/Cms4PogLvogLzogaHwopyU5KaJ8KaYpvCjt6Pwppuo5pyl6IKn8KipiOiEh+iEmuWisPCim7bmsb/wppKY8KS+uOaTp/ChkoroiJjwoaGe5qmT8KSppfCkqpXkkbroiKnwoKyN8KapkvCjtb7kv7nwoZO96JOi6I2i8KasivCkpqfwo5Sw8KGds/Cjt7joiqrmpJvwr6aU5IebXCJdLFtcIjhmNDBcIixcIuiVi+iLkOiMmvCguJbwoZ6045uB8KOFvfCjlZroibvoi6LojJjwo7qL8Ka2o/CmrIXwpq6X8KOXjuO2v+iMneWXrOiOheSUi/CmtqXojqzoj4Hoj5Pjkb7wpruU5qmX6JWa45KW8Ka5gvCiu6/okZjwpa+k6JGx47eT5JOk5qqn6JGK8KOyteelmOiSqPCmrpbwprm38Ka5g+iTnuiQj+iOkeSSoOiSk+iTpPClspHkiYDwpbOA5JWD6JS05auy8Ka6meSUp+iVs+SUluaev+iYllwiXSxbXCI4ZmExXCIsXCLwqJil8KiYu+iXgfCngojomILwoZaC8KeDjfCvprLklaromKjjmYjwoaKi5Y+38KeOmuiZvuidsfCqg7jon67worCn6J6x6J+a6KCP5Zmh6Jms5qGW5JiP6KGF6KGG8KeXoPCjtrnwp5ek6KGe6KKc5Jmb6KK06KK15o+B6KOF55238Kecj+imh+imiuimpuimqeimp+imvPCoqKXop6fwp6Sk8KeqveiqnOeek+mHvuiqkPCnqZnnq6nwp6y68KO+j+Sck/CnrLjnhbzorIzorJ/wpZCw8KWVpeisv+itjOitjeiqqfCkqbrorpDorpvoqq/woZuf5JiV6KGP6LKb8Ke1lPCnto/wr6eU45yl8Ke1k+izlvCntpjwp7a96LSS6LSD8KGkkOizm+eBnOi0kfCks4nju5DotbdcIl0sW1wiOTA0MFwiLFwi6Lap8KiAgvChgJTwpKaK46288KiGvPCnhIznq6fouq3ourbou4Ppi5TovJnovK3wqI2l8KiQkui+pemMg/Cqip/woKmQ6L6z5KSq8KinnvColL3wo7a75bu48KOJoui/ufCqgJTwqJq88KiUgfCijKXjpoDwpruX6YC38KiUvPCnqr7pgaHwqJWs8KiYi+mCqPConJPpg4TwqJum6YKu6YO96YWn46uw6Yap6YeE57Ks8Kiks/ChuonpiI7msp/piYHpiaLwpZa56Yq58KirhvCjspvwqKyM8KWXm1wiXSxbXCI5MGExXCIsXCLwoLSx6Yys6Y2r8KirofCor6vngo/lq4PwqKui8KirpeSlpemJhPCor6zwqLC58Kivv+mNs+mRm+i6vOmWhemWpumQpumWoOa/tuSKufCimbrwqJuY8KGJvPCjuK7kp5/msJzpmbvpmpbkhazpmqPwpruV5oea6Zq256O18KiroOmaveWPjOSmofCmsrjwoIm08KaQkPCpgq/wqYOl8KSrkfChpJXwo4yK6Zyx6JmC6Zy25KiP5JS95JaF8KSrqeeBteWtgemcm+mdnPCph5XpnZflrYrwqYer6Z2f6ZCl5YOQ8KOCt/Cjgrzpnonpnp/pnrHpnr7pn4Dpn5Lpn6DwpZGs6Z+u55Cc8KmQs+mfv+mftfCpkJ3wp6W65KuR6aC06aCz6aGL6aGm46yO8KeFteO1kfCgmLDwpIWcXCJdLFtcIjkxNDBcIixcIvClnIbpo4rporfpo4jpo4fkq7/wprSn8KGbk+WWsOmjoemjpumjrOmNuOmkufCkqKnkrbLwqaGX8KmkhemntemojOmou+mokOmpmPClnKXjm4TwqYKx8KmvlemroOmrovCprIXpq7TksI7prJTprK3wqJiA5YC06ay08KamqOOjg/Cjgb3prZDprYDwqbS+5amF8KGho+mujvCkiYvpsILpr7/psIzwqbmo6beU8Km+t/CqhpLwqoar8KqDofCqhKPwqoef6bW+6baD8KqEtOm4juaiiFwiXSxbXCI5MWExXCIsXCLpt4TwooWb8KqGk/CqiKDwoaS78KqIs+m0ufCqgrnwqoq06bqQ6bqV6bqe6bqi5LS06bqq6bqv8KSNpOm7geOtoOOnpeO0neS8suOevvCosKvpvILpvIjkrpbpkKTwprai6byX6byW6by55Zqf5ZqK6b2F6aa48KmCi+mfsuiRv+m9oum9qeernOm+jueIluSuvvCkpbXwpKa754W38KSnuPCkjYjwpKmR546e8KivmvCho7rnpp/wqKW+8Ki4tumNqemPs/CoqYTpi6zpjoHpj4vwqKWs8KSSueeIl+O7q+edsuepg+eDkPCkkbPwpI+454W+8KGfr+eCo/Chor7wo5aZ47uH8KGihfClkK/woZ+445yi8KGbu/ChoLnjm6HwoZ208KGjkfClvYvjnKPwoZuA5Z2b8KSopfChj77woYqoXCJdLFtcIjkyNDBcIixcIvChj4bwoZK26JSD8KOapuiUg+iRlfCkppTwp4Wl8KO4sfCllZzwo7u78KeBkuSTtPCjm67wqaad8Ka8puafueOcs+OwleO3p+WhrPChpKLmoJDkgZfwo5y/8KSDofCkgovwpISP8KawoeWTi+WanvCmmrHlmpLwoL+f8KCuqPCguI3pj4bwqKyT6Y6c5Lu45YSr46CZ8KSQtuS6vPCgkaXwoI2/5L2L5L6K8KWZkeWpqPCghqvwoI+L46aZ8KCMivCgkJTjkLXkvKnwoIuA8Ki6s/CgibXoq5rwoIiM5LqYXCJdLFtcIjkyYTFcIixcIuWDjeWEjeS+ouS8g/CkqI7wo7qK5L2C5YCu5YGs5YKB5L+M5L+l5YGY5YO85YWZ5YWb5YWd5YWe5rm28KOWlfCjuLnwo7q/5rWy8KGihPCjuonlhqjlh4PwoJeg5JOd8KCSo/CgkpLwoJKR6LW68KiqnPCgnI7liZnliqTwoKGz5Yuh6Y2u5Jm654aM8KSOjPCgsKDwpKas8KGDpOankfCguJ3nkbnju57nkpnnkJTnkZbnjpjkro7wpKq88KSCjeWPkOOWhOeIj/Ckg4nllrTwoI2F5ZON8KCvhuWcnemJnembtOmNpuWfneWejeWdv+OYvuWji+WqmfCoqYbwoZu68KGdr/ChnJDlqKzlprjpio/lqb7lq4/lqJLwpaWG8KGns/ChoaHwpIqV45u15rSF55GD5aih8KW6g1wiXSxbXCI5MzQwXCIsXCLlqoHwqK+X8KCQk+mPoOeSjPChjIPnhIXkpbLpkIjwqKe76Y69456g5bCe5bKe5bme5bmI8KGmlvChpbzwo6uu5buN5a2P8KGkg/ChpITjnIHwoaKg45ud8KGbvuObk+iEqvCoqYfwoba68KORsvCopqjlvIzlvI7woaSn8KGeq+Wpq/ChnLvlrYTomJTwp5e96KGg5oG+8KKhoPCimKvlv5vjurjwopav8KKWvvCpgojwpr2z5oeA8KCAvvCggYbwopib5oaZ5oaY5oG18KKym/CitIfwpJuU8KmFjVwiXSxbXCI5M2ExXCIsXCLmkbHwpJml8KKtquOoqfCirKLwo5GQ8KmjqvCiubjmjLfwqpGb5pK25oyx5o+R8KSno/CitafmiqTworKh5pC75pWr5qWy46+08KOCjvCjiq3wpKaJ8KOKq+WUjfCji6DwoaOZ8KmQv+abjvCjionwo4az46ug5IaQ8KWWhPCorKLwpZaP8KGbvPCllZvwpZCl56Ou8KOEg/ChoKrwo4i045Gk8KOIj/CjhoLwpIuJ5pqO8Ka0pOaZq+Suk+aYsPCnobDwober5pmj8KOLkvCji6HmmJ7wpaGy46OR8KOguvCjnrzjrpnwo56i8KOPvueTkOOuluaej/CkmKrmorbmoJ7jr4Tmqr7joaPwo5+V8KSSh+aos+apkuarieashfChpJLmlJHmopjmqYzjr5fmqbrmrZfwo7+A8KOymumOoOmLsvCor6rwqKuLXCJdLFtcIjk0NDBcIixcIumKifCogJ7wqKec6ZGn5ral5ryL8KSnrOa1p/Cjvb/jto/muITwpIC85ai95riK5aGH5rSk56GC54S78KSMmvCkibbng7HniZDniofnipTwpJ6P8KScpeWFufCkqqTwoJer55G68KO7uPCjmZ/wpKmK8KSkl/Clv6HjvIbjurHwpKuf8Kiwo/CjvLXmgqfju7Pnk4znkLzpjofnkLfkkp/wpreq5JWR55aD472j8KSzmfCktIbjvZjnlZXnmbPwqpeG46yZ55Go8KirjPCkpqvwpKaO46u7XCJdLFtcIjk0YTFcIixcIuO3jfCkqY7ju7/wpKeF8KSjs+mHuuWcsumNgvCoq6PwoaGk5YOf8KWIofClh6fnnbjwo4iy55yO55yP55278KSal/CjnoHjqZ7wpKOw55C455Kb47q/8KSquvCkq4fkg4jwpKqW8KaGrumMh/ClloHnoJ7noo3noojno5Lnj5DnpZnwp52B8KWbo+SEjuemm+iSluempeaorfCju7rnqLrnp7Tkha7woZum5ISy6Yi156ex8KC1jPCkpozwoIqZ8KO2uvChna7jlpfllavjlbDjmqrwoIeU8KCwjeerouWpmfCim7Xwpaqv8KWqnOWojfCgiZvno7DlqKrwpa+G56u+5Ie557Gd57Gt5IiR8KWus/Clurzwpbqm57ON8KSnufChnrDnso7nsbznsq7mqrLnt5znuIfnt5PnvY7wpomhXCJdLFtcIjk1NDBcIixcIvCmhZzwp62I57aX8KW6guSJqvCmrbXwoKSW5p+W8KCBjvCjl4/ln4TwppCS8KaPuPCkpaLnv53nrKfwoKCs8KWrqfCltYPnrIzwpbiO6aem6JmF6amj5qic8KOQv+OnovCkp7fwppat6aif8KaWoOiSgPCnhKfwprOR5JOq6IS35JCC6IOG6ISJ6IWC8KaetOmjg/CmqYLoiaLoiaXwpqmR6JGT8Ka2p+iYkPCniJvlqobkhb/woaGA5ayr8KGioeWrpPCho5jomqDwr6a88KO2j+igrfCnkKLlqIJcIl0sW1wiOTVhMVwiLFwi6KGu5L2F6KKH6KK/6KOm6KWl6KWN8KWag+illPCnnoXwp56E8KivtfCor5nwqK6c8KinueO6reiSo+SbteSbj+OfsuioveionPCpkYjlvY3piKvwpIqE5peU54Sp54OE8KGhhem1reiyn+izqfCnt5zlpprnn4Plp7Dkja7jm5TouKrouqfwpLCJ6Lyw6L2K5Iu05rGY5r678KKMoeSim+a9uea6i/Chn5rpr6njmrXwpKSv6YK76YKX5ZWx5KSG6Ya76ZCE8Kipi+SBovCoq7zpkKfwqLCd8Kiwu+iTpeioq+mWmemWp+mWl+mWlvCotLTnkYXju4LwpKO/8KSpgvCkj6rju6fwo4il6ZqP8Ki7p/CouabwqLml47uM8KSnrfCkqbjwo7+u55CS55Gr47u86Z2B8KmCsFwiXSxbXCI5NjQwXCIsXCLmoYfkqJ3wqYKT8KWfn+mdnemNqPCoponwqLCm8Kisr/Cmjr7pirrlrJHorankpLznj7nwpIib6Z6b6Z2x6aS48KC8puW3gfCor4XwpKqy6aCf8KmTmumLtvCpl5fph6Xkk4DwqK2Q8KSpp/CoraTpo5zwqKmF47yA6Yiq5KSl6JCU6aS76aWN8KeshuO3vemmm+Str+mmqumpnPCoraXwpaOI5qqP6aih5au+6aiv8KmjseSukPCppYjpprzkrr3krpfpjb3lobLwoYyC5aCi8KSmuFwiXSxbXCI5NmExXCIsXCLwoZOo56GE8KKcn/Cjtrjmo4Xjtb3pkZjjpKfmhZDwop6B8KKlq+aEh+mxj+mxk+mxu+mwtemwkOmtv+mvj/CpuK3prp/wqoe18KqDvum0oeSyrvCkhITpuJjksrDptIzwqoa08KqDrfCqg7PwqaSv6bal6JK98Ka4kvCmv5/wpq6C6Je85JSz8Ka2pPCmuoTwprew6JCg6Jeu8Ka4gPCjn5fwpoGk56ei8KOWnPCjmYDkpK3wpKee47Wi6Y+b6Yq+6Y2I8KCKv+eiuemJt+mRjeS/pOORgOmBpPCllZ3noL3noZTnorbnoYvwoZ2X8KOHifCkpYHjmprkvbLmv5rmv5nngJ7ngJ7lkJTwpIa15Z675aOz5Z6K6bSW5Z+X54S045Kv8KSGrOeHq/CmsYDwpL6X5ayo8KGetfCoqYlcIl0sW1wiOTc0MFwiLFwi5oSM5auO5aiL5Iq88KSSiOOcrOStu/Cop7zpjrvpjrjwoaOW8KC8neiRsvCms4DwoZCT8KSLuvCisKbwpI+B5aaU8KO2t/CmnYHntqjwpoWb8KaCpPCkprnwpKaL8KinuumLpeePouO7qeeStPCoraPwoaKf47uh8KSqs+armOePs+ePu+O7lvCkqL7wpKqU8KGfmfCkqabwoI6n8KGQpPCkp6XnkYjwpKSW54Kl8KSltumKhOePpumNn/Cgk77pjLHwqKuO8KiolumOhvCor6fwpZeV5KS18KiqgueFq1wiXSxbXCI5N2ExXCIsXCLwpKWD8KCzv+WapPCgmJrwoK+r8KCyuOWUguenhPChn7rnt77woZuC8KSpkPChoZLklK7pkIHjnIrwqKuA8KSmreWmsPChor/woaKD8KeShOWqoeObovCjtZvjmrDpiZ/lqbnwqKqB8KGhoumNtOOzjfCgqrTkqpbjporlg7TjtanjtYzwoY6c54W15Iu78KiImOa4j/Cpg6Tkk6vmtZfwp7mP54Gn5rKv47OW8KO/rfCjuK3muILmvIzjta/woI+155WR45q845OI5JqA47ua5KGx5aeE6Ymu5KS+6L2B8KiwnPCmr4DloJLln4jjm5bwoZGS54O+8KSNovCkqbHwor+j8KGKsPCijr3mornmpafwoY6Y8KOTpfCnr7Two5uf8Kiqg/Cjn5bwo4+68KSyn+aomvCjmq3wprK36JC+5JOf5JOOXCJdLFtcIjk4NDBcIixcIvCmtKbwprWR8KaygvCmv57mvJfwp4SJ6Iy98KGcuuiPrfCmsoDwp4GT8KGfm+WmieWqgvChnrPlqaHlqbHwoaSF8KSHvOOcreWnr/ChnLzjm4fnho7pjpDmmprwpIql5amu5air8KSKk+aoq/Cju7nwp5y28KSRm/Cki4rnhJ3wpImZ8KinoeS+sPCmtKjls4LwpJOO8Ke5jfCkjr3mqIzwpImW8KGMhOeCpueEs/Ckj6njtqXms5/wr6Cl8KSpj+e5peWnq+W0r+O3s+W9nPCkqZ3woZ+f57ak6JCmXCJdLFtcIjk4YTFcIixcIuWShfCjq7rwo4yA8KCIlOWdvvCgo5XwoJiZ47+l8KG+nvCqirbngIPwqYWb5bWw546P57OT8KipmfCpkKDkv4jnv6fni43njJDwp6u054y454y58KWbtueNgeeNiOO6qfCnrJjpgaznh7XwpKOy54+h6Ie247uK55yM47uR5rKi5Zu955CZ55Ce55Cf47ui47uw47u047u655OT47yO472T55WC55Wt55Wy55aN472855eI55ec47+A55mN47+X55m047+c55m68KS9nOeGiOWYo+imgOWhqeSAneedg+SAueadoeSBheOXm+eemOSBquSBr+Wxnueevuefi+WjsuegmOeCueegnOSCqOegueehh+ehkeehpuiRiPCllLXnpLPmoIPnpLLkhINcIl0sW1wiOTk0MFwiLFwi5ISJ56aR56aZ6L6756iG6L685IWn56qR5Iay56q86Im55IeE56uP56ub5IeP5Lih562i562s562757CS57Cb5Img5Im657G757Kc5IqM57K45IqU57Ot6L6T54OA8KCzj+e3j+e3lOe3kOe3vee+rue+tOeKn+SOl+iAoOiApeesueiAruiAseiBlOO3jOWetOeCoOiCt+iDqeSPreiEjOeMquiEjuiEkueVoOiElOSQgeOsueiFluiFmeiFmlwiXSxbXCI5OWExXCIsXCLkkJPloLrohbzohoTkkKXohpPkkK3ohqXln6/oh4Hoh6ToiZTkko/oiqboibboi4roi5joi7/kkrDojZfpmanmporokIXng7XokaTmg6PokojklITokr7ok6Hok7jolJDolLjolZLklLvola/olbDol6DklbfombLompLomrLom6/pmYXonovkmIbkmJfooq7oo7/opKTopYfoppHwp6Wn6Kip6Ki46KqU6Kq06LGR6LOU6LOy6LSc5J6Y5aGf6LeD5J+t5Luu6Li65ZeY5Z2U6Lmx5Ze16Lqw5KC36LuO6Lui6Luk6Lut6Luy6L636L+B6L+K6L+M6YCz6aeE5KKt6aOg6YiT5KSe6Yio6YmY6Ymr6Yqx6Yqu6Yq/XCJdLFtcIjlhNDBcIixcIumLo+mLq+mLs+mLtOmLvemNg+mOhOmOreSlheSlkem6v+mQl+WMgemQnemQremQvuSlqumRlOmRuemUremWouSmp+mXtOmYs+SnpeaeoOSopOmdgOSotemesumfguWZlOSrpOaDqOmiueSsmemjseWhhOmkjumkmeWGtOmknOmkt+mlgumlnemlouStsOmnheSunemovOmsj+eqg+mtqemugemvnemvsemvtOSxremwoOOdr/Chr4LptYnpsLpcIl0sW1wiOWFhMVwiLFwi6bu+5ZmQ6baT6ba96beA6be86ZO26L626bm76bqs6bqx6bq96buG6ZOc6bui6bux6bu456uI6b2E8KCClPCgirfwoI6g5qSa6ZOD5aas8KCTl+WhgOmTgeOeufCgl5XwoJiV8KCZtvChmrrlnZfnhbPwoKuC8KCrjfCgrr/lkarwr6C78KCvi+WSnvCgr7vwoLC78KCxk/CgsaXwoLG85oOn8KCyjeWZuvCgsrXwoLOd8KCzrfCgta/woLay8KC3iOallemwr+iepfCguITwoLiO8KC7l/CgvpDwoLyt8KC5s+WwoPCgvrzluIvwoYGc8KGBj/ChgbbmnJ7woYG78KGCiPChgpbjmYfwoYK/8KGDk/ChhK/woYS75Y2k6JKt8KGLo/ChjbXwoYy26K6B8KGVt/ChmJnwoZ+D8KGfh+S5uOeCu/ChoK3woaWqXCJdLFtcIjliNDBcIixcIvChqK3woamF8KGwqvChsbDwobKs8KG7iOaLg/Chu5XwobyV54aY5qGV8KKBheanqeObiPCiibzwoo+X8KKPuvCinKrwoqGx8KKlj+iLvfCipafwoqaT8KKrleimpfCiq6jovqDwoqyO6Z648KKsv+mhh+mqvfCisYxcIl0sW1wiOWI2MlwiLFwi8KKyiPCisrfwpa+o8KK0iPCitJLwora38KK2lfCiuYLwor208KK/jPCjgLPwo4Gm8KOMn/Cjj57lvrHmmYjmmr/wp6m58KOVp/Cjl7PniIHwpKa655+X8KOYmvCjnJbnuofwoI2G5aK15pyOXCJdLFtcIjliYTFcIixcIuakmPCjqqfwp5mX8KW/ovCjuJHwo7q58KeXvvCigprko5DkqrjwpISZ8KiqmvCki67wpIyN8KSAu/CkjLTwpI6W8KSphfCgl4rlh5LwoJiR5aaf8KG6qOOuvvCjs7/wpJCE8KSTluWeiPCkmbTjppvwpJyv8KiXqPCpp4njnaLwooeD6K2e8KitjumnlvCkoJLwpKO78KSoleeIifCkq4DwoLG45aWl8KS6pfCkvobwoJ256Lua8KWArOWKj+Wcv+eFsfClipnwpZCZ8KO9ivCkqqfllrzwpZGG8KWRrvCmrZLph5TjkbPwpZS/8KeYsvCllZ7knJjwpZWi8KWVpvCln4fwpKS/8KWhneWBpuOTu/Cjj4zmg57wpaSD5J288KiliPClqq7wpa6J8KWwhvChtpDlnqHnhZHmvrbwpoSC8KewkumBlvCmhrLwpL6a6K2i8KaQgvCmkYpcIl0sW1wiOWM0MFwiLFwi5bWb8Kavt+i8tvCmkoTwoaSc6Kuq8KSntvCmkojwo7+v8KaUkuSvgPCmlr/wppq18KKcm+mRpfCln6HmhpXlqKfwr6ON5L675Zq58KSUofCmm7zkuarwpKS06ZmW5raP8KayveOYmOilt/CmnpnwpqGu8KaQkfCmoZ7nh5/wpqOH562C8KmDgPCgqJHwpqSm6YSE8Kakueephem3sPCmp7rpqKbwpqit45mf8KaRqfCggKHnpoPwpqi08Katm+W0rPCjlJnoj4/wpq6d5JuQ8KaypOeUu+ihpfCmtq7lorZcIl0sW1wiOWNhMVwiLFwi45yc8KKWjfCngYvwp4eN47GU8KeKgPCnioXpioHwooW68KeKi+mMsPCni6bwpKeQ5rC56ZKf8KeRkPCgu7jooKfoo7XwoqSm8KiRs/ChnrHmurjwpKiq8KGgoOOmpOOaueWwkOeno+SUv+aatvCpsq3wqaKk6KWD8KefjPCnoZjlm5bkg5/woZiK46ah8KOcr/Cog6jwoY+F54at6I2m8KennfCphqjlqafksrfwp4Kv8Kimq/Cnp73wp6iK8Kesi/CntabwpIW6562D56W+8KiAiea+tfCqi5/mqIPwqIyY5Y6i8Ka4h+mOv+agtumdnfCoha/wqICj8KamtfChj63wo4iv8KiBiOW2hfCosLDwqIKD5ZyV6aCj8KilieW2q/Ckpojmlr7mp5Xlj5LwpKql8KO+geOwkeactvCogpDwqIO08KiErvChvqHwqIWPXCJdLFtcIjlkNDBcIixcIvCohonwqIav8KiImvCojIbwqIyv8KiOiuOXivCokajwqJqq5KO65o+m8KilluegiOmJlfCoprjkj7LwqKen5I+f8KinqPCorYbwqK+U5ae48Kiwiei8i/Cov4XwqYOs562R8KmEkPCphLzjt7fwqYWe8KSriui/kOeKj+Wai/Cpk6fwqZep8KmWsPCplrjwqZyy8KmjkfCppYnwqaWq8Kmng/CpqKjwqayO8Km1mvCptpvnup/wqbu48Km8o+SypOmVh/CqipPnhqLwqou/5LaR6YCS8KqXi+S2nPCgspzovr7ll4FcIl0sW1wiOWRhMVwiLFwi6L668KKSsOi+ufCkqpPklInnub/mvZbmqrHku6rjk6TwqKys8KeineOcuui6gPChn7XwqICk8KitrPCorpnwp6i+8Kaar+O3q/CnmZXwo7K38KWYtfClpZbkuprwpbqB8KaJmOWav/Cgua3ouI7lra3wo7qI8KSynuaPnuaLkPChn7bwoaG75pSw5Zit8KWxiuWQmvCljJHjt4bwqbaY5LG95Zii5Zie572J8KW7mOWltfCjtYDonbDkuJzwoL+q8KC1ifCjmrrohJfptZ7otJjnmLvpsYXnmY7nnrnpjYXlkLLohYjoi7flmKXohLLokJjogr3ll6rnpaLlmYPlkJbwoLqd45eO5ZiF5Zex5pux8KiLouOYreeUtOWXsOWWuuWSl+WVsvCgsYHwoLKW5buQ8KWFiPCgubbworGiXCJdLFtcIjllNDBcIixcIvCguqLpuqvntZrll57woYG15oqd6Z2t5ZKU6LON54e26YW25o+85o655o++5ZWp8KKtg+mxsvCiurPlhprjk5/woLan5Yan5ZGN5ZSe5ZST55mm6Lit8KaiiueWseiCtuighOiehuijh+iGtuiQnPChg4Hkk6znjITwpJyG5a6Q6IyL8Kaik+WZu/Cim7Twp7Sv8KSGo/CntbPwpruQ8KeKtumFsPChh5npiIjwo7O88KqaqfCguqzwoLu554mm8KGyouSdjvCkv4Lwp7+58KC/q+SDulwiXSxbXCI5ZWExXCIsXCLpsZ3mlJ/worag5KOz8KSfoPCptbzwoL+s8KC4iuaBovCnlqPwoL+tXCJdLFtcIjllYWRcIixcIvCmgYjwoYaH54aj57qO6bWQ5Lia5LiE45W35ayN5rKy5Y2n45qs46ec5Y2945ql8KSYmOWimvCkra7oiK3lkYvlnqrwpaqV8KCluVwiXSxbXCI5ZWM1XCIsXCLjqZLwopGl54208Km6rOS0iemvrfCjs77wqbyw5LGb8KS+qfCplp7wqb+e6JGc8KO2tvCnirLwpp6z8KOcoOaMrue0pfCju7fwo7is46iq6YCI5YuM47m045m65Jep8KCSjueZgOWrsPCgurbnobrwp7yu5aKn5IK/5Zm86a6L5bW055mU8KqQtOm6heSzoeeXueOfu+aEmfCjg5rwpI+yXCJdLFtcIjllZjVcIixcIuWZnfChiqnlnqfwpKWj8Km4huWItPCngq7jlq3msYrptbxcIl0sW1wiOWY0MFwiLFwi57GW6ay55Z+e8KGdrOWxk+aTk/Cpk5Dwpoy18KeFpOiarfCgtKjwprSi8KSrovCgtbFcIl0sW1wiOWY0ZlwiLFwi5Ye+8KG8j+W2jumcg/Cht5HpuoHpgYznrJ/prILls5HnrqPmiajmjLXpq7/nr4/prKrnsb7prK7nsYLnsobpsJXnr7zprInpvJfpsJvwpKS+6b2a5ZWz5a+D5L+96bqY5L+y5Ymg47iG5YuR5Z2n5YGW5aa35biS6Z+I6bar6L2c5ZGp6Z606aWA6Z665Yys5oSwXCJdLFtcIjlmYTFcIixcIuakrOWPmumwium0guSwu+mZgeamgOWCpueVhvChna3pp5rlibNcIl0sW1wiOWZhZVwiLFwi6YWZ6ZqB6YWcXCJdLFtcIjlmYjJcIixcIumFkfCoupfmjb/wprSj5quK5ZiR6YaO55W65oqF8KCPvOeNj+exsPClsKHwo7O9XCJdLFtcIjlmYzFcIixcIvCkpJnnm5bprp3kuKrwoLOU6I6+6KGCXCJdLFtcIjlmYzlcIixcIuWxiuangOWDreWduuWIn+W3teS7juawsfCgh7LkvLnlkpzlk5rliprotoLjl77lvIzjl7NcIl0sW1wiOWZkYlwiLFwi5q2S6YW86b6l6a6X6aCu6aK06aq66bqo6bqE54W656yUXCJdLFtcIjlmZTdcIixcIuavuuigmOe9uFwiXSxbXCI5ZmViXCIsXCLlmKDwqpmK6Lm36b2TXCJdLFtcIjlmZjBcIixcIui3lOi5j+m4nOi4geaKgvCojb3ouKjoubXnq5PwpKm356i+56OY5rOq6Kmn55iHXCJdLFtcImEwNDBcIixcIvCoqZrpvKbms47on5bnl4Pwqoqy56GT8K+hgOi0jOeLoueNseisreeMgueTseizq/CkqrvomK/lvrrooqDkkrdcIl0sW1wiYTA1NVwiLFwi8KGgu/CmuIVcIl0sW1wiYTA1OFwiLFwi6Km+8KKUm1wiXSxbXCJhMDViXCIsXCLmg73nmafpq5fptYTpja7pro/on7VcIl0sW1wiYTA2M1wiLFwi6KCP6LO354ys6Zyh6a6w45eW54qy5LCH57GR6aWK8KaFmeaFmeSwhOm6luaFvVwiXSxbXCJhMDczXCIsXCLlnZ/mha/miqbmiLnmi47jqZzmh6Lljqrwo4+15o2k5qCC45eSXCJdLFtcImEwYTFcIixcIuW1l/Cor4Lov5rwqLi5XCJdLFtcImEwYTZcIixcIuWDmfChtYbnpIbljLLpmLjwoLy75IGlXCJdLFtcImEwYWVcIixcIuefvlwiXSxbXCJhMGIwXCIsXCLns4Lwpbya57Oa56it6IGm6IGj57WN55SF55Oy6KaU6Iia5pyM6IGi8KeShuiBm+eTsOiEg+ecpOimifCmn4znlZPwpruR6J6p6J+O6IeI6J6M6KmJ6LKt6K2D55yr55O46JOa45i15qay6LamXCJdLFtcImEwZDRcIixcIuimqeeRqOa2ueifgfCkgJHnk6fjt5vnhbbmgqTmhpzjs5HnhaLmgbdcIl0sW1wiYTBlMlwiLFwi572x8KisreeJkOaDqeStvuWIoOOwmPCjs4fwpbuX8KeZlvCllLHwoaWE8KGLvvCppIPwprec8KeCreWzgfCmhq3wqKiP8KOZt/Cgg67wpqGG8KS8juSVouWsn/CmjYzpvZDpuqbwpomrXCJdLFtcImEzYzBcIixcIuKQgFwiLDMxLFwi4pChXCJdLFtcImM2YTFcIixcIuKRoFwiLDksXCLikbRcIiw5LFwi4oWwXCIsOSxcIuS4tuS4v+S6heS6oOWGguWGluWGq+WLueWMuOWNqeWOtuWkiuWugOW3m+K8s+W5v+W7tOW9kOW9oeaUtOaXoOeWkueZtui+tematsKoy4bjg73jg77jgp3jgp7jgIPku53jgIXjgIbjgIfjg7zvvLvvvL3inL3jgYFcIiwyM10sW1wiYzc0MFwiLFwi44GZXCIsNTgsXCLjgqHjgqLjgqPjgqRcIl0sW1wiYzdhMVwiLFwi44KlXCIsODEsXCLQkFwiLDUsXCLQgdCWXCIsNF0sW1wiYzg0MFwiLFwi0JtcIiwyNixcItGR0LZcIiwyNSxcIuKHp+KGuOKGueOHj/Cgg4zkuZrwoIKK5YiC5JKRXCJdLFtcImM4YTFcIixcIum+sOWGiOm+sfCnmIdcIl0sW1wiYzhjZFwiLFwi77+i77+k77yH77yC44ix4oSW4oSh44Kb44Kc4rqA4rqE4rqG4rqH4rqI4rqK4rqM4rqN4rqV4rqc4rqd4rql4rqn4rqq4rqs4rqu4rq24rq84rq+4ruG4ruK4ruM4ruN4ruP4ruW4ruX4rue4rujXCJdLFtcImM4ZjVcIixcIsqDyZDJm8mUybXFk8O4xYvKismqXCJdLFtcImY5ZmVcIixcIu+/rVwiXSxbXCJmYTQwXCIsXCLwoJWH6Yub8KCXn/Cjv4XolYzkirXnj6/lhrXjmYnwpKWC8KinpOmNhPChp5voi67wo7OI56C85p2E5ouf8KSks/CopqrwoIqg8Kaus/ChjIXkvqvwopOt5YCI8Ka0qfCnqoTwo5iA8KSqsfCilJPlgKnwoI2+5b6k8KCOgPCgjYfmu5vwoJCf5YG95YSB45G65YSO6aGs452D6JCW8KSmpPCgkoflhaDwo4605YWq8KCvv/Cig7zwoIul8KKUsPCglo7wo4iz8KGmg+WuguidvfCglrPwo7KZ5Yay5Ya4XCJdLFtcImZhYTFcIixcIum0tOWHieWHj+WHkeOznOWHk/CkqqblhrPlh6LljYLlh63oj43mpL7wo5yt5b275YiL5Yim5Yi85Yq15YmX5YqU5Yq55YuF57CV6JWC5Yug6JiN8Kask+WMhfCoq57llYnmu5nwo76A8KCllPCjv6zljLPljYTwoK+i5rOL8KGcpuagm+ePleaBiuO6quOjjPChm6jnh53kkqLlja3ljbTwqJqr5Y2+5Y2/8KGWlvChmJPnn6bljpPwqKqb5Y6g5Y6r5Y6u546n8KWdsuO9meeOnOWPgeWPheaxieS5ieWfvuWPmeOqq/Cgro/lj6Dwo7+r8KK2o+WPtvCgsbflkJPngbnllKvmmZfmtZvlka3wpq2T8KC1tOWVneWSj+WSpOSepvChnI3woLud47a08KC1jVwiXSxbXCJmYjQwXCIsXCLwqKa88KKamOWVh+SzreWQr+eQl+WWhuWWqeWYhfCho5fwpIC65JWS8KSQteaas/ChgrTlmLfmm43wo4qK5pqk5pqt5ZmN5ZmP56Ox5Zux6Z6H5Y++5ZyA5Zuv5Zut8KitpuOYo/ChiY/lnYbwpIal5rGu54KL5Z2C45qx8KaxvuWfpvChkJbloIPwoZGU8KSNo+WgpvCkr7XloZzloqrjlaHlo6Dlo5zwoYi85aO75a+/5Z2D8KqFkPCkibjpj5PjlqHlpJ/moqbjm4PmuZlcIl0sW1wiZmJhMVwiLFwi8KGYvuWopOWVk/ChmpLolIXlp4nwoLWO8KaygfCmtKrwoZ+c5aeZ8KGfu/ChnrLwpram5rWx8KGgqPChm5Xlp7nwprmF5aqr5amj45um8KSmqeWpt+OciOWqlueRpeWrk/CmvqHwopWU47aF8KGkkeOcsvChmrjluoPli5Dlrbbmlojlrbzwp6iO5ICE5KGd8KCIhOWvleaFoPChqLTwpaeM8KCWpeWvs+WuneS0kOWwhfChrYTlsJPnj47lsJTwobKl8KasqOWxieSjneWyheWzqeWzr+W2i/Cht7nwobi35bSQ5bSY5bWG8KG6pOWyuuW3l+iLvOOgrfCkpIHwooGJ8KKFs+iKh+OgtuOvguW4ruaqiuW5teW5uvCkkrzwoLOT5Y6m5Lq35buQ5Y6o8KGdseW4ieW7tPCokoJcIl0sW1wiZmM0MFwiLFwi5bu55bu746Kg5bu85qC+6ZCb5byN8KCHgfCvopTjq57koq7woYy65by68KaiiPCij5DlvZjwopGx5b2j6Z698Ka5ruW9sumNgPCoqLblvqfltrbjtZ/wpYmQ8KG9qvCng7jwopmo6YeW8KCKnvCoqKnmgLHmmoXwoaG346Wj47eH45i55Z6Q8KKetOelseO5gOaCnuaCpOaCs/CkpoLwpKaP8Kepk+eSpOWDoeWqoOaFpOiQpOaFgvCvoqbwpruS5oaB5Ye08KCZluaGh+WuqvCjvrdcIl0sW1wiZmNhMVwiLFwi8KKhn+aHk/Corp3wqaWd5oeQ46Sy8KKmgPCio4HmgKPmhZzmlJ7mjovwoISY5ouF8KGdsOaLlfCiuI3mjazwpKef46iX5pC45o+48KGOjvChn7zmkpDmvorwori26aCU8KSCjPClnJ3mk6Hmk6XpkbvjqabmkLrjqZfmlY3mvJbwpKio8KSoo+aWheaVreaVn/Cjgb7mlrXwpKWA5Ky35peR5IOY8KGgqeaXoOaXo+W/n/CjkIDmmJjwo4e38KOHuOaZhPCjhqTwo4al5pmL8KC5teaZp/Clh6bmmbPmmbTwobi98KOIsfCol7Two4eI8KWMk+efhfCio7fppqTmnILwpI6c8KSooeOsq+anuvCjn4LmnZ7mnafmnaLwpIeN8KmDreafl+STqeagoua5kOmIvOaggfCjj6bwprag5qGdXCJdLFtcImZkNDBcIixcIvCjka/mp6HmqIvwqKuf5qWz5qOD8KOXjeakgeakgOO0suOogfCjmLzjroDmnqzmpaHwqKmK5Iu85qS25qaY466h8KCPieiNo+WCkOanufCjmZnwooSq5qmF8KOcg+aqneOvs+aeseariPCphpzjsI3mrJ3woKSj5oOe5qy15q208KKfjea6tfCjq5vwoI618KGlmOOdgOWQofCjrZrmr6Hwo7u85q+c5rC38KKSi/Cko7Hwpq2R5rGa6Iim5rG58KO2vOSThfCjtr3wpIak8KSkjPCkpIBcIl0sW1wiZmRhMVwiLFwi8KOzieObpeOzq/CgtLLproPwo4e58KKSkee+j+agt/CmtKXwprah8Ka3q+a2lua1nOa5vOa8hPCkpb/wpIKF8Ka5suiUs/CmvbTlh4fmspzmuJ3okK7wqKyh5riv8KO4r+eRk/CjvoLnp4zmuY/lqpHwo4GL5r+445yN5r6d8KO4sOa7uvChkpfwpIC95JWV6Y+w5r2E5r2c47WO5r208KmFsOO0u+a+n/CkhYTmv5PwpIKR8KSFlfCkgLnwo7+w8KO+tPCkhL/lh5/wpIWW8KSFl/CkhYDwpoed54GL54G+54Kn54KB54OM54OV54OW54Of5ISE47eo54a054aW8KSJt+eEq+eFheWqiOeFiueFruWynPCkjaXnhY/pjaLwpIuB54Ss8KSRmvCkqKfwpKii54a68KivqOeCveeIjlwiXSxbXCJmZTQwXCIsXCLpkYLniJXlpJHpkYPniKTpjYHwpZiF54iu54mA8KSltOaiveeJleeJl+O5lfCjgYTmoI3mvL3nioLnjKrnjKvwpKCj8Kigq+SjrfCooITnjKjnjK7nj4/njqrwoLC68KaoruePieeRifCkh6LwoZun8KSopOaYo+ObhfCkprfwpKaN8KSnu+ePt+eQleakg/CkqKbnkLnwoJeD47uX55Gc8KKireeRoPCourLnkYfnj6TnkbbojrnnkazjnLDnkbTpj7HmqKznkoLkpZPwpKqMXCJdLFtcImZlYTFcIixcIvCkhZ/wpKm58Kiuj+WthvCosIPwoaKe55OI8KGmiOeUjueTqeeUnvCou5nwoamL5a+X8Ki6rOmOheeVjeeViueVp+eVrvCkvoLjvITwpLST55aO55Gd55ae55a055iC55is55mR55mP55mv55m28KaPteeakOiHr+OfuPCmpJHwpqSO55qh55ql55q355uM8Ka+n+iRovClgp3wpYW98KG4nOecnuecpuedgOaSr/CliKDnnZjwo4qs556v8KilpPCopajwoZuB55+056CJ8KGNtvCkqJLmo4rnoq/no4fno5PpmqXnpK7wpZeg56OX56S056Kx8KeYjOi+uOiihPCorKvwpoKD8KKYnOemhuikgOakguemgPCloZfnpp3wp6y556S856ap5riq8KeEpuO6qOenhvCphI3np5RcIl1dXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3RhYmxlcy9iaWc1LWFkZGVkLmpzb25cbi8vIG1vZHVsZSBpZCA9IDE0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoXCJidWZmZXJcIikuQnVmZmVyLFxuICAgIFRyYW5zZm9ybSA9IHJlcXVpcmUoXCJzdHJlYW1cIikuVHJhbnNmb3JtO1xuXG5cbi8vID09IEV4cG9ydHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGljb252KSB7XG4gICAgXG4gICAgLy8gQWRkaXRpb25hbCBQdWJsaWMgQVBJLlxuICAgIGljb252LmVuY29kZVN0cmVhbSA9IGZ1bmN0aW9uIGVuY29kZVN0cmVhbShlbmNvZGluZywgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IEljb252TGl0ZUVuY29kZXJTdHJlYW0oaWNvbnYuZ2V0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGljb252LmRlY29kZVN0cmVhbSA9IGZ1bmN0aW9uIGRlY29kZVN0cmVhbShlbmNvZGluZywgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IEljb252TGl0ZURlY29kZXJTdHJlYW0oaWNvbnYuZ2V0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGljb252LnN1cHBvcnRzU3RyZWFtcyA9IHRydWU7XG5cblxuICAgIC8vIE5vdCBwdWJsaXNoZWQgeWV0LlxuICAgIGljb252Lkljb252TGl0ZUVuY29kZXJTdHJlYW0gPSBJY29udkxpdGVFbmNvZGVyU3RyZWFtO1xuICAgIGljb252Lkljb252TGl0ZURlY29kZXJTdHJlYW0gPSBJY29udkxpdGVEZWNvZGVyU3RyZWFtO1xuICAgIGljb252Ll9jb2xsZWN0ID0gSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUuY29sbGVjdDtcbn07XG5cblxuLy8gPT0gRW5jb2RlciBzdHJlYW0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZnVuY3Rpb24gSWNvbnZMaXRlRW5jb2RlclN0cmVhbShjb252LCBvcHRpb25zKSB7XG4gICAgdGhpcy5jb252ID0gY29udjtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLmRlY29kZVN0cmluZ3MgPSBmYWxzZTsgLy8gV2UgYWNjZXB0IG9ubHkgc3RyaW5ncywgc28gd2UgZG9uJ3QgbmVlZCB0byBkZWNvZGUgdGhlbS5cbiAgICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuSWNvbnZMaXRlRW5jb2RlclN0cmVhbS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFRyYW5zZm9ybS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogSWNvbnZMaXRlRW5jb2RlclN0cmVhbSB9XG59KTtcblxuSWNvbnZMaXRlRW5jb2RlclN0cmVhbS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uKGNodW5rLCBlbmNvZGluZywgZG9uZSkge1xuICAgIGlmICh0eXBlb2YgY2h1bmsgIT0gJ3N0cmluZycpXG4gICAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcihcIkljb252IGVuY29kaW5nIHN0cmVhbSBuZWVkcyBzdHJpbmdzIGFzIGl0cyBpbnB1dC5cIikpO1xuICAgIHRyeSB7XG4gICAgICAgIHZhciByZXMgPSB0aGlzLmNvbnYud3JpdGUoY2h1bmspO1xuICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHRoaXMucHVzaChyZXMpO1xuICAgICAgICBkb25lKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGRvbmUoZSk7XG4gICAgfVxufVxuXG5JY29udkxpdGVFbmNvZGVyU3RyZWFtLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbihkb25lKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuY29udi5lbmQoKTtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoKSB0aGlzLnB1c2gocmVzKTtcbiAgICAgICAgZG9uZSgpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBkb25lKGUpO1xuICAgIH1cbn1cblxuSWNvbnZMaXRlRW5jb2RlclN0cmVhbS5wcm90b3R5cGUuY29sbGVjdCA9IGZ1bmN0aW9uKGNiKSB7XG4gICAgdmFyIGNodW5rcyA9IFtdO1xuICAgIHRoaXMub24oJ2Vycm9yJywgY2IpO1xuICAgIHRoaXMub24oJ2RhdGEnLCBmdW5jdGlvbihjaHVuaykgeyBjaHVua3MucHVzaChjaHVuayk7IH0pO1xuICAgIHRoaXMub24oJ2VuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBjYihudWxsLCBCdWZmZXIuY29uY2F0KGNodW5rcykpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xufVxuXG5cbi8vID09IERlY29kZXIgc3RyZWFtID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmZ1bmN0aW9uIEljb252TGl0ZURlY29kZXJTdHJlYW0oY29udiwgb3B0aW9ucykge1xuICAgIHRoaXMuY29udiA9IGNvbnY7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0aW9ucy5lbmNvZGluZyA9IHRoaXMuZW5jb2RpbmcgPSAndXRmOCc7IC8vIFdlIG91dHB1dCBzdHJpbmdzLlxuICAgIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xufVxuXG5JY29udkxpdGVEZWNvZGVyU3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVHJhbnNmb3JtLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBJY29udkxpdGVEZWNvZGVyU3RyZWFtIH1cbn0pO1xuXG5JY29udkxpdGVEZWNvZGVyU3RyZWFtLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24oY2h1bmssIGVuY29kaW5nLCBkb25lKSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspKVxuICAgICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoXCJJY29udiBkZWNvZGluZyBzdHJlYW0gbmVlZHMgYnVmZmVycyBhcyBpdHMgaW5wdXQuXCIpKTtcbiAgICB0cnkge1xuICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LndyaXRlKGNodW5rKTtcbiAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoKSB0aGlzLnB1c2gocmVzLCB0aGlzLmVuY29kaW5nKTtcbiAgICAgICAgZG9uZSgpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBkb25lKGUpO1xuICAgIH1cbn1cblxuSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24oZG9uZSkge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciByZXMgPSB0aGlzLmNvbnYuZW5kKCk7XG4gICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkgdGhpcy5wdXNoKHJlcywgdGhpcy5lbmNvZGluZyk7ICAgICAgICAgICAgICAgIFxuICAgICAgICBkb25lKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGRvbmUoZSk7XG4gICAgfVxufVxuXG5JY29udkxpdGVEZWNvZGVyU3RyZWFtLnByb3RvdHlwZS5jb2xsZWN0ID0gZnVuY3Rpb24oY2IpIHtcbiAgICB2YXIgcmVzID0gJyc7XG4gICAgdGhpcy5vbignZXJyb3InLCBjYik7XG4gICAgdGhpcy5vbignZGF0YScsIGZ1bmN0aW9uKGNodW5rKSB7IHJlcyArPSBjaHVuazsgfSk7XG4gICAgdGhpcy5vbignZW5kJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGNiKG51bGwsIHJlcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG59XG5cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2xpYi9zdHJlYW1zLmpzXG4vLyBtb2R1bGUgaWQgPSAxNDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgQnVmZmVyID0gcmVxdWlyZShcImJ1ZmZlclwiKS5CdWZmZXI7XG5cbi8vID09IEV4dGVuZCBOb2RlIHByaW1pdGl2ZXMgdG8gdXNlIGljb252LWxpdGUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGljb252KSB7XG4gICAgdmFyIG9yaWdpbmFsID0gdW5kZWZpbmVkOyAvLyBQbGFjZSB0byBrZWVwIG9yaWdpbmFsIG1ldGhvZHMuXG5cbiAgICAvLyBOb2RlIGF1dGhvcnMgcmV3cm90ZSBCdWZmZXIgaW50ZXJuYWxzIHRvIG1ha2UgaXQgY29tcGF0aWJsZSB3aXRoXG4gICAgLy8gVWludDhBcnJheSBhbmQgd2UgY2Fubm90IHBhdGNoIGtleSBmdW5jdGlvbnMgc2luY2UgdGhlbi5cbiAgICBpY29udi5zdXBwb3J0c05vZGVFbmNvZGluZ3NFeHRlbnNpb24gPSAhKG5ldyBCdWZmZXIoMCkgaW5zdGFuY2VvZiBVaW50OEFycmF5KTtcblxuICAgIGljb252LmV4dGVuZE5vZGVFbmNvZGluZ3MgPSBmdW5jdGlvbiBleHRlbmROb2RlRW5jb2RpbmdzKCkge1xuICAgICAgICBpZiAob3JpZ2luYWwpIHJldHVybjtcbiAgICAgICAgb3JpZ2luYWwgPSB7fTtcblxuICAgICAgICBpZiAoIWljb252LnN1cHBvcnRzTm9kZUVuY29kaW5nc0V4dGVuc2lvbikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkFDVElPTiBORUVERUQ6IHJlcXVpcmUoJ2ljb252LWxpdGUnKS5leHRlbmROb2RlRW5jb2RpbmdzKCkgaXMgbm90IHN1cHBvcnRlZCBpbiB5b3VyIHZlcnNpb24gb2YgTm9kZVwiKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJTZWUgbW9yZSBpbmZvIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9hc2h0dWNoa2luL2ljb252LWxpdGUvd2lraS9Ob2RlLXY0LWNvbXBhdGliaWxpdHlcIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbm9kZU5hdGl2ZUVuY29kaW5ncyA9IHtcbiAgICAgICAgICAgICdoZXgnOiB0cnVlLCAndXRmOCc6IHRydWUsICd1dGYtOCc6IHRydWUsICdhc2NpaSc6IHRydWUsICdiaW5hcnknOiB0cnVlLCBcbiAgICAgICAgICAgICdiYXNlNjQnOiB0cnVlLCAndWNzMic6IHRydWUsICd1Y3MtMic6IHRydWUsICd1dGYxNmxlJzogdHJ1ZSwgJ3V0Zi0xNmxlJzogdHJ1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICBCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyA9IGZ1bmN0aW9uKGVuYykge1xuICAgICAgICAgICAgcmV0dXJuIGVuYyAmJiBub2RlTmF0aXZlRW5jb2RpbmdzW2VuYy50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC0tIFNsb3dCdWZmZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgdmFyIFNsb3dCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5TbG93QnVmZmVyO1xuXG4gICAgICAgIG9yaWdpbmFsLlNsb3dCdWZmZXJUb1N0cmluZyA9IFNsb3dCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nO1xuICAgICAgICBTbG93QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gICAgICAgICAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZyB8fCAndXRmOCcpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlXG4gICAgICAgICAgICBpZiAoQnVmZmVyLmlzTmF0aXZlRW5jb2RpbmcoZW5jb2RpbmcpKVxuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5TbG93QnVmZmVyVG9TdHJpbmcuY2FsbCh0aGlzLCBlbmNvZGluZywgc3RhcnQsIGVuZCk7XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdXNlIG91ciBkZWNvZGluZyBtZXRob2QuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHN0YXJ0ID09ICd1bmRlZmluZWQnKSBzdGFydCA9IDA7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVuZCA9PSAndW5kZWZpbmVkJykgZW5kID0gdGhpcy5sZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gaWNvbnYuZGVjb2RlKHRoaXMuc2xpY2Uoc3RhcnQsIGVuZCksIGVuY29kaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9yaWdpbmFsLlNsb3dCdWZmZXJXcml0ZSA9IFNsb3dCdWZmZXIucHJvdG90eXBlLndyaXRlO1xuICAgICAgICBTbG93QnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gICAgICAgICAgICAvLyBTdXBwb3J0IGJvdGggKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKVxuICAgICAgICAgICAgLy8gYW5kIHRoZSBsZWdhY3kgKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldCwgbGVuZ3RoKVxuICAgICAgICAgICAgaWYgKGlzRmluaXRlKG9mZnNldCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBsZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgeyAgLy8gbGVnYWN5XG4gICAgICAgICAgICAgICAgdmFyIHN3YXAgPSBlbmNvZGluZztcbiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IG9mZnNldDtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSBsZW5ndGg7XG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gc3dhcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb2Zmc2V0ID0gK29mZnNldCB8fCAwO1xuICAgICAgICAgICAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSByZW1haW5pbmc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxlbmd0aCA9ICtsZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSByZW1haW5pbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAvLyBVc2UgbmF0aXZlIGNvbnZlcnNpb24gd2hlbiBwb3NzaWJsZVxuICAgICAgICAgICAgaWYgKEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuU2xvd0J1ZmZlcldyaXRlLmNhbGwodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpO1xuXG4gICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2F0dGVtcHQgdG8gd3JpdGUgYmV5b25kIGJ1ZmZlciBib3VuZHMnKTtcblxuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb3VyIGVuY29kaW5nIG1ldGhvZC5cbiAgICAgICAgICAgIHZhciBidWYgPSBpY29udi5lbmNvZGUoc3RyaW5nLCBlbmNvZGluZyk7XG4gICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCA8IGxlbmd0aCkgbGVuZ3RoID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGJ1Zi5jb3B5KHRoaXMsIG9mZnNldCwgMCwgbGVuZ3RoKTtcbiAgICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAtLSBCdWZmZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAgICAgb3JpZ2luYWwuQnVmZmVySXNFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nO1xuICAgICAgICBCdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gQnVmZmVyLmlzTmF0aXZlRW5jb2RpbmcoZW5jb2RpbmcpIHx8IGljb252LmVuY29kaW5nRXhpc3RzKGVuY29kaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9yaWdpbmFsLkJ1ZmZlckJ5dGVMZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgQnVmZmVyLmJ5dGVMZW5ndGggPSBTbG93QnVmZmVyLmJ5dGVMZW5ndGggPSBmdW5jdGlvbihzdHIsIGVuY29kaW5nKSB7XG4gICAgICAgICAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZyB8fCAndXRmOCcpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlXG4gICAgICAgICAgICBpZiAoQnVmZmVyLmlzTmF0aXZlRW5jb2RpbmcoZW5jb2RpbmcpKVxuICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5CdWZmZXJCeXRlTGVuZ3RoLmNhbGwodGhpcywgc3RyLCBlbmNvZGluZyk7XG5cbiAgICAgICAgICAgIC8vIFNsb3csIEkga25vdywgYnV0IHdlIGRvbid0IGhhdmUgYSBiZXR0ZXIgd2F5IHlldC5cbiAgICAgICAgICAgIHJldHVybiBpY29udi5lbmNvZGUoc3RyLCBlbmNvZGluZykubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgb3JpZ2luYWwuQnVmZmVyVG9TdHJpbmcgPSBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nO1xuICAgICAgICBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgLy8gVXNlIG5hdGl2ZSBjb252ZXJzaW9uIHdoZW4gcG9zc2libGVcbiAgICAgICAgICAgIGlmIChCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyhlbmNvZGluZykpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLkJ1ZmZlclRvU3RyaW5nLmNhbGwodGhpcywgZW5jb2RpbmcsIHN0YXJ0LCBlbmQpO1xuXG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHVzZSBvdXIgZGVjb2RpbmcgbWV0aG9kLlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGFydCA9PSAndW5kZWZpbmVkJykgc3RhcnQgPSAwO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmQgPT0gJ3VuZGVmaW5lZCcpIGVuZCA9IHRoaXMubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIGljb252LmRlY29kZSh0aGlzLnNsaWNlKHN0YXJ0LCBlbmQpLCBlbmNvZGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICBvcmlnaW5hbC5CdWZmZXJXcml0ZSA9IEJ1ZmZlci5wcm90b3R5cGUud3JpdGU7XG4gICAgICAgIEJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAgICAgICAgICAgdmFyIF9vZmZzZXQgPSBvZmZzZXQsIF9sZW5ndGggPSBsZW5ndGgsIF9lbmNvZGluZyA9IGVuY29kaW5nO1xuICAgICAgICAgICAgLy8gU3VwcG9ydCBib3RoIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZylcbiAgICAgICAgICAgIC8vIGFuZCB0aGUgbGVnYWN5IChzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aClcbiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nID0gbGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHsgIC8vIGxlZ2FjeVxuICAgICAgICAgICAgICAgIHZhciBzd2FwID0gZW5jb2Rpbmc7XG4gICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbGVuZ3RoO1xuICAgICAgICAgICAgICAgIGxlbmd0aCA9IHN3YXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgLy8gVXNlIG5hdGl2ZSBjb252ZXJzaW9uIHdoZW4gcG9zc2libGVcbiAgICAgICAgICAgIGlmIChCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyhlbmNvZGluZykpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLkJ1ZmZlcldyaXRlLmNhbGwodGhpcywgc3RyaW5nLCBfb2Zmc2V0LCBfbGVuZ3RoLCBfZW5jb2RpbmcpO1xuXG4gICAgICAgICAgICBvZmZzZXQgPSArb2Zmc2V0IHx8IDA7XG4gICAgICAgICAgICB2YXIgcmVtYWluaW5nID0gdGhpcy5sZW5ndGggLSBvZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGxlbmd0aCA9IHJlbWFpbmluZztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gK2xlbmd0aDtcbiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IHJlbWFpbmluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdHJpbmcubGVuZ3RoID4gMCAmJiAobGVuZ3RoIDwgMCB8fCBvZmZzZXQgPCAwKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYXR0ZW1wdCB0byB3cml0ZSBiZXlvbmQgYnVmZmVyIGJvdW5kcycpO1xuXG4gICAgICAgICAgICAvLyBPdGhlcndpc2UsIHVzZSBvdXIgZW5jb2RpbmcgbWV0aG9kLlxuICAgICAgICAgICAgdmFyIGJ1ZiA9IGljb252LmVuY29kZShzdHJpbmcsIGVuY29kaW5nKTtcbiAgICAgICAgICAgIGlmIChidWYubGVuZ3RoIDwgbGVuZ3RoKSBsZW5ndGggPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgYnVmLmNvcHkodGhpcywgb2Zmc2V0LCAwLCBsZW5ndGgpO1xuICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDtcblxuICAgICAgICAgICAgLy8gVE9ETzogU2V0IF9jaGFyc1dyaXR0ZW4uXG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIC0tIFJlYWRhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgaWYgKGljb252LnN1cHBvcnRzU3RyZWFtcykge1xuICAgICAgICAgICAgdmFyIFJlYWRhYmxlID0gcmVxdWlyZSgnc3RyZWFtJykuUmVhZGFibGU7XG5cbiAgICAgICAgICAgIG9yaWdpbmFsLlJlYWRhYmxlU2V0RW5jb2RpbmcgPSBSZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2Rpbmc7XG4gICAgICAgICAgICBSZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2RpbmcgPSBmdW5jdGlvbiBzZXRFbmNvZGluZyhlbmMsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAvLyBVc2Ugb3VyIG93biBkZWNvZGVyLCBpdCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlLlxuICAgICAgICAgICAgICAgIC8vIFdlIGNhbm5vdCB1c2Ugb3JpZ2luYWwgZnVuY3Rpb24gYXMgaXQgZG9lc24ndCBoYW5kbGUgQk9NLXMuXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyID0gaWNvbnYuZ2V0RGVjb2RlcihlbmMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFJlYWRhYmxlLnByb3RvdHlwZS5jb2xsZWN0ID0gaWNvbnYuX2NvbGxlY3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgaWNvbnYtbGl0ZSBOb2RlIHByaW1pdGl2ZSBleHRlbnNpb25zLlxuICAgIGljb252LnVuZG9FeHRlbmROb2RlRW5jb2RpbmdzID0gZnVuY3Rpb24gdW5kb0V4dGVuZE5vZGVFbmNvZGluZ3MoKSB7XG4gICAgICAgIGlmICghaWNvbnYuc3VwcG9ydHNOb2RlRW5jb2RpbmdzRXh0ZW5zaW9uKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIW9yaWdpbmFsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicmVxdWlyZSgnaWNvbnYtbGl0ZScpLnVuZG9FeHRlbmROb2RlRW5jb2RpbmdzKCk6IE5vdGhpbmcgdG8gdW5kbzsgZXh0ZW5kTm9kZUVuY29kaW5ncygpIGlzIG5vdCBjYWxsZWQuXCIpXG5cbiAgICAgICAgZGVsZXRlIEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nO1xuXG4gICAgICAgIHZhciBTbG93QnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuU2xvd0J1ZmZlcjtcblxuICAgICAgICBTbG93QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IG9yaWdpbmFsLlNsb3dCdWZmZXJUb1N0cmluZztcbiAgICAgICAgU2xvd0J1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBvcmlnaW5hbC5TbG93QnVmZmVyV3JpdGU7XG5cbiAgICAgICAgQnVmZmVyLmlzRW5jb2RpbmcgPSBvcmlnaW5hbC5CdWZmZXJJc0VuY29kaW5nO1xuICAgICAgICBCdWZmZXIuYnl0ZUxlbmd0aCA9IG9yaWdpbmFsLkJ1ZmZlckJ5dGVMZW5ndGg7XG4gICAgICAgIEJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBvcmlnaW5hbC5CdWZmZXJUb1N0cmluZztcbiAgICAgICAgQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IG9yaWdpbmFsLkJ1ZmZlcldyaXRlO1xuXG4gICAgICAgIGlmIChpY29udi5zdXBwb3J0c1N0cmVhbXMpIHtcbiAgICAgICAgICAgIHZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJ3N0cmVhbScpLlJlYWRhYmxlO1xuXG4gICAgICAgICAgICBSZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2RpbmcgPSBvcmlnaW5hbC5SZWFkYWJsZVNldEVuY29kaW5nO1xuICAgICAgICAgICAgZGVsZXRlIFJlYWRhYmxlLnByb3RvdHlwZS5jb2xsZWN0O1xuICAgICAgICB9XG5cbiAgICAgICAgb3JpZ2luYWwgPSB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvbGliL2V4dGVuZC1ub2RlLmpzXG4vLyBtb2R1bGUgaWQgPSAxNTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBlZS1maXJzdFxuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpcnN0XG5cbi8qKlxuICogR2V0IHRoZSBmaXJzdCBldmVudCBpbiBhIHNldCBvZiBldmVudCBlbWl0dGVycyBhbmQgZXZlbnQgcGFpcnMuXG4gKlxuICogQHBhcmFtIHthcnJheX0gc3R1ZmZcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGRvbmVcbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmaXJzdChzdHVmZiwgZG9uZSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoc3R1ZmYpKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZyBtdXN0IGJlIGFuIGFycmF5IG9mIFtlZSwgZXZlbnRzLi4uXSBhcnJheXMnKVxuXG4gIHZhciBjbGVhbnVwcyA9IFtdXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHVmZi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBhcnIgPSBzdHVmZltpXVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycikgfHwgYXJyLmxlbmd0aCA8IDIpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlYWNoIGFycmF5IG1lbWJlciBtdXN0IGJlIFtlZSwgZXZlbnRzLi4uXScpXG5cbiAgICB2YXIgZWUgPSBhcnJbMF1cblxuICAgIGZvciAodmFyIGogPSAxOyBqIDwgYXJyLmxlbmd0aDsgaisrKSB7XG4gICAgICB2YXIgZXZlbnQgPSBhcnJbal1cbiAgICAgIHZhciBmbiA9IGxpc3RlbmVyKGV2ZW50LCBjYWxsYmFjaylcblxuICAgICAgLy8gbGlzdGVuIHRvIHRoZSBldmVudFxuICAgICAgZWUub24oZXZlbnQsIGZuKVxuICAgICAgLy8gcHVzaCB0aGlzIGxpc3RlbmVyIHRvIHRoZSBsaXN0IG9mIGNsZWFudXBzXG4gICAgICBjbGVhbnVwcy5wdXNoKHtcbiAgICAgICAgZWU6IGVlLFxuICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgIGZuOiBmbixcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2FsbGJhY2soKSB7XG4gICAgY2xlYW51cCgpXG4gICAgZG9uZS5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gIH1cblxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHZhciB4XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbGVhbnVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IGNsZWFudXBzW2ldXG4gICAgICB4LmVlLnJlbW92ZUxpc3RlbmVyKHguZXZlbnQsIHguZm4pXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gdGh1bmsoZm4pIHtcbiAgICBkb25lID0gZm5cbiAgfVxuXG4gIHRodW5rLmNhbmNlbCA9IGNsZWFudXBcblxuICByZXR1cm4gdGh1bmtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIGV2ZW50IGxpc3RlbmVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsaXN0ZW5lcihldmVudCwgZG9uZSkge1xuICByZXR1cm4gZnVuY3Rpb24gb25ldmVudChhcmcxKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aClcbiAgICB2YXIgZWUgPSB0aGlzXG4gICAgdmFyIGVyciA9IGV2ZW50ID09PSAnZXJyb3InXG4gICAgICA/IGFyZzFcbiAgICAgIDogbnVsbFxuXG4gICAgLy8gY29weSBhcmdzIHRvIHByZXZlbnQgYXJndW1lbnRzIGVzY2FwaW5nIHNjb3BlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldXG4gICAgfVxuXG4gICAgZG9uZShlcnIsIGVlLCBldmVudCwgYXJncylcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2VlLWZpcnN0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBtZWRpYS10eXBlclxuICogQ29weXJpZ2h0KGMpIDIwMTQgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoICooIFwiO1wiIHBhcmFtZXRlciApIGluIFJGQyAyNjE2IHNlYyAzLjdcbiAqXG4gKiBwYXJhbWV0ZXIgICAgID0gdG9rZW4gXCI9XCIgKCB0b2tlbiB8IHF1b3RlZC1zdHJpbmcgKVxuICogdG9rZW4gICAgICAgICA9IDEqPGFueSBDSEFSIGV4Y2VwdCBDVExzIG9yIHNlcGFyYXRvcnM+XG4gKiBzZXBhcmF0b3JzICAgID0gXCIoXCIgfCBcIilcIiB8IFwiPFwiIHwgXCI+XCIgfCBcIkBcIlxuICogICAgICAgICAgICAgICB8IFwiLFwiIHwgXCI7XCIgfCBcIjpcIiB8IFwiXFxcIiB8IDxcIj5cbiAqICAgICAgICAgICAgICAgfCBcIi9cIiB8IFwiW1wiIHwgXCJdXCIgfCBcIj9cIiB8IFwiPVwiXG4gKiAgICAgICAgICAgICAgIHwgXCJ7XCIgfCBcIn1cIiB8IFNQIHwgSFRcbiAqIHF1b3RlZC1zdHJpbmcgPSAoIDxcIj4gKihxZHRleHQgfCBxdW90ZWQtcGFpciApIDxcIj4gKVxuICogcWR0ZXh0ICAgICAgICA9IDxhbnkgVEVYVCBleGNlcHQgPFwiPj5cbiAqIHF1b3RlZC1wYWlyICAgPSBcIlxcXCIgQ0hBUlxuICogQ0hBUiAgICAgICAgICA9IDxhbnkgVVMtQVNDSUkgY2hhcmFjdGVyIChvY3RldHMgMCAtIDEyNyk+XG4gKiBURVhUICAgICAgICAgID0gPGFueSBPQ1RFVCBleGNlcHQgQ1RMcywgYnV0IGluY2x1ZGluZyBMV1M+XG4gKiBMV1MgICAgICAgICAgID0gW0NSTEZdIDEqKCBTUCB8IEhUIClcbiAqIENSTEYgICAgICAgICAgPSBDUiBMRlxuICogQ1IgICAgICAgICAgICA9IDxVUy1BU0NJSSBDUiwgY2FycmlhZ2UgcmV0dXJuICgxMyk+XG4gKiBMRiAgICAgICAgICAgID0gPFVTLUFTQ0lJIExGLCBsaW5lZmVlZCAoMTApPlxuICogU1AgICAgICAgICAgICA9IDxVUy1BU0NJSSBTUCwgc3BhY2UgKDMyKT5cbiAqIFNIVCAgICAgICAgICAgPSA8VVMtQVNDSUkgSFQsIGhvcml6b250YWwtdGFiICg5KT5cbiAqIENUTCAgICAgICAgICAgPSA8YW55IFVTLUFTQ0lJIGNvbnRyb2wgY2hhcmFjdGVyIChvY3RldHMgMCAtIDMxKSBhbmQgREVMICgxMjcpPlxuICogT0NURVQgICAgICAgICA9IDxhbnkgOC1iaXQgc2VxdWVuY2Ugb2YgZGF0YT5cbiAqL1xudmFyIHBhcmFtUmVnRXhwID0gLzsgKihbISMkJSYnXFwqXFwrXFwtXFwuMC05QS1aXFxeX2BhLXpcXHx+XSspICo9ICooXCIoPzpbICFcXHUwMDIzLVxcdTAwNWJcXHUwMDVkLVxcdTAwN2VcXHUwMDgwLVxcdTAwZmZdfFxcXFxbXFx1MDAyMC1cXHUwMDdlXSkqXCJ8WyEjJCUmJ1xcKlxcK1xcLVxcLjAtOUEtWlxcXl9gYS16XFx8fl0rKSAqL2c7XG52YXIgdGV4dFJlZ0V4cCA9IC9eW1xcdTAwMjAtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl0rJC9cbnZhciB0b2tlblJlZ0V4cCA9IC9eWyEjJCUmJ1xcKlxcK1xcLVxcLjAtOUEtWlxcXl9gYS16XFx8fl0rJC9cblxuLyoqXG4gKiBSZWdFeHAgdG8gbWF0Y2ggcXVvdGVkLXBhaXIgaW4gUkZDIDI2MTZcbiAqXG4gKiBxdW90ZWQtcGFpciA9IFwiXFxcIiBDSEFSXG4gKiBDSEFSICAgICAgICA9IDxhbnkgVVMtQVNDSUkgY2hhcmFjdGVyIChvY3RldHMgMCAtIDEyNyk+XG4gKi9cbnZhciBxZXNjUmVnRXhwID0gL1xcXFwoW1xcdTAwMDAtXFx1MDA3Zl0pL2c7XG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGNoYXJzIHRoYXQgbXVzdCBiZSBxdW90ZWQtcGFpciBpbiBSRkMgMjYxNlxuICovXG52YXIgcXVvdGVSZWdFeHAgPSAvKFtcXFxcXCJdKS9nO1xuXG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCB0eXBlIGluIFJGQyA2ODM4XG4gKlxuICogdHlwZS1uYW1lID0gcmVzdHJpY3RlZC1uYW1lXG4gKiBzdWJ0eXBlLW5hbWUgPSByZXN0cmljdGVkLW5hbWVcbiAqIHJlc3RyaWN0ZWQtbmFtZSA9IHJlc3RyaWN0ZWQtbmFtZS1maXJzdCAqMTI2cmVzdHJpY3RlZC1uYW1lLWNoYXJzXG4gKiByZXN0cmljdGVkLW5hbWUtZmlyc3QgID0gQUxQSEEgLyBESUdJVFxuICogcmVzdHJpY3RlZC1uYW1lLWNoYXJzICA9IEFMUEhBIC8gRElHSVQgLyBcIiFcIiAvIFwiI1wiIC9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBcIiRcIiAvIFwiJlwiIC8gXCItXCIgLyBcIl5cIiAvIFwiX1wiXG4gKiByZXN0cmljdGVkLW5hbWUtY2hhcnMgPS8gXCIuXCIgOyBDaGFyYWN0ZXJzIGJlZm9yZSBmaXJzdCBkb3QgYWx3YXlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgc3BlY2lmeSBhIGZhY2V0IG5hbWVcbiAqIHJlc3RyaWN0ZWQtbmFtZS1jaGFycyA9LyBcIitcIiA7IENoYXJhY3RlcnMgYWZ0ZXIgbGFzdCBwbHVzIGFsd2F5c1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHNwZWNpZnkgYSBzdHJ1Y3R1cmVkIHN5bnRheCBzdWZmaXhcbiAqIEFMUEhBID0gICV4NDEtNUEgLyAleDYxLTdBICAgOyBBLVogLyBhLXpcbiAqIERJR0lUID0gICV4MzAtMzkgICAgICAgICAgICAgOyAwLTlcbiAqL1xudmFyIHN1YnR5cGVOYW1lUmVnRXhwID0gL15bQS1aYS16MC05XVtBLVphLXowLTkhIyQmXl8uLV17MCwxMjZ9JC9cbnZhciB0eXBlTmFtZVJlZ0V4cCA9IC9eW0EtWmEtejAtOV1bQS1aYS16MC05ISMkJl5fLV17MCwxMjZ9JC9cbnZhciB0eXBlUmVnRXhwID0gL14gKihbQS1aYS16MC05XVtBLVphLXowLTkhIyQmXl8tXXswLDEyNn0pXFwvKFtBLVphLXowLTldW0EtWmEtejAtOSEjJCZeXy4rLV17MCwxMjZ9KSAqJC87XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxuZXhwb3J0cy5mb3JtYXQgPSBmb3JtYXRcbmV4cG9ydHMucGFyc2UgPSBwYXJzZVxuXG4vKipcbiAqIEZvcm1hdCBvYmplY3QgdG8gbWVkaWEgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb2JqXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcm1hdChvYmopIHtcbiAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBvYmogaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgdmFyIHBhcmFtZXRlcnMgPSBvYmoucGFyYW1ldGVyc1xuICB2YXIgc3VidHlwZSA9IG9iai5zdWJ0eXBlXG4gIHZhciBzdWZmaXggPSBvYmouc3VmZml4XG4gIHZhciB0eXBlID0gb2JqLnR5cGVcblxuICBpZiAoIXR5cGUgfHwgIXR5cGVOYW1lUmVnRXhwLnRlc3QodHlwZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHR5cGUnKVxuICB9XG5cbiAgaWYgKCFzdWJ0eXBlIHx8ICFzdWJ0eXBlTmFtZVJlZ0V4cC50ZXN0KHN1YnR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWJ0eXBlJylcbiAgfVxuXG4gIC8vIGZvcm1hdCBhcyB0eXBlL3N1YnR5cGVcbiAgdmFyIHN0cmluZyA9IHR5cGUgKyAnLycgKyBzdWJ0eXBlXG5cbiAgLy8gYXBwZW5kICtzdWZmaXhcbiAgaWYgKHN1ZmZpeCkge1xuICAgIGlmICghdHlwZU5hbWVSZWdFeHAudGVzdChzdWZmaXgpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1ZmZpeCcpXG4gICAgfVxuXG4gICAgc3RyaW5nICs9ICcrJyArIHN1ZmZpeFxuICB9XG5cbiAgLy8gYXBwZW5kIHBhcmFtZXRlcnNcbiAgaWYgKHBhcmFtZXRlcnMgJiYgdHlwZW9mIHBhcmFtZXRlcnMgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIHBhcmFtXG4gICAgdmFyIHBhcmFtcyA9IE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLnNvcnQoKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHBhcmFtID0gcGFyYW1zW2ldXG5cbiAgICAgIGlmICghdG9rZW5SZWdFeHAudGVzdChwYXJhbSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgbmFtZScpXG4gICAgICB9XG5cbiAgICAgIHN0cmluZyArPSAnOyAnICsgcGFyYW0gKyAnPScgKyBxc3RyaW5nKHBhcmFtZXRlcnNbcGFyYW1dKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHJpbmdcbn1cblxuLyoqXG4gKiBQYXJzZSBtZWRpYSB0eXBlIHRvIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHN0cmluZ1xuICogQHJldHVybiB7T2JqZWN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZShzdHJpbmcpIHtcbiAgaWYgKCFzdHJpbmcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBzdHJpbmcgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgLy8gc3VwcG9ydCByZXEvcmVzLWxpa2Ugb2JqZWN0cyBhcyBhcmd1bWVudFxuICBpZiAodHlwZW9mIHN0cmluZyA9PT0gJ29iamVjdCcpIHtcbiAgICBzdHJpbmcgPSBnZXRjb250ZW50dHlwZShzdHJpbmcpXG4gIH1cblxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBzdHJpbmcgaXMgcmVxdWlyZWQgdG8gYmUgYSBzdHJpbmcnKVxuICB9XG5cbiAgdmFyIGluZGV4ID0gc3RyaW5nLmluZGV4T2YoJzsnKVxuICB2YXIgdHlwZSA9IGluZGV4ICE9PSAtMVxuICAgID8gc3RyaW5nLnN1YnN0cigwLCBpbmRleClcbiAgICA6IHN0cmluZ1xuXG4gIHZhciBrZXlcbiAgdmFyIG1hdGNoXG4gIHZhciBvYmogPSBzcGxpdFR5cGUodHlwZSlcbiAgdmFyIHBhcmFtcyA9IHt9XG4gIHZhciB2YWx1ZVxuXG4gIHBhcmFtUmVnRXhwLmxhc3RJbmRleCA9IGluZGV4XG5cbiAgd2hpbGUgKG1hdGNoID0gcGFyYW1SZWdFeHAuZXhlYyhzdHJpbmcpKSB7XG4gICAgaWYgKG1hdGNoLmluZGV4ICE9PSBpbmRleCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgICB9XG5cbiAgICBpbmRleCArPSBtYXRjaFswXS5sZW5ndGhcbiAgICBrZXkgPSBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG4gICAgdmFsdWUgPSBtYXRjaFsyXVxuXG4gICAgaWYgKHZhbHVlWzBdID09PSAnXCInKSB7XG4gICAgICAvLyByZW1vdmUgcXVvdGVzIGFuZCBlc2NhcGVzXG4gICAgICB2YWx1ZSA9IHZhbHVlXG4gICAgICAgIC5zdWJzdHIoMSwgdmFsdWUubGVuZ3RoIC0gMilcbiAgICAgICAgLnJlcGxhY2UocWVzY1JlZ0V4cCwgJyQxJylcbiAgICB9XG5cbiAgICBwYXJhbXNba2V5XSA9IHZhbHVlXG4gIH1cblxuICBpZiAoaW5kZXggIT09IC0xICYmIGluZGV4ICE9PSBzdHJpbmcubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBwYXJhbWV0ZXIgZm9ybWF0JylcbiAgfVxuXG4gIG9iai5wYXJhbWV0ZXJzID0gcGFyYW1zXG5cbiAgcmV0dXJuIG9ialxufVxuXG4vKipcbiAqIEdldCBjb250ZW50LXR5cGUgZnJvbSByZXEvcmVzIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9XG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRjb250ZW50dHlwZShvYmopIHtcbiAgaWYgKHR5cGVvZiBvYmouZ2V0SGVhZGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gcmVzLWxpa2VcbiAgICByZXR1cm4gb2JqLmdldEhlYWRlcignY29udGVudC10eXBlJylcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqLmhlYWRlcnMgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gcmVxLWxpa2VcbiAgICByZXR1cm4gb2JqLmhlYWRlcnMgJiYgb2JqLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddXG4gIH1cbn1cblxuLyoqXG4gKiBRdW90ZSBhIHN0cmluZyBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbFxuICogQHJldHVybiB7c3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcXN0cmluZyh2YWwpIHtcbiAgdmFyIHN0ciA9IFN0cmluZyh2YWwpXG5cbiAgLy8gbm8gbmVlZCB0byBxdW90ZSB0b2tlbnNcbiAgaWYgKHRva2VuUmVnRXhwLnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiBzdHJcbiAgfVxuXG4gIGlmIChzdHIubGVuZ3RoID4gMCAmJiAhdGV4dFJlZ0V4cC50ZXN0KHN0cikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHBhcmFtZXRlciB2YWx1ZScpXG4gIH1cblxuICByZXR1cm4gJ1wiJyArIHN0ci5yZXBsYWNlKHF1b3RlUmVnRXhwLCAnXFxcXCQxJykgKyAnXCInXG59XG5cbi8qKlxuICogU2ltcGx5IFwidHlwZS9zdWJ0eXBlK3NpZmZ4XCIgaW50byBwYXJ0cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzcGxpdFR5cGUoc3RyaW5nKSB7XG4gIHZhciBtYXRjaCA9IHR5cGVSZWdFeHAuZXhlYyhzdHJpbmcudG9Mb3dlckNhc2UoKSlcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBtZWRpYSB0eXBlJylcbiAgfVxuXG4gIHZhciB0eXBlID0gbWF0Y2hbMV1cbiAgdmFyIHN1YnR5cGUgPSBtYXRjaFsyXVxuICB2YXIgc3VmZml4XG5cbiAgLy8gc3VmZml4IGFmdGVyIGxhc3QgK1xuICB2YXIgaW5kZXggPSBzdWJ0eXBlLmxhc3RJbmRleE9mKCcrJylcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIHN1ZmZpeCA9IHN1YnR5cGUuc3Vic3RyKGluZGV4ICsgMSlcbiAgICBzdWJ0eXBlID0gc3VidHlwZS5zdWJzdHIoMCwgaW5kZXgpXG4gIH1cblxuICB2YXIgb2JqID0ge1xuICAgIHR5cGU6IHR5cGUsXG4gICAgc3VidHlwZTogc3VidHlwZSxcbiAgICBzdWZmaXg6IHN1ZmZpeFxuICB9XG5cbiAgcmV0dXJuIG9ialxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL21lZGlhLXR5cGVyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNTJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBtaW1lLWRiXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBKb25hdGhhbiBPbmdcbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2RiLmpzb24nKVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL21pbWUtZGIvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE1M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHtcImFwcGxpY2F0aW9uLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uLzNncGRhc2gtcW9lLXJlcG9ydCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi8zZ3BwLWltcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9hMmxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9hY3RpdmVtZXNzYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vYWx0by1jb3N0bWFwK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vYWx0by1jb3N0bWFwZmlsdGVyK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vYWx0by1kaXJlY3RvcnkranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50Y29zdCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRjb3N0cGFyYW1zK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vYWx0by1lbmRwb2ludHByb3AranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50cHJvcHBhcmFtcytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2FsdG8tZXJyb3IranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9hbHRvLW5ldHdvcmttYXAranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9hbHRvLW5ldHdvcmttYXBmaWx0ZXIranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9hbWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlelwiXX0sXCJhcHBsaWNhdGlvbi9hcHBsZWZpbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9hcHBsaXh3YXJlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhd1wiXX0sXCJhcHBsaWNhdGlvbi9hdGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9hdGZ4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vYXRvbSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiYXRvbVwiXX0sXCJhcHBsaWNhdGlvbi9hdG9tY2F0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImF0b21jYXRcIl19LFwiYXBwbGljYXRpb24vYXRvbWRlbGV0ZWQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vYXRvbWljbWFpbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2F0b21zdmMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYXRvbXN2Y1wiXX0sXCJhcHBsaWNhdGlvbi9hdHhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2F1dGgtcG9saWN5K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2JhY25ldC14ZGQremlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vYmF0Y2gtc210cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2Jkb2NcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJiZG9jXCJdfSxcImFwcGxpY2F0aW9uL2JlZXAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY2FsZW5kYXIranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9jYWxlbmRhcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jYWxsLWNvbXBsZXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jYWxzLTE4NDBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jYm9yXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY2NjZXhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jY21wK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NjeG1sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNjeG1sXCJdfSxcImFwcGxpY2F0aW9uL2NkZngreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY2RtaS1jYXBhYmlsaXR5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2RtaWFcIl19LFwiYXBwbGljYXRpb24vY2RtaS1jb250YWluZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjZG1pY1wiXX0sXCJhcHBsaWNhdGlvbi9jZG1pLWRvbWFpblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNkbWlkXCJdfSxcImFwcGxpY2F0aW9uL2NkbWktb2JqZWN0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2RtaW9cIl19LFwiYXBwbGljYXRpb24vY2RtaS1xdWV1ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNkbWlxXCJdfSxcImFwcGxpY2F0aW9uL2NkbmlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jZWFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jZWEtMjAxOCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jZWxsbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY2Z3XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY2x1ZV9pbmZvK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2Ntc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NucnAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY29hcC1ncm91cCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2NvYXAtcGF5bG9hZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NvbW1vbmdyb3VuZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NvbmZlcmVuY2UtaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jb3NlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY29zZS1rZXlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jb3NlLWtleS1zZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jcGwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vY3NyYXR0cnNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9jc3RhK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2NzdGFkYXRhK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2Nzdm0ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9jdS1zZWVtZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY3VcIl19LFwiYXBwbGljYXRpb24vY3liZXJjYXNoXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZGFydFwiOntcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vZGFzaCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtcGRcIl19LFwiYXBwbGljYXRpb24vZGFzaGRlbHRhXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZGF2bW91bnQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZGF2bW91bnRcIl19LFwiYXBwbGljYXRpb24vZGNhLXJmdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2RjZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2RlYy1keFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2RpYWxvZy1pbmZvK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2RpY29tXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZGljb20ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9kaWNvbSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9kaWlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9kaXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9kbnNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9kb2Nib29rK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZGJrXCJdfSxcImFwcGxpY2F0aW9uL2Rza3BwK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2Rzc2MrZGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZHNzY1wiXX0sXCJhcHBsaWNhdGlvbi9kc3NjK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhkc3NjXCJdfSxcImFwcGxpY2F0aW9uL2R2Y3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lY21hc2NyaXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImVjbWFcIl19LFwiYXBwbGljYXRpb24vZWRpLWNvbnNlbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lZGkteDEyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJhcHBsaWNhdGlvbi9lZGlmYWN0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJhcHBsaWNhdGlvbi9lZmlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5jb21tZW50K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLmNvbnRyb2wreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuZGV2aWNlaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5lY2FsbC5tc2RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5wcm92aWRlcmluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuc2VydmljZWluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuc3Vic2NyaWJlcmluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEudmVkcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9lbW1hK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImVtbWFcIl19LFwiYXBwbGljYXRpb24vZW1vdGlvbm1sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2VuY2FwcnRwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZXBwK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2VwdWIremlwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZXB1YlwiXX0sXCJhcHBsaWNhdGlvbi9lc2hvcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2V4aVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImV4aVwiXX0sXCJhcHBsaWNhdGlvbi9mYXN0aW5mb3NldFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2Zhc3Rzb2FwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZmR0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2ZoaXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZmlkby50cnVzdGVkLWFwcHMranNvblwiOntcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vZml0c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2ZvbnQtc2ZudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2ZvbnQtdGRwZnJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwZnJcIl19LFwiYXBwbGljYXRpb24vZm9udC13b2ZmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ3b2ZmXCJdfSxcImFwcGxpY2F0aW9uL2ZyYW1ld29yay1hdHRyaWJ1dGVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2dlbytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImdlb2pzb25cIl19LFwiYXBwbGljYXRpb24vZ2VvK2pzb24tc2VxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZ2VveGFjbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vZ21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdtbFwiXX0sXCJhcHBsaWNhdGlvbi9ncHgreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJncHhcIl19LFwiYXBwbGljYXRpb24vZ3hmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJneGZcIl19LFwiYXBwbGljYXRpb24vZ3ppcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiZ3pcIl19LFwiYXBwbGljYXRpb24vaDIyNFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2hlbGQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaGpzb25cIjp7XCJleHRlbnNpb25zXCI6W1wiaGpzb25cIl19LFwiYXBwbGljYXRpb24vaHR0cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2h5cGVyc3R1ZGlvXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3RrXCJdfSxcImFwcGxpY2F0aW9uL2liZS1rZXktcmVxdWVzdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9pYmUtcGtnLXJlcGx5K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2liZS1wcC1kYXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaWdlc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2ltLWlzY29tcG9zaW5nK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2luZGV4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaW5kZXguY21kXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaW5kZXgub2JqXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vaW5kZXgucmVzcG9uc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9pbmRleC52bmRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9pbmttbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpbmtcIixcImlua21sXCJdfSxcImFwcGxpY2F0aW9uL2lvdHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9pcGZpeFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImlwZml4XCJdfSxcImFwcGxpY2F0aW9uL2lwcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2lzdXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9pdHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImphclwiLFwid2FyXCIsXCJlYXJcIl19LFwiYXBwbGljYXRpb24vamF2YS1zZXJpYWxpemVkLW9iamVjdFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJzZXJcIl19LFwiYXBwbGljYXRpb24vamF2YS12bVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJjbGFzc1wiXX0sXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjaGFyc2V0XCI6XCJVVEYtOFwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJqc1wiLFwibWpzXCJdfSxcImFwcGxpY2F0aW9uL2pmMmZlZWQranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9qb3NlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vam9zZStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2pyZCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNoYXJzZXRcIjpcIlVURi04XCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImpzb25cIixcIm1hcFwiXX0sXCJhcHBsaWNhdGlvbi9qc29uLXBhdGNoK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vanNvbi1zZXFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9qc29uNVwiOntcImV4dGVuc2lvbnNcIjpbXCJqc29uNVwiXX0sXCJhcHBsaWNhdGlvbi9qc29ubWwranNvblwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImpzb25tbFwiXX0sXCJhcHBsaWNhdGlvbi9qd2sranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9qd2stc2V0K2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vand0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24va3BtbC1yZXF1ZXN0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2twbWwtcmVzcG9uc2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbGQranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJqc29ubGRcIl19LFwiYXBwbGljYXRpb24vbGdyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2xpbmstZm9ybWF0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbG9hZC1jb250cm9sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL2xvc3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibG9zdHhtbFwiXX0sXCJhcHBsaWNhdGlvbi9sb3N0c3luYyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9seGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYWMtYmluaGV4NDBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJocXhcIl19LFwiYXBwbGljYXRpb24vbWFjLWNvbXBhY3Rwcm9cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNwdFwiXX0sXCJhcHBsaWNhdGlvbi9tYWN3cml0ZWlpXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWFkcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtYWRzXCJdfSxcImFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb25cIjp7XCJjaGFyc2V0XCI6XCJVVEYtOFwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ3ZWJtYW5pZmVzdFwiXX0sXCJhcHBsaWNhdGlvbi9tYXJjXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXJjXCJdfSxcImFwcGxpY2F0aW9uL21hcmN4bWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXJjeFwiXX0sXCJhcHBsaWNhdGlvbi9tYXRoZW1hdGljYVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1hXCIsXCJuYlwiLFwibWJcIl19LFwiYXBwbGljYXRpb24vbWF0aG1sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1hdGhtbFwiXX0sXCJhcHBsaWNhdGlvbi9tYXRobWwtY29udGVudCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYXRobWwtcHJlc2VudGF0aW9uK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21ibXMtYXNzb2NpYXRlZC1wcm9jZWR1cmUtZGVzY3JpcHRpb24reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWJtcy1kZXJlZ2lzdGVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21ibXMtZW52ZWxvcGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWJtcy1tc2sreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWJtcy1tc2stcmVzcG9uc2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWJtcy1wcm90ZWN0aW9uLWRlc2NyaXB0aW9uK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21ibXMtcmVjZXB0aW9uLXJlcG9ydCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYm1zLXJlZ2lzdGVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21ibXMtcmVnaXN0ZXItcmVzcG9uc2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbWJtcy1zY2hlZHVsZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYm1zLXVzZXItc2VydmljZS1kZXNjcmlwdGlvbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tYm94XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWJveFwiXX0sXCJhcHBsaWNhdGlvbi9tZWRpYS1wb2xpY3ktZGF0YXNldCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tZWRpYV9jb250cm9sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21lZGlhc2VydmVyY29udHJvbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtc2NtbFwiXX0sXCJhcHBsaWNhdGlvbi9tZXJnZS1wYXRjaCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL21ldGFsaW5rK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibWV0YWxpbmtcIl19LFwiYXBwbGljYXRpb24vbWV0YWxpbms0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1ldGE0XCJdfSxcImFwcGxpY2F0aW9uL21ldHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWV0c1wiXX0sXCJhcHBsaWNhdGlvbi9tZjRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9taWtleVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21tdC11c2QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbW9kcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtb2RzXCJdfSxcImFwcGxpY2F0aW9uL21vc3Mta2V5c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21vc3Mtc2lnbmF0dXJlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbW9zc2tleS1kYXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbW9zc2tleS1yZXF1ZXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbXAyMVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm0yMVwiLFwibXAyMVwiXX0sXCJhcHBsaWNhdGlvbi9tcDRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtcDRzXCIsXCJtNHBcIl19LFwiYXBwbGljYXRpb24vbXBlZzQtZ2VuZXJpY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21wZWc0LWlvZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL21wZWc0LWlvZC14bXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tcmItY29uc3VtZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbXJiLXB1Ymxpc2greG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbXNjLWl2cit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9tc2MtbWl4ZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbXN3b3JkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJkb2NcIixcImRvdFwiXX0sXCJhcHBsaWNhdGlvbi9tdWQranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9teGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJteGZcIl19LFwiYXBwbGljYXRpb24vbi1xdWFkc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL24tdHJpcGxlc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL25hc2RhdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9uZXdzLWNoZWNrZ3JvdXBzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vbmV3cy1ncm91cGluZm9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9uZXdzLXRyYW5zbWlzc2lvblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL25sc21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL25vZGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9uc3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9vY3NwLXJlcXVlc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9vY3NwLXJlc3BvbnNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJiaW5cIixcImRtc1wiLFwibHJmXCIsXCJtYXJcIixcInNvXCIsXCJkaXN0XCIsXCJkaXN0elwiLFwicGtnXCIsXCJicGtcIixcImR1bXBcIixcImVsY1wiLFwiZGVwbG95XCIsXCJleGVcIixcImRsbFwiLFwiZGViXCIsXCJkbWdcIixcImlzb1wiLFwiaW1nXCIsXCJtc2lcIixcIm1zcFwiLFwibXNtXCIsXCJidWZmZXJcIl19LFwiYXBwbGljYXRpb24vb2RhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib2RhXCJdfSxcImFwcGxpY2F0aW9uL29keFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL29lYnBzLXBhY2thZ2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib3BmXCJdfSxcImFwcGxpY2F0aW9uL29nZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wib2d4XCJdfSxcImFwcGxpY2F0aW9uL29tZG9jK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wib21kb2NcIl19LFwiYXBwbGljYXRpb24vb25lbm90ZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wib25ldG9jXCIsXCJvbmV0b2MyXCIsXCJvbmV0bXBcIixcIm9uZXBrZ1wiXX0sXCJhcHBsaWNhdGlvbi9veHBzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib3hwc1wiXX0sXCJhcHBsaWNhdGlvbi9wMnAtb3ZlcmxheSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wYXJpdHlmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wYXNzcG9ydFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3BhdGNoLW9wcy1lcnJvcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4ZXJcIl19LFwiYXBwbGljYXRpb24vcGRmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJwZGZcIl19LFwiYXBwbGljYXRpb24vcGR4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcGdwLWVuY3J5cHRlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wicGdwXCJdfSxcImFwcGxpY2F0aW9uL3BncC1rZXlzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcGdwLXNpZ25hdHVyZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImFzY1wiLFwic2lnXCJdfSxcImFwcGxpY2F0aW9uL3BpY3MtcnVsZXNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInByZlwiXX0sXCJhcHBsaWNhdGlvbi9waWRmK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3BpZGYtZGlmZit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wa2NzMTBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwMTBcIl19LFwiYXBwbGljYXRpb24vcGtjczEyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcGtjczctbWltZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInA3bVwiLFwicDdjXCJdfSxcImFwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInA3c1wiXX0sXCJhcHBsaWNhdGlvbi9wa2NzOFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInA4XCJdfSxcImFwcGxpY2F0aW9uL3BrY3M4LWVuY3J5cHRlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3BraXgtYXR0ci1jZXJ0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYWNcIl19LFwiYXBwbGljYXRpb24vcGtpeC1jZXJ0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2VyXCJdfSxcImFwcGxpY2F0aW9uL3BraXgtY3JsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY3JsXCJdfSxcImFwcGxpY2F0aW9uL3BraXgtcGtpcGF0aFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBraXBhdGhcIl19LFwiYXBwbGljYXRpb24vcGtpeGNtcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBraVwiXX0sXCJhcHBsaWNhdGlvbi9wbHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGxzXCJdfSxcImFwcGxpY2F0aW9uL3BvYy1zZXR0aW5ncyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImFpXCIsXCJlcHNcIixcInBzXCJdfSxcImFwcGxpY2F0aW9uL3Bwc3AtdHJhY2tlcitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3Byb2JsZW0ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9wcm9ibGVtK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3Byb3ZlbmFuY2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcHJzLmFsdmVzdHJhbmQudGl0cmF4LXNoZWV0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcHJzLmN3d1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImN3d1wiXX0sXCJhcHBsaWNhdGlvbi9wcnMuaHB1Yit6aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wcnMubnByZW5kXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcHJzLnBsdWNrZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9wcnMucmRmLXhtbC1jcnlwdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3Bycy54c2YreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcHNrYyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwc2tjeG1sXCJdfSxcImFwcGxpY2F0aW9uL3FzaWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9yYW1sK3lhbWxcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInJhbWxcIl19LFwiYXBwbGljYXRpb24vcmFwdG9yZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcmRhcCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3JkZit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wicmRmXCJdfSxcImFwcGxpY2F0aW9uL3JlZ2luZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicmlmXCJdfSxcImFwcGxpY2F0aW9uL3JlbGF4LW5nLWNvbXBhY3Qtc3ludGF4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicm5jXCJdfSxcImFwcGxpY2F0aW9uL3JlbW90ZS1wcmludGluZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3JlcHV0b24ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJybFwiXX0sXCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cy1kaWZmK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInJsZFwiXX0sXCJhcHBsaWNhdGlvbi9yZmMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcmlzY29zXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcmxtaSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9ybHMtc2VydmljZXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicnNcIl19LFwiYXBwbGljYXRpb24vcm91dGUtYXBkK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3JvdXRlLXMtdHNpZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9yb3V0ZS11c2QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcnBraS1naG9zdGJ1c3RlcnNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJnYnJcIl19LFwiYXBwbGljYXRpb24vcnBraS1tYW5pZmVzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1mdFwiXX0sXCJhcHBsaWNhdGlvbi9ycGtpLXB1YmxpY2F0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcnBraS1yb2FcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJyb2FcIl19LFwiYXBwbGljYXRpb24vcnBraS11cGRvd25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9yc2QreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJyc2RcIl19LFwiYXBwbGljYXRpb24vcnNzK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInJzc1wiXX0sXCJhcHBsaWNhdGlvbi9ydGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wicnRmXCJdfSxcImFwcGxpY2F0aW9uL3J0cGxvb3BiYWNrXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vcnR4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2FtbGFzc2VydGlvbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zYW1sbWV0YWRhdGEreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2JtbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzYm1sXCJdfSxcImFwcGxpY2F0aW9uL3NjYWlwK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NjaW0ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi9zY3ZwLWN2LXJlcXVlc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzY3FcIl19LFwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXNwb25zZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNjc1wiXX0sXCJhcHBsaWNhdGlvbi9zY3ZwLXZwLXJlcXVlc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzcHFcIl19LFwiYXBwbGljYXRpb24vc2N2cC12cC1yZXNwb25zZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNwcFwiXX0sXCJhcHBsaWNhdGlvbi9zZHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzZHBcIl19LFwiYXBwbGljYXRpb24vc2VwK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NlcC1leGlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zZXNzaW9uLWluZm9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zZXQtcGF5bWVudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzZXRwYXlcIl19LFwiYXBwbGljYXRpb24vc2V0LXJlZ2lzdHJhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb24taW5pdGlhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNldHJlZ1wiXX0sXCJhcHBsaWNhdGlvbi9zZ21sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2dtbC1vcGVuLWNhdGFsb2dcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zaGYreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2hmXCJdfSxcImFwcGxpY2F0aW9uL3NpZXZlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2ltcGxlLWZpbHRlcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zaW1wbGUtbWVzc2FnZS1zdW1tYXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2ltcGxlc3ltYm9sY29udGFpbmVyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc2xhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi9zbWlsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc21pbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzbWlcIixcInNtaWxcIl19LFwiYXBwbGljYXRpb24vc21wdGUzMzZtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vc29hcCtmYXN0aW5mb3NldFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NvYXAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3NwYXJxbC1xdWVyeVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInJxXCJdfSxcImFwcGxpY2F0aW9uL3NwYXJxbC1yZXN1bHRzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNyeFwiXX0sXCJhcHBsaWNhdGlvbi9zcGlyaXRzLWV2ZW50K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NxbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3NyZ3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJncmFtXCJdfSxcImFwcGxpY2F0aW9uL3NyZ3MreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ3J4bWxcIl19LFwiYXBwbGljYXRpb24vc3J1K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNydVwiXX0sXCJhcHBsaWNhdGlvbi9zc2RsK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3NkbFwiXX0sXCJhcHBsaWNhdGlvbi9zc21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNzbWxcIl19LFwiYXBwbGljYXRpb24vdGFtcC1hcGV4LXVwZGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RhbXAtYXBleC11cGRhdGUtY29uZmlybVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RhbXAtY29tbXVuaXR5LXVwZGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RhbXAtY29tbXVuaXR5LXVwZGF0ZS1jb25maXJtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGFtcC1lcnJvclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RhbXAtc2VxdWVuY2UtYWRqdXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGFtcC1zZXF1ZW5jZS1hZGp1c3QtY29uZmlybVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RhbXAtc3RhdHVzLXF1ZXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdGFtcC1zdGF0dXMtcmVzcG9uc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi90YW1wLXVwZGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RhbXAtdXBkYXRlLWNvbmZpcm1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi90YXJcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3RlaSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0ZWlcIixcInRlaWNvcnB1c1wiXX0sXCJhcHBsaWNhdGlvbi90aHJhdWQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widGZpXCJdfSxcImFwcGxpY2F0aW9uL3RpbWVzdGFtcC1xdWVyeVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RpbWVzdGFtcC1yZXBseVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RpbWVzdGFtcGVkLWRhdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0c2RcIl19LFwiYXBwbGljYXRpb24vdG5hdXRobGlzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3RyaWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi90dG1sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3R2ZS10cmlnZ2VyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdWxwZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdXJjLWdycHNoZWV0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3VyYy1yZXNzaGVldCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi91cmMtdGFyZ2V0ZGVzYyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi91cmMtdWlzb2NrZXRkZXNjK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZjYXJkK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdmNhcmQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdmVtbWlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92aXZpZGVuY2Uuc2NyaXB0ZmlsZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24vdm5kLjEwMDBtaW5kcy5kZWNpc2lvbi1tb2RlbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC1wcm9zZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC1wcm9zZS1wYzNjaCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC12MngtbG9jYWwtc2VydmljZS1pbmZvcm1hdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLmFjY2Vzcy10cmFuc2Zlci1ldmVudHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAuYnNmK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLmdtb3AreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNwdHQtYWZmaWxpYXRpb24tY29tbWFuZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1mbG9vci1yZXF1ZXN0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LWluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNwdHQtbG9jYXRpb24taW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1tYm1zLXVzYWdlLWluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNwdHQtc2lnbmVkK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1pZC1jYWxsK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy1sYXJnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBsYlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctc21hbGxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwc2JcIl19LFwiYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXZhclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInB2YlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zbXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zbXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAuc3J2Y2MtZXh0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNydmNjLWluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAuc3RhdGUtYW5kLWV2ZW50LWluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLjNncHAudXNzZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIuYmNtY3NpbmZvK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi5zbXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIudGNhcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInRjYXBcIl19LFwiYXBwbGljYXRpb24vdm5kLjNsaWdodHNzb2Z0d2FyZS5pbWFnZXNjYWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuM20ucG9zdC1pdC1ub3Rlc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInB3blwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5hc29cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhc29cIl19LFwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuaW1wXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaW1wXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hY3Vjb2JvbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImFjdVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYWN1Y29ycFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImF0Y1wiLFwiYWN1dGNcIl19LFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmFpci1hcHBsaWNhdGlvbi1pbnN0YWxsZXItcGFja2FnZSt6aXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImFpclwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZmxhc2gubW92aWVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZm9ybXNjZW50cmFsLmZjZHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmY2R0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5meHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmeHBcIixcImZ4cGxcIl19LFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnBhcnRpYWwtdXBsb2FkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhkcCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4ZHBcIl19LFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhmZGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4ZmRmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hZXRoZXIuaW1wXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmFoLWJhcmNvZGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYWhlYWQuc3BhY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhaGVhZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYXpmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5haXJ6aXAuZmlsZXNlY3VyZS5henNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJhenNcIl19LFwiYXBwbGljYXRpb24vdm5kLmFtYWRldXMranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuYW1hem9uLmVib29rXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhendcIl19LFwiYXBwbGljYXRpb24vdm5kLmFtYXpvbi5tb2JpOC1lYm9va1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5hbWVyaWNhbmR5bmFtaWNzLmFjY1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImFjY1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuYW1pZ2EuYW1pXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYW1pXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hbXVuZHNlbi5tYXplK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJhcGtcIl19LFwiYXBwbGljYXRpb24vdm5kLmFua2lcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWNlcnRpZmljYXRlLWlzc3VlLWluaXRpYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjaWlcIl19LFwiYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1mdW5kcy10cmFuc2Zlci1pbml0aWF0aW9uXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJmdGlcIl19LFwiYXBwbGljYXRpb24vdm5kLmFudGl4LmdhbWUtY29tcG9uZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYXR4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUudGhyaWZ0LmJpbmFyeVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUudGhyaWZ0LmNvbXBhY3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5qc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmFwaStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5hcG90aGVrZW5kZS5yZXNlcnZhdGlvbitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5pbnN0YWxsZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXBrZ1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm0zdThcIl19LFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLnBrcGFzc1wiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInBrcGFzc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuYXJhc3RyYS5zd2lcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYXJpc3RhbmV0d29ya3Muc3dpXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3dpXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5hcnRzcXVhcmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYXN0cmFlYS1zb2Z0d2FyZS5pb3RhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaW90YVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYXVkaW9ncmFwaFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImFlcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYXV0b3BhY2thZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYXZhbG9uK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmF2aXN0YXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmJhbHNhbWlxLmJtbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmJhbHNhbWlxLmJtcHJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYmJmLnVzcC5tc2dcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuYmJmLnVzcC5tc2cranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuYmVraXR6dXItc3RlY2granNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuYmludC5tZWQtY29udGVudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5iaW9wYXgucmRmK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ibGluay1pZGItdmFsdWUtd3JhcHBlclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ibHVlaWNlLm11bHRpcGFzc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1wbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYmx1ZXRvb3RoLmVwLm9vYlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ibHVldG9vdGgubGUub29iXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmJtaVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImJtaVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuYnVzaW5lc3NvYmplY3RzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicmVwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jYWItanNjcmlwdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jYW5vbi1jcGRsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmNhbm9uLWxpcHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY2FwYXN5c3RlbXMtcGcranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuY2VuZGlvLnRoaW5saW5jLmNsaWVudGNvbmZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY2VudHVyeS1zeXN0ZW1zLnRjcF9zdHJlYW1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY2hlbWRyYXcreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2R4bWxcIl19LFwiYXBwbGljYXRpb24vdm5kLmNoZXNzLXBnblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jaGlwbnV0cy5rYXJhb2tlLW1tZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1tZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY2luZGVyZWxsYVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNkeVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY2lycGFjay5pc2RuLWV4dFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jaXRhdGlvbnN0eWxlcy5zdHlsZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY2xheW1vcmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjbGFcIl19LFwiYXBwbGljYXRpb24vdm5kLmNsb2FudG8ucnA5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicnA5XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYzRnXCIsXCJjNGRcIixcImM0ZlwiLFwiYzRwXCIsXCJjNHVcIl19LFwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjMTFhbWNcIl19LFwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWctcGtnXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYzExYW16XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jb2ZmZWVzY3JpcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY29sbGFiaW8ueG9kb2N1bWVudHMuZG9jdW1lbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY29sbGFiaW8ueG9kb2N1bWVudHMuZG9jdW1lbnQtdGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY29sbGFiaW8ueG9kb2N1bWVudHMucHJlc2VudGF0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmNvbGxhYmlvLnhvZG9jdW1lbnRzLnByZXNlbnRhdGlvbi10ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jb2xsYWJpby54b2RvY3VtZW50cy5zcHJlYWRzaGVldFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jb2xsYWJpby54b2RvY3VtZW50cy5zcHJlYWRzaGVldC10ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jb2xsZWN0aW9uK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24uZG9jK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmNvbGxlY3Rpb24ubmV4dCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5jb21pY2Jvb2sremlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmNvbWljYm9vay1yYXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY29tbWVyY2UtYmF0dGVsbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY29tbW9uc3BhY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjc3BcIl19LFwiYXBwbGljYXRpb24vdm5kLmNvbnRhY3QuY21zZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNkYmNtc2dcIl19LFwiYXBwbGljYXRpb24vdm5kLmNvcmVvcy5pZ25pdGlvbitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5jb3Ntb2NhbGxlclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNtY1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNsa3hcIl19LFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIua2V5Ym9hcmRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjbGtrXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnBhbGV0dGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjbGtwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2xrdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci53b3JkYmFua1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNsa3dcIl19LFwiYXBwbGljYXRpb24vdm5kLmNyaXRpY2FsdG9vbHMud2JzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndic1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuY3RjLXBvc21sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicG1sXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5jdGN0LndzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBkZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jdXBzLXBvc3RzY3JpcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1wcGRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwcGRcIl19LFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcmFzdGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcmF3XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmN1cmxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuY3VybC5jYXJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNhclwiXX0sXCJhcHBsaWNhdGlvbi92bmQuY3VybC5wY3VybFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicGN1cmxcIl19LFwiYXBwbGljYXRpb24vdm5kLmN5YW4uZGVhbi5yb290K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5jeWJhbmtcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZDJsLmNvdXJzZXBhY2thZ2UxcDAremlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmRhcnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiZGFydFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZGF0YS12aXNpb24ucmR6XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicmR6XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kYXRhcGFja2FnZStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5kYXRhcmVzb3VyY2UranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuZGViaWFuLmJpbmFyeS1wYWNrYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInV2ZlwiLFwidXZ2ZlwiLFwidXZkXCIsXCJ1dnZkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnR0bWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widXZ0XCIsXCJ1dnZ0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnVuc3BlY2lmaWVkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widXZ4XCIsXCJ1dnZ4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInV2elwiLFwidXZ2elwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZGVub3ZvLmZjc2VsYXlvdXQtbGlua1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZlX2xhdW5jaFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZGVzbXVtZS1tb3ZpZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kZXNtdW1lLm1vdmllXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhcHBsaWNhdGlvbi92bmQuZGlyLWJpLnBsYXRlLWRsLW5vc3VmZml4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmRtLmRlbGVnYXRpb24reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmRuYVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRuYVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZG9jdW1lbnQranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubWxwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtbHBcIl19LFwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1vYmlsZS4xXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1vYmlsZS4yXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmRvcmVtaXIuc2NvcmVjbG91ZC1iaW5hcnktZG9jdW1lbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHBncmFwaFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRwZ1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZHJlYW1mYWN0b3J5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZGZhY1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZHJpdmUranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuZHMta2V5cG9pbnRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImtweHhcIl19LFwiYXBwbGljYXRpb24vdm5kLmR0Zy5sb2NhbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdGcubG9jYWwuZmxhc2hcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsLmh0bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLmFpdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImFpdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLmR2YmpcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLmVzZ2NvbnRhaW5lclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2RmdG5vdGlmYWNjZXNzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjZXNnYWNjZXNzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5pcGRjZXNnYWNjZXNzMlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2VzZ3BkZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY3JvYW1pbmdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwdHYuYWxmZWMtYmFzZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXB0di5hbGZlYy1lbmhhbmNlbWVudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtYWdncmVnYXRlLXJvb3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1jb250YWluZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1nZW5lcmljK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaWEtbXNnbGlzdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWlhLXJlZ2lzdHJhdGlvbi1yZXF1ZXN0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaWEtcmVnaXN0cmF0aW9uLXJlc3BvbnNlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtaW5pdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLnBmclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuc2VydmljZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInN2Y1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZHhyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmR5bmFnZW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJnZW9cIl19LFwiYXBwbGljYXRpb24vdm5kLmR6clwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lYXN5a2FyYW9rZS5jZGdkb3dubG9hZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lY2Rpcy11cGRhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZWNpcC5ybHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmNoYXJ0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWFnXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uZmlsZXJlcXVlc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmZpbGV1cGRhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLnNlcmllc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uc2VyaWVzcmVxdWVzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uc2VyaWVzdXBkYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVmaS5pbWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZWZpLmlzb1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lbWNsaWVudC5hY2Nlc3NyZXF1ZXN0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lbmxpdmVuXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibm1sXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5lbnBoYXNlLmVudm95XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVwcmludHMuZGF0YSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uZXNmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZXNmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5tc2ZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtc2ZcIl19LFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnF1aWNrYW5pbWVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJxYW1cIl19LFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnNhbHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzbHRcIl19LFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnNzZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNzZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZXJpY3Nzb24ucXVpY2tjYWxsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVzcGFzcy1lc3Bhc3MremlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmVzemlnbm8zK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImVzM1wiLFwiZXQzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmFvYyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5hc2ljLWUremlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuYXNpYy1zK3ppcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmN1Zyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2Y29tbWFuZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2ZGlzY292ZXJ5K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZwcm9maWxlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzYWQtYmMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnNhZC1jb2QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dnNhZC1ucHZyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzZXJ2aWNlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzeW5jK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZ1ZXByb2ZpbGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kubWNpZCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5taGVnNVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLm92ZXJsb2FkLWNvbnRyb2wtcG9saWN5LWRhdGFzZXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kucHN0bit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5zY2kreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kuc2ltc2VydnMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kudGltZXN0YW1wLXRva2VuXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV0c2kudHNsK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnRzbC5kZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXVkb3JhLmRhdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXZvbHYuZWNpZy5wcm9maWxlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmV2b2x2LmVjaWcuc2V0dGluZ3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZXZvbHYuZWNpZy50aGVtZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5lenBpeC1hbGJ1bVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImV6MlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZXpwaXgtcGFja2FnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImV6M1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZi1zZWN1cmUubW9iaWxlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmZhc3Rjb3B5LWRpc2staW1hZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZmRmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZmRmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mZHNuLm1zZWVkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXNlZWRcIl19LFwiYXBwbGljYXRpb24vdm5kLmZkc24uc2VlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNlZWRcIixcImRhdGFsZXNzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mZnNuc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5maWxtaXQuemZjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmZpbnRzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmZpcmVtb25rZXlzLmNsb3VkY2VsbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5mbG9ncmFwaGl0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ3BoXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZnRjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mb250LWZvbnRmb3JnZS1zZmRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZtXCIsXCJmcmFtZVwiLFwibWFrZXJcIixcImJvb2tcIl19LFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMuZm5jXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZm5jXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mcm9nYW5zLmx0ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImx0ZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnNjLndlYmxhdW5jaFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZzY1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9hc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvYTJcIl19LFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXMzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib2EzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzZ3BcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmZzVcIl19LFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNwcnNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJiaDJcIl19LFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5hcnQtZXhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmFydDRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRkZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRkZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhkd1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrcy5iaW5kZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4YmRcIl19LFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MuY29udGFpbmVyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5oYnBsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmZ1dC1taXNuZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZnV6enlzaGVldFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZ6c1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ2Vub21hdGl4LnR1eGVkb1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInR4ZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmdlb2N1YmUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLmZpbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJnZ2JcIl19LFwiYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLnRvb2xcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJnZ3RcIl19LFwiYXBwbGljYXRpb24vdm5kLmdlb21ldHJ5LWV4cGxvcmVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ2V4XCIsXCJncmVcIl19LFwiYXBwbGljYXRpb24vdm5kLmdlb25leHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJneHRcIl19LFwiYXBwbGljYXRpb24vdm5kLmdlb3BsYW5cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJnMndcIl19LFwiYXBwbGljYXRpb24vdm5kLmdlb3NwYWNlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZzN3XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5nZXJiZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuZ2xvYmFscGxhdGZvcm0uY2FyZC1jb250ZW50LW1ndFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5nbG9iYWxwbGF0Zm9ybS5jYXJkLWNvbnRlbnQtbWd0LXJlc3BvbnNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmdteFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdteFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnRcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJnZG9jXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5wcmVzZW50YXRpb25cIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJnc2xpZGVzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5zcHJlYWRzaGVldFwiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImdzaGVldFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wia21sXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua216XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJrbXpcIl19LFwiYXBwbGljYXRpb24vdm5kLmdvdi5zay5lLWZvcm0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmdvdi5zay5lLWZvcm0remlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmdvdi5zay54bWxkYXRhY29udGFpbmVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ncmFmZXFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJncWZcIixcImdxc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ3JpZG1wXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ2FjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaGVscFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdoZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWlkZW50aXR5LW1lc3NhZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJnaW1cIl19LFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS1pbmplY3RvclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdydlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXRvb2wtbWVzc2FnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImd0bVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXRvb2wtdGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0cGxcIl19LFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS12Y2FyZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInZjZ1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuaGFsK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmhhbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJoYWxcIl19LFwiYXBwbGljYXRpb24vdm5kLmhhbmRoZWxkLWVudGVydGFpbm1lbnQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiem1tXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5oYmNpXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaGJjaVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaGMranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuaGNsLWJpcmVwb3J0c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5oZHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaGVyb2t1K2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmhoZS5sZXNzb24tcGxheWVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibGVzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGdsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaHBnbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaHAtaHBpZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImhwaWRcIl19LFwiYXBwbGljYXRpb24vdm5kLmhwLWhwc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImhwc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuaHAtamx5dFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImpsdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaHAtcGNsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGNsXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1wY2x4bFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBjbHhsXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5odHRwaG9uZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5oeWRyb3N0YXRpeC5zb2YtZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNmZC1oZHN0eFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaHlwZXItaXRlbStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5oeXBlcmRyaXZlK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmh6bi0zZC1jcm9zc3dvcmRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaWJtLmFmcGxpbmVkYXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlibS5lbGVjdHJvbmljLW1lZGlhXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlibS5taW5pcGF5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXB5XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pYm0ubW9kY2FwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYWZwXCIsXCJsaXN0YWZwXCIsXCJsaXN0MzgyMFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaWJtLnJpZ2h0cy1tYW5hZ2VtZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaXJtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pYm0uc2VjdXJlLWNvbnRhaW5lclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pY2Nwcm9maWxlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaWNjXCIsXCJpY21cIl19LFwiYXBwbGljYXRpb24vdm5kLmllZWUuMTkwNVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pZ2xvYWRlclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImlnbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaW1hZ2VtZXRlci5mb2xkZXIremlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmltYWdlbWV0ZXIuaW1hZ2UremlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmltbWVydmlzaW9uLWl2cFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIml2cFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZ1XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaXZ1XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pbXMuaW1zY2N2MXAxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmltcy5pbXNjY3YxcDJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaW1zLmltc2NjdjFwM1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pbXMubGlzLnYyLnJlc3VsdCtqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xjb25zdW1lcnByb2ZpbGUranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29scHJveHkranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29scHJveHkuaWQranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29sc2V0dGluZ3MranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29sc2V0dGluZ3Muc2ltcGxlK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmluZm9ybWVkY29udHJvbC5ybXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmluZm9ybWl4LXZpc2lvbmFyeVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pbmZvdGVjaC5wcm9qZWN0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmluZm90ZWNoLnByb2plY3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlubm9wYXRoLndhbXAubm90aWZpY2F0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmluc29ycy5pZ21cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpZ21cIl19LFwiYXBwbGljYXRpb24vdm5kLmludGVyY29uLmZvcm1uZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4cHdcIixcInhweFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJnZW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJpMmdcIl19LFwiYXBwbGljYXRpb24vdm5kLmludGVydHJ1c3QuZGlnaWJveFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcnRydXN0Lm5uY3BcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuaW50dS5xYm9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJxYm9cIl19LFwiYXBwbGljYXRpb24vdm5kLmludHUucWZ4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicWZ4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmNhdGFsb2dpdGVtK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmNvbmNlcHRpdGVtK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmtub3dsZWRnZWl0ZW0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIubmV3c2l0ZW0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIubmV3c21lc3NhZ2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIucGFja2FnZWl0ZW0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIucGxhbm5pbmdpdGVtK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5pcHVucGx1Z2dlZC5yY3Byb2ZpbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJyY3Byb2ZpbGVcIl19LFwiYXBwbGljYXRpb24vdm5kLmlyZXBvc2l0b3J5LnBhY2thZ2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaXJwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5pcy14cHJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4cHJcIl19LFwiYXBwbGljYXRpb24vdm5kLmlzYWMuZmNzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZmNzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5qYW1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJqYW1cIl19LFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LWRpcmVjdG9yeS1zZXJ2aWNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LWpwbnN0b3JlLXdha2V1cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1wYXltZW50LXdha2V1cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1yZWdpc3RyYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtcmVnaXN0cmF0aW9uLXdha2V1cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC1zZXRzdG9yZS13YWtldXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtdmVyaWZpY2F0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXZlcmlmaWNhdGlvbi13YWtldXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuamNwLmphdmFtZS5taWRsZXQtcm1zXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicm1zXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5qaXNwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiamlzcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuam9vc3Quam9kYS1hcmNoaXZlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiam9kYVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuanNrLmlzZG4tbmduXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmthaG9vdHpcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJrdHpcIixcImt0clwiXX0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmthcmJvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImthcmJvblwiXX0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmtjaGFydFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNocnRcIl19LFwiYXBwbGljYXRpb24vdm5kLmtkZS5rZm9ybXVsYVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImtmb1wiXX0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmtpdmlvXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZmx3XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua29udG91clwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImtvblwiXX0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmtwcmVzZW50ZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJrcHJcIixcImtwdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmtzcHJlYWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJrc3BcIl19LFwiYXBwbGljYXRpb24vdm5kLmtkZS5rd29yZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImt3ZFwiLFwia3d0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5rZW5hbWVhYXBwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaHRrZVwiXX0sXCJhcHBsaWNhdGlvbi92bmQua2lkc3BpcmF0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wia2lhXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5raW5hclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImtuZVwiLFwia25wXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5rb2FuXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2twXCIsXCJza2RcIixcInNrdFwiLFwic2ttXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5rb2Rhay1kZXNjcmlwdG9yXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3NlXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5sYXMubGFzK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLmxhcy5sYXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibGFzeG1sXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5saWJlcnR5LXJlcXVlc3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmRlc2t0b3BcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJsYmRcIl19LFwiYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmV4Y2hhbmdlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImxiZVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtMS0yLTNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCIxMjNcIl19LFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWFwcHJvYWNoXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYXByXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1mcmVlbGFuY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwcmVcIl19LFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLW5vdGVzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibnNmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1vcmdhbml6ZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvcmdcIl19LFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLXNjcmVlbmNhbVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNjbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtd29yZHByb1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImx3cFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubWFjcG9ydHMucG9ydHBrZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBvcnRwa2dcIl19LFwiYXBwbGljYXRpb24vdm5kLm1hcGJveC12ZWN0b3ItdGlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLmFjdGlvbnRva2VuK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLmNvbmZ0b2tlbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubWFybGluLmRybS5saWNlbnNlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLm1kY2ZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubWFzb24ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQubWF4bWluZC5tYXhtaW5kLWRiXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1jZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1jZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubWVkY2FsY2RhdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtYzFcIl19LFwiYXBwbGljYXRpb24vdm5kLm1lZGlhc3RhdGlvbi5jZGtleVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNka2V5XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tZXJpZGlhbi1zbGluZ3Nob3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubWZlclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm13ZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQubWZtcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1mbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubWljcm8ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5mbG9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmbG9cIl19LFwiYXBwbGljYXRpb24vdm5kLm1pY3JvZ3JhZnguaWd4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaWd4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQucG9ydGFibGUtZXhlY3V0YWJsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5taWNyb3NvZnQud2luZG93cy50aHVtYm5haWwtY2FjaGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubWllbGUranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQubWlmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWlmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5taW5pc29mdC1ocDMwMDAtc2F2ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5taXRzdWJpc2hpLm1pc3R5LWd1YXJkLnRydXN0d2ViXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kYWZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkYWZcIl19LFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kaXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkaXNcIl19LFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tYmtcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtYmtcIl19LFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tcXlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtcXlcIl19LFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tc2xcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtc2xcIl19LFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5wbGNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwbGNcIl19LFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0eGZcIl19LFwiYXBwbGljYXRpb24vdm5kLm1vcGh1bi5hcHBsaWNhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1wblwiXX0sXCJhcHBsaWNhdGlvbi92bmQubW9waHVuLmNlcnRpZmljYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXBjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmFkc2lcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmZpc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuZ290YXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuZmxleHN1aXRlLmttclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUudHRjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS53ZW1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubW90b3JvbGEuaXBybVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wieHVsXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy0zbWZkb2N1bWVudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1hcnRnYWxyeVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImNpbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtYXNmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLWNhYi1jb21wcmVzc2VkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2FiXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1jb2xvci5pY2Nwcm9maWxlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInhsc1wiLFwieGxtXCIsXCJ4bGFcIixcInhsY1wiLFwieGx0XCIsXCJ4bHdcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhsYW1cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb2VuYWJsZWQuMTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4bHNiXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb2VuYWJsZWQuMTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4bHNtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50ZW1wbGF0ZS5tYWNyb2VuYWJsZWQuMTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4bHRtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImVvdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtaHRtbGhlbHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjaG1cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLWltc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImltc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtbHJtXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibHJtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2UuYWN0aXZleCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNldGhlbWVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0aG14XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1vcGVudHlwZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1vdXRsb29rXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wibXNnXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wYWNrYWdlLm9iZnVzY2F0ZWQtb3BlbnR5cGVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc2VjY2F0XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjYXRcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXBraS5zdGxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInN0bFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtcGxheXJlYWR5LmluaXRpYXRvcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wicHB0XCIsXCJwcHNcIixcInBvdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb2VuYWJsZWQuMTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwcGFtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb2VuYWJsZWQuMTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwcHRtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlLm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNsZG1cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGVzaG93Lm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBwc21cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicG90bVwiXX0sXCJhcHBsaWNhdGlvbi92bmQubXMtcHJpbnRkZXZpY2VjYXBhYmlsaXRpZXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLXByaW50aW5nLnByaW50dGlja2V0K3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLXByaW50c2NoZW1hdGlja2V0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXBwXCIsXCJtcHRcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXRuZWZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5kZXZpY2VwYWlyaW5nXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLXdpbmRvd3MubndwcmludGluZy5vb2JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5wcmludGVycGFpcmluZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13aW5kb3dzLndzZC5vb2JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubGljLWNobGctcmVxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLmxpYy1yZXNwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLm1ldGVyLWNobGctcmVxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLm1ldGVyLXJlc3BcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXMtd29yZC5kb2N1bWVudC5tYWNyb2VuYWJsZWQuMTJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkb2NtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRvdG1cIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid3BzXCIsXCJ3a3NcIixcIndjbVwiLFwid2RiXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13cGxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3cGxcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zLXhwc2RvY3VtZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ4cHNcIl19LFwiYXBwbGljYXRpb24vdm5kLm1zYS1kaXNrLWltYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm1zZXFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtc2VxXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tc2lnblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tdWx0aWFkLmNyZWF0b3JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubXVsdGlhZC5jcmVhdG9yLmNpZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5tdXNpYy1uaWZmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm11c2ljaWFuXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXVzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5tdXZlZS5zdHlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1zdHlcIl19LFwiYXBwbGljYXRpb24vdm5kLm15bmZjXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widGFnbGV0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5uY2QuY29udHJvbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5uY2QucmVmZXJlbmNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5lYXJzdC5pbnYranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQubmVydmFuYVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5uZXRmcHhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubmV1cm9sYW5ndWFnZS5ubHVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJubHVcIl19LFwiYXBwbGljYXRpb24vdm5kLm5pbnRlbmRvLm5pdHJvLnJvbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5uaW50ZW5kby5zbmVzLnJvbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5uaXRmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibnRmXCIsXCJuaXRmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1kaXJlY3RvcnlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJubmRcIl19LFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LXNlYWxlclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm5uc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtd2ViXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibm53XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5jYXRhbG9nc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5jb25tbCt3YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5jb25tbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEuaXB0di5jb25maWcreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmlzZHMtcmFkaW8tcHJlc2V0c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5sYW5kbWFyayt3YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5sYW5kbWFyayt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEubGFuZG1hcmtjb2xsZWN0aW9uK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2UuYWMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5kYXRhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibmdkYXRcIl19LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5zeW1iaWFuLmluc3RhbGxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJuLWdhZ2VcIl19LFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm5jZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5wY2Qrd2J4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEucGNkK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5yYWRpby1wcmVzZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJycHN0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5yYWRpby1wcmVzZXRzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicnBzc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZWRtXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZWRtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZHhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlZHhcIl19LFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmV4dFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImV4dFwiXX0sXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLmNvbnRlbnQtc2hhcmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLmZpbGUtdHJhbnNmZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLm9nd19yZW1vdGUtYWNjZXNzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5zaXAtdGFfcmVtb3RlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5zaXAtdGFfdGNwX3N0cmVhbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvZGNcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydC10ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm90Y1wiXX0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmRhdGFiYXNlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib2RiXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZm9ybXVsYVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9kZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGEtdGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvZGZ0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIm9kZ1wiXX0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmdyYXBoaWNzLXRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib3RnXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvZGlcIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZS10ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm90aVwiXX0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wib2RwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib3RwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIm9kc1wiXX0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0LXRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib3RzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wib2R0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC1tYXN0ZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvZG1cIl19LFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LXRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wib3R0XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC13ZWJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvdGhcIl19LFwiYXBwbGljYXRpb24vdm5kLm9iblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vY2YrY2JvclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vZnRuLmwxMG4ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQub2lwZi5jb250ZW50YWNjZXNzZG93bmxvYWQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9pcGYuY29udGVudGFjY2Vzc3N0cmVhbWluZyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub2lwZi5jc3BnLWhleGJpbmFyeVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmRhZS5zdmcreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9pcGYuZGFlLnhodG1sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLm1pcHB2Y29udHJvbG1lc3NhZ2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9pcGYucGFlLmdlbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnNwZGlzY292ZXJ5K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnNwZGxpc3QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9pcGYudWVwcm9maWxlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnVzZXJwcm9maWxlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbHBjLXN1Z2FyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieG9cIl19LFwiYXBwbGljYXRpb24vdm5kLm9tYS1zY3dzLWNvbmZpZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1odHRwLXJlcXVlc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLXNjd3MtaHR0cC1yZXNwb25zZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3QuYXNzb2NpYXRlZC1wcm9jZWR1cmUtcGFyYW1ldGVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3QuZHJtLXRyaWdnZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5pbWQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5sdGttXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5ub3RpZmljYXRpb24reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5wcm92aXNpb25pbmd0cmlnZ2VyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zZ2Jvb3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnZGQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zZ2R1XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zaW1wbGUtc3ltYm9sLWNvbnRhaW5lclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc21hcnRjYXJkLXRyaWdnZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zcHJvdit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnN0a21cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1hZGRyZXNzLWJvb2sreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItZmVhdHVyZS1oYW5kbGVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXBjYyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1zdWJzLWludml0ZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi11c2VyLXByZWZzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGNkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5kY2RjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5kZDIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZGQyXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZHJtLnJpc2QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5ncm91cC11c2FnZS1saXN0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEubHdtMm0ranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQub21hLmx3bTJtK3RsdlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEucGFsK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmRldGFpbGVkLXByb2dyZXNzLXJlcG9ydCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5maW5hbC1yZXBvcnQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuZ3JvdXBzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmludm9jYXRpb24tZGVzY3JpcHRvcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5vcHRpbWl6ZWQtcHJvZ3Jlc3MtcmVwb3J0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEucHVzaFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbWEuc2NpZG0ubWVzc2FnZXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYS54Y2FwLWRpcmVjdG9yeSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZW1haWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYWRzLWZpbGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9tYWRzLWZvbGRlcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub21hbG9jLXN1cGwtaW5pdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbmVwYWdlclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbmVwYWdlcnRhbXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub25lcGFnZXJ0YW14XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9uZXBhZ2VydGF0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9uZXBhZ2VydGF0cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vbmVwYWdlcnRhdHhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbmJsb3guZ2FtZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbmJsb3guZ2FtZS1iaW5hcnlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbmV5ZS5vZWJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3Blbm9mZmljZW9yZy5leHRlbnNpb25cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm94dFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnN0cmVldG1hcC5kYXRhK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b20tcHJvcGVydGllcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9teG1scHJvcGVydGllcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuY2hhcnRzaGFwZXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtY29sb3JzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWRhdGEreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtbGF5b3V0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbXN0eWxlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5jb21tZW50YXV0aG9ycyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuY29tbWVudHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLmhhbmRvdXRtYXN0ZXIreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLm5vdGVzbWFzdGVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5ub3Rlc3NsaWRlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInBwdHhcIl19LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbi5tYWluK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzcHJvcHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2xkeFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlbGF5b3V0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZW1hc3Rlcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicHBzeFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93Lm1haW4reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRldXBkYXRlaW5mbyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGFibGVzdHlsZXMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRhZ3MreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicG90eFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGUubWFpbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudmlld3Byb3BzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNhbGNjaGFpbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jaGFydHNoZWV0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbm5lY3Rpb25zK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmRpYWxvZ3NoZWV0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmV4dGVybmFsbGluayt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdGNhY2hlZGVmaW5pdGlvbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdGNhY2hlcmVjb3Jkcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdHRhYmxlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnF1ZXJ5dGFibGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25oZWFkZXJzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9ubG9nK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoYXJlZHN0cmluZ3MreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInhsc3hcIl19LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldG1ldGFkYXRhK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnN0eWxlcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZXNpbmdsZWNlbGxzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieGx0eFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnVzZXJuYW1lcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZWRlcGVuZGVuY2llcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZW92ZXJyaWRlK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxkcmF3aW5nXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuY29tbWVudHMreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImRvY3hcIl19LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQuZ2xvc3NhcnkreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQubWFpbit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5lbmRub3Rlcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5mb250dGFibGUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZm9vdGVyK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmZvb3Rub3Rlcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5udW1iZXJpbmcreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuc2V0dGluZ3MreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuc3R5bGVzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZG90eFwiXX0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC50ZW1wbGF0ZS5tYWluK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLndlYnNldHRpbmdzK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5kaWdpdGFsLXNpZ25hdHVyZS14bWxzaWduYXR1cmUreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3JhY2xlLnJlc291cmNlK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vdm5kLm9yYW5nZS5pbmRhdGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3NhLm5ldGRlcGxveVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vc2dlby5tYXBndWlkZS5wYWNrYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWdwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLmJ1bmRsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLmRwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZHBcIl19LFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuc3Vic3lzdGVtXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZXNhXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5vdHBzLmN0LWtpcCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQub3hsaS5jb3VudGdyYXBoXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnBhZ2VyZHV0eStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5wYWxtXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicGRiXCIsXCJwcWFcIixcIm9wcmNcIl19LFwiYXBwbGljYXRpb24vdm5kLnBhbm9wbHlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucGFvcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucGFvcy54bWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3ZuZC5wYXRlbnRkaXZlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnBhd2FhZmlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBhd1wiXX0sXCJhcHBsaWNhdGlvbi92bmQucGNvc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5wZy5mb3JtYXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzdHJcIl19LFwiYXBwbGljYXRpb24vdm5kLnBnLm9zYXNsaVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImVpNlwiXX0sXCJhcHBsaWNhdGlvbi92bmQucGlhY2Nlc3MuYXBwbGljYXRpb24tbGljZW5jZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5waWNzZWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlZmlmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5wbWkud2lkZ2V0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid2dcIl19LFwiYXBwbGljYXRpb24vdm5kLnBvYy5ncm91cC1hZHZlcnRpc2VtZW50K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5wb2NrZXRsZWFyblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBsZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInBiZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNi1zXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNy1zXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjc1XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjc1LXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucHJlbWluZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucHJldmlld3N5c3RlbXMuYm94XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYm94XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5wcm90ZXVzLm1hZ2F6aW5lXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibWd6XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5wdWJsaXNoYXJlLWRlbHRhLXRyZWVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJxcHNcIl19LFwiYXBwbGljYXRpb24vdm5kLnB2aS5wdGlkMVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInB0aWRcIl19LFwiYXBwbGljYXRpb24vdm5kLnB3Zy1tdWx0aXBsZXhlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5wd2cteGh0bWwtcHJpbnQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnF1YWxjb21tLmJyZXctYXBwLXJlc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5xdWFyYW50YWluZW5ldFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInF4ZFwiLFwicXh0XCIsXCJxd2RcIixcInF3dFwiLFwicXhsXCIsXCJxeGJcIl19LFwiYXBwbGljYXRpb24vdm5kLnF1b2JqZWN0LXF1b3hkb2N1bWVudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1vbWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQtY29uZit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LWNvbm4reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1kaWFsb2creG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1zdHJlYW0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1jb25mK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWJhc2UreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctZmF4LWRldGVjdCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1mYXgtc2VuZHJlY3YreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctZ3JvdXAreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctc3BlZWNoK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLXRyYW5zZm9ybSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmFpbnN0b3IuZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYXBpZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5yYXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQucmVhbHZuYy5iZWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJiZWRcIl19LFwiYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm14bFwiXX0sXCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm11c2ljeG1sXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5yZW5sZWFybi5ybHByaW50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnJlc3RmdWwranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQucmlnLmNyeXB0b25vdGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJjcnlwdG9ub3RlXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5yaW0uY29kXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjb2RcIl19LFwiYXBwbGljYXRpb24vdm5kLnJuLXJlYWxtZWRpYVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicm1cIl19LFwiYXBwbGljYXRpb24vdm5kLnJuLXJlYWxtZWRpYS12YnJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInJtdmJcIl19LFwiYXBwbGljYXRpb24vdm5kLnJvdXRlNjYubGluazY2K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImxpbms2NlwiXX0sXCJhcHBsaWNhdGlvbi92bmQucnMtMjc0eFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5ydWNrdXMuZG93bmxvYWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuczNzbXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2FpbGluZ3RyYWNrZXIudHJhY2tcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc2JtLmNpZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zYm0ubWlkMlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zY3JpYnVzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC4zZGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLmNzZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuZG9jXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5lbWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLm1odFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQubmV0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZC5wcHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLnRpZmZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLnhsc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5odG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLnBkZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zZWVtYWlsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2VlXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zZW1hXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2VtYVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc2VtZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNlbWRcIl19LFwiYXBwbGljYXRpb24vdm5kLnNlbWZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzZW1mXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5mb3JtZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImlmbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuZm9ybXRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaXRwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5pbnRlcmNoYW5nZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImlpZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQucGFja2FnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImlwa1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuc2lncm9rLnNlc3Npb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc2ltdGVjaC1taW5kbWFwcGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widHdkXCIsXCJ0d2RzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zaXJlbitqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC5zbWFmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibW1mXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zbWFydC5ub3RlYm9va1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zbWFydC50ZWFjaGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widGVhY2hlclwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNvZnR3YXJlNjAyLmZpbGxlci5mb3JtLXhtbC16aXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc29sZW50LnNka20reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic2RrbVwiLFwic2RrZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3BvdGZpcmUuZHhwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZHhwXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5zZnNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzZnNcIl19LFwiYXBwbGljYXRpb24vdm5kLnNxbGl0ZTNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc3NzLWNvZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zc3MtZHRmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnNzcy1udGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmNhbGNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNkY1wiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmRyYXdcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNkYVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3NcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNkZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLm1hdGhcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNtZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2R3XCIsXCJ2b3JcIl19LFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXItZ2xvYmFsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzZ2xcIl19LFwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic216aXBcIl19LFwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5zdGVwY2hhcnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3RyZWV0LXN0cmVhbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ud2FkbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wid2FkbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzeGNcIl19LFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsYy50ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3RjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXdcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInN4ZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3LnRlbXBsYXRlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzdGRcIl19LFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzc1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3hpXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmltcHJlc3MudGVtcGxhdGVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInN0aVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5tYXRoXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzeG1cIl19LFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzeHdcIl19LFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLmdsb2JhbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3hnXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci50ZW1wbGF0ZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3R3XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zdXMtY2FsZW5kYXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzdXNcIixcInN1c3BcIl19LFwiYXBwbGljYXRpb24vdm5kLnN2ZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInN2ZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3dpZnR2aWV3LWljc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zeW1iaWFuLmluc3RhbGxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNpc1wiLFwic2lzeFwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3luY21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhzbVwiXX0sXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3dieG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYmRtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieGRtXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0ubm90aWZpY2F0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbWRkZit3YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG1kZGYreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbXRuZHMrd2J4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtdG5kcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRzLm5vdGlmaWNhdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC50YWJsZXNjaGVtYStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZuZC50YW8uaW50ZW50LW1vZHVsZS1hcmNoaXZlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widGFvXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC50Y3BkdW1wLnBjYXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJwY2FwXCIsXCJjYXBcIixcImRtcFwiXX0sXCJhcHBsaWNhdGlvbi92bmQudG1kLm1lZGlhZmxleC5hcGkreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnRtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC50bW9iaWxlLWxpdmV0dlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInRtb1wiXX0sXCJhcHBsaWNhdGlvbi92bmQudHJpLm9uZXNvdXJjZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC50cmlkLnRwdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInRwdFwiXX0sXCJhcHBsaWNhdGlvbi92bmQudHJpc2NhcGUubXhzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXhzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC50cnVlYXBwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widHJhXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC50cnVlZG9jXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnViaXNvZnQud2VicGxheWVyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnVmZGxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1ZmRcIixcInVmZGxcIl19LFwiYXBwbGljYXRpb24vdm5kLnVpcS50aGVtZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInV0elwiXX0sXCJhcHBsaWNhdGlvbi92bmQudW1hamluXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widW1qXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC51bml0eVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInVuaXR5d2ViXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC51b21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInVvbWxcIl19LFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYWxlcnRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5hbGVydC13YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmJlYXJlci1jaG9pY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5iZWFyZXItY2hvaWNlLXdieG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuY2FjaGVvcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmNhY2hlb3Atd2J4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jaGFubmVsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuY2hhbm5lbC13YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0LXdieG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdGNtZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3RjbWQtd2J4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5zaWduYWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudXJpLW1hcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC52YWx2ZS5zb3VyY2UubWF0ZXJpYWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQudmN4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widmN4XCJdfSxcImFwcGxpY2F0aW9uL3ZuZC52ZC1zdHVkeVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC52ZWN0b3J3b3Jrc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC52ZWwranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQudmVyaW1hdHJpeC52Y2FzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnZpZHNvZnQudmlkY29uZmVyZW5jZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC52aXNpb1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInZzZFwiLFwidnN0XCIsXCJ2c3NcIixcInZzd1wiXX0sXCJhcHBsaWNhdGlvbi92bmQudmlzaW9uYXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widmlzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC52aXZpZGVuY2Uuc2NyaXB0ZmlsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC52c2ZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ2c2ZcIl19LFwiYXBwbGljYXRpb24vdm5kLndhcC5zaWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQud2FwLnNsY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC53YXAud2J4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3YnhtbFwiXX0sXCJhcHBsaWNhdGlvbi92bmQud2FwLndtbGNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3bWxjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0Y1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndtbHNjXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC53ZWJ0dXJib1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInd0YlwiXX0sXCJhcHBsaWNhdGlvbi92bmQud2ZhLnAycFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC53ZmEud3NjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLndpbmRvd3MuZGV2aWNlcGFpcmluZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC53bWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQud21mLmJvb3RzdHJhcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLm1hdGhlbWF0aWNhXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ubWF0aGVtYXRpY2EucGFja2FnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLnBsYXllclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm5icFwiXX0sXCJhcHBsaWNhdGlvbi92bmQud29yZHBlcmZlY3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3cGRcIl19LFwiYXBwbGljYXRpb24vdm5kLndxZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndxZFwiXX0sXCJhcHBsaWNhdGlvbi92bmQud3JxLWhwMzAwMC1sYWJlbGxlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC53dC5zdGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzdGZcIl19LFwiYXBwbGljYXRpb24vdm5kLnd2LmNzcCt3YnhtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC53di5jc3AreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnd2LnNzcCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQueGFjbWwranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi92bmQueGFyYVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhhclwiXX0sXCJhcHBsaWNhdGlvbi92bmQueGZkbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInhmZGxcIl19LFwiYXBwbGljYXRpb24vdm5kLnhmZGwud2ViZm9ybVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC54bWkreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnhtcGllLmNwa2dcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQueG1waWUuZHBrZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5wbGFuXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnhtcGllLnBwa2dcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQueG1waWUueGxpbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtZGljXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaHZkXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtc2NyaXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiaHZzXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtdm9pY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJodnBcIl19LFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5vcGVuc2NvcmVmb3JtYXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJvc2ZcIl19LFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5vcGVuc2NvcmVmb3JtYXQub3NmcHZnK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9zZnB2Z1wiXX0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnJlbW90ZS1zZXR1cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1hdWRpb1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNhZlwiXX0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtcGhyYXNlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3BmXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEudGhyb3VnaC1uZ25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnR1bm5lbC11ZHBlbmNhcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3ZuZC55YW93ZW1lXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnllbGxvd3JpdmVyLWN1c3RvbS1tZW51XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY21wXCJdfSxcImFwcGxpY2F0aW9uL3ZuZC55b3V0dWJlLnl0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vdm5kLnp1bFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInppclwiLFwiemlyelwiXX0sXCJhcHBsaWNhdGlvbi92bmQuenphenouZGVjayt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ6YXpcIl19LFwiYXBwbGljYXRpb24vdm9pY2V4bWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widnhtbFwiXX0sXCJhcHBsaWNhdGlvbi92b3VjaGVyLWNtcytqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3ZxLXJ0Y3B4clwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3dhc21cIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcIndhc21cIl19LFwiYXBwbGljYXRpb24vd2F0Y2hlcmluZm8reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vd2VicHVzaC1vcHRpb25zK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24vd2hvaXNwcC1xdWVyeVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3dob2lzcHAtcmVzcG9uc2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi93aWRnZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3Z3RcIl19LFwiYXBwbGljYXRpb24vd2luaGxwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJobHBcIl19LFwiYXBwbGljYXRpb24vd2l0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3dvcmRwZXJmZWN0NS4xXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24vd3NkbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ3c2RsXCJdfSxcImFwcGxpY2F0aW9uL3dzcG9saWN5K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndzcG9saWN5XCJdfSxcImFwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCI3elwiXX0sXCJhcHBsaWNhdGlvbi94LWFiaXdvcmRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImFid1wiXX0sXCJhcHBsaWNhdGlvbi94LWFjZS1jb21wcmVzc2VkXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhY2VcIl19LFwiYXBwbGljYXRpb24veC1hbWZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3gtYXBwbGUtZGlza2ltYWdlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJkbWdcIl19LFwiYXBwbGljYXRpb24veC1hcmpcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJhcmpcIl19LFwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLWJpblwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYWFiXCIsXCJ4MzJcIixcInUzMlwiLFwidm94XCJdfSxcImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1tYXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImFhbVwiXX0sXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtc2VnXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJhYXNcIl19LFwiYXBwbGljYXRpb24veC1iY3Bpb1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYmNwaW9cIl19LFwiYXBwbGljYXRpb24veC1iZG9jXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiYmRvY1wiXX0sXCJhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInRvcnJlbnRcIl19LFwiYXBwbGljYXRpb24veC1ibG9yYlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYmxiXCIsXCJibG9yYlwiXX0sXCJhcHBsaWNhdGlvbi94LWJ6aXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiYnpcIl19LFwiYXBwbGljYXRpb24veC1iemlwMlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJiejJcIixcImJvelwiXX0sXCJhcHBsaWNhdGlvbi94LWNiclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY2JyXCIsXCJjYmFcIixcImNidFwiLFwiY2J6XCIsXCJjYjdcIl19LFwiYXBwbGljYXRpb24veC1jZGxpbmtcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInZjZFwiXX0sXCJhcHBsaWNhdGlvbi94LWNmcy1jb21wcmVzc2VkXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjZnNcIl19LFwiYXBwbGljYXRpb24veC1jaGF0XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjaGF0XCJdfSxcImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJwZ25cIl19LFwiYXBwbGljYXRpb24veC1jaHJvbWUtZXh0ZW5zaW9uXCI6e1wiZXh0ZW5zaW9uc1wiOltcImNyeFwiXX0sXCJhcHBsaWNhdGlvbi94LWNvY29hXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcImNjb1wiXX0sXCJhcHBsaWNhdGlvbi94LWNvbXByZXNzXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhcHBsaWNhdGlvbi94LWNvbmZlcmVuY2VcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm5zY1wiXX0sXCJhcHBsaWNhdGlvbi94LWNwaW9cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNwaW9cIl19LFwiYXBwbGljYXRpb24veC1jc2hcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNzaFwiXX0sXCJhcHBsaWNhdGlvbi94LWRlYlwiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcImFwcGxpY2F0aW9uL3gtZGViaWFuLXBhY2thZ2VcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImRlYlwiLFwidWRlYlwiXX0sXCJhcHBsaWNhdGlvbi94LWRnYy1jb21wcmVzc2VkXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJkZ2NcIl19LFwiYXBwbGljYXRpb24veC1kaXJlY3RvclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZGlyXCIsXCJkY3JcIixcImR4clwiLFwiY3N0XCIsXCJjY3RcIixcImN4dFwiLFwidzNkXCIsXCJmZ2RcIixcInN3YVwiXX0sXCJhcHBsaWNhdGlvbi94LWRvb21cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIndhZFwiXX0sXCJhcHBsaWNhdGlvbi94LWR0Ym5jeCt4bWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm5jeFwiXX0sXCJhcHBsaWNhdGlvbi94LWR0Ym9vayt4bWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImR0YlwiXX0sXCJhcHBsaWNhdGlvbi94LWR0YnJlc291cmNlK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicmVzXCJdfSxcImFwcGxpY2F0aW9uL3gtZHZpXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImR2aVwiXX0sXCJhcHBsaWNhdGlvbi94LWVudm95XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJldnlcIl19LFwiYXBwbGljYXRpb24veC1ldmFcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImV2YVwiXX0sXCJhcHBsaWNhdGlvbi94LWZvbnQtYmRmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJiZGZcIl19LFwiYXBwbGljYXRpb24veC1mb250LWRvc1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24veC1mb250LWZyYW1lbWFrZXJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3gtZm9udC1naG9zdHNjcmlwdFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZ3NmXCJdfSxcImFwcGxpY2F0aW9uL3gtZm9udC1saWJncnhcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2ZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInBzZlwiXX0sXCJhcHBsaWNhdGlvbi94LWZvbnQtcGNmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJwY2ZcIl19LFwiYXBwbGljYXRpb24veC1mb250LXNuZlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic25mXCJdfSxcImFwcGxpY2F0aW9uL3gtZm9udC1zcGVlZG9cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3gtZm9udC1zdW5vcy1uZXdzXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhcHBsaWNhdGlvbi94LWZvbnQtdHlwZTFcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInBmYVwiLFwicGZiXCIsXCJwZm1cIixcImFmbVwiXX0sXCJhcHBsaWNhdGlvbi94LWZvbnQtdmZvbnRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwifSxcImFwcGxpY2F0aW9uL3gtZnJlZWFyY1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYXJjXCJdfSxcImFwcGxpY2F0aW9uL3gtZnV0dXJlc3BsYXNoXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzcGxcIl19LFwiYXBwbGljYXRpb24veC1nY2EtY29tcHJlc3NlZFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZ2NhXCJdfSxcImFwcGxpY2F0aW9uL3gtZ2x1bHhcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInVseFwiXX0sXCJhcHBsaWNhdGlvbi94LWdudW1lcmljXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJnbnVtZXJpY1wiXX0sXCJhcHBsaWNhdGlvbi94LWdyYW1wcy14bWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImdyYW1wc1wiXX0sXCJhcHBsaWNhdGlvbi94LWd0YXJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImd0YXJcIl19LFwiYXBwbGljYXRpb24veC1nemlwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhcHBsaWNhdGlvbi94LWhkZlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiaGRmXCJdfSxcImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJwaHBcIl19LFwiYXBwbGljYXRpb24veC1pbnN0YWxsLWluc3RydWN0aW9uc1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiaW5zdGFsbFwiXX0sXCJhcHBsaWNhdGlvbi94LWlzbzk2NjAtaW1hZ2VcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImlzb1wiXX0sXCJhcHBsaWNhdGlvbi94LWphdmEtYXJjaGl2ZS1kaWZmXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcImphcmRpZmZcIl19LFwiYXBwbGljYXRpb24veC1qYXZhLWpubHAtZmlsZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJqbmxwXCJdfSxcImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdFwiOntcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24veC1sYXRleFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJsYXRleFwiXX0sXCJhcHBsaWNhdGlvbi94LWx1YS1ieXRlY29kZVwiOntcImV4dGVuc2lvbnNcIjpbXCJsdWFjXCJdfSxcImFwcGxpY2F0aW9uL3gtbHpoLWNvbXByZXNzZWRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImx6aFwiLFwibGhhXCJdfSxcImFwcGxpY2F0aW9uL3gtbWFrZXNlbGZcIjp7XCJzb3VyY2VcIjpcIm5naW54XCIsXCJleHRlbnNpb25zXCI6W1wicnVuXCJdfSxcImFwcGxpY2F0aW9uL3gtbWllXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtaWVcIl19LFwiYXBwbGljYXRpb24veC1tb2JpcG9ja2V0LWVib29rXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJwcmNcIixcIm1vYmlcIl19LFwiYXBwbGljYXRpb24veC1tcGVndXJsXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwiYXBwbGljYXRpb24veC1tcy1hcHBsaWNhdGlvblwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYXBwbGljYXRpb25cIl19LFwiYXBwbGljYXRpb24veC1tcy1zaG9ydGN1dFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibG5rXCJdfSxcImFwcGxpY2F0aW9uL3gtbXMtd21kXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ3bWRcIl19LFwiYXBwbGljYXRpb24veC1tcy13bXpcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIndtelwiXX0sXCJhcHBsaWNhdGlvbi94LW1zLXhiYXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInhiYXBcIl19LFwiYXBwbGljYXRpb24veC1tc2FjY2Vzc1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibWRiXCJdfSxcImFwcGxpY2F0aW9uL3gtbXNiaW5kZXJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm9iZFwiXX0sXCJhcHBsaWNhdGlvbi94LW1zY2FyZGZpbGVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNyZFwiXX0sXCJhcHBsaWNhdGlvbi94LW1zY2xpcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY2xwXCJdfSxcImFwcGxpY2F0aW9uL3gtbXNkb3MtcHJvZ3JhbVwiOntcImV4dGVuc2lvbnNcIjpbXCJleGVcIl19LFwiYXBwbGljYXRpb24veC1tc2Rvd25sb2FkXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJleGVcIixcImRsbFwiLFwiY29tXCIsXCJiYXRcIixcIm1zaVwiXX0sXCJhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtdmJcIixcIm0xM1wiLFwibTE0XCJdfSxcImFwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid21mXCIsXCJ3bXpcIixcImVtZlwiLFwiZW16XCJdfSxcImFwcGxpY2F0aW9uL3gtbXNtb25leVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibW55XCJdfSxcImFwcGxpY2F0aW9uL3gtbXNwdWJsaXNoZXJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInB1YlwiXX0sXCJhcHBsaWNhdGlvbi94LW1zc2NoZWR1bGVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNjZFwiXX0sXCJhcHBsaWNhdGlvbi94LW1zdGVybWluYWxcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInRybVwiXX0sXCJhcHBsaWNhdGlvbi94LW1zd3JpdGVcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIndyaVwiXX0sXCJhcHBsaWNhdGlvbi94LW5ldGNkZlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibmNcIixcImNkZlwiXX0sXCJhcHBsaWNhdGlvbi94LW5zLXByb3h5LWF1dG9jb25maWdcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInBhY1wiXX0sXCJhcHBsaWNhdGlvbi94LW56YlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibnpiXCJdfSxcImFwcGxpY2F0aW9uL3gtcGVybFwiOntcInNvdXJjZVwiOlwibmdpbnhcIixcImV4dGVuc2lvbnNcIjpbXCJwbFwiLFwicG1cIl19LFwiYXBwbGljYXRpb24veC1waWxvdFwiOntcInNvdXJjZVwiOlwibmdpbnhcIixcImV4dGVuc2lvbnNcIjpbXCJwcmNcIixcInBkYlwiXX0sXCJhcHBsaWNhdGlvbi94LXBrY3MxMlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJwMTJcIixcInBmeFwiXX0sXCJhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRpZmljYXRlc1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicDdiXCIsXCJzcGNcIl19LFwiYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0cmVxcmVzcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicDdyXCJdfSxcImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wicmFyXCJdfSxcImFwcGxpY2F0aW9uL3gtcmVkaGF0LXBhY2thZ2UtbWFuYWdlclwiOntcInNvdXJjZVwiOlwibmdpbnhcIixcImV4dGVuc2lvbnNcIjpbXCJycG1cIl19LFwiYXBwbGljYXRpb24veC1yZXNlYXJjaC1pbmZvLXN5c3RlbXNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInJpc1wiXX0sXCJhcHBsaWNhdGlvbi94LXNlYVwiOntcInNvdXJjZVwiOlwibmdpbnhcIixcImV4dGVuc2lvbnNcIjpbXCJzZWFcIl19LFwiYXBwbGljYXRpb24veC1zaFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInNoXCJdfSxcImFwcGxpY2F0aW9uL3gtc2hhclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2hhclwiXX0sXCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJzd2ZcIl19LFwiYXBwbGljYXRpb24veC1zaWx2ZXJsaWdodC1hcHBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInhhcFwiXX0sXCJhcHBsaWNhdGlvbi94LXNxbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3FsXCJdfSxcImFwcGxpY2F0aW9uL3gtc3R1ZmZpdFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJzaXRcIl19LFwiYXBwbGljYXRpb24veC1zdHVmZml0eFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2l0eFwiXX0sXCJhcHBsaWNhdGlvbi94LXN1YnJpcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3J0XCJdfSxcImFwcGxpY2F0aW9uL3gtc3Y0Y3Bpb1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3Y0Y3Bpb1wiXX0sXCJhcHBsaWNhdGlvbi94LXN2NGNyY1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic3Y0Y3JjXCJdfSxcImFwcGxpY2F0aW9uL3gtdDN2bS1pbWFnZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widDNcIl19LFwiYXBwbGljYXRpb24veC10YWRzXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJnYW1cIl19LFwiYXBwbGljYXRpb24veC10YXJcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ0YXJcIl19LFwiYXBwbGljYXRpb24veC10Y2xcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInRjbFwiLFwidGtcIl19LFwiYXBwbGljYXRpb24veC10ZXhcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInRleFwiXX0sXCJhcHBsaWNhdGlvbi94LXRleC10Zm1cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInRmbVwiXX0sXCJhcHBsaWNhdGlvbi94LXRleGluZm9cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInRleGluZm9cIixcInRleGlcIl19LFwiYXBwbGljYXRpb24veC10Z2lmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJvYmpcIl19LFwiYXBwbGljYXRpb24veC11c3RhclwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1widXN0YXJcIl19LFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LWhkZFwiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiaGRkXCJdfSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmFcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcIm92YVwiXX0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtb3ZmXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJvdmZcIl19LFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZib3hcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInZib3hcIl19LFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZib3gtZXh0cGFja1wiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInZib3gtZXh0cGFja1wiXX0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmRpXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ2ZGlcIl19LFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZoZFwiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1widmhkXCJdfSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12bWRrXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ2bWRrXCJdfSxcImFwcGxpY2F0aW9uL3gtd2Fpcy1zb3VyY2VcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInNyY1wiXX0sXCJhcHBsaWNhdGlvbi94LXdlYi1hcHAtbWFuaWZlc3QranNvblwiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wid2ViYXBwXCJdfSxcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZGVyXCIsXCJjcnRcIixcInBlbVwiXX0sXCJhcHBsaWNhdGlvbi94LXhmaWdcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImZpZ1wiXX0sXCJhcHBsaWNhdGlvbi94LXhsaWZmK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wieGxmXCJdfSxcImFwcGxpY2F0aW9uL3gteHBpbnN0YWxsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInhwaVwiXX0sXCJhcHBsaWNhdGlvbi94LXh6XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ4elwiXX0sXCJhcHBsaWNhdGlvbi94LXptYWNoaW5lXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ6MVwiLFwiejJcIixcInozXCIsXCJ6NFwiLFwiejVcIixcIno2XCIsXCJ6N1wiLFwiejhcIl19LFwiYXBwbGljYXRpb24veDQwMC1icFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3hhY21sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3hhbWwreG1sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ4YW1sXCJdfSxcImFwcGxpY2F0aW9uL3hjYXAtYXR0K3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3hjYXAtY2Fwcyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi94Y2FwLWRpZmYreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieGRmXCJdfSxcImFwcGxpY2F0aW9uL3hjYXAtZWwreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24veGNhcC1lcnJvcit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi94Y2FwLW5zK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3hjb24tY29uZmVyZW5jZS1pbmZvK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3hjb24tY29uZmVyZW5jZS1pbmZvLWRpZmYreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXBwbGljYXRpb24veGVuYyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4ZW5jXCJdfSxcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ4aHRtbFwiLFwieGh0XCJdfSxcImFwcGxpY2F0aW9uL3hodG1sLXZvaWNlK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXBwbGljYXRpb24veG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInhtbFwiLFwieHNsXCIsXCJ4c2RcIixcInJuZ1wiXX0sXCJhcHBsaWNhdGlvbi94bWwtZHRkXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImR0ZFwiXX0sXCJhcHBsaWNhdGlvbi94bWwtZXh0ZXJuYWwtcGFyc2VkLWVudGl0eVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3htbC1wYXRjaCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi94bXBwK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImFwcGxpY2F0aW9uL3hvcCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wieG9wXCJdfSxcImFwcGxpY2F0aW9uL3hwcm9jK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wieHBsXCJdfSxcImFwcGxpY2F0aW9uL3hzbHQreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieHNsdFwiXX0sXCJhcHBsaWNhdGlvbi94c3BmK3htbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wieHNwZlwiXX0sXCJhcHBsaWNhdGlvbi94dit4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJteG1sXCIsXCJ4aHZtbFwiLFwieHZtbFwiLFwieHZtXCJdfSxcImFwcGxpY2F0aW9uL3lhbmdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ5YW5nXCJdfSxcImFwcGxpY2F0aW9uL3lhbmctZGF0YStqc29uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcImFwcGxpY2F0aW9uL3lhbmctZGF0YSt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi95YW5nLXBhdGNoK2pzb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWV9LFwiYXBwbGljYXRpb24veWFuZy1wYXRjaCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhcHBsaWNhdGlvbi95aW4reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wieWluXCJdfSxcImFwcGxpY2F0aW9uL3ppcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiemlwXCJdfSxcImFwcGxpY2F0aW9uL3psaWJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby8zMmthZHBjbVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvLzNncHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIjNncHBcIl19LFwiYXVkaW8vM2dwcDJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9hYzNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9hZHBjbVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYWRwXCJdfSxcImF1ZGlvL2FtclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2Ftci13YlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2Ftci13YitcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9hcHR4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vYXNjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vYXRyYWMtYWR2YW5jZWQtbG9zc2xlc3NcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9hdHJhYy14XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vYXRyYWMzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vYmFzaWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImF1XCIsXCJzbmRcIl19LFwiYXVkaW8vYnYxNlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2J2MzJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9jbGVhcm1vZGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9jblwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2RhdDEyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZGxzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZHNyLWVzMjAxMTA4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZHNyLWVzMjAyMDUwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZHNyLWVzMjAyMjExXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZHNyLWVzMjAyMjEyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZHZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9kdmk0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZWFjM1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2VuY2FwcnRwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2V2cmMtcWNwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyYzBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjMVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2V2cmNiXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyY2IwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyY2IxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyY253XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyY253MFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2V2cmNudzFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjd2JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ldnJjd2IwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZXZyY3diMVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2V2c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2Z3ZHJlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MTEtMFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MTlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nNzIyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZzcyMjFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nNzIzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZzcyNi0xNlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MjYtMjRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nNzI2LTMyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZzcyNi00MFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MjhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nNzI5XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZzcyOTFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9nNzI5ZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2c3MjllXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZ3NtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vZ3NtLWVmclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2dzbS1oci0wOFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2lsYmNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9pcC1tcl92Mi41XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vaXNhY1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXVkaW8vbDE2XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vbDIwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vbDI0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJhdWRpby9sOFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL2xwY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL21lbHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9tZWxwMTIwMFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL21lbHAyNDAwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vbWVscDYwMFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL21pZGlcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1pZFwiLFwibWlkaVwiLFwia2FyXCIsXCJybWlcIl19LFwiYXVkaW8vbW9iaWxlLXhtZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL21wM1wiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIm1wM1wiXX0sXCJhdWRpby9tcDRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIm00YVwiLFwibXA0YVwiXX0sXCJhdWRpby9tcDRhLWxhdG1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9tcGFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9tcGEtcm9idXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vbXBlZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wibXBnYVwiLFwibXAyXCIsXCJtcDJhXCIsXCJtcDNcIixcIm0yYVwiLFwibTNhXCJdfSxcImF1ZGlvL21wZWc0LWdlbmVyaWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9tdXNlcGFja1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCJ9LFwiYXVkaW8vb2dnXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJvZ2FcIixcIm9nZ1wiLFwic3B4XCJdfSxcImF1ZGlvL29wdXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9wYXJpdHlmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9wY21hXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vcGNtYS13YlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3BjbXVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9wY211LXdiXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vcHJzLnNpZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3FjZWxwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vcmFwdG9yZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vcmVkXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vcnRwLWVuYy1hZXNjbTEyOFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3J0cC1taWRpXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vcnRwbG9vcGJhY2tcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9ydHhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9zM21cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInMzbVwiXX0sXCJhdWRpby9zaWxrXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzaWxcIl19LFwiYXVkaW8vc212XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vc212LXFjcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3NtdjBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby9zcC1taWRpXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vc3BlZXhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby90MTQwY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3QzOFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3RlbGVwaG9uZS1ldmVudFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3RvbmVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby91ZW1jbGlwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdWxwZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdmR2aVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3Ztci13YlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC4zZ3BwLml1ZnBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuNHNiXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmF1ZGlva296XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmNlbHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuY2lzY28ubnNlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmNtbGVzLnJhZGlvLWV2ZW50c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5jbnMuYW5wMVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5jbnMuaW5mMVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5kZWNlLmF1ZGlvXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widXZhXCIsXCJ1dnZhXCJdfSxcImF1ZGlvL3ZuZC5kaWdpdGFsLXdpbmRzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZW9sXCJdfSxcImF1ZGlvL3ZuZC5kbG5hLmFkdHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuZG9sYnkuaGVhYWMuMVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5kb2xieS5oZWFhYy4yXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmRvbGJ5Lm1scFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5kb2xieS5tcHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuZG9sYnkucGwyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmRvbGJ5LnBsMnhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuZG9sYnkucGwyelwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5kb2xieS5wdWxzZS4xXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLmRyYVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRyYVwiXX0sXCJhdWRpby92bmQuZHRzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZHRzXCJdfSxcImF1ZGlvL3ZuZC5kdHMuaGRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkdHNoZFwiXX0sXCJhdWRpby92bmQuZHZiLmZpbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQuZXZlcmFkLnBsalwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC5obnMuYXVkaW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQubHVjZW50LnZvaWNlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibHZwXCJdfSxcImF1ZGlvL3ZuZC5tcy1wbGF5cmVhZHkubWVkaWEucHlhXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicHlhXCJdfSxcImF1ZGlvL3ZuZC5ub2tpYS5tb2JpbGUteG1mXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLm5vcnRlbC52YmtcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQubnVlcmEuZWNlbHA0ODAwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZWNlbHA0ODAwXCJdfSxcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDc0NzBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJlY2VscDc0NzBcIl19LFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwOTYwMFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImVjZWxwOTYwMFwiXX0sXCJhdWRpby92bmQub2N0ZWwuc2JjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vdm5kLnByZXNvbnVzLm11bHRpdHJhY2tcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQucWNlbHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQucmhldG9yZXguMzJrYWRwY21cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJhdWRpby92bmQucmlwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wicmlwXCJdfSxcImF1ZGlvL3ZuZC5ybi1yZWFsYXVkaW9cIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJhdWRpby92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwubXBlZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC52bXguY3ZzZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImF1ZGlvL3ZuZC53YXZlXCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwiYXVkaW8vdm9yYmlzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJhdWRpby92b3JiaXMtY29uZmlnXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiYXVkaW8vd2F2XCI6e1wiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wid2F2XCJdfSxcImF1ZGlvL3dhdmVcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ3YXZcIl19LFwiYXVkaW8vd2VibVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ3ZWJhXCJdfSxcImF1ZGlvL3gtYWFjXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImFhY1wiXX0sXCJhdWRpby94LWFpZmZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImFpZlwiLFwiYWlmZlwiLFwiYWlmY1wiXX0sXCJhdWRpby94LWNhZlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJjYWZcIl19LFwiYXVkaW8veC1mbGFjXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJmbGFjXCJdfSxcImF1ZGlvL3gtbTRhXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcIm00YVwiXX0sXCJhdWRpby94LW1hdHJvc2thXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJta2FcIl19LFwiYXVkaW8veC1tcGVndXJsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtM3VcIl19LFwiYXVkaW8veC1tcy13YXhcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIndheFwiXX0sXCJhdWRpby94LW1zLXdtYVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid21hXCJdfSxcImF1ZGlvL3gtcG4tcmVhbGF1ZGlvXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJyYW1cIixcInJhXCJdfSxcImF1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdpblwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicm1wXCJdfSxcImF1ZGlvL3gtcmVhbGF1ZGlvXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcInJhXCJdfSxcImF1ZGlvL3gtdHRhXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJhdWRpby94LXdhdlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid2F2XCJdfSxcImF1ZGlvL3htXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ4bVwiXX0sXCJjaGVtaWNhbC94LWNkeFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiY2R4XCJdfSxcImNoZW1pY2FsL3gtY2lmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjaWZcIl19LFwiY2hlbWljYWwveC1jbWRmXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjbWRmXCJdfSxcImNoZW1pY2FsL3gtY21sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjbWxcIl19LFwiY2hlbWljYWwveC1jc21sXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJjc21sXCJdfSxcImNoZW1pY2FsL3gtcGRiXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJjaGVtaWNhbC94LXh5elwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wieHl6XCJdfSxcImZvbnQvY29sbGVjdGlvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInR0Y1wiXX0sXCJmb250L290ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJvdGZcIl19LFwiZm9udC9zZm50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiZm9udC90dGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ0dGZcIl19LFwiZm9udC93b2ZmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid29mZlwiXX0sXCJmb250L3dvZmYyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid29mZjJcIl19LFwiaW1hZ2UvYWNlc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL2FwbmdcIjp7XCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJhcG5nXCJdfSxcImltYWdlL2JtcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJibXBcIl19LFwiaW1hZ2UvY2dtXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiY2dtXCJdfSxcImltYWdlL2RpY29tLXJsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL2VtZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL2ZpdHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS9nM2ZheFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImczXCJdfSxcImltYWdlL2dpZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wiZ2lmXCJdfSxcImltYWdlL2llZlwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImllZlwiXX0sXCJpbWFnZS9qbHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS9qcDJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImpwMlwiLFwianBnMlwiXX0sXCJpbWFnZS9qcGVnXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJqcGVnXCIsXCJqcGdcIixcImpwZVwiXX0sXCJpbWFnZS9qcG1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImpwbVwiXX0sXCJpbWFnZS9qcHhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImpweFwiLFwianBmXCJdfSxcImltYWdlL2t0eFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImt0eFwiXX0sXCJpbWFnZS9uYXBscHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS9wanBlZ1wiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcImltYWdlL3BuZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wicG5nXCJdfSxcImltYWdlL3Bycy5idGlmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiYnRpZlwiXX0sXCJpbWFnZS9wcnMucHRpXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2UvcHdnLXJhc3RlclwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3NnaVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2dpXCJdfSxcImltYWdlL3N2Zyt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wic3ZnXCIsXCJzdmd6XCJdfSxcImltYWdlL3QzOFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3RpZmZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcInRpZmZcIixcInRpZlwiXX0sXCJpbWFnZS90aWZmLWZ4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJwc2RcIl19LFwiaW1hZ2Uvdm5kLmFpcnppcC5hY2NlbGVyYXRvci5henZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS92bmQuY25zLmluZjJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS92bmQuZGVjZS5ncmFwaGljXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widXZpXCIsXCJ1dnZpXCIsXCJ1dmdcIixcInV2dmdcIl19LFwiaW1hZ2Uvdm5kLmRqdnVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkanZ1XCIsXCJkanZcIl19LFwiaW1hZ2Uvdm5kLmR2Yi5zdWJ0aXRsZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInN1YlwiXX0sXCJpbWFnZS92bmQuZHdnXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZHdnXCJdfSxcImltYWdlL3ZuZC5keGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkeGZcIl19LFwiaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZic1wiXX0sXCJpbWFnZS92bmQuZnB4XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZnB4XCJdfSxcImltYWdlL3ZuZC5mc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmc3RcIl19LFwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtbW1yXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibW1yXCJdfSxcImltYWdlL3ZuZC5mdWppeGVyb3guZWRtaWNzLXJsY1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInJsY1wiXX0sXCJpbWFnZS92bmQuZ2xvYmFsZ3JhcGhpY3MucGdiXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvdm5kLm1peFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC5tb3ppbGxhLmFwbmdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS92bmQubXMtbW9kaVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1kaVwiXX0sXCJpbWFnZS92bmQubXMtcGhvdG9cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIndkcFwiXX0sXCJpbWFnZS92bmQubmV0LWZweFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIm5weFwiXX0sXCJpbWFnZS92bmQucmFkaWFuY2VcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS92bmQuc2VhbGVkLnBuZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5naWZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwuanBnXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwiaW1hZ2Uvdm5kLnN2ZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC50ZW5jZW50LnRhcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC52YWx2ZS5zb3VyY2UudGV4dHVyZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3ZuZC53YXAud2JtcFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndibXBcIl19LFwiaW1hZ2Uvdm5kLnhpZmZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ4aWZcIl19LFwiaW1hZ2Uvdm5kLnpicnVzaC5wY3hcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJpbWFnZS93ZWJwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ3ZWJwXCJdfSxcImltYWdlL3dtZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcImltYWdlL3gtM2RzXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCIzZHNcIl19LFwiaW1hZ2UveC1jbXUtcmFzdGVyXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJyYXNcIl19LFwiaW1hZ2UveC1jbXhcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNteFwiXX0sXCJpbWFnZS94LWZyZWVoYW5kXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJmaFwiLFwiZmhjXCIsXCJmaDRcIixcImZoNVwiLFwiZmg3XCJdfSxcImltYWdlL3gtaWNvblwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImljb1wiXX0sXCJpbWFnZS94LWpuZ1wiOntcInNvdXJjZVwiOlwibmdpbnhcIixcImV4dGVuc2lvbnNcIjpbXCJqbmdcIl19LFwiaW1hZ2UveC1tcnNpZC1pbWFnZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2lkXCJdfSxcImltYWdlL3gtbXMtYm1wXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJibXBcIl19LFwiaW1hZ2UveC1wY3hcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInBjeFwiXX0sXCJpbWFnZS94LXBpY3RcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInBpY1wiLFwicGN0XCJdfSxcImltYWdlL3gtcG9ydGFibGUtYW55bWFwXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJwbm1cIl19LFwiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInBibVwiXX0sXCJpbWFnZS94LXBvcnRhYmxlLWdyYXltYXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInBnbVwiXX0sXCJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicHBtXCJdfSxcImltYWdlL3gtcmdiXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJyZ2JcIl19LFwiaW1hZ2UveC10Z2FcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInRnYVwiXX0sXCJpbWFnZS94LXhiaXRtYXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInhibVwiXX0sXCJpbWFnZS94LXhjZlwiOntcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcImltYWdlL3gteHBpeG1hcFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wieHBtXCJdfSxcImltYWdlL3gteHdpbmRvd2R1bXBcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInh3ZFwiXX0sXCJtZXNzYWdlL2NwaW1cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1lc3NhZ2UvZGlzcG9zaXRpb24tbm90aWZpY2F0aW9uXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZGlzcG9zaXRpb24tbm90aWZpY2F0aW9uXCJdfSxcIm1lc3NhZ2UvZXh0ZXJuYWwtYm9keVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1lc3NhZ2UvZmVlZGJhY2stcmVwb3J0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibWVzc2FnZS9nbG9iYWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1OG1zZ1wiXX0sXCJtZXNzYWdlL2dsb2JhbC1kZWxpdmVyeS1zdGF0dXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1OGRzblwiXX0sXCJtZXNzYWdlL2dsb2JhbC1kaXNwb3NpdGlvbi1ub3RpZmljYXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1OG1kblwiXX0sXCJtZXNzYWdlL2dsb2JhbC1oZWFkZXJzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widThoZHJcIl19LFwibWVzc2FnZS9odHRwXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZX0sXCJtZXNzYWdlL2ltZG4reG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlfSxcIm1lc3NhZ2UvbmV3c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1lc3NhZ2UvcGFydGlhbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwibWVzc2FnZS9yZmM4MjJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiZW1sXCIsXCJtaW1lXCJdfSxcIm1lc3NhZ2Uvcy1odHRwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibWVzc2FnZS9zaXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtZXNzYWdlL3NpcGZyYWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtZXNzYWdlL3RyYWNraW5nLXN0YXR1c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1lc3NhZ2Uvdm5kLnNpLnNpbXBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtZXNzYWdlL3ZuZC53ZmEud3NjXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid3NjXCJdfSxcIm1vZGVsLzNtZlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1vZGVsL2dsdGYranNvblwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJnbHRmXCJdfSxcIm1vZGVsL2dsdGYtYmluYXJ5XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImdsYlwiXX0sXCJtb2RlbC9pZ2VzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJpZ3NcIixcImlnZXNcIl19LFwibW9kZWwvbWVzaFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wibXNoXCIsXCJtZXNoXCIsXCJzaWxvXCJdfSxcIm1vZGVsL3ZuZC5jb2xsYWRhK3htbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImRhZVwiXX0sXCJtb2RlbC92bmQuZHdmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZHdmXCJdfSxcIm1vZGVsL3ZuZC5mbGF0bGFuZC4zZG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibW9kZWwvdm5kLmdkbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImdkbFwiXX0sXCJtb2RlbC92bmQuZ3MtZ2RsXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIn0sXCJtb2RlbC92bmQuZ3MuZ2RsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibW9kZWwvdm5kLmd0d1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImd0d1wiXX0sXCJtb2RlbC92bmQubW9tbCt4bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtb2RlbC92bmQubXRzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXRzXCJdfSxcIm1vZGVsL3ZuZC5vcGVuZ2V4XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibW9kZWwvdm5kLnBhcmFzb2xpZC50cmFuc21pdC5iaW5hcnlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LnRleHRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtb2RlbC92bmQucm9zZXR0ZS5hbm5vdGF0ZWQtZGF0YS1tb2RlbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm1vZGVsL3ZuZC52YWx2ZS5zb3VyY2UuY29tcGlsZWQtbWFwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibW9kZWwvdm5kLnZ0dVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInZ0dVwiXX0sXCJtb2RlbC92cm1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ3cmxcIixcInZybWxcIl19LFwibW9kZWwveDNkK2JpbmFyeVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ4M2RiXCIsXCJ4M2RielwiXX0sXCJtb2RlbC94M2QrZmFzdGluZm9zZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtb2RlbC94M2QrdnJtbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ4M2R2XCIsXCJ4M2R2elwiXX0sXCJtb2RlbC94M2QreG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcIngzZFwiLFwieDNkelwiXX0sXCJtb2RlbC94M2QtdnJtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm11bHRpcGFydC9hbHRlcm5hdGl2ZVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwibXVsdGlwYXJ0L2FwcGxlZG91YmxlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibXVsdGlwYXJ0L2J5dGVyYW5nZXNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtdWx0aXBhcnQvZGlnZXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibXVsdGlwYXJ0L2VuY3J5cHRlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwibXVsdGlwYXJ0L2hlYWRlci1zZXRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtdWx0aXBhcnQvbWl4ZWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcIm11bHRpcGFydC9tdWx0aWxpbmd1YWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtdWx0aXBhcnQvcGFyYWxsZWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJtdWx0aXBhcnQvcmVsYXRlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2V9LFwibXVsdGlwYXJ0L3JlcG9ydFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm11bHRpcGFydC9zaWduZWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlfSxcIm11bHRpcGFydC92bmQuYmludC5tZWQtcGx1c1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcIm11bHRpcGFydC92b2ljZS1tZXNzYWdlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwibXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9jYWNoZS1tYW5pZmVzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJhcHBjYWNoZVwiLFwibWFuaWZlc3RcIl19LFwidGV4dC9jYWxlbmRhclwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImljc1wiLFwiaWZiXCJdfSxcInRleHQvY2FsZW5kZXJcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlfSxcInRleHQvY21kXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJ0ZXh0L2NvZmZlZXNjcmlwdFwiOntcImV4dGVuc2lvbnNcIjpbXCJjb2ZmZWVcIixcImxpdGNvZmZlZVwiXX0sXCJ0ZXh0L2Nzc1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY2hhcnNldFwiOlwiVVRGLThcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wiY3NzXCJdfSxcInRleHQvY3N2XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcImNzdlwiXX0sXCJ0ZXh0L2Nzdi1zY2hlbWFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L2RpcmVjdG9yeVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvZG5zXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9lY21hc2NyaXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9lbmNhcHJ0cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvZW5yaWNoZWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L2Z3ZHJlZFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvZ3JhbW1hci1yZWYtbGlzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvaHRtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJodG1sXCIsXCJodG1cIixcInNodG1sXCJdfSxcInRleHQvamFkZVwiOntcImV4dGVuc2lvbnNcIjpbXCJqYWRlXCJdfSxcInRleHQvamF2YXNjcmlwdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZX0sXCJ0ZXh0L2pjci1jbmRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L2pzeFwiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wianN4XCJdfSxcInRleHQvbGVzc1wiOntcImV4dGVuc2lvbnNcIjpbXCJsZXNzXCJdfSxcInRleHQvbWFya2Rvd25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wibWFya2Rvd25cIixcIm1kXCJdfSxcInRleHQvbWF0aG1sXCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcIm1tbFwiXX0sXCJ0ZXh0L21pemFyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9uM1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJuM1wiXX0sXCJ0ZXh0L3BhcmFtZXRlcnNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3Bhcml0eWZlY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvcGxhaW5cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1widHh0XCIsXCJ0ZXh0XCIsXCJjb25mXCIsXCJkZWZcIixcImxpc3RcIixcImxvZ1wiLFwiaW5cIixcImluaVwiXX0sXCJ0ZXh0L3Byb3ZlbmFuY2Utbm90YXRpb25cIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3Bycy5mYWxsZW5zdGVpbi5yc3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3Bycy5saW5lcy50YWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkc2NcIl19LFwidGV4dC9wcnMucHJvcC5sb2dpY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvcmFwdG9yZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9yZWRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3JmYzgyMi1oZWFkZXJzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC9yaWNodGV4dFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJydHhcIl19LFwidGV4dC9ydGZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wicnRmXCJdfSxcInRleHQvcnRwLWVuYy1hZXNjbTEyOFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvcnRwbG9vcGJhY2tcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3J0eFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvc2dtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInNnbWxcIixcInNnbVwiXX0sXCJ0ZXh0L3NoZXhcIjp7XCJleHRlbnNpb25zXCI6W1wic2hleFwiXX0sXCJ0ZXh0L3NsaW1cIjp7XCJleHRlbnNpb25zXCI6W1wic2xpbVwiLFwic2xtXCJdfSxcInRleHQvc3RyaW5nc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvc3R5bHVzXCI6e1wiZXh0ZW5zaW9uc1wiOltcInN0eWx1c1wiLFwic3R5bFwiXX0sXCJ0ZXh0L3QxNDBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInRzdlwiXX0sXCJ0ZXh0L3Ryb2ZmXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widFwiLFwidHJcIixcInJvZmZcIixcIm1hblwiLFwibWVcIixcIm1zXCJdfSxcInRleHQvdHVydGxlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widHRsXCJdfSxcInRleHQvdWxwZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC91cmktbGlzdFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ1cmlcIixcInVyaXNcIixcInVybHNcIl19LFwidGV4dC92Y2FyZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ2Y2FyZFwiXX0sXCJ0ZXh0L3ZuZC5hXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQuYWJjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQuYXNjaWktYXJ0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQuY3VybFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImN1cmxcIl19LFwidGV4dC92bmQuY3VybC5kY3VybFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZGN1cmxcIl19LFwidGV4dC92bmQuY3VybC5tY3VybFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibWN1cmxcIl19LFwidGV4dC92bmQuY3VybC5zY3VybFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic2N1cmxcIl19LFwidGV4dC92bmQuZGViaWFuLmNvcHlyaWdodFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvdm5kLmRtY2xpZW50c2NyaXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQuZHZiLnN1YnRpdGxlXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wic3ViXCJdfSxcInRleHQvdm5kLmVzbWVydGVjLnRoZW1lLWRlc2NyaXB0b3JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5mbHlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJmbHlcIl19LFwidGV4dC92bmQuZm1pLmZsZXhzdG9yXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZmx4XCJdfSxcInRleHQvdm5kLmdyYXBodml6XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiZ3ZcIl19LFwidGV4dC92bmQuaW4zZC4zZG1sXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiM2RtbFwiXX0sXCJ0ZXh0L3ZuZC5pbjNkLnNwb3RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJzcG90XCJdfSxcInRleHQvdm5kLmlwdGMubmV3c21sXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQuaXB0Yy5uaXRmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQubGF0ZXgtelwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvdm5kLm1vdG9yb2xhLnJlZmxleFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvdm5kLm1zLW1lZGlhcGFja2FnZVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInRleHQvdm5kLm5ldDJwaG9uZS5jb21tY2VudGVyLmNvbW1hbmRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3ZuZC5yYWRpc3lzLm1zbWwtYmFzaWMtbGF5b3V0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQuc2kudXJpY2F0YWxvZ3VlXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQuc3VuLmoybWUuYXBwLWRlc2NyaXB0b3JcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJqYWRcIl19LFwidGV4dC92bmQudHJvbGx0ZWNoLmxpbmd1aXN0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQud2FwLnNpXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQud2FwLnNsXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidGV4dC92bmQud2FwLndtbFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcIndtbFwiXX0sXCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wid21sc1wiXX0sXCJ0ZXh0L3Z0dFwiOntcImNoYXJzZXRcIjpcIlVURi04XCIsXCJjb21wcmVzc2libGVcIjp0cnVlLFwiZXh0ZW5zaW9uc1wiOltcInZ0dFwiXX0sXCJ0ZXh0L3gtYXNtXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzXCIsXCJhc21cIl19LFwidGV4dC94LWNcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImNcIixcImNjXCIsXCJjeHhcIixcImNwcFwiLFwiaFwiLFwiaGhcIixcImRpY1wiXX0sXCJ0ZXh0L3gtY29tcG9uZW50XCI6e1wic291cmNlXCI6XCJuZ2lueFwiLFwiZXh0ZW5zaW9uc1wiOltcImh0Y1wiXX0sXCJ0ZXh0L3gtZm9ydHJhblwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZlwiLFwiZm9yXCIsXCJmNzdcIixcImY5MFwiXX0sXCJ0ZXh0L3gtZ3d0LXJwY1wiOntcImNvbXByZXNzaWJsZVwiOnRydWV9LFwidGV4dC94LWhhbmRsZWJhcnMtdGVtcGxhdGVcIjp7XCJleHRlbnNpb25zXCI6W1wiaGJzXCJdfSxcInRleHQveC1qYXZhLXNvdXJjZVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiamF2YVwiXX0sXCJ0ZXh0L3gtanF1ZXJ5LXRtcGxcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlfSxcInRleHQveC1sdWFcIjp7XCJleHRlbnNpb25zXCI6W1wibHVhXCJdfSxcInRleHQveC1tYXJrZG93blwiOntcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wibWtkXCJdfSxcInRleHQveC1uZm9cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm5mb1wiXX0sXCJ0ZXh0L3gtb3BtbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wib3BtbFwiXX0sXCJ0ZXh0L3gtb3JnXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJvcmdcIl19LFwidGV4dC94LXBhc2NhbFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wicFwiLFwicGFzXCJdfSxcInRleHQveC1wcm9jZXNzaW5nXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJwZGVcIl19LFwidGV4dC94LXNhc3NcIjp7XCJleHRlbnNpb25zXCI6W1wic2Fzc1wiXX0sXCJ0ZXh0L3gtc2Nzc1wiOntcImV4dGVuc2lvbnNcIjpbXCJzY3NzXCJdfSxcInRleHQveC1zZXRleHRcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImV0eFwiXX0sXCJ0ZXh0L3gtc2Z2XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJzZnZcIl19LFwidGV4dC94LXN1c2UteW1wXCI6e1wiY29tcHJlc3NpYmxlXCI6dHJ1ZSxcImV4dGVuc2lvbnNcIjpbXCJ5bXBcIl19LFwidGV4dC94LXV1ZW5jb2RlXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ1dVwiXX0sXCJ0ZXh0L3gtdmNhbGVuZGFyXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ2Y3NcIl19LFwidGV4dC94LXZjYXJkXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ2Y2ZcIl19LFwidGV4dC94bWxcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOnRydWUsXCJleHRlbnNpb25zXCI6W1wieG1sXCJdfSxcInRleHQveG1sLWV4dGVybmFsLXBhcnNlZC1lbnRpdHlcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ0ZXh0L3lhbWxcIjp7XCJleHRlbnNpb25zXCI6W1wieWFtbFwiLFwieW1sXCJdfSxcInZpZGVvLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvLzNncHBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCIzZ3BcIixcIjNncHBcIl19LFwidmlkZW8vM2dwcC10dFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvLzNncHAyXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wiM2cyXCJdfSxcInZpZGVvL2JtcGVnXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vYnQ2NTZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9jZWxiXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vZHZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9lbmNhcHJ0cFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL2gyNjFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJoMjYxXCJdfSxcInZpZGVvL2gyNjNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJoMjYzXCJdfSxcInZpZGVvL2gyNjMtMTk5OFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL2gyNjMtMjAwMFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL2gyNjRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJoMjY0XCJdfSxcInZpZGVvL2gyNjQtcmNkb1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL2gyNjQtc3ZjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vaDI2NVwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL2lzby5zZWdtZW50XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vanBlZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImpwZ3ZcIl19LFwidmlkZW8vanBlZzIwMDBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9qcG1cIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImpwbVwiLFwianBnbVwiXX0sXCJ2aWRlby9tajJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJtajJcIixcIm1qcDJcIl19LFwidmlkZW8vbXAxc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL21wMnBcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9tcDJ0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1widHNcIl19LFwidmlkZW8vbXA0XCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJtcDRcIixcIm1wNHZcIixcIm1wZzRcIl19LFwidmlkZW8vbXA0di1lc1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL21wZWdcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIm1wZWdcIixcIm1wZ1wiLFwibXBlXCIsXCJtMXZcIixcIm0ydlwiXX0sXCJ2aWRlby9tcGVnNC1nZW5lcmljXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vbXB2XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vbnZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9vZ2dcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIm9ndlwiXX0sXCJ2aWRlby9wYXJpdHlmZWNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9wb2ludGVyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vcXVpY2t0aW1lXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJxdFwiLFwibW92XCJdfSxcInZpZGVvL3JhcHRvcmZlY1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3Jhd1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3J0cC1lbmMtYWVzY20xMjhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby9ydHBsb29wYmFja1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3J0eFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3NtcHRlMjkxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vc21wdGUyOTJtXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdWxwZmVjXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdmMxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLmNjdHZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuZGVjZS5oZFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInV2aFwiLFwidXZ2aFwiXX0sXCJ2aWRlby92bmQuZGVjZS5tb2JpbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1dm1cIixcInV2dm1cIl19LFwidmlkZW8vdm5kLmRlY2UubXA0XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLmRlY2UucGRcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1dnBcIixcInV2dnBcIl19LFwidmlkZW8vdm5kLmRlY2Uuc2RcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1dnNcIixcInV2dnNcIl19LFwidmlkZW8vdm5kLmRlY2UudmlkZW9cIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJ1dnZcIixcInV2dnZcIl19LFwidmlkZW8vdm5kLmRpcmVjdHYubXBlZ1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5kaXJlY3R2Lm1wZWctdHRzXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLmRsbmEubXBlZy10dHNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuZHZiLmZpbGVcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJkdmJcIl19LFwidmlkZW8vdm5kLmZ2dFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcImZ2dFwiXX0sXCJ2aWRlby92bmQuaG5zLnZpZGVvXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLmlwdHZmb3J1bS4xZHBhcml0eWZlYy0xMDEwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLmlwdHZmb3J1bS4xZHBhcml0eWZlYy0yMDA1XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLmlwdHZmb3J1bS4yZHBhcml0eWZlYy0xMDEwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLmlwdHZmb3J1bS4yZHBhcml0eWZlYy0yMDA1XCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLmlwdHZmb3J1bS50dHNhdmNcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuaXB0dmZvcnVtLnR0c21wZWcyXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLm1vdG9yb2xhLnZpZGVvXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLm1vdG9yb2xhLnZpZGVvcFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5tcGVndXJsXCI6e1wic291cmNlXCI6XCJpYW5hXCIsXCJleHRlbnNpb25zXCI6W1wibXh1XCIsXCJtNHVcIl19LFwidmlkZW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weXZcIjp7XCJzb3VyY2VcIjpcImlhbmFcIixcImV4dGVuc2lvbnNcIjpbXCJweXZcIl19LFwidmlkZW8vdm5kLm5va2lhLmludGVybGVhdmVkLW11bHRpbWVkaWFcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQubm9raWEubXA0dnJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQubm9raWEudmlkZW92b2lwXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLm9iamVjdHZpZGVvXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLnJhZGdhbWV0dG9vbHMuYmlua1wiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5yYWRnYW1ldHRvb2xzLnNtYWNrZXJcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby92bmQuc2VhbGVkLm1wZWcxXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLnNlYWxlZC5tcGVnNFwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC5zZWFsZWQuc3dmXCI6e1wic291cmNlXCI6XCJpYW5hXCJ9LFwidmlkZW8vdm5kLnNlYWxlZG1lZGlhLnNvZnRzZWFsLm1vdlwiOntcInNvdXJjZVwiOlwiaWFuYVwifSxcInZpZGVvL3ZuZC51dnZ1Lm1wNFwiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInV2dVwiLFwidXZ2dVwiXX0sXCJ2aWRlby92bmQudml2b1wiOntcInNvdXJjZVwiOlwiaWFuYVwiLFwiZXh0ZW5zaW9uc1wiOltcInZpdlwiXX0sXCJ2aWRlby92cDhcIjp7XCJzb3VyY2VcIjpcImlhbmFcIn0sXCJ2aWRlby93ZWJtXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcIndlYm1cIl19LFwidmlkZW8veC1mNHZcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcImY0dlwiXX0sXCJ2aWRlby94LWZsaVwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiZmxpXCJdfSxcInZpZGVvL3gtZmx2XCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImNvbXByZXNzaWJsZVwiOmZhbHNlLFwiZXh0ZW5zaW9uc1wiOltcImZsdlwiXX0sXCJ2aWRlby94LW00dlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wibTR2XCJdfSxcInZpZGVvL3gtbWF0cm9za2FcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiY29tcHJlc3NpYmxlXCI6ZmFsc2UsXCJleHRlbnNpb25zXCI6W1wibWt2XCIsXCJtazNkXCIsXCJta3NcIl19LFwidmlkZW8veC1tbmdcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIm1uZ1wiXX0sXCJ2aWRlby94LW1zLWFzZlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYXNmXCIsXCJhc3hcIl19LFwidmlkZW8veC1tcy12b2JcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcInZvYlwiXX0sXCJ2aWRlby94LW1zLXdtXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJ3bVwiXX0sXCJ2aWRlby94LW1zLXdtdlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJjb21wcmVzc2libGVcIjpmYWxzZSxcImV4dGVuc2lvbnNcIjpbXCJ3bXZcIl19LFwidmlkZW8veC1tcy13bXhcIjp7XCJzb3VyY2VcIjpcImFwYWNoZVwiLFwiZXh0ZW5zaW9uc1wiOltcIndteFwiXX0sXCJ2aWRlby94LW1zLXd2eFwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wid3Z4XCJdfSxcInZpZGVvL3gtbXN2aWRlb1wiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wiYXZpXCJdfSxcInZpZGVvL3gtc2dpLW1vdmllXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJtb3ZpZVwiXX0sXCJ2aWRlby94LXNtdlwiOntcInNvdXJjZVwiOlwiYXBhY2hlXCIsXCJleHRlbnNpb25zXCI6W1wic212XCJdfSxcIngtY29uZmVyZW5jZS94LWNvb2x0YWxrXCI6e1wic291cmNlXCI6XCJhcGFjaGVcIixcImV4dGVuc2lvbnNcIjpbXCJpY2VcIl19LFwieC1zaGFkZXIveC1mcmFnbWVudFwiOntcImNvbXByZXNzaWJsZVwiOnRydWV9LFwieC1zaGFkZXIveC12ZXJ0ZXhcIjp7XCJjb21wcmVzc2libGVcIjp0cnVlfX1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbWltZS1kYi9kYi5qc29uXG4vLyBtb2R1bGUgaWQgPSAxNTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBib2R5LXBhcnNlclxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgYnl0ZXMgPSByZXF1aXJlKCdieXRlcycpXG52YXIgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpKCdib2R5LXBhcnNlcjpyYXcnKVxudmFyIHJlYWQgPSByZXF1aXJlKCcuLi9yZWFkJylcbnZhciB0eXBlaXMgPSByZXF1aXJlKCd0eXBlLWlzJylcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhd1xuXG4vKipcbiAqIENyZWF0ZSBhIG1pZGRsZXdhcmUgdG8gcGFyc2UgcmF3IGJvZGllcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcmF3IChvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fVxuXG4gIHZhciBpbmZsYXRlID0gb3B0cy5pbmZsYXRlICE9PSBmYWxzZVxuICB2YXIgbGltaXQgPSB0eXBlb2Ygb3B0cy5saW1pdCAhPT0gJ251bWJlcidcbiAgICA/IGJ5dGVzLnBhcnNlKG9wdHMubGltaXQgfHwgJzEwMGtiJylcbiAgICA6IG9wdHMubGltaXRcbiAgdmFyIHR5cGUgPSBvcHRzLnR5cGUgfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSdcbiAgdmFyIHZlcmlmeSA9IG9wdHMudmVyaWZ5IHx8IGZhbHNlXG5cbiAgaWYgKHZlcmlmeSAhPT0gZmFsc2UgJiYgdHlwZW9mIHZlcmlmeSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiB2ZXJpZnkgbXVzdCBiZSBmdW5jdGlvbicpXG4gIH1cblxuICAvLyBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25cbiAgdmFyIHNob3VsZFBhcnNlID0gdHlwZW9mIHR5cGUgIT09ICdmdW5jdGlvbidcbiAgICA/IHR5cGVDaGVja2VyKHR5cGUpXG4gICAgOiB0eXBlXG5cbiAgZnVuY3Rpb24gcGFyc2UgKGJ1Zikge1xuICAgIHJldHVybiBidWZcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiByYXdQYXJzZXIgKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgaWYgKHJlcS5fYm9keSkge1xuICAgICAgZGVidWcoJ2JvZHkgYWxyZWFkeSBwYXJzZWQnKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICByZXEuYm9keSA9IHJlcS5ib2R5IHx8IHt9XG5cbiAgICAvLyBza2lwIHJlcXVlc3RzIHdpdGhvdXQgYm9kaWVzXG4gICAgaWYgKCF0eXBlaXMuaGFzQm9keShyZXEpKSB7XG4gICAgICBkZWJ1Zygnc2tpcCBlbXB0eSBib2R5JylcbiAgICAgIG5leHQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZGVidWcoJ2NvbnRlbnQtdHlwZSAlaicsIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSlcblxuICAgIC8vIGRldGVybWluZSBpZiByZXF1ZXN0IHNob3VsZCBiZSBwYXJzZWRcbiAgICBpZiAoIXNob3VsZFBhcnNlKHJlcSkpIHtcbiAgICAgIGRlYnVnKCdza2lwIHBhcnNpbmcnKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyByZWFkXG4gICAgcmVhZChyZXEsIHJlcywgbmV4dCwgcGFyc2UsIGRlYnVnLCB7XG4gICAgICBlbmNvZGluZzogbnVsbCxcbiAgICAgIGluZmxhdGU6IGluZmxhdGUsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgICB2ZXJpZnk6IHZlcmlmeVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIHNpbXBsZSB0eXBlIGNoZWNrZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5cbmZ1bmN0aW9uIHR5cGVDaGVja2VyICh0eXBlKSB7XG4gIHJldHVybiBmdW5jdGlvbiBjaGVja1R5cGUgKHJlcSkge1xuICAgIHJldHVybiBCb29sZWFuKHR5cGVpcyhyZXEsIHR5cGUpKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYm9keS1wYXJzZXIvbGliL3R5cGVzL3Jhdy5qc1xuLy8gbW9kdWxlIGlkID0gMTU1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogYm9keS1wYXJzZXJcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxudmFyIGJ5dGVzID0gcmVxdWlyZSgnYnl0ZXMnKVxudmFyIGNvbnRlbnRUeXBlID0gcmVxdWlyZSgnY29udGVudC10eXBlJylcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2JvZHktcGFyc2VyOnRleHQnKVxudmFyIHJlYWQgPSByZXF1aXJlKCcuLi9yZWFkJylcbnZhciB0eXBlaXMgPSByZXF1aXJlKCd0eXBlLWlzJylcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRleHRcblxuLyoqXG4gKiBDcmVhdGUgYSBtaWRkbGV3YXJlIHRvIHBhcnNlIHRleHQgYm9kaWVzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiB0ZXh0IChvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fVxuXG4gIHZhciBkZWZhdWx0Q2hhcnNldCA9IG9wdHMuZGVmYXVsdENoYXJzZXQgfHwgJ3V0Zi04J1xuICB2YXIgaW5mbGF0ZSA9IG9wdHMuaW5mbGF0ZSAhPT0gZmFsc2VcbiAgdmFyIGxpbWl0ID0gdHlwZW9mIG9wdHMubGltaXQgIT09ICdudW1iZXInXG4gICAgPyBieXRlcy5wYXJzZShvcHRzLmxpbWl0IHx8ICcxMDBrYicpXG4gICAgOiBvcHRzLmxpbWl0XG4gIHZhciB0eXBlID0gb3B0cy50eXBlIHx8ICd0ZXh0L3BsYWluJ1xuICB2YXIgdmVyaWZ5ID0gb3B0cy52ZXJpZnkgfHwgZmFsc2VcblxuICBpZiAodmVyaWZ5ICE9PSBmYWxzZSAmJiB0eXBlb2YgdmVyaWZ5ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIHZlcmlmeSBtdXN0IGJlIGZ1bmN0aW9uJylcbiAgfVxuXG4gIC8vIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBjaGVja2luZyBmdW5jdGlvblxuICB2YXIgc2hvdWxkUGFyc2UgPSB0eXBlb2YgdHlwZSAhPT0gJ2Z1bmN0aW9uJ1xuICAgID8gdHlwZUNoZWNrZXIodHlwZSlcbiAgICA6IHR5cGVcblxuICBmdW5jdGlvbiBwYXJzZSAoYnVmKSB7XG4gICAgcmV0dXJuIGJ1ZlxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHRleHRQYXJzZXIgKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgaWYgKHJlcS5fYm9keSkge1xuICAgICAgZGVidWcoJ2JvZHkgYWxyZWFkeSBwYXJzZWQnKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICByZXEuYm9keSA9IHJlcS5ib2R5IHx8IHt9XG5cbiAgICAvLyBza2lwIHJlcXVlc3RzIHdpdGhvdXQgYm9kaWVzXG4gICAgaWYgKCF0eXBlaXMuaGFzQm9keShyZXEpKSB7XG4gICAgICBkZWJ1Zygnc2tpcCBlbXB0eSBib2R5JylcbiAgICAgIG5leHQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZGVidWcoJ2NvbnRlbnQtdHlwZSAlaicsIHJlcS5oZWFkZXJzWydjb250ZW50LXR5cGUnXSlcblxuICAgIC8vIGRldGVybWluZSBpZiByZXF1ZXN0IHNob3VsZCBiZSBwYXJzZWRcbiAgICBpZiAoIXNob3VsZFBhcnNlKHJlcSkpIHtcbiAgICAgIGRlYnVnKCdza2lwIHBhcnNpbmcnKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBnZXQgY2hhcnNldFxuICAgIHZhciBjaGFyc2V0ID0gZ2V0Q2hhcnNldChyZXEpIHx8IGRlZmF1bHRDaGFyc2V0XG5cbiAgICAvLyByZWFkXG4gICAgcmVhZChyZXEsIHJlcywgbmV4dCwgcGFyc2UsIGRlYnVnLCB7XG4gICAgICBlbmNvZGluZzogY2hhcnNldCxcbiAgICAgIGluZmxhdGU6IGluZmxhdGUsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgICB2ZXJpZnk6IHZlcmlmeVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNoYXJzZXQgb2YgYSByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldENoYXJzZXQgKHJlcSkge1xuICB0cnkge1xuICAgIHJldHVybiAoY29udGVudFR5cGUucGFyc2UocmVxKS5wYXJhbWV0ZXJzLmNoYXJzZXQgfHwgJycpLnRvTG93ZXJDYXNlKClcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgc2ltcGxlIHR5cGUgY2hlY2tlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cblxuZnVuY3Rpb24gdHlwZUNoZWNrZXIgKHR5cGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrVHlwZSAocmVxKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odHlwZWlzKHJlcSwgdHlwZSkpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9saWIvdHlwZXMvdGV4dC5qc1xuLy8gbW9kdWxlIGlkID0gMTU2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogYm9keS1wYXJzZXJcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGJ5dGVzID0gcmVxdWlyZSgnYnl0ZXMnKVxudmFyIGNvbnRlbnRUeXBlID0gcmVxdWlyZSgnY29udGVudC10eXBlJylcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJylcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2JvZHktcGFyc2VyOnVybGVuY29kZWQnKVxudmFyIGRlcHJlY2F0ZSA9IHJlcXVpcmUoJ2RlcGQnKSgnYm9keS1wYXJzZXInKVxudmFyIHJlYWQgPSByZXF1aXJlKCcuLi9yZWFkJylcbnZhciB0eXBlaXMgPSByZXF1aXJlKCd0eXBlLWlzJylcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVybGVuY29kZWRcblxuLyoqXG4gKiBDYWNoZSBvZiBwYXJzZXIgbW9kdWxlcy5cbiAqL1xuXG52YXIgcGFyc2VycyA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuLyoqXG4gKiBDcmVhdGUgYSBtaWRkbGV3YXJlIHRvIHBhcnNlIHVybGVuY29kZWQgYm9kaWVzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHVybGVuY29kZWQgKG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9XG5cbiAgLy8gbm90aWNlIGJlY2F1c2Ugb3B0aW9uIGRlZmF1bHQgd2lsbCBmbGlwIGluIG5leHQgbWFqb3JcbiAgaWYgKG9wdHMuZXh0ZW5kZWQgPT09IHVuZGVmaW5lZCkge1xuICAgIGRlcHJlY2F0ZSgndW5kZWZpbmVkIGV4dGVuZGVkOiBwcm92aWRlIGV4dGVuZGVkIG9wdGlvbicpXG4gIH1cblxuICB2YXIgZXh0ZW5kZWQgPSBvcHRzLmV4dGVuZGVkICE9PSBmYWxzZVxuICB2YXIgaW5mbGF0ZSA9IG9wdHMuaW5mbGF0ZSAhPT0gZmFsc2VcbiAgdmFyIGxpbWl0ID0gdHlwZW9mIG9wdHMubGltaXQgIT09ICdudW1iZXInXG4gICAgPyBieXRlcy5wYXJzZShvcHRzLmxpbWl0IHx8ICcxMDBrYicpXG4gICAgOiBvcHRzLmxpbWl0XG4gIHZhciB0eXBlID0gb3B0cy50eXBlIHx8ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG4gIHZhciB2ZXJpZnkgPSBvcHRzLnZlcmlmeSB8fCBmYWxzZVxuXG4gIGlmICh2ZXJpZnkgIT09IGZhbHNlICYmIHR5cGVvZiB2ZXJpZnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gdmVyaWZ5IG11c3QgYmUgZnVuY3Rpb24nKVxuICB9XG5cbiAgLy8gY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSBxdWVyeSBwYXJzZXJcbiAgdmFyIHF1ZXJ5cGFyc2UgPSBleHRlbmRlZFxuICAgID8gZXh0ZW5kZWRwYXJzZXIob3B0cylcbiAgICA6IHNpbXBsZXBhcnNlcihvcHRzKVxuXG4gIC8vIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSBjaGVja2luZyBmdW5jdGlvblxuICB2YXIgc2hvdWxkUGFyc2UgPSB0eXBlb2YgdHlwZSAhPT0gJ2Z1bmN0aW9uJ1xuICAgID8gdHlwZUNoZWNrZXIodHlwZSlcbiAgICA6IHR5cGVcblxuICBmdW5jdGlvbiBwYXJzZSAoYm9keSkge1xuICAgIHJldHVybiBib2R5Lmxlbmd0aFxuICAgICAgPyBxdWVyeXBhcnNlKGJvZHkpXG4gICAgICA6IHt9XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gdXJsZW5jb2RlZFBhcnNlciAocmVxLCByZXMsIG5leHQpIHtcbiAgICBpZiAocmVxLl9ib2R5KSB7XG4gICAgICBkZWJ1ZygnYm9keSBhbHJlYWR5IHBhcnNlZCcpXG4gICAgICBuZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJlcS5ib2R5ID0gcmVxLmJvZHkgfHwge31cblxuICAgIC8vIHNraXAgcmVxdWVzdHMgd2l0aG91dCBib2RpZXNcbiAgICBpZiAoIXR5cGVpcy5oYXNCb2R5KHJlcSkpIHtcbiAgICAgIGRlYnVnKCdza2lwIGVtcHR5IGJvZHknKVxuICAgICAgbmV4dCgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBkZWJ1ZygnY29udGVudC10eXBlICVqJywgcmVxLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddKVxuXG4gICAgLy8gZGV0ZXJtaW5lIGlmIHJlcXVlc3Qgc2hvdWxkIGJlIHBhcnNlZFxuICAgIGlmICghc2hvdWxkUGFyc2UocmVxKSkge1xuICAgICAgZGVidWcoJ3NraXAgcGFyc2luZycpXG4gICAgICBuZXh0KClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIGFzc2VydCBjaGFyc2V0XG4gICAgdmFyIGNoYXJzZXQgPSBnZXRDaGFyc2V0KHJlcSkgfHwgJ3V0Zi04J1xuICAgIGlmIChjaGFyc2V0ICE9PSAndXRmLTgnKSB7XG4gICAgICBkZWJ1ZygnaW52YWxpZCBjaGFyc2V0JylcbiAgICAgIG5leHQoY3JlYXRlRXJyb3IoNDE1LCAndW5zdXBwb3J0ZWQgY2hhcnNldCBcIicgKyBjaGFyc2V0LnRvVXBwZXJDYXNlKCkgKyAnXCInLCB7XG4gICAgICAgIGNoYXJzZXQ6IGNoYXJzZXQsXG4gICAgICAgIHR5cGU6ICdjaGFyc2V0LnVuc3VwcG9ydGVkJ1xuICAgICAgfSkpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyByZWFkXG4gICAgcmVhZChyZXEsIHJlcywgbmV4dCwgcGFyc2UsIGRlYnVnLCB7XG4gICAgICBkZWJ1ZzogZGVidWcsXG4gICAgICBlbmNvZGluZzogY2hhcnNldCxcbiAgICAgIGluZmxhdGU6IGluZmxhdGUsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgICB2ZXJpZnk6IHZlcmlmeVxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGV4dGVuZGVkIHF1ZXJ5IHBhcnNlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICovXG5cbmZ1bmN0aW9uIGV4dGVuZGVkcGFyc2VyIChvcHRpb25zKSB7XG4gIHZhciBwYXJhbWV0ZXJMaW1pdCA9IG9wdGlvbnMucGFyYW1ldGVyTGltaXQgIT09IHVuZGVmaW5lZFxuICAgID8gb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdFxuICAgIDogMTAwMFxuICB2YXIgcGFyc2UgPSBwYXJzZXIoJ3FzJylcblxuICBpZiAoaXNOYU4ocGFyYW1ldGVyTGltaXQpIHx8IHBhcmFtZXRlckxpbWl0IDwgMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBwYXJhbWV0ZXJMaW1pdCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChpc0Zpbml0ZShwYXJhbWV0ZXJMaW1pdCkpIHtcbiAgICBwYXJhbWV0ZXJMaW1pdCA9IHBhcmFtZXRlckxpbWl0IHwgMFxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHF1ZXJ5cGFyc2UgKGJvZHkpIHtcbiAgICB2YXIgcGFyYW1Db3VudCA9IHBhcmFtZXRlckNvdW50KGJvZHksIHBhcmFtZXRlckxpbWl0KVxuXG4gICAgaWYgKHBhcmFtQ291bnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVidWcoJ3RvbyBtYW55IHBhcmFtZXRlcnMnKVxuICAgICAgdGhyb3cgY3JlYXRlRXJyb3IoNDEzLCAndG9vIG1hbnkgcGFyYW1ldGVycycsIHtcbiAgICAgICAgdHlwZTogJ3BhcmFtZXRlcnMudG9vLm1hbnknXG4gICAgICB9KVxuICAgIH1cblxuICAgIHZhciBhcnJheUxpbWl0ID0gTWF0aC5tYXgoMTAwLCBwYXJhbUNvdW50KVxuXG4gICAgZGVidWcoJ3BhcnNlIGV4dGVuZGVkIHVybGVuY29kaW5nJylcbiAgICByZXR1cm4gcGFyc2UoYm9keSwge1xuICAgICAgYWxsb3dQcm90b3R5cGVzOiB0cnVlLFxuICAgICAgYXJyYXlMaW1pdDogYXJyYXlMaW1pdCxcbiAgICAgIGRlcHRoOiBJbmZpbml0eSxcbiAgICAgIHBhcmFtZXRlckxpbWl0OiBwYXJhbWV0ZXJMaW1pdFxuICAgIH0pXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIGNoYXJzZXQgb2YgYSByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldENoYXJzZXQgKHJlcSkge1xuICB0cnkge1xuICAgIHJldHVybiAoY29udGVudFR5cGUucGFyc2UocmVxKS5wYXJhbWV0ZXJzLmNoYXJzZXQgfHwgJycpLnRvTG93ZXJDYXNlKClcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxufVxuXG4vKipcbiAqIENvdW50IHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycywgc3RvcHBpbmcgb25jZSBsaW1pdCByZWFjaGVkXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJvZHlcbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdFxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyYW1ldGVyQ291bnQgKGJvZHksIGxpbWl0KSB7XG4gIHZhciBjb3VudCA9IDBcbiAgdmFyIGluZGV4ID0gMFxuXG4gIHdoaWxlICgoaW5kZXggPSBib2R5LmluZGV4T2YoJyYnLCBpbmRleCkpICE9PSAtMSkge1xuICAgIGNvdW50KytcbiAgICBpbmRleCsrXG5cbiAgICBpZiAoY291bnQgPT09IGxpbWl0KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvdW50XG59XG5cbi8qKlxuICogR2V0IHBhcnNlciBmb3IgbW9kdWxlIG5hbWUgZHluYW1pY2FsbHkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VyIChuYW1lKSB7XG4gIHZhciBtb2QgPSBwYXJzZXJzW25hbWVdXG5cbiAgaWYgKG1vZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG1vZC5wYXJzZVxuICB9XG5cbiAgLy8gdGhpcyB1c2VzIGEgc3dpdGNoIGZvciBzdGF0aWMgcmVxdWlyZSBhbmFseXNpc1xuICBzd2l0Y2ggKG5hbWUpIHtcbiAgICBjYXNlICdxcyc6XG4gICAgICBtb2QgPSByZXF1aXJlKCdxcycpXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3F1ZXJ5c3RyaW5nJzpcbiAgICAgIG1vZCA9IHJlcXVpcmUoJ3F1ZXJ5c3RyaW5nJylcbiAgICAgIGJyZWFrXG4gIH1cblxuICAvLyBzdG9yZSB0byBwcmV2ZW50IGludm9raW5nIHJlcXVpcmUoKVxuICBwYXJzZXJzW25hbWVdID0gbW9kXG5cbiAgcmV0dXJuIG1vZC5wYXJzZVxufVxuXG4vKipcbiAqIEdldCB0aGUgc2ltcGxlIHF1ZXJ5IHBhcnNlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICovXG5cbmZ1bmN0aW9uIHNpbXBsZXBhcnNlciAob3B0aW9ucykge1xuICB2YXIgcGFyYW1ldGVyTGltaXQgPSBvcHRpb25zLnBhcmFtZXRlckxpbWl0ICE9PSB1bmRlZmluZWRcbiAgICA/IG9wdGlvbnMucGFyYW1ldGVyTGltaXRcbiAgICA6IDEwMDBcbiAgdmFyIHBhcnNlID0gcGFyc2VyKCdxdWVyeXN0cmluZycpXG5cbiAgaWYgKGlzTmFOKHBhcmFtZXRlckxpbWl0KSB8fCBwYXJhbWV0ZXJMaW1pdCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gcGFyYW1ldGVyTGltaXQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpXG4gIH1cblxuICBpZiAoaXNGaW5pdGUocGFyYW1ldGVyTGltaXQpKSB7XG4gICAgcGFyYW1ldGVyTGltaXQgPSBwYXJhbWV0ZXJMaW1pdCB8IDBcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBxdWVyeXBhcnNlIChib2R5KSB7XG4gICAgdmFyIHBhcmFtQ291bnQgPSBwYXJhbWV0ZXJDb3VudChib2R5LCBwYXJhbWV0ZXJMaW1pdClcblxuICAgIGlmIChwYXJhbUNvdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlYnVnKCd0b28gbWFueSBwYXJhbWV0ZXJzJylcbiAgICAgIHRocm93IGNyZWF0ZUVycm9yKDQxMywgJ3RvbyBtYW55IHBhcmFtZXRlcnMnLCB7XG4gICAgICAgIHR5cGU6ICdwYXJhbWV0ZXJzLnRvby5tYW55J1xuICAgICAgfSlcbiAgICB9XG5cbiAgICBkZWJ1ZygncGFyc2UgdXJsZW5jb2RpbmcnKVxuICAgIHJldHVybiBwYXJzZShib2R5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwge21heEtleXM6IHBhcmFtZXRlckxpbWl0fSlcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgc2ltcGxlIHR5cGUgY2hlY2tlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cblxuZnVuY3Rpb24gdHlwZUNoZWNrZXIgKHR5cGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNoZWNrVHlwZSAocmVxKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odHlwZWlzKHJlcSwgdHlwZSkpXG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9ib2R5LXBhcnNlci9saWIvdHlwZXMvdXJsZW5jb2RlZC5qc1xuLy8gbW9kdWxlIGlkID0gMTU3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcblxudmFyIGFycmF5UHJlZml4R2VuZXJhdG9ycyA9IHtcbiAgICBicmFja2V0czogZnVuY3Rpb24gYnJhY2tldHMocHJlZml4KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZnVuYy1uYW1lLW1hdGNoaW5nXG4gICAgICAgIHJldHVybiBwcmVmaXggKyAnW10nO1xuICAgIH0sXG4gICAgaW5kaWNlczogZnVuY3Rpb24gaW5kaWNlcyhwcmVmaXgsIGtleSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtbmFtZS1tYXRjaGluZ1xuICAgICAgICByZXR1cm4gcHJlZml4ICsgJ1snICsga2V5ICsgJ10nO1xuICAgIH0sXG4gICAgcmVwZWF0OiBmdW5jdGlvbiByZXBlYXQocHJlZml4KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZnVuYy1uYW1lLW1hdGNoaW5nXG4gICAgICAgIHJldHVybiBwcmVmaXg7XG4gICAgfVxufTtcblxudmFyIHRvSVNPID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgICBkZWxpbWl0ZXI6ICcmJyxcbiAgICBlbmNvZGU6IHRydWUsXG4gICAgZW5jb2RlcjogdXRpbHMuZW5jb2RlLFxuICAgIGVuY29kZVZhbHVlc09ubHk6IGZhbHNlLFxuICAgIHNlcmlhbGl6ZURhdGU6IGZ1bmN0aW9uIHNlcmlhbGl6ZURhdGUoZGF0ZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtbmFtZS1tYXRjaGluZ1xuICAgICAgICByZXR1cm4gdG9JU08uY2FsbChkYXRlKTtcbiAgICB9LFxuICAgIHNraXBOdWxsczogZmFsc2UsXG4gICAgc3RyaWN0TnVsbEhhbmRsaW5nOiBmYWxzZVxufTtcblxudmFyIHN0cmluZ2lmeSA9IGZ1bmN0aW9uIHN0cmluZ2lmeSggLy8gZXNsaW50LWRpc2FibGUtbGluZSBmdW5jLW5hbWUtbWF0Y2hpbmdcbiAgICBvYmplY3QsXG4gICAgcHJlZml4LFxuICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgIHNraXBOdWxscyxcbiAgICBlbmNvZGVyLFxuICAgIGZpbHRlcixcbiAgICBzb3J0LFxuICAgIGFsbG93RG90cyxcbiAgICBzZXJpYWxpemVEYXRlLFxuICAgIGZvcm1hdHRlcixcbiAgICBlbmNvZGVWYWx1ZXNPbmx5XG4pIHtcbiAgICB2YXIgb2JqID0gb2JqZWN0O1xuICAgIGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9iaiA9IGZpbHRlcihwcmVmaXgsIG9iaik7XG4gICAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIG9iaiA9IHNlcmlhbGl6ZURhdGUob2JqKTtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgICAgICBpZiAoc3RyaWN0TnVsbEhhbmRsaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZW5jb2RlciAmJiAhZW5jb2RlVmFsdWVzT25seSA/IGVuY29kZXIocHJlZml4LCBkZWZhdWx0cy5lbmNvZGVyKSA6IHByZWZpeDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9iaiA9ICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygb2JqID09PSAnYm9vbGVhbicgfHwgdXRpbHMuaXNCdWZmZXIob2JqKSkge1xuICAgICAgICBpZiAoZW5jb2Rlcikge1xuICAgICAgICAgICAgdmFyIGtleVZhbHVlID0gZW5jb2RlVmFsdWVzT25seSA/IHByZWZpeCA6IGVuY29kZXIocHJlZml4LCBkZWZhdWx0cy5lbmNvZGVyKTtcbiAgICAgICAgICAgIHJldHVybiBbZm9ybWF0dGVyKGtleVZhbHVlKSArICc9JyArIGZvcm1hdHRlcihlbmNvZGVyKG9iaiwgZGVmYXVsdHMuZW5jb2RlcikpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2Zvcm1hdHRlcihwcmVmaXgpICsgJz0nICsgZm9ybWF0dGVyKFN0cmluZyhvYmopKV07XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuXG4gICAgdmFyIG9iaktleXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyKSkge1xuICAgICAgICBvYmpLZXlzID0gZmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICAgICAgb2JqS2V5cyA9IHNvcnQgPyBrZXlzLnNvcnQoc29ydCkgOiBrZXlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqS2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqS2V5c1tpXTtcblxuICAgICAgICBpZiAoc2tpcE51bGxzICYmIG9ialtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5jb25jYXQoc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIG9ialtrZXldLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgocHJlZml4LCBrZXkpLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgICAgICAgICAgICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICAgICAgICAgIHNraXBOdWxscyxcbiAgICAgICAgICAgICAgICBlbmNvZGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgICAgIGFsbG93RG90cyxcbiAgICAgICAgICAgICAgICBzZXJpYWxpemVEYXRlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICBlbmNvZGVWYWx1ZXNPbmx5XG4gICAgICAgICAgICApKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5jb25jYXQoc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIG9ialtrZXldLFxuICAgICAgICAgICAgICAgIHByZWZpeCArIChhbGxvd0RvdHMgPyAnLicgKyBrZXkgOiAnWycgKyBrZXkgKyAnXScpLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgICAgICAgICAgICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICAgICAgICAgIHNraXBOdWxscyxcbiAgICAgICAgICAgICAgICBlbmNvZGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgICAgIGFsbG93RG90cyxcbiAgICAgICAgICAgICAgICBzZXJpYWxpemVEYXRlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICBlbmNvZGVWYWx1ZXNPbmx5XG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG9wdHMpIHtcbiAgICB2YXIgb2JqID0gb2JqZWN0O1xuICAgIHZhciBvcHRpb25zID0gb3B0cyA/IHV0aWxzLmFzc2lnbih7fSwgb3B0cykgOiB7fTtcblxuICAgIGlmIChvcHRpb25zLmVuY29kZXIgIT09IG51bGwgJiYgb3B0aW9ucy5lbmNvZGVyICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMuZW5jb2RlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFbmNvZGVyIGhhcyB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIHZhciBkZWxpbWl0ZXIgPSB0eXBlb2Ygb3B0aW9ucy5kZWxpbWl0ZXIgPT09ICd1bmRlZmluZWQnID8gZGVmYXVsdHMuZGVsaW1pdGVyIDogb3B0aW9ucy5kZWxpbWl0ZXI7XG4gICAgdmFyIHN0cmljdE51bGxIYW5kbGluZyA9IHR5cGVvZiBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5zdHJpY3ROdWxsSGFuZGxpbmcgOiBkZWZhdWx0cy5zdHJpY3ROdWxsSGFuZGxpbmc7XG4gICAgdmFyIHNraXBOdWxscyA9IHR5cGVvZiBvcHRpb25zLnNraXBOdWxscyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5za2lwTnVsbHMgOiBkZWZhdWx0cy5za2lwTnVsbHM7XG4gICAgdmFyIGVuY29kZSA9IHR5cGVvZiBvcHRpb25zLmVuY29kZSA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5lbmNvZGUgOiBkZWZhdWx0cy5lbmNvZGU7XG4gICAgdmFyIGVuY29kZXIgPSB0eXBlb2Ygb3B0aW9ucy5lbmNvZGVyID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucy5lbmNvZGVyIDogZGVmYXVsdHMuZW5jb2RlcjtcbiAgICB2YXIgc29ydCA9IHR5cGVvZiBvcHRpb25zLnNvcnQgPT09ICdmdW5jdGlvbicgPyBvcHRpb25zLnNvcnQgOiBudWxsO1xuICAgIHZhciBhbGxvd0RvdHMgPSB0eXBlb2Ygb3B0aW9ucy5hbGxvd0RvdHMgPT09ICd1bmRlZmluZWQnID8gZmFsc2UgOiBvcHRpb25zLmFsbG93RG90cztcbiAgICB2YXIgc2VyaWFsaXplRGF0ZSA9IHR5cGVvZiBvcHRpb25zLnNlcmlhbGl6ZURhdGUgPT09ICdmdW5jdGlvbicgPyBvcHRpb25zLnNlcmlhbGl6ZURhdGUgOiBkZWZhdWx0cy5zZXJpYWxpemVEYXRlO1xuICAgIHZhciBlbmNvZGVWYWx1ZXNPbmx5ID0gdHlwZW9mIG9wdGlvbnMuZW5jb2RlVmFsdWVzT25seSA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5lbmNvZGVWYWx1ZXNPbmx5IDogZGVmYXVsdHMuZW5jb2RlVmFsdWVzT25seTtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZm9ybWF0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBvcHRpb25zLmZvcm1hdCA9IGZvcm1hdHNbJ2RlZmF1bHQnXTtcbiAgICB9IGVsc2UgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZm9ybWF0cy5mb3JtYXR0ZXJzLCBvcHRpb25zLmZvcm1hdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBmb3JtYXQgb3B0aW9uIHByb3ZpZGVkLicpO1xuICAgIH1cbiAgICB2YXIgZm9ybWF0dGVyID0gZm9ybWF0cy5mb3JtYXR0ZXJzW29wdGlvbnMuZm9ybWF0XTtcbiAgICB2YXIgb2JqS2V5cztcbiAgICB2YXIgZmlsdGVyO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmaWx0ZXIgPSBvcHRpb25zLmZpbHRlcjtcbiAgICAgICAgb2JqID0gZmlsdGVyKCcnLCBvYmopO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLmZpbHRlcikpIHtcbiAgICAgICAgZmlsdGVyID0gb3B0aW9ucy5maWx0ZXI7XG4gICAgICAgIG9iaktleXMgPSBmaWx0ZXI7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBbXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHZhciBhcnJheUZvcm1hdDtcbiAgICBpZiAob3B0aW9ucy5hcnJheUZvcm1hdCBpbiBhcnJheVByZWZpeEdlbmVyYXRvcnMpIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSBvcHRpb25zLmFycmF5Rm9ybWF0O1xuICAgIH0gZWxzZSBpZiAoJ2luZGljZXMnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSBvcHRpb25zLmluZGljZXMgPyAnaW5kaWNlcycgOiAncmVwZWF0JztcbiAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheUZvcm1hdCA9ICdpbmRpY2VzJztcbiAgICB9XG5cbiAgICB2YXIgZ2VuZXJhdGVBcnJheVByZWZpeCA9IGFycmF5UHJlZml4R2VuZXJhdG9yc1thcnJheUZvcm1hdF07XG5cbiAgICBpZiAoIW9iaktleXMpIHtcbiAgICAgICAgb2JqS2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgfVxuXG4gICAgaWYgKHNvcnQpIHtcbiAgICAgICAgb2JqS2V5cy5zb3J0KHNvcnQpO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqS2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqS2V5c1tpXTtcblxuICAgICAgICBpZiAoc2tpcE51bGxzICYmIG9ialtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChzdHJpbmdpZnkoXG4gICAgICAgICAgICBvYmpba2V5XSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgICAgICAgICBzdHJpY3ROdWxsSGFuZGxpbmcsXG4gICAgICAgICAgICBza2lwTnVsbHMsXG4gICAgICAgICAgICBlbmNvZGUgPyBlbmNvZGVyIDogbnVsbCxcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICBhbGxvd0RvdHMsXG4gICAgICAgICAgICBzZXJpYWxpemVEYXRlLFxuICAgICAgICAgICAgZm9ybWF0dGVyLFxuICAgICAgICAgICAgZW5jb2RlVmFsdWVzT25seVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICB2YXIgam9pbmVkID0ga2V5cy5qb2luKGRlbGltaXRlcik7XG4gICAgdmFyIHByZWZpeCA9IG9wdGlvbnMuYWRkUXVlcnlQcmVmaXggPT09IHRydWUgPyAnPycgOiAnJztcblxuICAgIHJldHVybiBqb2luZWQubGVuZ3RoID4gMCA/IHByZWZpeCArIGpvaW5lZCA6ICcnO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9xcy9saWIvc3RyaW5naWZ5LmpzXG4vLyBtb2R1bGUgaWQgPSAxNThcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgZGVmYXVsdHMgPSB7XG4gICAgYWxsb3dEb3RzOiBmYWxzZSxcbiAgICBhbGxvd1Byb3RvdHlwZXM6IGZhbHNlLFxuICAgIGFycmF5TGltaXQ6IDIwLFxuICAgIGRlY29kZXI6IHV0aWxzLmRlY29kZSxcbiAgICBkZWxpbWl0ZXI6ICcmJyxcbiAgICBkZXB0aDogNSxcbiAgICBwYXJhbWV0ZXJMaW1pdDogMTAwMCxcbiAgICBwbGFpbk9iamVjdHM6IGZhbHNlLFxuICAgIHN0cmljdE51bGxIYW5kbGluZzogZmFsc2Vcbn07XG5cbnZhciBwYXJzZVZhbHVlcyA9IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmdWYWx1ZXMoc3RyLCBvcHRpb25zKSB7XG4gICAgdmFyIG9iaiA9IHt9O1xuICAgIHZhciBjbGVhblN0ciA9IG9wdGlvbnMuaWdub3JlUXVlcnlQcmVmaXggPyBzdHIucmVwbGFjZSgvXlxcPy8sICcnKSA6IHN0cjtcbiAgICB2YXIgbGltaXQgPSBvcHRpb25zLnBhcmFtZXRlckxpbWl0ID09PSBJbmZpbml0eSA/IHVuZGVmaW5lZCA6IG9wdGlvbnMucGFyYW1ldGVyTGltaXQ7XG4gICAgdmFyIHBhcnRzID0gY2xlYW5TdHIuc3BsaXQob3B0aW9ucy5kZWxpbWl0ZXIsIGxpbWl0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgICB2YXIgYnJhY2tldEVxdWFsc1BvcyA9IHBhcnQuaW5kZXhPZignXT0nKTtcbiAgICAgICAgdmFyIHBvcyA9IGJyYWNrZXRFcXVhbHNQb3MgPT09IC0xID8gcGFydC5pbmRleE9mKCc9JykgOiBicmFja2V0RXF1YWxzUG9zICsgMTtcblxuICAgICAgICB2YXIga2V5LCB2YWw7XG4gICAgICAgIGlmIChwb3MgPT09IC0xKSB7XG4gICAgICAgICAgICBrZXkgPSBvcHRpb25zLmRlY29kZXIocGFydCwgZGVmYXVsdHMuZGVjb2Rlcik7XG4gICAgICAgICAgICB2YWwgPSBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA/IG51bGwgOiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGtleSA9IG9wdGlvbnMuZGVjb2RlcihwYXJ0LnNsaWNlKDAsIHBvcyksIGRlZmF1bHRzLmRlY29kZXIpO1xuICAgICAgICAgICAgdmFsID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQuc2xpY2UocG9zICsgMSksIGRlZmF1bHRzLmRlY29kZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXMuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gW10uY29uY2F0KG9ialtrZXldKS5jb25jYXQodmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBwYXJzZU9iamVjdCA9IGZ1bmN0aW9uIChjaGFpbiwgdmFsLCBvcHRpb25zKSB7XG4gICAgdmFyIGxlYWYgPSB2YWw7XG5cbiAgICBmb3IgKHZhciBpID0gY2hhaW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIG9iajtcbiAgICAgICAgdmFyIHJvb3QgPSBjaGFpbltpXTtcblxuICAgICAgICBpZiAocm9vdCA9PT0gJ1tdJykge1xuICAgICAgICAgICAgb2JqID0gW107XG4gICAgICAgICAgICBvYmogPSBvYmouY29uY2F0KGxlYWYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqID0gb3B0aW9ucy5wbGFpbk9iamVjdHMgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XG4gICAgICAgICAgICB2YXIgY2xlYW5Sb290ID0gcm9vdC5jaGFyQXQoMCkgPT09ICdbJyAmJiByb290LmNoYXJBdChyb290Lmxlbmd0aCAtIDEpID09PSAnXScgPyByb290LnNsaWNlKDEsIC0xKSA6IHJvb3Q7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZUludChjbGVhblJvb3QsIDEwKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhaXNOYU4oaW5kZXgpXG4gICAgICAgICAgICAgICAgJiYgcm9vdCAhPT0gY2xlYW5Sb290XG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nKGluZGV4KSA9PT0gY2xlYW5Sb290XG4gICAgICAgICAgICAgICAgJiYgaW5kZXggPj0gMFxuICAgICAgICAgICAgICAgICYmIChvcHRpb25zLnBhcnNlQXJyYXlzICYmIGluZGV4IDw9IG9wdGlvbnMuYXJyYXlMaW1pdClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIG9iaiA9IFtdO1xuICAgICAgICAgICAgICAgIG9ialtpbmRleF0gPSBsZWFmO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvYmpbY2xlYW5Sb290XSA9IGxlYWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZWFmID0gb2JqO1xuICAgIH1cblxuICAgIHJldHVybiBsZWFmO1xufTtcblxudmFyIHBhcnNlS2V5cyA9IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmdLZXlzKGdpdmVuS2V5LCB2YWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoIWdpdmVuS2V5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm0gZG90IG5vdGF0aW9uIHRvIGJyYWNrZXQgbm90YXRpb25cbiAgICB2YXIga2V5ID0gb3B0aW9ucy5hbGxvd0RvdHMgPyBnaXZlbktleS5yZXBsYWNlKC9cXC4oW14uW10rKS9nLCAnWyQxXScpIDogZ2l2ZW5LZXk7XG5cbiAgICAvLyBUaGUgcmVnZXggY2h1bmtzXG5cbiAgICB2YXIgYnJhY2tldHMgPSAvKFxcW1teW1xcXV0qXSkvO1xuICAgIHZhciBjaGlsZCA9IC8oXFxbW15bXFxdXSpdKS9nO1xuXG4gICAgLy8gR2V0IHRoZSBwYXJlbnRcblxuICAgIHZhciBzZWdtZW50ID0gYnJhY2tldHMuZXhlYyhrZXkpO1xuICAgIHZhciBwYXJlbnQgPSBzZWdtZW50ID8ga2V5LnNsaWNlKDAsIHNlZ21lbnQuaW5kZXgpIDoga2V5O1xuXG4gICAgLy8gU3Rhc2ggdGhlIHBhcmVudCBpZiBpdCBleGlzdHNcblxuICAgIHZhciBrZXlzID0gW107XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgICAvLyBJZiB3ZSBhcmVuJ3QgdXNpbmcgcGxhaW4gb2JqZWN0cywgb3B0aW9uYWxseSBwcmVmaXgga2V5c1xuICAgICAgICAvLyB0aGF0IHdvdWxkIG92ZXJ3cml0ZSBvYmplY3QgcHJvdG90eXBlIHByb3BlcnRpZXNcbiAgICAgICAgaWYgKCFvcHRpb25zLnBsYWluT2JqZWN0cyAmJiBoYXMuY2FsbChPYmplY3QucHJvdG90eXBlLCBwYXJlbnQpKSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuYWxsb3dQcm90b3R5cGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAga2V5cy5wdXNoKHBhcmVudCk7XG4gICAgfVxuXG4gICAgLy8gTG9vcCB0aHJvdWdoIGNoaWxkcmVuIGFwcGVuZGluZyB0byB0aGUgYXJyYXkgdW50aWwgd2UgaGl0IGRlcHRoXG5cbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKChzZWdtZW50ID0gY2hpbGQuZXhlYyhrZXkpKSAhPT0gbnVsbCAmJiBpIDwgb3B0aW9ucy5kZXB0aCkge1xuICAgICAgICBpICs9IDE7XG4gICAgICAgIGlmICghb3B0aW9ucy5wbGFpbk9iamVjdHMgJiYgaGFzLmNhbGwoT2JqZWN0LnByb3RvdHlwZSwgc2VnbWVudFsxXS5zbGljZSgxLCAtMSkpKSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuYWxsb3dQcm90b3R5cGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGtleXMucHVzaChzZWdtZW50WzFdKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSdzIGEgcmVtYWluZGVyLCBqdXN0IGFkZCB3aGF0ZXZlciBpcyBsZWZ0XG5cbiAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICBrZXlzLnB1c2goJ1snICsga2V5LnNsaWNlKHNlZ21lbnQuaW5kZXgpICsgJ10nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VPYmplY3Qoa2V5cywgdmFsLCBvcHRpb25zKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHN0ciwgb3B0cykge1xuICAgIHZhciBvcHRpb25zID0gb3B0cyA/IHV0aWxzLmFzc2lnbih7fSwgb3B0cykgOiB7fTtcblxuICAgIGlmIChvcHRpb25zLmRlY29kZXIgIT09IG51bGwgJiYgb3B0aW9ucy5kZWNvZGVyICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMuZGVjb2RlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdEZWNvZGVyIGhhcyB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIG9wdGlvbnMuaWdub3JlUXVlcnlQcmVmaXggPSBvcHRpb25zLmlnbm9yZVF1ZXJ5UHJlZml4ID09PSB0cnVlO1xuICAgIG9wdGlvbnMuZGVsaW1pdGVyID0gdHlwZW9mIG9wdGlvbnMuZGVsaW1pdGVyID09PSAnc3RyaW5nJyB8fCB1dGlscy5pc1JlZ0V4cChvcHRpb25zLmRlbGltaXRlcikgPyBvcHRpb25zLmRlbGltaXRlciA6IGRlZmF1bHRzLmRlbGltaXRlcjtcbiAgICBvcHRpb25zLmRlcHRoID0gdHlwZW9mIG9wdGlvbnMuZGVwdGggPT09ICdudW1iZXInID8gb3B0aW9ucy5kZXB0aCA6IGRlZmF1bHRzLmRlcHRoO1xuICAgIG9wdGlvbnMuYXJyYXlMaW1pdCA9IHR5cGVvZiBvcHRpb25zLmFycmF5TGltaXQgPT09ICdudW1iZXInID8gb3B0aW9ucy5hcnJheUxpbWl0IDogZGVmYXVsdHMuYXJyYXlMaW1pdDtcbiAgICBvcHRpb25zLnBhcnNlQXJyYXlzID0gb3B0aW9ucy5wYXJzZUFycmF5cyAhPT0gZmFsc2U7XG4gICAgb3B0aW9ucy5kZWNvZGVyID0gdHlwZW9mIG9wdGlvbnMuZGVjb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMuZGVjb2RlciA6IGRlZmF1bHRzLmRlY29kZXI7XG4gICAgb3B0aW9ucy5hbGxvd0RvdHMgPSB0eXBlb2Ygb3B0aW9ucy5hbGxvd0RvdHMgPT09ICdib29sZWFuJyA/IG9wdGlvbnMuYWxsb3dEb3RzIDogZGVmYXVsdHMuYWxsb3dEb3RzO1xuICAgIG9wdGlvbnMucGxhaW5PYmplY3RzID0gdHlwZW9mIG9wdGlvbnMucGxhaW5PYmplY3RzID09PSAnYm9vbGVhbicgPyBvcHRpb25zLnBsYWluT2JqZWN0cyA6IGRlZmF1bHRzLnBsYWluT2JqZWN0cztcbiAgICBvcHRpb25zLmFsbG93UHJvdG90eXBlcyA9IHR5cGVvZiBvcHRpb25zLmFsbG93UHJvdG90eXBlcyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMgOiBkZWZhdWx0cy5hbGxvd1Byb3RvdHlwZXM7XG4gICAgb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdCA9IHR5cGVvZiBvcHRpb25zLnBhcmFtZXRlckxpbWl0ID09PSAnbnVtYmVyJyA/IG9wdGlvbnMucGFyYW1ldGVyTGltaXQgOiBkZWZhdWx0cy5wYXJhbWV0ZXJMaW1pdDtcbiAgICBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA9IHR5cGVvZiBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5zdHJpY3ROdWxsSGFuZGxpbmcgOiBkZWZhdWx0cy5zdHJpY3ROdWxsSGFuZGxpbmc7XG5cbiAgICBpZiAoc3RyID09PSAnJyB8fCBzdHIgPT09IG51bGwgfHwgdHlwZW9mIHN0ciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMucGxhaW5PYmplY3RzID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHt9O1xuICAgIH1cblxuICAgIHZhciB0ZW1wT2JqID0gdHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgPyBwYXJzZVZhbHVlcyhzdHIsIG9wdGlvbnMpIDogc3RyO1xuICAgIHZhciBvYmogPSBvcHRpb25zLnBsYWluT2JqZWN0cyA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUga2V5cyBhbmQgc2V0dXAgdGhlIG5ldyBvYmplY3RcblxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXModGVtcE9iaik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgICB2YXIgbmV3T2JqID0gcGFyc2VLZXlzKGtleSwgdGVtcE9ialtrZXldLCBvcHRpb25zKTtcbiAgICAgICAgb2JqID0gdXRpbHMubWVyZ2Uob2JqLCBuZXdPYmosIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiB1dGlscy5jb21wYWN0KG9iaik7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3FzL2xpYi9wYXJzZS5qc1xuLy8gbW9kdWxlIGlkID0gMTU5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogbWVyZ2UtZGVzY3JpcHRvcnNcbiAqIENvcHlyaWdodChjKSAyMDE0IEpvbmF0aGFuIE9uZ1xuICogQ29weXJpZ2h0KGMpIDIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2VcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5XG5cbi8qKlxuICogTWVyZ2UgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIG9mIGBzcmNgIGludG8gYGRlc3RgXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRlc3QgT2JqZWN0IHRvIGFkZCBkZXNjcmlwdG9ycyB0b1xuICogQHBhcmFtIHtvYmplY3R9IHNyYyBPYmplY3QgdG8gY2xvbmUgZGVzY3JpcHRvcnMgZnJvbVxuICogQHBhcmFtIHtib29sZWFufSBbcmVkZWZpbmU9dHJ1ZV0gUmVkZWZpbmUgYGRlc3RgIHByb3BlcnRpZXMgd2l0aCBgc3JjYCBwcm9wZXJ0aWVzXG4gKiBAcmV0dXJucyB7b2JqZWN0fSBSZWZlcmVuY2UgdG8gZGVzdFxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIG1lcmdlKGRlc3QsIHNyYywgcmVkZWZpbmUpIHtcbiAgaWYgKCFkZXN0KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgZGVzdCBpcyByZXF1aXJlZCcpXG4gIH1cblxuICBpZiAoIXNyYykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHNyYyBpcyByZXF1aXJlZCcpXG4gIH1cblxuICBpZiAocmVkZWZpbmUgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIERlZmF1bHQgdG8gdHJ1ZVxuICAgIHJlZGVmaW5lID0gdHJ1ZVxuICB9XG5cbiAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc3JjKS5mb3JFYWNoKGZ1bmN0aW9uIGZvckVhY2hPd25Qcm9wZXJ0eU5hbWUobmFtZSkge1xuICAgIGlmICghcmVkZWZpbmUgJiYgaGFzT3duUHJvcGVydHkuY2FsbChkZXN0LCBuYW1lKSkge1xuICAgICAgLy8gU2tpcCBkZXNyaXB0b3JcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIENvcHkgZGVzY3JpcHRvclxuICAgIHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzcmMsIG5hbWUpXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlc3QsIG5hbWUsIGRlc2NyaXB0b3IpXG4gIH0pXG5cbiAgcmV0dXJuIGRlc3Rcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9tZXJnZS1kZXNjcmlwdG9ycy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTYwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZXhwcmVzc1xuICogQ29weXJpZ2h0KGMpIDIwMDktMjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0KGMpIDIwMTMgUm9tYW4gU2h0eWxtYW5cbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgZmluYWxoYW5kbGVyID0gcmVxdWlyZSgnZmluYWxoYW5kbGVyJyk7XG52YXIgUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXInKTtcbnZhciBtZXRob2RzID0gcmVxdWlyZSgnbWV0aG9kcycpO1xudmFyIG1pZGRsZXdhcmUgPSByZXF1aXJlKCcuL21pZGRsZXdhcmUvaW5pdCcpO1xudmFyIHF1ZXJ5ID0gcmVxdWlyZSgnLi9taWRkbGV3YXJlL3F1ZXJ5Jyk7XG52YXIgZGVidWcgPSByZXF1aXJlKCdkZWJ1ZycpKCdleHByZXNzOmFwcGxpY2F0aW9uJyk7XG52YXIgVmlldyA9IHJlcXVpcmUoJy4vdmlldycpO1xudmFyIGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG52YXIgY29tcGlsZUVUYWcgPSByZXF1aXJlKCcuL3V0aWxzJykuY29tcGlsZUVUYWc7XG52YXIgY29tcGlsZVF1ZXJ5UGFyc2VyID0gcmVxdWlyZSgnLi91dGlscycpLmNvbXBpbGVRdWVyeVBhcnNlcjtcbnZhciBjb21waWxlVHJ1c3QgPSByZXF1aXJlKCcuL3V0aWxzJykuY29tcGlsZVRydXN0O1xudmFyIGRlcHJlY2F0ZSA9IHJlcXVpcmUoJ2RlcGQnKSgnZXhwcmVzcycpO1xudmFyIGZsYXR0ZW4gPSByZXF1aXJlKCdhcnJheS1mbGF0dGVuJyk7XG52YXIgbWVyZ2UgPSByZXF1aXJlKCd1dGlscy1tZXJnZScpO1xudmFyIHJlc29sdmUgPSByZXF1aXJlKCdwYXRoJykucmVzb2x2ZTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ3NldHByb3RvdHlwZW9mJylcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcblxuLyoqXG4gKiBBcHBsaWNhdGlvbiBwcm90b3R5cGUuXG4gKi9cblxudmFyIGFwcCA9IGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vKipcbiAqIFZhcmlhYmxlIGZvciB0cnVzdCBwcm94eSBpbmhlcml0YW5jZSBiYWNrLWNvbXBhdFxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgdHJ1c3RQcm94eURlZmF1bHRTeW1ib2wgPSAnQEBzeW1ib2w6dHJ1c3RfcHJveHlfZGVmYXVsdCc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSB0aGUgc2VydmVyLlxuICpcbiAqICAgLSBzZXR1cCBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAqICAgLSBzZXR1cCBkZWZhdWx0IG1pZGRsZXdhcmVcbiAqICAgLSBzZXR1cCByb3V0ZSByZWZsZWN0aW9uIG1ldGhvZHNcbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5cbmFwcC5pbml0ID0gZnVuY3Rpb24gaW5pdCgpIHtcbiAgdGhpcy5jYWNoZSA9IHt9O1xuICB0aGlzLmVuZ2luZXMgPSB7fTtcbiAgdGhpcy5zZXR0aW5ncyA9IHt9O1xuXG4gIHRoaXMuZGVmYXVsdENvbmZpZ3VyYXRpb24oKTtcbn07XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uLlxuICogQHByaXZhdGVcbiAqL1xuXG5hcHAuZGVmYXVsdENvbmZpZ3VyYXRpb24gPSBmdW5jdGlvbiBkZWZhdWx0Q29uZmlndXJhdGlvbigpIHtcbiAgdmFyIGVudiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8ICdkZXZlbG9wbWVudCc7XG5cbiAgLy8gZGVmYXVsdCBzZXR0aW5nc1xuICB0aGlzLmVuYWJsZSgneC1wb3dlcmVkLWJ5Jyk7XG4gIHRoaXMuc2V0KCdldGFnJywgJ3dlYWsnKTtcbiAgdGhpcy5zZXQoJ2VudicsIGVudik7XG4gIHRoaXMuc2V0KCdxdWVyeSBwYXJzZXInLCAnZXh0ZW5kZWQnKTtcbiAgdGhpcy5zZXQoJ3N1YmRvbWFpbiBvZmZzZXQnLCAyKTtcbiAgdGhpcy5zZXQoJ3RydXN0IHByb3h5JywgZmFsc2UpO1xuXG4gIC8vIHRydXN0IHByb3h5IGluaGVyaXQgYmFjay1jb21wYXRcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuc2V0dGluZ3MsIHRydXN0UHJveHlEZWZhdWx0U3ltYm9sLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIHZhbHVlOiB0cnVlXG4gIH0pO1xuXG4gIGRlYnVnKCdib290aW5nIGluICVzIG1vZGUnLCBlbnYpO1xuXG4gIHRoaXMub24oJ21vdW50JywgZnVuY3Rpb24gb25tb3VudChwYXJlbnQpIHtcbiAgICAvLyBpbmhlcml0IHRydXN0IHByb3h5XG4gICAgaWYgKHRoaXMuc2V0dGluZ3NbdHJ1c3RQcm94eURlZmF1bHRTeW1ib2xdID09PSB0cnVlXG4gICAgICAmJiB0eXBlb2YgcGFyZW50LnNldHRpbmdzWyd0cnVzdCBwcm94eSBmbiddID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBkZWxldGUgdGhpcy5zZXR0aW5nc1sndHJ1c3QgcHJveHknXTtcbiAgICAgIGRlbGV0ZSB0aGlzLnNldHRpbmdzWyd0cnVzdCBwcm94eSBmbiddO1xuICAgIH1cblxuICAgIC8vIGluaGVyaXQgcHJvdG9zXG4gICAgc2V0UHJvdG90eXBlT2YodGhpcy5yZXF1ZXN0LCBwYXJlbnQucmVxdWVzdClcbiAgICBzZXRQcm90b3R5cGVPZih0aGlzLnJlc3BvbnNlLCBwYXJlbnQucmVzcG9uc2UpXG4gICAgc2V0UHJvdG90eXBlT2YodGhpcy5lbmdpbmVzLCBwYXJlbnQuZW5naW5lcylcbiAgICBzZXRQcm90b3R5cGVPZih0aGlzLnNldHRpbmdzLCBwYXJlbnQuc2V0dGluZ3MpXG4gIH0pO1xuXG4gIC8vIHNldHVwIGxvY2Fsc1xuICB0aGlzLmxvY2FscyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgLy8gdG9wLW1vc3QgYXBwIGlzIG1vdW50ZWQgYXQgL1xuICB0aGlzLm1vdW50cGF0aCA9ICcvJztcblxuICAvLyBkZWZhdWx0IGxvY2Fsc1xuICB0aGlzLmxvY2Fscy5zZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3M7XG5cbiAgLy8gZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gIHRoaXMuc2V0KCd2aWV3JywgVmlldyk7XG4gIHRoaXMuc2V0KCd2aWV3cycsIHJlc29sdmUoJ3ZpZXdzJykpO1xuICB0aGlzLnNldCgnanNvbnAgY2FsbGJhY2sgbmFtZScsICdjYWxsYmFjaycpO1xuXG4gIGlmIChlbnYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHRoaXMuZW5hYmxlKCd2aWV3IGNhY2hlJyk7XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3JvdXRlcicsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcXCdhcHAucm91dGVyXFwnIGlzIGRlcHJlY2F0ZWQhXFxuUGxlYXNlIHNlZSB0aGUgMy54IHRvIDQueCBtaWdyYXRpb24gZ3VpZGUgZm9yIGRldGFpbHMgb24gaG93IHRvIHVwZGF0ZSB5b3VyIGFwcC4nKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyoqXG4gKiBsYXppbHkgYWRkcyB0aGUgYmFzZSByb3V0ZXIgaWYgaXQgaGFzIG5vdCB5ZXQgYmVlbiBhZGRlZC5cbiAqXG4gKiBXZSBjYW5ub3QgYWRkIHRoZSBiYXNlIHJvdXRlciBpbiB0aGUgZGVmYXVsdENvbmZpZ3VyYXRpb24gYmVjYXVzZVxuICogaXQgcmVhZHMgYXBwIHNldHRpbmdzIHdoaWNoIG1pZ2h0IGJlIHNldCBhZnRlciB0aGF0IGhhcyBydW4uXG4gKlxuICogQHByaXZhdGVcbiAqL1xuYXBwLmxhenlyb3V0ZXIgPSBmdW5jdGlvbiBsYXp5cm91dGVyKCkge1xuICBpZiAoIXRoaXMuX3JvdXRlcikge1xuICAgIHRoaXMuX3JvdXRlciA9IG5ldyBSb3V0ZXIoe1xuICAgICAgY2FzZVNlbnNpdGl2ZTogdGhpcy5lbmFibGVkKCdjYXNlIHNlbnNpdGl2ZSByb3V0aW5nJyksXG4gICAgICBzdHJpY3Q6IHRoaXMuZW5hYmxlZCgnc3RyaWN0IHJvdXRpbmcnKVxuICAgIH0pO1xuXG4gICAgdGhpcy5fcm91dGVyLnVzZShxdWVyeSh0aGlzLmdldCgncXVlcnkgcGFyc2VyIGZuJykpKTtcbiAgICB0aGlzLl9yb3V0ZXIudXNlKG1pZGRsZXdhcmUuaW5pdCh0aGlzKSk7XG4gIH1cbn07XG5cbi8qKlxuICogRGlzcGF0Y2ggYSByZXEsIHJlcyBwYWlyIGludG8gdGhlIGFwcGxpY2F0aW9uLiBTdGFydHMgcGlwZWxpbmUgcHJvY2Vzc2luZy5cbiAqXG4gKiBJZiBubyBjYWxsYmFjayBpcyBwcm92aWRlZCwgdGhlbiBkZWZhdWx0IGVycm9yIGhhbmRsZXJzIHdpbGwgcmVzcG9uZFxuICogaW4gdGhlIGV2ZW50IG9mIGFuIGVycm9yIGJ1YmJsaW5nIHRocm91Z2ggdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cblxuYXBwLmhhbmRsZSA9IGZ1bmN0aW9uIGhhbmRsZShyZXEsIHJlcywgY2FsbGJhY2spIHtcbiAgdmFyIHJvdXRlciA9IHRoaXMuX3JvdXRlcjtcblxuICAvLyBmaW5hbCBoYW5kbGVyXG4gIHZhciBkb25lID0gY2FsbGJhY2sgfHwgZmluYWxoYW5kbGVyKHJlcSwgcmVzLCB7XG4gICAgZW52OiB0aGlzLmdldCgnZW52JyksXG4gICAgb25lcnJvcjogbG9nZXJyb3IuYmluZCh0aGlzKVxuICB9KTtcblxuICAvLyBubyByb3V0ZXNcbiAgaWYgKCFyb3V0ZXIpIHtcbiAgICBkZWJ1Zygnbm8gcm91dGVzIGRlZmluZWQgb24gYXBwJyk7XG4gICAgZG9uZSgpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJvdXRlci5oYW5kbGUocmVxLCByZXMsIGRvbmUpO1xufTtcblxuLyoqXG4gKiBQcm94eSBgUm91dGVyI3VzZSgpYCB0byBhZGQgbWlkZGxld2FyZSB0byB0aGUgYXBwIHJvdXRlci5cbiAqIFNlZSBSb3V0ZXIjdXNlKCkgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy5cbiAqXG4gKiBJZiB0aGUgX2ZuXyBwYXJhbWV0ZXIgaXMgYW4gZXhwcmVzcyBhcHAsIHRoZW4gaXQgd2lsbCBiZVxuICogbW91bnRlZCBhdCB0aGUgX3JvdXRlXyBzcGVjaWZpZWQuXG4gKlxuICogQHB1YmxpY1xuICovXG5cbmFwcC51c2UgPSBmdW5jdGlvbiB1c2UoZm4pIHtcbiAgdmFyIG9mZnNldCA9IDA7XG4gIHZhciBwYXRoID0gJy8nO1xuXG4gIC8vIGRlZmF1bHQgcGF0aCB0byAnLydcbiAgLy8gZGlzYW1iaWd1YXRlIGFwcC51c2UoW2ZuXSlcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBhcmcgPSBmbjtcblxuICAgIHdoaWxlIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnLmxlbmd0aCAhPT0gMCkge1xuICAgICAgYXJnID0gYXJnWzBdO1xuICAgIH1cblxuICAgIC8vIGZpcnN0IGFyZyBpcyB0aGUgcGF0aFxuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvZmZzZXQgPSAxO1xuICAgICAgcGF0aCA9IGZuO1xuICAgIH1cbiAgfVxuXG4gIHZhciBmbnMgPSBmbGF0dGVuKHNsaWNlLmNhbGwoYXJndW1lbnRzLCBvZmZzZXQpKTtcblxuICBpZiAoZm5zLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FwcC51c2UoKSByZXF1aXJlcyBhIG1pZGRsZXdhcmUgZnVuY3Rpb24nKVxuICB9XG5cbiAgLy8gc2V0dXAgcm91dGVyXG4gIHRoaXMubGF6eXJvdXRlcigpO1xuICB2YXIgcm91dGVyID0gdGhpcy5fcm91dGVyO1xuXG4gIGZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuICAgIC8vIG5vbi1leHByZXNzIGFwcFxuICAgIGlmICghZm4gfHwgIWZuLmhhbmRsZSB8fCAhZm4uc2V0KSB7XG4gICAgICByZXR1cm4gcm91dGVyLnVzZShwYXRoLCBmbik7XG4gICAgfVxuXG4gICAgZGVidWcoJy51c2UgYXBwIHVuZGVyICVzJywgcGF0aCk7XG4gICAgZm4ubW91bnRwYXRoID0gcGF0aDtcbiAgICBmbi5wYXJlbnQgPSB0aGlzO1xuXG4gICAgLy8gcmVzdG9yZSAuYXBwIHByb3BlcnR5IG9uIHJlcSBhbmQgcmVzXG4gICAgcm91dGVyLnVzZShwYXRoLCBmdW5jdGlvbiBtb3VudGVkX2FwcChyZXEsIHJlcywgbmV4dCkge1xuICAgICAgdmFyIG9yaWcgPSByZXEuYXBwO1xuICAgICAgZm4uaGFuZGxlKHJlcSwgcmVzLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHNldFByb3RvdHlwZU9mKHJlcSwgb3JpZy5yZXF1ZXN0KVxuICAgICAgICBzZXRQcm90b3R5cGVPZihyZXMsIG9yaWcucmVzcG9uc2UpXG4gICAgICAgIG5leHQoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gbW91bnRlZCBhbiBhcHBcbiAgICBmbi5lbWl0KCdtb3VudCcsIHRoaXMpO1xuICB9LCB0aGlzKTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogUHJveHkgdG8gdGhlIGFwcCBgUm91dGVyI3JvdXRlKClgXG4gKiBSZXR1cm5zIGEgbmV3IGBSb3V0ZWAgaW5zdGFuY2UgZm9yIHRoZSBfcGF0aF8uXG4gKlxuICogUm91dGVzIGFyZSBpc29sYXRlZCBtaWRkbGV3YXJlIHN0YWNrcyBmb3Igc3BlY2lmaWMgcGF0aHMuXG4gKiBTZWUgdGhlIFJvdXRlIGFwaSBkb2NzIGZvciBkZXRhaWxzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuXG5hcHAucm91dGUgPSBmdW5jdGlvbiByb3V0ZShwYXRoKSB7XG4gIHRoaXMubGF6eXJvdXRlcigpO1xuICByZXR1cm4gdGhpcy5fcm91dGVyLnJvdXRlKHBhdGgpO1xufTtcblxuLyoqXG4gKiBSZWdpc3RlciB0aGUgZ2l2ZW4gdGVtcGxhdGUgZW5naW5lIGNhbGxiYWNrIGBmbmBcbiAqIGFzIGBleHRgLlxuICpcbiAqIEJ5IGRlZmF1bHQgd2lsbCBgcmVxdWlyZSgpYCB0aGUgZW5naW5lIGJhc2VkIG9uIHRoZVxuICogZmlsZSBleHRlbnNpb24uIEZvciBleGFtcGxlIGlmIHlvdSB0cnkgdG8gcmVuZGVyXG4gKiBhIFwiZm9vLmVqc1wiIGZpbGUgRXhwcmVzcyB3aWxsIGludm9rZSB0aGUgZm9sbG93aW5nIGludGVybmFsbHk6XG4gKlxuICogICAgIGFwcC5lbmdpbmUoJ2VqcycsIHJlcXVpcmUoJ2VqcycpLl9fZXhwcmVzcyk7XG4gKlxuICogRm9yIGVuZ2luZXMgdGhhdCBkbyBub3QgcHJvdmlkZSBgLl9fZXhwcmVzc2Agb3V0IG9mIHRoZSBib3gsXG4gKiBvciBpZiB5b3Ugd2lzaCB0byBcIm1hcFwiIGEgZGlmZmVyZW50IGV4dGVuc2lvbiB0byB0aGUgdGVtcGxhdGUgZW5naW5lXG4gKiB5b3UgbWF5IHVzZSB0aGlzIG1ldGhvZC4gRm9yIGV4YW1wbGUgbWFwcGluZyB0aGUgRUpTIHRlbXBsYXRlIGVuZ2luZSB0b1xuICogXCIuaHRtbFwiIGZpbGVzOlxuICpcbiAqICAgICBhcHAuZW5naW5lKCdodG1sJywgcmVxdWlyZSgnZWpzJykucmVuZGVyRmlsZSk7XG4gKlxuICogSW4gdGhpcyBjYXNlIEVKUyBwcm92aWRlcyBhIGAucmVuZGVyRmlsZSgpYCBtZXRob2Qgd2l0aFxuICogdGhlIHNhbWUgc2lnbmF0dXJlIHRoYXQgRXhwcmVzcyBleHBlY3RzOiBgKHBhdGgsIG9wdGlvbnMsIGNhbGxiYWNrKWAsXG4gKiB0aG91Z2ggbm90ZSB0aGF0IGl0IGFsaWFzZXMgdGhpcyBtZXRob2QgYXMgYGVqcy5fX2V4cHJlc3NgIGludGVybmFsbHlcbiAqIHNvIGlmIHlvdSdyZSB1c2luZyBcIi5lanNcIiBleHRlbnNpb25zIHlvdSBkb250IG5lZWQgdG8gZG8gYW55dGhpbmcuXG4gKlxuICogU29tZSB0ZW1wbGF0ZSBlbmdpbmVzIGRvIG5vdCBmb2xsb3cgdGhpcyBjb252ZW50aW9uLCB0aGVcbiAqIFtDb25zb2xpZGF0ZS5qc10oaHR0cHM6Ly9naXRodWIuY29tL3RqL2NvbnNvbGlkYXRlLmpzKVxuICogbGlicmFyeSB3YXMgY3JlYXRlZCB0byBtYXAgYWxsIG9mIG5vZGUncyBwb3B1bGFyIHRlbXBsYXRlXG4gKiBlbmdpbmVzIHRvIGZvbGxvdyB0aGlzIGNvbnZlbnRpb24sIHRodXMgYWxsb3dpbmcgdGhlbSB0b1xuICogd29yayBzZWFtbGVzc2x5IHdpdGhpbiBFeHByZXNzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBleHRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcmV0dXJuIHthcHB9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbmFwcC5lbmdpbmUgPSBmdW5jdGlvbiBlbmdpbmUoZXh0LCBmbikge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYWxsYmFjayBmdW5jdGlvbiByZXF1aXJlZCcpO1xuICB9XG5cbiAgLy8gZ2V0IGZpbGUgZXh0ZW5zaW9uXG4gIHZhciBleHRlbnNpb24gPSBleHRbMF0gIT09ICcuJ1xuICAgID8gJy4nICsgZXh0XG4gICAgOiBleHQ7XG5cbiAgLy8gc3RvcmUgZW5naW5lXG4gIHRoaXMuZW5naW5lc1tleHRlbnNpb25dID0gZm47XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFByb3h5IHRvIGBSb3V0ZXIjcGFyYW0oKWAgd2l0aCBvbmUgYWRkZWQgYXBpIGZlYXR1cmUuIFRoZSBfbmFtZV8gcGFyYW1ldGVyXG4gKiBjYW4gYmUgYW4gYXJyYXkgb2YgbmFtZXMuXG4gKlxuICogU2VlIHRoZSBSb3V0ZXIjcGFyYW0oKSBkb2NzIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IG5hbWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuXG4gKiBAcmV0dXJuIHthcHB9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbmFwcC5wYXJhbSA9IGZ1bmN0aW9uIHBhcmFtKG5hbWUsIGZuKSB7XG4gIHRoaXMubGF6eXJvdXRlcigpO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KG5hbWUpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnBhcmFtKG5hbWVbaV0sIGZuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX3JvdXRlci5wYXJhbShuYW1lLCBmbik7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFzc2lnbiBgc2V0dGluZ2AgdG8gYHZhbGAsIG9yIHJldHVybiBgc2V0dGluZ2AncyB2YWx1ZS5cbiAqXG4gKiAgICBhcHAuc2V0KCdmb28nLCAnYmFyJyk7XG4gKiAgICBhcHAuc2V0KCdmb28nKTtcbiAqICAgIC8vID0+IFwiYmFyXCJcbiAqXG4gKiBNb3VudGVkIHNlcnZlcnMgaW5oZXJpdCB0aGVpciBwYXJlbnQgc2VydmVyJ3Mgc2V0dGluZ3MuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHNldHRpbmdcbiAqIEBwYXJhbSB7Kn0gW3ZhbF1cbiAqIEByZXR1cm4ge1NlcnZlcn0gZm9yIGNoYWluaW5nXG4gKiBAcHVibGljXG4gKi9cblxuYXBwLnNldCA9IGZ1bmN0aW9uIHNldChzZXR0aW5nLCB2YWwpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBhcHAuZ2V0KHNldHRpbmcpXG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ3Nbc2V0dGluZ107XG4gIH1cblxuICBkZWJ1Zygnc2V0IFwiJXNcIiB0byAlbycsIHNldHRpbmcsIHZhbCk7XG5cbiAgLy8gc2V0IHZhbHVlXG4gIHRoaXMuc2V0dGluZ3Nbc2V0dGluZ10gPSB2YWw7XG5cbiAgLy8gdHJpZ2dlciBtYXRjaGVkIHNldHRpbmdzXG4gIHN3aXRjaCAoc2V0dGluZykge1xuICAgIGNhc2UgJ2V0YWcnOlxuICAgICAgdGhpcy5zZXQoJ2V0YWcgZm4nLCBjb21waWxlRVRhZyh2YWwpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3F1ZXJ5IHBhcnNlcic6XG4gICAgICB0aGlzLnNldCgncXVlcnkgcGFyc2VyIGZuJywgY29tcGlsZVF1ZXJ5UGFyc2VyKHZhbCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndHJ1c3QgcHJveHknOlxuICAgICAgdGhpcy5zZXQoJ3RydXN0IHByb3h5IGZuJywgY29tcGlsZVRydXN0KHZhbCkpO1xuXG4gICAgICAvLyB0cnVzdCBwcm94eSBpbmhlcml0IGJhY2stY29tcGF0XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5zZXR0aW5ncywgdHJ1c3RQcm94eURlZmF1bHRTeW1ib2wsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogZmFsc2VcbiAgICAgIH0pO1xuXG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGFwcCdzIGFic29sdXRlIHBhdGhuYW1lXG4gKiBiYXNlZCBvbiB0aGUgcGFyZW50KHMpIHRoYXQgaGF2ZVxuICogbW91bnRlZCBpdC5cbiAqXG4gKiBGb3IgZXhhbXBsZSBpZiB0aGUgYXBwbGljYXRpb24gd2FzXG4gKiBtb3VudGVkIGFzIFwiL2FkbWluXCIsIHdoaWNoIGl0c2VsZlxuICogd2FzIG1vdW50ZWQgYXMgXCIvYmxvZ1wiIHRoZW4gdGhlXG4gKiByZXR1cm4gdmFsdWUgd291bGQgYmUgXCIvYmxvZy9hZG1pblwiLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBwcml2YXRlXG4gKi9cblxuYXBwLnBhdGggPSBmdW5jdGlvbiBwYXRoKCkge1xuICByZXR1cm4gdGhpcy5wYXJlbnRcbiAgICA/IHRoaXMucGFyZW50LnBhdGgoKSArIHRoaXMubW91bnRwYXRoXG4gICAgOiAnJztcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYHNldHRpbmdgIGlzIGVuYWJsZWQgKHRydXRoeSkuXG4gKlxuICogICAgYXBwLmVuYWJsZWQoJ2ZvbycpXG4gKiAgICAvLyA9PiBmYWxzZVxuICpcbiAqICAgIGFwcC5lbmFibGUoJ2ZvbycpXG4gKiAgICBhcHAuZW5hYmxlZCgnZm9vJylcbiAqICAgIC8vID0+IHRydWVcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc2V0dGluZ1xuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5hcHAuZW5hYmxlZCA9IGZ1bmN0aW9uIGVuYWJsZWQoc2V0dGluZykge1xuICByZXR1cm4gQm9vbGVhbih0aGlzLnNldChzZXR0aW5nKSk7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGBzZXR0aW5nYCBpcyBkaXNhYmxlZC5cbiAqXG4gKiAgICBhcHAuZGlzYWJsZWQoJ2ZvbycpXG4gKiAgICAvLyA9PiB0cnVlXG4gKlxuICogICAgYXBwLmVuYWJsZSgnZm9vJylcbiAqICAgIGFwcC5kaXNhYmxlZCgnZm9vJylcbiAqICAgIC8vID0+IGZhbHNlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHNldHRpbmdcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAcHVibGljXG4gKi9cblxuYXBwLmRpc2FibGVkID0gZnVuY3Rpb24gZGlzYWJsZWQoc2V0dGluZykge1xuICByZXR1cm4gIXRoaXMuc2V0KHNldHRpbmcpO1xufTtcblxuLyoqXG4gKiBFbmFibGUgYHNldHRpbmdgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZXR0aW5nXG4gKiBAcmV0dXJuIHthcHB9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbmFwcC5lbmFibGUgPSBmdW5jdGlvbiBlbmFibGUoc2V0dGluZykge1xuICByZXR1cm4gdGhpcy5zZXQoc2V0dGluZywgdHJ1ZSk7XG59O1xuXG4vKipcbiAqIERpc2FibGUgYHNldHRpbmdgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZXR0aW5nXG4gKiBAcmV0dXJuIHthcHB9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbmFwcC5kaXNhYmxlID0gZnVuY3Rpb24gZGlzYWJsZShzZXR0aW5nKSB7XG4gIHJldHVybiB0aGlzLnNldChzZXR0aW5nLCBmYWxzZSk7XG59O1xuXG4vKipcbiAqIERlbGVnYXRlIGAuVkVSQiguLi4pYCBjYWxscyB0byBgcm91dGVyLlZFUkIoLi4uKWAuXG4gKi9cblxubWV0aG9kcy5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCl7XG4gIGFwcFttZXRob2RdID0gZnVuY3Rpb24ocGF0aCl7XG4gICAgaWYgKG1ldGhvZCA9PT0gJ2dldCcgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gYXBwLmdldChzZXR0aW5nKVxuICAgICAgcmV0dXJuIHRoaXMuc2V0KHBhdGgpO1xuICAgIH1cblxuICAgIHRoaXMubGF6eXJvdXRlcigpO1xuXG4gICAgdmFyIHJvdXRlID0gdGhpcy5fcm91dGVyLnJvdXRlKHBhdGgpO1xuICAgIHJvdXRlW21ldGhvZF0uYXBwbHkocm91dGUsIHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59KTtcblxuLyoqXG4gKiBTcGVjaWFsLWNhc2VkIFwiYWxsXCIgbWV0aG9kLCBhcHBseWluZyB0aGUgZ2l2ZW4gcm91dGUgYHBhdGhgLFxuICogbWlkZGxld2FyZSwgYW5kIGNhbGxiYWNrIHRvIF9ldmVyeV8gSFRUUCBtZXRob2QuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGhcbiAqIEBwYXJhbSB7RnVuY3Rpb259IC4uLlxuICogQHJldHVybiB7YXBwfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5hcHAuYWxsID0gZnVuY3Rpb24gYWxsKHBhdGgpIHtcbiAgdGhpcy5sYXp5cm91dGVyKCk7XG5cbiAgdmFyIHJvdXRlID0gdGhpcy5fcm91dGVyLnJvdXRlKHBhdGgpO1xuICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGhvZHMubGVuZ3RoOyBpKyspIHtcbiAgICByb3V0ZVttZXRob2RzW2ldXS5hcHBseShyb3V0ZSwgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIGRlbCAtPiBkZWxldGUgYWxpYXNcblxuYXBwLmRlbCA9IGRlcHJlY2F0ZS5mdW5jdGlvbihhcHAuZGVsZXRlLCAnYXBwLmRlbDogVXNlIGFwcC5kZWxldGUgaW5zdGVhZCcpO1xuXG4vKipcbiAqIFJlbmRlciB0aGUgZ2l2ZW4gdmlldyBgbmFtZWAgbmFtZSB3aXRoIGBvcHRpb25zYFxuICogYW5kIGEgY2FsbGJhY2sgYWNjZXB0aW5nIGFuIGVycm9yIGFuZCB0aGVcbiAqIHJlbmRlcmVkIHRlbXBsYXRlIHN0cmluZy5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgIGFwcC5yZW5kZXIoJ2VtYWlsJywgeyBuYW1lOiAnVG9iaScgfSwgZnVuY3Rpb24oZXJyLCBodG1sKXtcbiAqICAgICAgLy8gLi4uXG4gKiAgICB9KVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge09iamVjdHxGdW5jdGlvbn0gb3B0aW9ucyBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEBwdWJsaWNcbiAqL1xuXG5hcHAucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKG5hbWUsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBjYWNoZSA9IHRoaXMuY2FjaGU7XG4gIHZhciBkb25lID0gY2FsbGJhY2s7XG4gIHZhciBlbmdpbmVzID0gdGhpcy5lbmdpbmVzO1xuICB2YXIgb3B0cyA9IG9wdGlvbnM7XG4gIHZhciByZW5kZXJPcHRpb25zID0ge307XG4gIHZhciB2aWV3O1xuXG4gIC8vIHN1cHBvcnQgY2FsbGJhY2sgZnVuY3Rpb24gYXMgc2Vjb25kIGFyZ1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkb25lID0gb3B0aW9ucztcbiAgICBvcHRzID0ge307XG4gIH1cblxuICAvLyBtZXJnZSBhcHAubG9jYWxzXG4gIG1lcmdlKHJlbmRlck9wdGlvbnMsIHRoaXMubG9jYWxzKTtcblxuICAvLyBtZXJnZSBvcHRpb25zLl9sb2NhbHNcbiAgaWYgKG9wdHMuX2xvY2Fscykge1xuICAgIG1lcmdlKHJlbmRlck9wdGlvbnMsIG9wdHMuX2xvY2Fscyk7XG4gIH1cblxuICAvLyBtZXJnZSBvcHRpb25zXG4gIG1lcmdlKHJlbmRlck9wdGlvbnMsIG9wdHMpO1xuXG4gIC8vIHNldCAuY2FjaGUgdW5sZXNzIGV4cGxpY2l0bHkgcHJvdmlkZWRcbiAgaWYgKHJlbmRlck9wdGlvbnMuY2FjaGUgPT0gbnVsbCkge1xuICAgIHJlbmRlck9wdGlvbnMuY2FjaGUgPSB0aGlzLmVuYWJsZWQoJ3ZpZXcgY2FjaGUnKTtcbiAgfVxuXG4gIC8vIHByaW1lZCBjYWNoZVxuICBpZiAocmVuZGVyT3B0aW9ucy5jYWNoZSkge1xuICAgIHZpZXcgPSBjYWNoZVtuYW1lXTtcbiAgfVxuXG4gIC8vIHZpZXdcbiAgaWYgKCF2aWV3KSB7XG4gICAgdmFyIFZpZXcgPSB0aGlzLmdldCgndmlldycpO1xuXG4gICAgdmlldyA9IG5ldyBWaWV3KG5hbWUsIHtcbiAgICAgIGRlZmF1bHRFbmdpbmU6IHRoaXMuZ2V0KCd2aWV3IGVuZ2luZScpLFxuICAgICAgcm9vdDogdGhpcy5nZXQoJ3ZpZXdzJyksXG4gICAgICBlbmdpbmVzOiBlbmdpbmVzXG4gICAgfSk7XG5cbiAgICBpZiAoIXZpZXcucGF0aCkge1xuICAgICAgdmFyIGRpcnMgPSBBcnJheS5pc0FycmF5KHZpZXcucm9vdCkgJiYgdmlldy5yb290Lmxlbmd0aCA+IDFcbiAgICAgICAgPyAnZGlyZWN0b3JpZXMgXCInICsgdmlldy5yb290LnNsaWNlKDAsIC0xKS5qb2luKCdcIiwgXCInKSArICdcIiBvciBcIicgKyB2aWV3LnJvb3Rbdmlldy5yb290Lmxlbmd0aCAtIDFdICsgJ1wiJ1xuICAgICAgICA6ICdkaXJlY3RvcnkgXCInICsgdmlldy5yb290ICsgJ1wiJ1xuICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcignRmFpbGVkIHRvIGxvb2t1cCB2aWV3IFwiJyArIG5hbWUgKyAnXCIgaW4gdmlld3MgJyArIGRpcnMpO1xuICAgICAgZXJyLnZpZXcgPSB2aWV3O1xuICAgICAgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICB9XG5cbiAgICAvLyBwcmltZSB0aGUgY2FjaGVcbiAgICBpZiAocmVuZGVyT3B0aW9ucy5jYWNoZSkge1xuICAgICAgY2FjaGVbbmFtZV0gPSB2aWV3O1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlbmRlclxuICB0cnlSZW5kZXIodmlldywgcmVuZGVyT3B0aW9ucywgZG9uZSk7XG59O1xuXG4vKipcbiAqIExpc3RlbiBmb3IgY29ubmVjdGlvbnMuXG4gKlxuICogQSBub2RlIGBodHRwLlNlcnZlcmAgaXMgcmV0dXJuZWQsIHdpdGggdGhpc1xuICogYXBwbGljYXRpb24gKHdoaWNoIGlzIGEgYEZ1bmN0aW9uYCkgYXMgaXRzXG4gKiBjYWxsYmFjay4gSWYgeW91IHdpc2ggdG8gY3JlYXRlIGJvdGggYW4gSFRUUFxuICogYW5kIEhUVFBTIHNlcnZlciB5b3UgbWF5IGRvIHNvIHdpdGggdGhlIFwiaHR0cFwiXG4gKiBhbmQgXCJodHRwc1wiIG1vZHVsZXMgYXMgc2hvd24gaGVyZTpcbiAqXG4gKiAgICB2YXIgaHR0cCA9IHJlcXVpcmUoJ2h0dHAnKVxuICogICAgICAsIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKVxuICogICAgICAsIGV4cHJlc3MgPSByZXF1aXJlKCdleHByZXNzJylcbiAqICAgICAgLCBhcHAgPSBleHByZXNzKCk7XG4gKlxuICogICAgaHR0cC5jcmVhdGVTZXJ2ZXIoYXBwKS5saXN0ZW4oODApO1xuICogICAgaHR0cHMuY3JlYXRlU2VydmVyKHsgLi4uIH0sIGFwcCkubGlzdGVuKDQ0Myk7XG4gKlxuICogQHJldHVybiB7aHR0cC5TZXJ2ZXJ9XG4gKiBAcHVibGljXG4gKi9cblxuYXBwLmxpc3RlbiA9IGZ1bmN0aW9uIGxpc3RlbigpIHtcbiAgdmFyIHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKHRoaXMpO1xuICByZXR1cm4gc2VydmVyLmxpc3Rlbi5hcHBseShzZXJ2ZXIsIGFyZ3VtZW50cyk7XG59O1xuXG4vKipcbiAqIExvZyBlcnJvciB1c2luZyBjb25zb2xlLmVycm9yLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J9IGVyclxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2dlcnJvcihlcnIpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHRoaXMuZ2V0KCdlbnYnKSAhPT0gJ3Rlc3QnKSBjb25zb2xlLmVycm9yKGVyci5zdGFjayB8fCBlcnIudG9TdHJpbmcoKSk7XG59XG5cbi8qKlxuICogVHJ5IHJlbmRlcmluZyBhIHZpZXcuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHRyeVJlbmRlcih2aWV3LCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB0cnkge1xuICAgIHZpZXcucmVuZGVyKG9wdGlvbnMsIGNhbGxiYWNrKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FsbGJhY2soZXJyKTtcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2V4cHJlc3MvbGliL2FwcGxpY2F0aW9uLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBmaW5hbGhhbmRsZXJcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTcgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2ZpbmFsaGFuZGxlcicpXG52YXIgZW5jb2RlVXJsID0gcmVxdWlyZSgnZW5jb2RldXJsJylcbnZhciBlc2NhcGVIdG1sID0gcmVxdWlyZSgnZXNjYXBlLWh0bWwnKVxudmFyIG9uRmluaXNoZWQgPSByZXF1aXJlKCdvbi1maW5pc2hlZCcpXG52YXIgcGFyc2VVcmwgPSByZXF1aXJlKCdwYXJzZXVybCcpXG52YXIgc3RhdHVzZXMgPSByZXF1aXJlKCdzdGF0dXNlcycpXG52YXIgdW5waXBlID0gcmVxdWlyZSgndW5waXBlJylcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgRE9VQkxFX1NQQUNFX1JFR0VYUCA9IC9cXHgyMHsyfS9nXG52YXIgTkVXTElORV9SRUdFWFAgPSAvXFxuL2dcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnZhciBkZWZlciA9IHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09ICdmdW5jdGlvbidcbiAgPyBzZXRJbW1lZGlhdGVcbiAgOiBmdW5jdGlvbiAoZm4pIHsgcHJvY2Vzcy5uZXh0VGljayhmbi5iaW5kLmFwcGx5KGZuLCBhcmd1bWVudHMpKSB9XG52YXIgaXNGaW5pc2hlZCA9IG9uRmluaXNoZWQuaXNGaW5pc2hlZFxuXG4vKipcbiAqIENyZWF0ZSBhIG1pbmltYWwgSFRNTCBkb2N1bWVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVIdG1sRG9jdW1lbnQgKG1lc3NhZ2UpIHtcbiAgdmFyIGJvZHkgPSBlc2NhcGVIdG1sKG1lc3NhZ2UpXG4gICAgLnJlcGxhY2UoTkVXTElORV9SRUdFWFAsICc8YnI+JylcbiAgICAucmVwbGFjZShET1VCTEVfU1BBQ0VfUkVHRVhQLCAnICZuYnNwOycpXG5cbiAgcmV0dXJuICc8IURPQ1RZUEUgaHRtbD5cXG4nICtcbiAgICAnPGh0bWwgbGFuZz1cImVuXCI+XFxuJyArXG4gICAgJzxoZWFkPlxcbicgK1xuICAgICc8bWV0YSBjaGFyc2V0PVwidXRmLThcIj5cXG4nICtcbiAgICAnPHRpdGxlPkVycm9yPC90aXRsZT5cXG4nICtcbiAgICAnPC9oZWFkPlxcbicgK1xuICAgICc8Ym9keT5cXG4nICtcbiAgICAnPHByZT4nICsgYm9keSArICc8L3ByZT5cXG4nICtcbiAgICAnPC9ib2R5PlxcbicgK1xuICAgICc8L2h0bWw+XFxuJ1xufVxuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZmluYWxoYW5kbGVyXG5cbi8qKlxuICogQ3JlYXRlIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBmaW5hbCByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge1JlcXVlc3R9IHJlcVxuICogQHBhcmFtIHtSZXNwb25zZX0gcmVzXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmaW5hbGhhbmRsZXIgKHJlcSwgcmVzLCBvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fVxuXG4gIC8vIGdldCBlbnZpcm9ubWVudFxuICB2YXIgZW52ID0gb3B0cy5lbnYgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgJ2RldmVsb3BtZW50J1xuXG4gIC8vIGdldCBlcnJvciBjYWxsYmFja1xuICB2YXIgb25lcnJvciA9IG9wdHMub25lcnJvclxuXG4gIHJldHVybiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgdmFyIGhlYWRlcnNcbiAgICB2YXIgbXNnXG4gICAgdmFyIHN0YXR1c1xuXG4gICAgLy8gaWdub3JlIDQwNCBvbiBpbi1mbGlnaHQgcmVzcG9uc2VcbiAgICBpZiAoIWVyciAmJiBoZWFkZXJzU2VudChyZXMpKSB7XG4gICAgICBkZWJ1ZygnY2Fubm90IDQwNCBhZnRlciBoZWFkZXJzIHNlbnQnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gdW5oYW5kbGVkIGVycm9yXG4gICAgaWYgKGVycikge1xuICAgICAgLy8gcmVzcGVjdCBzdGF0dXMgY29kZSBmcm9tIGVycm9yXG4gICAgICBzdGF0dXMgPSBnZXRFcnJvclN0YXR1c0NvZGUoZXJyKVxuXG4gICAgICBpZiAoc3RhdHVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gZmFsbGJhY2sgdG8gc3RhdHVzIGNvZGUgb24gcmVzcG9uc2VcbiAgICAgICAgc3RhdHVzID0gZ2V0UmVzcG9uc2VTdGF0dXNDb2RlKHJlcylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHJlc3BlY3QgaGVhZGVycyBmcm9tIGVycm9yXG4gICAgICAgIGhlYWRlcnMgPSBnZXRFcnJvckhlYWRlcnMoZXJyKVxuICAgICAgfVxuXG4gICAgICAvLyBnZXQgZXJyb3IgbWVzc2FnZVxuICAgICAgbXNnID0gZ2V0RXJyb3JNZXNzYWdlKGVyciwgc3RhdHVzLCBlbnYpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG5vdCBmb3VuZFxuICAgICAgc3RhdHVzID0gNDA0XG4gICAgICBtc2cgPSAnQ2Fubm90ICcgKyByZXEubWV0aG9kICsgJyAnICsgZW5jb2RlVXJsKGdldFJlc291cmNlTmFtZShyZXEpKVxuICAgIH1cblxuICAgIGRlYnVnKCdkZWZhdWx0ICVzJywgc3RhdHVzKVxuXG4gICAgLy8gc2NoZWR1bGUgb25lcnJvciBjYWxsYmFja1xuICAgIGlmIChlcnIgJiYgb25lcnJvcikge1xuICAgICAgZGVmZXIob25lcnJvciwgZXJyLCByZXEsIHJlcylcbiAgICB9XG5cbiAgICAvLyBjYW5ub3QgYWN0dWFsbHkgcmVzcG9uZFxuICAgIGlmIChoZWFkZXJzU2VudChyZXMpKSB7XG4gICAgICBkZWJ1ZygnY2Fubm90ICVkIGFmdGVyIGhlYWRlcnMgc2VudCcsIHN0YXR1cylcbiAgICAgIHJlcS5zb2NrZXQuZGVzdHJveSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBzZW5kIHJlc3BvbnNlXG4gICAgc2VuZChyZXEsIHJlcywgc3RhdHVzLCBoZWFkZXJzLCBtc2cpXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgaGVhZGVycyBmcm9tIEVycm9yIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0RXJyb3JIZWFkZXJzIChlcnIpIHtcbiAgaWYgKCFlcnIuaGVhZGVycyB8fCB0eXBlb2YgZXJyLmhlYWRlcnMgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgdmFyIGhlYWRlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZXJyLmhlYWRlcnMpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV1cbiAgICBoZWFkZXJzW2tleV0gPSBlcnIuaGVhZGVyc1trZXldXG4gIH1cblxuICByZXR1cm4gaGVhZGVyc1xufVxuXG4vKipcbiAqIEdldCBtZXNzYWdlIGZyb20gRXJyb3Igb2JqZWN0LCBmYWxsYmFjayB0byBzdGF0dXMgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGF0dXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBlbnZcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlIChlcnIsIHN0YXR1cywgZW52KSB7XG4gIHZhciBtc2dcblxuICBpZiAoZW52ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyB1c2UgZXJyLnN0YWNrLCB3aGljaCB0eXBpY2FsbHkgaW5jbHVkZXMgZXJyLm1lc3NhZ2VcbiAgICBtc2cgPSBlcnIuc3RhY2tcblxuICAgIC8vIGZhbGxiYWNrIHRvIGVyci50b1N0cmluZygpIHdoZW4gcG9zc2libGVcbiAgICBpZiAoIW1zZyAmJiB0eXBlb2YgZXJyLnRvU3RyaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBtc2cgPSBlcnIudG9TdHJpbmcoKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtc2cgfHwgc3RhdHVzZXNbc3RhdHVzXVxufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgY29kZSBmcm9tIEVycm9yIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0RXJyb3JTdGF0dXNDb2RlIChlcnIpIHtcbiAgLy8gY2hlY2sgZXJyLnN0YXR1c1xuICBpZiAodHlwZW9mIGVyci5zdGF0dXMgPT09ICdudW1iZXInICYmIGVyci5zdGF0dXMgPj0gNDAwICYmIGVyci5zdGF0dXMgPCA2MDApIHtcbiAgICByZXR1cm4gZXJyLnN0YXR1c1xuICB9XG5cbiAgLy8gY2hlY2sgZXJyLnN0YXR1c0NvZGVcbiAgaWYgKHR5cGVvZiBlcnIuc3RhdHVzQ29kZSA9PT0gJ251bWJlcicgJiYgZXJyLnN0YXR1c0NvZGUgPj0gNDAwICYmIGVyci5zdGF0dXNDb2RlIDwgNjAwKSB7XG4gICAgcmV0dXJuIGVyci5zdGF0dXNDb2RlXG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogR2V0IHJlc291cmNlIG5hbWUgZm9yIHRoZSByZXF1ZXN0LlxuICpcbiAqIFRoaXMgaXMgdHlwaWNhbGx5IGp1c3QgdGhlIG9yaWdpbmFsIHBhdGhuYW1lIG9mIHRoZSByZXF1ZXN0XG4gKiBidXQgd2lsbCBmYWxsYmFjayB0byBcInJlc291cmNlXCIgaXMgdGhhdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiAqXG4gKiBAcGFyYW0ge0luY29taW5nTWVzc2FnZX0gcmVxXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldFJlc291cmNlTmFtZSAocmVxKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlVXJsLm9yaWdpbmFsKHJlcSkucGF0aG5hbWVcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiAncmVzb3VyY2UnXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGNvZGUgZnJvbSByZXNwb25zZS5cbiAqXG4gKiBAcGFyYW0ge091dGdvaW5nTWVzc2FnZX0gcmVzXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldFJlc3BvbnNlU3RhdHVzQ29kZSAocmVzKSB7XG4gIHZhciBzdGF0dXMgPSByZXMuc3RhdHVzQ29kZVxuXG4gIC8vIGRlZmF1bHQgc3RhdHVzIGNvZGUgdG8gNTAwIGlmIG91dHNpZGUgdmFsaWQgcmFuZ2VcbiAgaWYgKHR5cGVvZiBzdGF0dXMgIT09ICdudW1iZXInIHx8IHN0YXR1cyA8IDQwMCB8fCBzdGF0dXMgPiA1OTkpIHtcbiAgICBzdGF0dXMgPSA1MDBcbiAgfVxuXG4gIHJldHVybiBzdGF0dXNcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgdGhlIHJlc3BvbnNlIGhlYWRlcnMgaGF2ZSBiZWVuIHNlbnQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHJlc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGhlYWRlcnNTZW50IChyZXMpIHtcbiAgcmV0dXJuIHR5cGVvZiByZXMuaGVhZGVyc1NlbnQgIT09ICdib29sZWFuJ1xuICAgID8gQm9vbGVhbihyZXMuX2hlYWRlcilcbiAgICA6IHJlcy5oZWFkZXJzU2VudFxufVxuXG4vKipcbiAqIFNlbmQgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtJbmNvbWluZ01lc3NhZ2V9IHJlcVxuICogQHBhcmFtIHtPdXRnb2luZ01lc3NhZ2V9IHJlc1xuICogQHBhcmFtIHtudW1iZXJ9IHN0YXR1c1xuICogQHBhcmFtIHtvYmplY3R9IGhlYWRlcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlbmQgKHJlcSwgcmVzLCBzdGF0dXMsIGhlYWRlcnMsIG1lc3NhZ2UpIHtcbiAgZnVuY3Rpb24gd3JpdGUgKCkge1xuICAgIC8vIHJlc3BvbnNlIGJvZHlcbiAgICB2YXIgYm9keSA9IGNyZWF0ZUh0bWxEb2N1bWVudChtZXNzYWdlKVxuXG4gICAgLy8gcmVzcG9uc2Ugc3RhdHVzXG4gICAgcmVzLnN0YXR1c0NvZGUgPSBzdGF0dXNcbiAgICByZXMuc3RhdHVzTWVzc2FnZSA9IHN0YXR1c2VzW3N0YXR1c11cblxuICAgIC8vIHJlc3BvbnNlIGhlYWRlcnNcbiAgICBzZXRIZWFkZXJzKHJlcywgaGVhZGVycylcblxuICAgIC8vIHNlY3VyaXR5IGhlYWRlcnNcbiAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVNlY3VyaXR5LVBvbGljeScsIFwiZGVmYXVsdC1zcmMgJ3NlbGYnXCIpXG4gICAgcmVzLnNldEhlYWRlcignWC1Db250ZW50LVR5cGUtT3B0aW9ucycsICdub3NuaWZmJylcblxuICAgIC8vIHN0YW5kYXJkIGhlYWRlcnNcbiAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JylcbiAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIEJ1ZmZlci5ieXRlTGVuZ3RoKGJvZHksICd1dGY4JykpXG5cbiAgICBpZiAocmVxLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgICByZXMuZW5kKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHJlcy5lbmQoYm9keSwgJ3V0ZjgnKVxuICB9XG5cbiAgaWYgKGlzRmluaXNoZWQocmVxKSkge1xuICAgIHdyaXRlKClcbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIHVucGlwZSBldmVyeXRoaW5nIGZyb20gdGhlIHJlcXVlc3RcbiAgdW5waXBlKHJlcSlcblxuICAvLyBmbHVzaCB0aGUgcmVxdWVzdFxuICBvbkZpbmlzaGVkKHJlcSwgd3JpdGUpXG4gIHJlcS5yZXN1bWUoKVxufVxuXG4vKipcbiAqIFNldCByZXNwb25zZSBoZWFkZXJzIGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7T3V0Z29pbmdNZXNzYWdlfSByZXNcbiAqIEBwYXJhbSB7b2JqZWN0fSBoZWFkZXJzXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNldEhlYWRlcnMgKHJlcywgaGVhZGVycykge1xuICBpZiAoIWhlYWRlcnMpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoaGVhZGVycylcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV1cbiAgICByZXMuc2V0SGVhZGVyKGtleSwgaGVhZGVyc1trZXldKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZmluYWxoYW5kbGVyL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBFeHBvc2UgYHBhdGh0b1JlZ2V4cGAuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBwYXRodG9SZWdleHA7XG5cbi8qKlxuICogTWF0Y2ggbWF0Y2hpbmcgZ3JvdXBzIGluIGEgcmVndWxhciBleHByZXNzaW9uLlxuICovXG52YXIgTUFUQ0hJTkdfR1JPVVBfUkVHRVhQID0gL1xcKCg/IVxcPykvZztcblxuLyoqXG4gKiBOb3JtYWxpemUgdGhlIGdpdmVuIHBhdGggc3RyaW5nLFxuICogcmV0dXJuaW5nIGEgcmVndWxhciBleHByZXNzaW9uLlxuICpcbiAqIEFuIGVtcHR5IGFycmF5IHNob3VsZCBiZSBwYXNzZWQsXG4gKiB3aGljaCB3aWxsIGNvbnRhaW4gdGhlIHBsYWNlaG9sZGVyXG4gKiBrZXkgbmFtZXMuIEZvciBleGFtcGxlIFwiL3VzZXIvOmlkXCIgd2lsbFxuICogdGhlbiBjb250YWluIFtcImlkXCJdLlxuICpcbiAqIEBwYXJhbSAge1N0cmluZ3xSZWdFeHB8QXJyYXl9IHBhdGhcbiAqIEBwYXJhbSAge0FycmF5fSBrZXlzXG4gKiBAcGFyYW0gIHtPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge1JlZ0V4cH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhdGh0b1JlZ2V4cChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBrZXlzID0ga2V5cyB8fCBbXTtcbiAgdmFyIHN0cmljdCA9IG9wdGlvbnMuc3RyaWN0O1xuICB2YXIgZW5kID0gb3B0aW9ucy5lbmQgIT09IGZhbHNlO1xuICB2YXIgZmxhZ3MgPSBvcHRpb25zLnNlbnNpdGl2ZSA/ICcnIDogJ2knO1xuICB2YXIgZXh0cmFPZmZzZXQgPSAwO1xuICB2YXIga2V5c09mZnNldCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBuYW1lID0gMDtcbiAgdmFyIG07XG5cbiAgaWYgKHBhdGggaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICB3aGlsZSAobSA9IE1BVENISU5HX0dST1VQX1JFR0VYUC5leGVjKHBhdGguc291cmNlKSkge1xuICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgbmFtZTogbmFtZSsrLFxuICAgICAgICBvcHRpb25hbDogZmFsc2UsXG4gICAgICAgIG9mZnNldDogbS5pbmRleFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkge1xuICAgIC8vIE1hcCBhcnJheSBwYXJ0cyBpbnRvIHJlZ2V4cHMgYW5kIHJldHVybiB0aGVpciBzb3VyY2UuIFdlIGFsc28gcGFzc1xuICAgIC8vIHRoZSBzYW1lIGtleXMgYW5kIG9wdGlvbnMgaW5zdGFuY2UgaW50byBldmVyeSBnZW5lcmF0aW9uIHRvIGdldFxuICAgIC8vIGNvbnNpc3RlbnQgbWF0Y2hpbmcgZ3JvdXBzIGJlZm9yZSB3ZSBqb2luIHRoZSBzb3VyY2VzIHRvZ2V0aGVyLlxuICAgIHBhdGggPSBwYXRoLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgIHJldHVybiBwYXRodG9SZWdleHAodmFsdWUsIGtleXMsIG9wdGlvbnMpLnNvdXJjZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgUmVnRXhwKCcoPzonICsgcGF0aC5qb2luKCd8JykgKyAnKScsIGZsYWdzKTtcbiAgfVxuXG4gIHBhdGggPSAoJ14nICsgcGF0aCArIChzdHJpY3QgPyAnJyA6IHBhdGhbcGF0aC5sZW5ndGggLSAxXSA9PT0gJy8nID8gJz8nIDogJy8/JykpXG4gICAgLnJlcGxhY2UoL1xcL1xcKC9nLCAnLyg/OicpXG4gICAgLnJlcGxhY2UoLyhbXFwvXFwuXSkvZywgJ1xcXFwkMScpXG4gICAgLnJlcGxhY2UoLyhcXFxcXFwvKT8oXFxcXFxcLik/OihcXHcrKShcXCguKj9cXCkpPyhcXCopPyhcXD8pPy9nLCBmdW5jdGlvbiAobWF0Y2gsIHNsYXNoLCBmb3JtYXQsIGtleSwgY2FwdHVyZSwgc3Rhciwgb3B0aW9uYWwsIG9mZnNldCkge1xuICAgICAgc2xhc2ggPSBzbGFzaCB8fCAnJztcbiAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcbiAgICAgIGNhcHR1cmUgPSBjYXB0dXJlIHx8ICcoW15cXFxcLycgKyBmb3JtYXQgKyAnXSs/KSc7XG4gICAgICBvcHRpb25hbCA9IG9wdGlvbmFsIHx8ICcnO1xuXG4gICAgICBrZXlzLnB1c2goe1xuICAgICAgICBuYW1lOiBrZXksXG4gICAgICAgIG9wdGlvbmFsOiAhIW9wdGlvbmFsLFxuICAgICAgICBvZmZzZXQ6IG9mZnNldCArIGV4dHJhT2Zmc2V0XG4gICAgICB9KTtcblxuICAgICAgdmFyIHJlc3VsdCA9ICcnXG4gICAgICAgICsgKG9wdGlvbmFsID8gJycgOiBzbGFzaClcbiAgICAgICAgKyAnKD86J1xuICAgICAgICArIGZvcm1hdCArIChvcHRpb25hbCA/IHNsYXNoIDogJycpICsgY2FwdHVyZVxuICAgICAgICArIChzdGFyID8gJygoPzpbXFxcXC8nICsgZm9ybWF0ICsgJ10uKz8pPyknIDogJycpXG4gICAgICAgICsgJyknXG4gICAgICAgICsgb3B0aW9uYWw7XG5cbiAgICAgIGV4dHJhT2Zmc2V0ICs9IHJlc3VsdC5sZW5ndGggLSBtYXRjaC5sZW5ndGg7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSlcbiAgICAucmVwbGFjZSgvXFwqL2csIGZ1bmN0aW9uIChzdGFyLCBpbmRleCkge1xuICAgICAgdmFyIGxlbiA9IGtleXMubGVuZ3RoXG5cbiAgICAgIHdoaWxlIChsZW4tLSA+IGtleXNPZmZzZXQgJiYga2V5c1tsZW5dLm9mZnNldCA+IGluZGV4KSB7XG4gICAgICAgIGtleXNbbGVuXS5vZmZzZXQgKz0gMzsgLy8gUmVwbGFjZW1lbnQgbGVuZ3RoIG1pbnVzIGFzdGVyaXNrIGxlbmd0aC5cbiAgICAgIH1cblxuICAgICAgcmV0dXJuICcoLiopJztcbiAgICB9KTtcblxuICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgaGFuZGxpbmcgdW5uYW1lZCBtYXRjaGluZyBncm91cHMuXG4gIHdoaWxlIChtID0gTUFUQ0hJTkdfR1JPVVBfUkVHRVhQLmV4ZWMocGF0aCkpIHtcbiAgICB2YXIgZXNjYXBlQ291bnQgPSAwO1xuICAgIHZhciBpbmRleCA9IG0uaW5kZXg7XG5cbiAgICB3aGlsZSAocGF0aC5jaGFyQXQoLS1pbmRleCkgPT09ICdcXFxcJykge1xuICAgICAgZXNjYXBlQ291bnQrKztcbiAgICB9XG5cbiAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIGVzY2FwZSB0aGUgYnJhY2tldC5cbiAgICBpZiAoZXNjYXBlQ291bnQgJSAyID09PSAxKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5c09mZnNldCArIGkgPT09IGtleXMubGVuZ3RoIHx8IGtleXNba2V5c09mZnNldCArIGldLm9mZnNldCA+IG0uaW5kZXgpIHtcbiAgICAgIGtleXMuc3BsaWNlKGtleXNPZmZzZXQgKyBpLCAwLCB7XG4gICAgICAgIG5hbWU6IG5hbWUrKywgLy8gVW5uYW1lZCBtYXRjaGluZyBncm91cHMgbXVzdCBiZSBjb25zaXN0ZW50bHkgbGluZWFyLlxuICAgICAgICBvcHRpb25hbDogZmFsc2UsXG4gICAgICAgIG9mZnNldDogbS5pbmRleFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaSsrO1xuICB9XG5cbiAgLy8gSWYgdGhlIHBhdGggaXMgbm9uLWVuZGluZywgbWF0Y2ggdW50aWwgdGhlIGVuZCBvciBhIHNsYXNoLlxuICBwYXRoICs9IChlbmQgPyAnJCcgOiAocGF0aFtwYXRoLmxlbmd0aCAtIDFdID09PSAnLycgPyAnJyA6ICcoPz1cXFxcL3wkKScpKTtcblxuICByZXR1cm4gbmV3IFJlZ0V4cChwYXRoLCBmbGFncyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3BhdGgtdG8tcmVnZXhwL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxMyBSb21hbiBTaHR5bG1hblxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJ3NldHByb3RvdHlwZW9mJylcblxuLyoqXG4gKiBJbml0aWFsaXphdGlvbiBtaWRkbGV3YXJlLCBleHBvc2luZyB0aGVcbiAqIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHRvIGVhY2ggb3RoZXIsIGFzIHdlbGxcbiAqIGFzIGRlZmF1bHRpbmcgdGhlIFgtUG93ZXJlZC1CeSBoZWFkZXIgZmllbGQuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXBwXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMuaW5pdCA9IGZ1bmN0aW9uKGFwcCl7XG4gIHJldHVybiBmdW5jdGlvbiBleHByZXNzSW5pdChyZXEsIHJlcywgbmV4dCl7XG4gICAgaWYgKGFwcC5lbmFibGVkKCd4LXBvd2VyZWQtYnknKSkgcmVzLnNldEhlYWRlcignWC1Qb3dlcmVkLUJ5JywgJ0V4cHJlc3MnKTtcbiAgICByZXEucmVzID0gcmVzO1xuICAgIHJlcy5yZXEgPSByZXE7XG4gICAgcmVxLm5leHQgPSBuZXh0O1xuXG4gICAgc2V0UHJvdG90eXBlT2YocmVxLCBhcHAucmVxdWVzdClcbiAgICBzZXRQcm90b3R5cGVPZihyZXMsIGFwcC5yZXNwb25zZSlcblxuICAgIHJlcy5sb2NhbHMgPSByZXMubG9jYWxzIHx8IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICBuZXh0KCk7XG4gIH07XG59O1xuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvbWlkZGxld2FyZS9pbml0LmpzXG4vLyBtb2R1bGUgaWQgPSAxNjRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxMyBSb21hbiBTaHR5bG1hblxuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2V4cHJlc3M6dmlldycpO1xudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgZnMgPSByZXF1aXJlKCdmcycpO1xuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBkaXJuYW1lID0gcGF0aC5kaXJuYW1lO1xudmFyIGJhc2VuYW1lID0gcGF0aC5iYXNlbmFtZTtcbnZhciBleHRuYW1lID0gcGF0aC5leHRuYW1lO1xudmFyIGpvaW4gPSBwYXRoLmpvaW47XG52YXIgcmVzb2x2ZSA9IHBhdGgucmVzb2x2ZTtcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IFZpZXc7XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBhIG5ldyBgVmlld2Agd2l0aCB0aGUgZ2l2ZW4gYG5hbWVgLlxuICpcbiAqIE9wdGlvbnM6XG4gKlxuICogICAtIGBkZWZhdWx0RW5naW5lYCB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBlbmdpbmUgbmFtZVxuICogICAtIGBlbmdpbmVzYCB0ZW1wbGF0ZSBlbmdpbmUgcmVxdWlyZSgpIGNhY2hlXG4gKiAgIC0gYHJvb3RgIHJvb3QgcGF0aCBmb3IgdmlldyBsb29rdXBcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBWaWV3KG5hbWUsIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIHRoaXMuZGVmYXVsdEVuZ2luZSA9IG9wdHMuZGVmYXVsdEVuZ2luZTtcbiAgdGhpcy5leHQgPSBleHRuYW1lKG5hbWUpO1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLnJvb3QgPSBvcHRzLnJvb3Q7XG5cbiAgaWYgKCF0aGlzLmV4dCAmJiAhdGhpcy5kZWZhdWx0RW5naW5lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBkZWZhdWx0IGVuZ2luZSB3YXMgc3BlY2lmaWVkIGFuZCBubyBleHRlbnNpb24gd2FzIHByb3ZpZGVkLicpO1xuICB9XG5cbiAgdmFyIGZpbGVOYW1lID0gbmFtZTtcblxuICBpZiAoIXRoaXMuZXh0KSB7XG4gICAgLy8gZ2V0IGV4dGVuc2lvbiBmcm9tIGRlZmF1bHQgZW5naW5lIG5hbWVcbiAgICB0aGlzLmV4dCA9IHRoaXMuZGVmYXVsdEVuZ2luZVswXSAhPT0gJy4nXG4gICAgICA/ICcuJyArIHRoaXMuZGVmYXVsdEVuZ2luZVxuICAgICAgOiB0aGlzLmRlZmF1bHRFbmdpbmU7XG5cbiAgICBmaWxlTmFtZSArPSB0aGlzLmV4dDtcbiAgfVxuXG4gIGlmICghb3B0cy5lbmdpbmVzW3RoaXMuZXh0XSkge1xuICAgIC8vIGxvYWQgZW5naW5lXG4gICAgdmFyIG1vZCA9IHRoaXMuZXh0LnN1YnN0cigxKVxuICAgIGRlYnVnKCdyZXF1aXJlIFwiJXNcIicsIG1vZClcblxuICAgIC8vIGRlZmF1bHQgZW5naW5lIGV4cG9ydFxuICAgIHZhciBmbiA9IHJlcXVpcmUobW9kKS5fX2V4cHJlc3NcblxuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTW9kdWxlIFwiJyArIG1vZCArICdcIiBkb2VzIG5vdCBwcm92aWRlIGEgdmlldyBlbmdpbmUuJylcbiAgICB9XG5cbiAgICBvcHRzLmVuZ2luZXNbdGhpcy5leHRdID0gZm5cbiAgfVxuXG4gIC8vIHN0b3JlIGxvYWRlZCBlbmdpbmVcbiAgdGhpcy5lbmdpbmUgPSBvcHRzLmVuZ2luZXNbdGhpcy5leHRdO1xuXG4gIC8vIGxvb2t1cCBwYXRoXG4gIHRoaXMucGF0aCA9IHRoaXMubG9va3VwKGZpbGVOYW1lKTtcbn1cblxuLyoqXG4gKiBMb29rdXAgdmlldyBieSB0aGUgZ2l2ZW4gYG5hbWVgXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwcml2YXRlXG4gKi9cblxuVmlldy5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24gbG9va3VwKG5hbWUpIHtcbiAgdmFyIHBhdGg7XG4gIHZhciByb290cyA9IFtdLmNvbmNhdCh0aGlzLnJvb3QpO1xuXG4gIGRlYnVnKCdsb29rdXAgXCIlc1wiJywgbmFtZSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByb290cy5sZW5ndGggJiYgIXBhdGg7IGkrKykge1xuICAgIHZhciByb290ID0gcm9vdHNbaV07XG5cbiAgICAvLyByZXNvbHZlIHRoZSBwYXRoXG4gICAgdmFyIGxvYyA9IHJlc29sdmUocm9vdCwgbmFtZSk7XG4gICAgdmFyIGRpciA9IGRpcm5hbWUobG9jKTtcbiAgICB2YXIgZmlsZSA9IGJhc2VuYW1lKGxvYyk7XG5cbiAgICAvLyByZXNvbHZlIHRoZSBmaWxlXG4gICAgcGF0aCA9IHRoaXMucmVzb2x2ZShkaXIsIGZpbGUpO1xuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59O1xuXG4vKipcbiAqIFJlbmRlciB3aXRoIHRoZSBnaXZlbiBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHByaXZhdGVcbiAqL1xuXG5WaWV3LnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgZGVidWcoJ3JlbmRlciBcIiVzXCInLCB0aGlzLnBhdGgpO1xuICB0aGlzLmVuZ2luZSh0aGlzLnBhdGgsIG9wdGlvbnMsIGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZmlsZSB3aXRoaW4gdGhlIGdpdmVuIGRpcmVjdG9yeS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlyXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZVxuICogQHByaXZhdGVcbiAqL1xuXG5WaWV3LnByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZShkaXIsIGZpbGUpIHtcbiAgdmFyIGV4dCA9IHRoaXMuZXh0O1xuXG4gIC8vIDxwYXRoPi48ZXh0PlxuICB2YXIgcGF0aCA9IGpvaW4oZGlyLCBmaWxlKTtcbiAgdmFyIHN0YXQgPSB0cnlTdGF0KHBhdGgpO1xuXG4gIGlmIChzdGF0ICYmIHN0YXQuaXNGaWxlKCkpIHtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIC8vIDxwYXRoPi9pbmRleC48ZXh0PlxuICBwYXRoID0gam9pbihkaXIsIGJhc2VuYW1lKGZpbGUsIGV4dCksICdpbmRleCcgKyBleHQpO1xuICBzdGF0ID0gdHJ5U3RhdChwYXRoKTtcblxuICBpZiAoc3RhdCAmJiBzdGF0LmlzRmlsZSgpKSB7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJuIGEgc3RhdCwgbWF5YmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm4ge2ZzLlN0YXRzfVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiB0cnlTdGF0KHBhdGgpIHtcbiAgZGVidWcoJ3N0YXQgXCIlc1wiJywgcGF0aCk7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gZnMuc3RhdFN5bmMocGF0aCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvdmlldy5qc1xuLy8gbW9kdWxlIGlkID0gMTY1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImZ1bmN0aW9uIHdlYnBhY2tFbXB0eUNvbnRleHQocmVxKSB7XG5cdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIicuXCIpO1xufVxud2VicGFja0VtcHR5Q29udGV4dC5rZXlzID0gZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfTtcbndlYnBhY2tFbXB0eUNvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tFbXB0eUNvbnRleHQ7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tFbXB0eUNvbnRleHQ7XG53ZWJwYWNrRW1wdHlDb250ZXh0LmlkID0gMTY2O1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYlxuLy8gbW9kdWxlIGlkID0gMTY2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZGVzdHJveVxuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgUmVhZFN0cmVhbSA9IHJlcXVpcmUoJ2ZzJykuUmVhZFN0cmVhbVxudmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXN0cm95XG5cbi8qKlxuICogRGVzdHJveSBhIHN0cmVhbS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gc3RyZWFtXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVzdHJveShzdHJlYW0pIHtcbiAgaWYgKHN0cmVhbSBpbnN0YW5jZW9mIFJlYWRTdHJlYW0pIHtcbiAgICByZXR1cm4gZGVzdHJveVJlYWRTdHJlYW0oc3RyZWFtKVxuICB9XG5cbiAgaWYgKCEoc3RyZWFtIGluc3RhbmNlb2YgU3RyZWFtKSkge1xuICAgIHJldHVybiBzdHJlYW1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3RyZWFtLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzdHJlYW0uZGVzdHJveSgpXG4gIH1cblxuICByZXR1cm4gc3RyZWFtXG59XG5cbi8qKlxuICogRGVzdHJveSBhIFJlYWRTdHJlYW0uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHN0cmVhbVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBkZXN0cm95UmVhZFN0cmVhbShzdHJlYW0pIHtcbiAgc3RyZWFtLmRlc3Ryb3koKVxuXG4gIGlmICh0eXBlb2Ygc3RyZWFtLmNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gbm9kZS5qcyBjb3JlIGJ1ZyB3b3JrLWFyb3VuZFxuICAgIHN0cmVhbS5vbignb3BlbicsIG9uT3BlbkNsb3NlKVxuICB9XG5cbiAgcmV0dXJuIHN0cmVhbVxufVxuXG4vKipcbiAqIE9uIG9wZW4gaGFuZGxlciB0byBjbG9zZSBzdHJlYW0uXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIG9uT3BlbkNsb3NlKCkge1xuICBpZiAodHlwZW9mIHRoaXMuZmQgPT09ICdudW1iZXInKSB7XG4gICAgLy8gYWN0dWFsbHkgY2xvc2UgZG93biB0aGUgZmRcbiAgICB0aGlzLmNsb3NlKClcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2Rlc3Ryb3kvaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDE2N1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbmZ1bmN0aW9uIE1pbWUoKSB7XG4gIC8vIE1hcCBvZiBleHRlbnNpb24gLT4gbWltZSB0eXBlXG4gIHRoaXMudHlwZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIC8vIE1hcCBvZiBtaW1lIHR5cGUgLT4gZXh0ZW5zaW9uXG4gIHRoaXMuZXh0ZW5zaW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG59XG5cbi8qKlxuICogRGVmaW5lIG1pbWV0eXBlIC0+IGV4dGVuc2lvbiBtYXBwaW5ncy4gIEVhY2gga2V5IGlzIGEgbWltZS10eXBlIHRoYXQgbWFwc1xuICogdG8gYW4gYXJyYXkgb2YgZXh0ZW5zaW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHR5cGUuICBUaGUgZmlyc3QgZXh0ZW5zaW9uIGlzXG4gKiB1c2VkIGFzIHRoZSBkZWZhdWx0IGV4dGVuc2lvbiBmb3IgdGhlIHR5cGUuXG4gKlxuICogZS5nLiBtaW1lLmRlZmluZSh7J2F1ZGlvL29nZycsIFsnb2dhJywgJ29nZycsICdzcHgnXX0pO1xuICpcbiAqIEBwYXJhbSBtYXAgKE9iamVjdCkgdHlwZSBkZWZpbml0aW9uc1xuICovXG5NaW1lLnByb3RvdHlwZS5kZWZpbmUgPSBmdW5jdGlvbiAobWFwKSB7XG4gIGZvciAodmFyIHR5cGUgaW4gbWFwKSB7XG4gICAgdmFyIGV4dHMgPSBtYXBbdHlwZV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuREVCVUdfTUlNRSAmJiB0aGlzLnR5cGVzW2V4dHNbaV1dKSB7XG4gICAgICAgIGNvbnNvbGUud2FybigodGhpcy5fbG9hZGluZyB8fCBcImRlZmluZSgpXCIpLnJlcGxhY2UoLy4qXFwvLywgJycpLCAnY2hhbmdlcyBcIicgKyBleHRzW2ldICsgJ1wiIGV4dGVuc2lvbiB0eXBlIGZyb20gJyArXG4gICAgICAgICAgdGhpcy50eXBlc1tleHRzW2ldXSArICcgdG8gJyArIHR5cGUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnR5cGVzW2V4dHNbaV1dID0gdHlwZTtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IGV4dGVuc2lvbiBpcyB0aGUgZmlyc3Qgb25lIHdlIGVuY291bnRlclxuICAgIGlmICghdGhpcy5leHRlbnNpb25zW3R5cGVdKSB7XG4gICAgICB0aGlzLmV4dGVuc2lvbnNbdHlwZV0gPSBleHRzWzBdO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMb2FkIGFuIEFwYWNoZTItc3R5bGUgXCIudHlwZXNcIiBmaWxlXG4gKlxuICogVGhpcyBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIChpdCdzIGV4cGVjdGVkKS4gIFdoZXJlIGZpbGVzIGRlY2xhcmVcbiAqIG92ZXJsYXBwaW5nIHR5cGVzL2V4dGVuc2lvbnMsIHRoZSBsYXN0IGZpbGUgd2lucy5cbiAqXG4gKiBAcGFyYW0gZmlsZSAoU3RyaW5nKSBwYXRoIG9mIGZpbGUgdG8gbG9hZC5cbiAqL1xuTWltZS5wcm90b3R5cGUubG9hZCA9IGZ1bmN0aW9uKGZpbGUpIHtcbiAgdGhpcy5fbG9hZGluZyA9IGZpbGU7XG4gIC8vIFJlYWQgZmlsZSBhbmQgc3BsaXQgaW50byBsaW5lc1xuICB2YXIgbWFwID0ge30sXG4gICAgICBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGUsICdhc2NpaScpLFxuICAgICAgbGluZXMgPSBjb250ZW50LnNwbGl0KC9bXFxyXFxuXSsvKTtcblxuICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAvLyBDbGVhbiB1cCB3aGl0ZXNwYWNlL2NvbW1lbnRzLCBhbmQgc3BsaXQgaW50byBmaWVsZHNcbiAgICB2YXIgZmllbGRzID0gbGluZS5yZXBsYWNlKC9cXHMqIy4qfF5cXHMqfFxccyokL2csICcnKS5zcGxpdCgvXFxzKy8pO1xuICAgIG1hcFtmaWVsZHMuc2hpZnQoKV0gPSBmaWVsZHM7XG4gIH0pO1xuXG4gIHRoaXMuZGVmaW5lKG1hcCk7XG5cbiAgdGhpcy5fbG9hZGluZyA9IG51bGw7XG59O1xuXG4vKipcbiAqIExvb2t1cCBhIG1pbWUgdHlwZSBiYXNlZCBvbiBleHRlbnNpb25cbiAqL1xuTWltZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24ocGF0aCwgZmFsbGJhY2spIHtcbiAgdmFyIGV4dCA9IHBhdGgucmVwbGFjZSgvXi4qW1xcLlxcL1xcXFxdLywgJycpLnRvTG93ZXJDYXNlKCk7XG5cbiAgcmV0dXJuIHRoaXMudHlwZXNbZXh0XSB8fCBmYWxsYmFjayB8fCB0aGlzLmRlZmF1bHRfdHlwZTtcbn07XG5cbi8qKlxuICogUmV0dXJuIGZpbGUgZXh0ZW5zaW9uIGFzc29jaWF0ZWQgd2l0aCBhIG1pbWUgdHlwZVxuICovXG5NaW1lLnByb3RvdHlwZS5leHRlbnNpb24gPSBmdW5jdGlvbihtaW1lVHlwZSkge1xuICB2YXIgdHlwZSA9IG1pbWVUeXBlLm1hdGNoKC9eXFxzKihbXjtcXHNdKikoPzo7fFxcc3wkKS8pWzFdLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiB0aGlzLmV4dGVuc2lvbnNbdHlwZV07XG59O1xuXG4vLyBEZWZhdWx0IGluc3RhbmNlXG52YXIgbWltZSA9IG5ldyBNaW1lKCk7XG5cbi8vIERlZmluZSBidWlsdC1pbiB0eXBlc1xubWltZS5kZWZpbmUocmVxdWlyZSgnLi90eXBlcy5qc29uJykpO1xuXG4vLyBEZWZhdWx0IHR5cGVcbm1pbWUuZGVmYXVsdF90eXBlID0gbWltZS5sb29rdXAoJ2JpbicpO1xuXG4vL1xuLy8gQWRkaXRpb25hbCBBUEkgc3BlY2lmaWMgdG8gdGhlIGRlZmF1bHQgaW5zdGFuY2Vcbi8vXG5cbm1pbWUuTWltZSA9IE1pbWU7XG5cbi8qKlxuICogTG9va3VwIGEgY2hhcnNldCBiYXNlZCBvbiBtaW1lIHR5cGUuXG4gKi9cbm1pbWUuY2hhcnNldHMgPSB7XG4gIGxvb2t1cDogZnVuY3Rpb24obWltZVR5cGUsIGZhbGxiYWNrKSB7XG4gICAgLy8gQXNzdW1lIHRleHQgdHlwZXMgYXJlIHV0ZjhcbiAgICByZXR1cm4gKC9edGV4dFxcL3xeYXBwbGljYXRpb25cXC8oamF2YXNjcmlwdHxqc29uKS8pLnRlc3QobWltZVR5cGUpID8gJ1VURi04JyA6IGZhbGxiYWNrO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbWU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbWltZS9taW1lLmpzXG4vLyBtb2R1bGUgaWQgPSAxNjhcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSB7XCJhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXRcIjpbXCJlelwiXSxcImFwcGxpY2F0aW9uL2FwcGxpeHdhcmVcIjpbXCJhd1wiXSxcImFwcGxpY2F0aW9uL2F0b20reG1sXCI6W1wiYXRvbVwiXSxcImFwcGxpY2F0aW9uL2F0b21jYXQreG1sXCI6W1wiYXRvbWNhdFwiXSxcImFwcGxpY2F0aW9uL2F0b21zdmMreG1sXCI6W1wiYXRvbXN2Y1wiXSxcImFwcGxpY2F0aW9uL2Jkb2NcIjpbXCJiZG9jXCJdLFwiYXBwbGljYXRpb24vY2N4bWwreG1sXCI6W1wiY2N4bWxcIl0sXCJhcHBsaWNhdGlvbi9jZG1pLWNhcGFiaWxpdHlcIjpbXCJjZG1pYVwiXSxcImFwcGxpY2F0aW9uL2NkbWktY29udGFpbmVyXCI6W1wiY2RtaWNcIl0sXCJhcHBsaWNhdGlvbi9jZG1pLWRvbWFpblwiOltcImNkbWlkXCJdLFwiYXBwbGljYXRpb24vY2RtaS1vYmplY3RcIjpbXCJjZG1pb1wiXSxcImFwcGxpY2F0aW9uL2NkbWktcXVldWVcIjpbXCJjZG1pcVwiXSxcImFwcGxpY2F0aW9uL2N1LXNlZW1lXCI6W1wiY3VcIl0sXCJhcHBsaWNhdGlvbi9kYXNoK3htbFwiOltcIm1wZFwiXSxcImFwcGxpY2F0aW9uL2Rhdm1vdW50K3htbFwiOltcImRhdm1vdW50XCJdLFwiYXBwbGljYXRpb24vZG9jYm9vayt4bWxcIjpbXCJkYmtcIl0sXCJhcHBsaWNhdGlvbi9kc3NjK2RlclwiOltcImRzc2NcIl0sXCJhcHBsaWNhdGlvbi9kc3NjK3htbFwiOltcInhkc3NjXCJdLFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdFwiOltcImVjbWFcIl0sXCJhcHBsaWNhdGlvbi9lbW1hK3htbFwiOltcImVtbWFcIl0sXCJhcHBsaWNhdGlvbi9lcHViK3ppcFwiOltcImVwdWJcIl0sXCJhcHBsaWNhdGlvbi9leGlcIjpbXCJleGlcIl0sXCJhcHBsaWNhdGlvbi9mb250LXRkcGZyXCI6W1wicGZyXCJdLFwiYXBwbGljYXRpb24vZm9udC13b2ZmXCI6W1wid29mZlwiXSxcImFwcGxpY2F0aW9uL2ZvbnQtd29mZjJcIjpbXCJ3b2ZmMlwiXSxcImFwcGxpY2F0aW9uL2dlbytqc29uXCI6W1wiZ2VvanNvblwiXSxcImFwcGxpY2F0aW9uL2dtbCt4bWxcIjpbXCJnbWxcIl0sXCJhcHBsaWNhdGlvbi9ncHgreG1sXCI6W1wiZ3B4XCJdLFwiYXBwbGljYXRpb24vZ3hmXCI6W1wiZ3hmXCJdLFwiYXBwbGljYXRpb24vZ3ppcFwiOltcImd6XCJdLFwiYXBwbGljYXRpb24vaHlwZXJzdHVkaW9cIjpbXCJzdGtcIl0sXCJhcHBsaWNhdGlvbi9pbmttbCt4bWxcIjpbXCJpbmtcIixcImlua21sXCJdLFwiYXBwbGljYXRpb24vaXBmaXhcIjpbXCJpcGZpeFwiXSxcImFwcGxpY2F0aW9uL2phdmEtYXJjaGl2ZVwiOltcImphclwiLFwid2FyXCIsXCJlYXJcIl0sXCJhcHBsaWNhdGlvbi9qYXZhLXNlcmlhbGl6ZWQtb2JqZWN0XCI6W1wic2VyXCJdLFwiYXBwbGljYXRpb24vamF2YS12bVwiOltcImNsYXNzXCJdLFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiOltcImpzXCIsXCJtanNcIl0sXCJhcHBsaWNhdGlvbi9qc29uXCI6W1wianNvblwiLFwibWFwXCJdLFwiYXBwbGljYXRpb24vanNvbjVcIjpbXCJqc29uNVwiXSxcImFwcGxpY2F0aW9uL2pzb25tbCtqc29uXCI6W1wianNvbm1sXCJdLFwiYXBwbGljYXRpb24vbGQranNvblwiOltcImpzb25sZFwiXSxcImFwcGxpY2F0aW9uL2xvc3QreG1sXCI6W1wibG9zdHhtbFwiXSxcImFwcGxpY2F0aW9uL21hYy1iaW5oZXg0MFwiOltcImhxeFwiXSxcImFwcGxpY2F0aW9uL21hYy1jb21wYWN0cHJvXCI6W1wiY3B0XCJdLFwiYXBwbGljYXRpb24vbWFkcyt4bWxcIjpbXCJtYWRzXCJdLFwiYXBwbGljYXRpb24vbWFuaWZlc3QranNvblwiOltcIndlYm1hbmlmZXN0XCJdLFwiYXBwbGljYXRpb24vbWFyY1wiOltcIm1yY1wiXSxcImFwcGxpY2F0aW9uL21hcmN4bWwreG1sXCI6W1wibXJjeFwiXSxcImFwcGxpY2F0aW9uL21hdGhlbWF0aWNhXCI6W1wibWFcIixcIm5iXCIsXCJtYlwiXSxcImFwcGxpY2F0aW9uL21hdGhtbCt4bWxcIjpbXCJtYXRobWxcIl0sXCJhcHBsaWNhdGlvbi9tYm94XCI6W1wibWJveFwiXSxcImFwcGxpY2F0aW9uL21lZGlhc2VydmVyY29udHJvbCt4bWxcIjpbXCJtc2NtbFwiXSxcImFwcGxpY2F0aW9uL21ldGFsaW5rK3htbFwiOltcIm1ldGFsaW5rXCJdLFwiYXBwbGljYXRpb24vbWV0YWxpbms0K3htbFwiOltcIm1ldGE0XCJdLFwiYXBwbGljYXRpb24vbWV0cyt4bWxcIjpbXCJtZXRzXCJdLFwiYXBwbGljYXRpb24vbW9kcyt4bWxcIjpbXCJtb2RzXCJdLFwiYXBwbGljYXRpb24vbXAyMVwiOltcIm0yMVwiLFwibXAyMVwiXSxcImFwcGxpY2F0aW9uL21wNFwiOltcIm1wNHNcIixcIm00cFwiXSxcImFwcGxpY2F0aW9uL21zd29yZFwiOltcImRvY1wiLFwiZG90XCJdLFwiYXBwbGljYXRpb24vbXhmXCI6W1wibXhmXCJdLFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI6W1wiYmluXCIsXCJkbXNcIixcImxyZlwiLFwibWFyXCIsXCJzb1wiLFwiZGlzdFwiLFwiZGlzdHpcIixcInBrZ1wiLFwiYnBrXCIsXCJkdW1wXCIsXCJlbGNcIixcImRlcGxveVwiLFwiZXhlXCIsXCJkbGxcIixcImRlYlwiLFwiZG1nXCIsXCJpc29cIixcImltZ1wiLFwibXNpXCIsXCJtc3BcIixcIm1zbVwiLFwiYnVmZmVyXCJdLFwiYXBwbGljYXRpb24vb2RhXCI6W1wib2RhXCJdLFwiYXBwbGljYXRpb24vb2VicHMtcGFja2FnZSt4bWxcIjpbXCJvcGZcIl0sXCJhcHBsaWNhdGlvbi9vZ2dcIjpbXCJvZ3hcIl0sXCJhcHBsaWNhdGlvbi9vbWRvYyt4bWxcIjpbXCJvbWRvY1wiXSxcImFwcGxpY2F0aW9uL29uZW5vdGVcIjpbXCJvbmV0b2NcIixcIm9uZXRvYzJcIixcIm9uZXRtcFwiLFwib25lcGtnXCJdLFwiYXBwbGljYXRpb24vb3hwc1wiOltcIm94cHNcIl0sXCJhcHBsaWNhdGlvbi9wYXRjaC1vcHMtZXJyb3IreG1sXCI6W1wieGVyXCJdLFwiYXBwbGljYXRpb24vcGRmXCI6W1wicGRmXCJdLFwiYXBwbGljYXRpb24vcGdwLWVuY3J5cHRlZFwiOltcInBncFwiXSxcImFwcGxpY2F0aW9uL3BncC1zaWduYXR1cmVcIjpbXCJhc2NcIixcInNpZ1wiXSxcImFwcGxpY2F0aW9uL3BpY3MtcnVsZXNcIjpbXCJwcmZcIl0sXCJhcHBsaWNhdGlvbi9wa2NzMTBcIjpbXCJwMTBcIl0sXCJhcHBsaWNhdGlvbi9wa2NzNy1taW1lXCI6W1wicDdtXCIsXCJwN2NcIl0sXCJhcHBsaWNhdGlvbi9wa2NzNy1zaWduYXR1cmVcIjpbXCJwN3NcIl0sXCJhcHBsaWNhdGlvbi9wa2NzOFwiOltcInA4XCJdLFwiYXBwbGljYXRpb24vcGtpeC1hdHRyLWNlcnRcIjpbXCJhY1wiXSxcImFwcGxpY2F0aW9uL3BraXgtY2VydFwiOltcImNlclwiXSxcImFwcGxpY2F0aW9uL3BraXgtY3JsXCI6W1wiY3JsXCJdLFwiYXBwbGljYXRpb24vcGtpeC1wa2lwYXRoXCI6W1wicGtpcGF0aFwiXSxcImFwcGxpY2F0aW9uL3BraXhjbXBcIjpbXCJwa2lcIl0sXCJhcHBsaWNhdGlvbi9wbHMreG1sXCI6W1wicGxzXCJdLFwiYXBwbGljYXRpb24vcG9zdHNjcmlwdFwiOltcImFpXCIsXCJlcHNcIixcInBzXCJdLFwiYXBwbGljYXRpb24vcHJzLmN3d1wiOltcImN3d1wiXSxcImFwcGxpY2F0aW9uL3Bza2MreG1sXCI6W1wicHNrY3htbFwiXSxcImFwcGxpY2F0aW9uL3JkZit4bWxcIjpbXCJyZGZcIl0sXCJhcHBsaWNhdGlvbi9yZWdpbmZvK3htbFwiOltcInJpZlwiXSxcImFwcGxpY2F0aW9uL3JlbGF4LW5nLWNvbXBhY3Qtc3ludGF4XCI6W1wicm5jXCJdLFwiYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMreG1sXCI6W1wicmxcIl0sXCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cy1kaWZmK3htbFwiOltcInJsZFwiXSxcImFwcGxpY2F0aW9uL3Jscy1zZXJ2aWNlcyt4bWxcIjpbXCJyc1wiXSxcImFwcGxpY2F0aW9uL3Jwa2ktZ2hvc3RidXN0ZXJzXCI6W1wiZ2JyXCJdLFwiYXBwbGljYXRpb24vcnBraS1tYW5pZmVzdFwiOltcIm1mdFwiXSxcImFwcGxpY2F0aW9uL3Jwa2ktcm9hXCI6W1wicm9hXCJdLFwiYXBwbGljYXRpb24vcnNkK3htbFwiOltcInJzZFwiXSxcImFwcGxpY2F0aW9uL3Jzcyt4bWxcIjpbXCJyc3NcIl0sXCJhcHBsaWNhdGlvbi9ydGZcIjpbXCJydGZcIl0sXCJhcHBsaWNhdGlvbi9zYm1sK3htbFwiOltcInNibWxcIl0sXCJhcHBsaWNhdGlvbi9zY3ZwLWN2LXJlcXVlc3RcIjpbXCJzY3FcIl0sXCJhcHBsaWNhdGlvbi9zY3ZwLWN2LXJlc3BvbnNlXCI6W1wic2NzXCJdLFwiYXBwbGljYXRpb24vc2N2cC12cC1yZXF1ZXN0XCI6W1wic3BxXCJdLFwiYXBwbGljYXRpb24vc2N2cC12cC1yZXNwb25zZVwiOltcInNwcFwiXSxcImFwcGxpY2F0aW9uL3NkcFwiOltcInNkcFwiXSxcImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb25cIjpbXCJzZXRwYXlcIl0sXCJhcHBsaWNhdGlvbi9zZXQtcmVnaXN0cmF0aW9uLWluaXRpYXRpb25cIjpbXCJzZXRyZWdcIl0sXCJhcHBsaWNhdGlvbi9zaGYreG1sXCI6W1wic2hmXCJdLFwiYXBwbGljYXRpb24vc21pbCt4bWxcIjpbXCJzbWlcIixcInNtaWxcIl0sXCJhcHBsaWNhdGlvbi9zcGFycWwtcXVlcnlcIjpbXCJycVwiXSxcImFwcGxpY2F0aW9uL3NwYXJxbC1yZXN1bHRzK3htbFwiOltcInNyeFwiXSxcImFwcGxpY2F0aW9uL3NyZ3NcIjpbXCJncmFtXCJdLFwiYXBwbGljYXRpb24vc3Jncyt4bWxcIjpbXCJncnhtbFwiXSxcImFwcGxpY2F0aW9uL3NydSt4bWxcIjpbXCJzcnVcIl0sXCJhcHBsaWNhdGlvbi9zc2RsK3htbFwiOltcInNzZGxcIl0sXCJhcHBsaWNhdGlvbi9zc21sK3htbFwiOltcInNzbWxcIl0sXCJhcHBsaWNhdGlvbi90ZWkreG1sXCI6W1widGVpXCIsXCJ0ZWljb3JwdXNcIl0sXCJhcHBsaWNhdGlvbi90aHJhdWQreG1sXCI6W1widGZpXCJdLFwiYXBwbGljYXRpb24vdGltZXN0YW1wZWQtZGF0YVwiOltcInRzZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy1sYXJnZVwiOltcInBsYlwiXSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy1zbWFsbFwiOltcInBzYlwiXSxcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnBpYy1idy12YXJcIjpbXCJwdmJcIl0sXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIudGNhcFwiOltcInRjYXBcIl0sXCJhcHBsaWNhdGlvbi92bmQuM20ucG9zdC1pdC1ub3Rlc1wiOltcInB3blwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hY2NwYWMuc2ltcGx5LmFzb1wiOltcImFzb1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5hY2NwYWMuc2ltcGx5LmltcFwiOltcImltcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hY3Vjb2JvbFwiOltcImFjdVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hY3Vjb3JwXCI6W1wiYXRjXCIsXCJhY3V0Y1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5haXItYXBwbGljYXRpb24taW5zdGFsbGVyLXBhY2thZ2UremlwXCI6W1wiYWlyXCJdLFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZvcm1zY2VudHJhbC5mY2R0XCI6W1wiZmNkdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5meHBcIjpbXCJmeHBcIixcImZ4cGxcIl0sXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGRwK3htbFwiOltcInhkcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZmRmXCI6W1wieGZkZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5haGVhZC5zcGFjZVwiOltcImFoZWFkXCJdLFwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6ZlwiOltcImF6ZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5haXJ6aXAuZmlsZXNlY3VyZS5henNcIjpbXCJhenNcIl0sXCJhcHBsaWNhdGlvbi92bmQuYW1hem9uLmVib29rXCI6W1wiYXp3XCJdLFwiYXBwbGljYXRpb24vdm5kLmFtZXJpY2FuZHluYW1pY3MuYWNjXCI6W1wiYWNjXCJdLFwiYXBwbGljYXRpb24vdm5kLmFtaWdhLmFtaVwiOltcImFtaVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZVwiOltcImFwa1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5hbnNlci13ZWItY2VydGlmaWNhdGUtaXNzdWUtaW5pdGlhdGlvblwiOltcImNpaVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hbnNlci13ZWItZnVuZHMtdHJhbnNmZXItaW5pdGlhdGlvblwiOltcImZ0aVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hbnRpeC5nYW1lLWNvbXBvbmVudFwiOltcImF0eFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5pbnN0YWxsZXIreG1sXCI6W1wibXBrZ1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsXCI6W1wibTN1OFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5wa3Bhc3NcIjpbXCJwa3Bhc3NcIl0sXCJhcHBsaWNhdGlvbi92bmQuYXJpc3RhbmV0d29ya3Muc3dpXCI6W1wic3dpXCJdLFwiYXBwbGljYXRpb24vdm5kLmFzdHJhZWEtc29mdHdhcmUuaW90YVwiOltcImlvdGFcIl0sXCJhcHBsaWNhdGlvbi92bmQuYXVkaW9ncmFwaFwiOltcImFlcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ibHVlaWNlLm11bHRpcGFzc1wiOltcIm1wbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ibWlcIjpbXCJibWlcIl0sXCJhcHBsaWNhdGlvbi92bmQuYnVzaW5lc3NvYmplY3RzXCI6W1wicmVwXCJdLFwiYXBwbGljYXRpb24vdm5kLmNoZW1kcmF3K3htbFwiOltcImNkeG1sXCJdLFwiYXBwbGljYXRpb24vdm5kLmNoaXBudXRzLmthcmFva2UtbW1kXCI6W1wibW1kXCJdLFwiYXBwbGljYXRpb24vdm5kLmNpbmRlcmVsbGFcIjpbXCJjZHlcIl0sXCJhcHBsaWNhdGlvbi92bmQuY2xheW1vcmVcIjpbXCJjbGFcIl0sXCJhcHBsaWNhdGlvbi92bmQuY2xvYW50by5ycDlcIjpbXCJycDlcIl0sXCJhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cFwiOltcImM0Z1wiLFwiYzRkXCIsXCJjNGZcIixcImM0cFwiLFwiYzR1XCJdLFwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWdcIjpbXCJjMTFhbWNcIl0sXCJhcHBsaWNhdGlvbi92bmQuY2x1ZXRydXN0LmNhcnRvbW9iaWxlLWNvbmZpZy1wa2dcIjpbXCJjMTFhbXpcIl0sXCJhcHBsaWNhdGlvbi92bmQuY29tbW9uc3BhY2VcIjpbXCJjc3BcIl0sXCJhcHBsaWNhdGlvbi92bmQuY29udGFjdC5jbXNnXCI6W1wiY2RiY21zZ1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5jb3Ntb2NhbGxlclwiOltcImNtY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyXCI6W1wiY2xreFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLmtleWJvYXJkXCI6W1wiY2xra1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnBhbGV0dGVcIjpbXCJjbGtwXCJdLFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIudGVtcGxhdGVcIjpbXCJjbGt0XCJdLFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIud29yZGJhbmtcIjpbXCJjbGt3XCJdLFwiYXBwbGljYXRpb24vdm5kLmNyaXRpY2FsdG9vbHMud2JzK3htbFwiOltcIndic1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5jdGMtcG9zbWxcIjpbXCJwbWxcIl0sXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1wcGRcIjpbXCJwcGRcIl0sXCJhcHBsaWNhdGlvbi92bmQuY3VybC5jYXJcIjpbXCJjYXJcIl0sXCJhcHBsaWNhdGlvbi92bmQuY3VybC5wY3VybFwiOltcInBjdXJsXCJdLFwiYXBwbGljYXRpb24vdm5kLmRhcnRcIjpbXCJkYXJ0XCJdLFwiYXBwbGljYXRpb24vdm5kLmRhdGEtdmlzaW9uLnJkelwiOltcInJkelwiXSxcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGFcIjpbXCJ1dmZcIixcInV2dmZcIixcInV2ZFwiLFwidXZ2ZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnR0bWwreG1sXCI6W1widXZ0XCIsXCJ1dnZ0XCJdLFwiYXBwbGljYXRpb24vdm5kLmRlY2UudW5zcGVjaWZpZWRcIjpbXCJ1dnhcIixcInV2dnhcIl0sXCJhcHBsaWNhdGlvbi92bmQuZGVjZS56aXBcIjpbXCJ1dnpcIixcInV2dnpcIl0sXCJhcHBsaWNhdGlvbi92bmQuZGVub3ZvLmZjc2VsYXlvdXQtbGlua1wiOltcImZlX2xhdW5jaFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5kbmFcIjpbXCJkbmFcIl0sXCJhcHBsaWNhdGlvbi92bmQuZG9sYnkubWxwXCI6W1wibWxwXCJdLFwiYXBwbGljYXRpb24vdm5kLmRwZ3JhcGhcIjpbXCJkcGdcIl0sXCJhcHBsaWNhdGlvbi92bmQuZHJlYW1mYWN0b3J5XCI6W1wiZGZhY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5kcy1rZXlwb2ludFwiOltcImtweHhcIl0sXCJhcHBsaWNhdGlvbi92bmQuZHZiLmFpdFwiOltcImFpdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5kdmIuc2VydmljZVwiOltcInN2Y1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5keW5hZ2VvXCI6W1wiZ2VvXCJdLFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5jaGFydFwiOltcIm1hZ1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5lbmxpdmVuXCI6W1wibm1sXCJdLFwiYXBwbGljYXRpb24vdm5kLmVwc29uLmVzZlwiOltcImVzZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5tc2ZcIjpbXCJtc2ZcIl0sXCJhcHBsaWNhdGlvbi92bmQuZXBzb24ucXVpY2thbmltZVwiOltcInFhbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5zYWx0XCI6W1wic2x0XCJdLFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnNzZlwiOltcInNzZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5lc3ppZ25vMyt4bWxcIjpbXCJlczNcIixcImV0M1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5lenBpeC1hbGJ1bVwiOltcImV6MlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5lenBpeC1wYWNrYWdlXCI6W1wiZXozXCJdLFwiYXBwbGljYXRpb24vdm5kLmZkZlwiOltcImZkZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5mZHNuLm1zZWVkXCI6W1wibXNlZWRcIl0sXCJhcHBsaWNhdGlvbi92bmQuZmRzbi5zZWVkXCI6W1wic2VlZFwiLFwiZGF0YWxlc3NcIl0sXCJhcHBsaWNhdGlvbi92bmQuZmxvZ3JhcGhpdFwiOltcImdwaFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwXCI6W1wiZnRjXCJdLFwiYXBwbGljYXRpb24vdm5kLmZyYW1lbWFrZXJcIjpbXCJmbVwiLFwiZnJhbWVcIixcIm1ha2VyXCIsXCJib29rXCJdLFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMuZm5jXCI6W1wiZm5jXCJdLFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMubHRmXCI6W1wibHRmXCJdLFwiYXBwbGljYXRpb24vdm5kLmZzYy53ZWJsYXVuY2hcIjpbXCJmc2NcIl0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c1wiOltcIm9hc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzMlwiOltcIm9hMlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzM1wiOltcIm9hM1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppdHN1Lm9hc3lzZ3BcIjpbXCJmZzVcIl0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c3Byc1wiOltcImJoMlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZGRkXCI6W1wiZGRkXCJdLFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3NcIjpbXCJ4ZHdcIl0sXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrcy5iaW5kZXJcIjpbXCJ4YmRcIl0sXCJhcHBsaWNhdGlvbi92bmQuZnV6enlzaGVldFwiOltcImZ6c1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5nZW5vbWF0aXgudHV4ZWRvXCI6W1widHhkXCJdLFwiYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLmZpbGVcIjpbXCJnZ2JcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEudG9vbFwiOltcImdndFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5nZW9tZXRyeS1leHBsb3JlclwiOltcImdleFwiLFwiZ3JlXCJdLFwiYXBwbGljYXRpb24vdm5kLmdlb25leHRcIjpbXCJneHRcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ2VvcGxhblwiOltcImcyd1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5nZW9zcGFjZVwiOltcImczd1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5nbXhcIjpbXCJnbXhcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnRcIjpbXCJnZG9jXCJdLFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnByZXNlbnRhdGlvblwiOltcImdzbGlkZXNcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuc3ByZWFkc2hlZXRcIjpbXCJnc2hlZXRcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWxcIjpbXCJrbWxcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttelwiOltcImttelwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ncmFmZXFcIjpbXCJncWZcIixcImdxc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtYWNjb3VudFwiOltcImdhY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaGVscFwiOltcImdoZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaWRlbnRpdHktbWVzc2FnZVwiOltcImdpbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaW5qZWN0b3JcIjpbXCJncnZcIl0sXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXRvb2wtbWVzc2FnZVwiOltcImd0bVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdG9vbC10ZW1wbGF0ZVwiOltcInRwbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdmNhcmRcIjpbXCJ2Y2dcIl0sXCJhcHBsaWNhdGlvbi92bmQuaGFsK3htbFwiOltcImhhbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5oYW5kaGVsZC1lbnRlcnRhaW5tZW50K3htbFwiOltcInptbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5oYmNpXCI6W1wiaGJjaVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5oaGUubGVzc29uLXBsYXllclwiOltcImxlc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGdsXCI6W1wiaHBnbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocGlkXCI6W1wiaHBpZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1ocHNcIjpbXCJocHNcIl0sXCJhcHBsaWNhdGlvbi92bmQuaHAtamx5dFwiOltcImpsdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ocC1wY2xcIjpbXCJwY2xcIl0sXCJhcHBsaWNhdGlvbi92bmQuaHAtcGNseGxcIjpbXCJwY2x4bFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5oeWRyb3N0YXRpeC5zb2YtZGF0YVwiOltcInNmZC1oZHN0eFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pYm0ubWluaXBheVwiOltcIm1weVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pYm0ubW9kY2FwXCI6W1wiYWZwXCIsXCJsaXN0YWZwXCIsXCJsaXN0MzgyMFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pYm0ucmlnaHRzLW1hbmFnZW1lbnRcIjpbXCJpcm1cIl0sXCJhcHBsaWNhdGlvbi92bmQuaWJtLnNlY3VyZS1jb250YWluZXJcIjpbXCJzY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5pY2Nwcm9maWxlXCI6W1wiaWNjXCIsXCJpY21cIl0sXCJhcHBsaWNhdGlvbi92bmQuaWdsb2FkZXJcIjpbXCJpZ2xcIl0sXCJhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZwXCI6W1wiaXZwXCJdLFwiYXBwbGljYXRpb24vdm5kLmltbWVydmlzaW9uLWl2dVwiOltcIml2dVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pbnNvcnMuaWdtXCI6W1wiaWdtXCJdLFwiYXBwbGljYXRpb24vdm5kLmludGVyY29uLmZvcm1uZXRcIjpbXCJ4cHdcIixcInhweFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcmdlb1wiOltcImkyZ1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFib1wiOltcInFib1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFmeFwiOltcInFmeFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5pcHVucGx1Z2dlZC5yY3Byb2ZpbGVcIjpbXCJyY3Byb2ZpbGVcIl0sXCJhcHBsaWNhdGlvbi92bmQuaXJlcG9zaXRvcnkucGFja2FnZSt4bWxcIjpbXCJpcnBcIl0sXCJhcHBsaWNhdGlvbi92bmQuaXMteHByXCI6W1wieHByXCJdLFwiYXBwbGljYXRpb24vdm5kLmlzYWMuZmNzXCI6W1wiZmNzXCJdLFwiYXBwbGljYXRpb24vdm5kLmphbVwiOltcImphbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5qY3AuamF2YW1lLm1pZGxldC1ybXNcIjpbXCJybXNcIl0sXCJhcHBsaWNhdGlvbi92bmQuamlzcFwiOltcImppc3BcIl0sXCJhcHBsaWNhdGlvbi92bmQuam9vc3Quam9kYS1hcmNoaXZlXCI6W1wiam9kYVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5rYWhvb3R6XCI6W1wia3R6XCIsXCJrdHJcIl0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmthcmJvblwiOltcImthcmJvblwiXSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2NoYXJ0XCI6W1wiY2hydFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2Zvcm11bGFcIjpbXCJrZm9cIl0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmtpdmlvXCI6W1wiZmx3XCJdLFwiYXBwbGljYXRpb24vdm5kLmtkZS5rb250b3VyXCI6W1wia29uXCJdLFwiYXBwbGljYXRpb24vdm5kLmtkZS5rcHJlc2VudGVyXCI6W1wia3ByXCIsXCJrcHRcIl0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmtzcHJlYWRcIjpbXCJrc3BcIl0sXCJhcHBsaWNhdGlvbi92bmQua2RlLmt3b3JkXCI6W1wia3dkXCIsXCJrd3RcIl0sXCJhcHBsaWNhdGlvbi92bmQua2VuYW1lYWFwcFwiOltcImh0a2VcIl0sXCJhcHBsaWNhdGlvbi92bmQua2lkc3BpcmF0aW9uXCI6W1wia2lhXCJdLFwiYXBwbGljYXRpb24vdm5kLmtpbmFyXCI6W1wia25lXCIsXCJrbnBcIl0sXCJhcHBsaWNhdGlvbi92bmQua29hblwiOltcInNrcFwiLFwic2tkXCIsXCJza3RcIixcInNrbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5rb2Rhay1kZXNjcmlwdG9yXCI6W1wic3NlXCJdLFwiYXBwbGljYXRpb24vdm5kLmxhcy5sYXMreG1sXCI6W1wibGFzeG1sXCJdLFwiYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmRlc2t0b3BcIjpbXCJsYmRcIl0sXCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZXhjaGFuZ2UreG1sXCI6W1wibGJlXCJdLFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLTEtMi0zXCI6W1wiMTIzXCJdLFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWFwcHJvYWNoXCI6W1wiYXByXCJdLFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWZyZWVsYW5jZVwiOltcInByZVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1ub3Rlc1wiOltcIm5zZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1vcmdhbml6ZXJcIjpbXCJvcmdcIl0sXCJhcHBsaWNhdGlvbi92bmQubG90dXMtc2NyZWVuY2FtXCI6W1wic2NtXCJdLFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLXdvcmRwcm9cIjpbXCJsd3BcIl0sXCJhcHBsaWNhdGlvbi92bmQubWFjcG9ydHMucG9ydHBrZ1wiOltcInBvcnRwa2dcIl0sXCJhcHBsaWNhdGlvbi92bmQubWNkXCI6W1wibWNkXCJdLFwiYXBwbGljYXRpb24vdm5kLm1lZGNhbGNkYXRhXCI6W1wibWMxXCJdLFwiYXBwbGljYXRpb24vdm5kLm1lZGlhc3RhdGlvbi5jZGtleVwiOltcImNka2V5XCJdLFwiYXBwbGljYXRpb24vdm5kLm1mZXJcIjpbXCJtd2ZcIl0sXCJhcHBsaWNhdGlvbi92bmQubWZtcFwiOltcIm1mbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5taWNyb2dyYWZ4LmZsb1wiOltcImZsb1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5taWNyb2dyYWZ4LmlneFwiOltcImlneFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5taWZcIjpbXCJtaWZcIl0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLmRhZlwiOltcImRhZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGlzXCI6W1wiZGlzXCJdLFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tYmtcIjpbXCJtYmtcIl0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1xeVwiOltcIm1xeVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubXNsXCI6W1wibXNsXCJdLFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5wbGNcIjpbXCJwbGNcIl0sXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLnR4ZlwiOltcInR4ZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tb3BodW4uYXBwbGljYXRpb25cIjpbXCJtcG5cIl0sXCJhcHBsaWNhdGlvbi92bmQubW9waHVuLmNlcnRpZmljYXRlXCI6W1wibXBjXCJdLFwiYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbFwiOltcInh1bFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1hcnRnYWxyeVwiOltcImNpbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1jYWItY29tcHJlc3NlZFwiOltcImNhYlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiOltcInhsc1wiLFwieGxtXCIsXCJ4bGFcIixcInhsY1wiLFwieGx0XCIsXCJ4bHdcIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYWRkaW4ubWFjcm9lbmFibGVkLjEyXCI6W1wieGxhbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9lbmFibGVkLjEyXCI6W1wieGxzYlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb2VuYWJsZWQuMTJcIjpbXCJ4bHNtXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOltcInhsdG1cIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdFwiOltcImVvdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1odG1saGVscFwiOltcImNobVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1pbXNcIjpbXCJpbXNcIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtbHJtXCI6W1wibHJtXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZXRoZW1lXCI6W1widGhteFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1vdXRsb29rXCI6W1wibXNnXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLXBraS5zZWNjYXRcIjpbXCJjYXRcIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtcGtpLnN0bFwiOltcInN0bFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50XCI6W1wicHB0XCIsXCJwcHNcIixcInBvdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LmFkZGluLm1hY3JvZW5hYmxlZC4xMlwiOltcInBwYW1cIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9lbmFibGVkLjEyXCI6W1wicHB0bVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlLm1hY3JvZW5hYmxlZC4xMlwiOltcInNsZG1cIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZXNob3cubWFjcm9lbmFibGVkLjEyXCI6W1wicHBzbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOltcInBvdG1cIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtcHJvamVjdFwiOltcIm1wcFwiLFwibXB0XCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQuZG9jdW1lbnQubWFjcm9lbmFibGVkLjEyXCI6W1wiZG9jbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOltcImRvdG1cIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtd29ya3NcIjpbXCJ3cHNcIixcIndrc1wiLFwid2NtXCIsXCJ3ZGJcIl0sXCJhcHBsaWNhdGlvbi92bmQubXMtd3BsXCI6W1wid3BsXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zLXhwc2RvY3VtZW50XCI6W1wieHBzXCJdLFwiYXBwbGljYXRpb24vdm5kLm1zZXFcIjpbXCJtc2VxXCJdLFwiYXBwbGljYXRpb24vdm5kLm11c2ljaWFuXCI6W1wibXVzXCJdLFwiYXBwbGljYXRpb24vdm5kLm11dmVlLnN0eWxlXCI6W1wibXN0eVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5teW5mY1wiOltcInRhZ2xldFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5uZXVyb2xhbmd1YWdlLm5sdVwiOltcIm5sdVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5uaXRmXCI6W1wibnRmXCIsXCJuaXRmXCJdLFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LWRpcmVjdG9yeVwiOltcIm5uZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1zZWFsZXJcIjpbXCJubnNcIl0sXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtd2ViXCI6W1wibm53XCJdLFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5kYXRhXCI6W1wibmdkYXRcIl0sXCJhcHBsaWNhdGlvbi92bmQubm9raWEubi1nYWdlLnN5bWJpYW4uaW5zdGFsbFwiOltcIm4tZ2FnZVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5yYWRpby1wcmVzZXRcIjpbXCJycHN0XCJdLFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnJhZGlvLXByZXNldHNcIjpbXCJycHNzXCJdLFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkbVwiOltcImVkbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZHhcIjpbXCJlZHhcIl0sXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZXh0XCI6W1wiZXh0XCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydFwiOltcIm9kY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQtdGVtcGxhdGVcIjpbXCJvdGNcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmRhdGFiYXNlXCI6W1wib2RiXCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhXCI6W1wib2RmXCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhLXRlbXBsYXRlXCI6W1wib2RmdFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3NcIjpbXCJvZGdcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmdyYXBoaWNzLXRlbXBsYXRlXCI6W1wib3RnXCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZVwiOltcIm9kaVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2UtdGVtcGxhdGVcIjpbXCJvdGlcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvblwiOltcIm9kcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlXCI6W1wib3RwXCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiOltcIm9kc1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQtdGVtcGxhdGVcIjpbXCJvdHNcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHRcIjpbXCJvZHRcIl0sXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtbWFzdGVyXCI6W1wib2RtXCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LXRlbXBsYXRlXCI6W1wib3R0XCJdLFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0LXdlYlwiOltcIm90aFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vbHBjLXN1Z2FyXCI6W1wieG9cIl0sXCJhcHBsaWNhdGlvbi92bmQub21hLmRkMit4bWxcIjpbXCJkZDJcIl0sXCJhcHBsaWNhdGlvbi92bmQub3Blbm9mZmljZW9yZy5leHRlbnNpb25cIjpbXCJveHRcIl0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uXCI6W1wicHB0eFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZVwiOltcInNsZHhcIl0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93XCI6W1wicHBzeFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50ZW1wbGF0ZVwiOltcInBvdHhcIl0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldFwiOltcInhsc3hcIl0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZVwiOltcInhsdHhcIl0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudFwiOltcImRvY3hcIl0sXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC50ZW1wbGF0ZVwiOltcImRvdHhcIl0sXCJhcHBsaWNhdGlvbi92bmQub3NnZW8ubWFwZ3VpZGUucGFja2FnZVwiOltcIm1ncFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLmRwXCI6W1wiZHBcIl0sXCJhcHBsaWNhdGlvbi92bmQub3NnaS5zdWJzeXN0ZW1cIjpbXCJlc2FcIl0sXCJhcHBsaWNhdGlvbi92bmQucGFsbVwiOltcInBkYlwiLFwicHFhXCIsXCJvcHJjXCJdLFwiYXBwbGljYXRpb24vdm5kLnBhd2FhZmlsZVwiOltcInBhd1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5wZy5mb3JtYXRcIjpbXCJzdHJcIl0sXCJhcHBsaWNhdGlvbi92bmQucGcub3Nhc2xpXCI6W1wiZWk2XCJdLFwiYXBwbGljYXRpb24vdm5kLnBpY3NlbFwiOltcImVmaWZcIl0sXCJhcHBsaWNhdGlvbi92bmQucG1pLndpZGdldFwiOltcIndnXCJdLFwiYXBwbGljYXRpb24vdm5kLnBvY2tldGxlYXJuXCI6W1wicGxmXCJdLFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjZcIjpbXCJwYmRcIl0sXCJhcHBsaWNhdGlvbi92bmQucHJldmlld3N5c3RlbXMuYm94XCI6W1wiYm94XCJdLFwiYXBwbGljYXRpb24vdm5kLnByb3RldXMubWFnYXppbmVcIjpbXCJtZ3pcIl0sXCJhcHBsaWNhdGlvbi92bmQucHVibGlzaGFyZS1kZWx0YS10cmVlXCI6W1wicXBzXCJdLFwiYXBwbGljYXRpb24vdm5kLnB2aS5wdGlkMVwiOltcInB0aWRcIl0sXCJhcHBsaWNhdGlvbi92bmQucXVhcmsucXVhcmt4cHJlc3NcIjpbXCJxeGRcIixcInF4dFwiLFwicXdkXCIsXCJxd3RcIixcInF4bFwiLFwicXhiXCJdLFwiYXBwbGljYXRpb24vdm5kLnJlYWx2bmMuYmVkXCI6W1wiYmVkXCJdLFwiYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbFwiOltcIm14bFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5yZWNvcmRhcmUubXVzaWN4bWwreG1sXCI6W1wibXVzaWN4bWxcIl0sXCJhcHBsaWNhdGlvbi92bmQucmlnLmNyeXB0b25vdGVcIjpbXCJjcnlwdG9ub3RlXCJdLFwiYXBwbGljYXRpb24vdm5kLnJpbS5jb2RcIjpbXCJjb2RcIl0sXCJhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhXCI6W1wicm1cIl0sXCJhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhLXZiclwiOltcInJtdmJcIl0sXCJhcHBsaWNhdGlvbi92bmQucm91dGU2Ni5saW5rNjYreG1sXCI6W1wibGluazY2XCJdLFwiYXBwbGljYXRpb24vdm5kLnNhaWxpbmd0cmFja2VyLnRyYWNrXCI6W1wic3RcIl0sXCJhcHBsaWNhdGlvbi92bmQuc2VlbWFpbFwiOltcInNlZVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zZW1hXCI6W1wic2VtYVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zZW1kXCI6W1wic2VtZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zZW1mXCI6W1wic2VtZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5mb3JtZGF0YVwiOltcImlmbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5mb3JtdGVtcGxhdGVcIjpbXCJpdHBcIl0sXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuaW50ZXJjaGFuZ2VcIjpbXCJpaWZcIl0sXCJhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQucGFja2FnZVwiOltcImlwa1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5zaW10ZWNoLW1pbmRtYXBwZXJcIjpbXCJ0d2RcIixcInR3ZHNcIl0sXCJhcHBsaWNhdGlvbi92bmQuc21hZlwiOltcIm1tZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zbWFydC50ZWFjaGVyXCI6W1widGVhY2hlclwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zb2xlbnQuc2RrbSt4bWxcIjpbXCJzZGttXCIsXCJzZGtkXCJdLFwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLmR4cFwiOltcImR4cFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5zZnNcIjpbXCJzZnNcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmNhbGNcIjpbXCJzZGNcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmRyYXdcIjpbXCJzZGFcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3NcIjpbXCJzZGRcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLm1hdGhcIjpbXCJzbWZcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlclwiOltcInNkd1wiLFwidm9yXCJdLFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXItZ2xvYmFsXCI6W1wic2dsXCJdLFwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlXCI6W1wic216aXBcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3RlcG1hbmlhLnN0ZXBjaGFydFwiOltcInNtXCJdLFwiYXBwbGljYXRpb24vdm5kLnN1bi53YWRsK3htbFwiOltcIndhZGxcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjXCI6W1wic3hjXCJdLFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsYy50ZW1wbGF0ZVwiOltcInN0Y1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXdcIjpbXCJzeGRcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3LnRlbXBsYXRlXCI6W1wic3RkXCJdLFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwuaW1wcmVzc1wiOltcInN4aVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmltcHJlc3MudGVtcGxhdGVcIjpbXCJzdGlcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5tYXRoXCI6W1wic3htXCJdLFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyXCI6W1wic3h3XCJdLFwiYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLmdsb2JhbFwiOltcInN4Z1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci50ZW1wbGF0ZVwiOltcInN0d1wiXSxcImFwcGxpY2F0aW9uL3ZuZC5zdXMtY2FsZW5kYXJcIjpbXCJzdXNcIixcInN1c3BcIl0sXCJhcHBsaWNhdGlvbi92bmQuc3ZkXCI6W1wic3ZkXCJdLFwiYXBwbGljYXRpb24vdm5kLnN5bWJpYW4uaW5zdGFsbFwiOltcInNpc1wiLFwic2lzeFwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwreG1sXCI6W1wieHNtXCJdLFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt3YnhtbFwiOltcImJkbVwiXSxcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0reG1sXCI6W1wieGRtXCJdLFwiYXBwbGljYXRpb24vdm5kLnRhby5pbnRlbnQtbW9kdWxlLWFyY2hpdmVcIjpbXCJ0YW9cIl0sXCJhcHBsaWNhdGlvbi92bmQudGNwZHVtcC5wY2FwXCI6W1wicGNhcFwiLFwiY2FwXCIsXCJkbXBcIl0sXCJhcHBsaWNhdGlvbi92bmQudG1vYmlsZS1saXZldHZcIjpbXCJ0bW9cIl0sXCJhcHBsaWNhdGlvbi92bmQudHJpZC50cHRcIjpbXCJ0cHRcIl0sXCJhcHBsaWNhdGlvbi92bmQudHJpc2NhcGUubXhzXCI6W1wibXhzXCJdLFwiYXBwbGljYXRpb24vdm5kLnRydWVhcHBcIjpbXCJ0cmFcIl0sXCJhcHBsaWNhdGlvbi92bmQudWZkbFwiOltcInVmZFwiLFwidWZkbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC51aXEudGhlbWVcIjpbXCJ1dHpcIl0sXCJhcHBsaWNhdGlvbi92bmQudW1hamluXCI6W1widW1qXCJdLFwiYXBwbGljYXRpb24vdm5kLnVuaXR5XCI6W1widW5pdHl3ZWJcIl0sXCJhcHBsaWNhdGlvbi92bmQudW9tbCt4bWxcIjpbXCJ1b21sXCJdLFwiYXBwbGljYXRpb24vdm5kLnZjeFwiOltcInZjeFwiXSxcImFwcGxpY2F0aW9uL3ZuZC52aXNpb1wiOltcInZzZFwiLFwidnN0XCIsXCJ2c3NcIixcInZzd1wiXSxcImFwcGxpY2F0aW9uL3ZuZC52aXNpb25hcnlcIjpbXCJ2aXNcIl0sXCJhcHBsaWNhdGlvbi92bmQudnNmXCI6W1widnNmXCJdLFwiYXBwbGljYXRpb24vdm5kLndhcC53YnhtbFwiOltcIndieG1sXCJdLFwiYXBwbGljYXRpb24vdm5kLndhcC53bWxjXCI6W1wid21sY1wiXSxcImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0Y1wiOltcIndtbHNjXCJdLFwiYXBwbGljYXRpb24vdm5kLndlYnR1cmJvXCI6W1wid3RiXCJdLFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ucGxheWVyXCI6W1wibmJwXCJdLFwiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0XCI6W1wid3BkXCJdLFwiYXBwbGljYXRpb24vdm5kLndxZFwiOltcIndxZFwiXSxcImFwcGxpY2F0aW9uL3ZuZC53dC5zdGZcIjpbXCJzdGZcIl0sXCJhcHBsaWNhdGlvbi92bmQueGFyYVwiOltcInhhclwiXSxcImFwcGxpY2F0aW9uL3ZuZC54ZmRsXCI6W1wieGZkbFwiXSxcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtZGljXCI6W1wiaHZkXCJdLFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1zY3JpcHRcIjpbXCJodnNcIl0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXZvaWNlXCI6W1wiaHZwXCJdLFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5vcGVuc2NvcmVmb3JtYXRcIjpbXCJvc2ZcIl0sXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdC5vc2ZwdmcreG1sXCI6W1wib3NmcHZnXCJdLFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5zbWFmLWF1ZGlvXCI6W1wic2FmXCJdLFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5zbWFmLXBocmFzZVwiOltcInNwZlwiXSxcImFwcGxpY2F0aW9uL3ZuZC55ZWxsb3dyaXZlci1jdXN0b20tbWVudVwiOltcImNtcFwiXSxcImFwcGxpY2F0aW9uL3ZuZC56dWxcIjpbXCJ6aXJcIixcInppcnpcIl0sXCJhcHBsaWNhdGlvbi92bmQuenphenouZGVjayt4bWxcIjpbXCJ6YXpcIl0sXCJhcHBsaWNhdGlvbi92b2ljZXhtbCt4bWxcIjpbXCJ2eG1sXCJdLFwiYXBwbGljYXRpb24vd2lkZ2V0XCI6W1wid2d0XCJdLFwiYXBwbGljYXRpb24vd2luaGxwXCI6W1wiaGxwXCJdLFwiYXBwbGljYXRpb24vd3NkbCt4bWxcIjpbXCJ3c2RsXCJdLFwiYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sXCI6W1wid3Nwb2xpY3lcIl0sXCJhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWRcIjpbXCI3elwiXSxcImFwcGxpY2F0aW9uL3gtYWJpd29yZFwiOltcImFid1wiXSxcImFwcGxpY2F0aW9uL3gtYWNlLWNvbXByZXNzZWRcIjpbXCJhY2VcIl0sXCJhcHBsaWNhdGlvbi94LWFwcGxlLWRpc2tpbWFnZVwiOltcImRtZ1wiXSxcImFwcGxpY2F0aW9uL3gtYXJqXCI6W1wiYXJqXCJdLFwiYXBwbGljYXRpb24veC1hdXRob3J3YXJlLWJpblwiOltcImFhYlwiLFwieDMyXCIsXCJ1MzJcIixcInZveFwiXSxcImFwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1tYXBcIjpbXCJhYW1cIl0sXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtc2VnXCI6W1wiYWFzXCJdLFwiYXBwbGljYXRpb24veC1iY3Bpb1wiOltcImJjcGlvXCJdLFwiYXBwbGljYXRpb24veC1iZG9jXCI6W1wiYmRvY1wiXSxcImFwcGxpY2F0aW9uL3gtYml0dG9ycmVudFwiOltcInRvcnJlbnRcIl0sXCJhcHBsaWNhdGlvbi94LWJsb3JiXCI6W1wiYmxiXCIsXCJibG9yYlwiXSxcImFwcGxpY2F0aW9uL3gtYnppcFwiOltcImJ6XCJdLFwiYXBwbGljYXRpb24veC1iemlwMlwiOltcImJ6MlwiLFwiYm96XCJdLFwiYXBwbGljYXRpb24veC1jYnJcIjpbXCJjYnJcIixcImNiYVwiLFwiY2J0XCIsXCJjYnpcIixcImNiN1wiXSxcImFwcGxpY2F0aW9uL3gtY2RsaW5rXCI6W1widmNkXCJdLFwiYXBwbGljYXRpb24veC1jZnMtY29tcHJlc3NlZFwiOltcImNmc1wiXSxcImFwcGxpY2F0aW9uL3gtY2hhdFwiOltcImNoYXRcIl0sXCJhcHBsaWNhdGlvbi94LWNoZXNzLXBnblwiOltcInBnblwiXSxcImFwcGxpY2F0aW9uL3gtY2hyb21lLWV4dGVuc2lvblwiOltcImNyeFwiXSxcImFwcGxpY2F0aW9uL3gtY29jb2FcIjpbXCJjY29cIl0sXCJhcHBsaWNhdGlvbi94LWNvbmZlcmVuY2VcIjpbXCJuc2NcIl0sXCJhcHBsaWNhdGlvbi94LWNwaW9cIjpbXCJjcGlvXCJdLFwiYXBwbGljYXRpb24veC1jc2hcIjpbXCJjc2hcIl0sXCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlXCI6W1wiZGViXCIsXCJ1ZGViXCJdLFwiYXBwbGljYXRpb24veC1kZ2MtY29tcHJlc3NlZFwiOltcImRnY1wiXSxcImFwcGxpY2F0aW9uL3gtZGlyZWN0b3JcIjpbXCJkaXJcIixcImRjclwiLFwiZHhyXCIsXCJjc3RcIixcImNjdFwiLFwiY3h0XCIsXCJ3M2RcIixcImZnZFwiLFwic3dhXCJdLFwiYXBwbGljYXRpb24veC1kb29tXCI6W1wid2FkXCJdLFwiYXBwbGljYXRpb24veC1kdGJuY3greG1sXCI6W1wibmN4XCJdLFwiYXBwbGljYXRpb24veC1kdGJvb2sreG1sXCI6W1wiZHRiXCJdLFwiYXBwbGljYXRpb24veC1kdGJyZXNvdXJjZSt4bWxcIjpbXCJyZXNcIl0sXCJhcHBsaWNhdGlvbi94LWR2aVwiOltcImR2aVwiXSxcImFwcGxpY2F0aW9uL3gtZW52b3lcIjpbXCJldnlcIl0sXCJhcHBsaWNhdGlvbi94LWV2YVwiOltcImV2YVwiXSxcImFwcGxpY2F0aW9uL3gtZm9udC1iZGZcIjpbXCJiZGZcIl0sXCJhcHBsaWNhdGlvbi94LWZvbnQtZ2hvc3RzY3JpcHRcIjpbXCJnc2ZcIl0sXCJhcHBsaWNhdGlvbi94LWZvbnQtbGludXgtcHNmXCI6W1wicHNmXCJdLFwiYXBwbGljYXRpb24veC1mb250LW90ZlwiOltcIm90ZlwiXSxcImFwcGxpY2F0aW9uL3gtZm9udC1wY2ZcIjpbXCJwY2ZcIl0sXCJhcHBsaWNhdGlvbi94LWZvbnQtc25mXCI6W1wic25mXCJdLFwiYXBwbGljYXRpb24veC1mb250LXR0ZlwiOltcInR0ZlwiLFwidHRjXCJdLFwiYXBwbGljYXRpb24veC1mb250LXR5cGUxXCI6W1wicGZhXCIsXCJwZmJcIixcInBmbVwiLFwiYWZtXCJdLFwiYXBwbGljYXRpb24veC1mcmVlYXJjXCI6W1wiYXJjXCJdLFwiYXBwbGljYXRpb24veC1mdXR1cmVzcGxhc2hcIjpbXCJzcGxcIl0sXCJhcHBsaWNhdGlvbi94LWdjYS1jb21wcmVzc2VkXCI6W1wiZ2NhXCJdLFwiYXBwbGljYXRpb24veC1nbHVseFwiOltcInVseFwiXSxcImFwcGxpY2F0aW9uL3gtZ251bWVyaWNcIjpbXCJnbnVtZXJpY1wiXSxcImFwcGxpY2F0aW9uL3gtZ3JhbXBzLXhtbFwiOltcImdyYW1wc1wiXSxcImFwcGxpY2F0aW9uL3gtZ3RhclwiOltcImd0YXJcIl0sXCJhcHBsaWNhdGlvbi94LWhkZlwiOltcImhkZlwiXSxcImFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwXCI6W1wicGhwXCJdLFwiYXBwbGljYXRpb24veC1pbnN0YWxsLWluc3RydWN0aW9uc1wiOltcImluc3RhbGxcIl0sXCJhcHBsaWNhdGlvbi94LWlzbzk2NjAtaW1hZ2VcIjpbXCJpc29cIl0sXCJhcHBsaWNhdGlvbi94LWphdmEtYXJjaGl2ZS1kaWZmXCI6W1wiamFyZGlmZlwiXSxcImFwcGxpY2F0aW9uL3gtamF2YS1qbmxwLWZpbGVcIjpbXCJqbmxwXCJdLFwiYXBwbGljYXRpb24veC1sYXRleFwiOltcImxhdGV4XCJdLFwiYXBwbGljYXRpb24veC1sdWEtYnl0ZWNvZGVcIjpbXCJsdWFjXCJdLFwiYXBwbGljYXRpb24veC1semgtY29tcHJlc3NlZFwiOltcImx6aFwiLFwibGhhXCJdLFwiYXBwbGljYXRpb24veC1tYWtlc2VsZlwiOltcInJ1blwiXSxcImFwcGxpY2F0aW9uL3gtbWllXCI6W1wibWllXCJdLFwiYXBwbGljYXRpb24veC1tb2JpcG9ja2V0LWVib29rXCI6W1wicHJjXCIsXCJtb2JpXCJdLFwiYXBwbGljYXRpb24veC1tcy1hcHBsaWNhdGlvblwiOltcImFwcGxpY2F0aW9uXCJdLFwiYXBwbGljYXRpb24veC1tcy1zaG9ydGN1dFwiOltcImxua1wiXSxcImFwcGxpY2F0aW9uL3gtbXMtd21kXCI6W1wid21kXCJdLFwiYXBwbGljYXRpb24veC1tcy13bXpcIjpbXCJ3bXpcIl0sXCJhcHBsaWNhdGlvbi94LW1zLXhiYXBcIjpbXCJ4YmFwXCJdLFwiYXBwbGljYXRpb24veC1tc2FjY2Vzc1wiOltcIm1kYlwiXSxcImFwcGxpY2F0aW9uL3gtbXNiaW5kZXJcIjpbXCJvYmRcIl0sXCJhcHBsaWNhdGlvbi94LW1zY2FyZGZpbGVcIjpbXCJjcmRcIl0sXCJhcHBsaWNhdGlvbi94LW1zY2xpcFwiOltcImNscFwiXSxcImFwcGxpY2F0aW9uL3gtbXNkb3MtcHJvZ3JhbVwiOltcImV4ZVwiXSxcImFwcGxpY2F0aW9uL3gtbXNkb3dubG9hZFwiOltcImV4ZVwiLFwiZGxsXCIsXCJjb21cIixcImJhdFwiLFwibXNpXCJdLFwiYXBwbGljYXRpb24veC1tc21lZGlhdmlld1wiOltcIm12YlwiLFwibTEzXCIsXCJtMTRcIl0sXCJhcHBsaWNhdGlvbi94LW1zbWV0YWZpbGVcIjpbXCJ3bWZcIixcIndtelwiLFwiZW1mXCIsXCJlbXpcIl0sXCJhcHBsaWNhdGlvbi94LW1zbW9uZXlcIjpbXCJtbnlcIl0sXCJhcHBsaWNhdGlvbi94LW1zcHVibGlzaGVyXCI6W1wicHViXCJdLFwiYXBwbGljYXRpb24veC1tc3NjaGVkdWxlXCI6W1wic2NkXCJdLFwiYXBwbGljYXRpb24veC1tc3Rlcm1pbmFsXCI6W1widHJtXCJdLFwiYXBwbGljYXRpb24veC1tc3dyaXRlXCI6W1wid3JpXCJdLFwiYXBwbGljYXRpb24veC1uZXRjZGZcIjpbXCJuY1wiLFwiY2RmXCJdLFwiYXBwbGljYXRpb24veC1ucy1wcm94eS1hdXRvY29uZmlnXCI6W1wicGFjXCJdLFwiYXBwbGljYXRpb24veC1uemJcIjpbXCJuemJcIl0sXCJhcHBsaWNhdGlvbi94LXBlcmxcIjpbXCJwbFwiLFwicG1cIl0sXCJhcHBsaWNhdGlvbi94LXBpbG90XCI6W1wicHJjXCIsXCJwZGJcIl0sXCJhcHBsaWNhdGlvbi94LXBrY3MxMlwiOltcInAxMlwiLFwicGZ4XCJdLFwiYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0aWZpY2F0ZXNcIjpbXCJwN2JcIixcInNwY1wiXSxcImFwcGxpY2F0aW9uL3gtcGtjczctY2VydHJlcXJlc3BcIjpbXCJwN3JcIl0sXCJhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkXCI6W1wicmFyXCJdLFwiYXBwbGljYXRpb24veC1yZWRoYXQtcGFja2FnZS1tYW5hZ2VyXCI6W1wicnBtXCJdLFwiYXBwbGljYXRpb24veC1yZXNlYXJjaC1pbmZvLXN5c3RlbXNcIjpbXCJyaXNcIl0sXCJhcHBsaWNhdGlvbi94LXNlYVwiOltcInNlYVwiXSxcImFwcGxpY2F0aW9uL3gtc2hcIjpbXCJzaFwiXSxcImFwcGxpY2F0aW9uL3gtc2hhclwiOltcInNoYXJcIl0sXCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiOltcInN3ZlwiXSxcImFwcGxpY2F0aW9uL3gtc2lsdmVybGlnaHQtYXBwXCI6W1wieGFwXCJdLFwiYXBwbGljYXRpb24veC1zcWxcIjpbXCJzcWxcIl0sXCJhcHBsaWNhdGlvbi94LXN0dWZmaXRcIjpbXCJzaXRcIl0sXCJhcHBsaWNhdGlvbi94LXN0dWZmaXR4XCI6W1wic2l0eFwiXSxcImFwcGxpY2F0aW9uL3gtc3VicmlwXCI6W1wic3J0XCJdLFwiYXBwbGljYXRpb24veC1zdjRjcGlvXCI6W1wic3Y0Y3Bpb1wiXSxcImFwcGxpY2F0aW9uL3gtc3Y0Y3JjXCI6W1wic3Y0Y3JjXCJdLFwiYXBwbGljYXRpb24veC10M3ZtLWltYWdlXCI6W1widDNcIl0sXCJhcHBsaWNhdGlvbi94LXRhZHNcIjpbXCJnYW1cIl0sXCJhcHBsaWNhdGlvbi94LXRhclwiOltcInRhclwiXSxcImFwcGxpY2F0aW9uL3gtdGNsXCI6W1widGNsXCIsXCJ0a1wiXSxcImFwcGxpY2F0aW9uL3gtdGV4XCI6W1widGV4XCJdLFwiYXBwbGljYXRpb24veC10ZXgtdGZtXCI6W1widGZtXCJdLFwiYXBwbGljYXRpb24veC10ZXhpbmZvXCI6W1widGV4aW5mb1wiLFwidGV4aVwiXSxcImFwcGxpY2F0aW9uL3gtdGdpZlwiOltcIm9ialwiXSxcImFwcGxpY2F0aW9uL3gtdXN0YXJcIjpbXCJ1c3RhclwiXSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1oZGRcIjpbXCJoZGRcIl0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtb3ZhXCI6W1wib3ZhXCJdLFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LW92ZlwiOltcIm92ZlwiXSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12Ym94XCI6W1widmJveFwiXSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12Ym94LWV4dHBhY2tcIjpbXCJ2Ym94LWV4dHBhY2tcIl0sXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmRpXCI6W1widmRpXCJdLFwiYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZoZFwiOltcInZoZFwiXSxcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12bWRrXCI6W1widm1ka1wiXSxcImFwcGxpY2F0aW9uL3gtd2Fpcy1zb3VyY2VcIjpbXCJzcmNcIl0sXCJhcHBsaWNhdGlvbi94LXdlYi1hcHAtbWFuaWZlc3QranNvblwiOltcIndlYmFwcFwiXSxcImFwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0XCI6W1wiZGVyXCIsXCJjcnRcIixcInBlbVwiXSxcImFwcGxpY2F0aW9uL3gteGZpZ1wiOltcImZpZ1wiXSxcImFwcGxpY2F0aW9uL3gteGxpZmYreG1sXCI6W1wieGxmXCJdLFwiYXBwbGljYXRpb24veC14cGluc3RhbGxcIjpbXCJ4cGlcIl0sXCJhcHBsaWNhdGlvbi94LXh6XCI6W1wieHpcIl0sXCJhcHBsaWNhdGlvbi94LXptYWNoaW5lXCI6W1wiejFcIixcInoyXCIsXCJ6M1wiLFwiejRcIixcIno1XCIsXCJ6NlwiLFwiejdcIixcIno4XCJdLFwiYXBwbGljYXRpb24veGFtbCt4bWxcIjpbXCJ4YW1sXCJdLFwiYXBwbGljYXRpb24veGNhcC1kaWZmK3htbFwiOltcInhkZlwiXSxcImFwcGxpY2F0aW9uL3hlbmMreG1sXCI6W1wieGVuY1wiXSxcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiOltcInhodG1sXCIsXCJ4aHRcIl0sXCJhcHBsaWNhdGlvbi94bWxcIjpbXCJ4bWxcIixcInhzbFwiLFwieHNkXCIsXCJybmdcIl0sXCJhcHBsaWNhdGlvbi94bWwtZHRkXCI6W1wiZHRkXCJdLFwiYXBwbGljYXRpb24veG9wK3htbFwiOltcInhvcFwiXSxcImFwcGxpY2F0aW9uL3hwcm9jK3htbFwiOltcInhwbFwiXSxcImFwcGxpY2F0aW9uL3hzbHQreG1sXCI6W1wieHNsdFwiXSxcImFwcGxpY2F0aW9uL3hzcGYreG1sXCI6W1wieHNwZlwiXSxcImFwcGxpY2F0aW9uL3h2K3htbFwiOltcIm14bWxcIixcInhodm1sXCIsXCJ4dm1sXCIsXCJ4dm1cIl0sXCJhcHBsaWNhdGlvbi95YW5nXCI6W1wieWFuZ1wiXSxcImFwcGxpY2F0aW9uL3lpbit4bWxcIjpbXCJ5aW5cIl0sXCJhcHBsaWNhdGlvbi96aXBcIjpbXCJ6aXBcIl0sXCJhdWRpby8zZ3BwXCI6W1wiM2dwcFwiXSxcImF1ZGlvL2FkcGNtXCI6W1wiYWRwXCJdLFwiYXVkaW8vYmFzaWNcIjpbXCJhdVwiLFwic25kXCJdLFwiYXVkaW8vbWlkaVwiOltcIm1pZFwiLFwibWlkaVwiLFwia2FyXCIsXCJybWlcIl0sXCJhdWRpby9tcDNcIjpbXCJtcDNcIl0sXCJhdWRpby9tcDRcIjpbXCJtNGFcIixcIm1wNGFcIl0sXCJhdWRpby9tcGVnXCI6W1wibXBnYVwiLFwibXAyXCIsXCJtcDJhXCIsXCJtcDNcIixcIm0yYVwiLFwibTNhXCJdLFwiYXVkaW8vb2dnXCI6W1wib2dhXCIsXCJvZ2dcIixcInNweFwiXSxcImF1ZGlvL3MzbVwiOltcInMzbVwiXSxcImF1ZGlvL3NpbGtcIjpbXCJzaWxcIl0sXCJhdWRpby92bmQuZGVjZS5hdWRpb1wiOltcInV2YVwiLFwidXZ2YVwiXSxcImF1ZGlvL3ZuZC5kaWdpdGFsLXdpbmRzXCI6W1wiZW9sXCJdLFwiYXVkaW8vdm5kLmRyYVwiOltcImRyYVwiXSxcImF1ZGlvL3ZuZC5kdHNcIjpbXCJkdHNcIl0sXCJhdWRpby92bmQuZHRzLmhkXCI6W1wiZHRzaGRcIl0sXCJhdWRpby92bmQubHVjZW50LnZvaWNlXCI6W1wibHZwXCJdLFwiYXVkaW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weWFcIjpbXCJweWFcIl0sXCJhdWRpby92bmQubnVlcmEuZWNlbHA0ODAwXCI6W1wiZWNlbHA0ODAwXCJdLFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwNzQ3MFwiOltcImVjZWxwNzQ3MFwiXSxcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDk2MDBcIjpbXCJlY2VscDk2MDBcIl0sXCJhdWRpby92bmQucmlwXCI6W1wicmlwXCJdLFwiYXVkaW8vd2F2XCI6W1wid2F2XCJdLFwiYXVkaW8vd2F2ZVwiOltcIndhdlwiXSxcImF1ZGlvL3dlYm1cIjpbXCJ3ZWJhXCJdLFwiYXVkaW8veC1hYWNcIjpbXCJhYWNcIl0sXCJhdWRpby94LWFpZmZcIjpbXCJhaWZcIixcImFpZmZcIixcImFpZmNcIl0sXCJhdWRpby94LWNhZlwiOltcImNhZlwiXSxcImF1ZGlvL3gtZmxhY1wiOltcImZsYWNcIl0sXCJhdWRpby94LW00YVwiOltcIm00YVwiXSxcImF1ZGlvL3gtbWF0cm9za2FcIjpbXCJta2FcIl0sXCJhdWRpby94LW1wZWd1cmxcIjpbXCJtM3VcIl0sXCJhdWRpby94LW1zLXdheFwiOltcIndheFwiXSxcImF1ZGlvL3gtbXMtd21hXCI6W1wid21hXCJdLFwiYXVkaW8veC1wbi1yZWFsYXVkaW9cIjpbXCJyYW1cIixcInJhXCJdLFwiYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luXCI6W1wicm1wXCJdLFwiYXVkaW8veC1yZWFsYXVkaW9cIjpbXCJyYVwiXSxcImF1ZGlvL3gtd2F2XCI6W1wid2F2XCJdLFwiYXVkaW8veG1cIjpbXCJ4bVwiXSxcImNoZW1pY2FsL3gtY2R4XCI6W1wiY2R4XCJdLFwiY2hlbWljYWwveC1jaWZcIjpbXCJjaWZcIl0sXCJjaGVtaWNhbC94LWNtZGZcIjpbXCJjbWRmXCJdLFwiY2hlbWljYWwveC1jbWxcIjpbXCJjbWxcIl0sXCJjaGVtaWNhbC94LWNzbWxcIjpbXCJjc21sXCJdLFwiY2hlbWljYWwveC14eXpcIjpbXCJ4eXpcIl0sXCJmb250L290ZlwiOltcIm90ZlwiXSxcImltYWdlL2FwbmdcIjpbXCJhcG5nXCJdLFwiaW1hZ2UvYm1wXCI6W1wiYm1wXCJdLFwiaW1hZ2UvY2dtXCI6W1wiY2dtXCJdLFwiaW1hZ2UvZzNmYXhcIjpbXCJnM1wiXSxcImltYWdlL2dpZlwiOltcImdpZlwiXSxcImltYWdlL2llZlwiOltcImllZlwiXSxcImltYWdlL2pwZWdcIjpbXCJqcGVnXCIsXCJqcGdcIixcImpwZVwiXSxcImltYWdlL2t0eFwiOltcImt0eFwiXSxcImltYWdlL3BuZ1wiOltcInBuZ1wiXSxcImltYWdlL3Bycy5idGlmXCI6W1wiYnRpZlwiXSxcImltYWdlL3NnaVwiOltcInNnaVwiXSxcImltYWdlL3N2Zyt4bWxcIjpbXCJzdmdcIixcInN2Z3pcIl0sXCJpbWFnZS90aWZmXCI6W1widGlmZlwiLFwidGlmXCJdLFwiaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcFwiOltcInBzZFwiXSxcImltYWdlL3ZuZC5kZWNlLmdyYXBoaWNcIjpbXCJ1dmlcIixcInV2dmlcIixcInV2Z1wiLFwidXZ2Z1wiXSxcImltYWdlL3ZuZC5kanZ1XCI6W1wiZGp2dVwiLFwiZGp2XCJdLFwiaW1hZ2Uvdm5kLmR2Yi5zdWJ0aXRsZVwiOltcInN1YlwiXSxcImltYWdlL3ZuZC5kd2dcIjpbXCJkd2dcIl0sXCJpbWFnZS92bmQuZHhmXCI6W1wiZHhmXCJdLFwiaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldFwiOltcImZic1wiXSxcImltYWdlL3ZuZC5mcHhcIjpbXCJmcHhcIl0sXCJpbWFnZS92bmQuZnN0XCI6W1wiZnN0XCJdLFwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtbW1yXCI6W1wibW1yXCJdLFwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtcmxjXCI6W1wicmxjXCJdLFwiaW1hZ2Uvdm5kLm1zLW1vZGlcIjpbXCJtZGlcIl0sXCJpbWFnZS92bmQubXMtcGhvdG9cIjpbXCJ3ZHBcIl0sXCJpbWFnZS92bmQubmV0LWZweFwiOltcIm5weFwiXSxcImltYWdlL3ZuZC53YXAud2JtcFwiOltcIndibXBcIl0sXCJpbWFnZS92bmQueGlmZlwiOltcInhpZlwiXSxcImltYWdlL3dlYnBcIjpbXCJ3ZWJwXCJdLFwiaW1hZ2UveC0zZHNcIjpbXCIzZHNcIl0sXCJpbWFnZS94LWNtdS1yYXN0ZXJcIjpbXCJyYXNcIl0sXCJpbWFnZS94LWNteFwiOltcImNteFwiXSxcImltYWdlL3gtZnJlZWhhbmRcIjpbXCJmaFwiLFwiZmhjXCIsXCJmaDRcIixcImZoNVwiLFwiZmg3XCJdLFwiaW1hZ2UveC1pY29uXCI6W1wiaWNvXCJdLFwiaW1hZ2UveC1qbmdcIjpbXCJqbmdcIl0sXCJpbWFnZS94LW1yc2lkLWltYWdlXCI6W1wic2lkXCJdLFwiaW1hZ2UveC1tcy1ibXBcIjpbXCJibXBcIl0sXCJpbWFnZS94LXBjeFwiOltcInBjeFwiXSxcImltYWdlL3gtcGljdFwiOltcInBpY1wiLFwicGN0XCJdLFwiaW1hZ2UveC1wb3J0YWJsZS1hbnltYXBcIjpbXCJwbm1cIl0sXCJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcFwiOltcInBibVwiXSxcImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcFwiOltcInBnbVwiXSxcImltYWdlL3gtcG9ydGFibGUtcGl4bWFwXCI6W1wicHBtXCJdLFwiaW1hZ2UveC1yZ2JcIjpbXCJyZ2JcIl0sXCJpbWFnZS94LXRnYVwiOltcInRnYVwiXSxcImltYWdlL3gteGJpdG1hcFwiOltcInhibVwiXSxcImltYWdlL3gteHBpeG1hcFwiOltcInhwbVwiXSxcImltYWdlL3gteHdpbmRvd2R1bXBcIjpbXCJ4d2RcIl0sXCJtZXNzYWdlL3JmYzgyMlwiOltcImVtbFwiLFwibWltZVwiXSxcIm1vZGVsL2dsdGYranNvblwiOltcImdsdGZcIl0sXCJtb2RlbC9nbHRmLWJpbmFyeVwiOltcImdsYlwiXSxcIm1vZGVsL2lnZXNcIjpbXCJpZ3NcIixcImlnZXNcIl0sXCJtb2RlbC9tZXNoXCI6W1wibXNoXCIsXCJtZXNoXCIsXCJzaWxvXCJdLFwibW9kZWwvdm5kLmNvbGxhZGEreG1sXCI6W1wiZGFlXCJdLFwibW9kZWwvdm5kLmR3ZlwiOltcImR3ZlwiXSxcIm1vZGVsL3ZuZC5nZGxcIjpbXCJnZGxcIl0sXCJtb2RlbC92bmQuZ3R3XCI6W1wiZ3R3XCJdLFwibW9kZWwvdm5kLm10c1wiOltcIm10c1wiXSxcIm1vZGVsL3ZuZC52dHVcIjpbXCJ2dHVcIl0sXCJtb2RlbC92cm1sXCI6W1wid3JsXCIsXCJ2cm1sXCJdLFwibW9kZWwveDNkK2JpbmFyeVwiOltcIngzZGJcIixcIngzZGJ6XCJdLFwibW9kZWwveDNkK3ZybWxcIjpbXCJ4M2R2XCIsXCJ4M2R2elwiXSxcIm1vZGVsL3gzZCt4bWxcIjpbXCJ4M2RcIixcIngzZHpcIl0sXCJ0ZXh0L2NhY2hlLW1hbmlmZXN0XCI6W1wiYXBwY2FjaGVcIixcIm1hbmlmZXN0XCJdLFwidGV4dC9jYWxlbmRhclwiOltcImljc1wiLFwiaWZiXCJdLFwidGV4dC9jb2ZmZWVzY3JpcHRcIjpbXCJjb2ZmZWVcIixcImxpdGNvZmZlZVwiXSxcInRleHQvY3NzXCI6W1wiY3NzXCJdLFwidGV4dC9jc3ZcIjpbXCJjc3ZcIl0sXCJ0ZXh0L2hqc29uXCI6W1wiaGpzb25cIl0sXCJ0ZXh0L2h0bWxcIjpbXCJodG1sXCIsXCJodG1cIixcInNodG1sXCJdLFwidGV4dC9qYWRlXCI6W1wiamFkZVwiXSxcInRleHQvanN4XCI6W1wianN4XCJdLFwidGV4dC9sZXNzXCI6W1wibGVzc1wiXSxcInRleHQvbWFya2Rvd25cIjpbXCJtYXJrZG93blwiLFwibWRcIl0sXCJ0ZXh0L21hdGhtbFwiOltcIm1tbFwiXSxcInRleHQvbjNcIjpbXCJuM1wiXSxcInRleHQvcGxhaW5cIjpbXCJ0eHRcIixcInRleHRcIixcImNvbmZcIixcImRlZlwiLFwibGlzdFwiLFwibG9nXCIsXCJpblwiLFwiaW5pXCJdLFwidGV4dC9wcnMubGluZXMudGFnXCI6W1wiZHNjXCJdLFwidGV4dC9yaWNodGV4dFwiOltcInJ0eFwiXSxcInRleHQvcnRmXCI6W1wicnRmXCJdLFwidGV4dC9zZ21sXCI6W1wic2dtbFwiLFwic2dtXCJdLFwidGV4dC9zbGltXCI6W1wic2xpbVwiLFwic2xtXCJdLFwidGV4dC9zdHlsdXNcIjpbXCJzdHlsdXNcIixcInN0eWxcIl0sXCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzXCI6W1widHN2XCJdLFwidGV4dC90cm9mZlwiOltcInRcIixcInRyXCIsXCJyb2ZmXCIsXCJtYW5cIixcIm1lXCIsXCJtc1wiXSxcInRleHQvdHVydGxlXCI6W1widHRsXCJdLFwidGV4dC91cmktbGlzdFwiOltcInVyaVwiLFwidXJpc1wiLFwidXJsc1wiXSxcInRleHQvdmNhcmRcIjpbXCJ2Y2FyZFwiXSxcInRleHQvdm5kLmN1cmxcIjpbXCJjdXJsXCJdLFwidGV4dC92bmQuY3VybC5kY3VybFwiOltcImRjdXJsXCJdLFwidGV4dC92bmQuY3VybC5tY3VybFwiOltcIm1jdXJsXCJdLFwidGV4dC92bmQuY3VybC5zY3VybFwiOltcInNjdXJsXCJdLFwidGV4dC92bmQuZHZiLnN1YnRpdGxlXCI6W1wic3ViXCJdLFwidGV4dC92bmQuZmx5XCI6W1wiZmx5XCJdLFwidGV4dC92bmQuZm1pLmZsZXhzdG9yXCI6W1wiZmx4XCJdLFwidGV4dC92bmQuZ3JhcGh2aXpcIjpbXCJndlwiXSxcInRleHQvdm5kLmluM2QuM2RtbFwiOltcIjNkbWxcIl0sXCJ0ZXh0L3ZuZC5pbjNkLnNwb3RcIjpbXCJzcG90XCJdLFwidGV4dC92bmQuc3VuLmoybWUuYXBwLWRlc2NyaXB0b3JcIjpbXCJqYWRcIl0sXCJ0ZXh0L3ZuZC53YXAud21sXCI6W1wid21sXCJdLFwidGV4dC92bmQud2FwLndtbHNjcmlwdFwiOltcIndtbHNcIl0sXCJ0ZXh0L3Z0dFwiOltcInZ0dFwiXSxcInRleHQveC1hc21cIjpbXCJzXCIsXCJhc21cIl0sXCJ0ZXh0L3gtY1wiOltcImNcIixcImNjXCIsXCJjeHhcIixcImNwcFwiLFwiaFwiLFwiaGhcIixcImRpY1wiXSxcInRleHQveC1jb21wb25lbnRcIjpbXCJodGNcIl0sXCJ0ZXh0L3gtZm9ydHJhblwiOltcImZcIixcImZvclwiLFwiZjc3XCIsXCJmOTBcIl0sXCJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1wbGF0ZVwiOltcImhic1wiXSxcInRleHQveC1qYXZhLXNvdXJjZVwiOltcImphdmFcIl0sXCJ0ZXh0L3gtbHVhXCI6W1wibHVhXCJdLFwidGV4dC94LW1hcmtkb3duXCI6W1wibWtkXCJdLFwidGV4dC94LW5mb1wiOltcIm5mb1wiXSxcInRleHQveC1vcG1sXCI6W1wib3BtbFwiXSxcInRleHQveC1vcmdcIjpbXCJvcmdcIl0sXCJ0ZXh0L3gtcGFzY2FsXCI6W1wicFwiLFwicGFzXCJdLFwidGV4dC94LXByb2Nlc3NpbmdcIjpbXCJwZGVcIl0sXCJ0ZXh0L3gtc2Fzc1wiOltcInNhc3NcIl0sXCJ0ZXh0L3gtc2Nzc1wiOltcInNjc3NcIl0sXCJ0ZXh0L3gtc2V0ZXh0XCI6W1wiZXR4XCJdLFwidGV4dC94LXNmdlwiOltcInNmdlwiXSxcInRleHQveC1zdXNlLXltcFwiOltcInltcFwiXSxcInRleHQveC11dWVuY29kZVwiOltcInV1XCJdLFwidGV4dC94LXZjYWxlbmRhclwiOltcInZjc1wiXSxcInRleHQveC12Y2FyZFwiOltcInZjZlwiXSxcInRleHQveG1sXCI6W1wieG1sXCJdLFwidGV4dC95YW1sXCI6W1wieWFtbFwiLFwieW1sXCJdLFwidmlkZW8vM2dwcFwiOltcIjNncFwiLFwiM2dwcFwiXSxcInZpZGVvLzNncHAyXCI6W1wiM2cyXCJdLFwidmlkZW8vaDI2MVwiOltcImgyNjFcIl0sXCJ2aWRlby9oMjYzXCI6W1wiaDI2M1wiXSxcInZpZGVvL2gyNjRcIjpbXCJoMjY0XCJdLFwidmlkZW8vanBlZ1wiOltcImpwZ3ZcIl0sXCJ2aWRlby9qcG1cIjpbXCJqcG1cIixcImpwZ21cIl0sXCJ2aWRlby9tajJcIjpbXCJtajJcIixcIm1qcDJcIl0sXCJ2aWRlby9tcDJ0XCI6W1widHNcIl0sXCJ2aWRlby9tcDRcIjpbXCJtcDRcIixcIm1wNHZcIixcIm1wZzRcIl0sXCJ2aWRlby9tcGVnXCI6W1wibXBlZ1wiLFwibXBnXCIsXCJtcGVcIixcIm0xdlwiLFwibTJ2XCJdLFwidmlkZW8vb2dnXCI6W1wib2d2XCJdLFwidmlkZW8vcXVpY2t0aW1lXCI6W1wicXRcIixcIm1vdlwiXSxcInZpZGVvL3ZuZC5kZWNlLmhkXCI6W1widXZoXCIsXCJ1dnZoXCJdLFwidmlkZW8vdm5kLmRlY2UubW9iaWxlXCI6W1widXZtXCIsXCJ1dnZtXCJdLFwidmlkZW8vdm5kLmRlY2UucGRcIjpbXCJ1dnBcIixcInV2dnBcIl0sXCJ2aWRlby92bmQuZGVjZS5zZFwiOltcInV2c1wiLFwidXZ2c1wiXSxcInZpZGVvL3ZuZC5kZWNlLnZpZGVvXCI6W1widXZ2XCIsXCJ1dnZ2XCJdLFwidmlkZW8vdm5kLmR2Yi5maWxlXCI6W1wiZHZiXCJdLFwidmlkZW8vdm5kLmZ2dFwiOltcImZ2dFwiXSxcInZpZGVvL3ZuZC5tcGVndXJsXCI6W1wibXh1XCIsXCJtNHVcIl0sXCJ2aWRlby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5dlwiOltcInB5dlwiXSxcInZpZGVvL3ZuZC51dnZ1Lm1wNFwiOltcInV2dVwiLFwidXZ2dVwiXSxcInZpZGVvL3ZuZC52aXZvXCI6W1widml2XCJdLFwidmlkZW8vd2VibVwiOltcIndlYm1cIl0sXCJ2aWRlby94LWY0dlwiOltcImY0dlwiXSxcInZpZGVvL3gtZmxpXCI6W1wiZmxpXCJdLFwidmlkZW8veC1mbHZcIjpbXCJmbHZcIl0sXCJ2aWRlby94LW00dlwiOltcIm00dlwiXSxcInZpZGVvL3gtbWF0cm9za2FcIjpbXCJta3ZcIixcIm1rM2RcIixcIm1rc1wiXSxcInZpZGVvL3gtbW5nXCI6W1wibW5nXCJdLFwidmlkZW8veC1tcy1hc2ZcIjpbXCJhc2ZcIixcImFzeFwiXSxcInZpZGVvL3gtbXMtdm9iXCI6W1widm9iXCJdLFwidmlkZW8veC1tcy13bVwiOltcIndtXCJdLFwidmlkZW8veC1tcy13bXZcIjpbXCJ3bXZcIl0sXCJ2aWRlby94LW1zLXdteFwiOltcIndteFwiXSxcInZpZGVvL3gtbXMtd3Z4XCI6W1wid3Z4XCJdLFwidmlkZW8veC1tc3ZpZGVvXCI6W1wiYXZpXCJdLFwidmlkZW8veC1zZ2ktbW92aWVcIjpbXCJtb3ZpZVwiXSxcInZpZGVvL3gtc212XCI6W1wic212XCJdLFwieC1jb25mZXJlbmNlL3gtY29vbHRhbGtcIjpbXCJpY2VcIl19XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL21pbWUvdHlwZXMuanNvblxuLy8gbW9kdWxlIGlkID0gMTY5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogZm9yd2FyZGVkXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE3IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZvcndhcmRlZFxuXG4vKipcbiAqIEdldCBhbGwgYWRkcmVzc2VzIGluIHRoZSByZXF1ZXN0LCB1c2luZyB0aGUgYFgtRm9yd2FyZGVkLUZvcmAgaGVhZGVyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAqIEByZXR1cm4ge2FycmF5fVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGZvcndhcmRlZCAocmVxKSB7XG4gIGlmICghcmVxKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgcmVxIGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIC8vIHNpbXBsZSBoZWFkZXIgcGFyc2luZ1xuICB2YXIgcHJveHlBZGRycyA9IHBhcnNlKHJlcS5oZWFkZXJzWyd4LWZvcndhcmRlZC1mb3InXSB8fCAnJylcbiAgdmFyIHNvY2tldEFkZHIgPSByZXEuY29ubmVjdGlvbi5yZW1vdGVBZGRyZXNzXG4gIHZhciBhZGRycyA9IFtzb2NrZXRBZGRyXS5jb25jYXQocHJveHlBZGRycylcblxuICAvLyByZXR1cm4gYWxsIGFkZHJlc3Nlc1xuICByZXR1cm4gYWRkcnNcbn1cblxuLyoqXG4gKiBQYXJzZSB0aGUgWC1Gb3J3YXJkZWQtRm9yIGhlYWRlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGVhZGVyXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlIChoZWFkZXIpIHtcbiAgdmFyIGVuZCA9IGhlYWRlci5sZW5ndGhcbiAgdmFyIGxpc3QgPSBbXVxuICB2YXIgc3RhcnQgPSBoZWFkZXIubGVuZ3RoXG5cbiAgLy8gZ2F0aGVyIGFkZHJlc3NlcywgYmFja3dhcmRzXG4gIGZvciAodmFyIGkgPSBoZWFkZXIubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBzd2l0Y2ggKGhlYWRlci5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICBjYXNlIDB4MjA6IC8qICAgKi9cbiAgICAgICAgaWYgKHN0YXJ0ID09PSBlbmQpIHtcbiAgICAgICAgICBzdGFydCA9IGVuZCA9IGlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAweDJjOiAvKiAsICovXG4gICAgICAgIGlmIChzdGFydCAhPT0gZW5kKSB7XG4gICAgICAgICAgbGlzdC5wdXNoKGhlYWRlci5zdWJzdHJpbmcoc3RhcnQsIGVuZCkpXG4gICAgICAgIH1cbiAgICAgICAgc3RhcnQgPSBlbmQgPSBpXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzdGFydCA9IGlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvLyBmaW5hbCBhZGRyZXNzXG4gIGlmIChzdGFydCAhPT0gZW5kKSB7XG4gICAgbGlzdC5wdXNoKGhlYWRlci5zdWJzdHJpbmcoc3RhcnQsIGVuZCkpXG4gIH1cblxuICByZXR1cm4gbGlzdFxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2ZvcndhcmRlZC9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTcwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIihmdW5jdGlvbigpIHtcbiAgdmFyIGV4cGFuZElQdjYsIGlwYWRkciwgaXB2NFBhcnQsIGlwdjRSZWdleGVzLCBpcHY2UGFydCwgaXB2NlJlZ2V4ZXMsIG1hdGNoQ0lEUiwgcm9vdCwgem9uZUluZGV4O1xuXG4gIGlwYWRkciA9IHt9O1xuXG4gIHJvb3QgPSB0aGlzO1xuXG4gIGlmICgodHlwZW9mIG1vZHVsZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBtb2R1bGUgIT09IG51bGwpICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBpcGFkZHI7XG4gIH0gZWxzZSB7XG4gICAgcm9vdFsnaXBhZGRyJ10gPSBpcGFkZHI7XG4gIH1cblxuICBtYXRjaENJRFIgPSBmdW5jdGlvbihmaXJzdCwgc2Vjb25kLCBwYXJ0U2l6ZSwgY2lkckJpdHMpIHtcbiAgICB2YXIgcGFydCwgc2hpZnQ7XG4gICAgaWYgKGZpcnN0Lmxlbmd0aCAhPT0gc2Vjb25kLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaXBhZGRyOiBjYW5ub3QgbWF0Y2ggQ0lEUiBmb3Igb2JqZWN0cyB3aXRoIGRpZmZlcmVudCBsZW5ndGhzXCIpO1xuICAgIH1cbiAgICBwYXJ0ID0gMDtcbiAgICB3aGlsZSAoY2lkckJpdHMgPiAwKSB7XG4gICAgICBzaGlmdCA9IHBhcnRTaXplIC0gY2lkckJpdHM7XG4gICAgICBpZiAoc2hpZnQgPCAwKSB7XG4gICAgICAgIHNoaWZ0ID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChmaXJzdFtwYXJ0XSA+PiBzaGlmdCAhPT0gc2Vjb25kW3BhcnRdID4+IHNoaWZ0KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNpZHJCaXRzIC09IHBhcnRTaXplO1xuICAgICAgcGFydCArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBpcGFkZHIuc3VibmV0TWF0Y2ggPSBmdW5jdGlvbihhZGRyZXNzLCByYW5nZUxpc3QsIGRlZmF1bHROYW1lKSB7XG4gICAgdmFyIGssIGxlbiwgcmFuZ2VOYW1lLCByYW5nZVN1Ym5ldHMsIHN1Ym5ldDtcbiAgICBpZiAoZGVmYXVsdE5hbWUgPT0gbnVsbCkge1xuICAgICAgZGVmYXVsdE5hbWUgPSAndW5pY2FzdCc7XG4gICAgfVxuICAgIGZvciAocmFuZ2VOYW1lIGluIHJhbmdlTGlzdCkge1xuICAgICAgcmFuZ2VTdWJuZXRzID0gcmFuZ2VMaXN0W3JhbmdlTmFtZV07XG4gICAgICBpZiAocmFuZ2VTdWJuZXRzWzBdICYmICEocmFuZ2VTdWJuZXRzWzBdIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICAgIHJhbmdlU3VibmV0cyA9IFtyYW5nZVN1Ym5ldHNdO1xuICAgICAgfVxuICAgICAgZm9yIChrID0gMCwgbGVuID0gcmFuZ2VTdWJuZXRzLmxlbmd0aDsgayA8IGxlbjsgaysrKSB7XG4gICAgICAgIHN1Ym5ldCA9IHJhbmdlU3VibmV0c1trXTtcbiAgICAgICAgaWYgKGFkZHJlc3Mua2luZCgpID09PSBzdWJuZXRbMF0ua2luZCgpKSB7XG4gICAgICAgICAgaWYgKGFkZHJlc3MubWF0Y2guYXBwbHkoYWRkcmVzcywgc3VibmV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHJhbmdlTmFtZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHROYW1lO1xuICB9O1xuXG4gIGlwYWRkci5JUHY0ID0gKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIElQdjQob2N0ZXRzKSB7XG4gICAgICB2YXIgaywgbGVuLCBvY3RldDtcbiAgICAgIGlmIChvY3RldHMubGVuZ3RoICE9PSA0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogaXB2NCBvY3RldCBjb3VudCBzaG91bGQgYmUgNFwiKTtcbiAgICAgIH1cbiAgICAgIGZvciAoayA9IDAsIGxlbiA9IG9jdGV0cy5sZW5ndGg7IGsgPCBsZW47IGsrKykge1xuICAgICAgICBvY3RldCA9IG9jdGV0c1trXTtcbiAgICAgICAgaWYgKCEoKDAgPD0gb2N0ZXQgJiYgb2N0ZXQgPD0gMjU1KSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IGlwdjQgb2N0ZXQgc2hvdWxkIGZpdCBpbiA4IGJpdHNcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMub2N0ZXRzID0gb2N0ZXRzO1xuICAgIH1cblxuICAgIElQdjQucHJvdG90eXBlLmtpbmQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAnaXB2NCc7XG4gICAgfTtcblxuICAgIElQdjQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5vY3RldHMuam9pbihcIi5cIik7XG4gICAgfTtcblxuICAgIElQdjQucHJvdG90eXBlLnRvTm9ybWFsaXplZFN0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoKTtcbiAgICB9O1xuXG4gICAgSVB2NC5wcm90b3R5cGUudG9CeXRlQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLm9jdGV0cy5zbGljZSgwKTtcbiAgICB9O1xuXG4gICAgSVB2NC5wcm90b3R5cGUubWF0Y2ggPSBmdW5jdGlvbihvdGhlciwgY2lkclJhbmdlKSB7XG4gICAgICB2YXIgcmVmO1xuICAgICAgaWYgKGNpZHJSYW5nZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHJlZiA9IG90aGVyLCBvdGhlciA9IHJlZlswXSwgY2lkclJhbmdlID0gcmVmWzFdO1xuICAgICAgfVxuICAgICAgaWYgKG90aGVyLmtpbmQoKSAhPT0gJ2lwdjQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImlwYWRkcjogY2Fubm90IG1hdGNoIGlwdjQgYWRkcmVzcyB3aXRoIG5vbi1pcHY0IG9uZVwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaENJRFIodGhpcy5vY3RldHMsIG90aGVyLm9jdGV0cywgOCwgY2lkclJhbmdlKTtcbiAgICB9O1xuXG4gICAgSVB2NC5wcm90b3R5cGUuU3BlY2lhbFJhbmdlcyA9IHtcbiAgICAgIHVuc3BlY2lmaWVkOiBbW25ldyBJUHY0KFswLCAwLCAwLCAwXSksIDhdXSxcbiAgICAgIGJyb2FkY2FzdDogW1tuZXcgSVB2NChbMjU1LCAyNTUsIDI1NSwgMjU1XSksIDMyXV0sXG4gICAgICBtdWx0aWNhc3Q6IFtbbmV3IElQdjQoWzIyNCwgMCwgMCwgMF0pLCA0XV0sXG4gICAgICBsaW5rTG9jYWw6IFtbbmV3IElQdjQoWzE2OSwgMjU0LCAwLCAwXSksIDE2XV0sXG4gICAgICBsb29wYmFjazogW1tuZXcgSVB2NChbMTI3LCAwLCAwLCAwXSksIDhdXSxcbiAgICAgIGNhcnJpZXJHcmFkZU5hdDogW1tuZXcgSVB2NChbMTAwLCA2NCwgMCwgMF0pLCAxMF1dLFxuICAgICAgXCJwcml2YXRlXCI6IFtbbmV3IElQdjQoWzEwLCAwLCAwLCAwXSksIDhdLCBbbmV3IElQdjQoWzE3MiwgMTYsIDAsIDBdKSwgMTJdLCBbbmV3IElQdjQoWzE5MiwgMTY4LCAwLCAwXSksIDE2XV0sXG4gICAgICByZXNlcnZlZDogW1tuZXcgSVB2NChbMTkyLCAwLCAwLCAwXSksIDI0XSwgW25ldyBJUHY0KFsxOTIsIDAsIDIsIDBdKSwgMjRdLCBbbmV3IElQdjQoWzE5MiwgODgsIDk5LCAwXSksIDI0XSwgW25ldyBJUHY0KFsxOTgsIDUxLCAxMDAsIDBdKSwgMjRdLCBbbmV3IElQdjQoWzIwMywgMCwgMTEzLCAwXSksIDI0XSwgW25ldyBJUHY0KFsyNDAsIDAsIDAsIDBdKSwgNF1dXG4gICAgfTtcblxuICAgIElQdjQucHJvdG90eXBlLnJhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXBhZGRyLnN1Ym5ldE1hdGNoKHRoaXMsIHRoaXMuU3BlY2lhbFJhbmdlcyk7XG4gICAgfTtcblxuICAgIElQdjQucHJvdG90eXBlLnRvSVB2NE1hcHBlZEFkZHJlc3MgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpcGFkZHIuSVB2Ni5wYXJzZShcIjo6ZmZmZjpcIiArICh0aGlzLnRvU3RyaW5nKCkpKTtcbiAgICB9O1xuXG4gICAgSVB2NC5wcm90b3R5cGUucHJlZml4TGVuZ3RoRnJvbVN1Ym5ldE1hc2sgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjaWRyLCBpLCBrLCBvY3RldCwgc3RvcCwgemVyb3MsIHplcm90YWJsZTtcbiAgICAgIHplcm90YWJsZSA9IHtcbiAgICAgICAgMDogOCxcbiAgICAgICAgMTI4OiA3LFxuICAgICAgICAxOTI6IDYsXG4gICAgICAgIDIyNDogNSxcbiAgICAgICAgMjQwOiA0LFxuICAgICAgICAyNDg6IDMsXG4gICAgICAgIDI1MjogMixcbiAgICAgICAgMjU0OiAxLFxuICAgICAgICAyNTU6IDBcbiAgICAgIH07XG4gICAgICBjaWRyID0gMDtcbiAgICAgIHN0b3AgPSBmYWxzZTtcbiAgICAgIGZvciAoaSA9IGsgPSAzOyBrID49IDA7IGkgPSBrICs9IC0xKSB7XG4gICAgICAgIG9jdGV0ID0gdGhpcy5vY3RldHNbaV07XG4gICAgICAgIGlmIChvY3RldCBpbiB6ZXJvdGFibGUpIHtcbiAgICAgICAgICB6ZXJvcyA9IHplcm90YWJsZVtvY3RldF07XG4gICAgICAgICAgaWYgKHN0b3AgJiYgemVyb3MgIT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoemVyb3MgIT09IDgpIHtcbiAgICAgICAgICAgIHN0b3AgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjaWRyICs9IHplcm9zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gMzIgLSBjaWRyO1xuICAgIH07XG5cbiAgICByZXR1cm4gSVB2NDtcblxuICB9KSgpO1xuXG4gIGlwdjRQYXJ0ID0gXCIoMD9cXFxcZCt8MHhbYS1mMC05XSspXCI7XG5cbiAgaXB2NFJlZ2V4ZXMgPSB7XG4gICAgZm91ck9jdGV0OiBuZXcgUmVnRXhwKFwiXlwiICsgaXB2NFBhcnQgKyBcIlxcXFwuXCIgKyBpcHY0UGFydCArIFwiXFxcXC5cIiArIGlwdjRQYXJ0ICsgXCJcXFxcLlwiICsgaXB2NFBhcnQgKyBcIiRcIiwgJ2knKSxcbiAgICBsb25nVmFsdWU6IG5ldyBSZWdFeHAoXCJeXCIgKyBpcHY0UGFydCArIFwiJFwiLCAnaScpXG4gIH07XG5cbiAgaXBhZGRyLklQdjQucGFyc2VyID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIG1hdGNoLCBwYXJzZUludEF1dG8sIHBhcnQsIHNoaWZ0LCB2YWx1ZTtcbiAgICBwYXJzZUludEF1dG8gPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIGlmIChzdHJpbmdbMF0gPT09IFwiMFwiICYmIHN0cmluZ1sxXSAhPT0gXCJ4XCIpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHN0cmluZywgOCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoc3RyaW5nKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChtYXRjaCA9IHN0cmluZy5tYXRjaChpcHY0UmVnZXhlcy5mb3VyT2N0ZXQpKSB7XG4gICAgICByZXR1cm4gKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgaywgbGVuLCByZWYsIHJlc3VsdHM7XG4gICAgICAgIHJlZiA9IG1hdGNoLnNsaWNlKDEsIDYpO1xuICAgICAgICByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoayA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGsgPCBsZW47IGsrKykge1xuICAgICAgICAgIHBhcnQgPSByZWZba107XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKHBhcnNlSW50QXV0byhwYXJ0KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KSgpO1xuICAgIH0gZWxzZSBpZiAobWF0Y2ggPSBzdHJpbmcubWF0Y2goaXB2NFJlZ2V4ZXMubG9uZ1ZhbHVlKSkge1xuICAgICAgdmFsdWUgPSBwYXJzZUludEF1dG8obWF0Y2hbMV0pO1xuICAgICAgaWYgKHZhbHVlID4gMHhmZmZmZmZmZiB8fCB2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaXBhZGRyOiBhZGRyZXNzIG91dHNpZGUgZGVmaW5lZCByYW5nZVwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoKGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgaywgcmVzdWx0cztcbiAgICAgICAgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKHNoaWZ0ID0gayA9IDA7IGsgPD0gMjQ7IHNoaWZ0ID0gayArPSA4KSB7XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKCh2YWx1ZSA+PiBzaGlmdCkgJiAweGZmKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0pKCkpLnJldmVyc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIGlwYWRkci5JUHY2ID0gKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIElQdjYocGFydHMsIHpvbmVJZCkge1xuICAgICAgdmFyIGksIGssIGwsIGxlbiwgcGFydCwgcmVmO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5wYXJ0cyA9IFtdO1xuICAgICAgICBmb3IgKGkgPSBrID0gMDsgayA8PSAxNDsgaSA9IGsgKz0gMikge1xuICAgICAgICAgIHRoaXMucGFydHMucHVzaCgocGFydHNbaV0gPDwgOCkgfCBwYXJ0c1tpICsgMV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhcnRzLmxlbmd0aCA9PT0gOCkge1xuICAgICAgICB0aGlzLnBhcnRzID0gcGFydHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IGlwdjYgcGFydCBjb3VudCBzaG91bGQgYmUgOCBvciAxNlwiKTtcbiAgICAgIH1cbiAgICAgIHJlZiA9IHRoaXMucGFydHM7XG4gICAgICBmb3IgKGwgPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBsIDwgbGVuOyBsKyspIHtcbiAgICAgICAgcGFydCA9IHJlZltsXTtcbiAgICAgICAgaWYgKCEoKDAgPD0gcGFydCAmJiBwYXJ0IDw9IDB4ZmZmZikpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaXBhZGRyOiBpcHY2IHBhcnQgc2hvdWxkIGZpdCBpbiAxNiBiaXRzXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoem9uZUlkKSB7XG4gICAgICAgIHRoaXMuem9uZUlkID0gem9uZUlkO1xuICAgICAgfVxuICAgIH1cblxuICAgIElQdjYucHJvdG90eXBlLmtpbmQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiAnaXB2Nic7XG4gICAgfTtcblxuICAgIElQdjYucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50b05vcm1hbGl6ZWRTdHJpbmcoKS5yZXBsYWNlKC8oKF58OikoMCg6fCQpKSspLywgJzo6Jyk7XG4gICAgfTtcblxuICAgIElQdjYucHJvdG90eXBlLnRvQnl0ZUFycmF5ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYnl0ZXMsIGssIGxlbiwgcGFydCwgcmVmO1xuICAgICAgYnl0ZXMgPSBbXTtcbiAgICAgIHJlZiA9IHRoaXMucGFydHM7XG4gICAgICBmb3IgKGsgPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgICAgcGFydCA9IHJlZltrXTtcbiAgICAgICAgYnl0ZXMucHVzaChwYXJ0ID4+IDgpO1xuICAgICAgICBieXRlcy5wdXNoKHBhcnQgJiAweGZmKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBieXRlcztcbiAgICB9O1xuXG4gICAgSVB2Ni5wcm90b3R5cGUudG9Ob3JtYWxpemVkU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYWRkciwgcGFydCwgc3VmZml4O1xuICAgICAgYWRkciA9ICgoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBrLCBsZW4sIHJlZiwgcmVzdWx0cztcbiAgICAgICAgcmVmID0gdGhpcy5wYXJ0cztcbiAgICAgICAgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGsgPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgICAgICBwYXJ0ID0gcmVmW2tdO1xuICAgICAgICAgIHJlc3VsdHMucHVzaChwYXJ0LnRvU3RyaW5nKDE2KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KS5jYWxsKHRoaXMpKS5qb2luKFwiOlwiKTtcbiAgICAgIHN1ZmZpeCA9ICcnO1xuICAgICAgaWYgKHRoaXMuem9uZUlkKSB7XG4gICAgICAgIHN1ZmZpeCA9ICclJyArIHRoaXMuem9uZUlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFkZHIgKyBzdWZmaXg7XG4gICAgfTtcblxuICAgIElQdjYucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24ob3RoZXIsIGNpZHJSYW5nZSkge1xuICAgICAgdmFyIHJlZjtcbiAgICAgIGlmIChjaWRyUmFuZ2UgPT09IHZvaWQgMCkge1xuICAgICAgICByZWYgPSBvdGhlciwgb3RoZXIgPSByZWZbMF0sIGNpZHJSYW5nZSA9IHJlZlsxXTtcbiAgICAgIH1cbiAgICAgIGlmIChvdGhlci5raW5kKCkgIT09ICdpcHY2Jykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IGNhbm5vdCBtYXRjaCBpcHY2IGFkZHJlc3Mgd2l0aCBub24taXB2NiBvbmVcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2hDSURSKHRoaXMucGFydHMsIG90aGVyLnBhcnRzLCAxNiwgY2lkclJhbmdlKTtcbiAgICB9O1xuXG4gICAgSVB2Ni5wcm90b3R5cGUuU3BlY2lhbFJhbmdlcyA9IHtcbiAgICAgIHVuc3BlY2lmaWVkOiBbbmV3IElQdjYoWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdKSwgMTI4XSxcbiAgICAgIGxpbmtMb2NhbDogW25ldyBJUHY2KFsweGZlODAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdKSwgMTBdLFxuICAgICAgbXVsdGljYXN0OiBbbmV3IElQdjYoWzB4ZmYwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pLCA4XSxcbiAgICAgIGxvb3BiYWNrOiBbbmV3IElQdjYoWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDFdKSwgMTI4XSxcbiAgICAgIHVuaXF1ZUxvY2FsOiBbbmV3IElQdjYoWzB4ZmMwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pLCA3XSxcbiAgICAgIGlwdjRNYXBwZWQ6IFtuZXcgSVB2NihbMCwgMCwgMCwgMCwgMCwgMHhmZmZmLCAwLCAwXSksIDk2XSxcbiAgICAgIHJmYzYxNDU6IFtuZXcgSVB2NihbMCwgMCwgMCwgMCwgMHhmZmZmLCAwLCAwLCAwXSksIDk2XSxcbiAgICAgIHJmYzYwNTI6IFtuZXcgSVB2NihbMHg2NCwgMHhmZjliLCAwLCAwLCAwLCAwLCAwLCAwXSksIDk2XSxcbiAgICAgICc2dG80JzogW25ldyBJUHY2KFsweDIwMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDBdKSwgMTZdLFxuICAgICAgdGVyZWRvOiBbbmV3IElQdjYoWzB4MjAwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMF0pLCAzMl0sXG4gICAgICByZXNlcnZlZDogW1tuZXcgSVB2NihbMHgyMDAxLCAweGRiOCwgMCwgMCwgMCwgMCwgMCwgMF0pLCAzMl1dXG4gICAgfTtcblxuICAgIElQdjYucHJvdG90eXBlLnJhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXBhZGRyLnN1Ym5ldE1hdGNoKHRoaXMsIHRoaXMuU3BlY2lhbFJhbmdlcyk7XG4gICAgfTtcblxuICAgIElQdjYucHJvdG90eXBlLmlzSVB2NE1hcHBlZEFkZHJlc3MgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnJhbmdlKCkgPT09ICdpcHY0TWFwcGVkJztcbiAgICB9O1xuXG4gICAgSVB2Ni5wcm90b3R5cGUudG9JUHY0QWRkcmVzcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGhpZ2gsIGxvdywgcmVmO1xuICAgICAgaWYgKCF0aGlzLmlzSVB2NE1hcHBlZEFkZHJlc3MoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IHRyeWluZyB0byBjb252ZXJ0IGEgZ2VuZXJpYyBpcHY2IGFkZHJlc3MgdG8gaXB2NFwiKTtcbiAgICAgIH1cbiAgICAgIHJlZiA9IHRoaXMucGFydHMuc2xpY2UoLTIpLCBoaWdoID0gcmVmWzBdLCBsb3cgPSByZWZbMV07XG4gICAgICByZXR1cm4gbmV3IGlwYWRkci5JUHY0KFtoaWdoID4+IDgsIGhpZ2ggJiAweGZmLCBsb3cgPj4gOCwgbG93ICYgMHhmZl0pO1xuICAgIH07XG5cbiAgICBJUHY2LnByb3RvdHlwZS5wcmVmaXhMZW5ndGhGcm9tU3VibmV0TWFzayA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGNpZHIsIGksIGssIHBhcnQsIHN0b3AsIHplcm9zLCB6ZXJvdGFibGU7XG4gICAgICB6ZXJvdGFibGUgPSB7XG4gICAgICAgIDA6IDE2LFxuICAgICAgICAzMjc2ODogMTUsXG4gICAgICAgIDQ5MTUyOiAxNCxcbiAgICAgICAgNTczNDQ6IDEzLFxuICAgICAgICA2MTQ0MDogMTIsXG4gICAgICAgIDYzNDg4OiAxMSxcbiAgICAgICAgNjQ1MTI6IDEwLFxuICAgICAgICA2NTAyNDogOSxcbiAgICAgICAgNjUyODA6IDgsXG4gICAgICAgIDY1NDA4OiA3LFxuICAgICAgICA2NTQ3MjogNixcbiAgICAgICAgNjU1MDQ6IDUsXG4gICAgICAgIDY1NTIwOiA0LFxuICAgICAgICA2NTUyODogMyxcbiAgICAgICAgNjU1MzI6IDIsXG4gICAgICAgIDY1NTM0OiAxLFxuICAgICAgICA2NTUzNTogMFxuICAgICAgfTtcbiAgICAgIGNpZHIgPSAwO1xuICAgICAgc3RvcCA9IGZhbHNlO1xuICAgICAgZm9yIChpID0gayA9IDc7IGsgPj0gMDsgaSA9IGsgKz0gLTEpIHtcbiAgICAgICAgcGFydCA9IHRoaXMucGFydHNbaV07XG4gICAgICAgIGlmIChwYXJ0IGluIHplcm90YWJsZSkge1xuICAgICAgICAgIHplcm9zID0gemVyb3RhYmxlW3BhcnRdO1xuICAgICAgICAgIGlmIChzdG9wICYmIHplcm9zICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHplcm9zICE9PSAxNikge1xuICAgICAgICAgICAgc3RvcCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNpZHIgKz0gemVyb3M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAxMjggLSBjaWRyO1xuICAgIH07XG5cbiAgICByZXR1cm4gSVB2NjtcblxuICB9KSgpO1xuXG4gIGlwdjZQYXJ0ID0gXCIoPzpbMC05YS1mXSs6Oj8pK1wiO1xuXG4gIHpvbmVJbmRleCA9IFwiJVswLTlhLXpdezEsfVwiO1xuXG4gIGlwdjZSZWdleGVzID0ge1xuICAgIHpvbmVJbmRleDogbmV3IFJlZ0V4cCh6b25lSW5kZXgsICdpJyksXG4gICAgXCJuYXRpdmVcIjogbmV3IFJlZ0V4cChcIl4oOjopPyhcIiArIGlwdjZQYXJ0ICsgXCIpPyhbMC05YS1mXSspPyg6Oik/KFwiICsgem9uZUluZGV4ICsgXCIpPyRcIiwgJ2knKSxcbiAgICB0cmFuc2l0aW9uYWw6IG5ldyBSZWdFeHAoKFwiXigoPzpcIiArIGlwdjZQYXJ0ICsgXCIpfCg/Ojo6KSg/OlwiICsgaXB2NlBhcnQgKyBcIik/KVwiKSArIChpcHY0UGFydCArIFwiXFxcXC5cIiArIGlwdjRQYXJ0ICsgXCJcXFxcLlwiICsgaXB2NFBhcnQgKyBcIlxcXFwuXCIgKyBpcHY0UGFydCkgKyAoXCIoXCIgKyB6b25lSW5kZXggKyBcIik/JFwiKSwgJ2knKVxuICB9O1xuXG4gIGV4cGFuZElQdjYgPSBmdW5jdGlvbihzdHJpbmcsIHBhcnRzKSB7XG4gICAgdmFyIGNvbG9uQ291bnQsIGxhc3RDb2xvbiwgcGFydCwgcmVwbGFjZW1lbnQsIHJlcGxhY2VtZW50Q291bnQsIHpvbmVJZDtcbiAgICBpZiAoc3RyaW5nLmluZGV4T2YoJzo6JykgIT09IHN0cmluZy5sYXN0SW5kZXhPZignOjonKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHpvbmVJZCA9IChzdHJpbmcubWF0Y2goaXB2NlJlZ2V4ZXNbJ3pvbmVJbmRleCddKSB8fCBbXSlbMF07XG4gICAgaWYgKHpvbmVJZCkge1xuICAgICAgem9uZUlkID0gem9uZUlkLnN1YnN0cmluZygxKTtcbiAgICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC8lLiskLywgJycpO1xuICAgIH1cbiAgICBjb2xvbkNvdW50ID0gMDtcbiAgICBsYXN0Q29sb24gPSAtMTtcbiAgICB3aGlsZSAoKGxhc3RDb2xvbiA9IHN0cmluZy5pbmRleE9mKCc6JywgbGFzdENvbG9uICsgMSkpID49IDApIHtcbiAgICAgIGNvbG9uQ291bnQrKztcbiAgICB9XG4gICAgaWYgKHN0cmluZy5zdWJzdHIoMCwgMikgPT09ICc6OicpIHtcbiAgICAgIGNvbG9uQ291bnQtLTtcbiAgICB9XG4gICAgaWYgKHN0cmluZy5zdWJzdHIoLTIsIDIpID09PSAnOjonKSB7XG4gICAgICBjb2xvbkNvdW50LS07XG4gICAgfVxuICAgIGlmIChjb2xvbkNvdW50ID4gcGFydHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXBsYWNlbWVudENvdW50ID0gcGFydHMgLSBjb2xvbkNvdW50O1xuICAgIHJlcGxhY2VtZW50ID0gJzonO1xuICAgIHdoaWxlIChyZXBsYWNlbWVudENvdW50LS0pIHtcbiAgICAgIHJlcGxhY2VtZW50ICs9ICcwOic7XG4gICAgfVxuICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKCc6OicsIHJlcGxhY2VtZW50KTtcbiAgICBpZiAoc3RyaW5nWzBdID09PSAnOicpIHtcbiAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZSgxKTtcbiAgICB9XG4gICAgaWYgKHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMV0gPT09ICc6Jykge1xuICAgICAgc3RyaW5nID0gc3RyaW5nLnNsaWNlKDAsIC0xKTtcbiAgICB9XG4gICAgcGFydHMgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgaywgbGVuLCByZWYsIHJlc3VsdHM7XG4gICAgICByZWYgPSBzdHJpbmcuc3BsaXQoXCI6XCIpO1xuICAgICAgcmVzdWx0cyA9IFtdO1xuICAgICAgZm9yIChrID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgayA8IGxlbjsgaysrKSB7XG4gICAgICAgIHBhcnQgPSByZWZba107XG4gICAgICAgIHJlc3VsdHMucHVzaChwYXJzZUludChwYXJ0LCAxNikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfSkoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcGFydHM6IHBhcnRzLFxuICAgICAgem9uZUlkOiB6b25lSWRcbiAgICB9O1xuICB9O1xuXG4gIGlwYWRkci5JUHY2LnBhcnNlciA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciBhZGRyLCBrLCBsZW4sIG1hdGNoLCBvY3RldCwgb2N0ZXRzLCB6b25lSWQ7XG4gICAgaWYgKGlwdjZSZWdleGVzWyduYXRpdmUnXS50ZXN0KHN0cmluZykpIHtcbiAgICAgIHJldHVybiBleHBhbmRJUHY2KHN0cmluZywgOCk7XG4gICAgfSBlbHNlIGlmIChtYXRjaCA9IHN0cmluZy5tYXRjaChpcHY2UmVnZXhlc1sndHJhbnNpdGlvbmFsJ10pKSB7XG4gICAgICB6b25lSWQgPSBtYXRjaFs2XSB8fCAnJztcbiAgICAgIGFkZHIgPSBleHBhbmRJUHY2KG1hdGNoWzFdLnNsaWNlKDAsIC0xKSArIHpvbmVJZCwgNik7XG4gICAgICBpZiAoYWRkci5wYXJ0cykge1xuICAgICAgICBvY3RldHMgPSBbcGFyc2VJbnQobWF0Y2hbMl0pLCBwYXJzZUludChtYXRjaFszXSksIHBhcnNlSW50KG1hdGNoWzRdKSwgcGFyc2VJbnQobWF0Y2hbNV0pXTtcbiAgICAgICAgZm9yIChrID0gMCwgbGVuID0gb2N0ZXRzLmxlbmd0aDsgayA8IGxlbjsgaysrKSB7XG4gICAgICAgICAgb2N0ZXQgPSBvY3RldHNba107XG4gICAgICAgICAgaWYgKCEoKDAgPD0gb2N0ZXQgJiYgb2N0ZXQgPD0gMjU1KSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhZGRyLnBhcnRzLnB1c2gob2N0ZXRzWzBdIDw8IDggfCBvY3RldHNbMV0pO1xuICAgICAgICBhZGRyLnBhcnRzLnB1c2gob2N0ZXRzWzJdIDw8IDggfCBvY3RldHNbM10pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBhcnRzOiBhZGRyLnBhcnRzLFxuICAgICAgICAgIHpvbmVJZDogYWRkci56b25lSWRcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgaXBhZGRyLklQdjQuaXNJUHY0ID0gaXBhZGRyLklQdjYuaXNJUHY2ID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyKHN0cmluZykgIT09IG51bGw7XG4gIH07XG5cbiAgaXBhZGRyLklQdjQuaXNWYWxpZCA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciBlO1xuICAgIHRyeSB7XG4gICAgICBuZXcgdGhpcyh0aGlzLnBhcnNlcihzdHJpbmcpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yMSkge1xuICAgICAgZSA9IGVycm9yMTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgaXBhZGRyLklQdjQuaXNWYWxpZEZvdXJQYXJ0RGVjaW1hbCA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIGlmIChpcGFkZHIuSVB2NC5pc1ZhbGlkKHN0cmluZykgJiYgc3RyaW5nLm1hdGNoKC9eXFxkKyhcXC5cXGQrKXszfSQvKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgaXBhZGRyLklQdjYuaXNWYWxpZCA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciBhZGRyLCBlO1xuICAgIGlmICh0eXBlb2Ygc3RyaW5nID09PSBcInN0cmluZ1wiICYmIHN0cmluZy5pbmRleE9mKFwiOlwiKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGFkZHIgPSB0aGlzLnBhcnNlcihzdHJpbmcpO1xuICAgICAgbmV3IHRoaXMoYWRkci5wYXJ0cywgYWRkci56b25lSWQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IxKSB7XG4gICAgICBlID0gZXJyb3IxO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICBpcGFkZHIuSVB2NC5wYXJzZSA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciBwYXJ0cztcbiAgICBwYXJ0cyA9IHRoaXMucGFyc2VyKHN0cmluZyk7XG4gICAgaWYgKHBhcnRzID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IHN0cmluZyBpcyBub3QgZm9ybWF0dGVkIGxpa2UgaXAgYWRkcmVzc1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0aGlzKHBhcnRzKTtcbiAgfTtcblxuICBpcGFkZHIuSVB2Ni5wYXJzZSA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciBhZGRyO1xuICAgIGFkZHIgPSB0aGlzLnBhcnNlcihzdHJpbmcpO1xuICAgIGlmIChhZGRyLnBhcnRzID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IHN0cmluZyBpcyBub3QgZm9ybWF0dGVkIGxpa2UgaXAgYWRkcmVzc1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0aGlzKGFkZHIucGFydHMsIGFkZHIuem9uZUlkKTtcbiAgfTtcblxuICBpcGFkZHIuSVB2NC5wYXJzZUNJRFIgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICB2YXIgbWFza0xlbmd0aCwgbWF0Y2g7XG4gICAgaWYgKG1hdGNoID0gc3RyaW5nLm1hdGNoKC9eKC4rKVxcLyhcXGQrKSQvKSkge1xuICAgICAgbWFza0xlbmd0aCA9IHBhcnNlSW50KG1hdGNoWzJdKTtcbiAgICAgIGlmIChtYXNrTGVuZ3RoID49IDAgJiYgbWFza0xlbmd0aCA8PSAzMikge1xuICAgICAgICByZXR1cm4gW3RoaXMucGFyc2UobWF0Y2hbMV0pLCBtYXNrTGVuZ3RoXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiaXBhZGRyOiBzdHJpbmcgaXMgbm90IGZvcm1hdHRlZCBsaWtlIGFuIElQdjQgQ0lEUiByYW5nZVwiKTtcbiAgfTtcblxuICBpcGFkZHIuSVB2NC5zdWJuZXRNYXNrRnJvbVByZWZpeExlbmd0aCA9IGZ1bmN0aW9uKHByZWZpeCkge1xuICAgIHZhciBmaWxsZWRPY3RldENvdW50LCBqLCBvY3RldHM7XG4gICAgcHJlZml4ID0gcGFyc2VJbnQocHJlZml4KTtcbiAgICBpZiAocHJlZml4IDwgMCB8fCBwcmVmaXggPiAzMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpcGFkZHI6IGludmFsaWQgSVB2NCBwcmVmaXggbGVuZ3RoJyk7XG4gICAgfVxuICAgIG9jdGV0cyA9IFswLCAwLCAwLCAwXTtcbiAgICBqID0gMDtcbiAgICBmaWxsZWRPY3RldENvdW50ID0gTWF0aC5mbG9vcihwcmVmaXggLyA4KTtcbiAgICB3aGlsZSAoaiA8IGZpbGxlZE9jdGV0Q291bnQpIHtcbiAgICAgIG9jdGV0c1tqXSA9IDI1NTtcbiAgICAgIGorKztcbiAgICB9XG4gICAgaWYgKGZpbGxlZE9jdGV0Q291bnQgPCA0KSB7XG4gICAgICBvY3RldHNbZmlsbGVkT2N0ZXRDb3VudF0gPSBNYXRoLnBvdygyLCBwcmVmaXggJSA4KSAtIDEgPDwgOCAtIChwcmVmaXggJSA4KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0aGlzKG9jdGV0cyk7XG4gIH07XG5cbiAgaXBhZGRyLklQdjQuYnJvYWRjYXN0QWRkcmVzc0Zyb21DSURSID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIGNpZHIsIGVycm9yLCBpLCBpcEludGVyZmFjZU9jdGV0cywgb2N0ZXRzLCBzdWJuZXRNYXNrT2N0ZXRzO1xuICAgIHRyeSB7XG4gICAgICBjaWRyID0gdGhpcy5wYXJzZUNJRFIoc3RyaW5nKTtcbiAgICAgIGlwSW50ZXJmYWNlT2N0ZXRzID0gY2lkclswXS50b0J5dGVBcnJheSgpO1xuICAgICAgc3VibmV0TWFza09jdGV0cyA9IHRoaXMuc3VibmV0TWFza0Zyb21QcmVmaXhMZW5ndGgoY2lkclsxXSkudG9CeXRlQXJyYXkoKTtcbiAgICAgIG9jdGV0cyA9IFtdO1xuICAgICAgaSA9IDA7XG4gICAgICB3aGlsZSAoaSA8IDQpIHtcbiAgICAgICAgb2N0ZXRzLnB1c2gocGFyc2VJbnQoaXBJbnRlcmZhY2VPY3RldHNbaV0sIDEwKSB8IHBhcnNlSW50KHN1Ym5ldE1hc2tPY3RldHNbaV0sIDEwKSBeIDI1NSk7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgdGhpcyhvY3RldHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yMSkge1xuICAgICAgZXJyb3IgPSBlcnJvcjE7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lwYWRkcjogdGhlIGFkZHJlc3MgZG9lcyBub3QgaGF2ZSBJUHY0IENJRFIgZm9ybWF0Jyk7XG4gICAgfVxuICB9O1xuXG4gIGlwYWRkci5JUHY0Lm5ldHdvcmtBZGRyZXNzRnJvbUNJRFIgPSBmdW5jdGlvbihzdHJpbmcpIHtcbiAgICB2YXIgY2lkciwgZXJyb3IsIGksIGlwSW50ZXJmYWNlT2N0ZXRzLCBvY3RldHMsIHN1Ym5ldE1hc2tPY3RldHM7XG4gICAgdHJ5IHtcbiAgICAgIGNpZHIgPSB0aGlzLnBhcnNlQ0lEUihzdHJpbmcpO1xuICAgICAgaXBJbnRlcmZhY2VPY3RldHMgPSBjaWRyWzBdLnRvQnl0ZUFycmF5KCk7XG4gICAgICBzdWJuZXRNYXNrT2N0ZXRzID0gdGhpcy5zdWJuZXRNYXNrRnJvbVByZWZpeExlbmd0aChjaWRyWzFdKS50b0J5dGVBcnJheSgpO1xuICAgICAgb2N0ZXRzID0gW107XG4gICAgICBpID0gMDtcbiAgICAgIHdoaWxlIChpIDwgNCkge1xuICAgICAgICBvY3RldHMucHVzaChwYXJzZUludChpcEludGVyZmFjZU9jdGV0c1tpXSwgMTApICYgcGFyc2VJbnQoc3VibmV0TWFza09jdGV0c1tpXSwgMTApKTtcbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyB0aGlzKG9jdGV0cyk7XG4gICAgfSBjYXRjaCAoZXJyb3IxKSB7XG4gICAgICBlcnJvciA9IGVycm9yMTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaXBhZGRyOiB0aGUgYWRkcmVzcyBkb2VzIG5vdCBoYXZlIElQdjQgQ0lEUiBmb3JtYXQnKTtcbiAgICB9XG4gIH07XG5cbiAgaXBhZGRyLklQdjYucGFyc2VDSURSID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIG1hc2tMZW5ndGgsIG1hdGNoO1xuICAgIGlmIChtYXRjaCA9IHN0cmluZy5tYXRjaCgvXiguKylcXC8oXFxkKykkLykpIHtcbiAgICAgIG1hc2tMZW5ndGggPSBwYXJzZUludChtYXRjaFsyXSk7XG4gICAgICBpZiAobWFza0xlbmd0aCA+PSAwICYmIG1hc2tMZW5ndGggPD0gMTI4KSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5wYXJzZShtYXRjaFsxXSksIG1hc2tMZW5ndGhdO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IHN0cmluZyBpcyBub3QgZm9ybWF0dGVkIGxpa2UgYW4gSVB2NiBDSURSIHJhbmdlXCIpO1xuICB9O1xuXG4gIGlwYWRkci5pc1ZhbGlkID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgcmV0dXJuIGlwYWRkci5JUHY2LmlzVmFsaWQoc3RyaW5nKSB8fCBpcGFkZHIuSVB2NC5pc1ZhbGlkKHN0cmluZyk7XG4gIH07XG5cbiAgaXBhZGRyLnBhcnNlID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgaWYgKGlwYWRkci5JUHY2LmlzVmFsaWQoc3RyaW5nKSkge1xuICAgICAgcmV0dXJuIGlwYWRkci5JUHY2LnBhcnNlKHN0cmluZyk7XG4gICAgfSBlbHNlIGlmIChpcGFkZHIuSVB2NC5pc1ZhbGlkKHN0cmluZykpIHtcbiAgICAgIHJldHVybiBpcGFkZHIuSVB2NC5wYXJzZShzdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpcGFkZHI6IHRoZSBhZGRyZXNzIGhhcyBuZWl0aGVyIElQdjYgbm9yIElQdjQgZm9ybWF0XCIpO1xuICAgIH1cbiAgfTtcblxuICBpcGFkZHIucGFyc2VDSURSID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgdmFyIGU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBpcGFkZHIuSVB2Ni5wYXJzZUNJRFIoc3RyaW5nKTtcbiAgICB9IGNhdGNoIChlcnJvcjEpIHtcbiAgICAgIGUgPSBlcnJvcjE7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gaXBhZGRyLklQdjQucGFyc2VDSURSKHN0cmluZyk7XG4gICAgICB9IGNhdGNoIChlcnJvcjEpIHtcbiAgICAgICAgZSA9IGVycm9yMTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaXBhZGRyOiB0aGUgYWRkcmVzcyBoYXMgbmVpdGhlciBJUHY2IG5vciBJUHY0IENJRFIgZm9ybWF0XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBpcGFkZHIuZnJvbUJ5dGVBcnJheSA9IGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgdmFyIGxlbmd0aDtcbiAgICBsZW5ndGggPSBieXRlcy5sZW5ndGg7XG4gICAgaWYgKGxlbmd0aCA9PT0gNCkge1xuICAgICAgcmV0dXJuIG5ldyBpcGFkZHIuSVB2NChieXRlcyk7XG4gICAgfSBlbHNlIGlmIChsZW5ndGggPT09IDE2KSB7XG4gICAgICByZXR1cm4gbmV3IGlwYWRkci5JUHY2KGJ5dGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaXBhZGRyOiB0aGUgYmluYXJ5IGlucHV0IGlzIG5laXRoZXIgYW4gSVB2NiBub3IgSVB2NCBhZGRyZXNzXCIpO1xuICAgIH1cbiAgfTtcblxuICBpcGFkZHIucHJvY2VzcyA9IGZ1bmN0aW9uKHN0cmluZykge1xuICAgIHZhciBhZGRyO1xuICAgIGFkZHIgPSB0aGlzLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKGFkZHIua2luZCgpID09PSAnaXB2NicgJiYgYWRkci5pc0lQdjRNYXBwZWRBZGRyZXNzKCkpIHtcbiAgICAgIHJldHVybiBhZGRyLnRvSVB2NEFkZHJlc3MoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFkZHI7XG4gICAgfVxuICB9O1xuXG59KS5jYWxsKHRoaXMpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2lwYWRkci5qcy9saWIvaXBhZGRyLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcclxuXHRpZighbW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge307XHJcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcclxuXHRcdC8vIG1vZHVsZS5wYXJlbnQgPSB1bmRlZmluZWQgYnkgZGVmYXVsdFxyXG5cdFx0aWYoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XHJcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImxvYWRlZFwiLCB7XHJcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXHJcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5sO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwiaWRcIiwge1xyXG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdHJldHVybiBtb2R1bGUuaTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcclxuXHR9XHJcblx0cmV0dXJuIG1vZHVsZTtcclxufTtcclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9tb2R1bGUuanNcbi8vIG1vZHVsZSBpZCA9IDE3MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiFcbiAqIGV4cHJlc3NcbiAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDEzIFJvbWFuIFNodHlsbWFuXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGFjY2VwdHMgPSByZXF1aXJlKCdhY2NlcHRzJyk7XG52YXIgZGVwcmVjYXRlID0gcmVxdWlyZSgnZGVwZCcpKCdleHByZXNzJyk7XG52YXIgaXNJUCA9IHJlcXVpcmUoJ25ldCcpLmlzSVA7XG52YXIgdHlwZWlzID0gcmVxdWlyZSgndHlwZS1pcycpO1xudmFyIGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG52YXIgZnJlc2ggPSByZXF1aXJlKCdmcmVzaCcpO1xudmFyIHBhcnNlUmFuZ2UgPSByZXF1aXJlKCdyYW5nZS1wYXJzZXInKTtcbnZhciBwYXJzZSA9IHJlcXVpcmUoJ3BhcnNldXJsJyk7XG52YXIgcHJveHlhZGRyID0gcmVxdWlyZSgncHJveHktYWRkcicpO1xuXG4vKipcbiAqIFJlcXVlc3QgcHJvdG90eXBlLlxuICogQHB1YmxpY1xuICovXG5cbnZhciByZXEgPSBPYmplY3QuY3JlYXRlKGh0dHAuSW5jb21pbmdNZXNzYWdlLnByb3RvdHlwZSlcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcVxuXG4vKipcbiAqIFJldHVybiByZXF1ZXN0IGhlYWRlci5cbiAqXG4gKiBUaGUgYFJlZmVycmVyYCBoZWFkZXIgZmllbGQgaXMgc3BlY2lhbC1jYXNlZCxcbiAqIGJvdGggYFJlZmVycmVyYCBhbmQgYFJlZmVyZXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIHJlcS5nZXQoJ0NvbnRlbnQtVHlwZScpO1xuICogICAgIC8vID0+IFwidGV4dC9wbGFpblwiXG4gKlxuICogICAgIHJlcS5nZXQoJ2NvbnRlbnQtdHlwZScpO1xuICogICAgIC8vID0+IFwidGV4dC9wbGFpblwiXG4gKlxuICogICAgIHJlcS5nZXQoJ1NvbWV0aGluZycpO1xuICogICAgIC8vID0+IHVuZGVmaW5lZFxuICpcbiAqIEFsaWFzZWQgYXMgYHJlcS5oZWFkZXIoKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXEuZ2V0ID1cbnJlcS5oZWFkZXIgPSBmdW5jdGlvbiBoZWFkZXIobmFtZSkge1xuICBpZiAoIW5hbWUpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCduYW1lIGFyZ3VtZW50IGlzIHJlcXVpcmVkIHRvIHJlcS5nZXQnKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCduYW1lIG11c3QgYmUgYSBzdHJpbmcgdG8gcmVxLmdldCcpO1xuICB9XG5cbiAgdmFyIGxjID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIHN3aXRjaCAobGMpIHtcbiAgICBjYXNlICdyZWZlcmVyJzpcbiAgICBjYXNlICdyZWZlcnJlcic6XG4gICAgICByZXR1cm4gdGhpcy5oZWFkZXJzLnJlZmVycmVyXG4gICAgICAgIHx8IHRoaXMuaGVhZGVycy5yZWZlcmVyO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdGhpcy5oZWFkZXJzW2xjXTtcbiAgfVxufTtcblxuLyoqXG4gKiBUbyBkbzogdXBkYXRlIGRvY3MuXG4gKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIGB0eXBlKHMpYCBpcyBhY2NlcHRhYmxlLCByZXR1cm5pbmdcbiAqIHRoZSBiZXN0IG1hdGNoIHdoZW4gdHJ1ZSwgb3RoZXJ3aXNlIGB1bmRlZmluZWRgLCBpbiB3aGljaFxuICogY2FzZSB5b3Ugc2hvdWxkIHJlc3BvbmQgd2l0aCA0MDYgXCJOb3QgQWNjZXB0YWJsZVwiLlxuICpcbiAqIFRoZSBgdHlwZWAgdmFsdWUgbWF5IGJlIGEgc2luZ2xlIE1JTUUgdHlwZSBzdHJpbmdcbiAqIHN1Y2ggYXMgXCJhcHBsaWNhdGlvbi9qc29uXCIsIGFuIGV4dGVuc2lvbiBuYW1lXG4gKiBzdWNoIGFzIFwianNvblwiLCBhIGNvbW1hLWRlbGltaXRlZCBsaXN0IHN1Y2ggYXMgXCJqc29uLCBodG1sLCB0ZXh0L3BsYWluXCIsXG4gKiBhbiBhcmd1bWVudCBsaXN0IHN1Y2ggYXMgYFwianNvblwiLCBcImh0bWxcIiwgXCJ0ZXh0L3BsYWluXCJgLFxuICogb3IgYW4gYXJyYXkgYFtcImpzb25cIiwgXCJodG1sXCIsIFwidGV4dC9wbGFpblwiXWAuIFdoZW4gYSBsaXN0XG4gKiBvciBhcnJheSBpcyBnaXZlbiwgdGhlIF9iZXN0XyBtYXRjaCwgaWYgYW55IGlzIHJldHVybmVkLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAvLyBBY2NlcHQ6IHRleHQvaHRtbFxuICogICAgIHJlcS5hY2NlcHRzKCdodG1sJyk7XG4gKiAgICAgLy8gPT4gXCJodG1sXCJcbiAqXG4gKiAgICAgLy8gQWNjZXB0OiB0ZXh0LyosIGFwcGxpY2F0aW9uL2pzb25cbiAqICAgICByZXEuYWNjZXB0cygnaHRtbCcpO1xuICogICAgIC8vID0+IFwiaHRtbFwiXG4gKiAgICAgcmVxLmFjY2VwdHMoJ3RleHQvaHRtbCcpO1xuICogICAgIC8vID0+IFwidGV4dC9odG1sXCJcbiAqICAgICByZXEuYWNjZXB0cygnanNvbiwgdGV4dCcpO1xuICogICAgIC8vID0+IFwianNvblwiXG4gKiAgICAgcmVxLmFjY2VwdHMoJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAqICAgICAvLyA9PiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICpcbiAqICAgICAvLyBBY2NlcHQ6IHRleHQvKiwgYXBwbGljYXRpb24vanNvblxuICogICAgIHJlcS5hY2NlcHRzKCdpbWFnZS9wbmcnKTtcbiAqICAgICByZXEuYWNjZXB0cygncG5nJyk7XG4gKiAgICAgLy8gPT4gdW5kZWZpbmVkXG4gKlxuICogICAgIC8vIEFjY2VwdDogdGV4dC8qO3E9LjUsIGFwcGxpY2F0aW9uL2pzb25cbiAqICAgICByZXEuYWNjZXB0cyhbJ2h0bWwnLCAnanNvbiddKTtcbiAqICAgICByZXEuYWNjZXB0cygnaHRtbCcsICdqc29uJyk7XG4gKiAgICAgcmVxLmFjY2VwdHMoJ2h0bWwsIGpzb24nKTtcbiAqICAgICAvLyA9PiBcImpzb25cIlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSB0eXBlKHMpXG4gKiBAcmV0dXJuIHtTdHJpbmd8QXJyYXl8Qm9vbGVhbn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXEuYWNjZXB0cyA9IGZ1bmN0aW9uKCl7XG4gIHZhciBhY2NlcHQgPSBhY2NlcHRzKHRoaXMpO1xuICByZXR1cm4gYWNjZXB0LnR5cGVzLmFwcGx5KGFjY2VwdCwgYXJndW1lbnRzKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGdpdmVuIGBlbmNvZGluZ2BzIGFyZSBhY2NlcHRlZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gLi4uZW5jb2RpbmdcbiAqIEByZXR1cm4ge1N0cmluZ3xBcnJheX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXEuYWNjZXB0c0VuY29kaW5ncyA9IGZ1bmN0aW9uKCl7XG4gIHZhciBhY2NlcHQgPSBhY2NlcHRzKHRoaXMpO1xuICByZXR1cm4gYWNjZXB0LmVuY29kaW5ncy5hcHBseShhY2NlcHQsIGFyZ3VtZW50cyk7XG59O1xuXG5yZXEuYWNjZXB0c0VuY29kaW5nID0gZGVwcmVjYXRlLmZ1bmN0aW9uKHJlcS5hY2NlcHRzRW5jb2RpbmdzLFxuICAncmVxLmFjY2VwdHNFbmNvZGluZzogVXNlIGFjY2VwdHNFbmNvZGluZ3MgaW5zdGVhZCcpO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBnaXZlbiBgY2hhcnNldGBzIGFyZSBhY2NlcHRhYmxlLFxuICogb3RoZXJ3aXNlIHlvdSBzaG91bGQgcmVzcG9uZCB3aXRoIDQwNiBcIk5vdCBBY2NlcHRhYmxlXCIuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IC4uLmNoYXJzZXRcbiAqIEByZXR1cm4ge1N0cmluZ3xBcnJheX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXEuYWNjZXB0c0NoYXJzZXRzID0gZnVuY3Rpb24oKXtcbiAgdmFyIGFjY2VwdCA9IGFjY2VwdHModGhpcyk7XG4gIHJldHVybiBhY2NlcHQuY2hhcnNldHMuYXBwbHkoYWNjZXB0LCBhcmd1bWVudHMpO1xufTtcblxucmVxLmFjY2VwdHNDaGFyc2V0ID0gZGVwcmVjYXRlLmZ1bmN0aW9uKHJlcS5hY2NlcHRzQ2hhcnNldHMsXG4gICdyZXEuYWNjZXB0c0NoYXJzZXQ6IFVzZSBhY2NlcHRzQ2hhcnNldHMgaW5zdGVhZCcpO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBnaXZlbiBgbGFuZ2BzIGFyZSBhY2NlcHRhYmxlLFxuICogb3RoZXJ3aXNlIHlvdSBzaG91bGQgcmVzcG9uZCB3aXRoIDQwNiBcIk5vdCBBY2NlcHRhYmxlXCIuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IC4uLmxhbmdcbiAqIEByZXR1cm4ge1N0cmluZ3xBcnJheX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXEuYWNjZXB0c0xhbmd1YWdlcyA9IGZ1bmN0aW9uKCl7XG4gIHZhciBhY2NlcHQgPSBhY2NlcHRzKHRoaXMpO1xuICByZXR1cm4gYWNjZXB0Lmxhbmd1YWdlcy5hcHBseShhY2NlcHQsIGFyZ3VtZW50cyk7XG59O1xuXG5yZXEuYWNjZXB0c0xhbmd1YWdlID0gZGVwcmVjYXRlLmZ1bmN0aW9uKHJlcS5hY2NlcHRzTGFuZ3VhZ2VzLFxuICAncmVxLmFjY2VwdHNMYW5ndWFnZTogVXNlIGFjY2VwdHNMYW5ndWFnZXMgaW5zdGVhZCcpO1xuXG4vKipcbiAqIFBhcnNlIFJhbmdlIGhlYWRlciBmaWVsZCwgY2FwcGluZyB0byB0aGUgZ2l2ZW4gYHNpemVgLlxuICpcbiAqIFVuc3BlY2lmaWVkIHJhbmdlcyBzdWNoIGFzIFwiMC1cIiByZXF1aXJlIGtub3dsZWRnZSBvZiB5b3VyIHJlc291cmNlIGxlbmd0aC4gSW5cbiAqIHRoZSBjYXNlIG9mIGEgYnl0ZSByYW5nZSB0aGlzIGlzIG9mIGNvdXJzZSB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzLiBJZiB0aGVcbiAqIFJhbmdlIGhlYWRlciBmaWVsZCBpcyBub3QgZ2l2ZW4gYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQsIGAtMWAgd2hlbiB1bnNhdGlzZmlhYmxlLFxuICogYW5kIGAtMmAgd2hlbiBzeW50YWN0aWNhbGx5IGludmFsaWQuXG4gKlxuICogV2hlbiByYW5nZXMgYXJlIHJldHVybmVkLCB0aGUgYXJyYXkgaGFzIGEgXCJ0eXBlXCIgcHJvcGVydHkgd2hpY2ggaXMgdGhlIHR5cGUgb2ZcbiAqIHJhbmdlIHRoYXQgaXMgcmVxdWlyZWQgKG1vc3QgY29tbW9ubHksIFwiYnl0ZXNcIikuIEVhY2ggYXJyYXkgZWxlbWVudCBpcyBhbiBvYmplY3RcbiAqIHdpdGggYSBcInN0YXJ0XCIgYW5kIFwiZW5kXCIgcHJvcGVydHkgZm9yIHRoZSBwb3J0aW9uIG9mIHRoZSByYW5nZS5cbiAqXG4gKiBUaGUgXCJjb21iaW5lXCIgb3B0aW9uIGNhbiBiZSBzZXQgdG8gYHRydWVgIGFuZCBvdmVybGFwcGluZyAmIGFkamFjZW50IHJhbmdlc1xuICogd2lsbCBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHJhbmdlLlxuICpcbiAqIE5PVEU6IHJlbWVtYmVyIHRoYXQgcmFuZ2VzIGFyZSBpbmNsdXNpdmUsIHNvIGZvciBleGFtcGxlIFwiUmFuZ2U6IHVzZXJzPTAtM1wiXG4gKiBzaG91bGQgcmVzcG9uZCB3aXRoIDQgdXNlcnMgd2hlbiBhdmFpbGFibGUsIG5vdCAzLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBzaXplXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNvbWJpbmU9ZmFsc2VdXG4gKiBAcmV0dXJuIHtudW1iZXJ8YXJyYXl9XG4gKiBAcHVibGljXG4gKi9cblxucmVxLnJhbmdlID0gZnVuY3Rpb24gcmFuZ2Uoc2l6ZSwgb3B0aW9ucykge1xuICB2YXIgcmFuZ2UgPSB0aGlzLmdldCgnUmFuZ2UnKTtcbiAgaWYgKCFyYW5nZSkgcmV0dXJuO1xuICByZXR1cm4gcGFyc2VSYW5nZShzaXplLCByYW5nZSwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIFJldHVybiB0aGUgdmFsdWUgb2YgcGFyYW0gYG5hbWVgIHdoZW4gcHJlc2VudCBvciBgZGVmYXVsdFZhbHVlYC5cbiAqXG4gKiAgLSBDaGVja3Mgcm91dGUgcGxhY2Vob2xkZXJzLCBleDogXy91c2VyLzppZF9cbiAqICAtIENoZWNrcyBib2R5IHBhcmFtcywgZXg6IGlkPTEyLCB7XCJpZFwiOjEyfVxuICogIC0gQ2hlY2tzIHF1ZXJ5IHN0cmluZyBwYXJhbXMsIGV4OiA/aWQ9MTJcbiAqXG4gKiBUbyB1dGlsaXplIHJlcXVlc3QgYm9kaWVzLCBgcmVxLmJvZHlgXG4gKiBzaG91bGQgYmUgYW4gb2JqZWN0LiBUaGlzIGNhbiBiZSBkb25lIGJ5IHVzaW5nXG4gKiB0aGUgYGJvZHlQYXJzZXIoKWAgbWlkZGxld2FyZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtNaXhlZH0gW2RlZmF1bHRWYWx1ZV1cbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXEucGFyYW0gPSBmdW5jdGlvbiBwYXJhbShuYW1lLCBkZWZhdWx0VmFsdWUpIHtcbiAgdmFyIHBhcmFtcyA9IHRoaXMucGFyYW1zIHx8IHt9O1xuICB2YXIgYm9keSA9IHRoaXMuYm9keSB8fCB7fTtcbiAgdmFyIHF1ZXJ5ID0gdGhpcy5xdWVyeSB8fCB7fTtcblxuICB2YXIgYXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICA/ICduYW1lJ1xuICAgIDogJ25hbWUsIGRlZmF1bHQnO1xuICBkZXByZWNhdGUoJ3JlcS5wYXJhbSgnICsgYXJncyArICcpOiBVc2UgcmVxLnBhcmFtcywgcmVxLmJvZHksIG9yIHJlcS5xdWVyeSBpbnN0ZWFkJyk7XG5cbiAgaWYgKG51bGwgIT0gcGFyYW1zW25hbWVdICYmIHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgcmV0dXJuIHBhcmFtc1tuYW1lXTtcbiAgaWYgKG51bGwgIT0gYm9keVtuYW1lXSkgcmV0dXJuIGJvZHlbbmFtZV07XG4gIGlmIChudWxsICE9IHF1ZXJ5W25hbWVdKSByZXR1cm4gcXVlcnlbbmFtZV07XG5cbiAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGluY29taW5nIHJlcXVlc3QgY29udGFpbnMgdGhlIFwiQ29udGVudC1UeXBlXCJcbiAqIGhlYWRlciBmaWVsZCwgYW5kIGl0IGNvbnRhaW5zIHRoZSBnaXZlIG1pbWUgYHR5cGVgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgLy8gV2l0aCBDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOFxuICogICAgICByZXEuaXMoJ2h0bWwnKTtcbiAqICAgICAgcmVxLmlzKCd0ZXh0L2h0bWwnKTtcbiAqICAgICAgcmVxLmlzKCd0ZXh0LyonKTtcbiAqICAgICAgLy8gPT4gdHJ1ZVxuICpcbiAqICAgICAgLy8gV2hlbiBDb250ZW50LVR5cGUgaXMgYXBwbGljYXRpb24vanNvblxuICogICAgICByZXEuaXMoJ2pzb24nKTtcbiAqICAgICAgcmVxLmlzKCdhcHBsaWNhdGlvbi9qc29uJyk7XG4gKiAgICAgIHJlcS5pcygnYXBwbGljYXRpb24vKicpO1xuICogICAgICAvLyA9PiB0cnVlXG4gKlxuICogICAgICByZXEuaXMoJ2h0bWwnKTtcbiAqICAgICAgLy8gPT4gZmFsc2VcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gdHlwZXMuLi5cbiAqIEByZXR1cm4ge1N0cmluZ3xmYWxzZXxudWxsfVxuICogQHB1YmxpY1xuICovXG5cbnJlcS5pcyA9IGZ1bmN0aW9uIGlzKHR5cGVzKSB7XG4gIHZhciBhcnIgPSB0eXBlcztcblxuICAvLyBzdXBwb3J0IGZsYXR0ZW5lZCBhcmd1bWVudHNcbiAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGVzKSkge1xuICAgIGFyciA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlaXModGhpcywgYXJyKTtcbn07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBwcm90b2NvbCBzdHJpbmcgXCJodHRwXCIgb3IgXCJodHRwc1wiXG4gKiB3aGVuIHJlcXVlc3RlZCB3aXRoIFRMUy4gV2hlbiB0aGUgXCJ0cnVzdCBwcm94eVwiXG4gKiBzZXR0aW5nIHRydXN0cyB0aGUgc29ja2V0IGFkZHJlc3MsIHRoZVxuICogXCJYLUZvcndhcmRlZC1Qcm90b1wiIGhlYWRlciBmaWVsZCB3aWxsIGJlIHRydXN0ZWRcbiAqIGFuZCB1c2VkIGlmIHByZXNlbnQuXG4gKlxuICogSWYgeW91J3JlIHJ1bm5pbmcgYmVoaW5kIGEgcmV2ZXJzZSBwcm94eSB0aGF0XG4gKiBzdXBwbGllcyBodHRwcyBmb3IgeW91IHRoaXMgbWF5IGJlIGVuYWJsZWQuXG4gKlxuICogQHJldHVybiB7U3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5cbmRlZmluZUdldHRlcihyZXEsICdwcm90b2NvbCcsIGZ1bmN0aW9uIHByb3RvY29sKCl7XG4gIHZhciBwcm90byA9IHRoaXMuY29ubmVjdGlvbi5lbmNyeXB0ZWRcbiAgICA/ICdodHRwcydcbiAgICA6ICdodHRwJztcbiAgdmFyIHRydXN0ID0gdGhpcy5hcHAuZ2V0KCd0cnVzdCBwcm94eSBmbicpO1xuXG4gIGlmICghdHJ1c3QodGhpcy5jb25uZWN0aW9uLnJlbW90ZUFkZHJlc3MsIDApKSB7XG4gICAgcmV0dXJuIHByb3RvO1xuICB9XG5cbiAgLy8gTm90ZTogWC1Gb3J3YXJkZWQtUHJvdG8gaXMgbm9ybWFsbHkgb25seSBldmVyIGFcbiAgLy8gICAgICAgc2luZ2xlIHZhbHVlLCBidXQgdGhpcyBpcyB0byBiZSBzYWZlLlxuICB2YXIgaGVhZGVyID0gdGhpcy5nZXQoJ1gtRm9yd2FyZGVkLVByb3RvJykgfHwgcHJvdG9cbiAgdmFyIGluZGV4ID0gaGVhZGVyLmluZGV4T2YoJywnKVxuXG4gIHJldHVybiBpbmRleCAhPT0gLTFcbiAgICA/IGhlYWRlci5zdWJzdHJpbmcoMCwgaW5kZXgpLnRyaW0oKVxuICAgIDogaGVhZGVyLnRyaW0oKVxufSk7XG5cbi8qKlxuICogU2hvcnQtaGFuZCBmb3I6XG4gKlxuICogICAgcmVxLnByb3RvY29sID09PSAnaHR0cHMnXG4gKlxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5kZWZpbmVHZXR0ZXIocmVxLCAnc2VjdXJlJywgZnVuY3Rpb24gc2VjdXJlKCl7XG4gIHJldHVybiB0aGlzLnByb3RvY29sID09PSAnaHR0cHMnO1xufSk7XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZW1vdGUgYWRkcmVzcyBmcm9tIHRoZSB0cnVzdGVkIHByb3h5LlxuICpcbiAqIFRoZSBpcyB0aGUgcmVtb3RlIGFkZHJlc3Mgb24gdGhlIHNvY2tldCB1bmxlc3NcbiAqIFwidHJ1c3QgcHJveHlcIiBpcyBzZXQuXG4gKlxuICogQHJldHVybiB7U3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5cbmRlZmluZUdldHRlcihyZXEsICdpcCcsIGZ1bmN0aW9uIGlwKCl7XG4gIHZhciB0cnVzdCA9IHRoaXMuYXBwLmdldCgndHJ1c3QgcHJveHkgZm4nKTtcbiAgcmV0dXJuIHByb3h5YWRkcih0aGlzLCB0cnVzdCk7XG59KTtcblxuLyoqXG4gKiBXaGVuIFwidHJ1c3QgcHJveHlcIiBpcyBzZXQsIHRydXN0ZWQgcHJveHkgYWRkcmVzc2VzICsgY2xpZW50LlxuICpcbiAqIEZvciBleGFtcGxlIGlmIHRoZSB2YWx1ZSB3ZXJlIFwiY2xpZW50LCBwcm94eTEsIHByb3h5MlwiXG4gKiB5b3Ugd291bGQgcmVjZWl2ZSB0aGUgYXJyYXkgYFtcImNsaWVudFwiLCBcInByb3h5MVwiLCBcInByb3h5MlwiXWBcbiAqIHdoZXJlIFwicHJveHkyXCIgaXMgdGhlIGZ1cnRoZXN0IGRvd24tc3RyZWFtIGFuZCBcInByb3h5MVwiIGFuZFxuICogXCJwcm94eTJcIiB3ZXJlIHRydXN0ZWQuXG4gKlxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAcHVibGljXG4gKi9cblxuZGVmaW5lR2V0dGVyKHJlcSwgJ2lwcycsIGZ1bmN0aW9uIGlwcygpIHtcbiAgdmFyIHRydXN0ID0gdGhpcy5hcHAuZ2V0KCd0cnVzdCBwcm94eSBmbicpO1xuICB2YXIgYWRkcnMgPSBwcm94eWFkZHIuYWxsKHRoaXMsIHRydXN0KTtcblxuICAvLyByZXZlcnNlIHRoZSBvcmRlciAodG8gZmFydGhlc3QgLT4gY2xvc2VzdClcbiAgLy8gYW5kIHJlbW92ZSBzb2NrZXQgYWRkcmVzc1xuICBhZGRycy5yZXZlcnNlKCkucG9wKClcblxuICByZXR1cm4gYWRkcnNcbn0pO1xuXG4vKipcbiAqIFJldHVybiBzdWJkb21haW5zIGFzIGFuIGFycmF5LlxuICpcbiAqIFN1YmRvbWFpbnMgYXJlIHRoZSBkb3Qtc2VwYXJhdGVkIHBhcnRzIG9mIHRoZSBob3N0IGJlZm9yZSB0aGUgbWFpbiBkb21haW4gb2ZcbiAqIHRoZSBhcHAuIEJ5IGRlZmF1bHQsIHRoZSBkb21haW4gb2YgdGhlIGFwcCBpcyBhc3N1bWVkIHRvIGJlIHRoZSBsYXN0IHR3b1xuICogcGFydHMgb2YgdGhlIGhvc3QuIFRoaXMgY2FuIGJlIGNoYW5nZWQgYnkgc2V0dGluZyBcInN1YmRvbWFpbiBvZmZzZXRcIi5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgaWYgdGhlIGRvbWFpbiBpcyBcInRvYmkuZmVycmV0cy5leGFtcGxlLmNvbVwiOlxuICogSWYgXCJzdWJkb21haW4gb2Zmc2V0XCIgaXMgbm90IHNldCwgcmVxLnN1YmRvbWFpbnMgaXMgYFtcImZlcnJldHNcIiwgXCJ0b2JpXCJdYC5cbiAqIElmIFwic3ViZG9tYWluIG9mZnNldFwiIGlzIDMsIHJlcS5zdWJkb21haW5zIGlzIGBbXCJ0b2JpXCJdYC5cbiAqXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5kZWZpbmVHZXR0ZXIocmVxLCAnc3ViZG9tYWlucycsIGZ1bmN0aW9uIHN1YmRvbWFpbnMoKSB7XG4gIHZhciBob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWU7XG5cbiAgaWYgKCFob3N0bmFtZSkgcmV0dXJuIFtdO1xuXG4gIHZhciBvZmZzZXQgPSB0aGlzLmFwcC5nZXQoJ3N1YmRvbWFpbiBvZmZzZXQnKTtcbiAgdmFyIHN1YmRvbWFpbnMgPSAhaXNJUChob3N0bmFtZSlcbiAgICA/IGhvc3RuYW1lLnNwbGl0KCcuJykucmV2ZXJzZSgpXG4gICAgOiBbaG9zdG5hbWVdO1xuXG4gIHJldHVybiBzdWJkb21haW5zLnNsaWNlKG9mZnNldCk7XG59KTtcblxuLyoqXG4gKiBTaG9ydC1oYW5kIGZvciBgdXJsLnBhcnNlKHJlcS51cmwpLnBhdGhuYW1lYC5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZGVmaW5lR2V0dGVyKHJlcSwgJ3BhdGgnLCBmdW5jdGlvbiBwYXRoKCkge1xuICByZXR1cm4gcGFyc2UodGhpcykucGF0aG5hbWU7XG59KTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgXCJIb3N0XCIgaGVhZGVyIGZpZWxkIHRvIGEgaG9zdG5hbWUuXG4gKlxuICogV2hlbiB0aGUgXCJ0cnVzdCBwcm94eVwiIHNldHRpbmcgdHJ1c3RzIHRoZSBzb2NrZXRcbiAqIGFkZHJlc3MsIHRoZSBcIlgtRm9yd2FyZGVkLUhvc3RcIiBoZWFkZXIgZmllbGQgd2lsbFxuICogYmUgdHJ1c3RlZC5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZGVmaW5lR2V0dGVyKHJlcSwgJ2hvc3RuYW1lJywgZnVuY3Rpb24gaG9zdG5hbWUoKXtcbiAgdmFyIHRydXN0ID0gdGhpcy5hcHAuZ2V0KCd0cnVzdCBwcm94eSBmbicpO1xuICB2YXIgaG9zdCA9IHRoaXMuZ2V0KCdYLUZvcndhcmRlZC1Ib3N0Jyk7XG5cbiAgaWYgKCFob3N0IHx8ICF0cnVzdCh0aGlzLmNvbm5lY3Rpb24ucmVtb3RlQWRkcmVzcywgMCkpIHtcbiAgICBob3N0ID0gdGhpcy5nZXQoJ0hvc3QnKTtcbiAgfVxuXG4gIGlmICghaG9zdCkgcmV0dXJuO1xuXG4gIC8vIElQdjYgbGl0ZXJhbCBzdXBwb3J0XG4gIHZhciBvZmZzZXQgPSBob3N0WzBdID09PSAnWydcbiAgICA/IGhvc3QuaW5kZXhPZignXScpICsgMVxuICAgIDogMDtcbiAgdmFyIGluZGV4ID0gaG9zdC5pbmRleE9mKCc6Jywgb2Zmc2V0KTtcblxuICByZXR1cm4gaW5kZXggIT09IC0xXG4gICAgPyBob3N0LnN1YnN0cmluZygwLCBpbmRleClcbiAgICA6IGhvc3Q7XG59KTtcblxuLy8gVE9ETzogY2hhbmdlIHJlcS5ob3N0IHRvIHJldHVybiBob3N0IGluIG5leHQgbWFqb3JcblxuZGVmaW5lR2V0dGVyKHJlcSwgJ2hvc3QnLCBkZXByZWNhdGUuZnVuY3Rpb24oZnVuY3Rpb24gaG9zdCgpe1xuICByZXR1cm4gdGhpcy5ob3N0bmFtZTtcbn0sICdyZXEuaG9zdDogVXNlIHJlcS5ob3N0bmFtZSBpbnN0ZWFkJykpO1xuXG4vKipcbiAqIENoZWNrIGlmIHRoZSByZXF1ZXN0IGlzIGZyZXNoLCBha2FcbiAqIExhc3QtTW9kaWZpZWQgYW5kL29yIHRoZSBFVGFnXG4gKiBzdGlsbCBtYXRjaC5cbiAqXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmRlZmluZUdldHRlcihyZXEsICdmcmVzaCcsIGZ1bmN0aW9uKCl7XG4gIHZhciBtZXRob2QgPSB0aGlzLm1ldGhvZDtcbiAgdmFyIHJlcyA9IHRoaXMucmVzXG4gIHZhciBzdGF0dXMgPSByZXMuc3RhdHVzQ29kZVxuXG4gIC8vIEdFVCBvciBIRUFEIGZvciB3ZWFrIGZyZXNobmVzcyB2YWxpZGF0aW9uIG9ubHlcbiAgaWYgKCdHRVQnICE9PSBtZXRob2QgJiYgJ0hFQUQnICE9PSBtZXRob2QpIHJldHVybiBmYWxzZTtcblxuICAvLyAyeHggb3IgMzA0IGFzIHBlciByZmMyNjE2IDE0LjI2XG4gIGlmICgoc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDApIHx8IDMwNCA9PT0gc3RhdHVzKSB7XG4gICAgcmV0dXJuIGZyZXNoKHRoaXMuaGVhZGVycywge1xuICAgICAgJ2V0YWcnOiByZXMuZ2V0KCdFVGFnJyksXG4gICAgICAnbGFzdC1tb2RpZmllZCc6IHJlcy5nZXQoJ0xhc3QtTW9kaWZpZWQnKVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59KTtcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVxdWVzdCBpcyBzdGFsZSwgYWthXG4gKiBcIkxhc3QtTW9kaWZpZWRcIiBhbmQgLyBvciB0aGUgXCJFVGFnXCIgZm9yIHRoZVxuICogcmVzb3VyY2UgaGFzIGNoYW5nZWQuXG4gKlxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5kZWZpbmVHZXR0ZXIocmVxLCAnc3RhbGUnLCBmdW5jdGlvbiBzdGFsZSgpe1xuICByZXR1cm4gIXRoaXMuZnJlc2g7XG59KTtcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgcmVxdWVzdCB3YXMgYW4gX1hNTEh0dHBSZXF1ZXN0Xy5cbiAqXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQHB1YmxpY1xuICovXG5cbmRlZmluZUdldHRlcihyZXEsICd4aHInLCBmdW5jdGlvbiB4aHIoKXtcbiAgdmFyIHZhbCA9IHRoaXMuZ2V0KCdYLVJlcXVlc3RlZC1XaXRoJykgfHwgJyc7XG4gIHJldHVybiB2YWwudG9Mb3dlckNhc2UoKSA9PT0gJ3htbGh0dHByZXF1ZXN0Jztcbn0pO1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBnZXR0ZXIgb24gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBnZXR0ZXJcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIGRlZmluZUdldHRlcihvYmosIG5hbWUsIGdldHRlcikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBuYW1lLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBnZXR0ZXJcbiAgfSk7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZXhwcmVzcy9saWIvcmVxdWVzdC5qc1xuLy8gbW9kdWxlIGlkID0gMTczXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogYWNjZXB0c1xuICogQ29weXJpZ2h0KGMpIDIwMTQgSm9uYXRoYW4gT25nXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnXG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIE5lZ290aWF0b3IgPSByZXF1aXJlKCduZWdvdGlhdG9yJylcbnZhciBtaW1lID0gcmVxdWlyZSgnbWltZS10eXBlcycpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBBY2NlcHRzXG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IEFjY2VwdHMgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gcmVxLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBBY2NlcHRzIChyZXEpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEFjY2VwdHMpKSB7XG4gICAgcmV0dXJuIG5ldyBBY2NlcHRzKHJlcSlcbiAgfVxuXG4gIHRoaXMuaGVhZGVycyA9IHJlcS5oZWFkZXJzXG4gIHRoaXMubmVnb3RpYXRvciA9IG5ldyBOZWdvdGlhdG9yKHJlcSlcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgZ2l2ZW4gYHR5cGUocylgIGlzIGFjY2VwdGFibGUsIHJldHVybmluZ1xuICogdGhlIGJlc3QgbWF0Y2ggd2hlbiB0cnVlLCBvdGhlcndpc2UgYHVuZGVmaW5lZGAsIGluIHdoaWNoXG4gKiBjYXNlIHlvdSBzaG91bGQgcmVzcG9uZCB3aXRoIDQwNiBcIk5vdCBBY2NlcHRhYmxlXCIuXG4gKlxuICogVGhlIGB0eXBlYCB2YWx1ZSBtYXkgYmUgYSBzaW5nbGUgbWltZSB0eXBlIHN0cmluZ1xuICogc3VjaCBhcyBcImFwcGxpY2F0aW9uL2pzb25cIiwgdGhlIGV4dGVuc2lvbiBuYW1lXG4gKiBzdWNoIGFzIFwianNvblwiIG9yIGFuIGFycmF5IGBbXCJqc29uXCIsIFwiaHRtbFwiLCBcInRleHQvcGxhaW5cIl1gLiBXaGVuIGEgbGlzdFxuICogb3IgYXJyYXkgaXMgZ2l2ZW4gdGhlIF9iZXN0XyBtYXRjaCwgaWYgYW55IGlzIHJldHVybmVkLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAvLyBBY2NlcHQ6IHRleHQvaHRtbFxuICogICAgIHRoaXMudHlwZXMoJ2h0bWwnKTtcbiAqICAgICAvLyA9PiBcImh0bWxcIlxuICpcbiAqICAgICAvLyBBY2NlcHQ6IHRleHQvKiwgYXBwbGljYXRpb24vanNvblxuICogICAgIHRoaXMudHlwZXMoJ2h0bWwnKTtcbiAqICAgICAvLyA9PiBcImh0bWxcIlxuICogICAgIHRoaXMudHlwZXMoJ3RleHQvaHRtbCcpO1xuICogICAgIC8vID0+IFwidGV4dC9odG1sXCJcbiAqICAgICB0aGlzLnR5cGVzKCdqc29uJywgJ3RleHQnKTtcbiAqICAgICAvLyA9PiBcImpzb25cIlxuICogICAgIHRoaXMudHlwZXMoJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAqICAgICAvLyA9PiBcImFwcGxpY2F0aW9uL2pzb25cIlxuICpcbiAqICAgICAvLyBBY2NlcHQ6IHRleHQvKiwgYXBwbGljYXRpb24vanNvblxuICogICAgIHRoaXMudHlwZXMoJ2ltYWdlL3BuZycpO1xuICogICAgIHRoaXMudHlwZXMoJ3BuZycpO1xuICogICAgIC8vID0+IHVuZGVmaW5lZFxuICpcbiAqICAgICAvLyBBY2NlcHQ6IHRleHQvKjtxPS41LCBhcHBsaWNhdGlvbi9qc29uXG4gKiAgICAgdGhpcy50eXBlcyhbJ2h0bWwnLCAnanNvbiddKTtcbiAqICAgICB0aGlzLnR5cGVzKCdodG1sJywgJ2pzb24nKTtcbiAqICAgICAvLyA9PiBcImpzb25cIlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSB0eXBlcy4uLlxuICogQHJldHVybiB7U3RyaW5nfEFycmF5fEJvb2xlYW59XG4gKiBAcHVibGljXG4gKi9cblxuQWNjZXB0cy5wcm90b3R5cGUudHlwZSA9XG5BY2NlcHRzLnByb3RvdHlwZS50eXBlcyA9IGZ1bmN0aW9uICh0eXBlc18pIHtcbiAgdmFyIHR5cGVzID0gdHlwZXNfXG5cbiAgLy8gc3VwcG9ydCBmbGF0dGVuZWQgYXJndW1lbnRzXG4gIGlmICh0eXBlcyAmJiAhQXJyYXkuaXNBcnJheSh0eXBlcykpIHtcbiAgICB0eXBlcyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHR5cGVzW2ldID0gYXJndW1lbnRzW2ldXG4gICAgfVxuICB9XG5cbiAgLy8gbm8gdHlwZXMsIHJldHVybiBhbGwgcmVxdWVzdGVkIHR5cGVzXG4gIGlmICghdHlwZXMgfHwgdHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnb3RpYXRvci5tZWRpYVR5cGVzKClcbiAgfVxuXG4gIC8vIG5vIGFjY2VwdCBoZWFkZXIsIHJldHVybiBmaXJzdCBnaXZlbiB0eXBlXG4gIGlmICghdGhpcy5oZWFkZXJzLmFjY2VwdCkge1xuICAgIHJldHVybiB0eXBlc1swXVxuICB9XG5cbiAgdmFyIG1pbWVzID0gdHlwZXMubWFwKGV4dFRvTWltZSlcbiAgdmFyIGFjY2VwdHMgPSB0aGlzLm5lZ290aWF0b3IubWVkaWFUeXBlcyhtaW1lcy5maWx0ZXIodmFsaWRNaW1lKSlcbiAgdmFyIGZpcnN0ID0gYWNjZXB0c1swXVxuXG4gIHJldHVybiBmaXJzdFxuICAgID8gdHlwZXNbbWltZXMuaW5kZXhPZihmaXJzdCldXG4gICAgOiBmYWxzZVxufVxuXG4vKipcbiAqIFJldHVybiBhY2NlcHRlZCBlbmNvZGluZ3Mgb3IgYmVzdCBmaXQgYmFzZWQgb24gYGVuY29kaW5nc2AuXG4gKlxuICogR2l2ZW4gYEFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZWBcbiAqIGFuIGFycmF5IHNvcnRlZCBieSBxdWFsaXR5IGlzIHJldHVybmVkOlxuICpcbiAqICAgICBbJ2d6aXAnLCAnZGVmbGF0ZSddXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGVuY29kaW5ncy4uLlxuICogQHJldHVybiB7U3RyaW5nfEFycmF5fVxuICogQHB1YmxpY1xuICovXG5cbkFjY2VwdHMucHJvdG90eXBlLmVuY29kaW5nID1cbkFjY2VwdHMucHJvdG90eXBlLmVuY29kaW5ncyA9IGZ1bmN0aW9uIChlbmNvZGluZ3NfKSB7XG4gIHZhciBlbmNvZGluZ3MgPSBlbmNvZGluZ3NfXG5cbiAgLy8gc3VwcG9ydCBmbGF0dGVuZWQgYXJndW1lbnRzXG4gIGlmIChlbmNvZGluZ3MgJiYgIUFycmF5LmlzQXJyYXkoZW5jb2RpbmdzKSkge1xuICAgIGVuY29kaW5ncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW5jb2RpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBlbmNvZGluZ3NbaV0gPSBhcmd1bWVudHNbaV1cbiAgICB9XG4gIH1cblxuICAvLyBubyBlbmNvZGluZ3MsIHJldHVybiBhbGwgcmVxdWVzdGVkIGVuY29kaW5nc1xuICBpZiAoIWVuY29kaW5ncyB8fCBlbmNvZGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnb3RpYXRvci5lbmNvZGluZ3MoKVxuICB9XG5cbiAgcmV0dXJuIHRoaXMubmVnb3RpYXRvci5lbmNvZGluZ3MoZW5jb2RpbmdzKVswXSB8fCBmYWxzZVxufVxuXG4vKipcbiAqIFJldHVybiBhY2NlcHRlZCBjaGFyc2V0cyBvciBiZXN0IGZpdCBiYXNlZCBvbiBgY2hhcnNldHNgLlxuICpcbiAqIEdpdmVuIGBBY2NlcHQtQ2hhcnNldDogdXRmLTgsIGlzby04ODU5LTE7cT0wLjIsIHV0Zi03O3E9MC41YFxuICogYW4gYXJyYXkgc29ydGVkIGJ5IHF1YWxpdHkgaXMgcmV0dXJuZWQ6XG4gKlxuICogICAgIFsndXRmLTgnLCAndXRmLTcnLCAnaXNvLTg4NTktMSddXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGNoYXJzZXRzLi4uXG4gKiBAcmV0dXJuIHtTdHJpbmd8QXJyYXl9XG4gKiBAcHVibGljXG4gKi9cblxuQWNjZXB0cy5wcm90b3R5cGUuY2hhcnNldCA9XG5BY2NlcHRzLnByb3RvdHlwZS5jaGFyc2V0cyA9IGZ1bmN0aW9uIChjaGFyc2V0c18pIHtcbiAgdmFyIGNoYXJzZXRzID0gY2hhcnNldHNfXG5cbiAgLy8gc3VwcG9ydCBmbGF0dGVuZWQgYXJndW1lbnRzXG4gIGlmIChjaGFyc2V0cyAmJiAhQXJyYXkuaXNBcnJheShjaGFyc2V0cykpIHtcbiAgICBjaGFyc2V0cyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhcnNldHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoYXJzZXRzW2ldID0gYXJndW1lbnRzW2ldXG4gICAgfVxuICB9XG5cbiAgLy8gbm8gY2hhcnNldHMsIHJldHVybiBhbGwgcmVxdWVzdGVkIGNoYXJzZXRzXG4gIGlmICghY2hhcnNldHMgfHwgY2hhcnNldHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnb3RpYXRvci5jaGFyc2V0cygpXG4gIH1cblxuICByZXR1cm4gdGhpcy5uZWdvdGlhdG9yLmNoYXJzZXRzKGNoYXJzZXRzKVswXSB8fCBmYWxzZVxufVxuXG4vKipcbiAqIFJldHVybiBhY2NlcHRlZCBsYW5ndWFnZXMgb3IgYmVzdCBmaXQgYmFzZWQgb24gYGxhbmdzYC5cbiAqXG4gKiBHaXZlbiBgQWNjZXB0LUxhbmd1YWdlOiBlbjtxPTAuOCwgZXMsIHB0YFxuICogYW4gYXJyYXkgc29ydGVkIGJ5IHF1YWxpdHkgaXMgcmV0dXJuZWQ6XG4gKlxuICogICAgIFsnZXMnLCAncHQnLCAnZW4nXVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBsYW5ncy4uLlxuICogQHJldHVybiB7QXJyYXl8U3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5cbkFjY2VwdHMucHJvdG90eXBlLmxhbmcgPVxuQWNjZXB0cy5wcm90b3R5cGUubGFuZ3MgPVxuQWNjZXB0cy5wcm90b3R5cGUubGFuZ3VhZ2UgPVxuQWNjZXB0cy5wcm90b3R5cGUubGFuZ3VhZ2VzID0gZnVuY3Rpb24gKGxhbmd1YWdlc18pIHtcbiAgdmFyIGxhbmd1YWdlcyA9IGxhbmd1YWdlc19cblxuICAvLyBzdXBwb3J0IGZsYXR0ZW5lZCBhcmd1bWVudHNcbiAgaWYgKGxhbmd1YWdlcyAmJiAhQXJyYXkuaXNBcnJheShsYW5ndWFnZXMpKSB7XG4gICAgbGFuZ3VhZ2VzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYW5ndWFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxhbmd1YWdlc1tpXSA9IGFyZ3VtZW50c1tpXVxuICAgIH1cbiAgfVxuXG4gIC8vIG5vIGxhbmd1YWdlcywgcmV0dXJuIGFsbCByZXF1ZXN0ZWQgbGFuZ3VhZ2VzXG4gIGlmICghbGFuZ3VhZ2VzIHx8IGxhbmd1YWdlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdGhpcy5uZWdvdGlhdG9yLmxhbmd1YWdlcygpXG4gIH1cblxuICByZXR1cm4gdGhpcy5uZWdvdGlhdG9yLmxhbmd1YWdlcyhsYW5ndWFnZXMpWzBdIHx8IGZhbHNlXG59XG5cbi8qKlxuICogQ29udmVydCBleHRuYW1lcyB0byBtaW1lLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGV4dFRvTWltZSAodHlwZSkge1xuICByZXR1cm4gdHlwZS5pbmRleE9mKCcvJykgPT09IC0xXG4gICAgPyBtaW1lLmxvb2t1cCh0eXBlKVxuICAgIDogdHlwZVxufVxuXG4vKipcbiAqIENoZWNrIGlmIG1pbWUgaXMgdmFsaWQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gdmFsaWRNaW1lICh0eXBlKSB7XG4gIHJldHVybiB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZydcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9hY2NlcHRzL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxNzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBuZWdvdGlhdG9yXG4gKiBDb3B5cmlnaHQoYykgMjAxMiBGZWRlcmljbyBSb21lcm9cbiAqIENvcHlyaWdodChjKSAyMDEyLTIwMTQgSXNhYWMgWi4gU2NobHVldGVyXG4gKiBDb3B5cmlnaHQoYykgMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENhY2hlZCBsb2FkZWQgc3VibW9kdWxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIG1vZHVsZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gTmVnb3RpYXRvcjtcbm1vZHVsZS5leHBvcnRzLk5lZ290aWF0b3IgPSBOZWdvdGlhdG9yO1xuXG4vKipcbiAqIENyZWF0ZSBhIE5lZ290aWF0b3IgaW5zdGFuY2UgZnJvbSBhIHJlcXVlc3QuXG4gKiBAcGFyYW0ge29iamVjdH0gcmVxdWVzdFxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIE5lZ290aWF0b3IocmVxdWVzdCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTmVnb3RpYXRvcikpIHtcbiAgICByZXR1cm4gbmV3IE5lZ290aWF0b3IocmVxdWVzdCk7XG4gIH1cblxuICB0aGlzLnJlcXVlc3QgPSByZXF1ZXN0O1xufVxuXG5OZWdvdGlhdG9yLnByb3RvdHlwZS5jaGFyc2V0ID0gZnVuY3Rpb24gY2hhcnNldChhdmFpbGFibGUpIHtcbiAgdmFyIHNldCA9IHRoaXMuY2hhcnNldHMoYXZhaWxhYmxlKTtcbiAgcmV0dXJuIHNldCAmJiBzZXRbMF07XG59O1xuXG5OZWdvdGlhdG9yLnByb3RvdHlwZS5jaGFyc2V0cyA9IGZ1bmN0aW9uIGNoYXJzZXRzKGF2YWlsYWJsZSkge1xuICB2YXIgcHJlZmVycmVkQ2hhcnNldHMgPSBsb2FkTW9kdWxlKCdjaGFyc2V0JykucHJlZmVycmVkQ2hhcnNldHM7XG4gIHJldHVybiBwcmVmZXJyZWRDaGFyc2V0cyh0aGlzLnJlcXVlc3QuaGVhZGVyc1snYWNjZXB0LWNoYXJzZXQnXSwgYXZhaWxhYmxlKTtcbn07XG5cbk5lZ290aWF0b3IucHJvdG90eXBlLmVuY29kaW5nID0gZnVuY3Rpb24gZW5jb2RpbmcoYXZhaWxhYmxlKSB7XG4gIHZhciBzZXQgPSB0aGlzLmVuY29kaW5ncyhhdmFpbGFibGUpO1xuICByZXR1cm4gc2V0ICYmIHNldFswXTtcbn07XG5cbk5lZ290aWF0b3IucHJvdG90eXBlLmVuY29kaW5ncyA9IGZ1bmN0aW9uIGVuY29kaW5ncyhhdmFpbGFibGUpIHtcbiAgdmFyIHByZWZlcnJlZEVuY29kaW5ncyA9IGxvYWRNb2R1bGUoJ2VuY29kaW5nJykucHJlZmVycmVkRW5jb2RpbmdzO1xuICByZXR1cm4gcHJlZmVycmVkRW5jb2RpbmdzKHRoaXMucmVxdWVzdC5oZWFkZXJzWydhY2NlcHQtZW5jb2RpbmcnXSwgYXZhaWxhYmxlKTtcbn07XG5cbk5lZ290aWF0b3IucHJvdG90eXBlLmxhbmd1YWdlID0gZnVuY3Rpb24gbGFuZ3VhZ2UoYXZhaWxhYmxlKSB7XG4gIHZhciBzZXQgPSB0aGlzLmxhbmd1YWdlcyhhdmFpbGFibGUpO1xuICByZXR1cm4gc2V0ICYmIHNldFswXTtcbn07XG5cbk5lZ290aWF0b3IucHJvdG90eXBlLmxhbmd1YWdlcyA9IGZ1bmN0aW9uIGxhbmd1YWdlcyhhdmFpbGFibGUpIHtcbiAgdmFyIHByZWZlcnJlZExhbmd1YWdlcyA9IGxvYWRNb2R1bGUoJ2xhbmd1YWdlJykucHJlZmVycmVkTGFuZ3VhZ2VzO1xuICByZXR1cm4gcHJlZmVycmVkTGFuZ3VhZ2VzKHRoaXMucmVxdWVzdC5oZWFkZXJzWydhY2NlcHQtbGFuZ3VhZ2UnXSwgYXZhaWxhYmxlKTtcbn07XG5cbk5lZ290aWF0b3IucHJvdG90eXBlLm1lZGlhVHlwZSA9IGZ1bmN0aW9uIG1lZGlhVHlwZShhdmFpbGFibGUpIHtcbiAgdmFyIHNldCA9IHRoaXMubWVkaWFUeXBlcyhhdmFpbGFibGUpO1xuICByZXR1cm4gc2V0ICYmIHNldFswXTtcbn07XG5cbk5lZ290aWF0b3IucHJvdG90eXBlLm1lZGlhVHlwZXMgPSBmdW5jdGlvbiBtZWRpYVR5cGVzKGF2YWlsYWJsZSkge1xuICB2YXIgcHJlZmVycmVkTWVkaWFUeXBlcyA9IGxvYWRNb2R1bGUoJ21lZGlhVHlwZScpLnByZWZlcnJlZE1lZGlhVHlwZXM7XG4gIHJldHVybiBwcmVmZXJyZWRNZWRpYVR5cGVzKHRoaXMucmVxdWVzdC5oZWFkZXJzLmFjY2VwdCwgYXZhaWxhYmxlKTtcbn07XG5cbi8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5OZWdvdGlhdG9yLnByb3RvdHlwZS5wcmVmZXJyZWRDaGFyc2V0ID0gTmVnb3RpYXRvci5wcm90b3R5cGUuY2hhcnNldDtcbk5lZ290aWF0b3IucHJvdG90eXBlLnByZWZlcnJlZENoYXJzZXRzID0gTmVnb3RpYXRvci5wcm90b3R5cGUuY2hhcnNldHM7XG5OZWdvdGlhdG9yLnByb3RvdHlwZS5wcmVmZXJyZWRFbmNvZGluZyA9IE5lZ290aWF0b3IucHJvdG90eXBlLmVuY29kaW5nO1xuTmVnb3RpYXRvci5wcm90b3R5cGUucHJlZmVycmVkRW5jb2RpbmdzID0gTmVnb3RpYXRvci5wcm90b3R5cGUuZW5jb2RpbmdzO1xuTmVnb3RpYXRvci5wcm90b3R5cGUucHJlZmVycmVkTGFuZ3VhZ2UgPSBOZWdvdGlhdG9yLnByb3RvdHlwZS5sYW5ndWFnZTtcbk5lZ290aWF0b3IucHJvdG90eXBlLnByZWZlcnJlZExhbmd1YWdlcyA9IE5lZ290aWF0b3IucHJvdG90eXBlLmxhbmd1YWdlcztcbk5lZ290aWF0b3IucHJvdG90eXBlLnByZWZlcnJlZE1lZGlhVHlwZSA9IE5lZ290aWF0b3IucHJvdG90eXBlLm1lZGlhVHlwZTtcbk5lZ290aWF0b3IucHJvdG90eXBlLnByZWZlcnJlZE1lZGlhVHlwZXMgPSBOZWdvdGlhdG9yLnByb3RvdHlwZS5tZWRpYVR5cGVzO1xuXG4vKipcbiAqIExvYWQgdGhlIGdpdmVuIG1vZHVsZS5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1lKSB7XG4gIHZhciBtb2R1bGUgPSBtb2R1bGVzW21vZHVsZU5hbWVdO1xuXG4gIGlmIChtb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBtb2R1bGU7XG4gIH1cblxuICAvLyBUaGlzIHVzZXMgYSBzd2l0Y2ggZm9yIHN0YXRpYyByZXF1aXJlIGFuYWx5c2lzXG4gIHN3aXRjaCAobW9kdWxlTmFtZSkge1xuICAgIGNhc2UgJ2NoYXJzZXQnOlxuICAgICAgbW9kdWxlID0gcmVxdWlyZSgnLi9saWIvY2hhcnNldCcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5jb2RpbmcnOlxuICAgICAgbW9kdWxlID0gcmVxdWlyZSgnLi9saWIvZW5jb2RpbmcnKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xhbmd1YWdlJzpcbiAgICAgIG1vZHVsZSA9IHJlcXVpcmUoJy4vbGliL2xhbmd1YWdlJyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdtZWRpYVR5cGUnOlxuICAgICAgbW9kdWxlID0gcmVxdWlyZSgnLi9saWIvbWVkaWFUeXBlJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmluZCBtb2R1bGUgXFwnJyArIG1vZHVsZU5hbWUgKyAnXFwnJyk7XG4gIH1cblxuICAvLyBTdG9yZSB0byBwcmV2ZW50IGludm9raW5nIHJlcXVpcmUoKVxuICBtb2R1bGVzW21vZHVsZU5hbWVdID0gbW9kdWxlO1xuXG4gIHJldHVybiBtb2R1bGU7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbmVnb3RpYXRvci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTc1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogbmVnb3RpYXRvclxuICogQ29weXJpZ2h0KGMpIDIwMTIgSXNhYWMgWi4gU2NobHVldGVyXG4gKiBDb3B5cmlnaHQoYykgMjAxNCBGZWRlcmljbyBSb21lcm9cbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTUgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqIEBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByZWZlcnJlZENoYXJzZXRzO1xubW9kdWxlLmV4cG9ydHMucHJlZmVycmVkQ2hhcnNldHMgPSBwcmVmZXJyZWRDaGFyc2V0cztcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgc2ltcGxlQ2hhcnNldFJlZ0V4cCA9IC9eXFxzKihbXlxccztdKylcXHMqKD86OyguKikpPyQvO1xuXG4vKipcbiAqIFBhcnNlIHRoZSBBY2NlcHQtQ2hhcnNldCBoZWFkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlQWNjZXB0Q2hhcnNldChhY2NlcHQpIHtcbiAgdmFyIGFjY2VwdHMgPSBhY2NlcHQuc3BsaXQoJywnKTtcblxuICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGkgPCBhY2NlcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNoYXJzZXQgPSBwYXJzZUNoYXJzZXQoYWNjZXB0c1tpXS50cmltKCksIGkpO1xuXG4gICAgaWYgKGNoYXJzZXQpIHtcbiAgICAgIGFjY2VwdHNbaisrXSA9IGNoYXJzZXQ7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJpbSBhY2NlcHRzXG4gIGFjY2VwdHMubGVuZ3RoID0gajtcblxuICByZXR1cm4gYWNjZXB0cztcbn1cblxuLyoqXG4gKiBQYXJzZSBhIGNoYXJzZXQgZnJvbSB0aGUgQWNjZXB0LUNoYXJzZXQgaGVhZGVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZUNoYXJzZXQoc3RyLCBpKSB7XG4gIHZhciBtYXRjaCA9IHNpbXBsZUNoYXJzZXRSZWdFeHAuZXhlYyhzdHIpO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbDtcblxuICB2YXIgY2hhcnNldCA9IG1hdGNoWzFdO1xuICB2YXIgcSA9IDE7XG4gIGlmIChtYXRjaFsyXSkge1xuICAgIHZhciBwYXJhbXMgPSBtYXRjaFsyXS5zcGxpdCgnOycpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpICsrKSB7XG4gICAgICB2YXIgcCA9IHBhcmFtc1tpXS50cmltKCkuc3BsaXQoJz0nKTtcbiAgICAgIGlmIChwWzBdID09PSAncScpIHtcbiAgICAgICAgcSA9IHBhcnNlRmxvYXQocFsxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2hhcnNldDogY2hhcnNldCxcbiAgICBxOiBxLFxuICAgIGk6IGlcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByaW9yaXR5IG9mIGEgY2hhcnNldC5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0Q2hhcnNldFByaW9yaXR5KGNoYXJzZXQsIGFjY2VwdGVkLCBpbmRleCkge1xuICB2YXIgcHJpb3JpdHkgPSB7bzogLTEsIHE6IDAsIHM6IDB9O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWNjZXB0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc3BlYyA9IHNwZWNpZnkoY2hhcnNldCwgYWNjZXB0ZWRbaV0sIGluZGV4KTtcblxuICAgIGlmIChzcGVjICYmIChwcmlvcml0eS5zIC0gc3BlYy5zIHx8IHByaW9yaXR5LnEgLSBzcGVjLnEgfHwgcHJpb3JpdHkubyAtIHNwZWMubykgPCAwKSB7XG4gICAgICBwcmlvcml0eSA9IHNwZWM7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHByaW9yaXR5O1xufVxuXG4vKipcbiAqIEdldCB0aGUgc3BlY2lmaWNpdHkgb2YgdGhlIGNoYXJzZXQuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNwZWNpZnkoY2hhcnNldCwgc3BlYywgaW5kZXgpIHtcbiAgdmFyIHMgPSAwO1xuICBpZihzcGVjLmNoYXJzZXQudG9Mb3dlckNhc2UoKSA9PT0gY2hhcnNldC50b0xvd2VyQ2FzZSgpKXtcbiAgICBzIHw9IDE7XG4gIH0gZWxzZSBpZiAoc3BlYy5jaGFyc2V0ICE9PSAnKicgKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaTogaW5kZXgsXG4gICAgbzogc3BlYy5pLFxuICAgIHE6IHNwZWMucSxcbiAgICBzOiBzXG4gIH1cbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByZWZlcnJlZCBjaGFyc2V0cyBmcm9tIGFuIEFjY2VwdC1DaGFyc2V0IGhlYWRlci5cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBwcmVmZXJyZWRDaGFyc2V0cyhhY2NlcHQsIHByb3ZpZGVkKSB7XG4gIC8vIFJGQyAyNjE2IHNlYyAxNC4yOiBubyBoZWFkZXIgPSAqXG4gIHZhciBhY2NlcHRzID0gcGFyc2VBY2NlcHRDaGFyc2V0KGFjY2VwdCA9PT0gdW5kZWZpbmVkID8gJyonIDogYWNjZXB0IHx8ICcnKTtcblxuICBpZiAoIXByb3ZpZGVkKSB7XG4gICAgLy8gc29ydGVkIGxpc3Qgb2YgYWxsIGNoYXJzZXRzXG4gICAgcmV0dXJuIGFjY2VwdHNcbiAgICAgIC5maWx0ZXIoaXNRdWFsaXR5KVxuICAgICAgLnNvcnQoY29tcGFyZVNwZWNzKVxuICAgICAgLm1hcChnZXRGdWxsQ2hhcnNldCk7XG4gIH1cblxuICB2YXIgcHJpb3JpdGllcyA9IHByb3ZpZGVkLm1hcChmdW5jdGlvbiBnZXRQcmlvcml0eSh0eXBlLCBpbmRleCkge1xuICAgIHJldHVybiBnZXRDaGFyc2V0UHJpb3JpdHkodHlwZSwgYWNjZXB0cywgaW5kZXgpO1xuICB9KTtcblxuICAvLyBzb3J0ZWQgbGlzdCBvZiBhY2NlcHRlZCBjaGFyc2V0c1xuICByZXR1cm4gcHJpb3JpdGllcy5maWx0ZXIoaXNRdWFsaXR5KS5zb3J0KGNvbXBhcmVTcGVjcykubWFwKGZ1bmN0aW9uIGdldENoYXJzZXQocHJpb3JpdHkpIHtcbiAgICByZXR1cm4gcHJvdmlkZWRbcHJpb3JpdGllcy5pbmRleE9mKHByaW9yaXR5KV07XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIHNwZWNzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb21wYXJlU3BlY3MoYSwgYikge1xuICByZXR1cm4gKGIucSAtIGEucSkgfHwgKGIucyAtIGEucykgfHwgKGEubyAtIGIubykgfHwgKGEuaSAtIGIuaSkgfHwgMDtcbn1cblxuLyoqXG4gKiBHZXQgZnVsbCBjaGFyc2V0IHN0cmluZy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gZ2V0RnVsbENoYXJzZXQoc3BlYykge1xuICByZXR1cm4gc3BlYy5jaGFyc2V0O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgc3BlYyBoYXMgYW55IHF1YWxpdHkuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGlzUXVhbGl0eShzcGVjKSB7XG4gIHJldHVybiBzcGVjLnEgPiAwO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL25lZ290aWF0b3IvbGliL2NoYXJzZXQuanNcbi8vIG1vZHVsZSBpZCA9IDE3NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIG5lZ290aWF0b3JcbiAqIENvcHlyaWdodChjKSAyMDEyIElzYWFjIFouIFNjaGx1ZXRlclxuICogQ29weXJpZ2h0KGMpIDIwMTQgRmVkZXJpY28gUm9tZXJvXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBwcmVmZXJyZWRFbmNvZGluZ3M7XG5tb2R1bGUuZXhwb3J0cy5wcmVmZXJyZWRFbmNvZGluZ3MgPSBwcmVmZXJyZWRFbmNvZGluZ3M7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIHNpbXBsZUVuY29kaW5nUmVnRXhwID0gL15cXHMqKFteXFxzO10rKVxccyooPzo7KC4qKSk/JC87XG5cbi8qKlxuICogUGFyc2UgdGhlIEFjY2VwdC1FbmNvZGluZyBoZWFkZXIuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlQWNjZXB0RW5jb2RpbmcoYWNjZXB0KSB7XG4gIHZhciBhY2NlcHRzID0gYWNjZXB0LnNwbGl0KCcsJyk7XG4gIHZhciBoYXNJZGVudGl0eSA9IGZhbHNlO1xuICB2YXIgbWluUXVhbGl0eSA9IDE7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGogPSAwOyBpIDwgYWNjZXB0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBlbmNvZGluZyA9IHBhcnNlRW5jb2RpbmcoYWNjZXB0c1tpXS50cmltKCksIGkpO1xuXG4gICAgaWYgKGVuY29kaW5nKSB7XG4gICAgICBhY2NlcHRzW2orK10gPSBlbmNvZGluZztcbiAgICAgIGhhc0lkZW50aXR5ID0gaGFzSWRlbnRpdHkgfHwgc3BlY2lmeSgnaWRlbnRpdHknLCBlbmNvZGluZyk7XG4gICAgICBtaW5RdWFsaXR5ID0gTWF0aC5taW4obWluUXVhbGl0eSwgZW5jb2RpbmcucSB8fCAxKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWhhc0lkZW50aXR5KSB7XG4gICAgLypcbiAgICAgKiBJZiBpZGVudGl0eSBkb2Vzbid0IGV4cGxpY2l0bHkgYXBwZWFyIGluIHRoZSBhY2NlcHQtZW5jb2RpbmcgaGVhZGVyLFxuICAgICAqIGl0J3MgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgYWNjZXB0YWJsZSBlbmNvZGluZyB3aXRoIHRoZSBsb3dlc3QgcVxuICAgICAqL1xuICAgIGFjY2VwdHNbaisrXSA9IHtcbiAgICAgIGVuY29kaW5nOiAnaWRlbnRpdHknLFxuICAgICAgcTogbWluUXVhbGl0eSxcbiAgICAgIGk6IGlcbiAgICB9O1xuICB9XG5cbiAgLy8gdHJpbSBhY2NlcHRzXG4gIGFjY2VwdHMubGVuZ3RoID0gajtcblxuICByZXR1cm4gYWNjZXB0cztcbn1cblxuLyoqXG4gKiBQYXJzZSBhbiBlbmNvZGluZyBmcm9tIHRoZSBBY2NlcHQtRW5jb2RpbmcgaGVhZGVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZUVuY29kaW5nKHN0ciwgaSkge1xuICB2YXIgbWF0Y2ggPSBzaW1wbGVFbmNvZGluZ1JlZ0V4cC5leGVjKHN0cik7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuXG4gIHZhciBlbmNvZGluZyA9IG1hdGNoWzFdO1xuICB2YXIgcSA9IDE7XG4gIGlmIChtYXRjaFsyXSkge1xuICAgIHZhciBwYXJhbXMgPSBtYXRjaFsyXS5zcGxpdCgnOycpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSArKykge1xuICAgICAgdmFyIHAgPSBwYXJhbXNbaV0udHJpbSgpLnNwbGl0KCc9Jyk7XG4gICAgICBpZiAocFswXSA9PT0gJ3EnKSB7XG4gICAgICAgIHEgPSBwYXJzZUZsb2F0KHBbMV0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVuY29kaW5nOiBlbmNvZGluZyxcbiAgICBxOiBxLFxuICAgIGk6IGlcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHByaW9yaXR5IG9mIGFuIGVuY29kaW5nLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRFbmNvZGluZ1ByaW9yaXR5KGVuY29kaW5nLCBhY2NlcHRlZCwgaW5kZXgpIHtcbiAgdmFyIHByaW9yaXR5ID0ge286IC0xLCBxOiAwLCBzOiAwfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFjY2VwdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNwZWMgPSBzcGVjaWZ5KGVuY29kaW5nLCBhY2NlcHRlZFtpXSwgaW5kZXgpO1xuXG4gICAgaWYgKHNwZWMgJiYgKHByaW9yaXR5LnMgLSBzcGVjLnMgfHwgcHJpb3JpdHkucSAtIHNwZWMucSB8fCBwcmlvcml0eS5vIC0gc3BlYy5vKSA8IDApIHtcbiAgICAgIHByaW9yaXR5ID0gc3BlYztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJpb3JpdHk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBzcGVjaWZpY2l0eSBvZiB0aGUgZW5jb2RpbmcuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNwZWNpZnkoZW5jb2RpbmcsIHNwZWMsIGluZGV4KSB7XG4gIHZhciBzID0gMDtcbiAgaWYoc3BlYy5lbmNvZGluZy50b0xvd2VyQ2FzZSgpID09PSBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKXtcbiAgICBzIHw9IDE7XG4gIH0gZWxzZSBpZiAoc3BlYy5lbmNvZGluZyAhPT0gJyonICkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGk6IGluZGV4LFxuICAgIG86IHNwZWMuaSxcbiAgICBxOiBzcGVjLnEsXG4gICAgczogc1xuICB9XG59O1xuXG4vKipcbiAqIEdldCB0aGUgcHJlZmVycmVkIGVuY29kaW5ncyBmcm9tIGFuIEFjY2VwdC1FbmNvZGluZyBoZWFkZXIuXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcHJlZmVycmVkRW5jb2RpbmdzKGFjY2VwdCwgcHJvdmlkZWQpIHtcbiAgdmFyIGFjY2VwdHMgPSBwYXJzZUFjY2VwdEVuY29kaW5nKGFjY2VwdCB8fCAnJyk7XG5cbiAgaWYgKCFwcm92aWRlZCkge1xuICAgIC8vIHNvcnRlZCBsaXN0IG9mIGFsbCBlbmNvZGluZ3NcbiAgICByZXR1cm4gYWNjZXB0c1xuICAgICAgLmZpbHRlcihpc1F1YWxpdHkpXG4gICAgICAuc29ydChjb21wYXJlU3BlY3MpXG4gICAgICAubWFwKGdldEZ1bGxFbmNvZGluZyk7XG4gIH1cblxuICB2YXIgcHJpb3JpdGllcyA9IHByb3ZpZGVkLm1hcChmdW5jdGlvbiBnZXRQcmlvcml0eSh0eXBlLCBpbmRleCkge1xuICAgIHJldHVybiBnZXRFbmNvZGluZ1ByaW9yaXR5KHR5cGUsIGFjY2VwdHMsIGluZGV4KTtcbiAgfSk7XG5cbiAgLy8gc29ydGVkIGxpc3Qgb2YgYWNjZXB0ZWQgZW5jb2RpbmdzXG4gIHJldHVybiBwcmlvcml0aWVzLmZpbHRlcihpc1F1YWxpdHkpLnNvcnQoY29tcGFyZVNwZWNzKS5tYXAoZnVuY3Rpb24gZ2V0RW5jb2RpbmcocHJpb3JpdHkpIHtcbiAgICByZXR1cm4gcHJvdmlkZWRbcHJpb3JpdGllcy5pbmRleE9mKHByaW9yaXR5KV07XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIHNwZWNzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb21wYXJlU3BlY3MoYSwgYikge1xuICByZXR1cm4gKGIucSAtIGEucSkgfHwgKGIucyAtIGEucykgfHwgKGEubyAtIGIubykgfHwgKGEuaSAtIGIuaSkgfHwgMDtcbn1cblxuLyoqXG4gKiBHZXQgZnVsbCBlbmNvZGluZyBzdHJpbmcuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldEZ1bGxFbmNvZGluZyhzcGVjKSB7XG4gIHJldHVybiBzcGVjLmVuY29kaW5nO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgc3BlYyBoYXMgYW55IHF1YWxpdHkuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGlzUXVhbGl0eShzcGVjKSB7XG4gIHJldHVybiBzcGVjLnEgPiAwO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL25lZ290aWF0b3IvbGliL2VuY29kaW5nLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBuZWdvdGlhdG9yXG4gKiBDb3B5cmlnaHQoYykgMjAxMiBJc2FhYyBaLiBTY2hsdWV0ZXJcbiAqIENvcHlyaWdodChjKSAyMDE0IEZlZGVyaWNvIFJvbWVyb1xuICogQ29weXJpZ2h0KGMpIDIwMTQtMjAxNSBEb3VnbGFzIENocmlzdG9waGVyIFdpbHNvblxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBleHBvcnRzLlxuICogQHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gcHJlZmVycmVkTGFuZ3VhZ2VzO1xubW9kdWxlLmV4cG9ydHMucHJlZmVycmVkTGFuZ3VhZ2VzID0gcHJlZmVycmVkTGFuZ3VhZ2VzO1xuXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJsZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBzaW1wbGVMYW5ndWFnZVJlZ0V4cCA9IC9eXFxzKihbXlxcc1xcLTtdKykoPzotKFteXFxzO10rKSk/XFxzKig/OjsoLiopKT8kLztcblxuLyoqXG4gKiBQYXJzZSB0aGUgQWNjZXB0LUxhbmd1YWdlIGhlYWRlci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VBY2NlcHRMYW5ndWFnZShhY2NlcHQpIHtcbiAgdmFyIGFjY2VwdHMgPSBhY2NlcHQuc3BsaXQoJywnKTtcblxuICBmb3IgKHZhciBpID0gMCwgaiA9IDA7IGkgPCBhY2NlcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGxhbmdhdWdlID0gcGFyc2VMYW5ndWFnZShhY2NlcHRzW2ldLnRyaW0oKSwgaSk7XG5cbiAgICBpZiAobGFuZ2F1Z2UpIHtcbiAgICAgIGFjY2VwdHNbaisrXSA9IGxhbmdhdWdlO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRyaW0gYWNjZXB0c1xuICBhY2NlcHRzLmxlbmd0aCA9IGo7XG5cbiAgcmV0dXJuIGFjY2VwdHM7XG59XG5cbi8qKlxuICogUGFyc2UgYSBsYW5ndWFnZSBmcm9tIHRoZSBBY2NlcHQtTGFuZ3VhZ2UgaGVhZGVyLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZUxhbmd1YWdlKHN0ciwgaSkge1xuICB2YXIgbWF0Y2ggPSBzaW1wbGVMYW5ndWFnZVJlZ0V4cC5leGVjKHN0cik7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuXG4gIHZhciBwcmVmaXggPSBtYXRjaFsxXSxcbiAgICAgIHN1ZmZpeCA9IG1hdGNoWzJdLFxuICAgICAgZnVsbCA9IHByZWZpeDtcblxuICBpZiAoc3VmZml4KSBmdWxsICs9IFwiLVwiICsgc3VmZml4O1xuXG4gIHZhciBxID0gMTtcbiAgaWYgKG1hdGNoWzNdKSB7XG4gICAgdmFyIHBhcmFtcyA9IG1hdGNoWzNdLnNwbGl0KCc7JylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtcy5sZW5ndGg7IGkgKyspIHtcbiAgICAgIHZhciBwID0gcGFyYW1zW2ldLnNwbGl0KCc9Jyk7XG4gICAgICBpZiAocFswXSA9PT0gJ3EnKSBxID0gcGFyc2VGbG9hdChwWzFdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHByZWZpeDogcHJlZml4LFxuICAgIHN1ZmZpeDogc3VmZml4LFxuICAgIHE6IHEsXG4gICAgaTogaSxcbiAgICBmdWxsOiBmdWxsXG4gIH07XG59XG5cbi8qKlxuICogR2V0IHRoZSBwcmlvcml0eSBvZiBhIGxhbmd1YWdlLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRMYW5ndWFnZVByaW9yaXR5KGxhbmd1YWdlLCBhY2NlcHRlZCwgaW5kZXgpIHtcbiAgdmFyIHByaW9yaXR5ID0ge286IC0xLCBxOiAwLCBzOiAwfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFjY2VwdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNwZWMgPSBzcGVjaWZ5KGxhbmd1YWdlLCBhY2NlcHRlZFtpXSwgaW5kZXgpO1xuXG4gICAgaWYgKHNwZWMgJiYgKHByaW9yaXR5LnMgLSBzcGVjLnMgfHwgcHJpb3JpdHkucSAtIHNwZWMucSB8fCBwcmlvcml0eS5vIC0gc3BlYy5vKSA8IDApIHtcbiAgICAgIHByaW9yaXR5ID0gc3BlYztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJpb3JpdHk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBzcGVjaWZpY2l0eSBvZiB0aGUgbGFuZ3VhZ2UuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNwZWNpZnkobGFuZ3VhZ2UsIHNwZWMsIGluZGV4KSB7XG4gIHZhciBwID0gcGFyc2VMYW5ndWFnZShsYW5ndWFnZSlcbiAgaWYgKCFwKSByZXR1cm4gbnVsbDtcbiAgdmFyIHMgPSAwO1xuICBpZihzcGVjLmZ1bGwudG9Mb3dlckNhc2UoKSA9PT0gcC5mdWxsLnRvTG93ZXJDYXNlKCkpe1xuICAgIHMgfD0gNDtcbiAgfSBlbHNlIGlmIChzcGVjLnByZWZpeC50b0xvd2VyQ2FzZSgpID09PSBwLmZ1bGwudG9Mb3dlckNhc2UoKSkge1xuICAgIHMgfD0gMjtcbiAgfSBlbHNlIGlmIChzcGVjLmZ1bGwudG9Mb3dlckNhc2UoKSA9PT0gcC5wcmVmaXgudG9Mb3dlckNhc2UoKSkge1xuICAgIHMgfD0gMTtcbiAgfSBlbHNlIGlmIChzcGVjLmZ1bGwgIT09ICcqJyApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBpOiBpbmRleCxcbiAgICBvOiBzcGVjLmksXG4gICAgcTogc3BlYy5xLFxuICAgIHM6IHNcbiAgfVxufTtcblxuLyoqXG4gKiBHZXQgdGhlIHByZWZlcnJlZCBsYW5ndWFnZXMgZnJvbSBhbiBBY2NlcHQtTGFuZ3VhZ2UgaGVhZGVyLlxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIHByZWZlcnJlZExhbmd1YWdlcyhhY2NlcHQsIHByb3ZpZGVkKSB7XG4gIC8vIFJGQyAyNjE2IHNlYyAxNC40OiBubyBoZWFkZXIgPSAqXG4gIHZhciBhY2NlcHRzID0gcGFyc2VBY2NlcHRMYW5ndWFnZShhY2NlcHQgPT09IHVuZGVmaW5lZCA/ICcqJyA6IGFjY2VwdCB8fCAnJyk7XG5cbiAgaWYgKCFwcm92aWRlZCkge1xuICAgIC8vIHNvcnRlZCBsaXN0IG9mIGFsbCBsYW5ndWFnZXNcbiAgICByZXR1cm4gYWNjZXB0c1xuICAgICAgLmZpbHRlcihpc1F1YWxpdHkpXG4gICAgICAuc29ydChjb21wYXJlU3BlY3MpXG4gICAgICAubWFwKGdldEZ1bGxMYW5ndWFnZSk7XG4gIH1cblxuICB2YXIgcHJpb3JpdGllcyA9IHByb3ZpZGVkLm1hcChmdW5jdGlvbiBnZXRQcmlvcml0eSh0eXBlLCBpbmRleCkge1xuICAgIHJldHVybiBnZXRMYW5ndWFnZVByaW9yaXR5KHR5cGUsIGFjY2VwdHMsIGluZGV4KTtcbiAgfSk7XG5cbiAgLy8gc29ydGVkIGxpc3Qgb2YgYWNjZXB0ZWQgbGFuZ3VhZ2VzXG4gIHJldHVybiBwcmlvcml0aWVzLmZpbHRlcihpc1F1YWxpdHkpLnNvcnQoY29tcGFyZVNwZWNzKS5tYXAoZnVuY3Rpb24gZ2V0TGFuZ3VhZ2UocHJpb3JpdHkpIHtcbiAgICByZXR1cm4gcHJvdmlkZWRbcHJpb3JpdGllcy5pbmRleE9mKHByaW9yaXR5KV07XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIHNwZWNzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb21wYXJlU3BlY3MoYSwgYikge1xuICByZXR1cm4gKGIucSAtIGEucSkgfHwgKGIucyAtIGEucykgfHwgKGEubyAtIGIubykgfHwgKGEuaSAtIGIuaSkgfHwgMDtcbn1cblxuLyoqXG4gKiBHZXQgZnVsbCBsYW5ndWFnZSBzdHJpbmcuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldEZ1bGxMYW5ndWFnZShzcGVjKSB7XG4gIHJldHVybiBzcGVjLmZ1bGw7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzcGVjIGhhcyBhbnkgcXVhbGl0eS5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaXNRdWFsaXR5KHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMucSA+IDA7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbmVnb3RpYXRvci9saWIvbGFuZ3VhZ2UuanNcbi8vIG1vZHVsZSBpZCA9IDE3OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKipcbiAqIG5lZ290aWF0b3JcbiAqIENvcHlyaWdodChjKSAyMDEyIElzYWFjIFouIFNjaGx1ZXRlclxuICogQ29weXJpZ2h0KGMpIDIwMTQgRmVkZXJpY28gUm9tZXJvXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBwcmVmZXJyZWRNZWRpYVR5cGVzO1xubW9kdWxlLmV4cG9ydHMucHJlZmVycmVkTWVkaWFUeXBlcyA9IHByZWZlcnJlZE1lZGlhVHlwZXM7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIHNpbXBsZU1lZGlhVHlwZVJlZ0V4cCA9IC9eXFxzKihbXlxcc1xcLztdKylcXC8oW147XFxzXSspXFxzKig/OjsoLiopKT8kLztcblxuLyoqXG4gKiBQYXJzZSB0aGUgQWNjZXB0IGhlYWRlci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VBY2NlcHQoYWNjZXB0KSB7XG4gIHZhciBhY2NlcHRzID0gc3BsaXRNZWRpYVR5cGVzKGFjY2VwdCk7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGogPSAwOyBpIDwgYWNjZXB0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBtZWRpYVR5cGUgPSBwYXJzZU1lZGlhVHlwZShhY2NlcHRzW2ldLnRyaW0oKSwgaSk7XG5cbiAgICBpZiAobWVkaWFUeXBlKSB7XG4gICAgICBhY2NlcHRzW2orK10gPSBtZWRpYVR5cGU7XG4gICAgfVxuICB9XG5cbiAgLy8gdHJpbSBhY2NlcHRzXG4gIGFjY2VwdHMubGVuZ3RoID0gajtcblxuICByZXR1cm4gYWNjZXB0cztcbn1cblxuLyoqXG4gKiBQYXJzZSBhIG1lZGlhIHR5cGUgZnJvbSB0aGUgQWNjZXB0IGhlYWRlci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VNZWRpYVR5cGUoc3RyLCBpKSB7XG4gIHZhciBtYXRjaCA9IHNpbXBsZU1lZGlhVHlwZVJlZ0V4cC5leGVjKHN0cik7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuXG4gIHZhciBwYXJhbXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgcSA9IDE7XG4gIHZhciBzdWJ0eXBlID0gbWF0Y2hbMl07XG4gIHZhciB0eXBlID0gbWF0Y2hbMV07XG5cbiAgaWYgKG1hdGNoWzNdKSB7XG4gICAgdmFyIGt2cHMgPSBzcGxpdFBhcmFtZXRlcnMobWF0Y2hbM10pLm1hcChzcGxpdEtleVZhbHVlUGFpcik7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGt2cHMubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBwYWlyID0ga3Zwc1tqXTtcbiAgICAgIHZhciBrZXkgPSBwYWlyWzBdLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgdmFsID0gcGFpclsxXTtcblxuICAgICAgLy8gZ2V0IHRoZSB2YWx1ZSwgdW53cmFwcGluZyBxdW90ZXNcbiAgICAgIHZhciB2YWx1ZSA9IHZhbCAmJiB2YWxbMF0gPT09ICdcIicgJiYgdmFsW3ZhbC5sZW5ndGggLSAxXSA9PT0gJ1wiJ1xuICAgICAgICA/IHZhbC5zdWJzdHIoMSwgdmFsLmxlbmd0aCAtIDIpXG4gICAgICAgIDogdmFsO1xuXG4gICAgICBpZiAoa2V5ID09PSAncScpIHtcbiAgICAgICAgcSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gc3RvcmUgcGFyYW1ldGVyXG4gICAgICBwYXJhbXNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogdHlwZSxcbiAgICBzdWJ0eXBlOiBzdWJ0eXBlLFxuICAgIHBhcmFtczogcGFyYW1zLFxuICAgIHE6IHEsXG4gICAgaTogaVxuICB9O1xufVxuXG4vKipcbiAqIEdldCB0aGUgcHJpb3JpdHkgb2YgYSBtZWRpYSB0eXBlLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBnZXRNZWRpYVR5cGVQcmlvcml0eSh0eXBlLCBhY2NlcHRlZCwgaW5kZXgpIHtcbiAgdmFyIHByaW9yaXR5ID0ge286IC0xLCBxOiAwLCBzOiAwfTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFjY2VwdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNwZWMgPSBzcGVjaWZ5KHR5cGUsIGFjY2VwdGVkW2ldLCBpbmRleCk7XG5cbiAgICBpZiAoc3BlYyAmJiAocHJpb3JpdHkucyAtIHNwZWMucyB8fCBwcmlvcml0eS5xIC0gc3BlYy5xIHx8IHByaW9yaXR5Lm8gLSBzcGVjLm8pIDwgMCkge1xuICAgICAgcHJpb3JpdHkgPSBzcGVjO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcmlvcml0eTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHNwZWNpZmljaXR5IG9mIHRoZSBtZWRpYSB0eXBlLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzcGVjaWZ5KHR5cGUsIHNwZWMsIGluZGV4KSB7XG4gIHZhciBwID0gcGFyc2VNZWRpYVR5cGUodHlwZSk7XG4gIHZhciBzID0gMDtcblxuICBpZiAoIXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmKHNwZWMudHlwZS50b0xvd2VyQ2FzZSgpID09IHAudHlwZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgcyB8PSA0XG4gIH0gZWxzZSBpZihzcGVjLnR5cGUgIT0gJyonKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZihzcGVjLnN1YnR5cGUudG9Mb3dlckNhc2UoKSA9PSBwLnN1YnR5cGUudG9Mb3dlckNhc2UoKSkge1xuICAgIHMgfD0gMlxuICB9IGVsc2UgaWYoc3BlYy5zdWJ0eXBlICE9ICcqJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzcGVjLnBhcmFtcyk7XG4gIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAoa2V5cy5ldmVyeShmdW5jdGlvbiAoaykge1xuICAgICAgcmV0dXJuIHNwZWMucGFyYW1zW2tdID09ICcqJyB8fCAoc3BlYy5wYXJhbXNba10gfHwgJycpLnRvTG93ZXJDYXNlKCkgPT0gKHAucGFyYW1zW2tdIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH0pKSB7XG4gICAgICBzIHw9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGk6IGluZGV4LFxuICAgIG86IHNwZWMuaSxcbiAgICBxOiBzcGVjLnEsXG4gICAgczogcyxcbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgcHJlZmVycmVkIG1lZGlhIHR5cGVzIGZyb20gYW4gQWNjZXB0IGhlYWRlci5cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBwcmVmZXJyZWRNZWRpYVR5cGVzKGFjY2VwdCwgcHJvdmlkZWQpIHtcbiAgLy8gUkZDIDI2MTYgc2VjIDE0LjI6IG5vIGhlYWRlciA9ICovKlxuICB2YXIgYWNjZXB0cyA9IHBhcnNlQWNjZXB0KGFjY2VwdCA9PT0gdW5kZWZpbmVkID8gJyovKicgOiBhY2NlcHQgfHwgJycpO1xuXG4gIGlmICghcHJvdmlkZWQpIHtcbiAgICAvLyBzb3J0ZWQgbGlzdCBvZiBhbGwgdHlwZXNcbiAgICByZXR1cm4gYWNjZXB0c1xuICAgICAgLmZpbHRlcihpc1F1YWxpdHkpXG4gICAgICAuc29ydChjb21wYXJlU3BlY3MpXG4gICAgICAubWFwKGdldEZ1bGxUeXBlKTtcbiAgfVxuXG4gIHZhciBwcmlvcml0aWVzID0gcHJvdmlkZWQubWFwKGZ1bmN0aW9uIGdldFByaW9yaXR5KHR5cGUsIGluZGV4KSB7XG4gICAgcmV0dXJuIGdldE1lZGlhVHlwZVByaW9yaXR5KHR5cGUsIGFjY2VwdHMsIGluZGV4KTtcbiAgfSk7XG5cbiAgLy8gc29ydGVkIGxpc3Qgb2YgYWNjZXB0ZWQgdHlwZXNcbiAgcmV0dXJuIHByaW9yaXRpZXMuZmlsdGVyKGlzUXVhbGl0eSkuc29ydChjb21wYXJlU3BlY3MpLm1hcChmdW5jdGlvbiBnZXRUeXBlKHByaW9yaXR5KSB7XG4gICAgcmV0dXJuIHByb3ZpZGVkW3ByaW9yaXRpZXMuaW5kZXhPZihwcmlvcml0eSldO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byBzcGVjcy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29tcGFyZVNwZWNzKGEsIGIpIHtcbiAgcmV0dXJuIChiLnEgLSBhLnEpIHx8IChiLnMgLSBhLnMpIHx8IChhLm8gLSBiLm8pIHx8IChhLmkgLSBiLmkpIHx8IDA7XG59XG5cbi8qKlxuICogR2V0IGZ1bGwgdHlwZSBzdHJpbmcuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGdldEZ1bGxUeXBlKHNwZWMpIHtcbiAgcmV0dXJuIHNwZWMudHlwZSArICcvJyArIHNwZWMuc3VidHlwZTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHNwZWMgaGFzIGFueSBxdWFsaXR5LlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBpc1F1YWxpdHkoc3BlYykge1xuICByZXR1cm4gc3BlYy5xID4gMDtcbn1cblxuLyoqXG4gKiBDb3VudCB0aGUgbnVtYmVyIG9mIHF1b3RlcyBpbiBhIHN0cmluZy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcXVvdGVDb3VudChzdHJpbmcpIHtcbiAgdmFyIGNvdW50ID0gMDtcbiAgdmFyIGluZGV4ID0gMDtcblxuICB3aGlsZSAoKGluZGV4ID0gc3RyaW5nLmluZGV4T2YoJ1wiJywgaW5kZXgpKSAhPT0gLTEpIHtcbiAgICBjb3VudCsrO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICByZXR1cm4gY291bnQ7XG59XG5cbi8qKlxuICogU3BsaXQgYSBrZXkgdmFsdWUgcGFpci5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc3BsaXRLZXlWYWx1ZVBhaXIoc3RyKSB7XG4gIHZhciBpbmRleCA9IHN0ci5pbmRleE9mKCc9Jyk7XG4gIHZhciBrZXk7XG4gIHZhciB2YWw7XG5cbiAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgIGtleSA9IHN0cjtcbiAgfSBlbHNlIHtcbiAgICBrZXkgPSBzdHIuc3Vic3RyKDAsIGluZGV4KTtcbiAgICB2YWwgPSBzdHIuc3Vic3RyKGluZGV4ICsgMSk7XG4gIH1cblxuICByZXR1cm4gW2tleSwgdmFsXTtcbn1cblxuLyoqXG4gKiBTcGxpdCBhbiBBY2NlcHQgaGVhZGVyIGludG8gbWVkaWEgdHlwZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNwbGl0TWVkaWFUeXBlcyhhY2NlcHQpIHtcbiAgdmFyIGFjY2VwdHMgPSBhY2NlcHQuc3BsaXQoJywnKTtcblxuICBmb3IgKHZhciBpID0gMSwgaiA9IDA7IGkgPCBhY2NlcHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHF1b3RlQ291bnQoYWNjZXB0c1tqXSkgJSAyID09IDApIHtcbiAgICAgIGFjY2VwdHNbKytqXSA9IGFjY2VwdHNbaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjY2VwdHNbal0gKz0gJywnICsgYWNjZXB0c1tpXTtcbiAgICB9XG4gIH1cblxuICAvLyB0cmltIGFjY2VwdHNcbiAgYWNjZXB0cy5sZW5ndGggPSBqICsgMTtcblxuICByZXR1cm4gYWNjZXB0cztcbn1cblxuLyoqXG4gKiBTcGxpdCBhIHN0cmluZyBvZiBwYXJhbWV0ZXJzLlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzcGxpdFBhcmFtZXRlcnMoc3RyKSB7XG4gIHZhciBwYXJhbWV0ZXJzID0gc3RyLnNwbGl0KCc7Jyk7XG5cbiAgZm9yICh2YXIgaSA9IDEsIGogPSAwOyBpIDwgcGFyYW1ldGVycy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChxdW90ZUNvdW50KHBhcmFtZXRlcnNbal0pICUgMiA9PSAwKSB7XG4gICAgICBwYXJhbWV0ZXJzWysral0gPSBwYXJhbWV0ZXJzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbWV0ZXJzW2pdICs9ICc7JyArIHBhcmFtZXRlcnNbaV07XG4gICAgfVxuICB9XG5cbiAgLy8gdHJpbSBwYXJhbWV0ZXJzXG4gIHBhcmFtZXRlcnMubGVuZ3RoID0gaiArIDE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgcGFyYW1ldGVyc1tpXSA9IHBhcmFtZXRlcnNbaV0udHJpbSgpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbmVnb3RpYXRvci9saWIvbWVkaWFUeXBlLmpzXG4vLyBtb2R1bGUgaWQgPSAxNzlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBleHByZXNzXG4gKiBDb3B5cmlnaHQoYykgMjAwOS0yMDEzIFRKIEhvbG93YXljaHVrXG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgY29udGVudERpc3Bvc2l0aW9uID0gcmVxdWlyZSgnY29udGVudC1kaXNwb3NpdGlvbicpO1xudmFyIGRlcHJlY2F0ZSA9IHJlcXVpcmUoJ2RlcGQnKSgnZXhwcmVzcycpO1xudmFyIGVuY29kZVVybCA9IHJlcXVpcmUoJ2VuY29kZXVybCcpO1xudmFyIGVzY2FwZUh0bWwgPSByZXF1aXJlKCdlc2NhcGUtaHRtbCcpO1xudmFyIGh0dHAgPSByZXF1aXJlKCdodHRwJyk7XG52YXIgaXNBYnNvbHV0ZSA9IHJlcXVpcmUoJy4vdXRpbHMnKS5pc0Fic29sdXRlO1xudmFyIG9uRmluaXNoZWQgPSByZXF1aXJlKCdvbi1maW5pc2hlZCcpO1xudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgc3RhdHVzZXMgPSByZXF1aXJlKCdzdGF0dXNlcycpXG52YXIgbWVyZ2UgPSByZXF1aXJlKCd1dGlscy1tZXJnZScpO1xudmFyIHNpZ24gPSByZXF1aXJlKCdjb29raWUtc2lnbmF0dXJlJykuc2lnbjtcbnZhciBub3JtYWxpemVUeXBlID0gcmVxdWlyZSgnLi91dGlscycpLm5vcm1hbGl6ZVR5cGU7XG52YXIgbm9ybWFsaXplVHlwZXMgPSByZXF1aXJlKCcuL3V0aWxzJykubm9ybWFsaXplVHlwZXM7XG52YXIgc2V0Q2hhcnNldCA9IHJlcXVpcmUoJy4vdXRpbHMnKS5zZXRDaGFyc2V0O1xudmFyIGNvb2tpZSA9IHJlcXVpcmUoJ2Nvb2tpZScpO1xudmFyIHNlbmQgPSByZXF1aXJlKCdzZW5kJyk7XG52YXIgZXh0bmFtZSA9IHBhdGguZXh0bmFtZTtcbnZhciBtaW1lID0gc2VuZC5taW1lO1xudmFyIHJlc29sdmUgPSBwYXRoLnJlc29sdmU7XG52YXIgdmFyeSA9IHJlcXVpcmUoJ3ZhcnknKTtcblxuLyoqXG4gKiBSZXNwb25zZSBwcm90b3R5cGUuXG4gKiBAcHVibGljXG4gKi9cblxudmFyIHJlcyA9IE9iamVjdC5jcmVhdGUoaHR0cC5TZXJ2ZXJSZXNwb25zZS5wcm90b3R5cGUpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSByZXNcblxuLyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgY2hhcnNldFJlZ0V4cCA9IC87XFxzKmNoYXJzZXRcXHMqPS87XG5cbi8qKlxuICogU2V0IHN0YXR1cyBgY29kZWAuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IGNvZGVcbiAqIEByZXR1cm4ge1NlcnZlclJlc3BvbnNlfVxuICogQHB1YmxpY1xuICovXG5cbnJlcy5zdGF0dXMgPSBmdW5jdGlvbiBzdGF0dXMoY29kZSkge1xuICB0aGlzLnN0YXR1c0NvZGUgPSBjb2RlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IExpbmsgaGVhZGVyIGZpZWxkIHdpdGggdGhlIGdpdmVuIGBsaW5rc2AuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgcmVzLmxpbmtzKHtcbiAqICAgICAgbmV4dDogJ2h0dHA6Ly9hcGkuZXhhbXBsZS5jb20vdXNlcnM/cGFnZT0yJyxcbiAqICAgICAgbGFzdDogJ2h0dHA6Ly9hcGkuZXhhbXBsZS5jb20vdXNlcnM/cGFnZT01J1xuICogICAgfSk7XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGxpbmtzXG4gKiBAcmV0dXJuIHtTZXJ2ZXJSZXNwb25zZX1cbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMubGlua3MgPSBmdW5jdGlvbihsaW5rcyl7XG4gIHZhciBsaW5rID0gdGhpcy5nZXQoJ0xpbmsnKSB8fCAnJztcbiAgaWYgKGxpbmspIGxpbmsgKz0gJywgJztcbiAgcmV0dXJuIHRoaXMuc2V0KCdMaW5rJywgbGluayArIE9iamVjdC5rZXlzKGxpbmtzKS5tYXAoZnVuY3Rpb24ocmVsKXtcbiAgICByZXR1cm4gJzwnICsgbGlua3NbcmVsXSArICc+OyByZWw9XCInICsgcmVsICsgJ1wiJztcbiAgfSkuam9pbignLCAnKSk7XG59O1xuXG4vKipcbiAqIFNlbmQgYSByZXNwb25zZS5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgcmVzLnNlbmQoQnVmZmVyLmZyb20oJ3dhaG9vJykpO1xuICogICAgIHJlcy5zZW5kKHsgc29tZTogJ2pzb24nIH0pO1xuICogICAgIHJlcy5zZW5kKCc8cD5zb21lIGh0bWw8L3A+Jyk7XG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfGJvb2xlYW58b2JqZWN0fEJ1ZmZlcn0gYm9keVxuICogQHB1YmxpY1xuICovXG5cbnJlcy5zZW5kID0gZnVuY3Rpb24gc2VuZChib2R5KSB7XG4gIHZhciBjaHVuayA9IGJvZHk7XG4gIHZhciBlbmNvZGluZztcbiAgdmFyIHJlcSA9IHRoaXMucmVxO1xuICB2YXIgdHlwZTtcblxuICAvLyBzZXR0aW5nc1xuICB2YXIgYXBwID0gdGhpcy5hcHA7XG5cbiAgLy8gYWxsb3cgc3RhdHVzIC8gYm9keVxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgIC8vIHJlcy5zZW5kKGJvZHksIHN0YXR1cykgYmFja3dhcmRzIGNvbXBhdFxuICAgIGlmICh0eXBlb2YgYXJndW1lbnRzWzBdICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgYXJndW1lbnRzWzFdID09PSAnbnVtYmVyJykge1xuICAgICAgZGVwcmVjYXRlKCdyZXMuc2VuZChib2R5LCBzdGF0dXMpOiBVc2UgcmVzLnN0YXR1cyhzdGF0dXMpLnNlbmQoYm9keSkgaW5zdGVhZCcpO1xuICAgICAgdGhpcy5zdGF0dXNDb2RlID0gYXJndW1lbnRzWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZXByZWNhdGUoJ3Jlcy5zZW5kKHN0YXR1cywgYm9keSk6IFVzZSByZXMuc3RhdHVzKHN0YXR1cykuc2VuZChib2R5KSBpbnN0ZWFkJyk7XG4gICAgICB0aGlzLnN0YXR1c0NvZGUgPSBhcmd1bWVudHNbMF07XG4gICAgICBjaHVuayA9IGFyZ3VtZW50c1sxXTtcbiAgICB9XG4gIH1cblxuICAvLyBkaXNhbWJpZ3VhdGUgcmVzLnNlbmQoc3RhdHVzKSBhbmQgcmVzLnNlbmQoc3RhdHVzLCBudW0pXG4gIGlmICh0eXBlb2YgY2h1bmsgPT09ICdudW1iZXInICYmIGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAvLyByZXMuc2VuZChzdGF0dXMpIHdpbGwgc2V0IHN0YXR1cyBtZXNzYWdlIGFzIHRleHQgc3RyaW5nXG4gICAgaWYgKCF0aGlzLmdldCgnQ29udGVudC1UeXBlJykpIHtcbiAgICAgIHRoaXMudHlwZSgndHh0Jyk7XG4gICAgfVxuXG4gICAgZGVwcmVjYXRlKCdyZXMuc2VuZChzdGF0dXMpOiBVc2UgcmVzLnNlbmRTdGF0dXMoc3RhdHVzKSBpbnN0ZWFkJyk7XG4gICAgdGhpcy5zdGF0dXNDb2RlID0gY2h1bms7XG4gICAgY2h1bmsgPSBzdGF0dXNlc1tjaHVua11cbiAgfVxuXG4gIHN3aXRjaCAodHlwZW9mIGNodW5rKSB7XG4gICAgLy8gc3RyaW5nIGRlZmF1bHRpbmcgdG8gaHRtbFxuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBpZiAoIXRoaXMuZ2V0KCdDb250ZW50LVR5cGUnKSkge1xuICAgICAgICB0aGlzLnR5cGUoJ2h0bWwnKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgIGNhc2UgJ251bWJlcic6XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgICAgICBjaHVuayA9ICcnO1xuICAgICAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSB7XG4gICAgICAgIGlmICghdGhpcy5nZXQoJ0NvbnRlbnQtVHlwZScpKSB7XG4gICAgICAgICAgdGhpcy50eXBlKCdiaW4nKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuanNvbihjaHVuayk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgfVxuXG4gIC8vIHdyaXRlIHN0cmluZ3MgaW4gdXRmLThcbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4JztcbiAgICB0eXBlID0gdGhpcy5nZXQoJ0NvbnRlbnQtVHlwZScpO1xuXG4gICAgLy8gcmVmbGVjdCB0aGlzIGluIGNvbnRlbnQtdHlwZVxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCBzZXRDaGFyc2V0KHR5cGUsICd1dGYtOCcpKTtcbiAgICB9XG4gIH1cblxuICAvLyBkZXRlcm1pbmUgaWYgRVRhZyBzaG91bGQgYmUgZ2VuZXJhdGVkXG4gIHZhciBldGFnRm4gPSBhcHAuZ2V0KCdldGFnIGZuJylcbiAgdmFyIGdlbmVyYXRlRVRhZyA9ICF0aGlzLmdldCgnRVRhZycpICYmIHR5cGVvZiBldGFnRm4gPT09ICdmdW5jdGlvbidcblxuICAvLyBwb3B1bGF0ZSBDb250ZW50LUxlbmd0aFxuICB2YXIgbGVuXG4gIGlmIChjaHVuayAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICAgIC8vIGdldCBsZW5ndGggb2YgQnVmZmVyXG4gICAgICBsZW4gPSBjaHVuay5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKCFnZW5lcmF0ZUVUYWcgJiYgY2h1bmsubGVuZ3RoIDwgMTAwMCkge1xuICAgICAgLy8ganVzdCBjYWxjdWxhdGUgbGVuZ3RoIHdoZW4gbm8gRVRhZyArIHNtYWxsIGNodW5rXG4gICAgICBsZW4gPSBCdWZmZXIuYnl0ZUxlbmd0aChjaHVuaywgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbnZlcnQgY2h1bmsgdG8gQnVmZmVyIGFuZCBjYWxjdWxhdGVcbiAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKVxuICAgICAgZW5jb2RpbmcgPSB1bmRlZmluZWQ7XG4gICAgICBsZW4gPSBjaHVuay5sZW5ndGhcbiAgICB9XG5cbiAgICB0aGlzLnNldCgnQ29udGVudC1MZW5ndGgnLCBsZW4pO1xuICB9XG5cbiAgLy8gcG9wdWxhdGUgRVRhZ1xuICB2YXIgZXRhZztcbiAgaWYgKGdlbmVyYXRlRVRhZyAmJiBsZW4gIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICgoZXRhZyA9IGV0YWdGbihjaHVuaywgZW5jb2RpbmcpKSkge1xuICAgICAgdGhpcy5zZXQoJ0VUYWcnLCBldGFnKTtcbiAgICB9XG4gIH1cblxuICAvLyBmcmVzaG5lc3NcbiAgaWYgKHJlcS5mcmVzaCkgdGhpcy5zdGF0dXNDb2RlID0gMzA0O1xuXG4gIC8vIHN0cmlwIGlycmVsZXZhbnQgaGVhZGVyc1xuICBpZiAoMjA0ID09PSB0aGlzLnN0YXR1c0NvZGUgfHwgMzA0ID09PSB0aGlzLnN0YXR1c0NvZGUpIHtcbiAgICB0aGlzLnJlbW92ZUhlYWRlcignQ29udGVudC1UeXBlJyk7XG4gICAgdGhpcy5yZW1vdmVIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJyk7XG4gICAgdGhpcy5yZW1vdmVIZWFkZXIoJ1RyYW5zZmVyLUVuY29kaW5nJyk7XG4gICAgY2h1bmsgPSAnJztcbiAgfVxuXG4gIGlmIChyZXEubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICAvLyBza2lwIGJvZHkgZm9yIEhFQURcbiAgICB0aGlzLmVuZCgpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlc3BvbmRcbiAgICB0aGlzLmVuZChjaHVuaywgZW5jb2RpbmcpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNlbmQgSlNPTiByZXNwb25zZS5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgcmVzLmpzb24obnVsbCk7XG4gKiAgICAgcmVzLmpzb24oeyB1c2VyOiAndGonIH0pO1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxib29sZWFufG9iamVjdH0gb2JqXG4gKiBAcHVibGljXG4gKi9cblxucmVzLmpzb24gPSBmdW5jdGlvbiBqc29uKG9iaikge1xuICB2YXIgdmFsID0gb2JqO1xuXG4gIC8vIGFsbG93IHN0YXR1cyAvIGJvZHlcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAvLyByZXMuanNvbihib2R5LCBzdGF0dXMpIGJhY2t3YXJkcyBjb21wYXRcbiAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1sxXSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGRlcHJlY2F0ZSgncmVzLmpzb24ob2JqLCBzdGF0dXMpOiBVc2UgcmVzLnN0YXR1cyhzdGF0dXMpLmpzb24ob2JqKSBpbnN0ZWFkJyk7XG4gICAgICB0aGlzLnN0YXR1c0NvZGUgPSBhcmd1bWVudHNbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlcHJlY2F0ZSgncmVzLmpzb24oc3RhdHVzLCBvYmopOiBVc2UgcmVzLnN0YXR1cyhzdGF0dXMpLmpzb24ob2JqKSBpbnN0ZWFkJyk7XG4gICAgICB0aGlzLnN0YXR1c0NvZGUgPSBhcmd1bWVudHNbMF07XG4gICAgICB2YWwgPSBhcmd1bWVudHNbMV07XG4gICAgfVxuICB9XG5cbiAgLy8gc2V0dGluZ3NcbiAgdmFyIGFwcCA9IHRoaXMuYXBwO1xuICB2YXIgZXNjYXBlID0gYXBwLmdldCgnanNvbiBlc2NhcGUnKVxuICB2YXIgcmVwbGFjZXIgPSBhcHAuZ2V0KCdqc29uIHJlcGxhY2VyJyk7XG4gIHZhciBzcGFjZXMgPSBhcHAuZ2V0KCdqc29uIHNwYWNlcycpO1xuICB2YXIgYm9keSA9IHN0cmluZ2lmeSh2YWwsIHJlcGxhY2VyLCBzcGFjZXMsIGVzY2FwZSlcblxuICAvLyBjb250ZW50LXR5cGVcbiAgaWYgKCF0aGlzLmdldCgnQ29udGVudC1UeXBlJykpIHtcbiAgICB0aGlzLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLnNlbmQoYm9keSk7XG59O1xuXG4vKipcbiAqIFNlbmQgSlNPTiByZXNwb25zZSB3aXRoIEpTT05QIGNhbGxiYWNrIHN1cHBvcnQuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIHJlcy5qc29ucChudWxsKTtcbiAqICAgICByZXMuanNvbnAoeyB1c2VyOiAndGonIH0pO1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcnxib29sZWFufG9iamVjdH0gb2JqXG4gKiBAcHVibGljXG4gKi9cblxucmVzLmpzb25wID0gZnVuY3Rpb24ganNvbnAob2JqKSB7XG4gIHZhciB2YWwgPSBvYmo7XG5cbiAgLy8gYWxsb3cgc3RhdHVzIC8gYm9keVxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgIC8vIHJlcy5qc29uKGJvZHksIHN0YXR1cykgYmFja3dhcmRzIGNvbXBhdFxuICAgIGlmICh0eXBlb2YgYXJndW1lbnRzWzFdID09PSAnbnVtYmVyJykge1xuICAgICAgZGVwcmVjYXRlKCdyZXMuanNvbnAob2JqLCBzdGF0dXMpOiBVc2UgcmVzLnN0YXR1cyhzdGF0dXMpLmpzb24ob2JqKSBpbnN0ZWFkJyk7XG4gICAgICB0aGlzLnN0YXR1c0NvZGUgPSBhcmd1bWVudHNbMV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlcHJlY2F0ZSgncmVzLmpzb25wKHN0YXR1cywgb2JqKTogVXNlIHJlcy5zdGF0dXMoc3RhdHVzKS5qc29ucChvYmopIGluc3RlYWQnKTtcbiAgICAgIHRoaXMuc3RhdHVzQ29kZSA9IGFyZ3VtZW50c1swXTtcbiAgICAgIHZhbCA9IGFyZ3VtZW50c1sxXTtcbiAgICB9XG4gIH1cblxuICAvLyBzZXR0aW5nc1xuICB2YXIgYXBwID0gdGhpcy5hcHA7XG4gIHZhciBlc2NhcGUgPSBhcHAuZ2V0KCdqc29uIGVzY2FwZScpXG4gIHZhciByZXBsYWNlciA9IGFwcC5nZXQoJ2pzb24gcmVwbGFjZXInKTtcbiAgdmFyIHNwYWNlcyA9IGFwcC5nZXQoJ2pzb24gc3BhY2VzJyk7XG4gIHZhciBib2R5ID0gc3RyaW5naWZ5KHZhbCwgcmVwbGFjZXIsIHNwYWNlcywgZXNjYXBlKVxuICB2YXIgY2FsbGJhY2sgPSB0aGlzLnJlcS5xdWVyeVthcHAuZ2V0KCdqc29ucCBjYWxsYmFjayBuYW1lJyldO1xuXG4gIC8vIGNvbnRlbnQtdHlwZVxuICBpZiAoIXRoaXMuZ2V0KCdDb250ZW50LVR5cGUnKSkge1xuICAgIHRoaXMuc2V0KCdYLUNvbnRlbnQtVHlwZS1PcHRpb25zJywgJ25vc25pZmYnKTtcbiAgICB0aGlzLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgfVxuXG4gIC8vIGZpeHVwIGNhbGxiYWNrXG4gIGlmIChBcnJheS5pc0FycmF5KGNhbGxiYWNrKSkge1xuICAgIGNhbGxiYWNrID0gY2FsbGJhY2tbMF07XG4gIH1cblxuICAvLyBqc29ucFxuICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnc3RyaW5nJyAmJiBjYWxsYmFjay5sZW5ndGggIT09IDApIHtcbiAgICB0aGlzLnNldCgnWC1Db250ZW50LVR5cGUtT3B0aW9ucycsICdub3NuaWZmJyk7XG4gICAgdGhpcy5zZXQoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2phdmFzY3JpcHQnKTtcblxuICAgIC8vIHJlc3RyaWN0IGNhbGxiYWNrIGNoYXJzZXRcbiAgICBjYWxsYmFjayA9IGNhbGxiYWNrLnJlcGxhY2UoL1teXFxbXFxdXFx3JC5dL2csICcnKTtcblxuICAgIC8vIHJlcGxhY2UgY2hhcnMgbm90IGFsbG93ZWQgaW4gSmF2YVNjcmlwdCB0aGF0IGFyZSBpbiBKU09OXG4gICAgYm9keSA9IGJvZHlcbiAgICAgIC5yZXBsYWNlKC9cXHUyMDI4L2csICdcXFxcdTIwMjgnKVxuICAgICAgLnJlcGxhY2UoL1xcdTIwMjkvZywgJ1xcXFx1MjAyOScpO1xuXG4gICAgLy8gdGhlIC8qKi8gaXMgYSBzcGVjaWZpYyBzZWN1cml0eSBtaXRpZ2F0aW9uIGZvciBcIlJvc2V0dGEgRmxhc2ggSlNPTlAgYWJ1c2VcIlxuICAgIC8vIHRoZSB0eXBlb2YgY2hlY2sgaXMganVzdCB0byByZWR1Y2UgY2xpZW50IGVycm9yIG5vaXNlXG4gICAgYm9keSA9ICcvKiovIHR5cGVvZiAnICsgY2FsbGJhY2sgKyAnID09PSBcXCdmdW5jdGlvblxcJyAmJiAnICsgY2FsbGJhY2sgKyAnKCcgKyBib2R5ICsgJyk7JztcbiAgfVxuXG4gIHJldHVybiB0aGlzLnNlbmQoYm9keSk7XG59O1xuXG4vKipcbiAqIFNlbmQgZ2l2ZW4gSFRUUCBzdGF0dXMgY29kZS5cbiAqXG4gKiBTZXRzIHRoZSByZXNwb25zZSBzdGF0dXMgdG8gYHN0YXR1c0NvZGVgIGFuZCB0aGUgYm9keSBvZiB0aGVcbiAqIHJlc3BvbnNlIHRvIHRoZSBzdGFuZGFyZCBkZXNjcmlwdGlvbiBmcm9tIG5vZGUncyBodHRwLlNUQVRVU19DT0RFU1xuICogb3IgdGhlIHN0YXR1c0NvZGUgbnVtYmVyIGlmIG5vIGRlc2NyaXB0aW9uLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICByZXMuc2VuZFN0YXR1cygyMDApO1xuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGF0dXNDb2RlXG4gKiBAcHVibGljXG4gKi9cblxucmVzLnNlbmRTdGF0dXMgPSBmdW5jdGlvbiBzZW5kU3RhdHVzKHN0YXR1c0NvZGUpIHtcbiAgdmFyIGJvZHkgPSBzdGF0dXNlc1tzdGF0dXNDb2RlXSB8fCBTdHJpbmcoc3RhdHVzQ29kZSlcblxuICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICB0aGlzLnR5cGUoJ3R4dCcpO1xuXG4gIHJldHVybiB0aGlzLnNlbmQoYm9keSk7XG59O1xuXG4vKipcbiAqIFRyYW5zZmVyIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBgcGF0aGAuXG4gKlxuICogQXV0b21hdGljYWxseSBzZXRzIHRoZSBfQ29udGVudC1UeXBlXyByZXNwb25zZSBoZWFkZXIgZmllbGQuXG4gKiBUaGUgY2FsbGJhY2sgYGNhbGxiYWNrKGVycilgIGlzIGludm9rZWQgd2hlbiB0aGUgdHJhbnNmZXIgaXMgY29tcGxldGVcbiAqIG9yIHdoZW4gYW4gZXJyb3Igb2NjdXJzLiBCZSBzdXJlIHRvIGNoZWNrIGByZXMuc2VudEhlYWRlcmBcbiAqIGlmIHlvdSB3aXNoIHRvIGF0dGVtcHQgcmVzcG9uZGluZywgYXMgdGhlIGhlYWRlciBhbmQgc29tZSBkYXRhXG4gKiBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gdHJhbnNmZXJyZWQuXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgIC0gYG1heEFnZWAgICBkZWZhdWx0aW5nIHRvIDAgKGNhbiBiZSBzdHJpbmcgY29udmVydGVkIGJ5IGBtc2ApXG4gKiAgIC0gYHJvb3RgICAgICByb290IGRpcmVjdG9yeSBmb3IgcmVsYXRpdmUgZmlsZW5hbWVzXG4gKiAgIC0gYGhlYWRlcnNgICBvYmplY3Qgb2YgaGVhZGVycyB0byBzZXJ2ZSB3aXRoIGZpbGVcbiAqICAgLSBgZG90ZmlsZXNgIHNlcnZlIGRvdGZpbGVzLCBkZWZhdWx0aW5nIHRvIGZhbHNlOyBjYW4gYmUgYFwiYWxsb3dcImAgdG8gc2VuZCB0aGVtXG4gKlxuICogT3RoZXIgb3B0aW9ucyBhcmUgcGFzc2VkIGFsb25nIHRvIGBzZW5kYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGlsbHVzdHJhdGVzIGhvdyBgcmVzLnNlbmRGaWxlKClgIG1heVxuICogIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgZm9yIHRoZSBgc3RhdGljKClgIG1pZGRsZXdhcmUgZm9yXG4gKiAgZHluYW1pYyBzaXR1YXRpb25zLiBUaGUgY29kZSBiYWNraW5nIGByZXMuc2VuZEZpbGUoKWAgaXMgYWN0dWFsbHlcbiAqICB0aGUgc2FtZSBjb2RlLCBzbyBIVFRQIGNhY2hlIHN1cHBvcnQgZXRjIGlzIGlkZW50aWNhbC5cbiAqXG4gKiAgICAgYXBwLmdldCgnL3VzZXIvOnVpZC9waG90b3MvOmZpbGUnLCBmdW5jdGlvbihyZXEsIHJlcyl7XG4gKiAgICAgICB2YXIgdWlkID0gcmVxLnBhcmFtcy51aWRcbiAqICAgICAgICAgLCBmaWxlID0gcmVxLnBhcmFtcy5maWxlO1xuICpcbiAqICAgICAgIHJlcS51c2VyLm1heVZpZXdGaWxlc0Zyb20odWlkLCBmdW5jdGlvbih5ZXMpe1xuICogICAgICAgICBpZiAoeWVzKSB7XG4gKiAgICAgICAgICAgcmVzLnNlbmRGaWxlKCcvdXBsb2Fkcy8nICsgdWlkICsgJy8nICsgZmlsZSk7XG4gKiAgICAgICAgIH0gZWxzZSB7XG4gKiAgICAgICAgICAgcmVzLnNlbmQoNDAzLCAnU29ycnkhIHlvdSBjYW50IHNlZSB0aGF0LicpO1xuICogICAgICAgICB9XG4gKiAgICAgICB9KTtcbiAqICAgICB9KTtcbiAqXG4gKiBAcHVibGljXG4gKi9cblxucmVzLnNlbmRGaWxlID0gZnVuY3Rpb24gc2VuZEZpbGUocGF0aCwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIGRvbmUgPSBjYWxsYmFjaztcbiAgdmFyIHJlcSA9IHRoaXMucmVxO1xuICB2YXIgcmVzID0gdGhpcztcbiAgdmFyIG5leHQgPSByZXEubmV4dDtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmICghcGF0aCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3BhdGggYXJndW1lbnQgaXMgcmVxdWlyZWQgdG8gcmVzLnNlbmRGaWxlJyk7XG4gIH1cblxuICAvLyBzdXBwb3J0IGZ1bmN0aW9uIGFzIHNlY29uZCBhcmdcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZG9uZSA9IG9wdGlvbnM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG5cbiAgaWYgKCFvcHRzLnJvb3QgJiYgIWlzQWJzb2x1dGUocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdwYXRoIG11c3QgYmUgYWJzb2x1dGUgb3Igc3BlY2lmeSByb290IHRvIHJlcy5zZW5kRmlsZScpO1xuICB9XG5cbiAgLy8gY3JlYXRlIGZpbGUgc3RyZWFtXG4gIHZhciBwYXRobmFtZSA9IGVuY29kZVVSSShwYXRoKTtcbiAgdmFyIGZpbGUgPSBzZW5kKHJlcSwgcGF0aG5hbWUsIG9wdHMpO1xuXG4gIC8vIHRyYW5zZmVyXG4gIHNlbmRmaWxlKHJlcywgZmlsZSwgb3B0cywgZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChkb25lKSByZXR1cm4gZG9uZShlcnIpO1xuICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgPT09ICdFSVNESVInKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgLy8gbmV4dCgpIGFsbCBidXQgd3JpdGUgZXJyb3JzXG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSAhPT0gJ0VDT05OQUJPUlRFRCcgJiYgZXJyLnN5c2NhbGwgIT09ICd3cml0ZScpIHtcbiAgICAgIG5leHQoZXJyKTtcbiAgICB9XG4gIH0pO1xufTtcblxuLyoqXG4gKiBUcmFuc2ZlciB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gYHBhdGhgLlxuICpcbiAqIEF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgX0NvbnRlbnQtVHlwZV8gcmVzcG9uc2UgaGVhZGVyIGZpZWxkLlxuICogVGhlIGNhbGxiYWNrIGBjYWxsYmFjayhlcnIpYCBpcyBpbnZva2VkIHdoZW4gdGhlIHRyYW5zZmVyIGlzIGNvbXBsZXRlXG4gKiBvciB3aGVuIGFuIGVycm9yIG9jY3Vycy4gQmUgc3VyZSB0byBjaGVjayBgcmVzLnNlbnRIZWFkZXJgXG4gKiBpZiB5b3Ugd2lzaCB0byBhdHRlbXB0IHJlc3BvbmRpbmcsIGFzIHRoZSBoZWFkZXIgYW5kIHNvbWUgZGF0YVxuICogbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHRyYW5zZmVycmVkLlxuICpcbiAqIE9wdGlvbnM6XG4gKlxuICogICAtIGBtYXhBZ2VgICAgZGVmYXVsdGluZyB0byAwIChjYW4gYmUgc3RyaW5nIGNvbnZlcnRlZCBieSBgbXNgKVxuICogICAtIGByb290YCAgICAgcm9vdCBkaXJlY3RvcnkgZm9yIHJlbGF0aXZlIGZpbGVuYW1lc1xuICogICAtIGBoZWFkZXJzYCAgb2JqZWN0IG9mIGhlYWRlcnMgdG8gc2VydmUgd2l0aCBmaWxlXG4gKiAgIC0gYGRvdGZpbGVzYCBzZXJ2ZSBkb3RmaWxlcywgZGVmYXVsdGluZyB0byBmYWxzZTsgY2FuIGJlIGBcImFsbG93XCJgIHRvIHNlbmQgdGhlbVxuICpcbiAqIE90aGVyIG9wdGlvbnMgYXJlIHBhc3NlZCBhbG9uZyB0byBgc2VuZGAuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpbGx1c3RyYXRlcyBob3cgYHJlcy5zZW5kZmlsZSgpYCBtYXlcbiAqICBiZSB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIGZvciB0aGUgYHN0YXRpYygpYCBtaWRkbGV3YXJlIGZvclxuICogIGR5bmFtaWMgc2l0dWF0aW9ucy4gVGhlIGNvZGUgYmFja2luZyBgcmVzLnNlbmRmaWxlKClgIGlzIGFjdHVhbGx5XG4gKiAgdGhlIHNhbWUgY29kZSwgc28gSFRUUCBjYWNoZSBzdXBwb3J0IGV0YyBpcyBpZGVudGljYWwuXG4gKlxuICogICAgIGFwcC5nZXQoJy91c2VyLzp1aWQvcGhvdG9zLzpmaWxlJywgZnVuY3Rpb24ocmVxLCByZXMpe1xuICogICAgICAgdmFyIHVpZCA9IHJlcS5wYXJhbXMudWlkXG4gKiAgICAgICAgICwgZmlsZSA9IHJlcS5wYXJhbXMuZmlsZTtcbiAqXG4gKiAgICAgICByZXEudXNlci5tYXlWaWV3RmlsZXNGcm9tKHVpZCwgZnVuY3Rpb24oeWVzKXtcbiAqICAgICAgICAgaWYgKHllcykge1xuICogICAgICAgICAgIHJlcy5zZW5kZmlsZSgnL3VwbG9hZHMvJyArIHVpZCArICcvJyArIGZpbGUpO1xuICogICAgICAgICB9IGVsc2Uge1xuICogICAgICAgICAgIHJlcy5zZW5kKDQwMywgJ1NvcnJ5ISB5b3UgY2FudCBzZWUgdGhhdC4nKTtcbiAqICAgICAgICAgfVxuICogICAgICAgfSk7XG4gKiAgICAgfSk7XG4gKlxuICogQHB1YmxpY1xuICovXG5cbnJlcy5zZW5kZmlsZSA9IGZ1bmN0aW9uIChwYXRoLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgZG9uZSA9IGNhbGxiYWNrO1xuICB2YXIgcmVxID0gdGhpcy5yZXE7XG4gIHZhciByZXMgPSB0aGlzO1xuICB2YXIgbmV4dCA9IHJlcS5uZXh0O1xuICB2YXIgb3B0cyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gc3VwcG9ydCBmdW5jdGlvbiBhcyBzZWNvbmQgYXJnXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRvbmUgPSBvcHRpb25zO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuXG4gIC8vIGNyZWF0ZSBmaWxlIHN0cmVhbVxuICB2YXIgZmlsZSA9IHNlbmQocmVxLCBwYXRoLCBvcHRzKTtcblxuICAvLyB0cmFuc2ZlclxuICBzZW5kZmlsZShyZXMsIGZpbGUsIG9wdHMsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoZG9uZSkgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICBpZiAoZXJyICYmIGVyci5jb2RlID09PSAnRUlTRElSJykgcmV0dXJuIG5leHQoKTtcblxuICAgIC8vIG5leHQoKSBhbGwgYnV0IHdyaXRlIGVycm9yc1xuICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgIT09ICdFQ09OTkFCT1JUJyAmJiBlcnIuc3lzY2FsbCAhPT0gJ3dyaXRlJykge1xuICAgICAgbmV4dChlcnIpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5yZXMuc2VuZGZpbGUgPSBkZXByZWNhdGUuZnVuY3Rpb24ocmVzLnNlbmRmaWxlLFxuICAncmVzLnNlbmRmaWxlOiBVc2UgcmVzLnNlbmRGaWxlIGluc3RlYWQnKTtcblxuLyoqXG4gKiBUcmFuc2ZlciB0aGUgZmlsZSBhdCB0aGUgZ2l2ZW4gYHBhdGhgIGFzIGFuIGF0dGFjaG1lbnQuXG4gKlxuICogT3B0aW9uYWxseSBwcm92aWRpbmcgYW4gYWx0ZXJuYXRlIGF0dGFjaG1lbnQgYGZpbGVuYW1lYCxcbiAqIGFuZCBvcHRpb25hbCBjYWxsYmFjayBgY2FsbGJhY2soZXJyKWAuIFRoZSBjYWxsYmFjayBpcyBpbnZva2VkXG4gKiB3aGVuIHRoZSBkYXRhIHRyYW5zZmVyIGlzIGNvbXBsZXRlLCBvciB3aGVuIGFuIGVycm9yIGhhc1xuICogb2N1cnJlZC4gQmUgc3VyZSB0byBjaGVjayBgcmVzLmhlYWRlcnNTZW50YCBpZiB5b3UgcGxhbiB0byByZXNwb25kLlxuICpcbiAqIE9wdGlvbmFsbHkgcHJvdmlkaW5nIGFuIGBvcHRpb25zYCBvYmplY3QgdG8gdXNlIHdpdGggYHJlcy5zZW5kRmlsZSgpYC5cbiAqIFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIGBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIG92ZXJyaWRpbmdcbiAqIGFueSBgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIHBhc3NlZCBhcyBoZWFkZXIgb3B0aW9ucyBpbiBvcmRlclxuICogdG8gc2V0IHRoZSBhdHRhY2htZW50IGFuZCBmaWxlbmFtZS5cbiAqXG4gKiBUaGlzIG1ldGhvZCB1c2VzIGByZXMuc2VuZEZpbGUoKWAuXG4gKlxuICogQHB1YmxpY1xuICovXG5cbnJlcy5kb3dubG9hZCA9IGZ1bmN0aW9uIGRvd25sb2FkIChwYXRoLCBmaWxlbmFtZSwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyIGRvbmUgPSBjYWxsYmFjaztcbiAgdmFyIG5hbWUgPSBmaWxlbmFtZTtcbiAgdmFyIG9wdHMgPSBvcHRpb25zIHx8IG51bGxcblxuICAvLyBzdXBwb3J0IGZ1bmN0aW9uIGFzIHNlY29uZCBvciB0aGlyZCBhcmdcbiAgaWYgKHR5cGVvZiBmaWxlbmFtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRvbmUgPSBmaWxlbmFtZTtcbiAgICBuYW1lID0gbnVsbDtcbiAgICBvcHRzID0gbnVsbFxuICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZG9uZSA9IG9wdGlvbnNcbiAgICBvcHRzID0gbnVsbFxuICB9XG5cbiAgLy8gc2V0IENvbnRlbnQtRGlzcG9zaXRpb24gd2hlbiBmaWxlIGlzIHNlbnRcbiAgdmFyIGhlYWRlcnMgPSB7XG4gICAgJ0NvbnRlbnQtRGlzcG9zaXRpb24nOiBjb250ZW50RGlzcG9zaXRpb24obmFtZSB8fCBwYXRoKVxuICB9O1xuXG4gIC8vIG1lcmdlIHVzZXItcHJvdmlkZWQgaGVhZGVyc1xuICBpZiAob3B0cyAmJiBvcHRzLmhlYWRlcnMpIHtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9wdHMuaGVhZGVycylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldXG4gICAgICBpZiAoa2V5LnRvTG93ZXJDYXNlKCkgIT09ICdjb250ZW50LWRpc3Bvc2l0aW9uJykge1xuICAgICAgICBoZWFkZXJzW2tleV0gPSBvcHRzLmhlYWRlcnNba2V5XVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIG1lcmdlIHVzZXItcHJvdmlkZWQgb3B0aW9uc1xuICBvcHRzID0gT2JqZWN0LmNyZWF0ZShvcHRzKVxuICBvcHRzLmhlYWRlcnMgPSBoZWFkZXJzXG5cbiAgLy8gUmVzb2x2ZSB0aGUgZnVsbCBwYXRoIGZvciBzZW5kRmlsZVxuICB2YXIgZnVsbFBhdGggPSByZXNvbHZlKHBhdGgpO1xuXG4gIC8vIHNlbmQgZmlsZVxuICByZXR1cm4gdGhpcy5zZW5kRmlsZShmdWxsUGF0aCwgb3B0cywgZG9uZSlcbn07XG5cbi8qKlxuICogU2V0IF9Db250ZW50LVR5cGVfIHJlc3BvbnNlIGhlYWRlciB3aXRoIGB0eXBlYCB0aHJvdWdoIGBtaW1lLmxvb2t1cCgpYFxuICogd2hlbiBpdCBkb2VzIG5vdCBjb250YWluIFwiL1wiLCBvciBzZXQgdGhlIENvbnRlbnQtVHlwZSB0byBgdHlwZWAgb3RoZXJ3aXNlLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICByZXMudHlwZSgnLmh0bWwnKTtcbiAqICAgICByZXMudHlwZSgnaHRtbCcpO1xuICogICAgIHJlcy50eXBlKCdqc29uJyk7XG4gKiAgICAgcmVzLnR5cGUoJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAqICAgICByZXMudHlwZSgncG5nJyk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge1NlcnZlclJlc3BvbnNlfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuY29udGVudFR5cGUgPVxucmVzLnR5cGUgPSBmdW5jdGlvbiBjb250ZW50VHlwZSh0eXBlKSB7XG4gIHZhciBjdCA9IHR5cGUuaW5kZXhPZignLycpID09PSAtMVxuICAgID8gbWltZS5sb29rdXAodHlwZSlcbiAgICA6IHR5cGU7XG5cbiAgcmV0dXJuIHRoaXMuc2V0KCdDb250ZW50LVR5cGUnLCBjdCk7XG59O1xuXG4vKipcbiAqIFJlc3BvbmQgdG8gdGhlIEFjY2VwdGFibGUgZm9ybWF0cyB1c2luZyBhbiBgb2JqYFxuICogb2YgbWltZS10eXBlIGNhbGxiYWNrcy5cbiAqXG4gKiBUaGlzIG1ldGhvZCB1c2VzIGByZXEuYWNjZXB0ZWRgLCBhbiBhcnJheSBvZlxuICogYWNjZXB0YWJsZSB0eXBlcyBvcmRlcmVkIGJ5IHRoZWlyIHF1YWxpdHkgdmFsdWVzLlxuICogV2hlbiBcIkFjY2VwdFwiIGlzIG5vdCBwcmVzZW50IHRoZSBfZmlyc3RfIGNhbGxiYWNrXG4gKiBpcyBpbnZva2VkLCBvdGhlcndpc2UgdGhlIGZpcnN0IG1hdGNoIGlzIHVzZWQuIFdoZW5cbiAqIG5vIG1hdGNoIGlzIHBlcmZvcm1lZCB0aGUgc2VydmVyIHJlc3BvbmRzIHdpdGhcbiAqIDQwNiBcIk5vdCBBY2NlcHRhYmxlXCIuXG4gKlxuICogQ29udGVudC1UeXBlIGlzIHNldCBmb3IgeW91LCBob3dldmVyIGlmIHlvdSBjaG9vc2VcbiAqIHlvdSBtYXkgYWx0ZXIgdGhpcyB3aXRoaW4gdGhlIGNhbGxiYWNrIHVzaW5nIGByZXMudHlwZSgpYFxuICogb3IgYHJlcy5zZXQoJ0NvbnRlbnQtVHlwZScsIC4uLilgLlxuICpcbiAqICAgIHJlcy5mb3JtYXQoe1xuICogICAgICAndGV4dC9wbGFpbic6IGZ1bmN0aW9uKCl7XG4gKiAgICAgICAgcmVzLnNlbmQoJ2hleScpO1xuICogICAgICB9LFxuICpcbiAqICAgICAgJ3RleHQvaHRtbCc6IGZ1bmN0aW9uKCl7XG4gKiAgICAgICAgcmVzLnNlbmQoJzxwPmhleTwvcD4nKTtcbiAqICAgICAgfSxcbiAqXG4gKiAgICAgICdhcHBsaWF0aW9uL2pzb24nOiBmdW5jdGlvbigpe1xuICogICAgICAgIHJlcy5zZW5kKHsgbWVzc2FnZTogJ2hleScgfSk7XG4gKiAgICAgIH1cbiAqICAgIH0pO1xuICpcbiAqIEluIGFkZGl0aW9uIHRvIGNhbm9uaWNhbGl6ZWQgTUlNRSB0eXBlcyB5b3UgbWF5XG4gKiBhbHNvIHVzZSBleHRuYW1lcyBtYXBwZWQgdG8gdGhlc2UgdHlwZXM6XG4gKlxuICogICAgcmVzLmZvcm1hdCh7XG4gKiAgICAgIHRleHQ6IGZ1bmN0aW9uKCl7XG4gKiAgICAgICAgcmVzLnNlbmQoJ2hleScpO1xuICogICAgICB9LFxuICpcbiAqICAgICAgaHRtbDogZnVuY3Rpb24oKXtcbiAqICAgICAgICByZXMuc2VuZCgnPHA+aGV5PC9wPicpO1xuICogICAgICB9LFxuICpcbiAqICAgICAganNvbjogZnVuY3Rpb24oKXtcbiAqICAgICAgICByZXMuc2VuZCh7IG1lc3NhZ2U6ICdoZXknIH0pO1xuICogICAgICB9XG4gKiAgICB9KTtcbiAqXG4gKiBCeSBkZWZhdWx0IEV4cHJlc3MgcGFzc2VzIGFuIGBFcnJvcmBcbiAqIHdpdGggYSBgLnN0YXR1c2Agb2YgNDA2IHRvIGBuZXh0KGVycilgXG4gKiBpZiBhIG1hdGNoIGlzIG5vdCBtYWRlLiBJZiB5b3UgcHJvdmlkZVxuICogYSBgLmRlZmF1bHRgIGNhbGxiYWNrIGl0IHdpbGwgYmUgaW52b2tlZFxuICogaW5zdGVhZC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqXG4gKiBAcmV0dXJuIHtTZXJ2ZXJSZXNwb25zZX0gZm9yIGNoYWluaW5nXG4gKiBAcHVibGljXG4gKi9cblxucmVzLmZvcm1hdCA9IGZ1bmN0aW9uKG9iail7XG4gIHZhciByZXEgPSB0aGlzLnJlcTtcbiAgdmFyIG5leHQgPSByZXEubmV4dDtcblxuICB2YXIgZm4gPSBvYmouZGVmYXVsdDtcbiAgaWYgKGZuKSBkZWxldGUgb2JqLmRlZmF1bHQ7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcblxuICB2YXIga2V5ID0ga2V5cy5sZW5ndGggPiAwXG4gICAgPyByZXEuYWNjZXB0cyhrZXlzKVxuICAgIDogZmFsc2U7XG5cbiAgdGhpcy52YXJ5KFwiQWNjZXB0XCIpO1xuXG4gIGlmIChrZXkpIHtcbiAgICB0aGlzLnNldCgnQ29udGVudC1UeXBlJywgbm9ybWFsaXplVHlwZShrZXkpLnZhbHVlKTtcbiAgICBvYmpba2V5XShyZXEsIHRoaXMsIG5leHQpO1xuICB9IGVsc2UgaWYgKGZuKSB7XG4gICAgZm4oKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdOb3QgQWNjZXB0YWJsZScpO1xuICAgIGVyci5zdGF0dXMgPSBlcnIuc3RhdHVzQ29kZSA9IDQwNjtcbiAgICBlcnIudHlwZXMgPSBub3JtYWxpemVUeXBlcyhrZXlzKS5tYXAoZnVuY3Rpb24obyl7IHJldHVybiBvLnZhbHVlIH0pO1xuICAgIG5leHQoZXJyKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgX0NvbnRlbnQtRGlzcG9zaXRpb25fIGhlYWRlciB0byBfYXR0YWNobWVudF8gd2l0aCBvcHRpb25hbCBgZmlsZW5hbWVgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlbmFtZVxuICogQHJldHVybiB7U2VydmVyUmVzcG9uc2V9XG4gKiBAcHVibGljXG4gKi9cblxucmVzLmF0dGFjaG1lbnQgPSBmdW5jdGlvbiBhdHRhY2htZW50KGZpbGVuYW1lKSB7XG4gIGlmIChmaWxlbmFtZSkge1xuICAgIHRoaXMudHlwZShleHRuYW1lKGZpbGVuYW1lKSk7XG4gIH1cblxuICB0aGlzLnNldCgnQ29udGVudC1EaXNwb3NpdGlvbicsIGNvbnRlbnREaXNwb3NpdGlvbihmaWxlbmFtZSkpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBBcHBlbmQgYWRkaXRpb25hbCBoZWFkZXIgYGZpZWxkYCB3aXRoIHZhbHVlIGB2YWxgLlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogICAgcmVzLmFwcGVuZCgnTGluaycsIFsnPGh0dHA6Ly9sb2NhbGhvc3QvPicsICc8aHR0cDovL2xvY2FsaG9zdDozMDAwLz4nXSk7XG4gKiAgICByZXMuYXBwZW5kKCdTZXQtQ29va2llJywgJ2Zvbz1iYXI7IFBhdGg9LzsgSHR0cE9ubHknKTtcbiAqICAgIHJlcy5hcHBlbmQoJ1dhcm5pbmcnLCAnMTk5IE1pc2NlbGxhbmVvdXMgd2FybmluZycpO1xuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHZhbFxuICogQHJldHVybiB7U2VydmVyUmVzcG9uc2V9IGZvciBjaGFpbmluZ1xuICogQHB1YmxpY1xuICovXG5cbnJlcy5hcHBlbmQgPSBmdW5jdGlvbiBhcHBlbmQoZmllbGQsIHZhbCkge1xuICB2YXIgcHJldiA9IHRoaXMuZ2V0KGZpZWxkKTtcbiAgdmFyIHZhbHVlID0gdmFsO1xuXG4gIGlmIChwcmV2KSB7XG4gICAgLy8gY29uY2F0IHRoZSBuZXcgYW5kIHByZXYgdmFsc1xuICAgIHZhbHVlID0gQXJyYXkuaXNBcnJheShwcmV2KSA/IHByZXYuY29uY2F0KHZhbClcbiAgICAgIDogQXJyYXkuaXNBcnJheSh2YWwpID8gW3ByZXZdLmNvbmNhdCh2YWwpXG4gICAgICA6IFtwcmV2LCB2YWxdO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuc2V0KGZpZWxkLCB2YWx1ZSk7XG59O1xuXG4vKipcbiAqIFNldCBoZWFkZXIgYGZpZWxkYCB0byBgdmFsYCwgb3IgcGFzc1xuICogYW4gb2JqZWN0IG9mIGhlYWRlciBmaWVsZHMuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgcmVzLnNldCgnRm9vJywgWydiYXInLCAnYmF6J10pO1xuICogICAgcmVzLnNldCgnQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAqICAgIHJlcy5zZXQoeyBBY2NlcHQ6ICd0ZXh0L3BsYWluJywgJ1gtQVBJLUtleSc6ICd0b2JpJyB9KTtcbiAqXG4gKiBBbGlhc2VkIGFzIGByZXMuaGVhZGVyKClgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gZmllbGRcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSB2YWxcbiAqIEByZXR1cm4ge1NlcnZlclJlc3BvbnNlfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuc2V0ID1cbnJlcy5oZWFkZXIgPSBmdW5jdGlvbiBoZWFkZXIoZmllbGQsIHZhbCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgIHZhciB2YWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsKVxuICAgICAgPyB2YWwubWFwKFN0cmluZylcbiAgICAgIDogU3RyaW5nKHZhbCk7XG5cbiAgICAvLyBhZGQgY2hhcnNldCB0byBjb250ZW50LXR5cGVcbiAgICBpZiAoZmllbGQudG9Mb3dlckNhc2UoKSA9PT0gJ2NvbnRlbnQtdHlwZScpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDb250ZW50LVR5cGUgY2Fubm90IGJlIHNldCB0byBhbiBBcnJheScpO1xuICAgICAgfVxuICAgICAgaWYgKCFjaGFyc2V0UmVnRXhwLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHZhciBjaGFyc2V0ID0gbWltZS5jaGFyc2V0cy5sb29rdXAodmFsdWUuc3BsaXQoJzsnKVswXSk7XG4gICAgICAgIGlmIChjaGFyc2V0KSB2YWx1ZSArPSAnOyBjaGFyc2V0PScgKyBjaGFyc2V0LnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXRIZWFkZXIoZmllbGQsIHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gZmllbGQpIHtcbiAgICAgIHRoaXMuc2V0KGtleSwgZmllbGRba2V5XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBHZXQgdmFsdWUgZm9yIGhlYWRlciBgZmllbGRgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5cbnJlcy5nZXQgPSBmdW5jdGlvbihmaWVsZCl7XG4gIHJldHVybiB0aGlzLmdldEhlYWRlcihmaWVsZCk7XG59O1xuXG4vKipcbiAqIENsZWFyIGNvb2tpZSBgbmFtZWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge1NlcnZlclJlc3BvbnNlfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMuY2xlYXJDb29raWUgPSBmdW5jdGlvbiBjbGVhckNvb2tpZShuYW1lLCBvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gbWVyZ2UoeyBleHBpcmVzOiBuZXcgRGF0ZSgxKSwgcGF0aDogJy8nIH0sIG9wdGlvbnMpO1xuXG4gIHJldHVybiB0aGlzLmNvb2tpZShuYW1lLCAnJywgb3B0cyk7XG59O1xuXG4vKipcbiAqIFNldCBjb29raWUgYG5hbWVgIHRvIGB2YWx1ZWAsIHdpdGggdGhlIGdpdmVuIGBvcHRpb25zYC5cbiAqXG4gKiBPcHRpb25zOlxuICpcbiAqICAgIC0gYG1heEFnZWAgICBtYXgtYWdlIGluIG1pbGxpc2Vjb25kcywgY29udmVydGVkIHRvIGBleHBpcmVzYFxuICogICAgLSBgc2lnbmVkYCAgIHNpZ24gdGhlIGNvb2tpZVxuICogICAgLSBgcGF0aGAgICAgIGRlZmF1bHRzIHRvIFwiL1wiXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgLy8gXCJSZW1lbWJlciBNZVwiIGZvciAxNSBtaW51dGVzXG4gKiAgICByZXMuY29va2llKCdyZW1lbWJlcm1lJywgJzEnLCB7IGV4cGlyZXM6IG5ldyBEYXRlKERhdGUubm93KCkgKyA5MDAwMDApLCBodHRwT25seTogdHJ1ZSB9KTtcbiAqXG4gKiAgICAvLyBzYXZlIGFzIGFib3ZlXG4gKiAgICByZXMuY29va2llKCdyZW1lbWJlcm1lJywgJzEnLCB7IG1heEFnZTogOTAwMDAwLCBodHRwT25seTogdHJ1ZSB9KVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IHZhbHVlXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtTZXJ2ZXJSZXNwb25zZX0gZm9yIGNoYWluaW5nXG4gKiBAcHVibGljXG4gKi9cblxucmVzLmNvb2tpZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgb3B0cyA9IG1lcmdlKHt9LCBvcHRpb25zKTtcbiAgdmFyIHNlY3JldCA9IHRoaXMucmVxLnNlY3JldDtcbiAgdmFyIHNpZ25lZCA9IG9wdHMuc2lnbmVkO1xuXG4gIGlmIChzaWduZWQgJiYgIXNlY3JldCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY29va2llUGFyc2VyKFwic2VjcmV0XCIpIHJlcXVpcmVkIGZvciBzaWduZWQgY29va2llcycpO1xuICB9XG5cbiAgdmFyIHZhbCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICA/ICdqOicgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcbiAgICA6IFN0cmluZyh2YWx1ZSk7XG5cbiAgaWYgKHNpZ25lZCkge1xuICAgIHZhbCA9ICdzOicgKyBzaWduKHZhbCwgc2VjcmV0KTtcbiAgfVxuXG4gIGlmICgnbWF4QWdlJyBpbiBvcHRzKSB7XG4gICAgb3B0cy5leHBpcmVzID0gbmV3IERhdGUoRGF0ZS5ub3coKSArIG9wdHMubWF4QWdlKTtcbiAgICBvcHRzLm1heEFnZSAvPSAxMDAwO1xuICB9XG5cbiAgaWYgKG9wdHMucGF0aCA9PSBudWxsKSB7XG4gICAgb3B0cy5wYXRoID0gJy8nO1xuICB9XG5cbiAgdGhpcy5hcHBlbmQoJ1NldC1Db29raWUnLCBjb29raWUuc2VyaWFsaXplKG5hbWUsIFN0cmluZyh2YWwpLCBvcHRzKSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgbG9jYXRpb24gaGVhZGVyIHRvIGB1cmxgLlxuICpcbiAqIFRoZSBnaXZlbiBgdXJsYCBjYW4gYWxzbyBiZSBcImJhY2tcIiwgd2hpY2ggcmVkaXJlY3RzXG4gKiB0byB0aGUgX1JlZmVycmVyXyBvciBfUmVmZXJlcl8gaGVhZGVycyBvciBcIi9cIi5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICByZXMubG9jYXRpb24oJy9mb28vYmFyJykuO1xuICogICAgcmVzLmxvY2F0aW9uKCdodHRwOi8vZXhhbXBsZS5jb20nKTtcbiAqICAgIHJlcy5sb2NhdGlvbignLi4vbG9naW4nKTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcmV0dXJuIHtTZXJ2ZXJSZXNwb25zZX0gZm9yIGNoYWluaW5nXG4gKiBAcHVibGljXG4gKi9cblxucmVzLmxvY2F0aW9uID0gZnVuY3Rpb24gbG9jYXRpb24odXJsKSB7XG4gIHZhciBsb2MgPSB1cmw7XG5cbiAgLy8gXCJiYWNrXCIgaXMgYW4gYWxpYXMgZm9yIHRoZSByZWZlcnJlclxuICBpZiAodXJsID09PSAnYmFjaycpIHtcbiAgICBsb2MgPSB0aGlzLnJlcS5nZXQoJ1JlZmVycmVyJykgfHwgJy8nO1xuICB9XG5cbiAgLy8gc2V0IGxvY2F0aW9uXG4gIHJldHVybiB0aGlzLnNldCgnTG9jYXRpb24nLCBlbmNvZGVVcmwobG9jKSk7XG59O1xuXG4vKipcbiAqIFJlZGlyZWN0IHRvIHRoZSBnaXZlbiBgdXJsYCB3aXRoIG9wdGlvbmFsIHJlc3BvbnNlIGBzdGF0dXNgXG4gKiBkZWZhdWx0aW5nIHRvIDMwMi5cbiAqXG4gKiBUaGUgcmVzdWx0aW5nIGB1cmxgIGlzIGRldGVybWluZWQgYnkgYHJlcy5sb2NhdGlvbigpYCwgc29cbiAqIGl0IHdpbGwgcGxheSBuaWNlbHkgd2l0aCBtb3VudGVkIGFwcHMsIHJlbGF0aXZlIHBhdGhzLFxuICogYFwiYmFja1wiYCBldGMuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgcmVzLnJlZGlyZWN0KCcvZm9vL2JhcicpO1xuICogICAgcmVzLnJlZGlyZWN0KCdodHRwOi8vZXhhbXBsZS5jb20nKTtcbiAqICAgIHJlcy5yZWRpcmVjdCgzMDEsICdodHRwOi8vZXhhbXBsZS5jb20nKTtcbiAqICAgIHJlcy5yZWRpcmVjdCgnLi4vbG9naW4nKTsgLy8gL2Jsb2cvcG9zdC8xIC0+IC9ibG9nL2xvZ2luXG4gKlxuICogQHB1YmxpY1xuICovXG5cbnJlcy5yZWRpcmVjdCA9IGZ1bmN0aW9uIHJlZGlyZWN0KHVybCkge1xuICB2YXIgYWRkcmVzcyA9IHVybDtcbiAgdmFyIGJvZHk7XG4gIHZhciBzdGF0dXMgPSAzMDI7XG5cbiAgLy8gYWxsb3cgc3RhdHVzIC8gdXJsXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG4gICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbMF0gPT09ICdudW1iZXInKSB7XG4gICAgICBzdGF0dXMgPSBhcmd1bWVudHNbMF07XG4gICAgICBhZGRyZXNzID0gYXJndW1lbnRzWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZXByZWNhdGUoJ3Jlcy5yZWRpcmVjdCh1cmwsIHN0YXR1cyk6IFVzZSByZXMucmVkaXJlY3Qoc3RhdHVzLCB1cmwpIGluc3RlYWQnKTtcbiAgICAgIHN0YXR1cyA9IGFyZ3VtZW50c1sxXTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgbG9jYXRpb24gaGVhZGVyXG4gIGFkZHJlc3MgPSB0aGlzLmxvY2F0aW9uKGFkZHJlc3MpLmdldCgnTG9jYXRpb24nKTtcblxuICAvLyBTdXBwb3J0IHRleHQve3BsYWluLGh0bWx9IGJ5IGRlZmF1bHRcbiAgdGhpcy5mb3JtYXQoe1xuICAgIHRleHQ6IGZ1bmN0aW9uKCl7XG4gICAgICBib2R5ID0gc3RhdHVzZXNbc3RhdHVzXSArICcuIFJlZGlyZWN0aW5nIHRvICcgKyBhZGRyZXNzXG4gICAgfSxcblxuICAgIGh0bWw6IGZ1bmN0aW9uKCl7XG4gICAgICB2YXIgdSA9IGVzY2FwZUh0bWwoYWRkcmVzcyk7XG4gICAgICBib2R5ID0gJzxwPicgKyBzdGF0dXNlc1tzdGF0dXNdICsgJy4gUmVkaXJlY3RpbmcgdG8gPGEgaHJlZj1cIicgKyB1ICsgJ1wiPicgKyB1ICsgJzwvYT48L3A+J1xuICAgIH0sXG5cbiAgICBkZWZhdWx0OiBmdW5jdGlvbigpe1xuICAgICAgYm9keSA9ICcnO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gUmVzcG9uZFxuICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXM7XG4gIHRoaXMuc2V0KCdDb250ZW50LUxlbmd0aCcsIEJ1ZmZlci5ieXRlTGVuZ3RoKGJvZHkpKTtcblxuICBpZiAodGhpcy5yZXEubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICB0aGlzLmVuZCgpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZW5kKGJvZHkpO1xuICB9XG59O1xuXG4vKipcbiAqIEFkZCBgZmllbGRgIHRvIFZhcnkuIElmIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgVmFyeSBzZXQsIHRoZW5cbiAqIHRoaXMgY2FsbCBpcyBzaW1wbHkgaWdub3JlZC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fFN0cmluZ30gZmllbGRcbiAqIEByZXR1cm4ge1NlcnZlclJlc3BvbnNlfSBmb3IgY2hhaW5pbmdcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMudmFyeSA9IGZ1bmN0aW9uKGZpZWxkKXtcbiAgLy8gY2hlY2tzIGZvciBiYWNrLWNvbXBhdFxuICBpZiAoIWZpZWxkIHx8IChBcnJheS5pc0FycmF5KGZpZWxkKSAmJiAhZmllbGQubGVuZ3RoKSkge1xuICAgIGRlcHJlY2F0ZSgncmVzLnZhcnkoKTogUHJvdmlkZSBhIGZpZWxkIG5hbWUnKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHZhcnkodGhpcywgZmllbGQpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBSZW5kZXIgYHZpZXdgIHdpdGggdGhlIGdpdmVuIGBvcHRpb25zYCBhbmQgb3B0aW9uYWwgY2FsbGJhY2sgYGZuYC5cbiAqIFdoZW4gYSBjYWxsYmFjayBmdW5jdGlvbiBpcyBnaXZlbiBhIHJlc3BvbnNlIHdpbGwgX25vdF8gYmUgbWFkZVxuICogYXV0b21hdGljYWxseSwgb3RoZXJ3aXNlIGEgcmVzcG9uc2Ugb2YgXzIwMF8gYW5kIF90ZXh0L2h0bWxfIGlzIGdpdmVuLlxuICpcbiAqIE9wdGlvbnM6XG4gKlxuICogIC0gYGNhY2hlYCAgICAgYm9vbGVhbiBoaW50aW5nIHRvIHRoZSBlbmdpbmUgaXQgc2hvdWxkIGNhY2hlXG4gKiAgLSBgZmlsZW5hbWVgICBmaWxlbmFtZSBvZiB0aGUgdmlldyBiZWluZyByZW5kZXJlZFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuXG5yZXMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKHZpZXcsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBhcHAgPSB0aGlzLnJlcS5hcHA7XG4gIHZhciBkb25lID0gY2FsbGJhY2s7XG4gIHZhciBvcHRzID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIHJlcSA9IHRoaXMucmVxO1xuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgLy8gc3VwcG9ydCBjYWxsYmFjayBmdW5jdGlvbiBhcyBzZWNvbmQgYXJnXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRvbmUgPSBvcHRpb25zO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuXG4gIC8vIG1lcmdlIHJlcy5sb2NhbHNcbiAgb3B0cy5fbG9jYWxzID0gc2VsZi5sb2NhbHM7XG5cbiAgLy8gZGVmYXVsdCBjYWxsYmFjayB0byByZXNwb25kXG4gIGRvbmUgPSBkb25lIHx8IGZ1bmN0aW9uIChlcnIsIHN0cikge1xuICAgIGlmIChlcnIpIHJldHVybiByZXEubmV4dChlcnIpO1xuICAgIHNlbGYuc2VuZChzdHIpO1xuICB9O1xuXG4gIC8vIHJlbmRlclxuICBhcHAucmVuZGVyKHZpZXcsIG9wdHMsIGRvbmUpO1xufTtcblxuLy8gcGlwZSB0aGUgc2VuZCBmaWxlIHN0cmVhbVxuZnVuY3Rpb24gc2VuZGZpbGUocmVzLCBmaWxlLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICB2YXIgZG9uZSA9IGZhbHNlO1xuICB2YXIgc3RyZWFtaW5nO1xuXG4gIC8vIHJlcXVlc3QgYWJvcnRlZFxuICBmdW5jdGlvbiBvbmFib3J0ZWQoKSB7XG4gICAgaWYgKGRvbmUpIHJldHVybjtcbiAgICBkb25lID0gdHJ1ZTtcblxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1JlcXVlc3QgYWJvcnRlZCcpO1xuICAgIGVyci5jb2RlID0gJ0VDT05OQUJPUlRFRCc7XG4gICAgY2FsbGJhY2soZXJyKTtcbiAgfVxuXG4gIC8vIGRpcmVjdG9yeVxuICBmdW5jdGlvbiBvbmRpcmVjdG9yeSgpIHtcbiAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgIGRvbmUgPSB0cnVlO1xuXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcignRUlTRElSLCByZWFkJyk7XG4gICAgZXJyLmNvZGUgPSAnRUlTRElSJztcbiAgICBjYWxsYmFjayhlcnIpO1xuICB9XG5cbiAgLy8gZXJyb3JzXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXJyKSB7XG4gICAgaWYgKGRvbmUpIHJldHVybjtcbiAgICBkb25lID0gdHJ1ZTtcbiAgICBjYWxsYmFjayhlcnIpO1xuICB9XG5cbiAgLy8gZW5kZWRcbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgaWYgKGRvbmUpIHJldHVybjtcbiAgICBkb25lID0gdHJ1ZTtcbiAgICBjYWxsYmFjaygpO1xuICB9XG5cbiAgLy8gZmlsZVxuICBmdW5jdGlvbiBvbmZpbGUoKSB7XG4gICAgc3RyZWFtaW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBmaW5pc2hlZFxuICBmdW5jdGlvbiBvbmZpbmlzaChlcnIpIHtcbiAgICBpZiAoZXJyICYmIGVyci5jb2RlID09PSAnRUNPTk5SRVNFVCcpIHJldHVybiBvbmFib3J0ZWQoKTtcbiAgICBpZiAoZXJyKSByZXR1cm4gb25lcnJvcihlcnIpO1xuICAgIGlmIChkb25lKSByZXR1cm47XG5cbiAgICBzZXRJbW1lZGlhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHN0cmVhbWluZyAhPT0gZmFsc2UgJiYgIWRvbmUpIHtcbiAgICAgICAgb25hYm9ydGVkKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGRvbmUpIHJldHVybjtcbiAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHN0cmVhbWluZ1xuICBmdW5jdGlvbiBvbnN0cmVhbSgpIHtcbiAgICBzdHJlYW1pbmcgPSB0cnVlO1xuICB9XG5cbiAgZmlsZS5vbignZGlyZWN0b3J5Jywgb25kaXJlY3RvcnkpO1xuICBmaWxlLm9uKCdlbmQnLCBvbmVuZCk7XG4gIGZpbGUub24oJ2Vycm9yJywgb25lcnJvcik7XG4gIGZpbGUub24oJ2ZpbGUnLCBvbmZpbGUpO1xuICBmaWxlLm9uKCdzdHJlYW0nLCBvbnN0cmVhbSk7XG4gIG9uRmluaXNoZWQocmVzLCBvbmZpbmlzaCk7XG5cbiAgaWYgKG9wdGlvbnMuaGVhZGVycykge1xuICAgIC8vIHNldCBoZWFkZXJzIG9uIHN1Y2Nlc3NmdWwgdHJhbnNmZXJcbiAgICBmaWxlLm9uKCdoZWFkZXJzJywgZnVuY3Rpb24gaGVhZGVycyhyZXMpIHtcbiAgICAgIHZhciBvYmogPSBvcHRpb25zLmhlYWRlcnM7XG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgayA9IGtleXNbaV07XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoaywgb2JqW2tdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIHBpcGVcbiAgZmlsZS5waXBlKHJlcyk7XG59XG5cbi8qKlxuICogU3RyaW5naWZ5IEpTT04sIGxpa2UgSlNPTi5zdHJpbmdpZnksIGJ1dCB2OCBvcHRpbWl6ZWQsIHdpdGggdGhlXG4gKiBhYmlsaXR5IHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgY2FuIHRyaWdnZXIgSFRNTCBzbmlmZmluZy5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSByZXBsYWNlc1xuICogQHBhcmFtIHtudW1iZXJ9IHNwYWNlc1xuICogQHBhcmFtIHtib29sZWFufSBlc2NhcGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiBAcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHN0cmluZ2lmeSAodmFsdWUsIHJlcGxhY2VyLCBzcGFjZXMsIGVzY2FwZSkge1xuICAvLyB2OCBjaGVja3MgYXJndW1lbnRzLmxlbmd0aCBmb3Igb3B0aW1pemluZyBzaW1wbGUgY2FsbFxuICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00NzMwXG4gIHZhciBqc29uID0gcmVwbGFjZXIgfHwgc3BhY2VzXG4gICAgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlcylcbiAgICA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcblxuICBpZiAoZXNjYXBlKSB7XG4gICAganNvbiA9IGpzb24ucmVwbGFjZSgvWzw+Jl0vZywgZnVuY3Rpb24gKGMpIHtcbiAgICAgIHN3aXRjaCAoYy5jaGFyQ29kZUF0KDApKSB7XG4gICAgICAgIGNhc2UgMHgzYzpcbiAgICAgICAgICByZXR1cm4gJ1xcXFx1MDAzYydcbiAgICAgICAgY2FzZSAweDNlOlxuICAgICAgICAgIHJldHVybiAnXFxcXHUwMDNlJ1xuICAgICAgICBjYXNlIDB4MjY6XG4gICAgICAgICAgcmV0dXJuICdcXFxcdTAwMjYnXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGNcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGpzb25cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9leHByZXNzL2xpYi9yZXNwb25zZS5qc1xuLy8gbW9kdWxlIGlkID0gMTgwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG5cbi8qKlxuICogU2lnbiB0aGUgZ2l2ZW4gYHZhbGAgd2l0aCBgc2VjcmV0YC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VjcmV0XG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5leHBvcnRzLnNpZ24gPSBmdW5jdGlvbih2YWwsIHNlY3JldCl7XG4gIGlmICgnc3RyaW5nJyAhPSB0eXBlb2YgdmFsKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ29va2llIHZhbHVlIG11c3QgYmUgcHJvdmlkZWQgYXMgYSBzdHJpbmcuXCIpO1xuICBpZiAoJ3N0cmluZycgIT0gdHlwZW9mIHNlY3JldCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlNlY3JldCBzdHJpbmcgbXVzdCBiZSBwcm92aWRlZC5cIik7XG4gIHJldHVybiB2YWwgKyAnLicgKyBjcnlwdG9cbiAgICAuY3JlYXRlSG1hYygnc2hhMjU2Jywgc2VjcmV0KVxuICAgIC51cGRhdGUodmFsKVxuICAgIC5kaWdlc3QoJ2Jhc2U2NCcpXG4gICAgLnJlcGxhY2UoL1xcPSskLywgJycpO1xufTtcblxuLyoqXG4gKiBVbnNpZ24gYW5kIGRlY29kZSB0aGUgZ2l2ZW4gYHZhbGAgd2l0aCBgc2VjcmV0YCxcbiAqIHJldHVybmluZyBgZmFsc2VgIGlmIHRoZSBzaWduYXR1cmUgaXMgaW52YWxpZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VjcmV0XG4gKiBAcmV0dXJuIHtTdHJpbmd8Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmV4cG9ydHMudW5zaWduID0gZnVuY3Rpb24odmFsLCBzZWNyZXQpe1xuICBpZiAoJ3N0cmluZycgIT0gdHlwZW9mIHZhbCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlNpZ25lZCBjb29raWUgc3RyaW5nIG11c3QgYmUgcHJvdmlkZWQuXCIpO1xuICBpZiAoJ3N0cmluZycgIT0gdHlwZW9mIHNlY3JldCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlNlY3JldCBzdHJpbmcgbXVzdCBiZSBwcm92aWRlZC5cIik7XG4gIHZhciBzdHIgPSB2YWwuc2xpY2UoMCwgdmFsLmxhc3RJbmRleE9mKCcuJykpXG4gICAgLCBtYWMgPSBleHBvcnRzLnNpZ24oc3RyLCBzZWNyZXQpO1xuICBcbiAgcmV0dXJuIHNoYTEobWFjKSA9PSBzaGExKHZhbCkgPyBzdHIgOiBmYWxzZTtcbn07XG5cbi8qKlxuICogUHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNoYTEoc3RyKXtcbiAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKHN0cikuZGlnZXN0KCdoZXgnKTtcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb29raWUtc2lnbmF0dXJlL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxODFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiBjb29raWVcbiAqIENvcHlyaWdodChjKSAyMDEyLTIwMTQgUm9tYW4gU2h0eWxtYW5cbiAqIENvcHlyaWdodChjKSAyMDE1IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuZXhwb3J0cy5zZXJpYWxpemUgPSBzZXJpYWxpemU7XG5cbi8qKlxuICogTW9kdWxlIHZhcmlhYmxlcy5cbiAqIEBwcml2YXRlXG4gKi9cblxudmFyIGRlY29kZSA9IGRlY29kZVVSSUNvbXBvbmVudDtcbnZhciBlbmNvZGUgPSBlbmNvZGVVUklDb21wb25lbnQ7XG52YXIgcGFpclNwbGl0UmVnRXhwID0gLzsgKi87XG5cbi8qKlxuICogUmVnRXhwIHRvIG1hdGNoIGZpZWxkLWNvbnRlbnQgaW4gUkZDIDcyMzAgc2VjIDMuMlxuICpcbiAqIGZpZWxkLWNvbnRlbnQgPSBmaWVsZC12Y2hhciBbIDEqKCBTUCAvIEhUQUIgKSBmaWVsZC12Y2hhciBdXG4gKiBmaWVsZC12Y2hhciAgID0gVkNIQVIgLyBvYnMtdGV4dFxuICogb2JzLXRleHQgICAgICA9ICV4ODAtRkZcbiAqL1xuXG52YXIgZmllbGRDb250ZW50UmVnRXhwID0gL15bXFx1MDAwOVxcdTAwMjAtXFx1MDA3ZVxcdTAwODAtXFx1MDBmZl0rJC87XG5cbi8qKlxuICogUGFyc2UgYSBjb29raWUgaGVhZGVyLlxuICpcbiAqIFBhcnNlIHRoZSBnaXZlbiBjb29raWUgaGVhZGVyIHN0cmluZyBpbnRvIGFuIG9iamVjdFxuICogVGhlIG9iamVjdCBoYXMgdGhlIHZhcmlvdXMgY29va2llcyBhcyBrZXlzKG5hbWVzKSA9PiB2YWx1ZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gcGFyc2Uoc3RyLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHN0ciBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICB2YXIgb2JqID0ge31cbiAgdmFyIG9wdCA9IG9wdGlvbnMgfHwge307XG4gIHZhciBwYWlycyA9IHN0ci5zcGxpdChwYWlyU3BsaXRSZWdFeHApO1xuICB2YXIgZGVjID0gb3B0LmRlY29kZSB8fCBkZWNvZGU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwYWlyID0gcGFpcnNbaV07XG4gICAgdmFyIGVxX2lkeCA9IHBhaXIuaW5kZXhPZignPScpO1xuXG4gICAgLy8gc2tpcCB0aGluZ3MgdGhhdCBkb24ndCBsb29rIGxpa2Uga2V5PXZhbHVlXG4gICAgaWYgKGVxX2lkeCA8IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBrZXkgPSBwYWlyLnN1YnN0cigwLCBlcV9pZHgpLnRyaW0oKVxuICAgIHZhciB2YWwgPSBwYWlyLnN1YnN0cigrK2VxX2lkeCwgcGFpci5sZW5ndGgpLnRyaW0oKTtcblxuICAgIC8vIHF1b3RlZCB2YWx1ZXNcbiAgICBpZiAoJ1wiJyA9PSB2YWxbMF0pIHtcbiAgICAgIHZhbCA9IHZhbC5zbGljZSgxLCAtMSk7XG4gICAgfVxuXG4gICAgLy8gb25seSBhc3NpZ24gb25jZVxuICAgIGlmICh1bmRlZmluZWQgPT0gb2JqW2tleV0pIHtcbiAgICAgIG9ialtrZXldID0gdHJ5RGVjb2RlKHZhbCwgZGVjKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG4vKipcbiAqIFNlcmlhbGl6ZSBkYXRhIGludG8gYSBjb29raWUgaGVhZGVyLlxuICpcbiAqIFNlcmlhbGl6ZSB0aGUgYSBuYW1lIHZhbHVlIHBhaXIgaW50byBhIGNvb2tpZSBzdHJpbmcgc3VpdGFibGUgZm9yXG4gKiBodHRwIGhlYWRlcnMuIEFuIG9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0IHNwZWNpZmllZCBjb29raWUgcGFyYW1ldGVycy5cbiAqXG4gKiBzZXJpYWxpemUoJ2ZvbycsICdiYXInLCB7IGh0dHBPbmx5OiB0cnVlIH0pXG4gKiAgID0+IFwiZm9vPWJhcjsgaHR0cE9ubHlcIlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gc2VyaWFsaXplKG5hbWUsIHZhbCwgb3B0aW9ucykge1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIGVuYyA9IG9wdC5lbmNvZGUgfHwgZW5jb2RlO1xuXG4gIGlmICh0eXBlb2YgZW5jICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIGVuY29kZSBpcyBpbnZhbGlkJyk7XG4gIH1cblxuICBpZiAoIWZpZWxkQ29udGVudFJlZ0V4cC50ZXN0KG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgbmFtZSBpcyBpbnZhbGlkJyk7XG4gIH1cblxuICB2YXIgdmFsdWUgPSBlbmModmFsKTtcblxuICBpZiAodmFsdWUgJiYgIWZpZWxkQ29udGVudFJlZ0V4cC50ZXN0KHZhbHVlKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHZhbCBpcyBpbnZhbGlkJyk7XG4gIH1cblxuICB2YXIgc3RyID0gbmFtZSArICc9JyArIHZhbHVlO1xuXG4gIGlmIChudWxsICE9IG9wdC5tYXhBZ2UpIHtcbiAgICB2YXIgbWF4QWdlID0gb3B0Lm1heEFnZSAtIDA7XG4gICAgaWYgKGlzTmFOKG1heEFnZSkpIHRocm93IG5ldyBFcnJvcignbWF4QWdlIHNob3VsZCBiZSBhIE51bWJlcicpO1xuICAgIHN0ciArPSAnOyBNYXgtQWdlPScgKyBNYXRoLmZsb29yKG1heEFnZSk7XG4gIH1cblxuICBpZiAob3B0LmRvbWFpbikge1xuICAgIGlmICghZmllbGRDb250ZW50UmVnRXhwLnRlc3Qob3B0LmRvbWFpbikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBkb21haW4gaXMgaW52YWxpZCcpO1xuICAgIH1cblxuICAgIHN0ciArPSAnOyBEb21haW49JyArIG9wdC5kb21haW47XG4gIH1cblxuICBpZiAob3B0LnBhdGgpIHtcbiAgICBpZiAoIWZpZWxkQ29udGVudFJlZ0V4cC50ZXN0KG9wdC5wYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIHBhdGggaXMgaW52YWxpZCcpO1xuICAgIH1cblxuICAgIHN0ciArPSAnOyBQYXRoPScgKyBvcHQucGF0aDtcbiAgfVxuXG4gIGlmIChvcHQuZXhwaXJlcykge1xuICAgIGlmICh0eXBlb2Ygb3B0LmV4cGlyZXMudG9VVENTdHJpbmcgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbiBleHBpcmVzIGlzIGludmFsaWQnKTtcbiAgICB9XG5cbiAgICBzdHIgKz0gJzsgRXhwaXJlcz0nICsgb3B0LmV4cGlyZXMudG9VVENTdHJpbmcoKTtcbiAgfVxuXG4gIGlmIChvcHQuaHR0cE9ubHkpIHtcbiAgICBzdHIgKz0gJzsgSHR0cE9ubHknO1xuICB9XG5cbiAgaWYgKG9wdC5zZWN1cmUpIHtcbiAgICBzdHIgKz0gJzsgU2VjdXJlJztcbiAgfVxuXG4gIGlmIChvcHQuc2FtZVNpdGUpIHtcbiAgICB2YXIgc2FtZVNpdGUgPSB0eXBlb2Ygb3B0LnNhbWVTaXRlID09PSAnc3RyaW5nJ1xuICAgICAgPyBvcHQuc2FtZVNpdGUudG9Mb3dlckNhc2UoKSA6IG9wdC5zYW1lU2l0ZTtcblxuICAgIHN3aXRjaCAoc2FtZVNpdGUpIHtcbiAgICAgIGNhc2UgdHJ1ZTpcbiAgICAgICAgc3RyICs9ICc7IFNhbWVTaXRlPVN0cmljdCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbGF4JzpcbiAgICAgICAgc3RyICs9ICc7IFNhbWVTaXRlPUxheCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RyaWN0JzpcbiAgICAgICAgc3RyICs9ICc7IFNhbWVTaXRlPVN0cmljdCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uIHNhbWVTaXRlIGlzIGludmFsaWQnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIFRyeSBkZWNvZGluZyBhIHN0cmluZyB1c2luZyBhIGRlY29kaW5nIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGRlY29kZVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiB0cnlEZWNvZGUoc3RyLCBkZWNvZGUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGVjb2RlKHN0cik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29va2llL2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAxODJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyohXG4gKiB2YXJ5XG4gKiBDb3B5cmlnaHQoYykgMjAxNC0yMDE3IERvdWdsYXMgQ2hyaXN0b3BoZXIgV2lsc29uXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IHZhcnlcbm1vZHVsZS5leHBvcnRzLmFwcGVuZCA9IGFwcGVuZFxuXG4vKipcbiAqIFJlZ0V4cCB0byBtYXRjaCBmaWVsZC1uYW1lIGluIFJGQyA3MjMwIHNlYyAzLjJcbiAqXG4gKiBmaWVsZC1uYW1lICAgID0gdG9rZW5cbiAqIHRva2VuICAgICAgICAgPSAxKnRjaGFyXG4gKiB0Y2hhciAgICAgICAgID0gXCIhXCIgLyBcIiNcIiAvIFwiJFwiIC8gXCIlXCIgLyBcIiZcIiAvIFwiJ1wiIC8gXCIqXCJcbiAqICAgICAgICAgICAgICAgLyBcIitcIiAvIFwiLVwiIC8gXCIuXCIgLyBcIl5cIiAvIFwiX1wiIC8gXCJgXCIgLyBcInxcIiAvIFwiflwiXG4gKiAgICAgICAgICAgICAgIC8gRElHSVQgLyBBTFBIQVxuICogICAgICAgICAgICAgICA7IGFueSBWQ0hBUiwgZXhjZXB0IGRlbGltaXRlcnNcbiAqL1xuXG52YXIgRklFTERfTkFNRV9SRUdFWFAgPSAvXlshIyQlJicqK1xcLS5eX2B8fjAtOUEtWmEtel0rJC9cblxuLyoqXG4gKiBBcHBlbmQgYSBmaWVsZCB0byBhIHZhcnkgaGVhZGVyLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWFkZXJcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBmaWVsZFxuICogQHJldHVybiB7U3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGFwcGVuZCAoaGVhZGVyLCBmaWVsZCkge1xuICBpZiAodHlwZW9mIGhlYWRlciAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdoZWFkZXIgYXJndW1lbnQgaXMgcmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKCFmaWVsZCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ZpZWxkIGFyZ3VtZW50IGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIC8vIGdldCBmaWVsZHMgYXJyYXlcbiAgdmFyIGZpZWxkcyA9ICFBcnJheS5pc0FycmF5KGZpZWxkKVxuICAgID8gcGFyc2UoU3RyaW5nKGZpZWxkKSlcbiAgICA6IGZpZWxkXG5cbiAgLy8gYXNzZXJ0IG9uIGludmFsaWQgZmllbGQgbmFtZXNcbiAgZm9yICh2YXIgaiA9IDA7IGogPCBmaWVsZHMubGVuZ3RoOyBqKyspIHtcbiAgICBpZiAoIUZJRUxEX05BTUVfUkVHRVhQLnRlc3QoZmllbGRzW2pdKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZmllbGQgYXJndW1lbnQgY29udGFpbnMgYW4gaW52YWxpZCBoZWFkZXIgbmFtZScpXG4gICAgfVxuICB9XG5cbiAgLy8gZXhpc3RpbmcsIHVuc3BlY2lmaWVkIHZhcnlcbiAgaWYgKGhlYWRlciA9PT0gJyonKSB7XG4gICAgcmV0dXJuIGhlYWRlclxuICB9XG5cbiAgLy8gZW51bWVyYXRlIGN1cnJlbnQgdmFsdWVzXG4gIHZhciB2YWwgPSBoZWFkZXJcbiAgdmFyIHZhbHMgPSBwYXJzZShoZWFkZXIudG9Mb3dlckNhc2UoKSlcblxuICAvLyB1bnNwZWNpZmllZCB2YXJ5XG4gIGlmIChmaWVsZHMuaW5kZXhPZignKicpICE9PSAtMSB8fCB2YWxzLmluZGV4T2YoJyonKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gJyonXG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBmbGQgPSBmaWVsZHNbaV0udG9Mb3dlckNhc2UoKVxuXG4gICAgLy8gYXBwZW5kIHZhbHVlIChjYXNlLXByZXNlcnZpbmcpXG4gICAgaWYgKHZhbHMuaW5kZXhPZihmbGQpID09PSAtMSkge1xuICAgICAgdmFscy5wdXNoKGZsZClcbiAgICAgIHZhbCA9IHZhbFxuICAgICAgICA/IHZhbCArICcsICcgKyBmaWVsZHNbaV1cbiAgICAgICAgOiBmaWVsZHNbaV1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbi8qKlxuICogUGFyc2UgYSB2YXJ5IGhlYWRlciBpbnRvIGFuIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWFkZXJcbiAqIEByZXR1cm4ge0FycmF5fVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZSAoaGVhZGVyKSB7XG4gIHZhciBlbmQgPSAwXG4gIHZhciBsaXN0ID0gW11cbiAgdmFyIHN0YXJ0ID0gMFxuXG4gIC8vIGdhdGhlciB0b2tlbnNcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGhlYWRlci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHN3aXRjaCAoaGVhZGVyLmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgIGNhc2UgMHgyMDogLyogICAqL1xuICAgICAgICBpZiAoc3RhcnQgPT09IGVuZCkge1xuICAgICAgICAgIHN0YXJ0ID0gZW5kID0gaSArIDFcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAweDJjOiAvKiAsICovXG4gICAgICAgIGxpc3QucHVzaChoZWFkZXIuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpKVxuICAgICAgICBzdGFydCA9IGVuZCA9IGkgKyAxXG4gICAgICAgIGJyZWFrXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBlbmQgPSBpICsgMVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIGZpbmFsIHRva2VuXG4gIGxpc3QucHVzaChoZWFkZXIuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpKVxuXG4gIHJldHVybiBsaXN0XG59XG5cbi8qKlxuICogTWFyayB0aGF0IGEgcmVxdWVzdCBpcyB2YXJpZWQgb24gYSBoZWFkZXIgZmllbGQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHJlc1xuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGZpZWxkXG4gKiBAcHVibGljXG4gKi9cblxuZnVuY3Rpb24gdmFyeSAocmVzLCBmaWVsZCkge1xuICBpZiAoIXJlcyB8fCAhcmVzLmdldEhlYWRlciB8fCAhcmVzLnNldEhlYWRlcikge1xuICAgIC8vIHF1YWNrIHF1YWNrXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVzIGFyZ3VtZW50IGlzIHJlcXVpcmVkJylcbiAgfVxuXG4gIC8vIGdldCBleGlzdGluZyBoZWFkZXJcbiAgdmFyIHZhbCA9IHJlcy5nZXRIZWFkZXIoJ1ZhcnknKSB8fCAnJ1xuICB2YXIgaGVhZGVyID0gQXJyYXkuaXNBcnJheSh2YWwpXG4gICAgPyB2YWwuam9pbignLCAnKVxuICAgIDogU3RyaW5nKHZhbClcblxuICAvLyBzZXQgbmV3IGhlYWRlclxuICBpZiAoKHZhbCA9IGFwcGVuZChoZWFkZXIsIGZpZWxkKSkpIHtcbiAgICByZXMuc2V0SGVhZGVyKCdWYXJ5JywgdmFsKVxuICB9XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvdmFyeS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTgzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIVxuICogc2VydmUtc3RhdGljXG4gKiBDb3B5cmlnaHQoYykgMjAxMCBTZW5jaGEgSW5jLlxuICogQ29weXJpZ2h0KGMpIDIwMTEgVEogSG9sb3dheWNodWtcbiAqIENvcHlyaWdodChjKSAyMDE0LTIwMTYgRG91Z2xhcyBDaHJpc3RvcGhlciBXaWxzb25cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBlbmNvZGVVcmwgPSByZXF1aXJlKCdlbmNvZGV1cmwnKVxudmFyIGVzY2FwZUh0bWwgPSByZXF1aXJlKCdlc2NhcGUtaHRtbCcpXG52YXIgcGFyc2VVcmwgPSByZXF1aXJlKCdwYXJzZXVybCcpXG52YXIgcmVzb2x2ZSA9IHJlcXVpcmUoJ3BhdGgnKS5yZXNvbHZlXG52YXIgc2VuZCA9IHJlcXVpcmUoJ3NlbmQnKVxudmFyIHVybCA9IHJlcXVpcmUoJ3VybCcpXG5cbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKiBAcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBzZXJ2ZVN0YXRpY1xubW9kdWxlLmV4cG9ydHMubWltZSA9IHNlbmQubWltZVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSByb290XG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqIEBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBzZXJ2ZVN0YXRpYyAocm9vdCwgb3B0aW9ucykge1xuICBpZiAoIXJvb3QpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyb290IHBhdGggcmVxdWlyZWQnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiByb290ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Jvb3QgcGF0aCBtdXN0IGJlIGEgc3RyaW5nJylcbiAgfVxuXG4gIC8vIGNvcHkgb3B0aW9ucyBvYmplY3RcbiAgdmFyIG9wdHMgPSBPYmplY3QuY3JlYXRlKG9wdGlvbnMgfHwgbnVsbClcblxuICAvLyBmYWxsLXRob3VnaFxuICB2YXIgZmFsbHRocm91Z2ggPSBvcHRzLmZhbGx0aHJvdWdoICE9PSBmYWxzZVxuXG4gIC8vIGRlZmF1bHQgcmVkaXJlY3RcbiAgdmFyIHJlZGlyZWN0ID0gb3B0cy5yZWRpcmVjdCAhPT0gZmFsc2VcblxuICAvLyBoZWFkZXJzIGxpc3RlbmVyXG4gIHZhciBzZXRIZWFkZXJzID0gb3B0cy5zZXRIZWFkZXJzXG5cbiAgaWYgKHNldEhlYWRlcnMgJiYgdHlwZW9mIHNldEhlYWRlcnMgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gc2V0SGVhZGVycyBtdXN0IGJlIGZ1bmN0aW9uJylcbiAgfVxuXG4gIC8vIHNldHVwIG9wdGlvbnMgZm9yIHNlbmRcbiAgb3B0cy5tYXhhZ2UgPSBvcHRzLm1heGFnZSB8fCBvcHRzLm1heEFnZSB8fCAwXG4gIG9wdHMucm9vdCA9IHJlc29sdmUocm9vdClcblxuICAvLyBjb25zdHJ1Y3QgZGlyZWN0b3J5IGxpc3RlbmVyXG4gIHZhciBvbkRpcmVjdG9yeSA9IHJlZGlyZWN0XG4gICAgPyBjcmVhdGVSZWRpcmVjdERpcmVjdG9yeUxpc3RlbmVyKClcbiAgICA6IGNyZWF0ZU5vdEZvdW5kRGlyZWN0b3J5TGlzdGVuZXIoKVxuXG4gIHJldHVybiBmdW5jdGlvbiBzZXJ2ZVN0YXRpYyAocmVxLCByZXMsIG5leHQpIHtcbiAgICBpZiAocmVxLm1ldGhvZCAhPT0gJ0dFVCcgJiYgcmVxLm1ldGhvZCAhPT0gJ0hFQUQnKSB7XG4gICAgICBpZiAoZmFsbHRocm91Z2gpIHtcbiAgICAgICAgcmV0dXJuIG5leHQoKVxuICAgICAgfVxuXG4gICAgICAvLyBtZXRob2Qgbm90IGFsbG93ZWRcbiAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA1XG4gICAgICByZXMuc2V0SGVhZGVyKCdBbGxvdycsICdHRVQsIEhFQUQnKVxuICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1MZW5ndGgnLCAnMCcpXG4gICAgICByZXMuZW5kKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBmb3J3YXJkRXJyb3IgPSAhZmFsbHRocm91Z2hcbiAgICB2YXIgb3JpZ2luYWxVcmwgPSBwYXJzZVVybC5vcmlnaW5hbChyZXEpXG4gICAgdmFyIHBhdGggPSBwYXJzZVVybChyZXEpLnBhdGhuYW1lXG5cbiAgICAvLyBtYWtlIHN1cmUgcmVkaXJlY3Qgb2NjdXJzIGF0IG1vdW50XG4gICAgaWYgKHBhdGggPT09ICcvJyAmJiBvcmlnaW5hbFVybC5wYXRobmFtZS5zdWJzdHIoLTEpICE9PSAnLycpIHtcbiAgICAgIHBhdGggPSAnJ1xuICAgIH1cblxuICAgIC8vIGNyZWF0ZSBzZW5kIHN0cmVhbVxuICAgIHZhciBzdHJlYW0gPSBzZW5kKHJlcSwgcGF0aCwgb3B0cylcblxuICAgIC8vIGFkZCBkaXJlY3RvcnkgaGFuZGxlclxuICAgIHN0cmVhbS5vbignZGlyZWN0b3J5Jywgb25EaXJlY3RvcnkpXG5cbiAgICAvLyBhZGQgaGVhZGVycyBsaXN0ZW5lclxuICAgIGlmIChzZXRIZWFkZXJzKSB7XG4gICAgICBzdHJlYW0ub24oJ2hlYWRlcnMnLCBzZXRIZWFkZXJzKVxuICAgIH1cblxuICAgIC8vIGFkZCBmaWxlIGxpc3RlbmVyIGZvciBmYWxsdGhyb3VnaFxuICAgIGlmIChmYWxsdGhyb3VnaCkge1xuICAgICAgc3RyZWFtLm9uKCdmaWxlJywgZnVuY3Rpb24gb25GaWxlICgpIHtcbiAgICAgICAgLy8gb25jZSBmaWxlIGlzIGRldGVybWluZWQsIGFsd2F5cyBmb3J3YXJkIGVycm9yXG4gICAgICAgIGZvcndhcmRFcnJvciA9IHRydWVcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gZm9yd2FyZCBlcnJvcnNcbiAgICBzdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gZXJyb3IgKGVycikge1xuICAgICAgaWYgKGZvcndhcmRFcnJvciB8fCAhKGVyci5zdGF0dXNDb2RlIDwgNTAwKSkge1xuICAgICAgICBuZXh0KGVycilcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIG5leHQoKVxuICAgIH0pXG5cbiAgICAvLyBwaXBlXG4gICAgc3RyZWFtLnBpcGUocmVzKVxuICB9XG59XG5cbi8qKlxuICogQ29sbGFwc2UgYWxsIGxlYWRpbmcgc2xhc2hlcyBpbnRvIGEgc2luZ2xlIHNsYXNoXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjb2xsYXBzZUxlYWRpbmdTbGFzaGVzIChzdHIpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RyLmNoYXJDb2RlQXQoaSkgIT09IDB4MmYgLyogLyAqLykge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaSA+IDFcbiAgICA/ICcvJyArIHN0ci5zdWJzdHIoaSlcbiAgICA6IHN0clxufVxuXG4gLyoqXG4gKiBDcmVhdGUgYSBtaW5pbWFsIEhUTUwgZG9jdW1lbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9keVxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVIdG1sRG9jdW1lbnQgKHRpdGxlLCBib2R5KSB7XG4gIHJldHVybiAnPCFET0NUWVBFIGh0bWw+XFxuJyArXG4gICAgJzxodG1sIGxhbmc9XCJlblwiPlxcbicgK1xuICAgICc8aGVhZD5cXG4nICtcbiAgICAnPG1ldGEgY2hhcnNldD1cInV0Zi04XCI+XFxuJyArXG4gICAgJzx0aXRsZT4nICsgdGl0bGUgKyAnPC90aXRsZT5cXG4nICtcbiAgICAnPC9oZWFkPlxcbicgK1xuICAgICc8Ym9keT5cXG4nICtcbiAgICAnPHByZT4nICsgYm9keSArICc8L3ByZT5cXG4nICtcbiAgICAnPC9ib2R5PlxcbicgK1xuICAgICc8L2h0bWw+XFxuJ1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGRpcmVjdG9yeSBsaXN0ZW5lciB0aGF0IGp1c3QgNDA0cy5cbiAqIEBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY3JlYXRlTm90Rm91bmREaXJlY3RvcnlMaXN0ZW5lciAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBub3RGb3VuZCAoKSB7XG4gICAgdGhpcy5lcnJvcig0MDQpXG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBkaXJlY3RvcnkgbGlzdGVuZXIgdGhhdCBwZXJmb3JtcyBhIHJlZGlyZWN0LlxuICogQHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVSZWRpcmVjdERpcmVjdG9yeUxpc3RlbmVyICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlZGlyZWN0IChyZXMpIHtcbiAgICBpZiAodGhpcy5oYXNUcmFpbGluZ1NsYXNoKCkpIHtcbiAgICAgIHRoaXMuZXJyb3IoNDA0KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gZ2V0IG9yaWdpbmFsIFVSTFxuICAgIHZhciBvcmlnaW5hbFVybCA9IHBhcnNlVXJsLm9yaWdpbmFsKHRoaXMucmVxKVxuXG4gICAgLy8gYXBwZW5kIHRyYWlsaW5nIHNsYXNoXG4gICAgb3JpZ2luYWxVcmwucGF0aCA9IG51bGxcbiAgICBvcmlnaW5hbFVybC5wYXRobmFtZSA9IGNvbGxhcHNlTGVhZGluZ1NsYXNoZXMob3JpZ2luYWxVcmwucGF0aG5hbWUgKyAnLycpXG5cbiAgICAvLyByZWZvcm1hdCB0aGUgVVJMXG4gICAgdmFyIGxvYyA9IGVuY29kZVVybCh1cmwuZm9ybWF0KG9yaWdpbmFsVXJsKSlcbiAgICB2YXIgZG9jID0gY3JlYXRlSHRtbERvY3VtZW50KCdSZWRpcmVjdGluZycsICdSZWRpcmVjdGluZyB0byA8YSBocmVmPVwiJyArIGVzY2FwZUh0bWwobG9jKSArICdcIj4nICtcbiAgICAgIGVzY2FwZUh0bWwobG9jKSArICc8L2E+JylcblxuICAgIC8vIHNlbmQgcmVkaXJlY3QgcmVzcG9uc2VcbiAgICByZXMuc3RhdHVzQ29kZSA9IDMwMVxuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKVxuICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgQnVmZmVyLmJ5dGVMZW5ndGgoZG9jKSlcbiAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVNlY3VyaXR5LVBvbGljeScsIFwiZGVmYXVsdC1zcmMgJ3NlbGYnXCIpXG4gICAgcmVzLnNldEhlYWRlcignWC1Db250ZW50LVR5cGUtT3B0aW9ucycsICdub3NuaWZmJylcbiAgICByZXMuc2V0SGVhZGVyKCdMb2NhdGlvbicsIGxvYylcbiAgICByZXMuZW5kKGRvYylcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3NlcnZlLXN0YXRpYy9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTg0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCAqIGFzIGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5cbmltcG9ydCB7XG4gIERhdGFzb3VyY2UsXG4gIE1ldHJpYyxcbiAgQW5vbWFseSxcbiAgc2F2ZUFub21hbHksXG4gIGluc2VydEFub21hbHksIHJlbW92ZUFub21hbHksIGxvYWRBbm9tYWx5QnlOYW1lLCBsb2FkQW5vbWFseUJ5SWQsIGdldEFub21hbHlJZEJ5TmFtZVxufSBmcm9tICcuLi9zZXJ2aWNlcy9hbm9tYWx5VHlwZSc7XG5pbXBvcnQgeyBydW5MZWFybmluZyB9IGZyb20gJy4uL3NlcnZpY2VzL2FuYWx5dGljcydcbmltcG9ydCB7IHNhdmVUYXJnZXRzIH0gZnJvbSAnLi4vc2VydmljZXMvbWV0cmljcyc7XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbm9tYWx5VHlwZVN0YXR1cyhyZXEsIHJlcykge1xuICBsZXQgaWQgPSByZXEucXVlcnkuaWQ7XG4gIGxldCBuYW1lID0gcmVxLnF1ZXJ5Lm5hbWU7XG4gIHRyeSB7XG4gICAgbGV0IGFub21hbHk6IEFub21hbHk7XG4gICAgaWYoaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYW5vbWFseSA9IGxvYWRBbm9tYWx5QnlJZChpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFub21hbHkgPSBsb2FkQW5vbWFseUJ5TmFtZShuYW1lKTtcbiAgICB9XG4gICAgaWYoYW5vbWFseSA9PT0gbnVsbCkge1xuICAgICAgcmVzLnN0YXR1cyg0MDQpLnNlbmQoe1xuICAgICAgICBjb2RlOiA0MDQsXG4gICAgICAgIG1lc3NhZ2U6ICdOb3QgZm91bmQnXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYoYW5vbWFseS5zdGF0dXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBzdGF0dXMgZm9yICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcmVzLnN0YXR1cygyMDApLnNlbmQoeyBzdGF0dXM6IGFub21hbHkuc3RhdHVzLCBlcnJvck1lc3NhZ2U6IGFub21hbHkuZXJyb3IgfSk7XG4gIH0gY2F0Y2goZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgLy8gVE9ETzogYmV0dGVyIHNlbmQgNDA0IHdoZW4gd2Uga25vdyB0aGFuIGlzbmB0IGZvdW5kXG4gICAgcmVzLnN0YXR1cyg1MDApLnNlbmQoeyBlcnJvcjogJ0NhbmB0IHJldHVybiBhbnl0aGluZycgfSk7XG4gIH1cblxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbm9tYWx5KHJlcSwgcmVzKSB7XG4gIHRyeSB7XG4gICAgbGV0IGlkID0gcmVxLnF1ZXJ5LmlkO1xuICAgIGxldCBuYW1lID0gcmVxLnF1ZXJ5Lm5hbWU7XG5cbiAgICBsZXQgYW5vbWFseTpBbm9tYWx5O1xuICAgIGlmKGlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFub21hbHkgPSBsb2FkQW5vbWFseUJ5SWQoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbm9tYWx5ID0gbG9hZEFub21hbHlCeU5hbWUobmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAgaWYoYW5vbWFseSA9PT0gbnVsbCkge1xuICAgICAgcmVzLnN0YXR1cyg0MDQpLnNlbmQoe1xuICAgICAgICBjb2RlOiA0MDQsXG4gICAgICAgIG1lc3NhZ2U6ICdOb3QgZm91bmQnXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIG5hbWU6IGFub21hbHkubmFtZSxcbiAgICAgIG1ldHJpYzogYW5vbWFseS5tZXRyaWMsXG4gICAgICBzdGF0dXM6IGFub21hbHkuc3RhdHVzXG4gICAgfSk7XG4gICAgcmVzLnN0YXR1cygyMDApLnNlbmQocGF5bG9hZClcbiAgfSBjYXRjaChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAvLyBUT0RPOiBiZXR0ZXIgc2VuZCA0MDQgd2hlbiB3ZSBrbm93IHRoYW4gaXNuYHQgZm91bmRcbiAgICByZXMuc3RhdHVzKDUwMCkuc2VuZCgnQ2FuYHQgZ2V0IGFueXRoaW5nJyk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQW5vbWFseShyZXEsIHJlcykge1xuICB0cnkge1xuICAgIGNvbnN0IG1ldHJpYzpNZXRyaWMgPSB7XG4gICAgICBkYXRhc291cmNlOiByZXEuYm9keS5tZXRyaWMuZGF0YXNvdXJjZSxcbiAgICAgIHRhcmdldHM6IHNhdmVUYXJnZXRzKHJlcS5ib2R5Lm1ldHJpYy50YXJnZXRzKVxuICAgIH07XG5cbiAgICBjb25zdCBhbm9tYWx5OkFub21hbHkgPSB7XG4gICAgICBuYW1lOiByZXEuYm9keS5uYW1lLFxuICAgICAgcGFuZWxVcmw6IHJlcS5ib2R5LnBhbmVsVXJsLFxuICAgICAgbWV0cmljOiBtZXRyaWMsXG4gICAgICBkYXRhc291cmNlOiByZXEuYm9keS5kYXRhc291cmNlLFxuICAgICAgc3RhdHVzOiAnbGVhcm5pbmcnLFxuICAgICAgbGFzdF9wcmVkaWN0aW9uX3RpbWU6IDAsXG4gICAgICBuZXh0X2lkOiAwXG4gICAgfTtcbiAgICBsZXQgYW5vbWFseUlkID0gaW5zZXJ0QW5vbWFseShhbm9tYWx5KTtcbiAgICBpZihhbm9tYWx5SWQgPT09IG51bGwpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDAzKS5zZW5kKHtcbiAgICAgICAgY29kZTogNDAzLFxuICAgICAgICBtZXNzYWdlOiAnQWxyZWFkeSBleGlzdHMnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHsgYW5vbWFseV9pZDogYW5vbWFseUlkIH0pXG4gICAgcmVzLnN0YXR1cygyMDApLnNlbmQocGF5bG9hZCk7XG5cbiAgICBydW5MZWFybmluZyhhbm9tYWx5SWQpO1xuICB9IGNhdGNoKGUpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuc2VuZCh7XG4gICAgICBjb2RlOiA1MDAsXG4gICAgICBtZXNzYWdlOiAnSW50ZXJuYWwgZXJyb3InXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVsZXRlQW5vbWFseShyZXEsIHJlcykge1xuICB0cnkge1xuICAgIGxldCBpZCA9IHJlcS5xdWVyeS5pZDtcbiAgICBsZXQgbmFtZSA9IHJlcS5xdWVyeS5uYW1lO1xuXG4gICAgaWYoaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVtb3ZlQW5vbWFseShpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbW92ZUFub21hbHkobmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAgXG4gICAgcmVzLnN0YXR1cygyMDApLnNlbmQoe1xuICAgICAgY29kZTogMjAwLFxuICAgICAgbWVzc2FnZTogJ1N1Y2Nlc3MnXG4gICAgfSk7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHtcbiAgICAgIGNvZGU6IDUwMCxcbiAgICAgIG1lc3NhZ2U6ICdJbnRlcm5hbCBlcnJvcidcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcblxucm91dGVyLmdldCgnL3N0YXR1cycsIHNlbmRBbm9tYWx5VHlwZVN0YXR1cyk7XG5yb3V0ZXIuZ2V0KCcvJywgZ2V0QW5vbWFseSk7XG5yb3V0ZXIucG9zdCgnLycsIGNyZWF0ZUFub21hbHkpO1xucm91dGVyLmRlbGV0ZSgnLycsIGRlbGV0ZUFub21hbHkpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcm91dGVzL2Fub21hbGllcy50cyIsInZhciBjb3JlID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpO1xudmFyICRKU09OID0gY29yZS5KU09OIHx8IChjb3JlLkpTT04gPSB7IHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnkgfSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHJldHVybiAkSlNPTi5zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3VtZW50cyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9qc29uL3N0cmluZ2lmeS5qc1xuLy8gbW9kdWxlIGlkID0gMTg2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuLy8gVGhpcyBtZXRob2Qgb2Ygb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0IG5lZWRzIHRvIGJlXG4vLyBrZXB0IGlkZW50aWNhbCB0byB0aGUgd2F5IGl0IGlzIG9idGFpbmVkIGluIHJ1bnRpbWUuanNcbnZhciBnID0gKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcyB9KSgpIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcblxuLy8gVXNlIGBnZXRPd25Qcm9wZXJ0eU5hbWVzYCBiZWNhdXNlIG5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCBjYWxsaW5nXG4vLyBgaGFzT3duUHJvcGVydHlgIG9uIHRoZSBnbG9iYWwgYHNlbGZgIG9iamVjdCBpbiBhIHdvcmtlci4gU2VlICMxODMuXG52YXIgaGFkUnVudGltZSA9IGcucmVnZW5lcmF0b3JSdW50aW1lICYmXG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGcpLmluZGV4T2YoXCJyZWdlbmVyYXRvclJ1bnRpbWVcIikgPj0gMDtcblxuLy8gU2F2ZSB0aGUgb2xkIHJlZ2VuZXJhdG9yUnVudGltZSBpbiBjYXNlIGl0IG5lZWRzIHRvIGJlIHJlc3RvcmVkIGxhdGVyLlxudmFyIG9sZFJ1bnRpbWUgPSBoYWRSdW50aW1lICYmIGcucmVnZW5lcmF0b3JSdW50aW1lO1xuXG4vLyBGb3JjZSByZWV2YWx1dGF0aW9uIG9mIHJ1bnRpbWUuanMuXG5nLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9ydW50aW1lXCIpO1xuXG5pZiAoaGFkUnVudGltZSkge1xuICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBydW50aW1lLlxuICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IG9sZFJ1bnRpbWU7XG59IGVsc2Uge1xuICAvLyBSZW1vdmUgdGhlIGdsb2JhbCBwcm9wZXJ0eSBhZGRlZCBieSBydW50aW1lLmpzLlxuICB0cnkge1xuICAgIGRlbGV0ZSBnLnJlZ2VuZXJhdG9yUnVudGltZTtcbiAgfSBjYXRjaChlKSB7XG4gICAgZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSB1bmRlZmluZWQ7XG4gIH1cbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUtbW9kdWxlLmpzXG4vLyBtb2R1bGUgaWQgPSAxODdcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4hKGZ1bmN0aW9uKGdsb2JhbCkge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCI7XG4gIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTtcbiAgaWYgKHJ1bnRpbWUpIHtcbiAgICBpZiAoaW5Nb2R1bGUpIHtcbiAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSxcbiAgICAgIC8vIG1ha2UgdGhlIGV4cG9ydHMgb2JqZWN0IGlkZW50aWNhbCB0byByZWdlbmVyYXRvclJ1bnRpbWUuXG4gICAgICBtb2R1bGUuZXhwb3J0cyA9IHJ1bnRpbWU7XG4gICAgfVxuICAgIC8vIERvbid0IGJvdGhlciBldmFsdWF0aW5nIHRoZSByZXN0IG9mIHRoaXMgZmlsZSBpZiB0aGUgcnVudGltZSB3YXNcbiAgICAvLyBhbHJlYWR5IGRlZmluZWQgZ2xvYmFsbHkuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRGVmaW5lIHRoZSBydW50aW1lIGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyXG4gIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cbiAgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUgPSBpbk1vZHVsZSA/IG1vZHVsZS5leHBvcnRzIDoge307XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgcnVudGltZS53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgSXRlcmF0b3JQcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgdmFyIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSkge1xuICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cblxuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbjtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVbdG9TdHJpbmdUYWdTeW1ib2xdID1cbiAgICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBwcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIGN0b3JcbiAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuICBydW50aW1lLm1hcmsgPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICAgIGlmICghKHRvU3RyaW5nVGFnU3ltYm9sIGluIGdlbkZ1bikpIHtcbiAgICAgICAgZ2VuRnVuW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgcnVudGltZS5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uIElmIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLCBob3dldmVyLCB0aGVcbiAgICAgICAgICAvLyByZXN1bHQgZm9yIHRoaXMgaXRlcmF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZVxuICAgICAgICAgIC8vIHJlYXNvbi4gTm90ZSB0aGF0IHJlamVjdGlvbnMgb2YgeWllbGRlZCBQcm9taXNlcyBhcmUgbm90XG4gICAgICAgICAgLy8gdGhyb3duIGJhY2sgaW50byB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhcyBpcyB0aGUgY2FzZVxuICAgICAgICAgIC8vIHdoZW4gYW4gYXdhaXRlZCBQcm9taXNlIGlzIHJlamVjdGVkLiBUaGlzIGRpZmZlcmVuY2UgaW5cbiAgICAgICAgICAvLyBiZWhhdmlvciBiZXR3ZWVuIHlpZWxkIGFuZCBhd2FpdCBpcyBpbXBvcnRhbnQsIGJlY2F1c2UgaXRcbiAgICAgICAgICAvLyBhbGxvd3MgdGhlIGNvbnN1bWVyIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIHlpZWxkZWRcbiAgICAgICAgICAvLyByZWplY3Rpb24gKHN3YWxsb3cgaXQgYW5kIGNvbnRpbnVlLCBtYW51YWxseSAudGhyb3cgaXQgYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGdlbmVyYXRvciwgYWJhbmRvbiBpdGVyYXRpb24sIHdoYXRldmVyKS4gV2l0aFxuICAgICAgICAgIC8vIGF3YWl0LCBieSBjb250cmFzdCwgdGhlcmUgaXMgbm8gb3Bwb3J0dW5pdHkgdG8gZXhhbWluZSB0aGVcbiAgICAgICAgICAvLyByZWplY3Rpb24gcmVhc29uIG91dHNpZGUgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgc28gdGhlXG4gICAgICAgICAgLy8gb25seSBvcHRpb24gaXMgdG8gdGhyb3cgaXQgZnJvbSB0aGUgYXdhaXQgZXhwcmVzc2lvbiwgYW5kXG4gICAgICAgICAgLy8gbGV0IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gaGFuZGxlIHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBydW50aW1lLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBydW50aW1lLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdClcbiAgICApO1xuXG4gICAgcmV0dXJuIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbihvdXRlckZuKVxuICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci5cbiAgICAgIDogaXRlci5uZXh0KCkudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRvbmUgPyByZXN1bHQudmFsdWUgOiBpdGVyLm5leHQoKTtcbiAgICAgICAgfSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7XG4gICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcblxuICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHtcbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVFeGVjdXRpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZ1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUNvbXBsZXRlZCkge1xuICAgICAgICBpZiAobWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICB0aHJvdyBhcmc7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCZSBmb3JnaXZpbmcsIHBlciAyNS4zLjMuMy4zIG9mIHRoZSBzcGVjOlxuICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgIHJldHVybiBkb25lUmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG5cbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgIGlmIChkZWxlZ2F0ZSkge1xuICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgLy8gU2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7XG5cbiAgICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIpIHtcbiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09XG4gICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgIHN0YXRlID0gY29udGV4dC5kb25lXG4gICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkXG4gICAgICAgICAgICA6IEdlblN0YXRlU3VzcGVuZGVkWWllbGQ7XG5cbiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgfTtcblxuICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBleGNlcHRpb24gYnkgbG9vcGluZyBiYWNrIGFyb3VuZCB0byB0aGVcbiAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGVcbiAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAvLyBkZWxlZ2F0ZSBpdGVyYXRvciwgb3IgYnkgbW9kaWZ5aW5nIGNvbnRleHQubWV0aG9kIGFuZCBjb250ZXh0LmFyZyxcbiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuXG4gIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdO1xuICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gQSAudGhyb3cgb3IgLnJldHVybiB3aGVuIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgbm8gLnRocm93XG4gICAgICAvLyBtZXRob2QgYWx3YXlzIHRlcm1pbmF0ZXMgdGhlIHlpZWxkKiBsb29wLlxuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIGlmIChkZWxlZ2F0ZS5pdGVyYXRvci5yZXR1cm4pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBHcFt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvclwiO1xuXG4gIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlXG4gIC8vIEBAaXRlcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkIG9uIGl0LiBTb21lIGJyb3dzZXJzJyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlXG4gIC8vIGl0ZXJhdG9yIHByb3RvdHlwZSBjaGFpbiBpbmNvcnJlY3RseSBpbXBsZW1lbnQgdGhpcywgY2F1c2luZyB0aGUgR2VuZXJhdG9yXG4gIC8vIG9iamVjdCB0byBub3QgYmUgcmV0dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLlxuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL2lzc3Vlcy8yNzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgR3AudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfTtcblxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgIHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07XG5cbiAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgfVxuXG4gICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgfVxuXG4gICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIjtcbiAgICBkZWxldGUgcmVjb3JkLmFyZztcbiAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG5cbiAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cbiAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG4gICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG4gICAgdGhpcy5yZXNldCh0cnVlKTtcbiAgfVxuXG4gIHJ1bnRpbWUua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBydW50aW1lLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xufSkoXG4gIC8vIEluIHNsb3BweSBtb2RlLCB1bmJvdW5kIGB0aGlzYCByZWZlcnMgdG8gdGhlIGdsb2JhbCBvYmplY3QsIGZhbGxiYWNrIHRvXG4gIC8vIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIGlmIHdlJ3JlIGluIGdsb2JhbCBzdHJpY3QgbW9kZS4gVGhhdCBpcyBzYWRseSBhIGZvcm1cbiAgLy8gb2YgaW5kaXJlY3QgZXZhbCB3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeS5cbiAgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcyB9KSgpIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKVxuKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanNcbi8vIG1vZHVsZSBpZCA9IDE4OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJyZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5wcm9taXNlLnRyeScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL19jb3JlJykuUHJvbWlzZTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vcHJvbWlzZS5qc1xuLy8gbW9kdWxlIGlkID0gMTg5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qc1xuLy8gbW9kdWxlIGlkID0gMTkwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzXG4vLyBtb2R1bGUgaWQgPSAxOTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanNcbi8vIG1vZHVsZSBpZCA9IDE5MlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanNcbi8vIG1vZHVsZSBpZCA9IDE5M1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlc2NyaXB0b3IgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19oaWRlJykoSXRlcmF0b3JQcm90b3R5cGUsIHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpLCBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHtcbiAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanNcbi8vIG1vZHVsZSBpZCA9IDE5NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcHMuanNcbi8vIG1vZHVsZSBpZCA9IDE5NVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qc1xuLy8gbW9kdWxlIGlkID0gMTk2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qc1xuLy8gbW9kdWxlIGlkID0gMTk3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qc1xuLy8gbW9kdWxlIGlkID0gMTk4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG1heChpbmRleCArIGxlbmd0aCwgMCkgOiBtaW4oaW5kZXgsIGxlbmd0aCk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMTk5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ3BvLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDIwMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYWRkLXRvLXVuc2NvcGFibGVzLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgZm9yT2YgPSByZXF1aXJlKCcuL19mb3Itb2YnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgdGFzayA9IHJlcXVpcmUoJy4vX3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4vX3VzZXItYWdlbnQnKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4vX3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnM7XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52OCB8fCAnJztcbnZhciAkUHJvbWlzZSA9IGdsb2JhbFtQUk9NSVNFXTtcbnZhciBpc05vZGUgPSBjbGFzc29mKHByb2Nlc3MpID09ICdwcm9jZXNzJztcbnZhciBlbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBJbnRlcm5hbCwgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5LCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgV3JhcHBlcjtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG5cbnZhciBVU0VfTkFUSVZFID0gISFmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLy8gY29ycmVjdCBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSAkUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IChwcm9taXNlLmNvbnN0cnVjdG9yID0ge30pW3JlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyldID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICAgIGV4ZWMoZW1wdHksIGVtcHR5KTtcbiAgICB9O1xuICAgIC8vIHVuaGFuZGxlZCByZWplY3Rpb25zIHRyYWNraW5nIHN1cHBvcnQsIE5vZGVKUyBQcm9taXNlIHdpdGhvdXQgaXQgZmFpbHMgQEBzcGVjaWVzIHRlc3RcbiAgICByZXR1cm4gKGlzTm9kZSB8fCB0eXBlb2YgUHJvbWlzZVJlamVjdGlvbkV2ZW50ID09ICdmdW5jdGlvbicpXG4gICAgICAmJiBwcm9taXNlLnRoZW4oZW1wdHkpIGluc3RhbmNlb2YgRmFrZVByb21pc2VcbiAgICAgIC8vIHY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAgICAgLy8gd2UgY2FuJ3QgZGV0ZWN0IGl0IHN5bmNocm9ub3VzbHksIHNvIGp1c3QgY2hlY2sgdmVyc2lvbnNcbiAgICAgICYmIHY4LmluZGV4T2YoJzYuNicpICE9PSAwXG4gICAgICAmJiB1c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lLzY2JykgPT09IC0xO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHByb21pc2UsIGlzUmVqZWN0KSB7XG4gIGlmIChwcm9taXNlLl9uKSByZXR1cm47XG4gIHByb21pc2UuX24gPSB0cnVlO1xuICB2YXIgY2hhaW4gPSBwcm9taXNlLl9jO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIG9rID0gcHJvbWlzZS5fcyA9PSAxO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgcnVuID0gZnVuY3Rpb24gKHJlYWN0aW9uKSB7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICAgICAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICAgICAgdmFyIHJlamVjdCA9IHJlYWN0aW9uLnJlamVjdDtcbiAgICAgIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gICAgICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgIGlmICghb2spIHtcbiAgICAgICAgICAgIGlmIChwcm9taXNlLl9oID09IDIpIG9uSGFuZGxlVW5oYW5kbGVkKHByb21pc2UpO1xuICAgICAgICAgICAgcHJvbWlzZS5faCA9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkb21haW4pIGRvbWFpbi5lbnRlcigpO1xuICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIG1heSB0aHJvd1xuICAgICAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgICBkb21haW4uZXhpdCgpO1xuICAgICAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICAgICAgdGhlbi5jYWxsKHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoID4gaSkgcnVuKGNoYWluW2krK10pOyAvLyB2YXJpYWJsZSBsZW5ndGggLSBjYW4ndCB1c2UgZm9yRWFjaFxuICAgIHByb21pc2UuX2MgPSBbXTtcbiAgICBwcm9taXNlLl9uID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFwcm9taXNlLl9oKSBvblVuaGFuZGxlZChwcm9taXNlKTtcbiAgfSk7XG59O1xudmFyIG9uVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3Y7XG4gICAgdmFyIHVuaGFuZGxlZCA9IGlzVW5oYW5kbGVkKHByb21pc2UpO1xuICAgIHZhciByZXN1bHQsIGhhbmRsZXIsIGNvbnNvbGU7XG4gICAgaWYgKHVuaGFuZGxlZCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChpc05vZGUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKSB7XG4gICAgICAgICAgaGFuZGxlcih7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogdmFsdWUgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZSkgJiYgY29uc29sZS5lcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgcHJvbWlzZS5faCA9IGlzTm9kZSB8fCBpc1VuaGFuZGxlZChwcm9taXNlKSA/IDIgOiAxO1xuICAgIH0gcHJvbWlzZS5fYSA9IHVuZGVmaW5lZDtcbiAgICBpZiAodW5oYW5kbGVkICYmIHJlc3VsdC5lKSB0aHJvdyByZXN1bHQudjtcbiAgfSk7XG59O1xudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgcmV0dXJuIHByb21pc2UuX2ggIT09IDEgJiYgKHByb21pc2UuX2EgfHwgcHJvbWlzZS5fYykubGVuZ3RoID09PSAwO1xufTtcbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaGFuZGxlcjtcbiAgICBpZiAoaXNOb2RlKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub25yZWplY3Rpb25oYW5kbGVkKSB7XG4gICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiBwcm9taXNlLl92IH0pO1xuICAgIH1cbiAgfSk7XG59O1xudmFyICRyZWplY3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgdmFyIHByb21pc2UgPSB0aGlzO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHByb21pc2UuX3YgPSB2YWx1ZTtcbiAgcHJvbWlzZS5fcyA9IDI7XG4gIGlmICghcHJvbWlzZS5fYSkgcHJvbWlzZS5fYSA9IHByb21pc2UuX2Muc2xpY2UoKTtcbiAgbm90aWZ5KHByb21pc2UsIHRydWUpO1xufTtcbnZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIHZhciB0aGVuO1xuICBpZiAocHJvbWlzZS5fZCkgcmV0dXJuO1xuICBwcm9taXNlLl9kID0gdHJ1ZTtcbiAgcHJvbWlzZSA9IHByb21pc2UuX3cgfHwgcHJvbWlzZTsgLy8gdW53cmFwXG4gIHRyeSB7XG4gICAgaWYgKHByb21pc2UgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICBpZiAodGhlbiA9IGlzVGhlbmFibGUodmFsdWUpKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9OyAvLyB3cmFwXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhlbi5jYWxsKHZhbHVlLCBjdHgoJHJlc29sdmUsIHdyYXBwZXIsIDEpLCBjdHgoJHJlamVjdCwgd3JhcHBlciwgMSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICAgICAgcHJvbWlzZS5fcyA9IDE7XG4gICAgICBub3RpZnkocHJvbWlzZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgICRyZWplY3QuY2FsbCh7IF93OiBwcm9taXNlLCBfZDogZmFsc2UgfSwgZSk7IC8vIHdyYXBcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmICghVVNFX05BVElWRSkge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICAkUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsICRQcm9taXNlLCBQUk9NSVNFLCAnX2gnKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGN0eCgkcmVzb2x2ZSwgdGhpcywgMSksIGN0eCgkcmVqZWN0LCB0aGlzLCAxKSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAkcmVqZWN0LmNhbGwodGhpcywgZXJyKTtcbiAgICB9XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICB0aGlzLl9jID0gW107ICAgICAgICAgICAgIC8vIDwtIGF3YWl0aW5nIHJlYWN0aW9uc1xuICAgIHRoaXMuX2EgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gY2hlY2tlZCBpbiBpc1VuaGFuZGxlZCByZWFjdGlvbnNcbiAgICB0aGlzLl9zID0gMDsgICAgICAgICAgICAgIC8vIDwtIHN0YXRlXG4gICAgdGhpcy5fZCA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBkb25lXG4gICAgdGhpcy5fdiA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSB2YWx1ZVxuICAgIHRoaXMuX2ggPSAwOyAgICAgICAgICAgICAgLy8gPC0gcmVqZWN0aW9uIHN0YXRlLCAwIC0gZGVmYXVsdCwgMSAtIGhhbmRsZWQsIDIgLSB1bmhhbmRsZWRcbiAgICB0aGlzLl9uID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIG5vdGlmeVxuICB9O1xuICBJbnRlcm5hbC5wcm90b3R5cGUgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKSgkUHJvbWlzZS5wcm90b3R5cGUsIHtcbiAgICAvLyAyNS40LjUuMyBQcm9taXNlLnByb3RvdHlwZS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkUHJvbWlzZSkpO1xuICAgICAgcmVhY3Rpb24ub2sgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBpc05vZGUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2MucHVzaChyZWFjdGlvbik7XG4gICAgICBpZiAodGhpcy5fYSkgdGhpcy5fYS5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9zKSBub3RpZnkodGhpcywgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyAyNS40LjUuMSBQcm9taXNlLnByb3RvdHlwZS5jYXRjaChvblJlamVjdGVkKVxuICAgICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGN0eCgkcmVzb2x2ZSwgcHJvbWlzZSwgMSk7XG4gICAgdGhpcy5yZWplY3QgPSBjdHgoJHJlamVjdCwgcHJvbWlzZSwgMSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09ICRQcm9taXNlIHx8IEMgPT09IFdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBQcm9taXNlOiAkUHJvbWlzZSB9KTtcbnJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJykoJFByb21pc2UsIFBST01JU0UpO1xucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShQUk9NSVNFKTtcbldyYXBwZXIgPSByZXF1aXJlKCcuL19jb3JlJylbUFJPTUlTRV07XG5cbi8vIHN0YXRpY3NcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3QocilcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkodGhpcyk7XG4gICAgdmFyICQkcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgJCRyZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChMSUJSQVJZIHx8ICFVU0VfTkFUSVZFKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKExJQlJBUlkgJiYgdGhpcyA9PT0gV3JhcHBlciA/ICRQcm9taXNlIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKFVTRV9OQVRJVkUgJiYgcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikge1xuICAkUHJvbWlzZS5hbGwoaXRlcilbJ2NhdGNoJ10oZW1wdHkpO1xufSkpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC4xIFByb21pc2UuYWxsKGl0ZXJhYmxlKVxuICBhbGw6IGZ1bmN0aW9uIGFsbChpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciAkaW5kZXggPSBpbmRleCsrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICB2YWx1ZXMucHVzaCh1bmRlZmluZWQpO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgQy5yZXNvbHZlKHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbJGluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyAyNS40LjQuNCBQcm9taXNlLnJhY2UoaXRlcmFibGUpXG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmUpIHJlamVjdChyZXN1bHQudik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnByb21pc2UuanNcbi8vIG1vZHVsZSBpZCA9IDIwM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jYWxsLmpzXG4vLyBtb2R1bGUgaWQgPSAyMDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b1tJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanNcbi8vIG1vZHVsZSBpZCA9IDIwNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBmYXN0IGFwcGx5LCBodHRwOi8vanNwZXJmLmxua2l0LmNvbS9mYXN0LWFwcGx5LzVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCBhcmdzLCB0aGF0KSB7XG4gIHZhciB1biA9IHRoYXQgPT09IHVuZGVmaW5lZDtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIHVuID8gZm4oKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0KTtcbiAgICBjYXNlIDE6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICBjYXNlIDQ6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIGFyZ3NbM10pO1xuICB9IHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmdzKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2ludm9rZS5qc1xuLy8gbW9kdWxlIGlkID0gMjA2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuL190YXNrJykuc2V0O1xudmFyIE9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbnZhciBpc05vZGUgPSByZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50LCBmbjtcbiAgICBpZiAoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gTm9kZS5qc1xuICBpZiAoaXNOb2RlKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIFNhZmFyaSAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgfSBlbHNlIGlmIChPYnNlcnZlciAmJiAhKGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci5zdGFuZGFsb25lKSkge1xuICAgIHZhciB0b2dnbGUgPSB0cnVlO1xuICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBPYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgLy8gUHJvbWlzZS5yZXNvbHZlIHdpdGhvdXQgYW4gYXJndW1lbnQgdGhyb3dzIGFuIGVycm9yIGluIExHIFdlYk9TIDJcbiAgICB2YXIgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5jYWxsKGdsb2JhbClcbiAgICAgIG1hY3JvdGFzay5jYWxsKGdsb2JhbCwgZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gICAgaWYgKGxhc3QpIGxhc3QubmV4dCA9IHRhc2s7XG4gICAgaWYgKCFoZWFkKSB7XG4gICAgICBoZWFkID0gdGFzaztcbiAgICAgIG5vdGlmeSgpO1xuICAgIH0gbGFzdCA9IHRhc2s7XG4gIH07XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19taWNyb3Rhc2suanNcbi8vIG1vZHVsZSBpZCA9IDIwN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsLm5hdmlnYXRvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCB8fCAnJztcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdXNlci1hZ2VudC5qc1xuLy8gbW9kdWxlIGlkID0gMjA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzXG4vLyBtb2R1bGUgaWQgPSAyMDlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtcHJvbWlzZS1maW5hbGx5XG4ndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnUHJvbWlzZScsIHsgJ2ZpbmFsbHknOiBmdW5jdGlvbiAob25GaW5hbGx5KSB7XG4gIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGNvcmUuUHJvbWlzZSB8fCBnbG9iYWwuUHJvbWlzZSk7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIG9uRmluYWxseSA9PSAnZnVuY3Rpb24nO1xuICByZXR1cm4gdGhpcy50aGVuKFxuICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHg7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHksXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyB0aHJvdyBlOyB9KTtcbiAgICB9IDogb25GaW5hbGx5XG4gICk7XG59IH0pO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5wcm9taXNlLmZpbmFsbHkuanNcbi8vIG1vZHVsZSBpZCA9IDIxMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLXRyeVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1Byb21pc2UnLCB7ICd0cnknOiBmdW5jdGlvbiAoY2FsbGJhY2tmbikge1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gcGVyZm9ybShjYWxsYmFja2ZuKTtcbiAgKHJlc3VsdC5lID8gcHJvbWlzZUNhcGFiaWxpdHkucmVqZWN0IDogcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSkocmVzdWx0LnYpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn0gfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnByb21pc2UudHJ5LmpzXG4vLyBtb2R1bGUgaWQgPSAyMTFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY2hpbGRfcHJvY2Vzc1wiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCBcImNoaWxkX3Byb2Nlc3NcIlxuLy8gbW9kdWxlIGlkID0gMjEyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3InKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vZ2V0LWl0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAyMTNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0ID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpdGVyRm4gPSBnZXQoaXQpO1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgcmV0dXJuIGFuT2JqZWN0KGl0ZXJGbi5jYWxsKGl0KSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAyMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy9maWx0ZXIgd2lsbCByZWVtaXQgdGhlIGRhdGEgaWYgY2IoZXJyLHBhc3MpIHBhc3MgaXMgdHJ1dGh5XG5cbi8vIHJlZHVjZSBpcyBtb3JlIHRyaWNreVxuLy8gbWF5YmUgd2Ugd2FudCB0byBncm91cCB0aGUgcmVkdWN0aW9ucyBvciBlbWl0IHByb2dyZXNzIHVwZGF0ZXMgb2NjYXNpb25hbGx5XG4vLyB0aGUgbW9zdCBiYXNpYyByZWR1Y2UganVzdCBlbWl0cyBvbmUgJ2RhdGEnIGV2ZW50IGFmdGVyIGl0IGhhcyByZWNpZXZlZCAnZW5kJ1xuXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJykuU3RyZWFtXG4gICwgZXMgPSBleHBvcnRzXG4gICwgdGhyb3VnaCA9IHJlcXVpcmUoJ3Rocm91Z2gnKVxuICAsIGZyb20gPSByZXF1aXJlKCdmcm9tJylcbiAgLCBkdXBsZXggPSByZXF1aXJlKCdkdXBsZXhlcicpXG4gICwgbWFwID0gcmVxdWlyZSgnbWFwLXN0cmVhbScpXG4gICwgcGF1c2UgPSByZXF1aXJlKCdwYXVzZS1zdHJlYW0nKVxuICAsIHNwbGl0ID0gcmVxdWlyZSgnc3BsaXQnKVxuICAsIHBpcGVsaW5lID0gcmVxdWlyZSgnc3RyZWFtLWNvbWJpbmVyJylcbiAgLCBpbW1lZGlhdGVseSA9IGdsb2JhbC5zZXRJbW1lZGlhdGUgfHwgcHJvY2Vzcy5uZXh0VGljaztcblxuZXMuU3RyZWFtID0gU3RyZWFtIC8vcmUtZXhwb3J0IFN0cmVhbSBmcm9tIGNvcmVcbmVzLnRocm91Z2ggPSB0aHJvdWdoXG5lcy5mcm9tID0gZnJvbVxuZXMuZHVwbGV4ID0gZHVwbGV4XG5lcy5tYXAgPSBtYXBcbmVzLnBhdXNlID0gcGF1c2VcbmVzLnNwbGl0ID0gc3BsaXRcbmVzLnBpcGVsaW5lID0gZXMuY29ubmVjdCA9IGVzLnBpcGUgPSBwaXBlbGluZVxuLy8gbWVyZ2UgLyBjb25jYXRcbi8vXG4vLyBjb21iaW5lIG11bHRpcGxlIHN0cmVhbXMgaW50byBhIHNpbmdsZSBzdHJlYW0uXG4vLyB3aWxsIGVtaXQgZW5kIG9ubHkgb25jZVxuXG5lcy5jb25jYXQgPSAvL2FjdHVhbGx5IHRoaXMgc2hvdWxkIGJlIGNhbGxlZCBjb25jYXRcbmVzLm1lcmdlID0gZnVuY3Rpb24gKC8qc3RyZWFtcy4uLiovKSB7XG4gIHZhciB0b01lcmdlID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpXG4gIGlmICh0b01lcmdlLmxlbmd0aCA9PT0gMSAmJiAodG9NZXJnZVswXSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgIHRvTWVyZ2UgPSB0b01lcmdlWzBdIC8vaGFuZGxlIGFycmF5IGFzIGFyZ3VtZW50cyBvYmplY3RcbiAgfVxuICB2YXIgc3RyZWFtID0gbmV3IFN0cmVhbSgpXG4gIHN0cmVhbS5zZXRNYXhMaXN0ZW5lcnMoMCkgLy8gYWxsb3cgYWRkaW5nIG1vcmUgdGhhbiAxMSBzdHJlYW1zXG4gIHZhciBlbmRDb3VudCA9IDBcbiAgc3RyZWFtLndyaXRhYmxlID0gc3RyZWFtLnJlYWRhYmxlID0gdHJ1ZVxuXG4gIGlmICh0b01lcmdlLmxlbmd0aCkge1xuICAgIHRvTWVyZ2UuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xuICAgICAgZS5waXBlKHN0cmVhbSwge2VuZDogZmFsc2V9KVxuICAgICAgdmFyIGVuZGVkID0gZmFsc2VcbiAgICAgIGUub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYoZW5kZWQpIHJldHVyblxuICAgICAgICBlbmRlZCA9IHRydWVcbiAgICAgICAgZW5kQ291bnQgKytcbiAgICAgICAgaWYoZW5kQ291bnQgPT0gdG9NZXJnZS5sZW5ndGgpXG4gICAgICAgICAgc3RyZWFtLmVtaXQoJ2VuZCcpXG4gICAgICB9KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZW5kJylcbiAgICB9KVxuICB9XG4gIFxuICBzdHJlYW0ud3JpdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuZW1pdCgnZGF0YScsIGRhdGEpXG4gIH1cbiAgc3RyZWFtLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgdG9NZXJnZS5mb3JFYWNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZihlLmRlc3Ryb3kpIGUuZGVzdHJveSgpXG4gICAgfSlcbiAgfVxuICByZXR1cm4gc3RyZWFtXG59XG5cblxuLy8gd3JpdGFibGUgc3RyZWFtLCBjb2xsZWN0cyBhbGwgZXZlbnRzIGludG8gYW4gYXJyYXlcbi8vIGFuZCBjYWxscyBiYWNrIHdoZW4gJ2VuZCcgb2NjdXJzXG4vLyBtYWlubHkgSSdtIHVzaW5nIHRoaXMgdG8gdGVzdCB0aGUgb3RoZXIgZnVuY3Rpb25zXG5cbmVzLndyaXRlQXJyYXkgPSBmdW5jdGlvbiAoZG9uZSkge1xuICBpZiAoJ2Z1bmN0aW9uJyAhPT0gdHlwZW9mIGRvbmUpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdmdW5jdGlvbiB3cml0ZUFycmF5IChkb25lKTogZG9uZSBtdXN0IGJlIGZ1bmN0aW9uJylcblxuICB2YXIgYSA9IG5ldyBTdHJlYW0gKClcbiAgICAsIGFycmF5ID0gW10sIGlzRG9uZSA9IGZhbHNlXG4gIGEud3JpdGUgPSBmdW5jdGlvbiAobCkge1xuICAgIGFycmF5LnB1c2gobClcbiAgfVxuICBhLmVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBpc0RvbmUgPSB0cnVlXG4gICAgZG9uZShudWxsLCBhcnJheSlcbiAgfVxuICBhLndyaXRhYmxlID0gdHJ1ZVxuICBhLnJlYWRhYmxlID0gZmFsc2VcbiAgYS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGEud3JpdGFibGUgPSBhLnJlYWRhYmxlID0gZmFsc2VcbiAgICBpZihpc0RvbmUpIHJldHVyblxuICAgIGRvbmUobmV3IEVycm9yKCdkZXN0cm95ZWQgYmVmb3JlIGVuZCcpLCBhcnJheSlcbiAgfVxuICByZXR1cm4gYVxufVxuXG4vL3JldHVybiBhIFN0cmVhbSB0aGF0IHJlYWRzIHRoZSBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdFxuLy9yZXNwZWN0aW5nIHBhdXNlKCkgYW5kIHJlc3VtZSgpXG5cbmVzLnJlYWRBcnJheSA9IGZ1bmN0aW9uIChhcnJheSkge1xuICB2YXIgc3RyZWFtID0gbmV3IFN0cmVhbSgpXG4gICAgLCBpID0gMFxuICAgICwgcGF1c2VkID0gZmFsc2VcbiAgICAsIGVuZGVkID0gZmFsc2VcblxuICBzdHJlYW0ucmVhZGFibGUgPSB0cnVlXG4gIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlXG5cbiAgaWYoIUFycmF5LmlzQXJyYXkoYXJyYXkpKVxuICAgIHRocm93IG5ldyBFcnJvcignZXZlbnQtc3RyZWFtLnJlYWQgZXhwZWN0cyBhbiBhcnJheScpXG5cbiAgc3RyZWFtLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZihlbmRlZCkgcmV0dXJuXG4gICAgcGF1c2VkID0gZmFsc2VcbiAgICB2YXIgbCA9IGFycmF5Lmxlbmd0aFxuICAgIHdoaWxlKGkgPCBsICYmICFwYXVzZWQgJiYgIWVuZGVkKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGFycmF5W2krK10pXG4gICAgfVxuICAgIGlmKGkgPT0gbCAmJiAhZW5kZWQpXG4gICAgICBlbmRlZCA9IHRydWUsIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlLCBzdHJlYW0uZW1pdCgnZW5kJylcbiAgfVxuICBwcm9jZXNzLm5leHRUaWNrKHN0cmVhbS5yZXN1bWUpXG4gIHN0cmVhbS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgcGF1c2VkID0gdHJ1ZVxuICB9XG4gIHN0cmVhbS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGVuZGVkID0gdHJ1ZVxuICAgIHN0cmVhbS5lbWl0KCdjbG9zZScpXG4gIH1cbiAgcmV0dXJuIHN0cmVhbVxufVxuXG4vL1xuLy8gcmVhZGFibGUgKGFzeW5jRnVuY3Rpb24pXG4vLyByZXR1cm4gYSBzdHJlYW0gdGhhdCBjYWxscyBhbiBhc3luYyBmdW5jdGlvbiB3aGlsZSB0aGUgc3RyZWFtIGlzIG5vdCBwYXVzZWQuXG4vL1xuLy8gdGhlIGZ1bmN0aW9uIG11c3QgdGFrZTogKGNvdW50LCBjYWxsYmFjaykgey4uLlxuLy9cblxuZXMucmVhZGFibGUgPVxuZnVuY3Rpb24gKGZ1bmMsIGNvbnRpbnVlT25FcnJvcikge1xuICB2YXIgc3RyZWFtID0gbmV3IFN0cmVhbSgpXG4gICAgLCBpID0gMFxuICAgICwgcGF1c2VkID0gZmFsc2VcbiAgICAsIGVuZGVkID0gZmFsc2VcbiAgICAsIHJlYWRpbmcgPSBmYWxzZVxuXG4gIHN0cmVhbS5yZWFkYWJsZSA9IHRydWVcbiAgc3RyZWFtLndyaXRhYmxlID0gZmFsc2VcblxuICBpZignZnVuY3Rpb24nICE9PSB0eXBlb2YgZnVuYylcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2V2ZW50LXN0cmVhbS5yZWFkYWJsZSBleHBlY3RzIGFzeW5jIGZ1bmN0aW9uJylcblxuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHsgZW5kZWQgPSB0cnVlIH0pXG5cbiAgZnVuY3Rpb24gZ2V0IChlcnIsIGRhdGEpIHtcblxuICAgIGlmKGVycikge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKVxuICAgICAgaWYoIWNvbnRpbnVlT25FcnJvcikgc3RyZWFtLmVtaXQoJ2VuZCcpXG4gICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSlcbiAgICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgZGF0YSlcblxuICAgIGltbWVkaWF0ZWx5KGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmKGVuZGVkIHx8IHBhdXNlZCB8fCByZWFkaW5nKSByZXR1cm5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlYWRpbmcgPSB0cnVlXG4gICAgICAgIGZ1bmMuY2FsbChzdHJlYW0sIGkrKywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJlYWRpbmcgPSBmYWxzZVxuICAgICAgICAgIGdldC5hcHBseShudWxsLCBhcmd1bWVudHMpXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKVxuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgc3RyZWFtLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBwYXVzZWQgPSBmYWxzZVxuICAgIGdldCgpXG4gIH1cbiAgcHJvY2Vzcy5uZXh0VGljayhnZXQpXG4gIHN0cmVhbS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgcGF1c2VkID0gdHJ1ZVxuICB9XG4gIHN0cmVhbS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKVxuICAgIHN0cmVhbS5lbWl0KCdjbG9zZScpXG4gICAgZW5kZWQgPSB0cnVlXG4gIH1cbiAgcmV0dXJuIHN0cmVhbVxufVxuXG5cbi8vXG4vLyBtYXAgc3luY1xuLy9cblxuZXMubWFwU3luYyA9IGZ1bmN0aW9uIChzeW5jKSB7XG4gIHJldHVybiBlcy50aHJvdWdoKGZ1bmN0aW9uIHdyaXRlKGRhdGEpIHtcbiAgICB2YXIgbWFwcGVkRGF0YVxuICAgIHRyeSB7XG4gICAgICBtYXBwZWREYXRhID0gc3luYyhkYXRhKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgfVxuICAgIGlmIChtYXBwZWREYXRhICE9PSB1bmRlZmluZWQpXG4gICAgICB0aGlzLmVtaXQoJ2RhdGEnLCBtYXBwZWREYXRhKVxuICB9KVxufVxuXG4vL1xuLy8gbG9nIGp1c3QgcHJpbnQgb3V0IHdoYXQgaXMgY29taW5nIHRocm91Z2ggdGhlIHN0cmVhbSwgZm9yIGRlYnVnZ2luZ1xuLy9cblxuZXMubG9nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIGVzLnRocm91Z2goZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKVxuICAgIGlmKG5hbWUpIGNvbnNvbGUuZXJyb3IobmFtZSwgZGF0YSlcbiAgICBlbHNlICAgICBjb25zb2xlLmVycm9yKGRhdGEpXG4gICAgdGhpcy5lbWl0KCdkYXRhJywgZGF0YSlcbiAgfSlcbn1cblxuXG4vL1xuLy8gY2hpbGQgLS0gcGlwZSB0aHJvdWdoIGEgY2hpbGQgcHJvY2Vzc1xuLy9cblxuZXMuY2hpbGQgPSBmdW5jdGlvbiAoY2hpbGQpIHtcblxuICByZXR1cm4gZXMuZHVwbGV4KGNoaWxkLnN0ZGluLCBjaGlsZC5zdGRvdXQpXG5cbn1cblxuLy9cbi8vIHBhcnNlXG4vL1xuLy8gbXVzdCBiZSB1c2VkIGFmdGVyIGVzLnNwbGl0KCkgdG8gZW5zdXJlIHRoYXQgZWFjaCBjaHVuayByZXByZXNlbnRzIGEgbGluZVxuLy8gc291cmNlLnBpcGUoZXMuc3BsaXQoKSkucGlwZShlcy5wYXJzZSgpKVxuXG5lcy5wYXJzZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBlbWl0RXJyb3IgPSAhIShvcHRpb25zID8gb3B0aW9ucy5lcnJvciA6IGZhbHNlKVxuICByZXR1cm4gZXMudGhyb3VnaChmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBvYmpcbiAgICB0cnkge1xuICAgICAgaWYoZGF0YSkgLy9pZ25vcmUgZW1wdHkgbGluZXNcbiAgICAgICAgb2JqID0gSlNPTi5wYXJzZShkYXRhLnRvU3RyaW5nKCkpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZW1pdEVycm9yKVxuICAgICAgICByZXR1cm4gdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgICAgIHJldHVybiBjb25zb2xlLmVycm9yKGVyciwgJ2F0dGVtcHRpbmcgdG8gcGFyc2U6JywgZGF0YSlcbiAgICB9XG4gICAgLy9pZ25vcmUgbGluZXMgdGhhdCB3aGVyZSBvbmx5IHdoaXRlc3BhY2UuXG4gICAgaWYob2JqICE9PSB1bmRlZmluZWQpXG4gICAgICB0aGlzLmVtaXQoJ2RhdGEnLCBvYmopXG4gIH0pXG59XG4vL1xuLy8gc3RyaW5naWZ5XG4vL1xuXG5lcy5zdHJpbmdpZnkgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXJcbiAgcmV0dXJuIGVzLm1hcFN5bmMoZnVuY3Rpb24gKGUpe1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShCdWZmZXIuaXNCdWZmZXIoZSkgPyBlLnRvU3RyaW5nKCkgOiBlKSArICdcXG4nXG4gIH0pXG59XG5cbi8vXG4vLyByZXBsYWNlIGEgc3RyaW5nIHdpdGhpbiBhIHN0cmVhbS5cbi8vXG4vLyB3YXJuOiBqdXN0IGNvbmNhdGVuYXRlcyB0aGUgc3RyaW5nIGFuZCB0aGVuIGRvZXMgc3RyLnNwbGl0KCkuam9pbigpLlxuLy8gcHJvYmFibHkgbm90IG9wdGltYWwuXG4vLyBmb3Igc21hbGxpc2ggcmVzcG9uc2VzLCB3aG8gY2FyZXM/XG4vLyBJIG5lZWQgdGhpcyBmb3Igc2hhZG93LW5wbSBzbyBpdCdzIG9ubHkgcmVsYXRpdmVseSBzbWFsbCBqc29uIGZpbGVzLlxuXG5lcy5yZXBsYWNlID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gIHJldHVybiBlcy5waXBlbGluZShlcy5zcGxpdChmcm9tKSwgZXMuam9pbih0bykpXG59XG5cbi8vXG4vLyBqb2luIGNodW5rcyB3aXRoIGEgam9pbmVyLiBqdXN0IGxpa2UgQXJyYXkjam9pblxuLy8gYWxzbyBhY2NlcHRzIGEgY2FsbGJhY2sgdGhhdCBpcyBwYXNzZWQgdGhlIGNodW5rcyBhcHBlbmRlZCB0b2dldGhlclxuLy8gdGhpcyBpcyBzdGlsbCBzdXBwb3J0ZWQgZm9yIGxlZ2FjeSByZWFzb25zLlxuLy9cblxuZXMuam9pbiA9IGZ1bmN0aW9uIChzdHIpIHtcblxuICAvL2xlZ2FjeSBhcGlcbiAgaWYoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIHN0cilcbiAgICByZXR1cm4gZXMud2FpdChzdHIpXG5cbiAgdmFyIGZpcnN0ID0gdHJ1ZVxuICByZXR1cm4gZXMudGhyb3VnaChmdW5jdGlvbiAoZGF0YSkge1xuICAgIGlmKCFmaXJzdClcbiAgICAgIHRoaXMuZW1pdCgnZGF0YScsIHN0cilcbiAgICBmaXJzdCA9IGZhbHNlXG4gICAgdGhpcy5lbWl0KCdkYXRhJywgZGF0YSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9KVxufVxuXG5cbi8vXG4vLyB3YWl0LiBjYWxsYmFjayB3aGVuICdlbmQnIGlzIGVtaXR0ZWQsIHdpdGggYWxsIGNodW5rcyBhcHBlbmRlZCBhcyBzdHJpbmcuXG4vL1xuXG5lcy53YWl0ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHZhciBhcnIgPSBbXVxuICByZXR1cm4gZXMudGhyb3VnaChmdW5jdGlvbiAoZGF0YSkgeyBhcnIucHVzaChkYXRhKSB9LFxuICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBib2R5ID0gQnVmZmVyLmlzQnVmZmVyKGFyclswXSkgPyBCdWZmZXIuY29uY2F0KGFycilcbiAgICAgICAgOiBhcnIuam9pbignJylcbiAgICAgIHRoaXMuZW1pdCgnZGF0YScsIGJvZHkpXG4gICAgICB0aGlzLmVtaXQoJ2VuZCcpXG4gICAgICBpZihjYWxsYmFjaykgY2FsbGJhY2sobnVsbCwgYm9keSlcbiAgICB9KVxufVxuXG5lcy5waXBlYWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdbRVZFTlQtU1RSRUFNXSBlcy5waXBlYWJsZSBpcyBkZXByZWNhdGVkJylcbn1cblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9ldmVudC1zdHJlYW0vaW5kZXguanNcbi8vIG1vZHVsZSBpZCA9IDIxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJcbid1c2Ugc3RyaWN0JztcblxudmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG5cbi8vIGZyb21cbi8vXG4vLyBhIHN0cmVhbSB0aGF0IHJlYWRzIGZyb20gYW4gc291cmNlLlxuLy8gc291cmNlIG1heSBiZSBhbiBhcnJheSwgb3IgYSBmdW5jdGlvbi5cbi8vIGZyb20gaGFuZGxlcyBwYXVzZSBiZWhhdmlvdXIgZm9yIHlvdS5cblxubW9kdWxlLmV4cG9ydHMgPVxuZnVuY3Rpb24gZnJvbSAoc291cmNlKSB7XG4gIGlmKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuXHRcdHZhciBzb3VyY2VfaW5kZXggPSAwLCBzb3VyY2VfbGVuID0gc291cmNlLmxlbmd0aDtcbiAgICByZXR1cm4gZnJvbSAoZnVuY3Rpb24gKGkpIHtcbiAgICAgIGlmKHNvdXJjZV9pbmRleCA8IHNvdXJjZV9sZW4pXG4gICAgICAgIHRoaXMuZW1pdCgnZGF0YScsIHNvdXJjZVtzb3VyY2VfaW5kZXgrK10pXG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMuZW1pdCgnZW5kJylcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSlcbiAgfVxuICB2YXIgcyA9IG5ldyBTdHJlYW0oKSwgaSA9IDBcbiAgcy5lbmRlZCA9IGZhbHNlXG4gIHMuc3RhcnRlZCA9IGZhbHNlXG4gIHMucmVhZGFibGUgPSB0cnVlXG4gIHMud3JpdGFibGUgPSBmYWxzZVxuICBzLnBhdXNlZCA9IGZhbHNlXG4gIHMuZW5kZWQgPSBmYWxzZVxuICBzLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICAgIHMuc3RhcnRlZCA9IHRydWVcbiAgICBzLnBhdXNlZCA9IHRydWVcbiAgfVxuICBmdW5jdGlvbiBuZXh0ICgpIHtcbiAgICBzLnN0YXJ0ZWQgPSB0cnVlXG4gICAgaWYocy5lbmRlZCkgcmV0dXJuXG4gICAgd2hpbGUoIXMuZW5kZWQgJiYgIXMucGF1c2VkICYmIHNvdXJjZS5jYWxsKHMsIGkrKywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYoIXMuZW5kZWQgJiYgIXMucGF1c2VkKVxuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2sobmV4dCk7XG4gICAgfSkpXG4gICAgICA7XG4gIH1cbiAgcy5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcy5zdGFydGVkID0gdHJ1ZVxuICAgIHMucGF1c2VkID0gZmFsc2VcbiAgICBuZXh0KClcbiAgfVxuICBzLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgcy5lbmRlZCA9IHRydWVcbiAgICBzLnJlYWRhYmxlID0gZmFsc2VcbiAgICBwcm9jZXNzLm5leHRUaWNrKHMuZGVzdHJveSlcbiAgfSlcbiAgcy5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHMuZW5kZWQgPSB0cnVlXG4gICAgcy5lbWl0KCdjbG9zZScpIFxuICB9XG4gIC8qXG4gICAgYnkgZGVmYXVsdCwgdGhlIHN0cmVhbSB3aWxsIHN0YXJ0IGVtaXR0aW5nIGF0IG5leHRUaWNrXG4gICAgaWYgeW91IHdhbnQsIHlvdSBjYW4gcGF1c2UgaXQsIGFmdGVyIHBpcGVpbmcuXG4gICAgeW91IGNhbiBhbHNvIHJlc3VtZSBiZWZvcmUgbmV4dCB0aWNrLCBhbmQgdGhhdCB3aWxsIGFsc29cbiAgICB3b3JrLlxuICAqL1xuICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICBpZighcy5zdGFydGVkKSBzLnJlc3VtZSgpXG4gIH0pXG4gIHJldHVybiBzXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvZnJvbS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjE2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vZmlsdGVyIHdpbGwgcmVlbWl0IHRoZSBkYXRhIGlmIGNiKGVycixwYXNzKSBwYXNzIGlzIHRydXRoeVxuXG4vLyByZWR1Y2UgaXMgbW9yZSB0cmlja3lcbi8vIG1heWJlIHdlIHdhbnQgdG8gZ3JvdXAgdGhlIHJlZHVjdGlvbnMgb3IgZW1pdCBwcm9ncmVzcyB1cGRhdGVzIG9jY2FzaW9uYWxseVxuLy8gdGhlIG1vc3QgYmFzaWMgcmVkdWNlIGp1c3QgZW1pdHMgb25lICdkYXRhJyBldmVudCBhZnRlciBpdCBoYXMgcmVjaWV2ZWQgJ2VuZCdcblxuXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJykuU3RyZWFtXG5cblxuLy9jcmVhdGUgYW4gZXZlbnQgc3RyZWFtIGFuZCBhcHBseSBmdW5jdGlvbiB0byBlYWNoIC53cml0ZVxuLy9lbWl0dGluZyBlYWNoIHJlc3BvbnNlIGFzIGRhdGFcbi8vdW5sZXNzIGl0J3MgYW4gZW1wdHkgY2FsbGJhY2tcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWFwcGVyLCBvcHRzKSB7XG5cbiAgdmFyIHN0cmVhbSA9IG5ldyBTdHJlYW0oKVxuICAgICwgc2VsZiA9IHRoaXNcbiAgICAsIGlucHV0cyA9IDBcbiAgICAsIG91dHB1dHMgPSAwXG4gICAgLCBlbmRlZCA9IGZhbHNlXG4gICAgLCBwYXVzZWQgPSBmYWxzZVxuICAgICwgZGVzdHJveWVkID0gZmFsc2VcbiAgICAsIGxhc3RXcml0dGVuID0gMFxuICAgICwgaW5OZXh0ID0gZmFsc2VcblxuICB0aGlzLm9wdHMgPSBvcHRzIHx8IHt9O1xuICB2YXIgZXJyb3JFdmVudE5hbWUgPSB0aGlzLm9wdHMuZmFpbHVyZXMgPyAnZmFpbHVyZScgOiAnZXJyb3InO1xuXG4gIC8vIEl0ZW1zIHRoYXQgYXJlIG5vdCByZWFkeSB0byBiZSB3cml0dGVuIHlldCAoYmVjYXVzZSB0aGV5IHdvdWxkIGNvbWUgb3V0IG9mXG4gIC8vIG9yZGVyKSBnZXQgc3R1Y2sgaW4gYSBxdWV1ZSBmb3IgbGF0ZXIuXG4gIHZhciB3cml0ZVF1ZXVlID0ge31cblxuICBzdHJlYW0ud3JpdGFibGUgPSB0cnVlXG4gIHN0cmVhbS5yZWFkYWJsZSA9IHRydWVcblxuICBmdW5jdGlvbiBxdWV1ZURhdGEgKGRhdGEsIG51bWJlcikge1xuICAgIHZhciBuZXh0VG9Xcml0ZSA9IGxhc3RXcml0dGVuICsgMVxuXG4gICAgaWYgKG51bWJlciA9PT0gbmV4dFRvV3JpdGUpIHtcbiAgICAgIC8vIElmIGl0J3MgbmV4dCwgYW5kIGl0cyBub3QgdW5kZWZpbmVkIHdyaXRlIGl0XG4gICAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0LmFwcGx5KHN0cmVhbSwgWydkYXRhJywgZGF0YV0pXG4gICAgICB9XG4gICAgICBsYXN0V3JpdHRlbiArK1xuICAgICAgbmV4dFRvV3JpdGUgKytcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3RoZXJ3aXNlIHF1ZXVlIGl0IGZvciBsYXRlci5cbiAgICAgIHdyaXRlUXVldWVbbnVtYmVyXSA9IGRhdGFcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgbmV4dCB2YWx1ZSBpcyBpbiB0aGUgcXVldWUsIHdyaXRlIGl0XG4gICAgaWYgKHdyaXRlUXVldWUuaGFzT3duUHJvcGVydHkobmV4dFRvV3JpdGUpKSB7XG4gICAgICB2YXIgZGF0YVRvV3JpdGUgPSB3cml0ZVF1ZXVlW25leHRUb1dyaXRlXVxuICAgICAgZGVsZXRlIHdyaXRlUXVldWVbbmV4dFRvV3JpdGVdXG4gICAgICByZXR1cm4gcXVldWVEYXRhKGRhdGFUb1dyaXRlLCBuZXh0VG9Xcml0ZSlcbiAgICB9XG5cbiAgICBvdXRwdXRzICsrXG4gICAgaWYoaW5wdXRzID09PSBvdXRwdXRzKSB7XG4gICAgICBpZihwYXVzZWQpIHBhdXNlZCA9IGZhbHNlLCBzdHJlYW0uZW1pdCgnZHJhaW4nKSAvL3dyaXR0ZW4gYWxsIHRoZSBpbmNvbWluZyBldmVudHNcbiAgICAgIGlmKGVuZGVkKSBlbmQoKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG5leHQgKGVyciwgZGF0YSwgbnVtYmVyKSB7XG4gICAgaWYoZGVzdHJveWVkKSByZXR1cm5cbiAgICBpbk5leHQgPSB0cnVlXG5cbiAgICBpZiAoIWVyciB8fCBzZWxmLm9wdHMuZmFpbHVyZXMpIHtcbiAgICAgIHF1ZXVlRGF0YShkYXRhLCBudW1iZXIpXG4gICAgfVxuXG4gICAgaWYgKGVycikge1xuICAgICAgc3RyZWFtLmVtaXQuYXBwbHkoc3RyZWFtLCBbIGVycm9yRXZlbnROYW1lLCBlcnIgXSk7XG4gICAgfVxuXG4gICAgaW5OZXh0ID0gZmFsc2U7XG4gIH1cblxuICAvLyBXcmFwIHRoZSBtYXBwZXIgZnVuY3Rpb24gYnkgY2FsbGluZyBpdHMgY2FsbGJhY2sgd2l0aCB0aGUgb3JkZXIgbnVtYmVyIG9mXG4gIC8vIHRoZSBpdGVtIGluIHRoZSBzdHJlYW0uXG4gIGZ1bmN0aW9uIHdyYXBwZWRNYXBwZXIgKGlucHV0LCBudW1iZXIsIGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG1hcHBlci5jYWxsKG51bGwsIGlucHV0LCBmdW5jdGlvbihlcnIsIGRhdGEpe1xuICAgICAgY2FsbGJhY2soZXJyLCBkYXRhLCBudW1iZXIpXG4gICAgfSlcbiAgfVxuXG4gIHN0cmVhbS53cml0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgaWYoZW5kZWQpIHRocm93IG5ldyBFcnJvcignbWFwIHN0cmVhbSBpcyBub3Qgd3JpdGFibGUnKVxuICAgIGluTmV4dCA9IGZhbHNlXG4gICAgaW5wdXRzICsrXG5cbiAgICB0cnkge1xuICAgICAgLy9jYXRjaCBzeW5jIGVycm9ycyBhbmQgaGFuZGxlIHRoZW0gbGlrZSBhc3luYyBlcnJvcnNcbiAgICAgIHZhciB3cml0dGVuID0gd3JhcHBlZE1hcHBlcihkYXRhLCBpbnB1dHMsIG5leHQpXG4gICAgICBwYXVzZWQgPSAod3JpdHRlbiA9PT0gZmFsc2UpXG4gICAgICByZXR1cm4gIXBhdXNlZFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy9pZiB0aGUgY2FsbGJhY2sgaGFzIGJlZW4gY2FsbGVkIHN5bmNyb25vdXNseSwgYW5kIHRoZSBlcnJvclxuICAgICAgLy9oYXMgb2NjdXJlZCBpbiBhbiBsaXN0ZW5lciwgdGhyb3cgaXQgYWdhaW4uXG4gICAgICBpZihpbk5leHQpXG4gICAgICAgIHRocm93IGVyclxuICAgICAgbmV4dChlcnIpXG4gICAgICByZXR1cm4gIXBhdXNlZFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGVuZCAoZGF0YSkge1xuICAgIC8vaWYgZW5kIHdhcyBjYWxsZWQgd2l0aCBhcmdzLCB3cml0ZSBpdCwgXG4gICAgZW5kZWQgPSB0cnVlIC8vd3JpdGUgd2lsbCBlbWl0ICdlbmQnIGlmIGVuZGVkIGlzIHRydWVcbiAgICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZVxuICAgIGlmKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHF1ZXVlRGF0YShkYXRhLCBpbnB1dHMpXG4gICAgfSBlbHNlIGlmIChpbnB1dHMgPT0gb3V0cHV0cykgeyAvL3dhaXQgZm9yIHByb2Nlc3NpbmcgXG4gICAgICBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZSwgc3RyZWFtLmVtaXQoJ2VuZCcpLCBzdHJlYW0uZGVzdHJveSgpIFxuICAgIH1cbiAgfVxuXG4gIHN0cmVhbS5lbmQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGlmKGVuZGVkKSByZXR1cm5cbiAgICBlbmQoKVxuICB9XG5cbiAgc3RyZWFtLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgZW5kZWQgPSBkZXN0cm95ZWQgPSB0cnVlXG4gICAgc3RyZWFtLndyaXRhYmxlID0gc3RyZWFtLnJlYWRhYmxlID0gcGF1c2VkID0gZmFsc2VcbiAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdjbG9zZScpXG4gICAgfSlcbiAgfVxuICBzdHJlYW0ucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgcGF1c2VkID0gdHJ1ZVxuICB9XG5cbiAgc3RyZWFtLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBwYXVzZWQgPSBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHN0cmVhbVxufVxuXG5cblxuXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvbWFwLXN0cmVhbS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjE3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vdGhyb3VnaEAyIGhhbmRsZXMgdGhpcyBieSBkZWZhdWx0IVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCd0aHJvdWdoJylcblxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3BhdXNlLXN0cmVhbS9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjE4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vZmlsdGVyIHdpbGwgcmVlbWl0IHRoZSBkYXRhIGlmIGNiKGVycixwYXNzKSBwYXNzIGlzIHRydXRoeVxuXG4vLyByZWR1Y2UgaXMgbW9yZSB0cmlja3lcbi8vIG1heWJlIHdlIHdhbnQgdG8gZ3JvdXAgdGhlIHJlZHVjdGlvbnMgb3IgZW1pdCBwcm9ncmVzcyB1cGRhdGVzIG9jY2FzaW9uYWxseVxuLy8gdGhlIG1vc3QgYmFzaWMgcmVkdWNlIGp1c3QgZW1pdHMgb25lICdkYXRhJyBldmVudCBhZnRlciBpdCBoYXMgcmVjaWV2ZWQgJ2VuZCdcblxuXG52YXIgdGhyb3VnaCA9IHJlcXVpcmUoJ3Rocm91Z2gnKVxudmFyIERlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpLlN0cmluZ0RlY29kZXJcblxubW9kdWxlLmV4cG9ydHMgPSBzcGxpdFxuXG4vL1RPRE8gcGFzcyBpbiBhIGZ1bmN0aW9uIHRvIG1hcCBhY3Jvc3MgdGhlIGxpbmVzLlxuXG5mdW5jdGlvbiBzcGxpdCAobWF0Y2hlciwgbWFwcGVyLCBvcHRpb25zKSB7XG4gIHZhciBkZWNvZGVyID0gbmV3IERlY29kZXIoKVxuICB2YXIgc29GYXIgPSAnJ1xuICB2YXIgbWF4TGVuZ3RoID0gb3B0aW9ucyAmJiBvcHRpb25zLm1heExlbmd0aDtcbiAgaWYoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIG1hdGNoZXIpXG4gICAgbWFwcGVyID0gbWF0Y2hlciwgbWF0Y2hlciA9IG51bGxcbiAgaWYgKCFtYXRjaGVyKVxuICAgIG1hdGNoZXIgPSAvXFxyP1xcbi9cblxuICBmdW5jdGlvbiBlbWl0KHN0cmVhbSwgcGllY2UpIHtcbiAgICBpZihtYXBwZXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBpZWNlID0gbWFwcGVyKHBpZWNlKVxuICAgICAgfVxuICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKVxuICAgICAgfVxuICAgICAgaWYoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBwaWVjZSlcbiAgICAgICAgc3RyZWFtLnF1ZXVlKHBpZWNlKVxuICAgIH1cbiAgICBlbHNlXG4gICAgICBzdHJlYW0ucXVldWUocGllY2UpXG4gIH1cblxuICBmdW5jdGlvbiBuZXh0IChzdHJlYW0sIGJ1ZmZlcikge1xuICAgIHZhciBwaWVjZXMgPSAoKHNvRmFyICE9IG51bGwgPyBzb0ZhciA6ICcnKSArIGJ1ZmZlcikuc3BsaXQobWF0Y2hlcilcbiAgICBzb0ZhciA9IHBpZWNlcy5wb3AoKVxuXG4gICAgaWYgKG1heExlbmd0aCAmJiBzb0Zhci5sZW5ndGggPiBtYXhMZW5ndGgpXG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ21heGltdW0gYnVmZmVyIHJlYWNoZWQnKSlcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGllY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgcGllY2UgPSBwaWVjZXNbaV1cbiAgICAgIGVtaXQoc3RyZWFtLCBwaWVjZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhyb3VnaChmdW5jdGlvbiAoYikge1xuICAgIG5leHQodGhpcywgZGVjb2Rlci53cml0ZShiKSlcbiAgfSxcbiAgZnVuY3Rpb24gKCkge1xuICAgIGlmKGRlY29kZXIuZW5kKVxuICAgICAgbmV4dCh0aGlzLCBkZWNvZGVyLmVuZCgpKVxuICAgIGlmKHNvRmFyICE9IG51bGwpXG4gICAgICBlbWl0KHRoaXMsIHNvRmFyKVxuICAgIHRoaXMucXVldWUobnVsbClcbiAgfSlcbn1cblxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3NwbGl0L2luZGV4LmpzXG4vLyBtb2R1bGUgaWQgPSAyMTlcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGR1cGxleGVyID0gcmVxdWlyZSgnZHVwbGV4ZXInKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcblxuICB2YXIgc3RyZWFtcyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKVxuICAgICwgZmlyc3QgPSBzdHJlYW1zWzBdXG4gICAgLCBsYXN0ID0gc3RyZWFtc1tzdHJlYW1zLmxlbmd0aCAtIDFdXG4gICAgLCB0aGVwaXBlID0gZHVwbGV4ZXIoZmlyc3QsIGxhc3QpXG5cbiAgaWYoc3RyZWFtcy5sZW5ndGggPT0gMSlcbiAgICByZXR1cm4gc3RyZWFtc1swXVxuICBlbHNlIGlmICghc3RyZWFtcy5sZW5ndGgpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdjb25uZWN0IGNhbGxlZCB3aXRoIGVtcHR5IGFyZ3MnKVxuXG4gIC8vcGlwZSBhbGwgdGhlIHN0cmVhbXMgdG9nZXRoZXJcblxuICBmdW5jdGlvbiByZWN1cnNlIChzdHJlYW1zKSB7XG4gICAgaWYoc3RyZWFtcy5sZW5ndGggPCAyKVxuICAgICAgcmV0dXJuXG4gICAgc3RyZWFtc1swXS5waXBlKHN0cmVhbXNbMV0pXG4gICAgcmVjdXJzZShzdHJlYW1zLnNsaWNlKDEpKSAgXG4gIH1cbiAgXG4gIHJlY3Vyc2Uoc3RyZWFtcylcbiBcbiAgZnVuY3Rpb24gb25lcnJvciAoKSB7XG4gICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cylcbiAgICBhcmdzLnVuc2hpZnQoJ2Vycm9yJylcbiAgICB0aGVwaXBlLmVtaXQuYXBwbHkodGhlcGlwZSwgYXJncylcbiAgfVxuICBcbiAgLy9lcy5kdXBsZXggYWxyZWFkeSByZWVtaXRzIHRoZSBlcnJvciBmcm9tIHRoZSBmaXJzdCBhbmQgbGFzdCBzdHJlYW0uXG4gIC8vYWRkIGEgbGlzdGVuZXIgZm9yIHRoZSBpbm5lciBzdHJlYW1zIGluIHRoZSBwaXBlbGluZS5cbiAgZm9yKHZhciBpID0gMTsgaSA8IHN0cmVhbXMubGVuZ3RoIC0gMTsgaSArKylcbiAgICBzdHJlYW1zW2ldLm9uKCdlcnJvcicsIG9uZXJyb3IpXG5cbiAgcmV0dXJuIHRoZXBpcGVcbn1cblxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL3N0cmVhbS1jb21iaW5lci9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gMjIwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCAqIGFzIGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQge1xuICBnZXRMYWJlbGVkU2VnbWVudHMsXG4gIGluc2VydFNlZ21lbnRzLFxuICByZW1vdmVTZWdtZW50cyxcbn0gZnJvbSAnLi4vc2VydmljZXMvc2VnbWVudHMnO1xuaW1wb3J0IHtydW5MZWFybmluZ30gZnJvbSAnLi4vc2VydmljZXMvYW5hbHl0aWNzJztcbmltcG9ydCB7QW5vbWFseSwgQW5vbWFseUlkLCBnZXRBbm9tYWx5SWRCeU5hbWUsIGxvYWRBbm9tYWx5QnlJZH0gZnJvbSAnLi4vc2VydmljZXMvYW5vbWFseVR5cGUnO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRTZWdtZW50cyhyZXEsIHJlcykge1xuICB0cnkge1xuICAgIGxldCBhbm9tYWx5SWQ6IEFub21hbHlJZCA9IHJlcS5xdWVyeS5hbm9tYWx5X2lkO1xuICAgIGxldCBhbm9tYWx5OkFub21hbHkgPSBsb2FkQW5vbWFseUJ5SWQoYW5vbWFseUlkKTtcbiAgICBpZihhbm9tYWx5ID09PSBudWxsKSB7XG4gICAgICBhbm9tYWx5SWQgPSBnZXRBbm9tYWx5SWRCeU5hbWUoYW5vbWFseUlkKTtcbiAgICB9XG5cbiAgICBsZXQgbGFzdFNlZ21lbnRJZCA9IHJlcS5xdWVyeS5sYXN0X3NlZ21lbnQ7XG4gICAgbGV0IHRpbWVGcm9tID0gcmVxLnF1ZXJ5LmZyb207XG4gICAgbGV0IHRpbWVUbyA9IHJlcS5xdWVyeS50bztcblxuICAgIGxldCBzZWdtZW50cyA9IGdldExhYmVsZWRTZWdtZW50cyhhbm9tYWx5SWQpO1xuXG4gICAgLy8gSWQgZmlsdGVyaW5nXG4gICAgaWYobGFzdFNlZ21lbnRJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZWdtZW50cyA9IHNlZ21lbnRzLmZpbHRlcihlbCA9PiBlbC5pZCA+IGxhc3RTZWdtZW50SWQpO1xuICAgIH1cblxuICAgIC8vIFRpbWUgZmlsdGVyaW5nXG4gICAgaWYodGltZUZyb20gIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VnbWVudHMgPSBzZWdtZW50cy5maWx0ZXIoZWwgPT4gZWwuZmluaXNoID4gdGltZUZyb20pO1xuICAgIH1cblxuICAgIGlmKHRpbWVUbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZWdtZW50cyA9IHNlZ21lbnRzLmZpbHRlcihlbCA9PiBlbC5zdGFydCA8IHRpbWVUbyk7XG4gICAgfVxuXG4gICAgbGV0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBzZWdtZW50c1xuICAgIH0pO1xuICAgIHJlcy5zdGF0dXMoMjAwKS5zZW5kKHBheWxvYWQpO1xuICB9IGNhdGNoKGUpIHtcbiAgICByZXMuc3RhdHVzKDUwMCkuc2VuZCh7XG4gICAgICBjb2RlOiA1MDAsXG4gICAgICBtZXNzYWdlOiAnSW50ZXJuYWwgZXJyb3InXG4gICAgfSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlU2VnbWVudHMocmVxLCByZXMpIHtcbiAgdHJ5IHtcbiAgICBsZXQgc2VnbWVudHNVcGRhdGUgPSByZXEuYm9keTtcblxuICAgIGxldCBhbm9tYWx5SWQgPSBzZWdtZW50c1VwZGF0ZS5hbm9tYWx5X2lkO1xuICAgIGxldCBhbm9tYWx5TmFtZSA9IHNlZ21lbnRzVXBkYXRlLm5hbWU7XG5cbiAgICBpZihhbm9tYWx5SWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYW5vbWFseUlkID0gZ2V0QW5vbWFseUlkQnlOYW1lKGFub21hbHlOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIGxldCBhZGRlZElkcyA9IGluc2VydFNlZ21lbnRzKGFub21hbHlJZCwgc2VnbWVudHNVcGRhdGUuYWRkZWRfc2VnbWVudHMsIHRydWUpO1xuICAgIHJlbW92ZVNlZ21lbnRzKGFub21hbHlJZCwgc2VnbWVudHNVcGRhdGUucmVtb3ZlZF9zZWdtZW50cyk7XG5cbiAgICBsZXQgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHsgYWRkZWRfaWRzOiBhZGRlZElkcyB9KTtcbiAgICByZXMuc3RhdHVzKDIwMCkuc2VuZChwYXlsb2FkKTtcblxuICAgIHJ1bkxlYXJuaW5nKGFub21hbHlJZCk7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHtcbiAgICAgIGNvZGU6IDUwMCxcbiAgICAgIG1lc3NhZ2U6ICdJbnRlcm5hbCBlcnJvcidcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcblxucm91dGVyLmdldCgnLycsIHNlbmRTZWdtZW50cyk7XG5yb3V0ZXIucGF0Y2goJy8nLCB1cGRhdGVTZWdtZW50cyk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yb3V0ZXMvc2VnbWVudHMudHMiLCJpbXBvcnQgKiBhcyBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHtBbm9tYWx5SWQsIGdldEFub21hbHlJZEJ5TmFtZSwgbG9hZEFub21hbHlCeUlkfSBmcm9tICcuLi9zZXJ2aWNlcy9hbm9tYWx5VHlwZSc7XG5pbXBvcnQgeyBnZXRBbGVydHNBbm9tYWxpZXMsIHNhdmVBbGVydHNBbm9tYWxpZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy9hbGVydHMnO1xuXG5mdW5jdGlvbiBnZXRBbGVydChyZXEsIHJlcykge1xuICB0cnkge1xuICAgIGxldCBhbm9tYWx5SWQ6IEFub21hbHlJZCA9IHJlcS5xdWVyeS5hbm9tYWx5X2lkO1xuICAgIGxldCBhbm9tYWx5ID0gbG9hZEFub21hbHlCeUlkKGFub21hbHlJZClcbiAgICBpZiAoYW5vbWFseSA9PSBudWxsKSB7XG4gICAgICBhbm9tYWx5SWQgPSBnZXRBbm9tYWx5SWRCeU5hbWUoYW5vbWFseUlkLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIGxldCBhbGVydHNBbm9tYWxpZXMgPSBnZXRBbGVydHNBbm9tYWxpZXMoKTtcbiAgICBsZXQgcG9zID0gYWxlcnRzQW5vbWFsaWVzLmluZGV4T2YoYW5vbWFseUlkKTtcblxuICAgIGxldCBlbmFibGU6IGJvb2xlYW4gPSAocG9zICE9PSAtMSk7XG4gICAgcmVzLnN0YXR1cygyMDApLnNlbmQoe1xuICAgICAgZW5hYmxlXG4gICAgfSk7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHtcbiAgICAgIGNvZGU6IDUwMCxcbiAgICAgIG1lc3NhZ2U6ICdJbnRlcm5hbCBlcnJvcidcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGFuZ2VBbGVydChyZXEsIHJlcykge1xuICB0cnkge1xuICAgIGxldCBhbm9tYWx5SWQ6IEFub21hbHlJZCA9IHJlcS5ib2R5LmFub21hbHlfaWQ7XG4gICAgbGV0IGVuYWJsZTogYm9vbGVhbiA9IHJlcS5ib2R5LmVuYWJsZTtcblxuICAgIGxldCBhbm9tYWx5ID0gbG9hZEFub21hbHlCeUlkKGFub21hbHlJZClcbiAgICBpZiAoYW5vbWFseSA9PSBudWxsKSB7XG4gICAgICBhbm9tYWx5SWQgPSBnZXRBbm9tYWx5SWRCeU5hbWUoYW5vbWFseUlkLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIGxldCBhbGVydHNBbm9tYWxpZXMgPSBnZXRBbGVydHNBbm9tYWxpZXMoKTtcbiAgICBsZXQgcG9zOiBudW1iZXIgPSBhbGVydHNBbm9tYWxpZXMuaW5kZXhPZihhbm9tYWx5SWQpO1xuICAgIGlmKGVuYWJsZSAmJiBwb3MgPT0gLTEpIHtcbiAgICAgIGFsZXJ0c0Fub21hbGllcy5wdXNoKGFub21hbHlJZCk7XG4gICAgICBzYXZlQWxlcnRzQW5vbWFsaWVzKGFsZXJ0c0Fub21hbGllcyk7XG4gICAgfSBlbHNlIGlmKCFlbmFibGUgJiYgcG9zID4gLTEpIHtcbiAgICAgIGFsZXJ0c0Fub21hbGllcy5zcGxpY2UocG9zLCAxKTtcbiAgICAgIHNhdmVBbGVydHNBbm9tYWxpZXMoYWxlcnRzQW5vbWFsaWVzKTtcbiAgICB9XG4gICAgcmVzLnN0YXR1cygyMDApLnNlbmQoe1xuICAgICAgc3RhdHVzOiAnT2snXG4gICAgfSk7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJlcy5zdGF0dXMoNTAwKS5zZW5kKHtcbiAgICAgIGNvZGU6IDUwMCxcbiAgICAgIG1lc3NhZ2U6ICdJbnRlcm5hbCBlcnJvcidcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcblxucm91dGVyLmdldCgnLycsIGdldEFsZXJ0KTtcbnJvdXRlci5wb3N0KCcvJywgY2hhbmdlQWxlcnQpO1xuXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yb3V0ZXMvYWxlcnRzLnRzIiwiaW1wb3J0IHsgZ2V0SnNvbkRhdGFTeW5jLCB3cml0ZUpzb25EYXRhU3luYyB9IGZyb20gJy4vanNvbic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHsgQW5vbWFseUlkIH0gZnJvbSAnLi9hbm9tYWx5VHlwZSc7XG5pbXBvcnQgeyBBTk9NQUxJRVNfUEFUSCB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBydW5QcmVkaWN0IH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgc2VuZE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vbm90aWZpY2F0aW9uJztcbmltcG9ydCB7IGdldExhYmVsZWRTZWdtZW50cyB9IGZyb20gJy4vc2VnbWVudHMnO1xuXG5mdW5jdGlvbiBnZXRBbGVydHNBbm9tYWxpZXMoKSA6IEFub21hbHlJZFtdIHtcbiAgbGV0IGZpbGVuYW1lID0gcGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgYWxlcnRzX2Fub21hbGllcy5qc29uYCk7XG4gIGlmKCFmcy5leGlzdHNTeW5jKGZpbGVuYW1lKSkge1xuICAgIHNhdmVBbGVydHNBbm9tYWxpZXMoW10pO1xuICB9XG4gIHJldHVybiBnZXRKc29uRGF0YVN5bmMocGF0aC5qb2luKEFOT01BTElFU19QQVRILCBgYWxlcnRzX2Fub21hbGllcy5qc29uYCkpO1xufVxuXG5mdW5jdGlvbiBzYXZlQWxlcnRzQW5vbWFsaWVzKGFub21hbGllczogQW5vbWFseUlkW10pIHtcbiAgcmV0dXJuIHdyaXRlSnNvbkRhdGFTeW5jKHBhdGguam9pbihBTk9NQUxJRVNfUEFUSCwgYGFsZXJ0c19hbm9tYWxpZXMuanNvbmApLCBhbm9tYWxpZXMpO1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzQWxlcnRzKGFub21hbHlJZCkge1xuICBsZXQgc2VnbWVudHMgPSBnZXRMYWJlbGVkU2VnbWVudHMoYW5vbWFseUlkKTtcblxuICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICBjb25zdCBhY3RpdmVBbGVydCA9IGZhbHNlO1xuICBsZXQgbmV3QWN0aXZlQWxlcnQgPSBmYWxzZTtcblxuICBpZihzZWdtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IGxhc3RTZWdtZW50ID0gc2VnbWVudHNbc2VnbWVudHMubGVuZ3RoIC0gMV07XG4gICAgaWYobGFzdFNlZ21lbnQuZmluaXNoID49IGN1cnJlbnRUaW1lIC0gYWxlcnRUaW1lb3V0KSB7XG4gICAgICBuZXdBY3RpdmVBbGVydCA9IHRydWU7XG4gICAgfVxuICB9XG4gIGNvbnNvbGUubG9nKGFjdGl2ZUFsZXJ0KVxuICBuZXdBY3RpdmVBbGVydCA9IHRydWVcbiAgaWYoIWFjdGl2ZUFsZXJ0ICYmIG5ld0FjdGl2ZUFsZXJ0KSB7XG4gICAgYWN0aXZlQWxlcnRzLmFkZChhbm9tYWx5SWQpO1xuICAgIHNlbmROb3RpZmljYXRpb24oYW5vbWFseUlkLCB0cnVlKTtcbiAgfSBlbHNlIGlmKGFjdGl2ZUFsZXJ0ICYmICFuZXdBY3RpdmVBbGVydCkge1xuICAgIGFjdGl2ZUFsZXJ0cy5kZWxldGUoYW5vbWFseUlkKTtcbiAgICBzZW5kTm90aWZpY2F0aW9uKGFub21hbHlJZCwgZmFsc2UpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFsZXJ0c1RpY2soKSB7XG4gIGxldCBhbGVydHNBbm9tYWxpZXMgPSBnZXRBbGVydHNBbm9tYWxpZXMoKTtcbiAgZm9yIChsZXQgYW5vbWFseUlkIG9mIGFsZXJ0c0Fub21hbGllcykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBydW5QcmVkaWN0KGFub21hbHlJZCk7XG4gICAgICBwcm9jZXNzQWxlcnRzKGFub21hbHlJZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cbiAgc2V0VGltZW91dChhbGVydHNUaWNrLCA1MDAwKTtcbn1cblxuY29uc3QgYWxlcnRUaW1lb3V0ID0gNjAwMDA7IC8vIG1zXG5jb25zdCBhY3RpdmVBbGVydHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbnNldFRpbWVvdXQoYWxlcnRzVGljaywgNTAwMCk7XG5cblxuZXhwb3J0IHsgZ2V0QWxlcnRzQW5vbWFsaWVzLCBzYXZlQWxlcnRzQW5vbWFsaWVzIH1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NlcnZpY2VzL2FsZXJ0cy50cyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zZXRcIiksIF9fZXNNb2R1bGU6IHRydWUgfTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3NldC5qc1xuLy8gbW9kdWxlIGlkID0gMjI0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsInJlcXVpcmUoJy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zZXQnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnNldC50by1qc29uJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNy5zZXQub2YnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnNldC5mcm9tJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvX2NvcmUnKS5TZXQ7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3NldC5qc1xuLy8gbW9kdWxlIGlkID0gMjI1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcbnZhciBzdHJvbmcgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXN0cm9uZycpO1xudmFyIHZhbGlkYXRlID0gcmVxdWlyZSgnLi9fdmFsaWRhdGUtY29sbGVjdGlvbicpO1xudmFyIFNFVCA9ICdTZXQnO1xuXG4vLyAyMy4yIFNldCBPYmplY3RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKShTRVQsIGZ1bmN0aW9uIChnZXQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpIHsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07XG59LCB7XG4gIC8vIDIzLjIuMy4xIFNldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgIHJldHVybiBzdHJvbmcuZGVmKHZhbGlkYXRlKHRoaXMsIFNFVCksIHZhbHVlID0gdmFsdWUgPT09IDAgPyAwIDogdmFsdWUsIHZhbHVlKTtcbiAgfVxufSwgc3Ryb25nKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc2V0LmpzXG4vLyBtb2R1bGUgaWQgPSAyMjZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyICRpdGVyRGVmaW5lID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyIGZhc3RLZXkgPSByZXF1aXJlKCcuL19tZXRhJykuZmFzdEtleTtcbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vX3ZhbGlkYXRlLWNvbGxlY3Rpb24nKTtcbnZhciBTSVpFID0gREVTQ1JJUFRPUlMgPyAnX3MnIDogJ3NpemUnO1xuXG52YXIgZ2V0RW50cnkgPSBmdW5jdGlvbiAodGhhdCwga2V5KSB7XG4gIC8vIGZhc3QgY2FzZVxuICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSk7XG4gIHZhciBlbnRyeTtcbiAgaWYgKGluZGV4ICE9PSAnRicpIHJldHVybiB0aGF0Ll9pW2luZGV4XTtcbiAgLy8gZnJvemVuIG9iamVjdCBjYXNlXG4gIGZvciAoZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgaWYgKGVudHJ5LmsgPT0ga2V5KSByZXR1cm4gZW50cnk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRDb25zdHJ1Y3RvcjogZnVuY3Rpb24gKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpIHtcbiAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24gKHRoYXQsIGl0ZXJhYmxlKSB7XG4gICAgICBhbkluc3RhbmNlKHRoYXQsIEMsIE5BTUUsICdfaScpO1xuICAgICAgdGhhdC5fdCA9IE5BTUU7ICAgICAgICAgLy8gY29sbGVjdGlvbiB0eXBlXG4gICAgICB0aGF0Ll9pID0gY3JlYXRlKG51bGwpOyAvLyBpbmRleFxuICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgLy8gZmlyc3QgZW50cnlcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7ICAgIC8vIGxhc3QgZW50cnlcbiAgICAgIHRoYXRbU0laRV0gPSAwOyAgICAgICAgIC8vIHNpemVcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMS4zLjEgTWFwLnByb3RvdHlwZS5jbGVhcigpXG4gICAgICAvLyAyMy4yLjMuMiBTZXQucHJvdG90eXBlLmNsZWFyKClcbiAgICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgZm9yICh2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBkYXRhID0gdGhhdC5faSwgZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7XG4gICAgICAgICAgZW50cnkuciA9IHRydWU7XG4gICAgICAgICAgaWYgKGVudHJ5LnApIGVudHJ5LnAgPSBlbnRyeS5wLm4gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVsZXRlIGRhdGFbZW50cnkuaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhhdC5fZiA9IHRoYXQuX2wgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoYXRbU0laRV0gPSAwO1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy4zIE1hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjIuMy40IFNldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgdmFyIHRoYXQgPSB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcbiAgICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBlbnRyeS5uO1xuICAgICAgICAgIHZhciBwcmV2ID0gZW50cnkucDtcbiAgICAgICAgICBkZWxldGUgdGhhdC5faVtlbnRyeS5pXTtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAocHJldikgcHJldi5uID0gbmV4dDtcbiAgICAgICAgICBpZiAobmV4dCkgbmV4dC5wID0gcHJldjtcbiAgICAgICAgICBpZiAodGhhdC5fZiA9PSBlbnRyeSkgdGhhdC5fZiA9IG5leHQ7XG4gICAgICAgICAgaWYgKHRoYXQuX2wgPT0gZW50cnkpIHRoYXQuX2wgPSBwcmV2O1xuICAgICAgICAgIHRoYXRbU0laRV0tLTtcbiAgICAgICAgfSByZXR1cm4gISFlbnRyeTtcbiAgICAgIH0sXG4gICAgICAvLyAyMy4yLjMuNiBTZXQucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgICAgIC8vIDIzLjEuMy41IE1hcC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB2YWxpZGF0ZSh0aGlzLCBOQU1FKTtcbiAgICAgICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpO1xuICAgICAgICB2YXIgZW50cnk7XG4gICAgICAgIHdoaWxlIChlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoaXMuX2YpIHtcbiAgICAgICAgICBmKGVudHJ5LnYsIGVudHJ5LmssIHRoaXMpO1xuICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgICAgIHdoaWxlIChlbnRyeSAmJiBlbnRyeS5yKSBlbnRyeSA9IGVudHJ5LnA7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyAyMy4xLjMuNyBNYXAucHJvdG90eXBlLmhhcyhrZXkpXG4gICAgICAvLyAyMy4yLjMuNyBTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcbiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkge1xuICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh2YWxpZGF0ZSh0aGlzLCBOQU1FKSwga2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoREVTQ1JJUFRPUlMpIGRQKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdmFsaWRhdGUodGhpcywgTkFNRSlbU0laRV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIEM7XG4gIH0sXG4gIGRlZjogZnVuY3Rpb24gKHRoYXQsIGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpO1xuICAgIHZhciBwcmV2LCBpbmRleDtcbiAgICAvLyBjaGFuZ2UgZXhpc3RpbmcgZW50cnlcbiAgICBpZiAoZW50cnkpIHtcbiAgICAgIGVudHJ5LnYgPSB2YWx1ZTtcbiAgICAvLyBjcmVhdGUgbmV3IGVudHJ5XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoYXQuX2wgPSBlbnRyeSA9IHtcbiAgICAgICAgaTogaW5kZXggPSBmYXN0S2V5KGtleSwgdHJ1ZSksIC8vIDwtIGluZGV4XG4gICAgICAgIGs6IGtleSwgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBrZXlcbiAgICAgICAgdjogdmFsdWUsICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHZhbHVlXG4gICAgICAgIHA6IHByZXYgPSB0aGF0Ll9sLCAgICAgICAgICAgICAvLyA8LSBwcmV2aW91cyBlbnRyeVxuICAgICAgICBuOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgLy8gPC0gbmV4dCBlbnRyeVxuICAgICAgICByOiBmYWxzZSAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gcmVtb3ZlZFxuICAgICAgfTtcbiAgICAgIGlmICghdGhhdC5fZikgdGhhdC5fZiA9IGVudHJ5O1xuICAgICAgaWYgKHByZXYpIHByZXYubiA9IGVudHJ5O1xuICAgICAgdGhhdFtTSVpFXSsrO1xuICAgICAgLy8gYWRkIHRvIGluZGV4XG4gICAgICBpZiAoaW5kZXggIT09ICdGJykgdGhhdC5faVtpbmRleF0gPSBlbnRyeTtcbiAgICB9IHJldHVybiB0aGF0O1xuICB9LFxuICBnZXRFbnRyeTogZ2V0RW50cnksXG4gIHNldFN0cm9uZzogZnVuY3Rpb24gKEMsIE5BTUUsIElTX01BUCkge1xuICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXVxuICAgIC8vIDIzLjEuMy40LCAyMy4xLjMuOCwgMjMuMS4zLjExLCAyMy4xLjMuMTIsIDIzLjIuMy41LCAyMy4yLjMuOCwgMjMuMi4zLjEwLCAyMy4yLjMuMTFcbiAgICAkaXRlckRlZmluZShDLCBOQU1FLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgICAgIHRoaXMuX3QgPSB2YWxpZGF0ZShpdGVyYXRlZCwgTkFNRSk7IC8vIHRhcmdldFxuICAgICAgdGhpcy5fayA9IGtpbmQ7ICAgICAgICAgICAgICAgICAgICAgLy8ga2luZFxuICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgICAgICAgICAgICAgICAgLy8gcHJldmlvdXNcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICB2YXIga2luZCA9IHRoYXQuX2s7XG4gICAgICB2YXIgZW50cnkgPSB0aGF0Ll9sO1xuICAgICAgLy8gcmV2ZXJ0IHRvIHRoZSBsYXN0IGV4aXN0aW5nIGVudHJ5XG4gICAgICB3aGlsZSAoZW50cnkgJiYgZW50cnkucikgZW50cnkgPSBlbnRyeS5wO1xuICAgICAgLy8gZ2V0IG5leHQgZW50cnlcbiAgICAgIGlmICghdGhhdC5fdCB8fCAhKHRoYXQuX2wgPSBlbnRyeSA9IGVudHJ5ID8gZW50cnkubiA6IHRoYXQuX3QuX2YpKSB7XG4gICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG4gICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBzdGVwKDEpO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZFxuICAgICAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS5rKTtcbiAgICAgIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBlbnRyeS52KTtcbiAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7XG4gICAgfSwgSVNfTUFQID8gJ2VudHJpZXMnIDogJ3ZhbHVlcycsICFJU19NQVAsIHRydWUpO1xuXG4gICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjJcbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuICB9XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2xsZWN0aW9uLXN0cm9uZy5qc1xuLy8gbW9kdWxlIGlkID0gMjI3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgbWV0YSA9IHJlcXVpcmUoJy4vX21ldGEnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4vX2hpZGUnKTtcbnZhciByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpO1xudmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGVhY2ggPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMCk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChOQU1FLCB3cmFwcGVyLCBtZXRob2RzLCBjb21tb24sIElTX01BUCwgSVNfV0VBSykge1xuICB2YXIgQmFzZSA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIEMgPSBCYXNlO1xuICB2YXIgQURERVIgPSBJU19NQVAgPyAnc2V0JyA6ICdhZGQnO1xuICB2YXIgcHJvdG8gPSBDICYmIEMucHJvdG90eXBlO1xuICB2YXIgTyA9IHt9O1xuICBpZiAoIURFU0NSSVBUT1JTIHx8IHR5cGVvZiBDICE9ICdmdW5jdGlvbicgfHwgIShJU19XRUFLIHx8IHByb3RvLmZvckVhY2ggJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICBuZXcgQygpLmVudHJpZXMoKS5uZXh0KCk7XG4gIH0pKSkge1xuICAgIC8vIGNyZWF0ZSBjb2xsZWN0aW9uIGNvbnN0cnVjdG9yXG4gICAgQyA9IGNvbW1vbi5nZXRDb25zdHJ1Y3Rvcih3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gICAgbWV0YS5ORUVEID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBDID0gd3JhcHBlcihmdW5jdGlvbiAodGFyZ2V0LCBpdGVyYWJsZSkge1xuICAgICAgYW5JbnN0YW5jZSh0YXJnZXQsIEMsIE5BTUUsICdfYycpO1xuICAgICAgdGFyZ2V0Ll9jID0gbmV3IEJhc2UoKTtcbiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRhcmdldFtBRERFUl0sIHRhcmdldCk7XG4gICAgfSk7XG4gICAgZWFjaCgnYWRkLGNsZWFyLGRlbGV0ZSxmb3JFYWNoLGdldCxoYXMsc2V0LGtleXMsdmFsdWVzLGVudHJpZXMsdG9KU09OJy5zcGxpdCgnLCcpLCBmdW5jdGlvbiAoS0VZKSB7XG4gICAgICB2YXIgSVNfQURERVIgPSBLRVkgPT0gJ2FkZCcgfHwgS0VZID09ICdzZXQnO1xuICAgICAgaWYgKEtFWSBpbiBwcm90byAmJiAhKElTX1dFQUsgJiYgS0VZID09ICdjbGVhcicpKSBoaWRlKEMucHJvdG90eXBlLCBLRVksIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgIGFuSW5zdGFuY2UodGhpcywgQywgS0VZKTtcbiAgICAgICAgaWYgKCFJU19BRERFUiAmJiBJU19XRUFLICYmICFpc09iamVjdChhKSkgcmV0dXJuIEtFWSA9PSAnZ2V0JyA/IHVuZGVmaW5lZCA6IGZhbHNlO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fY1tLRVldKGEgPT09IDAgPyAwIDogYSwgYik7XG4gICAgICAgIHJldHVybiBJU19BRERFUiA/IHRoaXMgOiByZXN1bHQ7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBJU19XRUFLIHx8IGRQKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYy5zaXplO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0VG9TdHJpbmdUYWcoQywgTkFNRSk7XG5cbiAgT1tOQU1FXSA9IEM7XG4gICRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GLCBPKTtcblxuICBpZiAoIUlTX1dFQUspIGNvbW1vbi5zZXRTdHJvbmcoQywgTkFNRSwgSVNfTUFQKTtcblxuICByZXR1cm4gQztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NvbGxlY3Rpb24uanNcbi8vIG1vZHVsZSBpZCA9IDIyOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyAwIC0+IEFycmF5I2ZvckVhY2hcbi8vIDEgLT4gQXJyYXkjbWFwXG4vLyAyIC0+IEFycmF5I2ZpbHRlclxuLy8gMyAtPiBBcnJheSNzb21lXG4vLyA0IC0+IEFycmF5I2V2ZXJ5XG4vLyA1IC0+IEFycmF5I2ZpbmRcbi8vIDYgLT4gQXJyYXkjZmluZEluZGV4XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgYXNjID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFRZUEUsICRjcmVhdGUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICB2YXIgY3JlYXRlID0gJGNyZWF0ZSB8fCBhc2M7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGNhbGxiYWNrZm4sIHRoYXQpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IElPYmplY3QoTyk7XG4gICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciByZXN1bHQgPSBJU19NQVAgPyBjcmVhdGUoJHRoaXMsIGxlbmd0aCkgOiBJU19GSUxURVIgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWwsIHJlcztcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHtcbiAgICAgIHZhbCA9IHNlbGZbaW5kZXhdO1xuICAgICAgcmVzID0gZih2YWwsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHJlc3VsdFtpbmRleF0gPSByZXM7ICAgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYgKHJlcykgc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbDsgICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAvLyBmaW5kSW5kZXhcbiAgICAgICAgICBjYXNlIDI6IHJlc3VsdC5wdXNoKHZhbCk7ICAgICAgICAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIGlmIChJU19FVkVSWSkgcmV0dXJuIGZhbHNlOyAvLyBldmVyeVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSVNfRklORF9JTkRFWCA/IC0xIDogSVNfU09NRSB8fCBJU19FVkVSWSA/IElTX0VWRVJZIDogcmVzdWx0O1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktbWV0aG9kcy5qc1xuLy8gbW9kdWxlIGlkID0gMjI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aClcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19hcnJheS1zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHtcbiAgcmV0dXJuIG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKG9yaWdpbmFsKSkobGVuZ3RoKTtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzXG4vLyBtb2R1bGUgaWQgPSAyMzBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vX2lzLWFycmF5Jyk7XG52YXIgU1BFQ0lFUyA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsKSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbCkpIHtcbiAgICBDID0gb3JpZ2luYWwuY29uc3RydWN0b3I7XG4gICAgLy8gY3Jvc3MtcmVhbG0gZmFsbGJhY2tcbiAgICBpZiAodHlwZW9mIEMgPT0gJ2Z1bmN0aW9uJyAmJiAoQyA9PT0gQXJyYXkgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKSBDID0gdW5kZWZpbmVkO1xuICAgIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIEMgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQztcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY29uc3RydWN0b3IuanNcbi8vIG1vZHVsZSBpZCA9IDIzMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXkuanNcbi8vIG1vZHVsZSBpZCA9IDIzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuUiwgJ1NldCcsIHsgdG9KU09OOiByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXRvLWpzb24nKSgnU2V0JykgfSk7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnNldC50by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAyMzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgZnJvbSA9IHJlcXVpcmUoJy4vX2FycmF5LWZyb20taXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgICBpZiAoY2xhc3NvZih0aGlzKSAhPSBOQU1FKSB0aHJvdyBUeXBlRXJyb3IoTkFNRSArIFwiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO1xuICAgIHJldHVybiBmcm9tKHRoaXMpO1xuICB9O1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29sbGVjdGlvbi10by1qc29uLmpzXG4vLyBtb2R1bGUgaWQgPSAyMzRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGZvck9mID0gcmVxdWlyZSgnLi9fZm9yLW9mJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXIsIElURVJBVE9SKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yT2YoaXRlciwgZmFsc2UsIHJlc3VsdC5wdXNoLCByZXN1bHQsIElURVJBVE9SKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FycmF5LWZyb20taXRlcmFibGUuanNcbi8vIG1vZHVsZSBpZCA9IDIzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1zZXQub2ZcbnJlcXVpcmUoJy4vX3NldC1jb2xsZWN0aW9uLW9mJykoJ1NldCcpO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zZXQub2YuanNcbi8vIG1vZHVsZSBpZCA9IDIzNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT0xMRUNUSU9OKSB7XG4gICRleHBvcnQoJGV4cG9ydC5TLCBDT0xMRUNUSU9OLCB7IG9mOiBmdW5jdGlvbiBvZigpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgQSA9IG5ldyBBcnJheShsZW5ndGgpO1xuICAgIHdoaWxlIChsZW5ndGgtLSkgQVtsZW5ndGhdID0gYXJndW1lbnRzW2xlbmd0aF07XG4gICAgcmV0dXJuIG5ldyB0aGlzKEEpO1xuICB9IH0pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tb2YuanNcbi8vIG1vZHVsZSBpZCA9IDIzN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vI3NlYy1zZXQuZnJvbVxucmVxdWlyZSgnLi9fc2V0LWNvbGxlY3Rpb24tZnJvbScpKCdTZXQnKTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcuc2V0LmZyb20uanNcbi8vIG1vZHVsZSBpZCA9IDIzOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT0xMRUNUSU9OKSB7XG4gICRleHBvcnQoJGV4cG9ydC5TLCBDT0xMRUNUSU9OLCB7IGZyb206IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwRm4sIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgbWFwRm4gPSBhcmd1bWVudHNbMV07XG4gICAgdmFyIG1hcHBpbmcsIEEsIG4sIGNiO1xuICAgIGFGdW5jdGlvbih0aGlzKTtcbiAgICBtYXBwaW5nID0gbWFwRm4gIT09IHVuZGVmaW5lZDtcbiAgICBpZiAobWFwcGluZykgYUZ1bmN0aW9uKG1hcEZuKTtcbiAgICBpZiAoc291cmNlID09IHVuZGVmaW5lZCkgcmV0dXJuIG5ldyB0aGlzKCk7XG4gICAgQSA9IFtdO1xuICAgIGlmIChtYXBwaW5nKSB7XG4gICAgICBuID0gMDtcbiAgICAgIGNiID0gY3R4KG1hcEZuLCBhcmd1bWVudHNbMl0sIDIpO1xuICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgZnVuY3Rpb24gKG5leHRJdGVtKSB7XG4gICAgICAgIEEucHVzaChjYihuZXh0SXRlbSwgbisrKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgQS5wdXNoLCBBKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyB0aGlzKEEpO1xuICB9IH0pO1xufTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LWNvbGxlY3Rpb24tZnJvbS5qc1xuLy8gbW9kdWxlIGlkID0gMjM5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCBmZXRjaCBmcm9tICdub2RlLWZldGNoJztcbmltcG9ydCB7IGxvYWRBbm9tYWx5QnlJZCB9IGZyb20gJy4vYW5vbWFseVR5cGUnO1xuXG5mdW5jdGlvbiBzZW5kTm90aWZpY2F0aW9uKGFub21hbHlJZCwgYWN0aXZlKSB7XG4gIGxldCBhbm9tYWx5TmFtZSA9IGxvYWRBbm9tYWx5QnlJZChhbm9tYWx5SWQpLm5hbWU7XG4gIGNvbnNvbGUubG9nKCdOb3RpZmljYXRpb24gJyArIGFub21hbHlOYW1lKTtcblxuICBsZXQgbm90aWZpY2F0aW9uID0ge1xuICAgIGFub21hbHk6IGFub21hbHlOYW1lLFxuICAgIHN0YXR1czogJydcbiAgfTtcbiAgaWYoYWN0aXZlKSB7XG4gICAgbm90aWZpY2F0aW9uLnN0YXR1cyA9ICdhbGVydCc7XG4gIH0gZWxzZSB7XG4gICAgbm90aWZpY2F0aW9uLnN0YXR1cyA9ICdPSyc7XG4gIH1cblxuICBpZihwcm9jZXNzLmVudi5BTEVSVF9FTkRQT0lOVCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZmV0Y2gocHJvY2Vzcy5lbnYuQUxFUlRfRU5EUE9JTlQsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkobm90aWZpY2F0aW9uKVxuICAgIH0pXG4gICAgICAudGhlbihkYXRhID0+IGNvbnNvbGUubG9nKGRhdGEpKVxuICAgICAgLmNhdGNoKGVyciA9PiBjb25zb2xlLmVycm9yKGBDYW4ndCBzZW5kIGFsZXJ0IHRvICR7cHJvY2Vzcy5lbnYuQUxFUlRfRU5EUE9JTlR9LiBFcnJvcjogJHtlcnJ9YCkpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoYENhbid0IHNlbmQgYWxlcnQsIGVudiBBTEVSVF9FTkRQT0lOVCBpcyB1bmRlZmluZWRgKTtcbiAgfVxufVxuXG5leHBvcnQgeyBzZW5kTm90aWZpY2F0aW9uIH1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3NlcnZpY2VzL25vdGlmaWNhdGlvbi50cyIsIi8vIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS90bXB2YXIvanNkb20vYmxvYi9hYTg1YjJhYmYwNzc2NmZmN2JmNWMxZjZkYWFmYjM3MjZmMmYyZGI1L2xpYi9qc2RvbS9saXZpbmcvYmxvYi5qc1xuLy8gKE1JVCBsaWNlbnNlZClcblxuY29uc3QgQlVGRkVSID0gU3ltYm9sKCdidWZmZXInKTtcbmNvbnN0IFRZUEUgPSBTeW1ib2woJ3R5cGUnKTtcblxuY2xhc3MgQmxvYiB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXNbVFlQRV0gPSAnJztcblxuXHRcdGNvbnN0IGJsb2JQYXJ0cyA9IGFyZ3VtZW50c1swXTtcblx0XHRjb25zdCBvcHRpb25zID0gYXJndW1lbnRzWzFdO1xuXG5cdFx0Y29uc3QgYnVmZmVycyA9IFtdO1xuXG5cdFx0aWYgKGJsb2JQYXJ0cykge1xuXHRcdFx0Y29uc3QgYSA9IGJsb2JQYXJ0cztcblx0XHRcdGNvbnN0IGxlbmd0aCA9IE51bWJlcihhLmxlbmd0aCk7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IGVsZW1lbnQgPSBhW2ldO1xuXHRcdFx0XHRsZXQgYnVmZmVyO1xuXHRcdFx0XHRpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuXHRcdFx0XHRcdGJ1ZmZlciA9IGVsZW1lbnQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KGVsZW1lbnQpKSB7XG5cdFx0XHRcdFx0YnVmZmVyID0gQnVmZmVyLmZyb20oZWxlbWVudC5idWZmZXIsIGVsZW1lbnQuYnl0ZU9mZnNldCwgZWxlbWVudC5ieXRlTGVuZ3RoKTtcblx0XHRcdFx0fSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcblx0XHRcdFx0XHRidWZmZXIgPSBCdWZmZXIuZnJvbShlbGVtZW50KTtcblx0XHRcdFx0fSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgQmxvYikge1xuXHRcdFx0XHRcdGJ1ZmZlciA9IGVsZW1lbnRbQlVGRkVSXTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRidWZmZXIgPSBCdWZmZXIuZnJvbSh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycgPyBlbGVtZW50IDogU3RyaW5nKGVsZW1lbnQpKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRidWZmZXJzLnB1c2goYnVmZmVyKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzW0JVRkZFUl0gPSBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpO1xuXG5cdFx0bGV0IHR5cGUgPSBvcHRpb25zICYmIG9wdGlvbnMudHlwZSAhPT0gdW5kZWZpbmVkICYmIFN0cmluZyhvcHRpb25zLnR5cGUpLnRvTG93ZXJDYXNlKCk7XG5cdFx0aWYgKHR5cGUgJiYgIS9bXlxcdTAwMjAtXFx1MDA3RV0vLnRlc3QodHlwZSkpIHtcblx0XHRcdHRoaXNbVFlQRV0gPSB0eXBlO1xuXHRcdH1cblx0fVxuXHRnZXQgc2l6ZSgpIHtcblx0XHRyZXR1cm4gdGhpc1tCVUZGRVJdLmxlbmd0aDtcblx0fVxuXHRnZXQgdHlwZSgpIHtcblx0XHRyZXR1cm4gdGhpc1tUWVBFXTtcblx0fVxuXHRzbGljZSgpIHtcblx0XHRjb25zdCBzaXplID0gdGhpcy5zaXplO1xuXG5cdFx0Y29uc3Qgc3RhcnQgPSBhcmd1bWVudHNbMF07XG5cdFx0Y29uc3QgZW5kID0gYXJndW1lbnRzWzFdO1xuXHRcdGxldCByZWxhdGl2ZVN0YXJ0LCByZWxhdGl2ZUVuZDtcblx0XHRpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmVsYXRpdmVTdGFydCA9IDA7XG5cdFx0fSBlbHNlIGlmIChzdGFydCA8IDApIHtcblx0XHRcdHJlbGF0aXZlU3RhcnQgPSBNYXRoLm1heChzaXplICsgc3RhcnQsIDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZWxhdGl2ZVN0YXJ0ID0gTWF0aC5taW4oc3RhcnQsIHNpemUpO1xuXHRcdH1cblx0XHRpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJlbGF0aXZlRW5kID0gc2l6ZTtcblx0XHR9IGVsc2UgaWYgKGVuZCA8IDApIHtcblx0XHRcdHJlbGF0aXZlRW5kID0gTWF0aC5tYXgoc2l6ZSArIGVuZCwgMCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlbGF0aXZlRW5kID0gTWF0aC5taW4oZW5kLCBzaXplKTtcblx0XHR9XG5cdFx0Y29uc3Qgc3BhbiA9IE1hdGgubWF4KHJlbGF0aXZlRW5kIC0gcmVsYXRpdmVTdGFydCwgMCk7XG5cblx0XHRjb25zdCBidWZmZXIgPSB0aGlzW0JVRkZFUl07XG5cdFx0Y29uc3Qgc2xpY2VkQnVmZmVyID0gYnVmZmVyLnNsaWNlKHJlbGF0aXZlU3RhcnQsIHJlbGF0aXZlU3RhcnQgKyBzcGFuKTtcblx0XHRjb25zdCBibG9iID0gbmV3IEJsb2IoW10sIHsgdHlwZTogYXJndW1lbnRzWzJdIH0pO1xuXHRcdGJsb2JbQlVGRkVSXSA9IHNsaWNlZEJ1ZmZlcjtcblx0XHRyZXR1cm4gYmxvYjtcblx0fVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhCbG9iLnByb3RvdHlwZSwge1xuXHRzaXplOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0dHlwZTogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdHNsaWNlOiB7IGVudW1lcmFibGU6IHRydWUgfVxufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCbG9iLnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7XG5cdHZhbHVlOiAnQmxvYicsXG5cdHdyaXRhYmxlOiBmYWxzZSxcblx0ZW51bWVyYWJsZTogZmFsc2UsXG5cdGNvbmZpZ3VyYWJsZTogdHJ1ZVxufSk7XG5cbi8qKlxuICogZmV0Y2gtZXJyb3IuanNcbiAqXG4gKiBGZXRjaEVycm9yIGludGVyZmFjZSBmb3Igb3BlcmF0aW9uYWwgZXJyb3JzXG4gKi9cblxuLyoqXG4gKiBDcmVhdGUgRmV0Y2hFcnJvciBpbnN0YW5jZVxuICpcbiAqIEBwYXJhbSAgIFN0cmluZyAgICAgIG1lc3NhZ2UgICAgICBFcnJvciBtZXNzYWdlIGZvciBodW1hblxuICogQHBhcmFtICAgU3RyaW5nICAgICAgdHlwZSAgICAgICAgIEVycm9yIHR5cGUgZm9yIG1hY2hpbmVcbiAqIEBwYXJhbSAgIFN0cmluZyAgICAgIHN5c3RlbUVycm9yICBGb3IgTm9kZS5qcyBzeXN0ZW0gZXJyb3JcbiAqIEByZXR1cm4gIEZldGNoRXJyb3JcbiAqL1xuZnVuY3Rpb24gRmV0Y2hFcnJvcihtZXNzYWdlLCB0eXBlLCBzeXN0ZW1FcnJvcikge1xuICBFcnJvci5jYWxsKHRoaXMsIG1lc3NhZ2UpO1xuXG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gIHRoaXMudHlwZSA9IHR5cGU7XG5cbiAgLy8gd2hlbiBlcnIudHlwZSBpcyBgc3lzdGVtYCwgZXJyLmNvZGUgY29udGFpbnMgc3lzdGVtIGVycm9yIGNvZGVcbiAgaWYgKHN5c3RlbUVycm9yKSB7XG4gICAgdGhpcy5jb2RlID0gdGhpcy5lcnJubyA9IHN5c3RlbUVycm9yLmNvZGU7XG4gIH1cblxuICAvLyBoaWRlIGN1c3RvbSBlcnJvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZyb20gZW5kLXVzZXJzXG4gIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xufVxuXG5GZXRjaEVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcbkZldGNoRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRmV0Y2hFcnJvcjtcbkZldGNoRXJyb3IucHJvdG90eXBlLm5hbWUgPSAnRmV0Y2hFcnJvcic7XG5cbi8qKlxuICogYm9keS5qc1xuICpcbiAqIEJvZHkgaW50ZXJmYWNlIHByb3ZpZGVzIGNvbW1vbiBtZXRob2RzIGZvciBSZXF1ZXN0IGFuZCBSZXNwb25zZVxuICovXG5cbmNvbnN0IFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCdzdHJlYW0nKTtcblxuY29uc3QgUGFzc1Rocm91Z2ggPSBfcmVxdWlyZS5QYXNzVGhyb3VnaDtcblxuXG5sZXQgY29udmVydDtcbnRyeSB7XG5cdGNvbnZlcnQgPSByZXF1aXJlKCdlbmNvZGluZycpLmNvbnZlcnQ7XG59IGNhdGNoIChlKSB7fVxuXG5jb25zdCBJTlRFUk5BTFMgPSBTeW1ib2woJ0JvZHkgaW50ZXJuYWxzJyk7XG5cbi8qKlxuICogQm9keSBtaXhpblxuICpcbiAqIFJlZjogaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2JvZHlcbiAqXG4gKiBAcGFyYW0gICBTdHJlYW0gIGJvZHkgIFJlYWRhYmxlIHN0cmVhbVxuICogQHBhcmFtICAgT2JqZWN0ICBvcHRzICBSZXNwb25zZSBvcHRpb25zXG4gKiBAcmV0dXJuICBWb2lkXG4gKi9cbmZ1bmN0aW9uIEJvZHkoYm9keSkge1xuXHR2YXIgX3RoaXMgPSB0aGlzO1xuXG5cdHZhciBfcmVmID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcblx0ICAgIF9yZWYkc2l6ZSA9IF9yZWYuc2l6ZTtcblxuXHRsZXQgc2l6ZSA9IF9yZWYkc2l6ZSA9PT0gdW5kZWZpbmVkID8gMCA6IF9yZWYkc2l6ZTtcblx0dmFyIF9yZWYkdGltZW91dCA9IF9yZWYudGltZW91dDtcblx0bGV0IHRpbWVvdXQgPSBfcmVmJHRpbWVvdXQgPT09IHVuZGVmaW5lZCA/IDAgOiBfcmVmJHRpbWVvdXQ7XG5cblx0aWYgKGJvZHkgPT0gbnVsbCkge1xuXHRcdC8vIGJvZHkgaXMgdW5kZWZpbmVkIG9yIG51bGxcblx0XHRib2R5ID0gbnVsbDtcblx0fSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcblx0XHQvLyBib2R5IGlzIHN0cmluZ1xuXHR9IGVsc2UgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKGJvZHkpKSB7XG5cdFx0Ly8gYm9keSBpcyBhIFVSTFNlYXJjaFBhcmFtc1xuXHR9IGVsc2UgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG5cdFx0Ly8gYm9keSBpcyBibG9iXG5cdH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKGJvZHkpKSB7XG5cdFx0Ly8gYm9keSBpcyBidWZmZXJcblx0fSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSkgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXScpIHtcblx0XHQvLyBib2R5IGlzIGFycmF5IGJ1ZmZlclxuXHR9IGVsc2UgaWYgKGJvZHkgaW5zdGFuY2VvZiBTdHJlYW0pIHtcblx0XHQvLyBib2R5IGlzIHN0cmVhbVxuXHR9IGVsc2Uge1xuXHRcdC8vIG5vbmUgb2YgdGhlIGFib3ZlXG5cdFx0Ly8gY29lcmNlIHRvIHN0cmluZ1xuXHRcdGJvZHkgPSBTdHJpbmcoYm9keSk7XG5cdH1cblx0dGhpc1tJTlRFUk5BTFNdID0ge1xuXHRcdGJvZHksXG5cdFx0ZGlzdHVyYmVkOiBmYWxzZSxcblx0XHRlcnJvcjogbnVsbFxuXHR9O1xuXHR0aGlzLnNpemUgPSBzaXplO1xuXHR0aGlzLnRpbWVvdXQgPSB0aW1lb3V0O1xuXG5cdGlmIChib2R5IGluc3RhbmNlb2YgU3RyZWFtKSB7XG5cdFx0Ym9keS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRfdGhpc1tJTlRFUk5BTFNdLmVycm9yID0gbmV3IEZldGNoRXJyb3IoYEludmFsaWQgcmVzcG9uc2UgYm9keSB3aGlsZSB0cnlpbmcgdG8gZmV0Y2ggJHtfdGhpcy51cmx9OiAke2Vyci5tZXNzYWdlfWAsICdzeXN0ZW0nLCBlcnIpO1xuXHRcdH0pO1xuXHR9XG59XG5cbkJvZHkucHJvdG90eXBlID0ge1xuXHRnZXQgYm9keSgpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFNdLmJvZHk7XG5cdH0sXG5cblx0Z2V0IGJvZHlVc2VkKCkge1xuXHRcdHJldHVybiB0aGlzW0lOVEVSTkFMU10uZGlzdHVyYmVkO1xuXHR9LFxuXG5cdC8qKlxuICAqIERlY29kZSByZXNwb25zZSBhcyBBcnJheUJ1ZmZlclxuICAqXG4gICogQHJldHVybiAgUHJvbWlzZVxuICAqL1xuXHRhcnJheUJ1ZmZlcigpIHtcblx0XHRyZXR1cm4gY29uc3VtZUJvZHkuY2FsbCh0aGlzKS50aGVuKGZ1bmN0aW9uIChidWYpIHtcblx0XHRcdHJldHVybiBidWYuYnVmZmVyLnNsaWNlKGJ1Zi5ieXRlT2Zmc2V0LCBidWYuYnl0ZU9mZnNldCArIGJ1Zi5ieXRlTGVuZ3RoKTtcblx0XHR9KTtcblx0fSxcblxuXHQvKipcbiAgKiBSZXR1cm4gcmF3IHJlc3BvbnNlIGFzIEJsb2JcbiAgKlxuICAqIEByZXR1cm4gUHJvbWlzZVxuICAqL1xuXHRibG9iKCkge1xuXHRcdGxldCBjdCA9IHRoaXMuaGVhZGVycyAmJiB0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSB8fCAnJztcblx0XHRyZXR1cm4gY29uc3VtZUJvZHkuY2FsbCh0aGlzKS50aGVuKGZ1bmN0aW9uIChidWYpIHtcblx0XHRcdHJldHVybiBPYmplY3QuYXNzaWduKFxuXHRcdFx0Ly8gUHJldmVudCBjb3B5aW5nXG5cdFx0XHRuZXcgQmxvYihbXSwge1xuXHRcdFx0XHR0eXBlOiBjdC50b0xvd2VyQ2FzZSgpXG5cdFx0XHR9KSwge1xuXHRcdFx0XHRbQlVGRkVSXTogYnVmXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fSxcblxuXHQvKipcbiAgKiBEZWNvZGUgcmVzcG9uc2UgYXMganNvblxuICAqXG4gICogQHJldHVybiAgUHJvbWlzZVxuICAqL1xuXHRqc29uKCkge1xuXHRcdHZhciBfdGhpczIgPSB0aGlzO1xuXG5cdFx0cmV0dXJuIGNvbnN1bWVCb2R5LmNhbGwodGhpcykudGhlbihmdW5jdGlvbiAoYnVmZmVyKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXR1cm4gSlNPTi5wYXJzZShidWZmZXIudG9TdHJpbmcoKSk7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0cmV0dXJuIEJvZHkuUHJvbWlzZS5yZWplY3QobmV3IEZldGNoRXJyb3IoYGludmFsaWQganNvbiByZXNwb25zZSBib2R5IGF0ICR7X3RoaXMyLnVybH0gcmVhc29uOiAke2Vyci5tZXNzYWdlfWAsICdpbnZhbGlkLWpzb24nKSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cblx0LyoqXG4gICogRGVjb2RlIHJlc3BvbnNlIGFzIHRleHRcbiAgKlxuICAqIEByZXR1cm4gIFByb21pc2VcbiAgKi9cblx0dGV4dCgpIHtcblx0XHRyZXR1cm4gY29uc3VtZUJvZHkuY2FsbCh0aGlzKS50aGVuKGZ1bmN0aW9uIChidWZmZXIpIHtcblx0XHRcdHJldHVybiBidWZmZXIudG9TdHJpbmcoKTtcblx0XHR9KTtcblx0fSxcblxuXHQvKipcbiAgKiBEZWNvZGUgcmVzcG9uc2UgYXMgYnVmZmVyIChub24tc3BlYyBhcGkpXG4gICpcbiAgKiBAcmV0dXJuICBQcm9taXNlXG4gICovXG5cdGJ1ZmZlcigpIHtcblx0XHRyZXR1cm4gY29uc3VtZUJvZHkuY2FsbCh0aGlzKTtcblx0fSxcblxuXHQvKipcbiAgKiBEZWNvZGUgcmVzcG9uc2UgYXMgdGV4dCwgd2hpbGUgYXV0b21hdGljYWxseSBkZXRlY3RpbmcgdGhlIGVuY29kaW5nIGFuZFxuICAqIHRyeWluZyB0byBkZWNvZGUgdG8gVVRGLTggKG5vbi1zcGVjIGFwaSlcbiAgKlxuICAqIEByZXR1cm4gIFByb21pc2VcbiAgKi9cblx0dGV4dENvbnZlcnRlZCgpIHtcblx0XHR2YXIgX3RoaXMzID0gdGhpcztcblxuXHRcdHJldHVybiBjb25zdW1lQm9keS5jYWxsKHRoaXMpLnRoZW4oZnVuY3Rpb24gKGJ1ZmZlcikge1xuXHRcdFx0cmV0dXJuIGNvbnZlcnRCb2R5KGJ1ZmZlciwgX3RoaXMzLmhlYWRlcnMpO1xuXHRcdH0pO1xuXHR9XG5cbn07XG5cbi8vIEluIGJyb3dzZXJzLCBhbGwgcHJvcGVydGllcyBhcmUgZW51bWVyYWJsZS5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEJvZHkucHJvdG90eXBlLCB7XG5cdGJvZHk6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRib2R5VXNlZDogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdGFycmF5QnVmZmVyOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0YmxvYjogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdGpzb246IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHR0ZXh0OiB7IGVudW1lcmFibGU6IHRydWUgfVxufSk7XG5cbkJvZHkubWl4SW4gPSBmdW5jdGlvbiAocHJvdG8pIHtcblx0Zm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEJvZHkucHJvdG90eXBlKSkge1xuXHRcdC8vIGlzdGFuYnVsIGlnbm9yZSBlbHNlOiBmdXR1cmUgcHJvb2Zcblx0XHRpZiAoIShuYW1lIGluIHByb3RvKSkge1xuXHRcdFx0Y29uc3QgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQm9keS5wcm90b3R5cGUsIG5hbWUpO1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCBuYW1lLCBkZXNjKTtcblx0XHR9XG5cdH1cbn07XG5cbi8qKlxuICogQ29uc3VtZSBhbmQgY29udmVydCBhbiBlbnRpcmUgQm9keSB0byBhIEJ1ZmZlci5cbiAqXG4gKiBSZWY6IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktY29uc3VtZS1ib2R5XG4gKlxuICogQHJldHVybiAgUHJvbWlzZVxuICovXG5mdW5jdGlvbiBjb25zdW1lQm9keSgpIHtcblx0dmFyIF90aGlzNCA9IHRoaXM7XG5cblx0aWYgKHRoaXNbSU5URVJOQUxTXS5kaXN0dXJiZWQpIHtcblx0XHRyZXR1cm4gQm9keS5Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKGBib2R5IHVzZWQgYWxyZWFkeSBmb3I6ICR7dGhpcy51cmx9YCkpO1xuXHR9XG5cblx0dGhpc1tJTlRFUk5BTFNdLmRpc3R1cmJlZCA9IHRydWU7XG5cblx0aWYgKHRoaXNbSU5URVJOQUxTXS5lcnJvcikge1xuXHRcdHJldHVybiBCb2R5LlByb21pc2UucmVqZWN0KHRoaXNbSU5URVJOQUxTXS5lcnJvcik7XG5cdH1cblxuXHQvLyBib2R5IGlzIG51bGxcblx0aWYgKHRoaXMuYm9keSA9PT0gbnVsbCkge1xuXHRcdHJldHVybiBCb2R5LlByb21pc2UucmVzb2x2ZShCdWZmZXIuYWxsb2MoMCkpO1xuXHR9XG5cblx0Ly8gYm9keSBpcyBzdHJpbmdcblx0aWYgKHR5cGVvZiB0aGlzLmJvZHkgPT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIEJvZHkuUHJvbWlzZS5yZXNvbHZlKEJ1ZmZlci5mcm9tKHRoaXMuYm9keSkpO1xuXHR9XG5cblx0Ly8gYm9keSBpcyBibG9iXG5cdGlmICh0aGlzLmJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG5cdFx0cmV0dXJuIEJvZHkuUHJvbWlzZS5yZXNvbHZlKHRoaXMuYm9keVtCVUZGRVJdKTtcblx0fVxuXG5cdC8vIGJvZHkgaXMgYnVmZmVyXG5cdGlmIChCdWZmZXIuaXNCdWZmZXIodGhpcy5ib2R5KSkge1xuXHRcdHJldHVybiBCb2R5LlByb21pc2UucmVzb2x2ZSh0aGlzLmJvZHkpO1xuXHR9XG5cblx0Ly8gYm9keSBpcyBidWZmZXJcblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0aGlzLmJvZHkpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nKSB7XG5cdFx0cmV0dXJuIEJvZHkuUHJvbWlzZS5yZXNvbHZlKEJ1ZmZlci5mcm9tKHRoaXMuYm9keSkpO1xuXHR9XG5cblx0Ly8gaXN0YW5idWwgaWdub3JlIGlmOiBzaG91bGQgbmV2ZXIgaGFwcGVuXG5cdGlmICghKHRoaXMuYm9keSBpbnN0YW5jZW9mIFN0cmVhbSkpIHtcblx0XHRyZXR1cm4gQm9keS5Qcm9taXNlLnJlc29sdmUoQnVmZmVyLmFsbG9jKDApKTtcblx0fVxuXG5cdC8vIGJvZHkgaXMgc3RyZWFtXG5cdC8vIGdldCByZWFkeSB0byBhY3R1YWxseSBjb25zdW1lIHRoZSBib2R5XG5cdGxldCBhY2N1bSA9IFtdO1xuXHRsZXQgYWNjdW1CeXRlcyA9IDA7XG5cdGxldCBhYm9ydCA9IGZhbHNlO1xuXG5cdHJldHVybiBuZXcgQm9keS5Qcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0XHRsZXQgcmVzVGltZW91dDtcblxuXHRcdC8vIGFsbG93IHRpbWVvdXQgb24gc2xvdyByZXNwb25zZSBib2R5XG5cdFx0aWYgKF90aGlzNC50aW1lb3V0KSB7XG5cdFx0XHRyZXNUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGFib3J0ID0gdHJ1ZTtcblx0XHRcdFx0cmVqZWN0KG5ldyBGZXRjaEVycm9yKGBSZXNwb25zZSB0aW1lb3V0IHdoaWxlIHRyeWluZyB0byBmZXRjaCAke190aGlzNC51cmx9IChvdmVyICR7X3RoaXM0LnRpbWVvdXR9bXMpYCwgJ2JvZHktdGltZW91dCcpKTtcblx0XHRcdH0sIF90aGlzNC50aW1lb3V0KTtcblx0XHR9XG5cblx0XHQvLyBoYW5kbGUgc3RyZWFtIGVycm9yLCBzdWNoIGFzIGluY29ycmVjdCBjb250ZW50LWVuY29kaW5nXG5cdFx0X3RoaXM0LmJvZHkub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuXHRcdFx0cmVqZWN0KG5ldyBGZXRjaEVycm9yKGBJbnZhbGlkIHJlc3BvbnNlIGJvZHkgd2hpbGUgdHJ5aW5nIHRvIGZldGNoICR7X3RoaXM0LnVybH06ICR7ZXJyLm1lc3NhZ2V9YCwgJ3N5c3RlbScsIGVycikpO1xuXHRcdH0pO1xuXG5cdFx0X3RoaXM0LmJvZHkub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcblx0XHRcdGlmIChhYm9ydCB8fCBjaHVuayA9PT0gbnVsbCkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmIChfdGhpczQuc2l6ZSAmJiBhY2N1bUJ5dGVzICsgY2h1bmsubGVuZ3RoID4gX3RoaXM0LnNpemUpIHtcblx0XHRcdFx0YWJvcnQgPSB0cnVlO1xuXHRcdFx0XHRyZWplY3QobmV3IEZldGNoRXJyb3IoYGNvbnRlbnQgc2l6ZSBhdCAke190aGlzNC51cmx9IG92ZXIgbGltaXQ6ICR7X3RoaXM0LnNpemV9YCwgJ21heC1zaXplJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGFjY3VtQnl0ZXMgKz0gY2h1bmsubGVuZ3RoO1xuXHRcdFx0YWNjdW0ucHVzaChjaHVuayk7XG5cdFx0fSk7XG5cblx0XHRfdGhpczQuYm9keS5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuXHRcdFx0aWYgKGFib3J0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y2xlYXJUaW1lb3V0KHJlc1RpbWVvdXQpO1xuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZXNvbHZlKEJ1ZmZlci5jb25jYXQoYWNjdW0pKTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHQvLyBoYW5kbGUgc3RyZWFtcyB0aGF0IGhhdmUgYWNjdW11bGF0ZWQgdG9vIG11Y2ggZGF0YSAoaXNzdWUgIzQxNClcblx0XHRcdFx0cmVqZWN0KG5ldyBGZXRjaEVycm9yKGBDb3VsZCBub3QgY3JlYXRlIEJ1ZmZlciBmcm9tIHJlc3BvbnNlIGJvZHkgZm9yICR7X3RoaXM0LnVybH06ICR7ZXJyLm1lc3NhZ2V9YCwgJ3N5c3RlbScsIGVycikpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgYnVmZmVyIGVuY29kaW5nIGFuZCBjb252ZXJ0IHRvIHRhcmdldCBlbmNvZGluZ1xuICogcmVmOiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1dELWh0bWw1LTIwMTEwMTEzL3BhcnNpbmcuaHRtbCNkZXRlcm1pbmluZy10aGUtY2hhcmFjdGVyLWVuY29kaW5nXG4gKlxuICogQHBhcmFtICAgQnVmZmVyICBidWZmZXIgICAgSW5jb21pbmcgYnVmZmVyXG4gKiBAcGFyYW0gICBTdHJpbmcgIGVuY29kaW5nICBUYXJnZXQgZW5jb2RpbmdcbiAqIEByZXR1cm4gIFN0cmluZ1xuICovXG5mdW5jdGlvbiBjb252ZXJ0Qm9keShidWZmZXIsIGhlYWRlcnMpIHtcblx0aWYgKHR5cGVvZiBjb252ZXJ0ICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdUaGUgcGFja2FnZSBgZW5jb2RpbmdgIG11c3QgYmUgaW5zdGFsbGVkIHRvIHVzZSB0aGUgdGV4dENvbnZlcnRlZCgpIGZ1bmN0aW9uJyk7XG5cdH1cblxuXHRjb25zdCBjdCA9IGhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKTtcblx0bGV0IGNoYXJzZXQgPSAndXRmLTgnO1xuXHRsZXQgcmVzLCBzdHI7XG5cblx0Ly8gaGVhZGVyXG5cdGlmIChjdCkge1xuXHRcdHJlcyA9IC9jaGFyc2V0PShbXjtdKikvaS5leGVjKGN0KTtcblx0fVxuXG5cdC8vIG5vIGNoYXJzZXQgaW4gY29udGVudCB0eXBlLCBwZWVrIGF0IHJlc3BvbnNlIGJvZHkgZm9yIGF0IG1vc3QgMTAyNCBieXRlc1xuXHRzdHIgPSBidWZmZXIuc2xpY2UoMCwgMTAyNCkudG9TdHJpbmcoKTtcblxuXHQvLyBodG1sNVxuXHRpZiAoIXJlcyAmJiBzdHIpIHtcblx0XHRyZXMgPSAvPG1ldGEuKz9jaGFyc2V0PShbJ1wiXSkoLis/KVxcMS9pLmV4ZWMoc3RyKTtcblx0fVxuXG5cdC8vIGh0bWw0XG5cdGlmICghcmVzICYmIHN0cikge1xuXHRcdHJlcyA9IC88bWV0YVtcXHNdKz9odHRwLWVxdWl2PShbJ1wiXSljb250ZW50LXR5cGVcXDFbXFxzXSs/Y29udGVudD0oWydcIl0pKC4rPylcXDIvaS5leGVjKHN0cik7XG5cblx0XHRpZiAocmVzKSB7XG5cdFx0XHRyZXMgPSAvY2hhcnNldD0oLiopL2kuZXhlYyhyZXMucG9wKCkpO1xuXHRcdH1cblx0fVxuXG5cdC8vIHhtbFxuXHRpZiAoIXJlcyAmJiBzdHIpIHtcblx0XHRyZXMgPSAvPFxcP3htbC4rP2VuY29kaW5nPShbJ1wiXSkoLis/KVxcMS9pLmV4ZWMoc3RyKTtcblx0fVxuXG5cdC8vIGZvdW5kIGNoYXJzZXRcblx0aWYgKHJlcykge1xuXHRcdGNoYXJzZXQgPSByZXMucG9wKCk7XG5cblx0XHQvLyBwcmV2ZW50IGRlY29kZSBpc3N1ZXMgd2hlbiBzaXRlcyB1c2UgaW5jb3JyZWN0IGVuY29kaW5nXG5cdFx0Ly8gcmVmOiBodHRwczovL2hzaXZvbmVuLmZpL2VuY29kaW5nLW1lbnUvXG5cdFx0aWYgKGNoYXJzZXQgPT09ICdnYjIzMTInIHx8IGNoYXJzZXQgPT09ICdnYmsnKSB7XG5cdFx0XHRjaGFyc2V0ID0gJ2diMTgwMzAnO1xuXHRcdH1cblx0fVxuXG5cdC8vIHR1cm4gcmF3IGJ1ZmZlcnMgaW50byBhIHNpbmdsZSB1dGYtOCBidWZmZXJcblx0cmV0dXJuIGNvbnZlcnQoYnVmZmVyLCAnVVRGLTgnLCBjaGFyc2V0KS50b1N0cmluZygpO1xufVxuXG4vKipcbiAqIERldGVjdCBhIFVSTFNlYXJjaFBhcmFtcyBvYmplY3RcbiAqIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2JpdGlubi9ub2RlLWZldGNoL2lzc3Vlcy8yOTYjaXNzdWVjb21tZW50LTMwNzU5ODE0M1xuICpcbiAqIEBwYXJhbSAgIE9iamVjdCAgb2JqICAgICBPYmplY3QgdG8gZGV0ZWN0IGJ5IHR5cGUgb3IgYnJhbmRcbiAqIEByZXR1cm4gIFN0cmluZ1xuICovXG5mdW5jdGlvbiBpc1VSTFNlYXJjaFBhcmFtcyhvYmopIHtcblx0Ly8gRHVjay10eXBpbmcgYXMgYSBuZWNlc3NhcnkgY29uZGl0aW9uLlxuXHRpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIG9iai5hcHBlbmQgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIG9iai5kZWxldGUgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIG9iai5nZXQgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIG9iai5nZXRBbGwgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIG9iai5oYXMgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIG9iai5zZXQgIT09ICdmdW5jdGlvbicpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBCcmFuZC1jaGVja2luZyBhbmQgbW9yZSBkdWNrLXR5cGluZyBhcyBvcHRpb25hbCBjb25kaXRpb24uXG5cdHJldHVybiBvYmouY29uc3RydWN0b3IubmFtZSA9PT0gJ1VSTFNlYXJjaFBhcmFtcycgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IFVSTFNlYXJjaFBhcmFtc10nIHx8IHR5cGVvZiBvYmouc29ydCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBDbG9uZSBib2R5IGdpdmVuIFJlcy9SZXEgaW5zdGFuY2VcbiAqXG4gKiBAcGFyYW0gICBNaXhlZCAgaW5zdGFuY2UgIFJlc3BvbnNlIG9yIFJlcXVlc3QgaW5zdGFuY2VcbiAqIEByZXR1cm4gIE1peGVkXG4gKi9cbmZ1bmN0aW9uIGNsb25lKGluc3RhbmNlKSB7XG5cdGxldCBwMSwgcDI7XG5cdGxldCBib2R5ID0gaW5zdGFuY2UuYm9keTtcblxuXHQvLyBkb24ndCBhbGxvdyBjbG9uaW5nIGEgdXNlZCBib2R5XG5cdGlmIChpbnN0YW5jZS5ib2R5VXNlZCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignY2Fubm90IGNsb25lIGJvZHkgYWZ0ZXIgaXQgaXMgdXNlZCcpO1xuXHR9XG5cblx0Ly8gY2hlY2sgdGhhdCBib2R5IGlzIGEgc3RyZWFtIGFuZCBub3QgZm9ybS1kYXRhIG9iamVjdFxuXHQvLyBub3RlOiB3ZSBjYW4ndCBjbG9uZSB0aGUgZm9ybS1kYXRhIG9iamVjdCB3aXRob3V0IGhhdmluZyBpdCBhcyBhIGRlcGVuZGVuY3lcblx0aWYgKGJvZHkgaW5zdGFuY2VvZiBTdHJlYW0gJiYgdHlwZW9mIGJvZHkuZ2V0Qm91bmRhcnkgIT09ICdmdW5jdGlvbicpIHtcblx0XHQvLyB0ZWUgaW5zdGFuY2UgYm9keVxuXHRcdHAxID0gbmV3IFBhc3NUaHJvdWdoKCk7XG5cdFx0cDIgPSBuZXcgUGFzc1Rocm91Z2goKTtcblx0XHRib2R5LnBpcGUocDEpO1xuXHRcdGJvZHkucGlwZShwMik7XG5cdFx0Ly8gc2V0IGluc3RhbmNlIGJvZHkgdG8gdGVlZCBib2R5IGFuZCByZXR1cm4gdGhlIG90aGVyIHRlZWQgYm9keVxuXHRcdGluc3RhbmNlW0lOVEVSTkFMU10uYm9keSA9IHAxO1xuXHRcdGJvZHkgPSBwMjtcblx0fVxuXG5cdHJldHVybiBib2R5O1xufVxuXG4vKipcbiAqIFBlcmZvcm1zIHRoZSBvcGVyYXRpb24gXCJleHRyYWN0IGEgYENvbnRlbnQtVHlwZWAgdmFsdWUgZnJvbSB8b2JqZWN0fFwiIGFzXG4gKiBzcGVjaWZpZWQgaW4gdGhlIHNwZWNpZmljYXRpb246XG4gKiBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ib2R5aW5pdC1leHRyYWN0XG4gKlxuICogVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgaW5zdGFuY2UuYm9keSBpcyBwcmVzZW50LlxuICpcbiAqIEBwYXJhbSAgIE1peGVkICBpbnN0YW5jZSAgUmVzcG9uc2Ugb3IgUmVxdWVzdCBpbnN0YW5jZVxuICovXG5mdW5jdGlvbiBleHRyYWN0Q29udGVudFR5cGUoaW5zdGFuY2UpIHtcblx0Y29uc3QgYm9keSA9IGluc3RhbmNlLmJvZHk7XG5cblx0Ly8gaXN0YW5idWwgaWdub3JlIGlmOiBDdXJyZW50bHksIGJlY2F1c2Ugb2YgYSBndWFyZCBpbiBSZXF1ZXN0LCBib2R5XG5cdC8vIGNhbiBuZXZlciBiZSBudWxsLiBJbmNsdWRlZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG5cblx0aWYgKGJvZHkgPT09IG51bGwpIHtcblx0XHQvLyBib2R5IGlzIG51bGxcblx0XHRyZXR1cm4gbnVsbDtcblx0fSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcblx0XHQvLyBib2R5IGlzIHN0cmluZ1xuXHRcdHJldHVybiAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Jztcblx0fSBlbHNlIGlmIChpc1VSTFNlYXJjaFBhcmFtcyhib2R5KSkge1xuXHRcdC8vIGJvZHkgaXMgYSBVUkxTZWFyY2hQYXJhbXNcblx0XHRyZXR1cm4gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Jztcblx0fSBlbHNlIGlmIChib2R5IGluc3RhbmNlb2YgQmxvYikge1xuXHRcdC8vIGJvZHkgaXMgYmxvYlxuXHRcdHJldHVybiBib2R5LnR5cGUgfHwgbnVsbDtcblx0fSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIoYm9keSkpIHtcblx0XHQvLyBib2R5IGlzIGJ1ZmZlclxuXHRcdHJldHVybiBudWxsO1xuXHR9IGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJykge1xuXHRcdC8vIGJvZHkgaXMgYXJyYXkgYnVmZmVyXG5cdFx0cmV0dXJuIG51bGw7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGJvZHkuZ2V0Qm91bmRhcnkgPT09ICdmdW5jdGlvbicpIHtcblx0XHQvLyBkZXRlY3QgZm9ybSBkYXRhIGlucHV0IGZyb20gZm9ybS1kYXRhIG1vZHVsZVxuXHRcdHJldHVybiBgbXVsdGlwYXJ0L2Zvcm0tZGF0YTtib3VuZGFyeT0ke2JvZHkuZ2V0Qm91bmRhcnkoKX1gO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGJvZHkgaXMgc3RyZWFtXG5cdFx0Ly8gY2FuJ3QgcmVhbGx5IGRvIG11Y2ggYWJvdXQgdGhpc1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogVGhlIEZldGNoIFN0YW5kYXJkIHRyZWF0cyB0aGlzIGFzIGlmIFwidG90YWwgYnl0ZXNcIiBpcyBhIHByb3BlcnR5IG9uIHRoZSBib2R5LlxuICogRm9yIHVzLCB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgZ2V0IGl0IHdpdGggYSBmdW5jdGlvbi5cbiAqXG4gKiByZWY6IGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWJvZHktdG90YWwtYnl0ZXNcbiAqXG4gKiBAcGFyYW0gICBCb2R5ICAgIGluc3RhbmNlICAgSW5zdGFuY2Ugb2YgQm9keVxuICogQHJldHVybiAgTnVtYmVyPyAgICAgICAgICAgIE51bWJlciBvZiBieXRlcywgb3IgbnVsbCBpZiBub3QgcG9zc2libGVcbiAqL1xuZnVuY3Rpb24gZ2V0VG90YWxCeXRlcyhpbnN0YW5jZSkge1xuXHRjb25zdCBib2R5ID0gaW5zdGFuY2UuYm9keTtcblxuXHQvLyBpc3RhbmJ1bCBpZ25vcmUgaWY6IGluY2x1ZGVkIGZvciBjb21wbGV0aW9uXG5cblx0aWYgKGJvZHkgPT09IG51bGwpIHtcblx0XHQvLyBib2R5IGlzIG51bGxcblx0XHRyZXR1cm4gMDtcblx0fSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcblx0XHQvLyBib2R5IGlzIHN0cmluZ1xuXHRcdHJldHVybiBCdWZmZXIuYnl0ZUxlbmd0aChib2R5KTtcblx0fSBlbHNlIGlmIChpc1VSTFNlYXJjaFBhcmFtcyhib2R5KSkge1xuXHRcdC8vIGJvZHkgaXMgVVJMU2VhcmNoUGFyYW1zXG5cdFx0cmV0dXJuIEJ1ZmZlci5ieXRlTGVuZ3RoKFN0cmluZyhib2R5KSk7XG5cdH0gZWxzZSBpZiAoYm9keSBpbnN0YW5jZW9mIEJsb2IpIHtcblx0XHQvLyBib2R5IGlzIGJsb2Jcblx0XHRyZXR1cm4gYm9keS5zaXplO1xuXHR9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcihib2R5KSkge1xuXHRcdC8vIGJvZHkgaXMgYnVmZmVyXG5cdFx0cmV0dXJuIGJvZHkubGVuZ3RoO1xuXHR9IGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJykge1xuXHRcdC8vIGJvZHkgaXMgYXJyYXkgYnVmZmVyXG5cdFx0cmV0dXJuIGJvZHkuYnl0ZUxlbmd0aDtcblx0fSBlbHNlIGlmIChib2R5ICYmIHR5cGVvZiBib2R5LmdldExlbmd0aFN5bmMgPT09ICdmdW5jdGlvbicpIHtcblx0XHQvLyBkZXRlY3QgZm9ybSBkYXRhIGlucHV0IGZyb20gZm9ybS1kYXRhIG1vZHVsZVxuXHRcdGlmIChib2R5Ll9sZW5ndGhSZXRyaWV2ZXJzICYmIGJvZHkuX2xlbmd0aFJldHJpZXZlcnMubGVuZ3RoID09IDAgfHwgLy8gMS54XG5cdFx0Ym9keS5oYXNLbm93bkxlbmd0aCAmJiBib2R5Lmhhc0tub3duTGVuZ3RoKCkpIHtcblx0XHRcdC8vIDIueFxuXHRcdFx0cmV0dXJuIGJvZHkuZ2V0TGVuZ3RoU3luYygpO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fSBlbHNlIHtcblx0XHQvLyBib2R5IGlzIHN0cmVhbVxuXHRcdC8vIGNhbid0IHJlYWxseSBkbyBtdWNoIGFib3V0IHRoaXNcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxufVxuXG4vKipcbiAqIFdyaXRlIGEgQm9keSB0byBhIE5vZGUuanMgV3JpdGFibGVTdHJlYW0gKGUuZy4gaHR0cC5SZXF1ZXN0KSBvYmplY3QuXG4gKlxuICogQHBhcmFtICAgQm9keSAgICBpbnN0YW5jZSAgIEluc3RhbmNlIG9mIEJvZHlcbiAqIEByZXR1cm4gIFZvaWRcbiAqL1xuZnVuY3Rpb24gd3JpdGVUb1N0cmVhbShkZXN0LCBpbnN0YW5jZSkge1xuXHRjb25zdCBib2R5ID0gaW5zdGFuY2UuYm9keTtcblxuXG5cdGlmIChib2R5ID09PSBudWxsKSB7XG5cdFx0Ly8gYm9keSBpcyBudWxsXG5cdFx0ZGVzdC5lbmQoKTtcblx0fSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcblx0XHQvLyBib2R5IGlzIHN0cmluZ1xuXHRcdGRlc3Qud3JpdGUoYm9keSk7XG5cdFx0ZGVzdC5lbmQoKTtcblx0fSBlbHNlIGlmIChpc1VSTFNlYXJjaFBhcmFtcyhib2R5KSkge1xuXHRcdC8vIGJvZHkgaXMgVVJMU2VhcmNoUGFyYW1zXG5cdFx0ZGVzdC53cml0ZShCdWZmZXIuZnJvbShTdHJpbmcoYm9keSkpKTtcblx0XHRkZXN0LmVuZCgpO1xuXHR9IGVsc2UgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG5cdFx0Ly8gYm9keSBpcyBibG9iXG5cdFx0ZGVzdC53cml0ZShib2R5W0JVRkZFUl0pO1xuXHRcdGRlc3QuZW5kKCk7XG5cdH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKGJvZHkpKSB7XG5cdFx0Ly8gYm9keSBpcyBidWZmZXJcblx0XHRkZXN0LndyaXRlKGJvZHkpO1xuXHRcdGRlc3QuZW5kKCk7XG5cdH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJvZHkpID09PSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nKSB7XG5cdFx0Ly8gYm9keSBpcyBhcnJheSBidWZmZXJcblx0XHRkZXN0LndyaXRlKEJ1ZmZlci5mcm9tKGJvZHkpKTtcblx0XHRkZXN0LmVuZCgpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIGJvZHkgaXMgc3RyZWFtXG5cdFx0Ym9keS5waXBlKGRlc3QpO1xuXHR9XG59XG5cbi8vIGV4cG9zZSBQcm9taXNlXG5Cb2R5LlByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcblxuLyoqXG4gKiBoZWFkZXJzLmpzXG4gKlxuICogSGVhZGVycyBjbGFzcyBvZmZlcnMgY29udmVuaWVudCBoZWxwZXJzXG4gKi9cblxuY29uc3QgaW52YWxpZFRva2VuUmVnZXggPSAvW15cXF5fYGEtekEtWlxcLTAtOSEjJCUmJyorLnx+XS87XG5jb25zdCBpbnZhbGlkSGVhZGVyQ2hhclJlZ2V4ID0gL1teXFx0XFx4MjAtXFx4N2VcXHg4MC1cXHhmZl0vO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZU5hbWUobmFtZSkge1xuXHRuYW1lID0gYCR7bmFtZX1gO1xuXHRpZiAoaW52YWxpZFRva2VuUmVnZXgudGVzdChuYW1lKSkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYCR7bmFtZX0gaXMgbm90IGEgbGVnYWwgSFRUUCBoZWFkZXIgbmFtZWApO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlVmFsdWUodmFsdWUpIHtcblx0dmFsdWUgPSBgJHt2YWx1ZX1gO1xuXHRpZiAoaW52YWxpZEhlYWRlckNoYXJSZWdleC50ZXN0KHZhbHVlKSkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYCR7dmFsdWV9IGlzIG5vdCBhIGxlZ2FsIEhUVFAgaGVhZGVyIHZhbHVlYCk7XG5cdH1cbn1cblxuLyoqXG4gKiBGaW5kIHRoZSBrZXkgaW4gdGhlIG1hcCBvYmplY3QgZ2l2ZW4gYSBoZWFkZXIgbmFtZS5cbiAqXG4gKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBub3QgZm91bmQuXG4gKlxuICogQHBhcmFtICAgU3RyaW5nICBuYW1lICBIZWFkZXIgbmFtZVxuICogQHJldHVybiAgU3RyaW5nfFVuZGVmaW5lZFxuICovXG5mdW5jdGlvbiBmaW5kKG1hcCwgbmFtZSkge1xuXHRuYW1lID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRmb3IgKGNvbnN0IGtleSBpbiBtYXApIHtcblx0XHRpZiAoa2V5LnRvTG93ZXJDYXNlKCkgPT09IG5hbWUpIHtcblx0XHRcdHJldHVybiBrZXk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmNvbnN0IE1BUCA9IFN5bWJvbCgnbWFwJyk7XG5jbGFzcyBIZWFkZXJzIHtcblx0LyoqXG4gICogSGVhZGVycyBjbGFzc1xuICAqXG4gICogQHBhcmFtICAgT2JqZWN0ICBoZWFkZXJzICBSZXNwb25zZSBoZWFkZXJzXG4gICogQHJldHVybiAgVm9pZFxuICAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRsZXQgaW5pdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkO1xuXG5cdFx0dGhpc1tNQVBdID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuXHRcdGlmIChpbml0IGluc3RhbmNlb2YgSGVhZGVycykge1xuXHRcdFx0Y29uc3QgcmF3SGVhZGVycyA9IGluaXQucmF3KCk7XG5cdFx0XHRjb25zdCBoZWFkZXJOYW1lcyA9IE9iamVjdC5rZXlzKHJhd0hlYWRlcnMpO1xuXG5cdFx0XHRmb3IgKGNvbnN0IGhlYWRlck5hbWUgb2YgaGVhZGVyTmFtZXMpIHtcblx0XHRcdFx0Zm9yIChjb25zdCB2YWx1ZSBvZiByYXdIZWFkZXJzW2hlYWRlck5hbWVdKSB7XG5cdFx0XHRcdFx0dGhpcy5hcHBlbmQoaGVhZGVyTmFtZSwgdmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBXZSBkb24ndCB3b3JyeSBhYm91dCBjb252ZXJ0aW5nIHByb3AgdG8gQnl0ZVN0cmluZyBoZXJlIGFzIGFwcGVuZCgpXG5cdFx0Ly8gd2lsbCBoYW5kbGUgaXQuXG5cdFx0aWYgKGluaXQgPT0gbnVsbCkge1xuXHRcdFx0Ly8gbm8gb3Bcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBpbml0ID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Y29uc3QgbWV0aG9kID0gaW5pdFtTeW1ib2wuaXRlcmF0b3JdO1xuXHRcdFx0aWYgKG1ldGhvZCAhPSBudWxsKSB7XG5cdFx0XHRcdGlmICh0eXBlb2YgbWV0aG9kICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignSGVhZGVyIHBhaXJzIG11c3QgYmUgaXRlcmFibGUnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIHNlcXVlbmNlPHNlcXVlbmNlPEJ5dGVTdHJpbmc+PlxuXHRcdFx0XHQvLyBOb3RlOiBwZXIgc3BlYyB3ZSBoYXZlIHRvIGZpcnN0IGV4aGF1c3QgdGhlIGxpc3RzIHRoZW4gcHJvY2VzcyB0aGVtXG5cdFx0XHRcdGNvbnN0IHBhaXJzID0gW107XG5cdFx0XHRcdGZvciAoY29uc3QgcGFpciBvZiBpbml0KSB7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiBwYWlyICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgcGFpcltTeW1ib2wuaXRlcmF0b3JdICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFYWNoIGhlYWRlciBwYWlyIG11c3QgYmUgaXRlcmFibGUnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cGFpcnMucHVzaChBcnJheS5mcm9tKHBhaXIpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuXHRcdFx0XHRcdGlmIChwYWlyLmxlbmd0aCAhPT0gMikge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRWFjaCBoZWFkZXIgcGFpciBtdXN0IGJlIGEgbmFtZS92YWx1ZSB0dXBsZScpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmFwcGVuZChwYWlyWzBdLCBwYWlyWzFdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gcmVjb3JkPEJ5dGVTdHJpbmcsIEJ5dGVTdHJpbmc+XG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGluaXQpKSB7XG5cdFx0XHRcdFx0Y29uc3QgdmFsdWUgPSBpbml0W2tleV07XG5cdFx0XHRcdFx0dGhpcy5hcHBlbmQoa2V5LCB2YWx1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignUHJvdmlkZWQgaW5pdGlhbGl6ZXIgbXVzdCBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cdH1cblxuXHQvKipcbiAgKiBSZXR1cm4gY29tYmluZWQgaGVhZGVyIHZhbHVlIGdpdmVuIG5hbWVcbiAgKlxuICAqIEBwYXJhbSAgIFN0cmluZyAgbmFtZSAgSGVhZGVyIG5hbWVcbiAgKiBAcmV0dXJuICBNaXhlZFxuICAqL1xuXHRnZXQobmFtZSkge1xuXHRcdG5hbWUgPSBgJHtuYW1lfWA7XG5cdFx0dmFsaWRhdGVOYW1lKG5hbWUpO1xuXHRcdGNvbnN0IGtleSA9IGZpbmQodGhpc1tNQVBdLCBuYW1lKTtcblx0XHRpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzW01BUF1ba2V5XS5qb2luKCcsICcpO1xuXHR9XG5cblx0LyoqXG4gICogSXRlcmF0ZSBvdmVyIGFsbCBoZWFkZXJzXG4gICpcbiAgKiBAcGFyYW0gICBGdW5jdGlvbiAgY2FsbGJhY2sgIEV4ZWN1dGVkIGZvciBlYWNoIGl0ZW0gd2l0aCBwYXJhbWV0ZXJzICh2YWx1ZSwgbmFtZSwgdGhpc0FyZylcbiAgKiBAcGFyYW0gICBCb29sZWFuICAgdGhpc0FyZyAgIGB0aGlzYCBjb250ZXh0IGZvciBjYWxsYmFjayBmdW5jdGlvblxuICAqIEByZXR1cm4gIFZvaWRcbiAgKi9cblx0Zm9yRWFjaChjYWxsYmFjaykge1xuXHRcdGxldCB0aGlzQXJnID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG5cblx0XHRsZXQgcGFpcnMgPSBnZXRIZWFkZXJzKHRoaXMpO1xuXHRcdGxldCBpID0gMDtcblx0XHR3aGlsZSAoaSA8IHBhaXJzLmxlbmd0aCkge1xuXHRcdFx0dmFyIF9wYWlycyRpID0gcGFpcnNbaV07XG5cdFx0XHRjb25zdCBuYW1lID0gX3BhaXJzJGlbMF0sXG5cdFx0XHQgICAgICB2YWx1ZSA9IF9wYWlycyRpWzFdO1xuXG5cdFx0XHRjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlzKTtcblx0XHRcdHBhaXJzID0gZ2V0SGVhZGVycyh0aGlzKTtcblx0XHRcdGkrKztcblx0XHR9XG5cdH1cblxuXHQvKipcbiAgKiBPdmVyd3JpdGUgaGVhZGVyIHZhbHVlcyBnaXZlbiBuYW1lXG4gICpcbiAgKiBAcGFyYW0gICBTdHJpbmcgIG5hbWUgICBIZWFkZXIgbmFtZVxuICAqIEBwYXJhbSAgIFN0cmluZyAgdmFsdWUgIEhlYWRlciB2YWx1ZVxuICAqIEByZXR1cm4gIFZvaWRcbiAgKi9cblx0c2V0KG5hbWUsIHZhbHVlKSB7XG5cdFx0bmFtZSA9IGAke25hbWV9YDtcblx0XHR2YWx1ZSA9IGAke3ZhbHVlfWA7XG5cdFx0dmFsaWRhdGVOYW1lKG5hbWUpO1xuXHRcdHZhbGlkYXRlVmFsdWUodmFsdWUpO1xuXHRcdGNvbnN0IGtleSA9IGZpbmQodGhpc1tNQVBdLCBuYW1lKTtcblx0XHR0aGlzW01BUF1ba2V5ICE9PSB1bmRlZmluZWQgPyBrZXkgOiBuYW1lXSA9IFt2YWx1ZV07XG5cdH1cblxuXHQvKipcbiAgKiBBcHBlbmQgYSB2YWx1ZSBvbnRvIGV4aXN0aW5nIGhlYWRlclxuICAqXG4gICogQHBhcmFtICAgU3RyaW5nICBuYW1lICAgSGVhZGVyIG5hbWVcbiAgKiBAcGFyYW0gICBTdHJpbmcgIHZhbHVlICBIZWFkZXIgdmFsdWVcbiAgKiBAcmV0dXJuICBWb2lkXG4gICovXG5cdGFwcGVuZChuYW1lLCB2YWx1ZSkge1xuXHRcdG5hbWUgPSBgJHtuYW1lfWA7XG5cdFx0dmFsdWUgPSBgJHt2YWx1ZX1gO1xuXHRcdHZhbGlkYXRlTmFtZShuYW1lKTtcblx0XHR2YWxpZGF0ZVZhbHVlKHZhbHVlKTtcblx0XHRjb25zdCBrZXkgPSBmaW5kKHRoaXNbTUFQXSwgbmFtZSk7XG5cdFx0aWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzW01BUF1ba2V5XS5wdXNoKHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpc1tNQVBdW25hbWVdID0gW3ZhbHVlXTtcblx0XHR9XG5cdH1cblxuXHQvKipcbiAgKiBDaGVjayBmb3IgaGVhZGVyIG5hbWUgZXhpc3RlbmNlXG4gICpcbiAgKiBAcGFyYW0gICBTdHJpbmcgICBuYW1lICBIZWFkZXIgbmFtZVxuICAqIEByZXR1cm4gIEJvb2xlYW5cbiAgKi9cblx0aGFzKG5hbWUpIHtcblx0XHRuYW1lID0gYCR7bmFtZX1gO1xuXHRcdHZhbGlkYXRlTmFtZShuYW1lKTtcblx0XHRyZXR1cm4gZmluZCh0aGlzW01BUF0sIG5hbWUpICE9PSB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcbiAgKiBEZWxldGUgYWxsIGhlYWRlciB2YWx1ZXMgZ2l2ZW4gbmFtZVxuICAqXG4gICogQHBhcmFtICAgU3RyaW5nICBuYW1lICBIZWFkZXIgbmFtZVxuICAqIEByZXR1cm4gIFZvaWRcbiAgKi9cblx0ZGVsZXRlKG5hbWUpIHtcblx0XHRuYW1lID0gYCR7bmFtZX1gO1xuXHRcdHZhbGlkYXRlTmFtZShuYW1lKTtcblx0XHRjb25zdCBrZXkgPSBmaW5kKHRoaXNbTUFQXSwgbmFtZSk7XG5cdFx0aWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkZWxldGUgdGhpc1tNQVBdW2tleV07XG5cdFx0fVxuXHR9XG5cblx0LyoqXG4gICogUmV0dXJuIHJhdyBoZWFkZXJzIChub24tc3BlYyBhcGkpXG4gICpcbiAgKiBAcmV0dXJuICBPYmplY3RcbiAgKi9cblx0cmF3KCkge1xuXHRcdHJldHVybiB0aGlzW01BUF07XG5cdH1cblxuXHQvKipcbiAgKiBHZXQgYW4gaXRlcmF0b3Igb24ga2V5cy5cbiAgKlxuICAqIEByZXR1cm4gIEl0ZXJhdG9yXG4gICovXG5cdGtleXMoKSB7XG5cdFx0cmV0dXJuIGNyZWF0ZUhlYWRlcnNJdGVyYXRvcih0aGlzLCAna2V5Jyk7XG5cdH1cblxuXHQvKipcbiAgKiBHZXQgYW4gaXRlcmF0b3Igb24gdmFsdWVzLlxuICAqXG4gICogQHJldHVybiAgSXRlcmF0b3JcbiAgKi9cblx0dmFsdWVzKCkge1xuXHRcdHJldHVybiBjcmVhdGVIZWFkZXJzSXRlcmF0b3IodGhpcywgJ3ZhbHVlJyk7XG5cdH1cblxuXHQvKipcbiAgKiBHZXQgYW4gaXRlcmF0b3Igb24gZW50cmllcy5cbiAgKlxuICAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgaXRlcmF0b3Igb2YgdGhlIEhlYWRlcnMgb2JqZWN0LlxuICAqXG4gICogQHJldHVybiAgSXRlcmF0b3JcbiAgKi9cblx0W1N5bWJvbC5pdGVyYXRvcl0oKSB7XG5cdFx0cmV0dXJuIGNyZWF0ZUhlYWRlcnNJdGVyYXRvcih0aGlzLCAna2V5K3ZhbHVlJyk7XG5cdH1cbn1cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBIZWFkZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoSGVhZGVycy5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZywge1xuXHR2YWx1ZTogJ0hlYWRlcnMnLFxuXHR3cml0YWJsZTogZmFsc2UsXG5cdGVudW1lcmFibGU6IGZhbHNlLFxuXHRjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhIZWFkZXJzLnByb3RvdHlwZSwge1xuXHRnZXQ6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRmb3JFYWNoOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0c2V0OiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0YXBwZW5kOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0aGFzOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0ZGVsZXRlOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0a2V5czogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdHZhbHVlczogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdGVudHJpZXM6IHsgZW51bWVyYWJsZTogdHJ1ZSB9XG59KTtcblxuZnVuY3Rpb24gZ2V0SGVhZGVycyhoZWFkZXJzKSB7XG5cdGxldCBraW5kID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAna2V5K3ZhbHVlJztcblxuXHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaGVhZGVyc1tNQVBdKS5zb3J0KCk7XG5cdHJldHVybiBrZXlzLm1hcChraW5kID09PSAna2V5JyA/IGZ1bmN0aW9uIChrKSB7XG5cdFx0cmV0dXJuIGsudG9Mb3dlckNhc2UoKTtcblx0fSA6IGtpbmQgPT09ICd2YWx1ZScgPyBmdW5jdGlvbiAoaykge1xuXHRcdHJldHVybiBoZWFkZXJzW01BUF1ba10uam9pbignLCAnKTtcblx0fSA6IGZ1bmN0aW9uIChrKSB7XG5cdFx0cmV0dXJuIFtrLnRvTG93ZXJDYXNlKCksIGhlYWRlcnNbTUFQXVtrXS5qb2luKCcsICcpXTtcblx0fSk7XG59XG5cbmNvbnN0IElOVEVSTkFMID0gU3ltYm9sKCdpbnRlcm5hbCcpO1xuXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzSXRlcmF0b3IodGFyZ2V0LCBraW5kKSB7XG5cdGNvbnN0IGl0ZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShIZWFkZXJzSXRlcmF0b3JQcm90b3R5cGUpO1xuXHRpdGVyYXRvcltJTlRFUk5BTF0gPSB7XG5cdFx0dGFyZ2V0LFxuXHRcdGtpbmQsXG5cdFx0aW5kZXg6IDBcblx0fTtcblx0cmV0dXJuIGl0ZXJhdG9yO1xufVxuXG5jb25zdCBIZWFkZXJzSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2Yoe1xuXHRuZXh0KCkge1xuXHRcdC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuXHRcdGlmICghdGhpcyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykgIT09IEhlYWRlcnNJdGVyYXRvclByb3RvdHlwZSkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignVmFsdWUgb2YgYHRoaXNgIGlzIG5vdCBhIEhlYWRlcnNJdGVyYXRvcicpO1xuXHRcdH1cblxuXHRcdHZhciBfSU5URVJOQUwgPSB0aGlzW0lOVEVSTkFMXTtcblx0XHRjb25zdCB0YXJnZXQgPSBfSU5URVJOQUwudGFyZ2V0LFxuXHRcdCAgICAgIGtpbmQgPSBfSU5URVJOQUwua2luZCxcblx0XHQgICAgICBpbmRleCA9IF9JTlRFUk5BTC5pbmRleDtcblxuXHRcdGNvbnN0IHZhbHVlcyA9IGdldEhlYWRlcnModGFyZ2V0LCBraW5kKTtcblx0XHRjb25zdCBsZW4gPSB2YWx1ZXMubGVuZ3RoO1xuXHRcdGlmIChpbmRleCA+PSBsZW4pIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHZhbHVlOiB1bmRlZmluZWQsXG5cdFx0XHRcdGRvbmU6IHRydWVcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0dGhpc1tJTlRFUk5BTF0uaW5kZXggPSBpbmRleCArIDE7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0dmFsdWU6IHZhbHVlc1tpbmRleF0sXG5cdFx0XHRkb25lOiBmYWxzZVxuXHRcdH07XG5cdH1cbn0sIE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoW11bU3ltYm9sLml0ZXJhdG9yXSgpKSkpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoSGVhZGVyc0l0ZXJhdG9yUHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHtcblx0dmFsdWU6ICdIZWFkZXJzSXRlcmF0b3InLFxuXHR3cml0YWJsZTogZmFsc2UsXG5cdGVudW1lcmFibGU6IGZhbHNlLFxuXHRjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG4vKipcbiAqIEV4cG9ydCB0aGUgSGVhZGVycyBvYmplY3QgaW4gYSBmb3JtIHRoYXQgTm9kZS5qcyBjYW4gY29uc3VtZS5cbiAqXG4gKiBAcGFyYW0gICBIZWFkZXJzICBoZWFkZXJzXG4gKiBAcmV0dXJuICBPYmplY3RcbiAqL1xuZnVuY3Rpb24gZXhwb3J0Tm9kZUNvbXBhdGlibGVIZWFkZXJzKGhlYWRlcnMpIHtcblx0Y29uc3Qgb2JqID0gT2JqZWN0LmFzc2lnbih7IF9fcHJvdG9fXzogbnVsbCB9LCBoZWFkZXJzW01BUF0pO1xuXG5cdC8vIGh0dHAucmVxdWVzdCgpIG9ubHkgc3VwcG9ydHMgc3RyaW5nIGFzIEhvc3QgaGVhZGVyLiBUaGlzIGhhY2sgbWFrZXNcblx0Ly8gc3BlY2lmeWluZyBjdXN0b20gSG9zdCBoZWFkZXIgcG9zc2libGUuXG5cdGNvbnN0IGhvc3RIZWFkZXJLZXkgPSBmaW5kKGhlYWRlcnNbTUFQXSwgJ0hvc3QnKTtcblx0aWYgKGhvc3RIZWFkZXJLZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdG9ialtob3N0SGVhZGVyS2V5XSA9IG9ialtob3N0SGVhZGVyS2V5XVswXTtcblx0fVxuXG5cdHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgSGVhZGVycyBvYmplY3QgZnJvbSBhbiBvYmplY3Qgb2YgaGVhZGVycywgaWdub3JpbmcgdGhvc2UgdGhhdCBkb1xuICogbm90IGNvbmZvcm0gdG8gSFRUUCBncmFtbWFyIHByb2R1Y3Rpb25zLlxuICpcbiAqIEBwYXJhbSAgIE9iamVjdCAgb2JqICBPYmplY3Qgb2YgaGVhZGVyc1xuICogQHJldHVybiAgSGVhZGVyc1xuICovXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzTGVuaWVudChvYmopIHtcblx0Y29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG5cdGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhvYmopKSB7XG5cdFx0aWYgKGludmFsaWRUb2tlblJlZ2V4LnRlc3QobmFtZSkpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRpZiAoQXJyYXkuaXNBcnJheShvYmpbbmFtZV0pKSB7XG5cdFx0XHRmb3IgKGNvbnN0IHZhbCBvZiBvYmpbbmFtZV0pIHtcblx0XHRcdFx0aWYgKGludmFsaWRIZWFkZXJDaGFyUmVnZXgudGVzdCh2YWwpKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGhlYWRlcnNbTUFQXVtuYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0aGVhZGVyc1tNQVBdW25hbWVdID0gW3ZhbF07XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aGVhZGVyc1tNQVBdW25hbWVdLnB1c2godmFsKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoIWludmFsaWRIZWFkZXJDaGFyUmVnZXgudGVzdChvYmpbbmFtZV0pKSB7XG5cdFx0XHRoZWFkZXJzW01BUF1bbmFtZV0gPSBbb2JqW25hbWVdXTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGhlYWRlcnM7XG59XG5cbi8qKlxuICogcmVzcG9uc2UuanNcbiAqXG4gKiBSZXNwb25zZSBjbGFzcyBwcm92aWRlcyBjb250ZW50IGRlY29kaW5nXG4gKi9cblxudmFyIF9yZXF1aXJlJDEgPSByZXF1aXJlKCdodHRwJyk7XG5cbmNvbnN0IFNUQVRVU19DT0RFUyA9IF9yZXF1aXJlJDEuU1RBVFVTX0NPREVTO1xuXG5cbmNvbnN0IElOVEVSTkFMUyQxID0gU3ltYm9sKCdSZXNwb25zZSBpbnRlcm5hbHMnKTtcblxuLyoqXG4gKiBSZXNwb25zZSBjbGFzc1xuICpcbiAqIEBwYXJhbSAgIFN0cmVhbSAgYm9keSAgUmVhZGFibGUgc3RyZWFtXG4gKiBAcGFyYW0gICBPYmplY3QgIG9wdHMgIFJlc3BvbnNlIG9wdGlvbnNcbiAqIEByZXR1cm4gIFZvaWRcbiAqL1xuY2xhc3MgUmVzcG9uc2Uge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRsZXQgYm9keSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogbnVsbDtcblx0XHRsZXQgb3B0cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cblx0XHRCb2R5LmNhbGwodGhpcywgYm9keSwgb3B0cyk7XG5cblx0XHRjb25zdCBzdGF0dXMgPSBvcHRzLnN0YXR1cyB8fCAyMDA7XG5cblx0XHR0aGlzW0lOVEVSTkFMUyQxXSA9IHtcblx0XHRcdHVybDogb3B0cy51cmwsXG5cdFx0XHRzdGF0dXMsXG5cdFx0XHRzdGF0dXNUZXh0OiBvcHRzLnN0YXR1c1RleHQgfHwgU1RBVFVTX0NPREVTW3N0YXR1c10sXG5cdFx0XHRoZWFkZXJzOiBuZXcgSGVhZGVycyhvcHRzLmhlYWRlcnMpXG5cdFx0fTtcblx0fVxuXG5cdGdldCB1cmwoKSB7XG5cdFx0cmV0dXJuIHRoaXNbSU5URVJOQUxTJDFdLnVybDtcblx0fVxuXG5cdGdldCBzdGF0dXMoKSB7XG5cdFx0cmV0dXJuIHRoaXNbSU5URVJOQUxTJDFdLnN0YXR1cztcblx0fVxuXG5cdC8qKlxuICAqIENvbnZlbmllbmNlIHByb3BlcnR5IHJlcHJlc2VudGluZyBpZiB0aGUgcmVxdWVzdCBlbmRlZCBub3JtYWxseVxuICAqL1xuXHRnZXQgb2soKSB7XG5cdFx0cmV0dXJuIHRoaXNbSU5URVJOQUxTJDFdLnN0YXR1cyA+PSAyMDAgJiYgdGhpc1tJTlRFUk5BTFMkMV0uc3RhdHVzIDwgMzAwO1xuXHR9XG5cblx0Z2V0IHN0YXR1c1RleHQoKSB7XG5cdFx0cmV0dXJuIHRoaXNbSU5URVJOQUxTJDFdLnN0YXR1c1RleHQ7XG5cdH1cblxuXHRnZXQgaGVhZGVycygpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFMkMV0uaGVhZGVycztcblx0fVxuXG5cdC8qKlxuICAqIENsb25lIHRoaXMgcmVzcG9uc2VcbiAgKlxuICAqIEByZXR1cm4gIFJlc3BvbnNlXG4gICovXG5cdGNsb25lKCkge1xuXHRcdHJldHVybiBuZXcgUmVzcG9uc2UoY2xvbmUodGhpcyksIHtcblx0XHRcdHVybDogdGhpcy51cmwsXG5cdFx0XHRzdGF0dXM6IHRoaXMuc3RhdHVzLFxuXHRcdFx0c3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuXHRcdFx0aGVhZGVyczogdGhpcy5oZWFkZXJzLFxuXHRcdFx0b2s6IHRoaXMub2tcblx0XHR9KTtcblx0fVxufVxuXG5Cb2R5Lm1peEluKFJlc3BvbnNlLnByb3RvdHlwZSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFJlc3BvbnNlLnByb3RvdHlwZSwge1xuXHR1cmw6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRzdGF0dXM6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRvazogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdHN0YXR1c1RleHQ6IHsgZW51bWVyYWJsZTogdHJ1ZSB9LFxuXHRoZWFkZXJzOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0Y2xvbmU6IHsgZW51bWVyYWJsZTogdHJ1ZSB9XG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlc3BvbnNlLnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnLCB7XG5cdHZhbHVlOiAnUmVzcG9uc2UnLFxuXHR3cml0YWJsZTogZmFsc2UsXG5cdGVudW1lcmFibGU6IGZhbHNlLFxuXHRjb25maWd1cmFibGU6IHRydWVcbn0pO1xuXG4vKipcbiAqIHJlcXVlc3QuanNcbiAqXG4gKiBSZXF1ZXN0IGNsYXNzIGNvbnRhaW5zIHNlcnZlciBvbmx5IG9wdGlvbnNcbiAqXG4gKiBBbGwgc3BlYyBhbGdvcml0aG0gc3RlcCBudW1iZXJzIGFyZSBiYXNlZCBvbiBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy9jb21taXQtc25hcHNob3RzL2FlNzE2ODIyY2IzYTYxODQzMjI2Y2QwOTBlZWZjNjU4OTQ0NmMxZDIvLlxuICovXG5cbnZhciBfcmVxdWlyZSQyID0gcmVxdWlyZSgndXJsJyk7XG5cbmNvbnN0IGZvcm1hdF91cmwgPSBfcmVxdWlyZSQyLmZvcm1hdDtcbmNvbnN0IHBhcnNlX3VybCA9IF9yZXF1aXJlJDIucGFyc2U7XG5cblxuY29uc3QgSU5URVJOQUxTJDIgPSBTeW1ib2woJ1JlcXVlc3QgaW50ZXJuYWxzJyk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBSZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSAgIE1peGVkICAgaW5wdXRcbiAqIEByZXR1cm4gIEJvb2xlYW5cbiAqL1xuZnVuY3Rpb24gaXNSZXF1ZXN0KGlucHV0KSB7XG5cdHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBpbnB1dFtJTlRFUk5BTFMkMl0gPT09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgY2xhc3NcbiAqXG4gKiBAcGFyYW0gICBNaXhlZCAgIGlucHV0ICBVcmwgb3IgUmVxdWVzdCBpbnN0YW5jZVxuICogQHBhcmFtICAgT2JqZWN0ICBpbml0ICAgQ3VzdG9tIG9wdGlvbnNcbiAqIEByZXR1cm4gIFZvaWRcbiAqL1xuY2xhc3MgUmVxdWVzdCB7XG5cdGNvbnN0cnVjdG9yKGlucHV0KSB7XG5cdFx0bGV0IGluaXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG5cdFx0bGV0IHBhcnNlZFVSTDtcblxuXHRcdC8vIG5vcm1hbGl6ZSBpbnB1dFxuXHRcdGlmICghaXNSZXF1ZXN0KGlucHV0KSkge1xuXHRcdFx0aWYgKGlucHV0ICYmIGlucHV0LmhyZWYpIHtcblx0XHRcdFx0Ly8gaW4gb3JkZXIgdG8gc3VwcG9ydCBOb2RlLmpzJyBVcmwgb2JqZWN0czsgdGhvdWdoIFdIQVRXRydzIFVSTCBvYmplY3RzXG5cdFx0XHRcdC8vIHdpbGwgZmFsbCBpbnRvIHRoaXMgYnJhbmNoIGFsc28gKHNpbmNlIHRoZWlyIGB0b1N0cmluZygpYCB3aWxsIHJldHVyblxuXHRcdFx0XHQvLyBgaHJlZmAgcHJvcGVydHkgYW55d2F5KVxuXHRcdFx0XHRwYXJzZWRVUkwgPSBwYXJzZV91cmwoaW5wdXQuaHJlZik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBjb2VyY2UgaW5wdXQgdG8gYSBzdHJpbmcgYmVmb3JlIGF0dGVtcHRpbmcgdG8gcGFyc2Vcblx0XHRcdFx0cGFyc2VkVVJMID0gcGFyc2VfdXJsKGAke2lucHV0fWApO1xuXHRcdFx0fVxuXHRcdFx0aW5wdXQgPSB7fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cGFyc2VkVVJMID0gcGFyc2VfdXJsKGlucHV0LnVybCk7XG5cdFx0fVxuXG5cdFx0bGV0IG1ldGhvZCA9IGluaXQubWV0aG9kIHx8IGlucHV0Lm1ldGhvZCB8fCAnR0VUJztcblx0XHRtZXRob2QgPSBtZXRob2QudG9VcHBlckNhc2UoKTtcblxuXHRcdGlmICgoaW5pdC5ib2R5ICE9IG51bGwgfHwgaXNSZXF1ZXN0KGlucHV0KSAmJiBpbnB1dC5ib2R5ICE9PSBudWxsKSAmJiAobWV0aG9kID09PSAnR0VUJyB8fCBtZXRob2QgPT09ICdIRUFEJykpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ1JlcXVlc3Qgd2l0aCBHRVQvSEVBRCBtZXRob2QgY2Fubm90IGhhdmUgYm9keScpO1xuXHRcdH1cblxuXHRcdGxldCBpbnB1dEJvZHkgPSBpbml0LmJvZHkgIT0gbnVsbCA/IGluaXQuYm9keSA6IGlzUmVxdWVzdChpbnB1dCkgJiYgaW5wdXQuYm9keSAhPT0gbnVsbCA/IGNsb25lKGlucHV0KSA6IG51bGw7XG5cblx0XHRCb2R5LmNhbGwodGhpcywgaW5wdXRCb2R5LCB7XG5cdFx0XHR0aW1lb3V0OiBpbml0LnRpbWVvdXQgfHwgaW5wdXQudGltZW91dCB8fCAwLFxuXHRcdFx0c2l6ZTogaW5pdC5zaXplIHx8IGlucHV0LnNpemUgfHwgMFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGluaXQuaGVhZGVycyB8fCBpbnB1dC5oZWFkZXJzIHx8IHt9KTtcblxuXHRcdGlmIChpbml0LmJvZHkgIT0gbnVsbCkge1xuXHRcdFx0Y29uc3QgY29udGVudFR5cGUgPSBleHRyYWN0Q29udGVudFR5cGUodGhpcyk7XG5cdFx0XHRpZiAoY29udGVudFR5cGUgIT09IG51bGwgJiYgIWhlYWRlcnMuaGFzKCdDb250ZW50LVR5cGUnKSkge1xuXHRcdFx0XHRoZWFkZXJzLmFwcGVuZCgnQ29udGVudC1UeXBlJywgY29udGVudFR5cGUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXNbSU5URVJOQUxTJDJdID0ge1xuXHRcdFx0bWV0aG9kLFxuXHRcdFx0cmVkaXJlY3Q6IGluaXQucmVkaXJlY3QgfHwgaW5wdXQucmVkaXJlY3QgfHwgJ2ZvbGxvdycsXG5cdFx0XHRoZWFkZXJzLFxuXHRcdFx0cGFyc2VkVVJMXG5cdFx0fTtcblxuXHRcdC8vIG5vZGUtZmV0Y2gtb25seSBvcHRpb25zXG5cdFx0dGhpcy5mb2xsb3cgPSBpbml0LmZvbGxvdyAhPT0gdW5kZWZpbmVkID8gaW5pdC5mb2xsb3cgOiBpbnB1dC5mb2xsb3cgIT09IHVuZGVmaW5lZCA/IGlucHV0LmZvbGxvdyA6IDIwO1xuXHRcdHRoaXMuY29tcHJlc3MgPSBpbml0LmNvbXByZXNzICE9PSB1bmRlZmluZWQgPyBpbml0LmNvbXByZXNzIDogaW5wdXQuY29tcHJlc3MgIT09IHVuZGVmaW5lZCA/IGlucHV0LmNvbXByZXNzIDogdHJ1ZTtcblx0XHR0aGlzLmNvdW50ZXIgPSBpbml0LmNvdW50ZXIgfHwgaW5wdXQuY291bnRlciB8fCAwO1xuXHRcdHRoaXMuYWdlbnQgPSBpbml0LmFnZW50IHx8IGlucHV0LmFnZW50O1xuXHR9XG5cblx0Z2V0IG1ldGhvZCgpIHtcblx0XHRyZXR1cm4gdGhpc1tJTlRFUk5BTFMkMl0ubWV0aG9kO1xuXHR9XG5cblx0Z2V0IHVybCgpIHtcblx0XHRyZXR1cm4gZm9ybWF0X3VybCh0aGlzW0lOVEVSTkFMUyQyXS5wYXJzZWRVUkwpO1xuXHR9XG5cblx0Z2V0IGhlYWRlcnMoKSB7XG5cdFx0cmV0dXJuIHRoaXNbSU5URVJOQUxTJDJdLmhlYWRlcnM7XG5cdH1cblxuXHRnZXQgcmVkaXJlY3QoKSB7XG5cdFx0cmV0dXJuIHRoaXNbSU5URVJOQUxTJDJdLnJlZGlyZWN0O1xuXHR9XG5cblx0LyoqXG4gICogQ2xvbmUgdGhpcyByZXF1ZXN0XG4gICpcbiAgKiBAcmV0dXJuICBSZXF1ZXN0XG4gICovXG5cdGNsb25lKCkge1xuXHRcdHJldHVybiBuZXcgUmVxdWVzdCh0aGlzKTtcblx0fVxufVxuXG5Cb2R5Lm1peEluKFJlcXVlc3QucHJvdG90eXBlKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlcXVlc3QucHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcsIHtcblx0dmFsdWU6ICdSZXF1ZXN0Jyxcblx0d3JpdGFibGU6IGZhbHNlLFxuXHRlbnVtZXJhYmxlOiBmYWxzZSxcblx0Y29uZmlndXJhYmxlOiB0cnVlXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUmVxdWVzdC5wcm90b3R5cGUsIHtcblx0bWV0aG9kOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0dXJsOiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0aGVhZGVyczogeyBlbnVtZXJhYmxlOiB0cnVlIH0sXG5cdHJlZGlyZWN0OiB7IGVudW1lcmFibGU6IHRydWUgfSxcblx0Y2xvbmU6IHsgZW51bWVyYWJsZTogdHJ1ZSB9XG59KTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgUmVxdWVzdCB0byBOb2RlLmpzIGh0dHAgcmVxdWVzdCBvcHRpb25zLlxuICpcbiAqIEBwYXJhbSAgIFJlcXVlc3QgIEEgUmVxdWVzdCBpbnN0YW5jZVxuICogQHJldHVybiAgT2JqZWN0ICAgVGhlIG9wdGlvbnMgb2JqZWN0IHRvIGJlIHBhc3NlZCB0byBodHRwLnJlcXVlc3RcbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZVJlcXVlc3RPcHRpb25zKHJlcXVlc3QpIHtcblx0Y29uc3QgcGFyc2VkVVJMID0gcmVxdWVzdFtJTlRFUk5BTFMkMl0ucGFyc2VkVVJMO1xuXHRjb25zdCBoZWFkZXJzID0gbmV3IEhlYWRlcnMocmVxdWVzdFtJTlRFUk5BTFMkMl0uaGVhZGVycyk7XG5cblx0Ly8gZmV0Y2ggc3RlcCAxLjNcblx0aWYgKCFoZWFkZXJzLmhhcygnQWNjZXB0JykpIHtcblx0XHRoZWFkZXJzLnNldCgnQWNjZXB0JywgJyovKicpO1xuXHR9XG5cblx0Ly8gQmFzaWMgZmV0Y2hcblx0aWYgKCFwYXJzZWRVUkwucHJvdG9jb2wgfHwgIXBhcnNlZFVSTC5ob3N0bmFtZSkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09ubHkgYWJzb2x1dGUgVVJMcyBhcmUgc3VwcG9ydGVkJyk7XG5cdH1cblxuXHRpZiAoIS9eaHR0cHM/OiQvLnRlc3QocGFyc2VkVVJMLnByb3RvY29sKSkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09ubHkgSFRUUChTKSBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZCcpO1xuXHR9XG5cblx0Ly8gSFRUUC1uZXR3b3JrLW9yLWNhY2hlIGZldGNoIHN0ZXBzIDIuNC0yLjdcblx0bGV0IGNvbnRlbnRMZW5ndGhWYWx1ZSA9IG51bGw7XG5cdGlmIChyZXF1ZXN0LmJvZHkgPT0gbnVsbCAmJiAvXihQT1NUfFBVVCkkL2kudGVzdChyZXF1ZXN0Lm1ldGhvZCkpIHtcblx0XHRjb250ZW50TGVuZ3RoVmFsdWUgPSAnMCc7XG5cdH1cblx0aWYgKHJlcXVlc3QuYm9keSAhPSBudWxsKSB7XG5cdFx0Y29uc3QgdG90YWxCeXRlcyA9IGdldFRvdGFsQnl0ZXMocmVxdWVzdCk7XG5cdFx0aWYgKHR5cGVvZiB0b3RhbEJ5dGVzID09PSAnbnVtYmVyJykge1xuXHRcdFx0Y29udGVudExlbmd0aFZhbHVlID0gU3RyaW5nKHRvdGFsQnl0ZXMpO1xuXHRcdH1cblx0fVxuXHRpZiAoY29udGVudExlbmd0aFZhbHVlKSB7XG5cdFx0aGVhZGVycy5zZXQoJ0NvbnRlbnQtTGVuZ3RoJywgY29udGVudExlbmd0aFZhbHVlKTtcblx0fVxuXG5cdC8vIEhUVFAtbmV0d29yay1vci1jYWNoZSBmZXRjaCBzdGVwIDIuMTFcblx0aWYgKCFoZWFkZXJzLmhhcygnVXNlci1BZ2VudCcpKSB7XG5cdFx0aGVhZGVycy5zZXQoJ1VzZXItQWdlbnQnLCAnbm9kZS1mZXRjaC8xLjAgKCtodHRwczovL2dpdGh1Yi5jb20vYml0aW5uL25vZGUtZmV0Y2gpJyk7XG5cdH1cblxuXHQvLyBIVFRQLW5ldHdvcmstb3ItY2FjaGUgZmV0Y2ggc3RlcCAyLjE1XG5cdGlmIChyZXF1ZXN0LmNvbXByZXNzKSB7XG5cdFx0aGVhZGVycy5zZXQoJ0FjY2VwdC1FbmNvZGluZycsICdnemlwLGRlZmxhdGUnKTtcblx0fVxuXHRpZiAoIWhlYWRlcnMuaGFzKCdDb25uZWN0aW9uJykgJiYgIXJlcXVlc3QuYWdlbnQpIHtcblx0XHRoZWFkZXJzLnNldCgnQ29ubmVjdGlvbicsICdjbG9zZScpO1xuXHR9XG5cblx0Ly8gSFRUUC1uZXR3b3JrIGZldGNoIHN0ZXAgNC4yXG5cdC8vIGNodW5rZWQgZW5jb2RpbmcgaXMgaGFuZGxlZCBieSBOb2RlLmpzXG5cblx0cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHBhcnNlZFVSTCwge1xuXHRcdG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG5cdFx0aGVhZGVyczogZXhwb3J0Tm9kZUNvbXBhdGlibGVIZWFkZXJzKGhlYWRlcnMpLFxuXHRcdGFnZW50OiByZXF1ZXN0LmFnZW50XG5cdH0pO1xufVxuXG4vKipcbiAqIGluZGV4LmpzXG4gKlxuICogYSByZXF1ZXN0IEFQSSBjb21wYXRpYmxlIHdpdGggd2luZG93LmZldGNoXG4gKlxuICogQWxsIHNwZWMgYWxnb3JpdGhtIHN0ZXAgbnVtYmVycyBhcmUgYmFzZWQgb24gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvY29tbWl0LXNuYXBzaG90cy9hZTcxNjgyMmNiM2E2MTg0MzIyNmNkMDkwZWVmYzY1ODk0NDZjMWQyLy5cbiAqL1xuXG5jb25zdCBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xuY29uc3QgaHR0cHMgPSByZXF1aXJlKCdodHRwcycpO1xuXG52YXIgX3JlcXVpcmUkMyA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuXG5jb25zdCBQYXNzVGhyb3VnaCQxID0gX3JlcXVpcmUkMy5QYXNzVGhyb3VnaDtcblxudmFyIF9yZXF1aXJlMiA9IHJlcXVpcmUoJ3VybCcpO1xuXG5jb25zdCByZXNvbHZlX3VybCA9IF9yZXF1aXJlMi5yZXNvbHZlO1xuXG5jb25zdCB6bGliID0gcmVxdWlyZSgnemxpYicpO1xuXG4vKipcbiAqIEZldGNoIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtICAgTWl4ZWQgICAgdXJsICAgQWJzb2x1dGUgdXJsIG9yIFJlcXVlc3QgaW5zdGFuY2VcbiAqIEBwYXJhbSAgIE9iamVjdCAgIG9wdHMgIEZldGNoIG9wdGlvbnNcbiAqIEByZXR1cm4gIFByb21pc2VcbiAqL1xuZnVuY3Rpb24gZmV0Y2godXJsLCBvcHRzKSB7XG5cblx0Ly8gYWxsb3cgY3VzdG9tIHByb21pc2Vcblx0aWYgKCFmZXRjaC5Qcm9taXNlKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCduYXRpdmUgcHJvbWlzZSBtaXNzaW5nLCBzZXQgZmV0Y2guUHJvbWlzZSB0byB5b3VyIGZhdm9yaXRlIGFsdGVybmF0aXZlJyk7XG5cdH1cblxuXHRCb2R5LlByb21pc2UgPSBmZXRjaC5Qcm9taXNlO1xuXG5cdC8vIHdyYXAgaHR0cC5yZXF1ZXN0IGludG8gZmV0Y2hcblx0cmV0dXJuIG5ldyBmZXRjaC5Qcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0XHQvLyBidWlsZCByZXF1ZXN0IG9iamVjdFxuXHRcdGNvbnN0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCh1cmwsIG9wdHMpO1xuXHRcdGNvbnN0IG9wdGlvbnMgPSBnZXROb2RlUmVxdWVzdE9wdGlvbnMocmVxdWVzdCk7XG5cblx0XHRjb25zdCBzZW5kID0gKG9wdGlvbnMucHJvdG9jb2wgPT09ICdodHRwczonID8gaHR0cHMgOiBodHRwKS5yZXF1ZXN0O1xuXG5cdFx0Ly8gc2VuZCByZXF1ZXN0XG5cdFx0Y29uc3QgcmVxID0gc2VuZChvcHRpb25zKTtcblx0XHRsZXQgcmVxVGltZW91dDtcblxuXHRcdGZ1bmN0aW9uIGZpbmFsaXplKCkge1xuXHRcdFx0cmVxLmFib3J0KCk7XG5cdFx0XHRjbGVhclRpbWVvdXQocmVxVGltZW91dCk7XG5cdFx0fVxuXG5cdFx0aWYgKHJlcXVlc3QudGltZW91dCkge1xuXHRcdFx0cmVxLm9uY2UoJ3NvY2tldCcsIGZ1bmN0aW9uIChzb2NrZXQpIHtcblx0XHRcdFx0cmVxVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcihgbmV0d29yayB0aW1lb3V0IGF0OiAke3JlcXVlc3QudXJsfWAsICdyZXF1ZXN0LXRpbWVvdXQnKSk7XG5cdFx0XHRcdFx0ZmluYWxpemUoKTtcblx0XHRcdFx0fSwgcmVxdWVzdC50aW1lb3V0KTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJlcS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRyZWplY3QobmV3IEZldGNoRXJyb3IoYHJlcXVlc3QgdG8gJHtyZXF1ZXN0LnVybH0gZmFpbGVkLCByZWFzb246ICR7ZXJyLm1lc3NhZ2V9YCwgJ3N5c3RlbScsIGVycikpO1xuXHRcdFx0ZmluYWxpemUoKTtcblx0XHR9KTtcblxuXHRcdHJlcS5vbigncmVzcG9uc2UnLCBmdW5jdGlvbiAocmVzKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQocmVxVGltZW91dCk7XG5cblx0XHRcdGNvbnN0IGhlYWRlcnMgPSBjcmVhdGVIZWFkZXJzTGVuaWVudChyZXMuaGVhZGVycyk7XG5cblx0XHRcdC8vIEhUVFAgZmV0Y2ggc3RlcCA1XG5cdFx0XHRpZiAoZmV0Y2guaXNSZWRpcmVjdChyZXMuc3RhdHVzQ29kZSkpIHtcblx0XHRcdFx0Ly8gSFRUUCBmZXRjaCBzdGVwIDUuMlxuXHRcdFx0XHRjb25zdCBsb2NhdGlvbiA9IGhlYWRlcnMuZ2V0KCdMb2NhdGlvbicpO1xuXG5cdFx0XHRcdC8vIEhUVFAgZmV0Y2ggc3RlcCA1LjNcblx0XHRcdFx0Y29uc3QgbG9jYXRpb25VUkwgPSBsb2NhdGlvbiA9PT0gbnVsbCA/IG51bGwgOiByZXNvbHZlX3VybChyZXF1ZXN0LnVybCwgbG9jYXRpb24pO1xuXG5cdFx0XHRcdC8vIEhUVFAgZmV0Y2ggc3RlcCA1LjVcblx0XHRcdFx0c3dpdGNoIChyZXF1ZXN0LnJlZGlyZWN0KSB7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3InOlxuXHRcdFx0XHRcdFx0cmVqZWN0KG5ldyBGZXRjaEVycm9yKGByZWRpcmVjdCBtb2RlIGlzIHNldCB0byBlcnJvcjogJHtyZXF1ZXN0LnVybH1gLCAnbm8tcmVkaXJlY3QnKSk7XG5cdFx0XHRcdFx0XHRmaW5hbGl6ZSgpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdGNhc2UgJ21hbnVhbCc6XG5cdFx0XHRcdFx0XHQvLyBub2RlLWZldGNoLXNwZWNpZmljIHN0ZXA6IG1ha2UgbWFudWFsIHJlZGlyZWN0IGEgYml0IGVhc2llciB0byB1c2UgYnkgc2V0dGluZyB0aGUgTG9jYXRpb24gaGVhZGVyIHZhbHVlIHRvIHRoZSByZXNvbHZlZCBVUkwuXG5cdFx0XHRcdFx0XHRpZiAobG9jYXRpb25VUkwgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0aGVhZGVycy5zZXQoJ0xvY2F0aW9uJywgbG9jYXRpb25VUkwpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZm9sbG93Jzpcblx0XHRcdFx0XHRcdC8vIEhUVFAtcmVkaXJlY3QgZmV0Y2ggc3RlcCAyXG5cdFx0XHRcdFx0XHRpZiAobG9jYXRpb25VUkwgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIEhUVFAtcmVkaXJlY3QgZmV0Y2ggc3RlcCA1XG5cdFx0XHRcdFx0XHRpZiAocmVxdWVzdC5jb3VudGVyID49IHJlcXVlc3QuZm9sbG93KSB7XG5cdFx0XHRcdFx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcihgbWF4aW11bSByZWRpcmVjdCByZWFjaGVkIGF0OiAke3JlcXVlc3QudXJsfWAsICdtYXgtcmVkaXJlY3QnKSk7XG5cdFx0XHRcdFx0XHRcdGZpbmFsaXplKCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gSFRUUC1yZWRpcmVjdCBmZXRjaCBzdGVwIDYgKGNvdW50ZXIgaW5jcmVtZW50KVxuXHRcdFx0XHRcdFx0Ly8gQ3JlYXRlIGEgbmV3IFJlcXVlc3Qgb2JqZWN0LlxuXHRcdFx0XHRcdFx0Y29uc3QgcmVxdWVzdE9wdHMgPSB7XG5cdFx0XHRcdFx0XHRcdGhlYWRlcnM6IG5ldyBIZWFkZXJzKHJlcXVlc3QuaGVhZGVycyksXG5cdFx0XHRcdFx0XHRcdGZvbGxvdzogcmVxdWVzdC5mb2xsb3csXG5cdFx0XHRcdFx0XHRcdGNvdW50ZXI6IHJlcXVlc3QuY291bnRlciArIDEsXG5cdFx0XHRcdFx0XHRcdGFnZW50OiByZXF1ZXN0LmFnZW50LFxuXHRcdFx0XHRcdFx0XHRjb21wcmVzczogcmVxdWVzdC5jb21wcmVzcyxcblx0XHRcdFx0XHRcdFx0bWV0aG9kOiByZXF1ZXN0Lm1ldGhvZCxcblx0XHRcdFx0XHRcdFx0Ym9keTogcmVxdWVzdC5ib2R5XG5cdFx0XHRcdFx0XHR9O1xuXG5cdFx0XHRcdFx0XHQvLyBIVFRQLXJlZGlyZWN0IGZldGNoIHN0ZXAgOVxuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlICE9PSAzMDMgJiYgcmVxdWVzdC5ib2R5ICYmIGdldFRvdGFsQnl0ZXMocmVxdWVzdCkgPT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0cmVqZWN0KG5ldyBGZXRjaEVycm9yKCdDYW5ub3QgZm9sbG93IHJlZGlyZWN0IHdpdGggYm9keSBiZWluZyBhIHJlYWRhYmxlIHN0cmVhbScsICd1bnN1cHBvcnRlZC1yZWRpcmVjdCcpKTtcblx0XHRcdFx0XHRcdFx0ZmluYWxpemUoKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBIVFRQLXJlZGlyZWN0IGZldGNoIHN0ZXAgMTFcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMzAzIHx8IChyZXMuc3RhdHVzQ29kZSA9PT0gMzAxIHx8IHJlcy5zdGF0dXNDb2RlID09PSAzMDIpICYmIHJlcXVlc3QubWV0aG9kID09PSAnUE9TVCcpIHtcblx0XHRcdFx0XHRcdFx0cmVxdWVzdE9wdHMubWV0aG9kID0gJ0dFVCc7XG5cdFx0XHRcdFx0XHRcdHJlcXVlc3RPcHRzLmJvZHkgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdHJlcXVlc3RPcHRzLmhlYWRlcnMuZGVsZXRlKCdjb250ZW50LWxlbmd0aCcpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHQvLyBIVFRQLXJlZGlyZWN0IGZldGNoIHN0ZXAgMTVcblx0XHRcdFx0XHRcdHJlc29sdmUoZmV0Y2gobmV3IFJlcXVlc3QobG9jYXRpb25VUkwsIHJlcXVlc3RPcHRzKSkpO1xuXHRcdFx0XHRcdFx0ZmluYWxpemUoKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBwcmVwYXJlIHJlc3BvbnNlXG5cdFx0XHRsZXQgYm9keSA9IHJlcy5waXBlKG5ldyBQYXNzVGhyb3VnaCQxKCkpO1xuXHRcdFx0Y29uc3QgcmVzcG9uc2Vfb3B0aW9ucyA9IHtcblx0XHRcdFx0dXJsOiByZXF1ZXN0LnVybCxcblx0XHRcdFx0c3RhdHVzOiByZXMuc3RhdHVzQ29kZSxcblx0XHRcdFx0c3RhdHVzVGV4dDogcmVzLnN0YXR1c01lc3NhZ2UsXG5cdFx0XHRcdGhlYWRlcnM6IGhlYWRlcnMsXG5cdFx0XHRcdHNpemU6IHJlcXVlc3Quc2l6ZSxcblx0XHRcdFx0dGltZW91dDogcmVxdWVzdC50aW1lb3V0XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyBIVFRQLW5ldHdvcmsgZmV0Y2ggc3RlcCAxMi4xLjEuM1xuXHRcdFx0Y29uc3QgY29kaW5ncyA9IGhlYWRlcnMuZ2V0KCdDb250ZW50LUVuY29kaW5nJyk7XG5cblx0XHRcdC8vIEhUVFAtbmV0d29yayBmZXRjaCBzdGVwIDEyLjEuMS40OiBoYW5kbGUgY29udGVudCBjb2RpbmdzXG5cblx0XHRcdC8vIGluIGZvbGxvd2luZyBzY2VuYXJpb3Mgd2UgaWdub3JlIGNvbXByZXNzaW9uIHN1cHBvcnRcblx0XHRcdC8vIDEuIGNvbXByZXNzaW9uIHN1cHBvcnQgaXMgZGlzYWJsZWRcblx0XHRcdC8vIDIuIEhFQUQgcmVxdWVzdFxuXHRcdFx0Ly8gMy4gbm8gQ29udGVudC1FbmNvZGluZyBoZWFkZXJcblx0XHRcdC8vIDQuIG5vIGNvbnRlbnQgcmVzcG9uc2UgKDIwNClcblx0XHRcdC8vIDUuIGNvbnRlbnQgbm90IG1vZGlmaWVkIHJlc3BvbnNlICgzMDQpXG5cdFx0XHRpZiAoIXJlcXVlc3QuY29tcHJlc3MgfHwgcmVxdWVzdC5tZXRob2QgPT09ICdIRUFEJyB8fCBjb2RpbmdzID09PSBudWxsIHx8IHJlcy5zdGF0dXNDb2RlID09PSAyMDQgfHwgcmVzLnN0YXR1c0NvZGUgPT09IDMwNCkge1xuXHRcdFx0XHRyZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCByZXNwb25zZV9vcHRpb25zKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yIE5vZGUgdjYrXG5cdFx0XHQvLyBCZSBsZXNzIHN0cmljdCB3aGVuIGRlY29kaW5nIGNvbXByZXNzZWQgcmVzcG9uc2VzLCBzaW5jZSBzb21ldGltZXNcblx0XHRcdC8vIHNlcnZlcnMgc2VuZCBzbGlnaHRseSBpbnZhbGlkIHJlc3BvbnNlcyB0aGF0IGFyZSBzdGlsbCBhY2NlcHRlZFxuXHRcdFx0Ly8gYnkgY29tbW9uIGJyb3dzZXJzLlxuXHRcdFx0Ly8gQWx3YXlzIHVzaW5nIFpfU1lOQ19GTFVTSCBpcyB3aGF0IGNVUkwgZG9lcy5cblx0XHRcdGNvbnN0IHpsaWJPcHRpb25zID0ge1xuXHRcdFx0XHRmbHVzaDogemxpYi5aX1NZTkNfRkxVU0gsXG5cdFx0XHRcdGZpbmlzaEZsdXNoOiB6bGliLlpfU1lOQ19GTFVTSFxuXHRcdFx0fTtcblxuXHRcdFx0Ly8gZm9yIGd6aXBcblx0XHRcdGlmIChjb2RpbmdzID09ICdnemlwJyB8fCBjb2RpbmdzID09ICd4LWd6aXAnKSB7XG5cdFx0XHRcdGJvZHkgPSBib2R5LnBpcGUoemxpYi5jcmVhdGVHdW56aXAoemxpYk9wdGlvbnMpKTtcblx0XHRcdFx0cmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwgcmVzcG9uc2Vfb3B0aW9ucykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIGZvciBkZWZsYXRlXG5cdFx0XHRpZiAoY29kaW5ncyA9PSAnZGVmbGF0ZScgfHwgY29kaW5ncyA9PSAneC1kZWZsYXRlJykge1xuXHRcdFx0XHQvLyBoYW5kbGUgdGhlIGluZmFtb3VzIHJhdyBkZWZsYXRlIHJlc3BvbnNlIGZyb20gb2xkIHNlcnZlcnNcblx0XHRcdFx0Ly8gYSBoYWNrIGZvciBvbGQgSUlTIGFuZCBBcGFjaGUgc2VydmVyc1xuXHRcdFx0XHRjb25zdCByYXcgPSByZXMucGlwZShuZXcgUGFzc1Rocm91Z2gkMSgpKTtcblx0XHRcdFx0cmF3Lm9uY2UoJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcblx0XHRcdFx0XHQvLyBzZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNzUxOTgyOFxuXHRcdFx0XHRcdGlmICgoY2h1bmtbMF0gJiAweDBGKSA9PT0gMHgwOCkge1xuXHRcdFx0XHRcdFx0Ym9keSA9IGJvZHkucGlwZSh6bGliLmNyZWF0ZUluZmxhdGUoKSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGJvZHkgPSBib2R5LnBpcGUoemxpYi5jcmVhdGVJbmZsYXRlUmF3KCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCByZXNwb25zZV9vcHRpb25zKSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIG90aGVyd2lzZSwgdXNlIHJlc3BvbnNlIGFzLWlzXG5cdFx0XHRyZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCByZXNwb25zZV9vcHRpb25zKSk7XG5cdFx0fSk7XG5cblx0XHR3cml0ZVRvU3RyZWFtKHJlcSwgcmVxdWVzdCk7XG5cdH0pO1xufVxuXG4vKipcbiAqIFJlZGlyZWN0IGNvZGUgbWF0Y2hpbmdcbiAqXG4gKiBAcGFyYW0gICBOdW1iZXIgICBjb2RlICBTdGF0dXMgY29kZVxuICogQHJldHVybiAgQm9vbGVhblxuICovXG5mZXRjaC5pc1JlZGlyZWN0ID0gZnVuY3Rpb24gKGNvZGUpIHtcblx0cmV0dXJuIGNvZGUgPT09IDMwMSB8fCBjb2RlID09PSAzMDIgfHwgY29kZSA9PT0gMzAzIHx8IGNvZGUgPT09IDMwNyB8fCBjb2RlID09PSAzMDg7XG59O1xuXG4vLyBOZWVkZWQgZm9yIFR5cGVTY3JpcHQuXG5mZXRjaC5kZWZhdWx0ID0gZmV0Y2g7XG5cbi8vIGV4cG9zZSBQcm9taXNlXG5mZXRjaC5Qcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XG5cbmV4cG9ydCBkZWZhdWx0IGZldGNoO1xuZXhwb3J0IHsgSGVhZGVycywgUmVxdWVzdCwgUmVzcG9uc2UsIEZldGNoRXJyb3IgfTtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4uL25vZGVfbW9kdWxlcy9ub2RlLWZldGNoL2xpYi9pbmRleC5lcy5qc1xuLy8gbW9kdWxlIGlkID0gMjQxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImh0dHBzXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIFwiaHR0cHNcIlxuLy8gbW9kdWxlIGlkID0gMjQyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/server/package-lock.json b/server/package-lock.json index 5bb9b58..910c486 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1640,8 +1640,7 @@ "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, "duplexer3": { "version": "0.1.4", @@ -1844,7 +1843,6 @@ "version": "3.3.4", "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true, "requires": { "duplexer": "0.1.1", "from": "0.1.7", @@ -2169,8 +2167,7 @@ "from": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" }, "fsevents": { "version": "1.2.4", @@ -3395,8 +3392,7 @@ "map-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", - "dev": true + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" }, "map-visit": { "version": "1.0.0", @@ -3987,7 +3983,6 @@ "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true, "requires": { "through": "2.3.8" } @@ -4764,7 +4759,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true, "requires": { "through": "2.3.8" } @@ -4818,7 +4812,6 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true, "requires": { "duplexer": "0.1.1" } @@ -4962,8 +4955,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "timed-out": { "version": "4.0.1", diff --git a/server/package.json b/server/package.json index fc70d81..53721a4 100644 --- a/server/package.json +++ b/server/package.json @@ -18,8 +18,10 @@ }, "homepage": "https://github.com/hastic/hastic-server#readme", "dependencies": { + "event-stream": "^3.3.4", "express": "^4.16.3", "fast-csv": "^2.4.1", + "node-fetch": "^2.1.2", "telegraf": "^3.21.0" }, "devDependencies": { diff --git a/server/src/index.ts b/server/src/index.ts index 777abed..d819e42 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -4,7 +4,6 @@ import * as bodyParser from 'body-parser'; import { router as anomaliesRouter } from './routes/anomalies'; import { router as segmentsRouter } from './routes/segments'; import { router as alertsRouter } from './routes/alerts'; -import { tgBotInit } from './services/notification'; const app = express(); const PORT = process.env.HASTIC_PORT || 8000; @@ -27,5 +26,3 @@ app.use('/', (req, res) => res.send({ status: 'OK' })); app.listen(PORT, () => { console.log(`Server is running on :${PORT}`) }); - -tgBotInit(); diff --git a/server/src/services/analytics.ts b/server/src/services/analytics.ts index db49056..0430aad 100644 --- a/server/src/services/analytics.ts +++ b/server/src/services/analytics.ts @@ -9,7 +9,7 @@ import { } from './anomalyType' import { getTarget } from './metrics'; import { getLabeledSegments, insertSegments, removeSegments } from './segments'; -import { split, map, mapSync } from 'event-stream' +import { split, map, mapSync } from 'event-stream'; const learnWorker = spawn('python3', ['worker.py'], { cwd: ANALYTICS_PATH }) learnWorker.stdout.pipe(split()) diff --git a/server/src/services/notification.ts b/server/src/services/notification.ts index 5174699..7af62b4 100644 --- a/server/src/services/notification.ts +++ b/server/src/services/notification.ts @@ -1,140 +1,30 @@ -//import * as Telegraf from 'telegraf' -import * as path from 'path'; -import { DATA_PATH } from '../config'; -import { getJsonDataSync, writeJsonDataSync } from './json'; -import { AnomalyId } from './anomalyType'; +import fetch from 'node-fetch'; +import { loadAnomalyById } from './anomalyType'; - -type SubscriberId = string; -type SubscribersMap = Map< AnomalyId, SubscriberId[] >; - -type BotConfig = { - token: string, - subscriptions: SubscribersMap -}; - -function sendNotification(anomalyName, active) { +function sendNotification(anomalyId, active) { + let anomalyName = loadAnomalyById(anomalyId).name; console.log('Notification ' + anomalyName); - if(anomalyName in botConfig.subscriptions) { - let notificationMessage; - if(active) { - notificationMessage = 'Alert! Anomaly type ' + anomalyName; - } else { - notificationMessage = 'Ok! Anomaly type ' + anomalyName; - } - - for (let SubscriberId of botConfig.subscriptions[anomalyName]) { - bot.telegram.sendMessage(SubscriberId, notificationMessage); - } - } -} - -function loadBotConfig() : BotConfig { - let filename = path.join(DATA_PATH, `bot_config.json`); - let jsonData; - try { - jsonData = getJsonDataSync(filename); - } catch(e) { - console.error(e.message); - jsonData = []; - } - return jsonData; -} - -function saveBotConfig(botConfig: BotConfig) { - let filename = path.join(DATA_PATH, `bot_config.json`); - try { - writeJsonDataSync(filename, botConfig); - } catch(e) { - console.error(e.message); - } -} -const commandArgs = (ctx, next) => { - try { - if(ctx.updateType === 'message') { - const text = ctx.update.message.text; - if(text !== undefined && text.startsWith('/')) { - const match = text.match(/^\/([^\s]+)\s?(.+)?/); - let args = []; - let command; - if(match !== null) { - if(match[1]) { - command = match[1]; - } - if(match[2]) { - args = match[2].split(' '); - } - } - ctx.state.command = { - raw: text, - command, - args, - }; - } - } - return next(ctx); - } catch (e) { - - } -}; - -function addNotification(ctx) { - console.log('addNotification') - let command = ctx.state.command; - let chatId = ctx.chat.id; - if(command.args.length > 0) { - for (let anomalyName of command.args) { - if(!(anomalyName in botConfig.subscriptions)) { - botConfig.subscriptions[anomalyName] = [] - } - if(botConfig.subscriptions[anomalyName].includes(chatId)) { - return ctx.reply('You are already subscribed on alerts from anomaly ' + command.args) - } else { - botConfig.subscriptions[anomalyName].push(chatId); - saveBotConfig(botConfig); - } - } - return ctx.reply('You have been successfully subscribed on alerts from anomaly ' + command.args) + let notification = { + anomaly: anomalyName, + status: '' + }; + if(active) { + notification.status = 'alert'; } else { - return ctx.reply('You should use syntax: \/addNotification ') + notification.status = 'OK'; } -} -function removeNotification(ctx) { - let command = ctx.state.command; - let chatId = ctx.chat.id; - if(command.args.length > 0) { - for (let anomalyName of command.args) { - if(anomalyName in botConfig.subscriptions) { - botConfig.subscriptions[anomalyName] = botConfig.subscriptions[anomalyName].filter(el => el !== chatId); - saveBotConfig(botConfig); - } - } - return ctx.reply('You have been successfully unsubscribed from alerts from ' + command.args); + if(process.env.ALERT_ENDPOINT !== undefined) { + fetch(process.env.ALERT_ENDPOINT, { + method: 'POST', + body: JSON.stringify(notification) + }) + .then(data => console.log(data)) + .catch(err => console.error(`Can't send alert to ${process.env.ALERT_ENDPOINT}. Error: ${err}`)); } else { - return ctx.reply('You should use syntax: \/removeNotification '); - } -} - -// const Telegraf = require('telegraf'); -let botConfig: BotConfig; -let bot; - -function tgBotInit() { - try { - // botConfig = loadBotConfig(); - // bot = new Telegraf(botConfig.token); - - // bot.use(commandArgs); - - // bot.command('addNotification', addNotification); - // bot.command('removeNotification', removeNotification); - - // bot.startPolling(); - } catch(e) { - // TODO: handle exception + console.error(`Can't send alert, env ALERT_ENDPOINT is undefined`); } } -export { sendNotification, tgBotInit } +export { sendNotification }