From 0691722386a116aa2ba2dc29699e7cbfcc1f9d78 Mon Sep 17 00:00:00 2001 From: Cheng Liang Date: Mon, 17 Apr 2023 09:25:29 +0800 Subject: [PATCH 1/2] Remove export for each modal class. --- src/confirm-modal.ts | 2 +- src/post-published-modal.ts | 2 +- src/wp-login-modal.ts | 2 +- src/wp-profile-chooser-modal.ts | 2 +- src/wp-profile-modal.ts | 2 +- src/wp-publish-modal.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/confirm-modal.ts b/src/confirm-modal.ts index 575a5cf..ccf85b3 100644 --- a/src/confirm-modal.ts +++ b/src/confirm-modal.ts @@ -35,7 +35,7 @@ export function openConfirmModal( /** * Confirm modal. */ -export class ConfirmModal extends Modal { +class ConfirmModal extends Modal { constructor( private readonly messages: ConfirmModalMessages, diff --git a/src/post-published-modal.ts b/src/post-published-modal.ts index 66a7dc8..5cb4bdf 100644 --- a/src/post-published-modal.ts +++ b/src/post-published-modal.ts @@ -17,7 +17,7 @@ export function openPostPublishedModal( /** * WordPress post published modal. */ -export class PostPublishedModal extends Modal { +class PostPublishedModal extends Modal { constructor( private readonly plugin: WordpressPlugin, diff --git a/src/wp-login-modal.ts b/src/wp-login-modal.ts index 9007b3e..05e1658 100644 --- a/src/wp-login-modal.ts +++ b/src/wp-login-modal.ts @@ -23,7 +23,7 @@ export function openLoginModal( /** * WordPress login modal with username and password inputs. */ -export class WpLoginModal extends Modal { +class WpLoginModal extends Modal { constructor( private readonly plugin: WordpressPlugin, diff --git a/src/wp-profile-chooser-modal.ts b/src/wp-profile-chooser-modal.ts index 5bbfe34..0820594 100644 --- a/src/wp-profile-chooser-modal.ts +++ b/src/wp-profile-chooser-modal.ts @@ -19,7 +19,7 @@ export function openProfileChooserModal( /** * WordPress profiles chooser modal. */ -export class WpProfileChooserModal extends Modal { +class WpProfileChooserModal extends Modal { private readonly profiles: WpProfile[]; diff --git a/src/wp-profile-modal.ts b/src/wp-profile-modal.ts index 8c0fa7e..b14ce27 100644 --- a/src/wp-profile-modal.ts +++ b/src/wp-profile-modal.ts @@ -38,7 +38,7 @@ export function openProfileModal( /** * WordPress profile modal. */ -export class WpProfileModal extends Modal { +class WpProfileModal extends Modal { private readonly profileData: WpProfile; diff --git a/src/wp-publish-modal.ts b/src/wp-publish-modal.ts index 62877c1..74a3b47 100644 --- a/src/wp-publish-modal.ts +++ b/src/wp-publish-modal.ts @@ -28,7 +28,7 @@ export function openPublishModal( /** * WordPress publish modal. */ -export class WpPublishModal extends Modal { +class WpPublishModal extends Modal { constructor( private readonly plugin: WordpressPlugin, From 5c23ed47190366ec183a75a6d0d8588bf73765a5 Mon Sep 17 00:00:00 2001 From: Cheng Liang Date: Mon, 17 Apr 2023 10:36:39 +0800 Subject: [PATCH 2/2] feat: You can parse HTML tags in notes. --- main.js | 903 ++++++++++++++++++++++++++++++++++++++--- src/app-state.ts | 1 + src/i18n/en.json | 4 +- src/i18n/zh-cn.json | 2 + src/main.ts | 11 +- src/plugin-settings.ts | 20 +- src/settings.ts | 18 +- src/wp-rest-client.ts | 1 - 8 files changed, 886 insertions(+), 74 deletions(-) diff --git a/main.js b/main.js index b77643f..8729ca2 100644 --- a/main.js +++ b/main.js @@ -10796,8 +10796,8 @@ var require_Stack = __commonJS({ }; Object.defineProperty(exports2, "__esModule", { value: true }); var NodeUtil_js_1 = __importDefault(require_NodeUtil()); - var Stack = function() { - function Stack2(_factory, _env, inner) { + var Stack2 = function() { + function Stack3(_factory, _env, inner) { this._factory = _factory; this._env = _env; this.global = {}; @@ -10809,7 +10809,7 @@ var require_Stack = __commonJS({ } this.env = this.stack[0].env; } - Object.defineProperty(Stack2.prototype, "env", { + Object.defineProperty(Stack3.prototype, "env", { get: function() { return this._env; }, @@ -10819,7 +10819,7 @@ var require_Stack = __commonJS({ enumerable: false, configurable: true }); - Stack2.prototype.Push = function() { + Stack3.prototype.Push = function() { var e_1, _a; var args = []; for (var _i = 0; _i < arguments.length; _i++) { @@ -10864,7 +10864,7 @@ var require_Stack = __commonJS({ } } }; - Stack2.prototype.Pop = function() { + Stack3.prototype.Pop = function() { var item = this.stack.pop(); if (!item.isOpen) { delete item.env; @@ -10872,22 +10872,22 @@ var require_Stack = __commonJS({ this.env = this.stack.length ? this.Top().env : {}; return item; }; - Stack2.prototype.Top = function(n) { + Stack3.prototype.Top = function(n) { if (n === void 0) { n = 1; } return this.stack.length < n ? null : this.stack[this.stack.length - n]; }; - Stack2.prototype.Prev = function(noPop) { + Stack3.prototype.Prev = function(noPop) { var top = this.Top(); return noPop ? top.First : top.Pop(); }; - Stack2.prototype.toString = function() { + Stack3.prototype.toString = function() { return "stack[\n " + this.stack.join("\n ") + "\n]"; }; - return Stack2; + return Stack3; }(); - exports2.default = Stack; + exports2.default = Stack2; } }); @@ -78655,6 +78655,30 @@ function getNative(object, key) { } var getNative_default = getNative; +// node_modules/lodash-es/_WeakMap.js +var WeakMap2 = getNative_default(root_default, "WeakMap"); +var WeakMap_default = WeakMap2; + +// node_modules/lodash-es/_baseCreate.js +var objectCreate = Object.create; +var baseCreate = function() { + function object() { + } + return function(proto) { + if (!isObject_default(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object(); + object.prototype = void 0; + return result; + }; +}(); +var baseCreate_default = baseCreate; + // node_modules/lodash-es/_apply.js function apply(func, thisArg, args) { switch (args.length) { @@ -78671,6 +78695,17 @@ function apply(func, thisArg, args) { } var apply_default = apply; +// node_modules/lodash-es/_copyArray.js +function copyArray(source, array) { + var index = -1, length = source.length; + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} +var copyArray_default = copyArray; + // node_modules/lodash-es/_shortOut.js var HOT_COUNT = 800; var HOT_SPAN = 16; @@ -78726,6 +78761,18 @@ var baseSetToString_default = baseSetToString; var setToString = shortOut_default(baseSetToString_default); var setToString_default = setToString; +// node_modules/lodash-es/_arrayEach.js +function arrayEach(array, iteratee) { + var index = -1, length = array == null ? 0 : array.length; + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} +var arrayEach_default = arrayEach; + // node_modules/lodash-es/_isIndex.js var MAX_SAFE_INTEGER = 9007199254740991; var reIsUint = /^(?:0|[1-9]\d*)$/; @@ -79066,12 +79113,244 @@ var assignInWith = createAssigner_default(function(object, source, srcIndex, cus }); var assignInWith_default = assignInWith; +// node_modules/lodash-es/_nativeCreate.js +var nativeCreate = getNative_default(Object, "create"); +var nativeCreate_default = nativeCreate; + +// node_modules/lodash-es/_hashClear.js +function hashClear() { + this.__data__ = nativeCreate_default ? nativeCreate_default(null) : {}; + this.size = 0; +} +var hashClear_default = hashClear; + +// node_modules/lodash-es/_hashDelete.js +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} +var hashDelete_default = hashDelete; + +// node_modules/lodash-es/_hashGet.js +var HASH_UNDEFINED = "__lodash_hash_undefined__"; +var objectProto10 = Object.prototype; +var hasOwnProperty8 = objectProto10.hasOwnProperty; +function hashGet(key) { + var data = this.__data__; + if (nativeCreate_default) { + var result = data[key]; + return result === HASH_UNDEFINED ? void 0 : result; + } + return hasOwnProperty8.call(data, key) ? data[key] : void 0; +} +var hashGet_default = hashGet; + +// node_modules/lodash-es/_hashHas.js +var objectProto11 = Object.prototype; +var hasOwnProperty9 = objectProto11.hasOwnProperty; +function hashHas(key) { + var data = this.__data__; + return nativeCreate_default ? data[key] !== void 0 : hasOwnProperty9.call(data, key); +} +var hashHas_default = hashHas; + +// node_modules/lodash-es/_hashSet.js +var HASH_UNDEFINED2 = "__lodash_hash_undefined__"; +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = nativeCreate_default && value === void 0 ? HASH_UNDEFINED2 : value; + return this; +} +var hashSet_default = hashSet; + +// node_modules/lodash-es/_Hash.js +function Hash(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +Hash.prototype.clear = hashClear_default; +Hash.prototype["delete"] = hashDelete_default; +Hash.prototype.get = hashGet_default; +Hash.prototype.has = hashHas_default; +Hash.prototype.set = hashSet_default; +var Hash_default = Hash; + +// node_modules/lodash-es/_listCacheClear.js +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} +var listCacheClear_default = listCacheClear; + +// node_modules/lodash-es/_assocIndexOf.js +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq_default(array[length][0], key)) { + return length; + } + } + return -1; +} +var assocIndexOf_default = assocIndexOf; + +// node_modules/lodash-es/_listCacheDelete.js +var arrayProto = Array.prototype; +var splice = arrayProto.splice; +function listCacheDelete(key) { + var data = this.__data__, index = assocIndexOf_default(data, key); + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} +var listCacheDelete_default = listCacheDelete; + +// node_modules/lodash-es/_listCacheGet.js +function listCacheGet(key) { + var data = this.__data__, index = assocIndexOf_default(data, key); + return index < 0 ? void 0 : data[index][1]; +} +var listCacheGet_default = listCacheGet; + +// node_modules/lodash-es/_listCacheHas.js +function listCacheHas(key) { + return assocIndexOf_default(this.__data__, key) > -1; +} +var listCacheHas_default = listCacheHas; + +// node_modules/lodash-es/_listCacheSet.js +function listCacheSet(key, value) { + var data = this.__data__, index = assocIndexOf_default(data, key); + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} +var listCacheSet_default = listCacheSet; + +// node_modules/lodash-es/_ListCache.js +function ListCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +ListCache.prototype.clear = listCacheClear_default; +ListCache.prototype["delete"] = listCacheDelete_default; +ListCache.prototype.get = listCacheGet_default; +ListCache.prototype.has = listCacheHas_default; +ListCache.prototype.set = listCacheSet_default; +var ListCache_default = ListCache; + +// node_modules/lodash-es/_Map.js +var Map2 = getNative_default(root_default, "Map"); +var Map_default = Map2; + +// node_modules/lodash-es/_mapCacheClear.js +function mapCacheClear() { + this.size = 0; + this.__data__ = { + "hash": new Hash_default(), + "map": new (Map_default || ListCache_default)(), + "string": new Hash_default() + }; +} +var mapCacheClear_default = mapCacheClear; + +// node_modules/lodash-es/_isKeyable.js +function isKeyable(value) { + var type2 = typeof value; + return type2 == "string" || type2 == "number" || type2 == "symbol" || type2 == "boolean" ? value !== "__proto__" : value === null; +} +var isKeyable_default = isKeyable; + +// node_modules/lodash-es/_getMapData.js +function getMapData(map2, key) { + var data = map2.__data__; + return isKeyable_default(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map; +} +var getMapData_default = getMapData; + +// node_modules/lodash-es/_mapCacheDelete.js +function mapCacheDelete(key) { + var result = getMapData_default(this, key)["delete"](key); + this.size -= result ? 1 : 0; + return result; +} +var mapCacheDelete_default = mapCacheDelete; + +// node_modules/lodash-es/_mapCacheGet.js +function mapCacheGet(key) { + return getMapData_default(this, key).get(key); +} +var mapCacheGet_default = mapCacheGet; + +// node_modules/lodash-es/_mapCacheHas.js +function mapCacheHas(key) { + return getMapData_default(this, key).has(key); +} +var mapCacheHas_default = mapCacheHas; + +// node_modules/lodash-es/_mapCacheSet.js +function mapCacheSet(key, value) { + var data = getMapData_default(this, key), size = data.size; + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} +var mapCacheSet_default = mapCacheSet; + +// node_modules/lodash-es/_MapCache.js +function MapCache(entries) { + var index = -1, length = entries == null ? 0 : entries.length; + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +MapCache.prototype.clear = mapCacheClear_default; +MapCache.prototype["delete"] = mapCacheDelete_default; +MapCache.prototype.get = mapCacheGet_default; +MapCache.prototype.has = mapCacheHas_default; +MapCache.prototype.set = mapCacheSet_default; +var MapCache_default = MapCache; + // node_modules/lodash-es/toString.js function toString(value) { return value == null ? "" : baseToString_default(value); } var toString_default = toString; +// node_modules/lodash-es/_arrayPush.js +function arrayPush(array, values) { + var index = -1, length = values.length, offset = array.length; + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} +var arrayPush_default = arrayPush; + // node_modules/lodash-es/_getPrototype.js var getPrototype = overArg_default(Object.getPrototypeOf, Object); var getPrototype_default = getPrototype; @@ -79079,9 +79358,9 @@ var getPrototype_default = getPrototype; // node_modules/lodash-es/isPlainObject.js var objectTag2 = "[object Object]"; var funcProto3 = Function.prototype; -var objectProto10 = Object.prototype; +var objectProto12 = Object.prototype; var funcToString3 = funcProto3.toString; -var hasOwnProperty8 = objectProto10.hasOwnProperty; +var hasOwnProperty10 = objectProto12.hasOwnProperty; var objectCtorString = funcToString3.call(Object); function isPlainObject(value) { if (!isObjectLike_default(value) || baseGetTag_default(value) != objectTag2) { @@ -79091,7 +79370,7 @@ function isPlainObject(value) { if (proto === null) { return true; } - var Ctor = hasOwnProperty8.call(proto, "constructor") && proto.constructor; + var Ctor = hasOwnProperty10.call(proto, "constructor") && proto.constructor; return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString3.call(Ctor) == objectCtorString; } var isPlainObject_default = isPlainObject; @@ -79126,6 +79405,460 @@ function basePropertyOf(object) { } var basePropertyOf_default = basePropertyOf; +// node_modules/lodash-es/_stackClear.js +function stackClear() { + this.__data__ = new ListCache_default(); + this.size = 0; +} +var stackClear_default = stackClear; + +// node_modules/lodash-es/_stackDelete.js +function stackDelete(key) { + var data = this.__data__, result = data["delete"](key); + this.size = data.size; + return result; +} +var stackDelete_default = stackDelete; + +// node_modules/lodash-es/_stackGet.js +function stackGet(key) { + return this.__data__.get(key); +} +var stackGet_default = stackGet; + +// node_modules/lodash-es/_stackHas.js +function stackHas(key) { + return this.__data__.has(key); +} +var stackHas_default = stackHas; + +// node_modules/lodash-es/_stackSet.js +var LARGE_ARRAY_SIZE = 200; +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache_default) { + var pairs2 = data.__data__; + if (!Map_default || pairs2.length < LARGE_ARRAY_SIZE - 1) { + pairs2.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache_default(pairs2); + } + data.set(key, value); + this.size = data.size; + return this; +} +var stackSet_default = stackSet; + +// node_modules/lodash-es/_Stack.js +function Stack(entries) { + var data = this.__data__ = new ListCache_default(entries); + this.size = data.size; +} +Stack.prototype.clear = stackClear_default; +Stack.prototype["delete"] = stackDelete_default; +Stack.prototype.get = stackGet_default; +Stack.prototype.has = stackHas_default; +Stack.prototype.set = stackSet_default; +var Stack_default = Stack; + +// node_modules/lodash-es/_baseAssign.js +function baseAssign(object, source) { + return object && copyObject_default(source, keys_default(source), object); +} +var baseAssign_default = baseAssign; + +// node_modules/lodash-es/_baseAssignIn.js +function baseAssignIn(object, source) { + return object && copyObject_default(source, keysIn_default(source), object); +} +var baseAssignIn_default = baseAssignIn; + +// node_modules/lodash-es/_cloneBuffer.js +var freeExports3 = typeof exports == "object" && exports && !exports.nodeType && exports; +var freeModule3 = freeExports3 && typeof module == "object" && module && !module.nodeType && module; +var moduleExports3 = freeModule3 && freeModule3.exports === freeExports3; +var Buffer3 = moduleExports3 ? root_default.Buffer : void 0; +var allocUnsafe = Buffer3 ? Buffer3.allocUnsafe : void 0; +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + buffer.copy(result); + return result; +} +var cloneBuffer_default = cloneBuffer; + +// node_modules/lodash-es/_arrayFilter.js +function arrayFilter(array, predicate) { + var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = []; + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} +var arrayFilter_default = arrayFilter; + +// node_modules/lodash-es/stubArray.js +function stubArray() { + return []; +} +var stubArray_default = stubArray; + +// node_modules/lodash-es/_getSymbols.js +var objectProto13 = Object.prototype; +var propertyIsEnumerable2 = objectProto13.propertyIsEnumerable; +var nativeGetSymbols = Object.getOwnPropertySymbols; +var getSymbols = !nativeGetSymbols ? stubArray_default : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter_default(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable2.call(object, symbol); + }); +}; +var getSymbols_default = getSymbols; + +// node_modules/lodash-es/_copySymbols.js +function copySymbols(source, object) { + return copyObject_default(source, getSymbols_default(source), object); +} +var copySymbols_default = copySymbols; + +// node_modules/lodash-es/_getSymbolsIn.js +var nativeGetSymbols2 = Object.getOwnPropertySymbols; +var getSymbolsIn = !nativeGetSymbols2 ? stubArray_default : function(object) { + var result = []; + while (object) { + arrayPush_default(result, getSymbols_default(object)); + object = getPrototype_default(object); + } + return result; +}; +var getSymbolsIn_default = getSymbolsIn; + +// node_modules/lodash-es/_copySymbolsIn.js +function copySymbolsIn(source, object) { + return copyObject_default(source, getSymbolsIn_default(source), object); +} +var copySymbolsIn_default = copySymbolsIn; + +// node_modules/lodash-es/_baseGetAllKeys.js +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray_default(object) ? result : arrayPush_default(result, symbolsFunc(object)); +} +var baseGetAllKeys_default = baseGetAllKeys; + +// node_modules/lodash-es/_getAllKeys.js +function getAllKeys(object) { + return baseGetAllKeys_default(object, keys_default, getSymbols_default); +} +var getAllKeys_default = getAllKeys; + +// node_modules/lodash-es/_getAllKeysIn.js +function getAllKeysIn(object) { + return baseGetAllKeys_default(object, keysIn_default, getSymbolsIn_default); +} +var getAllKeysIn_default = getAllKeysIn; + +// node_modules/lodash-es/_DataView.js +var DataView = getNative_default(root_default, "DataView"); +var DataView_default = DataView; + +// node_modules/lodash-es/_Promise.js +var Promise2 = getNative_default(root_default, "Promise"); +var Promise_default = Promise2; + +// node_modules/lodash-es/_Set.js +var Set2 = getNative_default(root_default, "Set"); +var Set_default = Set2; + +// node_modules/lodash-es/_getTag.js +var mapTag2 = "[object Map]"; +var objectTag3 = "[object Object]"; +var promiseTag = "[object Promise]"; +var setTag2 = "[object Set]"; +var weakMapTag2 = "[object WeakMap]"; +var dataViewTag2 = "[object DataView]"; +var dataViewCtorString = toSource_default(DataView_default); +var mapCtorString = toSource_default(Map_default); +var promiseCtorString = toSource_default(Promise_default); +var setCtorString = toSource_default(Set_default); +var weakMapCtorString = toSource_default(WeakMap_default); +var getTag = baseGetTag_default; +if (DataView_default && getTag(new DataView_default(new ArrayBuffer(1))) != dataViewTag2 || Map_default && getTag(new Map_default()) != mapTag2 || Promise_default && getTag(Promise_default.resolve()) != promiseTag || Set_default && getTag(new Set_default()) != setTag2 || WeakMap_default && getTag(new WeakMap_default()) != weakMapTag2) { + getTag = function(value) { + var result = baseGetTag_default(value), Ctor = result == objectTag3 ? value.constructor : void 0, ctorString = Ctor ? toSource_default(Ctor) : ""; + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: + return dataViewTag2; + case mapCtorString: + return mapTag2; + case promiseCtorString: + return promiseTag; + case setCtorString: + return setTag2; + case weakMapCtorString: + return weakMapTag2; + } + } + return result; + }; +} +var getTag_default = getTag; + +// node_modules/lodash-es/_initCloneArray.js +var objectProto14 = Object.prototype; +var hasOwnProperty11 = objectProto14.hasOwnProperty; +function initCloneArray(array) { + var length = array.length, result = new array.constructor(length); + if (length && typeof array[0] == "string" && hasOwnProperty11.call(array, "index")) { + result.index = array.index; + result.input = array.input; + } + return result; +} +var initCloneArray_default = initCloneArray; + +// node_modules/lodash-es/_Uint8Array.js +var Uint8Array2 = root_default.Uint8Array; +var Uint8Array_default = Uint8Array2; + +// node_modules/lodash-es/_cloneArrayBuffer.js +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array_default(result).set(new Uint8Array_default(arrayBuffer)); + return result; +} +var cloneArrayBuffer_default = cloneArrayBuffer; + +// node_modules/lodash-es/_cloneDataView.js +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer_default(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} +var cloneDataView_default = cloneDataView; + +// node_modules/lodash-es/_cloneRegExp.js +var reFlags = /\w*$/; +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} +var cloneRegExp_default = cloneRegExp; + +// node_modules/lodash-es/_cloneSymbol.js +var symbolProto2 = Symbol_default ? Symbol_default.prototype : void 0; +var symbolValueOf = symbolProto2 ? symbolProto2.valueOf : void 0; +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} +var cloneSymbol_default = cloneSymbol; + +// node_modules/lodash-es/_cloneTypedArray.js +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer_default(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} +var cloneTypedArray_default = cloneTypedArray; + +// node_modules/lodash-es/_initCloneByTag.js +var boolTag2 = "[object Boolean]"; +var dateTag2 = "[object Date]"; +var mapTag3 = "[object Map]"; +var numberTag2 = "[object Number]"; +var regexpTag2 = "[object RegExp]"; +var setTag3 = "[object Set]"; +var stringTag2 = "[object String]"; +var symbolTag2 = "[object Symbol]"; +var arrayBufferTag2 = "[object ArrayBuffer]"; +var dataViewTag3 = "[object DataView]"; +var float32Tag2 = "[object Float32Array]"; +var float64Tag2 = "[object Float64Array]"; +var int8Tag2 = "[object Int8Array]"; +var int16Tag2 = "[object Int16Array]"; +var int32Tag2 = "[object Int32Array]"; +var uint8Tag2 = "[object Uint8Array]"; +var uint8ClampedTag2 = "[object Uint8ClampedArray]"; +var uint16Tag2 = "[object Uint16Array]"; +var uint32Tag2 = "[object Uint32Array]"; +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag2: + return cloneArrayBuffer_default(object); + case boolTag2: + case dateTag2: + return new Ctor(+object); + case dataViewTag3: + return cloneDataView_default(object, isDeep); + case float32Tag2: + case float64Tag2: + case int8Tag2: + case int16Tag2: + case int32Tag2: + case uint8Tag2: + case uint8ClampedTag2: + case uint16Tag2: + case uint32Tag2: + return cloneTypedArray_default(object, isDeep); + case mapTag3: + return new Ctor(); + case numberTag2: + case stringTag2: + return new Ctor(object); + case regexpTag2: + return cloneRegExp_default(object); + case setTag3: + return new Ctor(); + case symbolTag2: + return cloneSymbol_default(object); + } +} +var initCloneByTag_default = initCloneByTag; + +// node_modules/lodash-es/_initCloneObject.js +function initCloneObject(object) { + return typeof object.constructor == "function" && !isPrototype_default(object) ? baseCreate_default(getPrototype_default(object)) : {}; +} +var initCloneObject_default = initCloneObject; + +// node_modules/lodash-es/_baseIsMap.js +var mapTag4 = "[object Map]"; +function baseIsMap(value) { + return isObjectLike_default(value) && getTag_default(value) == mapTag4; +} +var baseIsMap_default = baseIsMap; + +// node_modules/lodash-es/isMap.js +var nodeIsMap = nodeUtil_default && nodeUtil_default.isMap; +var isMap = nodeIsMap ? baseUnary_default(nodeIsMap) : baseIsMap_default; +var isMap_default = isMap; + +// node_modules/lodash-es/_baseIsSet.js +var setTag4 = "[object Set]"; +function baseIsSet(value) { + return isObjectLike_default(value) && getTag_default(value) == setTag4; +} +var baseIsSet_default = baseIsSet; + +// node_modules/lodash-es/isSet.js +var nodeIsSet = nodeUtil_default && nodeUtil_default.isSet; +var isSet = nodeIsSet ? baseUnary_default(nodeIsSet) : baseIsSet_default; +var isSet_default = isSet; + +// node_modules/lodash-es/_baseClone.js +var CLONE_DEEP_FLAG = 1; +var CLONE_FLAT_FLAG = 2; +var CLONE_SYMBOLS_FLAG = 4; +var argsTag3 = "[object Arguments]"; +var arrayTag2 = "[object Array]"; +var boolTag3 = "[object Boolean]"; +var dateTag3 = "[object Date]"; +var errorTag3 = "[object Error]"; +var funcTag3 = "[object Function]"; +var genTag2 = "[object GeneratorFunction]"; +var mapTag5 = "[object Map]"; +var numberTag3 = "[object Number]"; +var objectTag4 = "[object Object]"; +var regexpTag3 = "[object RegExp]"; +var setTag5 = "[object Set]"; +var stringTag3 = "[object String]"; +var symbolTag3 = "[object Symbol]"; +var weakMapTag3 = "[object WeakMap]"; +var arrayBufferTag3 = "[object ArrayBuffer]"; +var dataViewTag4 = "[object DataView]"; +var float32Tag3 = "[object Float32Array]"; +var float64Tag3 = "[object Float64Array]"; +var int8Tag3 = "[object Int8Array]"; +var int16Tag3 = "[object Int16Array]"; +var int32Tag3 = "[object Int32Array]"; +var uint8Tag3 = "[object Uint8Array]"; +var uint8ClampedTag3 = "[object Uint8ClampedArray]"; +var uint16Tag3 = "[object Uint16Array]"; +var uint32Tag3 = "[object Uint32Array]"; +var cloneableTags = {}; +cloneableTags[argsTag3] = cloneableTags[arrayTag2] = cloneableTags[arrayBufferTag3] = cloneableTags[dataViewTag4] = cloneableTags[boolTag3] = cloneableTags[dateTag3] = cloneableTags[float32Tag3] = cloneableTags[float64Tag3] = cloneableTags[int8Tag3] = cloneableTags[int16Tag3] = cloneableTags[int32Tag3] = cloneableTags[mapTag5] = cloneableTags[numberTag3] = cloneableTags[objectTag4] = cloneableTags[regexpTag3] = cloneableTags[setTag5] = cloneableTags[stringTag3] = cloneableTags[symbolTag3] = cloneableTags[uint8Tag3] = cloneableTags[uint8ClampedTag3] = cloneableTags[uint16Tag3] = cloneableTags[uint32Tag3] = true; +cloneableTags[errorTag3] = cloneableTags[funcTag3] = cloneableTags[weakMapTag3] = false; +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG; + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== void 0) { + return result; + } + if (!isObject_default(value)) { + return value; + } + var isArr = isArray_default(value); + if (isArr) { + result = initCloneArray_default(value); + if (!isDeep) { + return copyArray_default(value, result); + } + } else { + var tag = getTag_default(value), isFunc = tag == funcTag3 || tag == genTag2; + if (isBuffer_default(value)) { + return cloneBuffer_default(value, isDeep); + } + if (tag == objectTag4 || tag == argsTag3 || isFunc && !object) { + result = isFlat || isFunc ? {} : initCloneObject_default(value); + if (!isDeep) { + return isFlat ? copySymbolsIn_default(value, baseAssignIn_default(result, value)) : copySymbols_default(value, baseAssign_default(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag_default(value, tag, isDeep); + } + } + stack || (stack = new Stack_default()); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + if (isSet_default(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap_default(value)) { + value.forEach(function(subValue, key2) { + result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); + }); + } + var keysFunc = isFull ? isFlat ? getAllKeysIn_default : getAllKeys_default : isFlat ? keysIn_default : keys_default; + var props = isArr ? void 0 : keysFunc(value); + arrayEach_default(props || value, function(subValue, key2) { + if (props) { + key2 = subValue; + subValue = value[key2]; + } + assignValue_default(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack)); + }); + return result; +} +var baseClone_default = baseClone; + +// node_modules/lodash-es/cloneDeep.js +var CLONE_DEEP_FLAG2 = 1; +var CLONE_SYMBOLS_FLAG2 = 4; +function cloneDeep(value) { + return baseClone_default(value, CLONE_DEEP_FLAG2 | CLONE_SYMBOLS_FLAG2); +} +var cloneDeep_default = cloneDeep; + // node_modules/lodash-es/_escapeHtmlChar.js var htmlEscapes = { "&": "&", @@ -79147,9 +79880,9 @@ function escape(string) { var escape_default = escape; // node_modules/lodash-es/isString.js -var stringTag2 = "[object String]"; +var stringTag4 = "[object String]"; function isString(value) { - return typeof value == "string" || !isArray_default(value) && isObjectLike_default(value) && baseGetTag_default(value) == stringTag2; + return typeof value == "string" || !isArray_default(value) && isObjectLike_default(value) && baseGetTag_default(value) == stringTag4; } var isString_default = isString; @@ -79162,16 +79895,16 @@ function baseValues(object, props) { var baseValues_default = baseValues; // node_modules/lodash-es/isBoolean.js -var boolTag2 = "[object Boolean]"; +var boolTag4 = "[object Boolean]"; function isBoolean(value) { - return value === true || value === false || isObjectLike_default(value) && baseGetTag_default(value) == boolTag2; + return value === true || value === false || isObjectLike_default(value) && baseGetTag_default(value) == boolTag4; } var isBoolean_default = isBoolean; // node_modules/lodash-es/_baseIsDate.js -var dateTag2 = "[object Date]"; +var dateTag4 = "[object Date]"; function baseIsDate(value) { - return isObjectLike_default(value) && baseGetTag_default(value) == dateTag2; + return isObjectLike_default(value) && baseGetTag_default(value) == dateTag4; } var baseIsDate_default = baseIsDate; @@ -79187,9 +79920,9 @@ function isInteger(value) { var isInteger_default = isInteger; // node_modules/lodash-es/isNumber.js -var numberTag2 = "[object Number]"; +var numberTag4 = "[object Number]"; function isNumber(value) { - return typeof value == "number" || isObjectLike_default(value) && baseGetTag_default(value) == numberTag2; + return typeof value == "number" || isObjectLike_default(value) && baseGetTag_default(value) == numberTag4; } var isNumber_default = isNumber; @@ -79213,10 +79946,10 @@ function isUndefined(value) { var isUndefined_default = isUndefined; // node_modules/lodash-es/_customDefaultsAssignIn.js -var objectProto11 = Object.prototype; -var hasOwnProperty9 = objectProto11.hasOwnProperty; +var objectProto15 = Object.prototype; +var hasOwnProperty12 = objectProto15.hasOwnProperty; function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === void 0 || eq_default(objValue, objectProto11[key]) && !hasOwnProperty9.call(object, key)) { + if (objValue === void 0 || eq_default(objValue, objectProto15[key]) && !hasOwnProperty12.call(object, key)) { return srcValue; } return objValue; @@ -79270,8 +80003,8 @@ var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; var reNoMatch = /($^)/; var reUnescapedString = /['\n\r\u2028\u2029\\]/g; -var objectProto12 = Object.prototype; -var hasOwnProperty10 = objectProto12.hasOwnProperty; +var objectProto16 = Object.prototype; +var hasOwnProperty13 = objectProto16.hasOwnProperty; function template(string, options2, guard) { var settings = templateSettings_default.imports._.templateSettings || templateSettings_default; if (guard && isIterateeCall_default(string, options2, guard)) { @@ -79282,7 +80015,7 @@ function template(string, options2, guard) { var imports = assignInWith_default({}, options2.imports, settings.imports, customDefaultsAssignIn_default), importsKeys = keys_default(imports), importsValues = baseValues_default(imports, importsKeys); var isEscaping, isEvaluating, index = 0, interpolate = options2.interpolate || reNoMatch, source = "__p += '"; var reDelimiters = RegExp((options2.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate_default ? reEsTemplate : reNoMatch).source + "|" + (options2.evaluate || reNoMatch).source + "|$", "g"); - var sourceURL = hasOwnProperty10.call(options2, "sourceURL") ? "//# sourceURL=" + (options2.sourceURL + "").replace(/\s/g, " ") + "\n" : ""; + var sourceURL = hasOwnProperty13.call(options2, "sourceURL") ? "//# sourceURL=" + (options2.sourceURL + "").replace(/\s/g, " ") + "\n" : ""; string.replace(reDelimiters, function(match2, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { interpolateValue || (interpolateValue = esTemplateValue); source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar_default); @@ -79301,7 +80034,7 @@ function template(string, options2, guard) { return match2; }); source += "';\n"; - var variable = hasOwnProperty10.call(options2, "variable") && options2.variable; + var variable = hasOwnProperty13.call(options2, "variable") && options2.variable; if (!variable) { source = "with (obj) {\n" + source + "\n}\n"; } else if (reForbiddenIdentifierChars.test(variable)) { @@ -79408,9 +80141,10 @@ var DEFAULT_SETTINGS = { defaultCommentStatus: "open" /* Open */, rememberLastSelectedCategories: true, showWordPressEditConfirm: false, - mathJaxOutputType: "svg" /* SVG */ + mathJaxOutputType: "svg" /* SVG */, + enableHtml: false }; -function upgradeSettings(existingSettings, to, plugin) { +function upgradeSettings(existingSettings, to) { return __async(this, null, function* () { console.log(existingSettings, to); if (isUndefined_default(existingSettings.version)) { @@ -79425,33 +80159,43 @@ function upgradeSettings(existingSettings, to, plugin) { showWordPressEditConfirm: existingSettings.showWordPressEditConfirm, mathJaxOutputType: existingSettings.mathJaxOutputType }); - const endpoint = existingSettings.endpoint; - const apiType = existingSettings.apiType; - const xmlRpcPath = existingSettings.xmlRpcPath; - const username = existingSettings.username; - const password = existingSettings.password; - const lastSelectedCategories = existingSettings.lastSelectedCategories; - const crypto2 = new PassCrypto(); - const encryptedPassword = yield crypto2.encrypt(password); - const profile = { - name: WP_DEFAULT_PROFILE_NAME, - apiType, - endpoint, - xmlRpcPath, - saveUsername: !isNil_default(username), - savePassword: !isNil_default(password), - isDefault: true, - lastSelectedCategories, - username, - encryptedPassword + if (existingSettings.endpoint) { + const endpoint = existingSettings.endpoint; + const apiType = existingSettings.apiType; + const xmlRpcPath = existingSettings.xmlRpcPath; + const username = existingSettings.username; + const password = existingSettings.password; + const lastSelectedCategories = existingSettings.lastSelectedCategories; + const crypto2 = new PassCrypto(); + const encryptedPassword = yield crypto2.encrypt(password); + const profile = { + name: WP_DEFAULT_PROFILE_NAME, + apiType, + endpoint, + xmlRpcPath, + saveUsername: !isNil_default(username), + savePassword: !isNil_default(password), + isDefault: true, + lastSelectedCategories, + username, + encryptedPassword + }; + newSettings.profiles = [ + profile + ]; + } else { + newSettings.profiles = []; + } + return { + needUpgrade: true, + settings: newSettings }; - newSettings.profiles = [ - profile - ]; - return newSettings; } } - return existingSettings; + return { + needUpgrade: false, + settings: existingSettings + }; }); } @@ -89878,7 +90622,7 @@ var AbstractWordPressClient = class { const { activeEditor } = app.workspace; if (activeEditor && activeEditor.file) { (() => __async(this, null, function* () { - var _a, _b; + var _a, _b, _c; let username = null; let password = null; let loginModal; @@ -89931,7 +90675,7 @@ var AbstractWordPressClient = class { username, password }); - const selectedCategories = (_b = matterData.categories) != null ? _b : this.profile.lastSelectedCategories; + const selectedCategories = (_c = (_b = matterData.categories) != null ? _b : this.profile.lastSelectedCategories) != null ? _c : [1]; const { postParams, publishModal } = yield openPublishModal(this.plugin, categories, selectedCategories); const params = this.readFromFrontMatter(noteTitle, matterData, postParams); params.content = content; @@ -90334,7 +91078,6 @@ var WpRestClient = class extends AbstractWordPressClient { response: data }; }).catch((error) => { - console.log(error); return { code: 1 /* Error */, data: this.plugin.i18n.t("error_invalidUser") @@ -90987,6 +91730,13 @@ var WordpressSettingTab = class extends import_obsidian15.PluginSettingTab { text: mathJaxOutputTypeDesc, cls: "setting-item-description" }); + new import_obsidian15.Setting(containerEl).setName(t2("settings_enableHtml")).setDesc(t2("settings_enableHtmlDesc")).addToggle((toggle) => toggle.setValue(this.plugin.settings.enableHtml).onChange((value) => __async(this, null, function* () { + this.plugin.settings.enableHtml = value; + yield this.plugin.saveSettings(); + AppState.getInstance().markdownParser.set({ + html: this.plugin.settings.enableHtml + }); + }))); } }; @@ -91098,6 +91848,8 @@ __export(en_exports, { settings_defaultPostStatusDesc: () => settings_defaultPostStatusDesc, settings_defaultPostStatusDraft: () => settings_defaultPostStatusDraft, settings_defaultPostStatusPublish: () => settings_defaultPostStatusPublish, + settings_enableHtml: () => settings_enableHtml, + settings_enableHtmlDesc: () => settings_enableHtmlDesc, settings_mathJaxOutputType: () => settings_mathJaxOutputType, settings_mathJaxOutputTypeDesc: () => settings_mathJaxOutputTypeDesc, settings_mathJaxOutputTypeSVG: () => settings_mathJaxOutputTypeSVG, @@ -91187,7 +91939,9 @@ var settings_mathJaxOutputTypeDesc = "Select MathJax output format."; var settings_mathJaxOutputTypeTeX = "TeX"; var settings_MathJaxOutputTypeTeXDesc = "Convert MathJax to TeX directly. WordPress needs install MathJax related plugin, such as simple-mathjax."; var settings_mathJaxOutputTypeSVG = "SVG"; -var settings_MathJaxOutputTypeSVGDesc = "Convert MathJax to SVG. Browser render SVG, no plugin needed for WordPress"; +var settings_MathJaxOutputTypeSVGDesc = "Convert MathJax to SVG. Browser render SVG, no plugin needed for WordPress."; +var settings_enableHtml = "Enable HTML"; +var settings_enableHtmlDesc = "Enable HTML tags in notes. This might cause XSS attack to your WordPress."; var loginModal_title = "WordPress Login"; var loginModal_username = "Username"; var loginModal_usernameDesc = "Username for <%= url %>"; @@ -91296,6 +92050,8 @@ var en_default = { settings_MathJaxOutputTypeTeXDesc, settings_mathJaxOutputTypeSVG, settings_MathJaxOutputTypeSVGDesc, + settings_enableHtml, + settings_enableHtmlDesc, loginModal_title, loginModal_username, loginModal_usernameDesc, @@ -91427,6 +92183,8 @@ __export(zh_cn_exports, { settings_defaultPostStatusDesc: () => settings_defaultPostStatusDesc2, settings_defaultPostStatusDraft: () => settings_defaultPostStatusDraft2, settings_defaultPostStatusPublish: () => settings_defaultPostStatusPublish2, + settings_enableHtml: () => settings_enableHtml2, + settings_enableHtmlDesc: () => settings_enableHtmlDesc2, settings_mathJaxOutputType: () => settings_mathJaxOutputType2, settings_mathJaxOutputTypeDesc: () => settings_mathJaxOutputTypeDesc2, settings_mathJaxOutputTypeSVG: () => settings_mathJaxOutputTypeSVG2, @@ -91517,6 +92275,8 @@ var settings_mathJaxOutputTypeTeX2 = "TeX"; var settings_MathJaxOutputTypeTeXDesc2 = "\u5C06 MathJax \u516C\u5F0F\u8F93\u51FA\u4E3A TeX \u683C\u5F0F\u3002WordPress \u9700\u8981\u5B89\u88C5 MathJax \u76F8\u5173\u63D2\u4EF6\uFF0C\u4F8B\u5982 simple-mathjax"; var settings_mathJaxOutputTypeSVG2 = "SVG"; var settings_MathJaxOutputTypeSVGDesc2 = "\u5C06 MathJax \u516C\u5F0F\u8F93\u51FA\u4E3A SVG \u683C\u5F0F\u3002\u6D4F\u89C8\u5668\u53EF\u4EE5\u76F4\u63A5\u663E\u793A SVG \u77E2\u91CF\u56FE\uFF0CWordPress \u65E0\u9700\u4EFB\u4F55\u5904\u7406"; +var settings_enableHtml2 = "\u542F\u7528 HTML"; +var settings_enableHtmlDesc2 = "\u542F\u7528\u7B14\u8BB0\u4E2D\u7684 HTML \u6807\u7B7E\u3002\u8FD9\u53EF\u80FD\u5BFC\u81F4\u9488\u5BF9 WordPress \u7684 XSS \u653B\u51FB"; var loginModal_title2 = "WordPress \u767B\u5F55"; var loginModal_username2 = "\u7528\u6237\u540D"; var loginModal_usernameDesc2 = "<%= url %> \u7528\u6237\u540D"; @@ -91625,6 +92385,8 @@ var zh_cn_default = { settings_MathJaxOutputTypeTeXDesc: settings_MathJaxOutputTypeTeXDesc2, settings_mathJaxOutputTypeSVG: settings_mathJaxOutputTypeSVG2, settings_MathJaxOutputTypeSVGDesc: settings_MathJaxOutputTypeSVGDesc2, + settings_enableHtml: settings_enableHtml2, + settings_enableHtmlDesc: settings_enableHtmlDesc2, loginModal_title: loginModal_title2, loginModal_username: loginModal_username2, loginModal_usernameDesc: loginModal_usernameDesc2, @@ -91810,10 +92572,13 @@ var WordpressPlugin = class extends import_obsidian19.Plugin { } loadSettings() { return __async(this, null, function* () { - var _a, _b, _c; + var _a, _b, _c, _d, _e; __privateSet(this, _settings, Object.assign({}, DEFAULT_SETTINGS, yield this.loadData())); - __privateSet(this, _settings, yield upgradeSettings(__privateGet(this, _settings), "2" /* V2 */, this)); - yield this.saveSettings(); + const { needUpgrade, settings } = yield upgradeSettings(__privateGet(this, _settings), "2" /* V2 */); + __privateSet(this, _settings, settings); + if (needUpgrade) { + yield this.saveSettings(); + } const crypto2 = new PassCrypto(); const count = (_b = (_a = __privateGet(this, _settings)) == null ? void 0 : _a.profiles.length) != null ? _b : 0; for (let i2 = 0; i2 < count; i2++) { @@ -91823,11 +92588,24 @@ var WordpressPlugin = class extends import_obsidian19.Plugin { profile.password = yield crypto2.decrypt(enPass.encrypted, enPass.key, enPass.vector); } } + AppState.getInstance().markdownParser.set({ + html: (_e = (_d = __privateGet(this, _settings)) == null ? void 0 : _d.enableHtml) != null ? _e : false + }); }); } saveSettings() { return __async(this, null, function* () { - yield this.saveData(__privateGet(this, _settings)); + const settings = cloneDeep_default(this.settings); + for (let i2 = 0; i2 < settings.profiles.length; i2++) { + const profile = settings.profiles[i2]; + const password = profile.password; + if (password) { + const crypto2 = new PassCrypto(); + profile.encryptedPassword = yield crypto2.encrypt(password); + delete profile.password; + } + } + yield this.saveData(settings); }); } updateRibbonIcon() { @@ -91945,4 +92723,3 @@ _i18n = new WeakMap(); * @param {String} selectorText from mensch * @api public */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vZW50aXRpZXMuanMiLCAibm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvUC9yZWdleC5qcyIsICJub2RlX21vZHVsZXMvbWR1cmwvZW5jb2RlLmpzIiwgIm5vZGVfbW9kdWxlcy9tZHVybC9kZWNvZGUuanMiLCAibm9kZV9tb2R1bGVzL21kdXJsL2Zvcm1hdC5qcyIsICJub2RlX21vZHVsZXMvbWR1cmwvcGFyc2UuanMiLCAibm9kZV9tb2R1bGVzL21kdXJsL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy91Yy5taWNyby9wcm9wZXJ0aWVzL0FueS9yZWdleC5qcyIsICJub2RlX21vZHVsZXMvdWMubWljcm8vY2F0ZWdvcmllcy9DYy9yZWdleC5qcyIsICJub2RlX21vZHVsZXMvdWMubWljcm8vY2F0ZWdvcmllcy9DZi9yZWdleC5qcyIsICJub2RlX21vZHVsZXMvdWMubWljcm8vY2F0ZWdvcmllcy9aL3JlZ2V4LmpzIiwgIm5vZGVfbW9kdWxlcy91Yy5taWNyby9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2NvbW1vbi91dGlscy5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua19sYWJlbC5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua19kZXN0aW5hdGlvbi5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua190aXRsZS5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9yZW5kZXJlci5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVyLmpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9ub3JtYWxpemUuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2Jsb2NrLmpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9pbmxpbmUuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2xpbmtpZnkuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3JlcGxhY2VtZW50cy5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2NvcmUvc21hcnRxdW90ZXMuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3RleHRfam9pbi5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3Rva2VuLmpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9zdGF0ZV9jb3JlLmpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcGFyc2VyX2NvcmUuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay90YWJsZS5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL2NvZGUuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9mZW5jZS5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL2Jsb2NrcXVvdGUuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9oci5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL2xpc3QuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9yZWZlcmVuY2UuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vaHRtbF9ibG9ja3MuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9jb21tb24vaHRtbF9yZS5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL2h0bWxfYmxvY2suanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9oZWFkaW5nLmpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svbGhlYWRpbmcuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9wYXJhZ3JhcGguanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9zdGF0ZV9ibG9jay5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3BhcnNlcl9ibG9jay5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS90ZXh0LmpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL2xpbmtpZnkuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvbmV3bGluZS5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9lc2NhcGUuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYmFja3RpY2tzLmpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL3N0cmlrZXRocm91Z2guanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZW1waGFzaXMuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvbGluay5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9pbWFnZS5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9hdXRvbGluay5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9odG1sX2lubGluZS5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9lbnRpdHkuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYmFsYW5jZV9wYWlycy5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9mcmFnbWVudHNfam9pbi5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9zdGF0ZV9pbmxpbmUuanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfaW5saW5lLmpzIiwgIm5vZGVfbW9kdWxlcy9saW5raWZ5LWl0L2xpYi9yZS5qcyIsICJub2RlX21vZHVsZXMvbGlua2lmeS1pdC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvZGVmYXVsdC5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvemVyby5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvY29tbW9ubWFyay5qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvT3B0aW9ucy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvUHJpb3JpdGl6ZWRMaXN0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvdXRpbC9GdW5jdGlvbkxpc3QudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL0lucHV0SmF4LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9GaW5kTWF0aC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvc3RyaW5nLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NYXRoSXRlbS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9GaW5kVGVYLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL0F0dHJpYnV0ZXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL1RyZWUvTm9kZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2RlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL09wZXJhdG9yRGljdGlvbmFyeS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tby50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9Ob2RlVXRpbC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9GaWx0ZXJVdGlsLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L1RleEVycm9yLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvdXRpbC9SZXRyaWVzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29tcG9uZW50cy92ZXJzaW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9IYW5kbGVyTGlzdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL21hdGhqYXgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL0FzeW5jTG9hZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvRW50aXRpZXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvUGFyc2VVdGlsLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L1N0YWNrLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L1RleFBhcnNlci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9TdGFja0l0ZW0udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL1RyZWUvRmFjdG9yeS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9TdGFja0l0ZW1GYWN0b3J5LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L05vZGVGYWN0b3J5LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L1BhcnNlT3B0aW9ucy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9UYWdzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L01hcEhhbmRsZXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9TeW1ib2wudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvU3ltYm9sTWFwLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2Jhc2UvQmFzZUl0ZW1zLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L1RleENvbnN0YW50cy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvbGVuZ3Rocy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9iYXNlL0Jhc2VNZXRob2RzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L1BhcnNlTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9iYXNlL0Jhc2VNYXBwaW5ncy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9iYXNlL0Jhc2VDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2FjdGlvbi9BY3Rpb25Db25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2Ftcy9BbXNJdGVtcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9hbXMvQW1zTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9hbXMvQW1zTWFwcGluZ3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYW1zL0Ftc0NvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYW1zY2QvQW1zQ2RNZXRob2RzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2Ftc2NkL0Ftc0NkTWFwcGluZ3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYW1zY2QvQW1zQ2RDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2Jib3gvQmJveENvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYm9sZHN5bWJvbC9Cb2xkc3ltYm9sQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9icmFrZXQvQnJha2V0SXRlbXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYnJha2V0L0JyYWtldE1ldGhvZHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYnJha2V0L0JyYWtldE1hcHBpbmdzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2JyYWtldC9CcmFrZXRDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2J1c3Nwcm9vZnMvQnVzc3Byb29mc1V0aWwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYnVzc3Byb29mcy9CdXNzcHJvb2ZzSXRlbXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYnVzc3Byb29mcy9CdXNzcHJvb2ZzTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9idXNzcHJvb2ZzL0J1c3Nwcm9vZnNNYXBwaW5ncy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9idXNzcHJvb2ZzL0J1c3Nwcm9vZnNDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2VuY2xvc2UvRW5jbG9zZUNvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvY2FuY2VsL0NhbmNlbENvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvZW1waGVxL0VtcGhlcVV0aWwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvY2FzZXMvQ2FzZXNDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2NlbnRlcm5vdC9DZW50ZXJub3RDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2NvbG9yL0NvbG9yTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9jb2xvci9Db2xvckNvbnN0YW50cy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9jb2xvci9Db2xvclV0aWwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvY29sb3IvQ29sb3JDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2NvbG9ydjIvQ29sb3JWMkNvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvY29sb3J0YmwvQ29sb3J0YmxDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L25ld2NvbW1hbmQvTmV3Y29tbWFuZFV0aWwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbmV3Y29tbWFuZC9OZXdjb21tYW5kTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9uZXdjb21tYW5kL05ld2NvbW1hbmRJdGVtcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9jb25maWdtYWNyb3MvQ29uZmlnTWFjcm9zQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9lbXBoZXEvRW1waGVxQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9uZXdjb21tYW5kL05ld2NvbW1hbmRNYXBwaW5ncy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9uZXdjb21tYW5kL05ld2NvbW1hbmRDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2V4dHBmZWlsL0V4dHBmZWlsQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9nZW5zeW1iL0dlbnN5bWJDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2h0bWwvSHRtbE1ldGhvZHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvaHRtbC9IdG1sQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9tYXRodG9vbHMvTWF0aHRvb2xzVXRpbC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9tYXRodG9vbHMvTWF0aHRvb2xzTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9tYXRodG9vbHMvTWF0aHRvb2xzTWFwcGluZ3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbWF0aHRvb2xzL01hdGh0b29sc1RhZ3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbWF0aHRvb2xzL01hdGh0b29sc0l0ZW1zLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L21hdGh0b29scy9NYXRodG9vbHNDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9taGNoZW1wYXJzZXIvZGlzdC9taGNoZW1QYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbWhjaGVtL01oY2hlbUNvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbm9lcnJvcnMvTm9FcnJvcnNDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L25vdW5kZWZpbmVkL05vVW5kZWZpbmVkQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9waHlzaWNzL1BoeXNpY3NJdGVtcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9waHlzaWNzL1BoeXNpY3NNZXRob2RzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L3BoeXNpY3MvUGh5c2ljc01hcHBpbmdzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L3BoeXNpY3MvUGh5c2ljc0NvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvc2V0b3B0aW9ucy9TZXRPcHRpb25zQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC90YWdmb3JtYXQvVGFnRm9ybWF0Q29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC90ZXh0bWFjcm9zL1RleHRNYWNyb3NNZXRob2RzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L3RleHRtYWNyb3MvVGV4dFBhcnNlci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC90ZXh0Y29tcC9UZXh0Y29tcE1hcHBpbmdzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L3RleHRjb21wL1RleHRjb21wQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC90ZXh0bWFjcm9zL1RleHRNYWNyb3NNYXBwaW5ncy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC90ZXh0bWFjcm9zL1RleHRNYWNyb3NDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L3VwZ3JlZWsvVXBncmVla0NvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvdW5pY29kZS9Vbmljb2RlQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC92ZXJiL1ZlcmJDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L0FsbFBhY2thZ2VzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9PdXRwdXRKYXgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL1N0eWxlcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvU3R5bGVMaXN0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9PdXRwdXRKYXgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL1RyZWUvV3JhcHBlckZhY3RvcnkudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJGYWN0b3J5LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvdXRpbC9CQm94LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9UcmVlL1dyYXBwZXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL0ZvbnREYXRhLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVyLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVyLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tYXRoLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21hdGgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21hdGgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21yb3cudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXJvdy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbXJvdy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbWkudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbWkudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21pLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tby50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbW8udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21zLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tdGV4dC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tdGV4dC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbXRleHQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbWVycm9yLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tZXJyb3IudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21zcGFjZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tc3BhY2UudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21zcGFjZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbXBhZGRlZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tcGFkZGVkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tcGFkZGVkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21waGFudG9tLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tcGhhbnRvbS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbWZyYWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbWZyYWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21mcmFjLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tc3FydC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tc3FydC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbXNxcnQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21yb290LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21yb290LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tcm9vdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbWZlbmNlZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tZmVuY2VkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tZmVuY2VkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9zY3JpcHRiYXNlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9zY3JpcHRiYXNlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tc3Vic3VwLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21zdWJzdXAudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21zdWJzdXAudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL211bmRlcm92ZXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXVuZGVyb3Zlci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbXVuZGVyb3Zlci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbW11bHRpc2NyaXB0cy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tbXVsdGlzY3JpcHRzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tbXVsdGlzY3JpcHRzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvdXRpbC9udW1lcmljLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tdGFibGUudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXRhYmxlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tdGFibGUudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL210ci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tdHIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL210ci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbXRkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL210ZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbXRkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tYWN0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21hY3Rpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21hY3Rpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL05vdGF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tZW5jbG9zZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvTm90YXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbWVuY2xvc2UudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21lbmNsb3NlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9zZW1hbnRpY3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvc2VtYW50aWNzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9zZW1hbnRpY3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21nbHlwaC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tZ2x5cGgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21nbHlwaC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvVGVYQXRvbS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9UZVhBdG9tLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9UZVhBdG9tLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9UZXh0Tm9kZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvVGV4dE5vZGUudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVyRmFjdG9yeS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvRm9udERhdGEudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L2JvbGQtaXRhbGljLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvYm9sZC1pdGFsaWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L2RvdWJsZS1zdHJ1Y2sudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9kb3VibGUtc3RydWNrLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvZnJha3R1ci1ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvZnJha3R1ci1ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvZnJha3R1ci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L2ZyYWt0dXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9pdGFsaWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9pdGFsaWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9sYXJnZW9wLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvbGFyZ2VvcC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L21vbm9zcGFjZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L21vbm9zcGFjZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L25vcm1hbC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L25vcm1hbC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3NhbnMtc2VyaWYtYm9sZC1pdGFsaWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9zYW5zLXNlcmlmLWJvbGQtaXRhbGljLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvc2Fucy1zZXJpZi1ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvc2Fucy1zZXJpZi1ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvc2Fucy1zZXJpZi1pdGFsaWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9zYW5zLXNlcmlmLWl0YWxpYy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3NhbnMtc2VyaWYudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9zYW5zLXNlcmlmLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvc2NyaXB0LWJvbGQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9zY3JpcHQtYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3NjcmlwdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L3NjcmlwdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3NtYWxsb3AudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9zbWFsbG9wLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvdGV4LWNhbGxpZ3JhcGhpYy1ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvdGV4LWNhbGxpZ3JhcGhpYy1ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvdGV4LWNhbGxpZ3JhcGhpYy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L3RleC1jYWxsaWdyYXBoaWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC90ZXgtbWF0aGl0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvdGV4LW1hdGhpdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3RleC1vbGRzdHlsZS1ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvdGV4LW9sZHN0eWxlLWJvbGQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC90ZXgtb2xkc3R5bGUudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC90ZXgtb2xkc3R5bGUudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC90ZXgtc2l6ZTMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC90ZXgtc2l6ZTMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC90ZXgtc2l6ZTQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC90ZXgtc2l6ZTQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC90ZXgtdmFyaWFudC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L3RleC12YXJpYW50LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvZGVsaW1pdGVycy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9Gb250Q2FjaGUudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9ET01BZGFwdG9yLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvYWRhcHRvcnMvTm9kZU1peGluLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvYWRhcHRvcnMvbGl0ZS9FbGVtZW50LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvYWRhcHRvcnMvbGl0ZS9Eb2N1bWVudC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2FkYXB0b3JzL2xpdGUvVGV4dC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2FkYXB0b3JzL2xpdGUvTGlzdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2FkYXB0b3JzL2xpdGUvUGFyc2VyLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvYWRhcHRvcnMvbGl0ZS9XaW5kb3cudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9hZGFwdG9ycy9saXRlQWRhcHRvci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvTGlua2VkTGlzdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTWF0aExpc3QudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL1RyZWUvTm9kZUZhY3RvcnkudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXN0eWxlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21hbGlnbmdyb3VwLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21hbGlnbm1hcmsudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbWF0aGNob2ljZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NTUwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sRmFjdG9yeS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvQml0RmllbGQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01hdGhEb2N1bWVudC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvSGFuZGxlci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2hhbmRsZXJzL2h0bWwvSFRNTE1hdGhJdGVtLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaGFuZGxlcnMvaHRtbC9IVE1MTWF0aExpc3QudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9oYW5kbGVycy9odG1sL0hUTUxEb21TdHJpbmdzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaGFuZGxlcnMvaHRtbC9IVE1MRG9jdW1lbnQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9oYW5kbGVycy9odG1sL0hUTUxIYW5kbGVyLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaGFuZGxlcnMvaHRtbC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvVHJlZS9WaXNpdG9yLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbFZpc2l0b3IudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvU2VyaWFsaXplZE1tbFZpc2l0b3IudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9hMTF5L2Fzc2lzdGl2ZS1tbWwudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL3R5cGVzLmpzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9vcHRpb25zLnRzIiwgIm5vZGVfbW9kdWxlcy9kb21lbGVtZW50dHlwZS9saWIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL2RvbWhhbmRsZXIvbGliL25vZGUuanMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL2RvbWhhbmRsZXIvbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS1odG1sLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS14bWwudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9kZWNvZGVfY29kZXBvaW50LnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZGVjb2RlLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2dlbmVyYXRlZC9lbmNvZGUtaHRtbC50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2VzY2FwZS50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2VuY29kZS50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL25vZGVfbW9kdWxlcy9kb20tc2VyaWFsaXplci9saWIvZm9yZWlnbk5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL25vZGVfbW9kdWxlcy9kb20tc2VyaWFsaXplci9saWIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9zdHJpbmdpZnkudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi90cmF2ZXJzYWwudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9tYW5pcHVsYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9xdWVyeWluZy50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2xlZ2FjeS50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2hlbHBlcnMudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9mZWVkcy50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9zdGF0aWMudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL3V0aWxzLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9hcGkvYXBpL2F0dHJpYnV0ZXMudHMiLCAibm9kZV9tb2R1bGVzL2Nzcy13aGF0L2xpYi9jb21tb25qcy90eXBlcy5qcyIsICJub2RlX21vZHVsZXMvY3NzLXdoYXQvbGliL2NvbW1vbmpzL3BhcnNlLmpzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtd2hhdC9saWIvY29tbW9uanMvc3RyaW5naWZ5LmpzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtd2hhdC9saWIvY29tbW9uanMvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbWhhbmRsZXIvbGliL25vZGUuanMiLCAibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbWhhbmRsZXIvbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS1odG1sLnRzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS14bWwudHMiLCAibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3Qvbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9kZWNvZGVfY29kZXBvaW50LnRzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZGVjb2RlLnRzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2dlbmVyYXRlZC9lbmNvZGUtaHRtbC50cyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2VzY2FwZS50cyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2VuY29kZS50cyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L25vZGVfbW9kdWxlcy9kb20tc2VyaWFsaXplci9saWIvZm9yZWlnbk5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L25vZGVfbW9kdWxlcy9kb20tc2VyaWFsaXplci9saWIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9zdHJpbmdpZnkudHMiLCAibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi90cmF2ZXJzYWwudHMiLCAibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9tYW5pcHVsYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9xdWVyeWluZy50cyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2xlZ2FjeS50cyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2hlbHBlcnMudHMiLCAibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9mZWVkcy50cyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9ib29sYmFzZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9saWIvc29ydC50cyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9saWIvYXR0cmlidXRlcy50cyIsICJub2RlX21vZHVsZXMvbnRoLWNoZWNrL2xpYi9wYXJzZS50cyIsICJub2RlX21vZHVsZXMvbnRoLWNoZWNrL2xpYi9jb21waWxlLnRzIiwgIm5vZGVfbW9kdWxlcy9udGgtY2hlY2svbGliL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L2xpYi9wc2V1ZG8tc2VsZWN0b3JzL3BzZXVkby1zZWxlY3RvcnMvZmlsdGVycy50cyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9saWIvcHNldWRvLXNlbGVjdG9ycy9wc2V1ZG8tc2VsZWN0b3JzL3BzZXVkb3MudHMiLCAibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3QvbGliL3BzZXVkby1zZWxlY3RvcnMvcHNldWRvLXNlbGVjdG9ycy9hbGlhc2VzLnRzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L2xpYi9wc2V1ZG8tc2VsZWN0b3JzL3BzZXVkby1zZWxlY3RvcnMvc3Vic2VsZWN0cy50cyIsICJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9saWIvcHNldWRvLXNlbGVjdG9ycy9wc2V1ZG8tc2VsZWN0b3JzL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L2xpYi9nZW5lcmFsLnRzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L2xpYi9jb21waWxlLnRzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L2xpYi9pbmRleC50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbWhhbmRsZXIvbGliL25vZGUuanMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8tc2VsZWN0L25vZGVfbW9kdWxlcy9kb21oYW5kbGVyL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9nZW5lcmF0ZWQvZ2VuZXJhdGVkL2RlY29kZS1kYXRhLWh0bWwudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8tc2VsZWN0L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS14bWwudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8tc2VsZWN0L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZGVjb2RlX2NvZGVwb2ludC50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9kZWNvZGUudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8tc2VsZWN0L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2dlbmVyYXRlZC9lbmNvZGUtaHRtbC50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9lc2NhcGUudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8tc2VsZWN0L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZW5jb2RlLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvLXNlbGVjdC9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvLXNlbGVjdC9ub2RlX21vZHVsZXMvZG9tLXNlcmlhbGl6ZXIvbGliL2ZvcmVpZ25OYW1lcy5qcyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbS1zZXJpYWxpemVyL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9zdHJpbmdpZnkudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8tc2VsZWN0L25vZGVfbW9kdWxlcy9kb211dGlscy9saWIvdHJhdmVyc2FsLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvLXNlbGVjdC9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL21hbmlwdWxhdGlvbi50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9xdWVyeWluZy50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9sZWdhY3kudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8tc2VsZWN0L25vZGVfbW9kdWxlcy9kb211dGlscy9saWIvaGVscGVycy50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9mZWVkcy50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3Qvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9pbmRleC50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3QvbGliL3Bvc2l0aW9uYWxzLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvLXNlbGVjdC9saWIvaGVscGVycy50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby1zZWxlY3QvbGliL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9hcGkvYXBpL3RyYXZlcnNpbmcudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL3BhcnNlLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9hcGkvYXBpL21hbmlwdWxhdGlvbi50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby9saWIvYXBpL2FwaS9jc3MudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL2FwaS9hcGkvZm9ybXMudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL2NoZWVyaW8udHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL2xvYWQudHMiLCAibm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9jb21tb24vdW5pY29kZS5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL3Rva2VuaXplci9wcmVwcm9jZXNzb3IuanMiLCAibm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9jb21tb24vdG9rZW4uanMiLCAibm9kZV9tb2R1bGVzL3BhcnNlNS9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2dlbmVyYXRlZC9nZW5lcmF0ZWQvZGVjb2RlLWRhdGEtaHRtbC50cyIsICJub2RlX21vZHVsZXMvcGFyc2U1L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS14bWwudHMiLCAibm9kZV9tb2R1bGVzL3BhcnNlNS9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2RlY29kZV9jb2RlcG9pbnQudHMiLCAibm9kZV9tb2R1bGVzL3BhcnNlNS9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2RlY29kZS50cyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL2NvbW1vbi9odG1sLmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvdG9rZW5pemVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvcGFyc2VyL29wZW4tZWxlbWVudC1zdGFjay5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL3BhcnNlci9mb3JtYXR0aW5nLWVsZW1lbnQtbGlzdC5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL3RyZWUtYWRhcHRlcnMvZGVmYXVsdC5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL2NvbW1vbi9kb2N0eXBlLmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvY29tbW9uL2ZvcmVpZ24tY29udGVudC5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL3BhcnNlci9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZXNjYXBlLnRzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvc2VyaWFsaXplci9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUtaHRtbHBhcnNlcjItdHJlZS1hZGFwdGVyL25vZGVfbW9kdWxlcy9kb21oYW5kbGVyL2xpYi9ub2RlLmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUtaHRtbHBhcnNlcjItdHJlZS1hZGFwdGVyL25vZGVfbW9kdWxlcy9kb21oYW5kbGVyL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1LWh0bWxwYXJzZXIyLXRyZWUtYWRhcHRlci9kaXN0L2Nqcy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvY2hlZXJpby9saWIvcGFyc2Vycy9wYXJzZXJzL3BhcnNlNS1hZGFwdGVyLnRzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2dlbmVyYXRlZC9nZW5lcmF0ZWQvZGVjb2RlLWRhdGEtaHRtbC50cyIsICJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9nZW5lcmF0ZWQvZ2VuZXJhdGVkL2RlY29kZS1kYXRhLXhtbC50cyIsICJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9kZWNvZGVfY29kZXBvaW50LnRzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2RlY29kZS50cyIsICJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbGliL1Rva2VuaXplci50cyIsICJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbGliL1BhcnNlci50cyIsICJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbm9kZV9tb2R1bGVzL2RvbWhhbmRsZXIvbGliL25vZGUuanMiLCAibm9kZV9tb2R1bGVzL2h0bWxwYXJzZXIyL25vZGVfbW9kdWxlcy9kb21oYW5kbGVyL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9nZW5lcmF0ZWQvZ2VuZXJhdGVkL2VuY29kZS1odG1sLnRzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9ub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2VzY2FwZS50cyIsICJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9lbmNvZGUudHMiLCAibm9kZV9tb2R1bGVzL2h0bWxwYXJzZXIyL25vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvaW5kZXgudHMiLCAibm9kZV9tb2R1bGVzL2h0bWxwYXJzZXIyL25vZGVfbW9kdWxlcy9kb20tc2VyaWFsaXplci9saWIvZm9yZWlnbk5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9ub2RlX21vZHVsZXMvZG9tLXNlcmlhbGl6ZXIvbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL3N0cmluZ2lmeS50cyIsICJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi90cmF2ZXJzYWwudHMiLCAibm9kZV9tb2R1bGVzL2h0bWxwYXJzZXIyL25vZGVfbW9kdWxlcy9kb211dGlscy9saWIvbWFuaXB1bGF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL3F1ZXJ5aW5nLnRzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2xlZ2FjeS50cyIsICJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi9oZWxwZXJzLnRzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2ZlZWRzLnRzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9ub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9saWIvaW5kZXgudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9tZW5zY2gvbGliL2RlYnVnLmpzIiwgIm5vZGVfbW9kdWxlcy9tZW5zY2gvbGliL2xleGVyLmpzIiwgIm5vZGVfbW9kdWxlcy9tZW5zY2gvbGliL3BhcnNlci5qcyIsICJub2RlX21vZHVsZXMvbWVuc2NoL2xpYi9zdHJpbmdpZnkuanMiLCAibm9kZV9tb2R1bGVzL21lbnNjaC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvc2xpY2svcGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9qdWljZS9saWIvc2VsZWN0b3IuanMiLCAibm9kZV9tb2R1bGVzL2p1aWNlL2xpYi9wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvanVpY2UvbGliL3V0aWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9qdWljZS9saWIvY2hlZXJpby5qcyIsICJub2RlX21vZHVsZXMvanVpY2UvbGliL251bWJlcnMuanMiLCAibm9kZV9tb2R1bGVzL2p1aWNlL2xpYi9pbmxpbmUuanMiLCAibm9kZV9tb2R1bGVzL2p1aWNlL2NsaWVudC5qcyIsICJub2RlX21vZHVsZXMva2luZC1vZi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvaXMtZXh0ZW5kYWJsZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZXh0ZW5kLXNoYWxsb3cvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3NlY3Rpb24tbWF0dGVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9jb21tb24uanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL2V4Y2VwdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvbWFyay5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3N0ci5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9zZXEuanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvbWFwLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9zY2hlbWEvZmFpbHNhZmUuanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvbnVsbC5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9ib29sLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2ludC5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9mbG9hdC5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2pzb24uanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9jb3JlLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL3RpbWVzdGFtcC5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9tZXJnZS5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9iaW5hcnkuanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvb21hcC5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9wYWlycy5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9zZXQuanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUuanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sL3R5cGUvanMvdW5kZWZpbmVkLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC90eXBlL2pzL3JlZ2V4cC5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvdHlwZS9qcy9mdW5jdGlvbi5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbC5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbm9kZV9tb2R1bGVzL2pzLXlhbWwvbGliL2pzLXlhbWwvbG9hZGVyLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9ub2RlX21vZHVsZXMvanMteWFtbC9saWIvanMteWFtbC9kdW1wZXIuanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL25vZGVfbW9kdWxlcy9qcy15YW1sL2xpYi9qcy15YW1sLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9ub2RlX21vZHVsZXMvanMteWFtbC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbGliL2VuZ2luZXMuanMiLCAibm9kZV9tb2R1bGVzL3N0cmlwLWJvbS1zdHJpbmcvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL2xpYi91dGlscy5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbGliL2RlZmF1bHRzLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9saWIvZW5naW5lLmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9saWIvc3RyaW5naWZ5LmpzIiwgIm5vZGVfbW9kdWxlcy9ncmF5LW1hdHRlci9saWIvZXhjZXJwdC5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvbGliL3RvLWZpbGUuanMiLCAibm9kZV9tb2R1bGVzL2dyYXktbWF0dGVyL2xpYi9wYXJzZS5qcyIsICJub2RlX21vZHVsZXMvZ3JheS1tYXR0ZXIvaW5kZXguanMiLCAic3JjL21haW4udHMiLCAic3JjL3NldHRpbmdzLnRzIiwgInNyYy93cC1wcm9maWxlLW1hbmFnZS1tb2RhbC50cyIsICJzcmMvd3AtcHJvZmlsZS1tb2RhbC50cyIsICJzcmMvY29uc3RzLnRzIiwgInNyYy91dGlscy50cyIsICJzcmMvYXBwLXN0YXRlLnRzIiwgInNyYy9tYXJrZG93bi1pdC1tYXRoamF4My1wbHVnaW4udHMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZnJlZUdsb2JhbC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19yb290LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX1N5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRSYXdUYWcuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb2JqZWN0VG9TdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldFRhZy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0TGlrZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzU3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5TWFwLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNBcnJheS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVG9TdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fdHJpbW1lZEVuZEluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VUcmltLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNPYmplY3QuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b051bWJlci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RvRmluaXRlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdG9JbnRlZ2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaWRlbnRpdHkuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Z1bmN0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcmVKc0RhdGEuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNNYXNrZWQuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fdG9Tb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzTmF0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFZhbHVlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldE5hdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcHBseS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zaG9ydE91dC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2NvbnN0YW50LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2RlZmluZVByb3BlcnR5LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VTZXRUb1N0cmluZy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zZXRUb1N0cmluZy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pc0luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2VxLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Fzc2lnblZhbHVlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcHlPYmplY3QuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb3ZlclJlc3QuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVJlc3QuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0xlbmd0aC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJyYXlMaWtlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2lzSXRlcmF0ZWVDYWxsLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NyZWF0ZUFzc2lnbmVyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2lzUHJvdG90eXBlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VUaW1lcy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlSXNBcmd1bWVudHMuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FyZ3VtZW50cy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL3N0dWJGYWxzZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQnVmZmVyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVVuYXJ5LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX25vZGVVdGlsLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNUeXBlZEFycmF5LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5TGlrZUtleXMuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb3ZlckFyZy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19uYXRpdmVLZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VLZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMva2V5cy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19uYXRpdmVLZXlzSW4uanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXNJbi5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2tleXNJbi5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2Fzc2lnbkluV2l0aC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RvU3RyaW5nLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFByb3RvdHlwZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzUGxhaW5PYmplY3QuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Vycm9yLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvYXR0ZW1wdC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlUHJvcGVydHlPZi5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19lc2NhcGVIdG1sQ2hhci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2VzY2FwZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzU3RyaW5nLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VWYWx1ZXMuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Jvb2xlYW4uanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzRGF0ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzRGF0ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzSW50ZWdlci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzTnVtYmVyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNOaWwuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1NhZmVJbnRlZ2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNVbmRlZmluZWQuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbi5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19lc2NhcGVTdHJpbmdDaGFyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlSW50ZXJwb2xhdGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFc2NhcGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fcmVFdmFsdWF0ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RlbXBsYXRlU2V0dGluZ3MuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90ZW1wbGF0ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2xvZGFzaC5qcyIsICJzcmMvcGFzcy1jcnlwdG8udHMiLCAic3JjL3BsdWdpbi1zZXR0aW5ncy50cyIsICJzcmMvd3AtY2xpZW50cy50cyIsICJzcmMvd3AteG1sLXJwYy1jbGllbnQudHMiLCAic3JjL3htbHJwYy1jbGllbnQudHMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3RvSW50ZWdlci9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vdG9EYXRlL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vYWRkTWlsbGlzZWNvbmRzL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2NvbnN0YW50cy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzRGF0ZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2lzVmFsaWQvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9zdWJNaWxsaXNlY29uZHMvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ0RheU9mWWVhci9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ0lTT1dlZWtZZWFyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9zdGFydE9mVVRDSVNPV2Vla1llYXIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2dldFVUQ0lTT1dlZWsvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRVVENXZWVrWWVhci9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc3RhcnRPZlVUQ1dlZWtZZWFyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9nZXRVVENXZWVrL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2Zvcm1hdC9saWdodEZvcm1hdHRlcnMvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL2Zvcm1hdC9mb3JtYXR0ZXJzL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vX2xpYi9mb3JtYXQvbG9uZ0Zvcm1hdHRlcnMvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3Byb3RlY3RlZFRva2Vucy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9fbGliL2Zvcm1hdERpc3RhbmNlL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL19saWIvYnVpbGRGb3JtYXRMb25nRm4vaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXRMb25nL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vbG9jYWxlL2VuLVVTL19saWIvZm9ybWF0UmVsYXRpdmUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvX2xpYi9idWlsZExvY2FsaXplRm4vaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvX2xpYi9sb2NhbGl6ZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9fbGliL2J1aWxkTWF0Y2hGbi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9fbGliL2J1aWxkTWF0Y2hQYXR0ZXJuRm4vaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9sb2NhbGUvZW4tVVMvX2xpYi9tYXRjaC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2xvY2FsZS9lbi1VUy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL2Zvcm1hdC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvYXNzaWduL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9TZXR0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL1BhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9FcmFQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL2NvbnN0YW50cy5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvdXRpbHMuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvWWVhclBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Mb2NhbFdlZWtZZWFyUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0lTT1dlZWtZZWFyUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0V4dGVuZGVkWWVhclBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9RdWFydGVyUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1N0YW5kQWxvbmVRdWFydGVyUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL01vbnRoUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1N0YW5kQWxvbmVNb250aFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc2V0VVRDV2Vlay9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Mb2NhbFdlZWtQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3NldFVUQ0lTT1dlZWsvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSVNPV2Vla1BhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9EYXRlUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0RheU9mWWVhclBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL19saWIvc2V0VVRDRGF5L2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0RheVBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Mb2NhbERheVBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9TdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9fbGliL3NldFVUQ0lTT0RheS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9JU09EYXlQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvQU1QTVBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9BTVBNTWlkbmlnaHRQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvRGF5UGVyaW9kUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIxdG8xMlBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9Ib3VyMHRvMjNQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSG91cjBUbzExUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIxVG8yNFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9NaW51dGVQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvU2Vjb25kUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL0ZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2VzbS9wYXJzZS9fbGliL3BhcnNlcnMvSVNPVGltZXpvbmVXaXRoWlBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9JU09UaW1lem9uZVBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9UaW1lc3RhbXBTZWNvbmRzUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9lc20vcGFyc2UvX2xpYi9wYXJzZXJzL1RpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL19saWIvcGFyc2Vycy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZXNtL3BhcnNlL2luZGV4LmpzIiwgInNyYy9hYnN0cmFjdC13cC1jbGllbnQudHMiLCAic3JjL3dwLWxvZ2luLW1vZGFsLnRzIiwgInNyYy93cC1wdWJsaXNoLW1vZGFsLnRzIiwgIm5vZGVfbW9kdWxlcy9qcy15YW1sL2Rpc3QvanMteWFtbC5tanMiLCAic3JjL3Bvc3QtcHVibGlzaGVkLW1vZGFsLnRzIiwgInNyYy9jb25maXJtLW1vZGFsLnRzIiwgInNyYy9yZXN0LWNsaWVudC50cyIsICJzcmMvd3AtcmVzdC1jbGllbnQudHMiLCAic3JjL29hdXRoMi1jbGllbnQudHMiLCAic3JjL2ljb25zLnRzIiwgInNyYy9pMThuL2xhbmdzLnRzIiwgInNyYy9pMThuLnRzIiwgInNyYy93cC1wcm9maWxlLWNob29zZXItbW9kYWwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8vIEhUTUw1IGVudGl0aWVzIG1hcDogeyBuYW1lIC0+IHV0ZjE2c3RyaW5nIH1cbi8vXG4ndXNlIHN0cmljdCc7XG5cbi8qZXNsaW50IHF1b3RlczowKi9cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnZW50aXRpZXMvbGliL21hcHMvZW50aXRpZXMuanNvbicpO1xuIiwgIm1vZHVsZS5leHBvcnRzPS9bIS0jJS1cXCosLVxcLzo7XFw/QFxcWy1cXF1fXFx7XFx9XFx4QTFcXHhBN1xceEFCXFx4QjZcXHhCN1xceEJCXFx4QkZcXHUwMzdFXFx1MDM4N1xcdTA1NUEtXFx1MDU1RlxcdTA1ODlcXHUwNThBXFx1MDVCRVxcdTA1QzBcXHUwNUMzXFx1MDVDNlxcdTA1RjNcXHUwNUY0XFx1MDYwOVxcdTA2MEFcXHUwNjBDXFx1MDYwRFxcdTA2MUJcXHUwNjFFXFx1MDYxRlxcdTA2NkEtXFx1MDY2RFxcdTA2RDRcXHUwNzAwLVxcdTA3MERcXHUwN0Y3LVxcdTA3RjlcXHUwODMwLVxcdTA4M0VcXHUwODVFXFx1MDk2NFxcdTA5NjVcXHUwOTcwXFx1MDlGRFxcdTBBNzZcXHUwQUYwXFx1MEM4NFxcdTBERjRcXHUwRTRGXFx1MEU1QVxcdTBFNUJcXHUwRjA0LVxcdTBGMTJcXHUwRjE0XFx1MEYzQS1cXHUwRjNEXFx1MEY4NVxcdTBGRDAtXFx1MEZENFxcdTBGRDlcXHUwRkRBXFx1MTA0QS1cXHUxMDRGXFx1MTBGQlxcdTEzNjAtXFx1MTM2OFxcdTE0MDBcXHUxNjZEXFx1MTY2RVxcdTE2OUJcXHUxNjlDXFx1MTZFQi1cXHUxNkVEXFx1MTczNVxcdTE3MzZcXHUxN0Q0LVxcdTE3RDZcXHUxN0Q4LVxcdTE3REFcXHUxODAwLVxcdTE4MEFcXHUxOTQ0XFx1MTk0NVxcdTFBMUVcXHUxQTFGXFx1MUFBMC1cXHUxQUE2XFx1MUFBOC1cXHUxQUFEXFx1MUI1QS1cXHUxQjYwXFx1MUJGQy1cXHUxQkZGXFx1MUMzQi1cXHUxQzNGXFx1MUM3RVxcdTFDN0ZcXHUxQ0MwLVxcdTFDQzdcXHUxQ0QzXFx1MjAxMC1cXHUyMDI3XFx1MjAzMC1cXHUyMDQzXFx1MjA0NS1cXHUyMDUxXFx1MjA1My1cXHUyMDVFXFx1MjA3RFxcdTIwN0VcXHUyMDhEXFx1MjA4RVxcdTIzMDgtXFx1MjMwQlxcdTIzMjlcXHUyMzJBXFx1Mjc2OC1cXHUyNzc1XFx1MjdDNVxcdTI3QzZcXHUyN0U2LVxcdTI3RUZcXHUyOTgzLVxcdTI5OThcXHUyOUQ4LVxcdTI5REJcXHUyOUZDXFx1MjlGRFxcdTJDRjktXFx1MkNGQ1xcdTJDRkVcXHUyQ0ZGXFx1MkQ3MFxcdTJFMDAtXFx1MkUyRVxcdTJFMzAtXFx1MkU0RVxcdTMwMDEtXFx1MzAwM1xcdTMwMDgtXFx1MzAxMVxcdTMwMTQtXFx1MzAxRlxcdTMwMzBcXHUzMDNEXFx1MzBBMFxcdTMwRkJcXHVBNEZFXFx1QTRGRlxcdUE2MEQtXFx1QTYwRlxcdUE2NzNcXHVBNjdFXFx1QTZGMi1cXHVBNkY3XFx1QTg3NC1cXHVBODc3XFx1QThDRVxcdUE4Q0ZcXHVBOEY4LVxcdUE4RkFcXHVBOEZDXFx1QTkyRVxcdUE5MkZcXHVBOTVGXFx1QTlDMS1cXHVBOUNEXFx1QTlERVxcdUE5REZcXHVBQTVDLVxcdUFBNUZcXHVBQURFXFx1QUFERlxcdUFBRjBcXHVBQUYxXFx1QUJFQlxcdUZEM0VcXHVGRDNGXFx1RkUxMC1cXHVGRTE5XFx1RkUzMC1cXHVGRTUyXFx1RkU1NC1cXHVGRTYxXFx1RkU2M1xcdUZFNjhcXHVGRTZBXFx1RkU2QlxcdUZGMDEtXFx1RkYwM1xcdUZGMDUtXFx1RkYwQVxcdUZGMEMtXFx1RkYwRlxcdUZGMUFcXHVGRjFCXFx1RkYxRlxcdUZGMjBcXHVGRjNCLVxcdUZGM0RcXHVGRjNGXFx1RkY1QlxcdUZGNURcXHVGRjVGLVxcdUZGNjVdfFxcdUQ4MDBbXFx1REQwMC1cXHVERDAyXFx1REY5RlxcdURGRDBdfFxcdUQ4MDFcXHVERDZGfFxcdUQ4MDJbXFx1REM1N1xcdUREMUZcXHVERDNGXFx1REU1MC1cXHVERTU4XFx1REU3RlxcdURFRjAtXFx1REVGNlxcdURGMzktXFx1REYzRlxcdURGOTktXFx1REY5Q118XFx1RDgwM1tcXHVERjU1LVxcdURGNTldfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOFxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQzRCLVxcdURDNEZcXHVEQzVCXFx1REM1RFxcdURDQzZcXHVEREMxLVxcdURERDdcXHVERTQxLVxcdURFNDNcXHVERTYwLVxcdURFNkNcXHVERjNDLVxcdURGM0VdfFxcdUQ4MDZbXFx1REMzQlxcdURFM0YtXFx1REU0NlxcdURFOUEtXFx1REU5Q1xcdURFOUUtXFx1REVBMl18XFx1RDgwN1tcXHVEQzQxLVxcdURDNDVcXHVEQzcwXFx1REM3MVxcdURFRjdcXHVERUY4XXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODFCW1xcdURFOTctXFx1REU5QV18XFx1RDgyRlxcdURDOUZ8XFx1RDgzNltcXHVERTg3LVxcdURFOEJdfFxcdUQ4M0FbXFx1REQ1RVxcdURENUZdLyIsICJcbid1c2Ugc3RyaWN0JztcblxuXG52YXIgZW5jb2RlQ2FjaGUgPSB7fTtcblxuXG4vLyBDcmVhdGUgYSBsb29rdXAgYXJyYXkgd2hlcmUgYW55dGhpbmcgYnV0IGNoYXJhY3RlcnMgaW4gYGNoYXJzYCBzdHJpbmdcbi8vIGFuZCBhbHBoYW51bWVyaWMgY2hhcnMgaXMgcGVyY2VudC1lbmNvZGVkLlxuLy9cbmZ1bmN0aW9uIGdldEVuY29kZUNhY2hlKGV4Y2x1ZGUpIHtcbiAgdmFyIGksIGNoLCBjYWNoZSA9IGVuY29kZUNhY2hlW2V4Y2x1ZGVdO1xuICBpZiAoY2FjaGUpIHsgcmV0dXJuIGNhY2hlOyB9XG5cbiAgY2FjaGUgPSBlbmNvZGVDYWNoZVtleGNsdWRlXSA9IFtdO1xuXG4gIGZvciAoaSA9IDA7IGkgPCAxMjg7IGkrKykge1xuICAgIGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKTtcblxuICAgIGlmICgvXlswLTlhLXpdJC9pLnRlc3QoY2gpKSB7XG4gICAgICAvLyBhbHdheXMgYWxsb3cgdW5lbmNvZGVkIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzXG4gICAgICBjYWNoZS5wdXNoKGNoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUucHVzaCgnJScgKyAoJzAnICsgaS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpKTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlW2V4Y2x1ZGUuY2hhckNvZGVBdChpKV0gPSBleGNsdWRlW2ldO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlO1xufVxuXG5cbi8vIEVuY29kZSB1bnNhZmUgY2hhcmFjdGVycyB3aXRoIHBlcmNlbnQtZW5jb2RpbmcsIHNraXBwaW5nIGFscmVhZHlcbi8vIGVuY29kZWQgc2VxdWVuY2VzLlxuLy9cbi8vICAtIHN0cmluZyAgICAgICAtIHN0cmluZyB0byBlbmNvZGVcbi8vICAtIGV4Y2x1ZGUgICAgICAtIGxpc3Qgb2YgY2hhcmFjdGVycyB0byBpZ25vcmUgKGluIGFkZGl0aW9uIHRvIGEtekEtWjAtOSlcbi8vICAtIGtlZXBFc2NhcGVkICAtIGRvbid0IGVuY29kZSAnJScgaW4gYSBjb3JyZWN0IGVzY2FwZSBzZXF1ZW5jZSAoZGVmYXVsdDogdHJ1ZSlcbi8vXG5mdW5jdGlvbiBlbmNvZGUoc3RyaW5nLCBleGNsdWRlLCBrZWVwRXNjYXBlZCkge1xuICB2YXIgaSwgbCwgY29kZSwgbmV4dENvZGUsIGNhY2hlLFxuICAgICAgcmVzdWx0ID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBleGNsdWRlICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGVuY29kZShzdHJpbmcsIGtlZXBFc2NhcGVkKVxuICAgIGtlZXBFc2NhcGVkICA9IGV4Y2x1ZGU7XG4gICAgZXhjbHVkZSA9IGVuY29kZS5kZWZhdWx0Q2hhcnM7XG4gIH1cblxuICBpZiAodHlwZW9mIGtlZXBFc2NhcGVkID09PSAndW5kZWZpbmVkJykge1xuICAgIGtlZXBFc2NhcGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGNhY2hlID0gZ2V0RW5jb2RlQ2FjaGUoZXhjbHVkZSk7XG5cbiAgZm9yIChpID0gMCwgbCA9IHN0cmluZy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cbiAgICBpZiAoa2VlcEVzY2FwZWQgJiYgY29kZSA9PT0gMHgyNSAvKiAlICovICYmIGkgKyAyIDwgbCkge1xuICAgICAgaWYgKC9eWzAtOWEtZl17Mn0kL2kudGVzdChzdHJpbmcuc2xpY2UoaSArIDEsIGkgKyAzKSkpIHtcbiAgICAgICAgcmVzdWx0ICs9IHN0cmluZy5zbGljZShpLCBpICsgMyk7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPCAxMjgpIHtcbiAgICAgIHJlc3VsdCArPSBjYWNoZVtjb2RlXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb2RlID49IDB4RDgwMCAmJiBjb2RlIDw9IDB4REZGRikge1xuICAgICAgaWYgKGNvZGUgPj0gMHhEODAwICYmIGNvZGUgPD0gMHhEQkZGICYmIGkgKyAxIDwgbCkge1xuICAgICAgICBuZXh0Q29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgICAgICAgaWYgKG5leHRDb2RlID49IDB4REMwMCAmJiBuZXh0Q29kZSA8PSAweERGRkYpIHtcbiAgICAgICAgICByZXN1bHQgKz0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ1tpXSArIHN0cmluZ1tpICsgMV0pO1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVzdWx0ICs9ICclRUYlQkYlQkQnO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZW5jb2RlLmRlZmF1bHRDaGFycyAgID0gXCI7Lz86QCY9KyQsLV8uIX4qJygpI1wiO1xuZW5jb2RlLmNvbXBvbmVudENoYXJzID0gXCItXy4hfionKClcIjtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGVuY29kZTtcbiIsICJcbid1c2Ugc3RyaWN0JztcblxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5cbnZhciBkZWNvZGVDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBnZXREZWNvZGVDYWNoZShleGNsdWRlKSB7XG4gIHZhciBpLCBjaCwgY2FjaGUgPSBkZWNvZGVDYWNoZVtleGNsdWRlXTtcbiAgaWYgKGNhY2hlKSB7IHJldHVybiBjYWNoZTsgfVxuXG4gIGNhY2hlID0gZGVjb2RlQ2FjaGVbZXhjbHVkZV0gPSBbXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspIHtcbiAgICBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XG4gICAgY2FjaGUucHVzaChjaCk7XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNoID0gZXhjbHVkZS5jaGFyQ29kZUF0KGkpO1xuICAgIGNhY2hlW2NoXSA9ICclJyArICgnMCcgKyBjaC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpO1xuICB9XG5cbiAgcmV0dXJuIGNhY2hlO1xufVxuXG5cbi8vIERlY29kZSBwZXJjZW50LWVuY29kZWQgc3RyaW5nLlxuLy9cbmZ1bmN0aW9uIGRlY29kZShzdHJpbmcsIGV4Y2x1ZGUpIHtcbiAgdmFyIGNhY2hlO1xuXG4gIGlmICh0eXBlb2YgZXhjbHVkZSAhPT0gJ3N0cmluZycpIHtcbiAgICBleGNsdWRlID0gZGVjb2RlLmRlZmF1bHRDaGFycztcbiAgfVxuXG4gIGNhY2hlID0gZ2V0RGVjb2RlQ2FjaGUoZXhjbHVkZSk7XG5cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oJVthLWYwLTldezJ9KSsvZ2ksIGZ1bmN0aW9uKHNlcSkge1xuICAgIHZhciBpLCBsLCBiMSwgYjIsIGIzLCBiNCwgY2hyLFxuICAgICAgICByZXN1bHQgPSAnJztcblxuICAgIGZvciAoaSA9IDAsIGwgPSBzZXEubGVuZ3RoOyBpIDwgbDsgaSArPSAzKSB7XG4gICAgICBiMSA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgMSwgaSArIDMpLCAxNik7XG5cbiAgICAgIGlmIChiMSA8IDB4ODApIHtcbiAgICAgICAgcmVzdWx0ICs9IGNhY2hlW2IxXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICgoYjEgJiAweEUwKSA9PT0gMHhDMCAmJiAoaSArIDMgPCBsKSkge1xuICAgICAgICAvLyAxMTB4eHh4eCAxMHh4eHh4eFxuICAgICAgICBiMiA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNCwgaSArIDYpLCAxNik7XG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY2hyID0gKChiMSA8PCA2KSAmIDB4N0MwKSB8IChiMiAmIDB4M0YpO1xuXG4gICAgICAgICAgaWYgKGNociA8IDB4ODApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAnXFx1ZmZmZFxcdWZmZmQnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGkgKz0gMztcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoKGIxICYgMHhGMCkgPT09IDB4RTAgJiYgKGkgKyA2IDwgbCkpIHtcbiAgICAgICAgLy8gMTExMHh4eHggMTB4eHh4eHggMTB4eHh4eHhcbiAgICAgICAgYjIgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDQsIGkgKyA2KSwgMTYpO1xuICAgICAgICBiMyA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNywgaSArIDkpLCAxNik7XG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwICYmIChiMyAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY2hyID0gKChiMSA8PCAxMikgJiAweEYwMDApIHwgKChiMiA8PCA2KSAmIDB4RkMwKSB8IChiMyAmIDB4M0YpO1xuXG4gICAgICAgICAgaWYgKGNociA8IDB4ODAwIHx8IChjaHIgPj0gMHhEODAwICYmIGNociA8PSAweERGRkYpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gJ1xcdWZmZmRcXHVmZmZkXFx1ZmZmZCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaSArPSA2O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICgoYjEgJiAweEY4KSA9PT0gMHhGMCAmJiAoaSArIDkgPCBsKSkge1xuICAgICAgICAvLyAxMTExMTB4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eFxuICAgICAgICBiMiA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNCwgaSArIDYpLCAxNik7XG4gICAgICAgIGIzID0gcGFyc2VJbnQoc2VxLnNsaWNlKGkgKyA3LCBpICsgOSksIDE2KTtcbiAgICAgICAgYjQgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDEwLCBpICsgMTIpLCAxNik7XG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwICYmIChiMyAmIDB4QzApID09PSAweDgwICYmIChiNCAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY2hyID0gKChiMSA8PCAxOCkgJiAweDFDMDAwMCkgfCAoKGIyIDw8IDEyKSAmIDB4M0YwMDApIHwgKChiMyA8PCA2KSAmIDB4RkMwKSB8IChiNCAmIDB4M0YpO1xuXG4gICAgICAgICAgaWYgKGNociA8IDB4MTAwMDAgfHwgY2hyID4gMHgxMEZGRkYpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAnXFx1ZmZmZFxcdWZmZmRcXHVmZmZkXFx1ZmZmZCc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNociAtPSAweDEwMDAwO1xuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODAwICsgKGNociA+PiAxMCksIDB4REMwMCArIChjaHIgJiAweDNGRikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGkgKz0gOTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXN1bHQgKz0gJ1xcdWZmZmQnO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5cbmRlY29kZS5kZWZhdWx0Q2hhcnMgICA9ICc7Lz86QCY9KyQsIyc7XG5kZWNvZGUuY29tcG9uZW50Q2hhcnMgPSAnJztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29kZTtcbiIsICJcbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZvcm1hdCh1cmwpIHtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuXG4gIHJlc3VsdCArPSB1cmwucHJvdG9jb2wgfHwgJyc7XG4gIHJlc3VsdCArPSB1cmwuc2xhc2hlcyA/ICcvLycgOiAnJztcbiAgcmVzdWx0ICs9IHVybC5hdXRoID8gdXJsLmF1dGggKyAnQCcgOiAnJztcblxuICBpZiAodXJsLmhvc3RuYW1lICYmIHVybC5ob3N0bmFtZS5pbmRleE9mKCc6JykgIT09IC0xKSB7XG4gICAgLy8gaXB2NiBhZGRyZXNzXG4gICAgcmVzdWx0ICs9ICdbJyArIHVybC5ob3N0bmFtZSArICddJztcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgKz0gdXJsLmhvc3RuYW1lIHx8ICcnO1xuICB9XG5cbiAgcmVzdWx0ICs9IHVybC5wb3J0ID8gJzonICsgdXJsLnBvcnQgOiAnJztcbiAgcmVzdWx0ICs9IHVybC5wYXRobmFtZSB8fCAnJztcbiAgcmVzdWx0ICs9IHVybC5zZWFyY2ggfHwgJyc7XG4gIHJlc3VsdCArPSB1cmwuaGFzaCB8fCAnJztcblxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vL1xuLy8gQ2hhbmdlcyBmcm9tIGpveWVudC9ub2RlOlxuLy9cbi8vIDEuIE5vIGxlYWRpbmcgc2xhc2ggaW4gcGF0aHMsXG4vLyAgICBlLmcuIGluIGB1cmwucGFyc2UoJ2h0dHA6Ly9mb28/YmFyJylgIHBhdGhuYW1lIGlzIGBgLCBub3QgYC9gXG4vL1xuLy8gMi4gQmFja3NsYXNoZXMgYXJlIG5vdCByZXBsYWNlZCB3aXRoIHNsYXNoZXMsXG4vLyAgICBzbyBgaHR0cDpcXFxcZXhhbXBsZS5vcmdcXGAgaXMgdHJlYXRlZCBsaWtlIGEgcmVsYXRpdmUgcGF0aFxuLy9cbi8vIDMuIFRyYWlsaW5nIGNvbG9uIGlzIHRyZWF0ZWQgbGlrZSBhIHBhcnQgb2YgdGhlIHBhdGgsXG4vLyAgICBpLmUuIGluIGBodHRwOi8vZXhhbXBsZS5vcmc6Zm9vYCBwYXRobmFtZSBpcyBgOmZvb2Bcbi8vXG4vLyA0LiBOb3RoaW5nIGlzIFVSTC1lbmNvZGVkIGluIHRoZSByZXN1bHRpbmcgb2JqZWN0LFxuLy8gICAgKGluIGpveWVudC9ub2RlIHNvbWUgY2hhcnMgaW4gYXV0aCBhbmQgcGF0aHMgYXJlIGVuY29kZWQpXG4vL1xuLy8gNS4gYHVybC5wYXJzZSgpYCBkb2VzIG5vdCBoYXZlIGBwYXJzZVF1ZXJ5U3RyaW5nYCBhcmd1bWVudFxuLy9cbi8vIDYuIFJlbW92ZWQgZXh0cmFuZW91cyByZXN1bHQgcHJvcGVydGllczogYGhvc3RgLCBgcGF0aGAsIGBxdWVyeWAsIGV0Yy4sXG4vLyAgICB3aGljaCBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgb3RoZXIgcGFydHMgb2YgdGhlIHVybC5cbi8vXG5cblxuZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5wYXRobmFtZSA9IG51bGw7XG59XG5cbi8vIFJlZmVyZW5jZTogUkZDIDM5ODYsIFJGQyAxODA4LCBSRkMgMjM5NlxuXG4vLyBkZWZpbmUgdGhlc2UgaGVyZSBzbyBhdCBsZWFzdCB0aGV5IG9ubHkgaGF2ZSB0byBiZVxuLy8gY29tcGlsZWQgb25jZSBvbiB0aGUgZmlyc3QgbW9kdWxlIGxvYWQuXG52YXIgcHJvdG9jb2xQYXR0ZXJuID0gL14oW2EtejAtOS4rLV0rOikvaSxcbiAgICBwb3J0UGF0dGVybiA9IC86WzAtOV0qJC8sXG5cbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgc2ltcGxlIHBhdGggVVJMXG4gICAgc2ltcGxlUGF0aFBhdHRlcm4gPSAvXihcXC9cXC8/KD8hXFwvKVteXFw/XFxzXSopKFxcP1teXFxzXSopPyQvLFxuXG4gICAgLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgcmVzZXJ2ZWQgZm9yIGRlbGltaXRpbmcgVVJMcy5cbiAgICAvLyBXZSBhY3R1YWxseSBqdXN0IGF1dG8tZXNjYXBlIHRoZXNlLlxuICAgIGRlbGltcyA9IFsgJzwnLCAnPicsICdcIicsICdgJywgJyAnLCAnXFxyJywgJ1xcbicsICdcXHQnIF0sXG5cbiAgICAvLyBSRkMgMjM5NjogY2hhcmFjdGVycyBub3QgYWxsb3dlZCBmb3IgdmFyaW91cyByZWFzb25zLlxuICAgIHVud2lzZSA9IFsgJ3snLCAnfScsICd8JywgJ1xcXFwnLCAnXicsICdgJyBdLmNvbmNhdChkZWxpbXMpLFxuXG4gICAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICAgIGF1dG9Fc2NhcGUgPSBbICdcXCcnIF0uY29uY2F0KHVud2lzZSksXG4gICAgLy8gQ2hhcmFjdGVycyB0aGF0IGFyZSBuZXZlciBldmVyIGFsbG93ZWQgaW4gYSBob3N0bmFtZS5cbiAgICAvLyBOb3RlIHRoYXQgYW55IGludmFsaWQgY2hhcnMgYXJlIGFsc28gaGFuZGxlZCwgYnV0IHRoZXNlXG4gICAgLy8gYXJlIHRoZSBvbmVzIHRoYXQgYXJlICpleHBlY3RlZCogdG8gYmUgc2Vlbiwgc28gd2UgZmFzdC1wYXRoXG4gICAgLy8gdGhlbS5cbiAgICBub25Ib3N0Q2hhcnMgPSBbICclJywgJy8nLCAnPycsICc7JywgJyMnIF0uY29uY2F0KGF1dG9Fc2NhcGUpLFxuICAgIGhvc3RFbmRpbmdDaGFycyA9IFsgJy8nLCAnPycsICcjJyBdLFxuICAgIGhvc3RuYW1lTWF4TGVuID0gMjU1LFxuICAgIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gICAgaG9zdG5hbWVQYXJ0U3RhcnQgPSAvXihbK2EtejAtOUEtWl8tXXswLDYzfSkoLiopJC8sXG4gICAgLy8gcHJvdG9jb2xzIHRoYXQgY2FuIGFsbG93IFwidW5zYWZlXCIgYW5kIFwidW53aXNlXCIgY2hhcnMuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tc2NyaXB0LXVybCAqL1xuICAgIC8vIHByb3RvY29scyB0aGF0IG5ldmVyIGhhdmUgYSBob3N0bmFtZS5cbiAgICBob3N0bGVzc1Byb3RvY29sID0ge1xuICAgICAgJ2phdmFzY3JpcHQnOiB0cnVlLFxuICAgICAgJ2phdmFzY3JpcHQ6JzogdHJ1ZVxuICAgIH0sXG4gICAgLy8gcHJvdG9jb2xzIHRoYXQgYWx3YXlzIGNvbnRhaW4gYSAvLyBiaXQuXG4gICAgc2xhc2hlZFByb3RvY29sID0ge1xuICAgICAgJ2h0dHAnOiB0cnVlLFxuICAgICAgJ2h0dHBzJzogdHJ1ZSxcbiAgICAgICdmdHAnOiB0cnVlLFxuICAgICAgJ2dvcGhlcic6IHRydWUsXG4gICAgICAnZmlsZSc6IHRydWUsXG4gICAgICAnaHR0cDonOiB0cnVlLFxuICAgICAgJ2h0dHBzOic6IHRydWUsXG4gICAgICAnZnRwOic6IHRydWUsXG4gICAgICAnZ29waGVyOic6IHRydWUsXG4gICAgICAnZmlsZTonOiB0cnVlXG4gICAgfTtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNjcmlwdC11cmwgKi9cblxuZnVuY3Rpb24gdXJsUGFyc2UodXJsLCBzbGFzaGVzRGVub3RlSG9zdCkge1xuICBpZiAodXJsICYmIHVybCBpbnN0YW5jZW9mIFVybCkgeyByZXR1cm4gdXJsOyB9XG5cbiAgdmFyIHUgPSBuZXcgVXJsKCk7XG4gIHUucGFyc2UodXJsLCBzbGFzaGVzRGVub3RlSG9zdCk7XG4gIHJldHVybiB1O1xufVxuXG5VcmwucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24odXJsLCBzbGFzaGVzRGVub3RlSG9zdCkge1xuICB2YXIgaSwgbCwgbG93ZXJQcm90bywgaGVjLCBzbGFzaGVzLFxuICAgICAgcmVzdCA9IHVybDtcblxuICAvLyB0cmltIGJlZm9yZSBwcm9jZWVkaW5nLlxuICAvLyBUaGlzIGlzIHRvIHN1cHBvcnQgcGFyc2Ugc3R1ZmYgbGlrZSBcIiAgaHR0cDovL2Zvby5jb20gIFxcblwiXG4gIHJlc3QgPSByZXN0LnRyaW0oKTtcblxuICBpZiAoIXNsYXNoZXNEZW5vdGVIb3N0ICYmIHVybC5zcGxpdCgnIycpLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIFRyeSBmYXN0IHBhdGggcmVnZXhwXG4gICAgdmFyIHNpbXBsZVBhdGggPSBzaW1wbGVQYXRoUGF0dGVybi5leGVjKHJlc3QpO1xuICAgIGlmIChzaW1wbGVQYXRoKSB7XG4gICAgICB0aGlzLnBhdGhuYW1lID0gc2ltcGxlUGF0aFsxXTtcbiAgICAgIGlmIChzaW1wbGVQYXRoWzJdKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gc2ltcGxlUGF0aFsyXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHZhciBwcm90byA9IHByb3RvY29sUGF0dGVybi5leGVjKHJlc3QpO1xuICBpZiAocHJvdG8pIHtcbiAgICBwcm90byA9IHByb3RvWzBdO1xuICAgIGxvd2VyUHJvdG8gPSBwcm90by50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMucHJvdG9jb2wgPSBwcm90bztcbiAgICByZXN0ID0gcmVzdC5zdWJzdHIocHJvdG8ubGVuZ3RoKTtcbiAgfVxuXG4gIC8vIGZpZ3VyZSBvdXQgaWYgaXQncyBnb3QgYSBob3N0XG4gIC8vIHVzZXJAc2VydmVyIGlzICphbHdheXMqIGludGVycHJldGVkIGFzIGEgaG9zdG5hbWUsIGFuZCB1cmxcbiAgLy8gcmVzb2x1dGlvbiB3aWxsIHRyZWF0IC8vZm9vL2JhciBhcyBob3N0PWZvbyxwYXRoPWJhciBiZWNhdXNlIHRoYXQnc1xuICAvLyBob3cgdGhlIGJyb3dzZXIgcmVzb2x2ZXMgcmVsYXRpdmUgVVJMcy5cbiAgaWYgKHNsYXNoZXNEZW5vdGVIb3N0IHx8IHByb3RvIHx8IHJlc3QubWF0Y2goL15cXC9cXC9bXkBcXC9dK0BbXkBcXC9dKy8pKSB7XG4gICAgc2xhc2hlcyA9IHJlc3Quc3Vic3RyKDAsIDIpID09PSAnLy8nO1xuICAgIGlmIChzbGFzaGVzICYmICEocHJvdG8gJiYgaG9zdGxlc3NQcm90b2NvbFtwcm90b10pKSB7XG4gICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMik7XG4gICAgICB0aGlzLnNsYXNoZXMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaG9zdGxlc3NQcm90b2NvbFtwcm90b10gJiZcbiAgICAgIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICB2YXIgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBob3N0RW5kaW5nQ2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihob3N0RW5kaW5nQ2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKSB7XG4gICAgICAgIGhvc3RFbmQgPSBoZWM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYXQgdGhpcyBwb2ludCwgZWl0aGVyIHdlIGhhdmUgYW4gZXhwbGljaXQgcG9pbnQgd2hlcmUgdGhlXG4gICAgLy8gYXV0aCBwb3J0aW9uIGNhbm5vdCBnbyBwYXN0LCBvciB0aGUgbGFzdCBAIGNoYXIgaXMgdGhlIGRlY2lkZXIuXG4gICAgdmFyIGF1dGgsIGF0U2lnbjtcbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIGF0U2lnbiBjYW4gYmUgYW55d2hlcmUuXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGF0U2lnbiBtdXN0IGJlIGluIGF1dGggcG9ydGlvbi5cbiAgICAgIC8vIGh0dHA6Ly9hQGIvY0BkID0+IGhvc3Q6YiBhdXRoOmEgcGF0aDovY0BkXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJywgaG9zdEVuZCk7XG4gICAgfVxuXG4gICAgLy8gTm93IHdlIGhhdmUgYSBwb3J0aW9uIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIGF1dGguXG4gICAgLy8gUHVsbCB0aGF0IG9mZi5cbiAgICBpZiAoYXRTaWduICE9PSAtMSkge1xuICAgICAgYXV0aCA9IHJlc3Quc2xpY2UoMCwgYXRTaWduKTtcbiAgICAgIHJlc3QgPSByZXN0LnNsaWNlKGF0U2lnbiArIDEpO1xuICAgICAgdGhpcy5hdXRoID0gYXV0aDtcbiAgICB9XG5cbiAgICAvLyB0aGUgaG9zdCBpcyB0aGUgcmVtYWluaW5nIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBub24taG9zdCBjaGFyXG4gICAgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAoaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihub25Ib3N0Q2hhcnNbaV0pO1xuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKSB7XG4gICAgICAgIGhvc3RFbmQgPSBoZWM7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGlmIHdlIHN0aWxsIGhhdmUgbm90IGhpdCBpdCwgdGhlbiB0aGUgZW50aXJlIHRoaW5nIGlzIGEgaG9zdC5cbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHtcbiAgICAgIGhvc3RFbmQgPSByZXN0Lmxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAocmVzdFtob3N0RW5kIC0gMV0gPT09ICc6JykgeyBob3N0RW5kLS07IH1cbiAgICB2YXIgaG9zdCA9IHJlc3Quc2xpY2UoMCwgaG9zdEVuZCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoaG9zdEVuZCk7XG5cbiAgICAvLyBwdWxsIG91dCBwb3J0LlxuICAgIHRoaXMucGFyc2VIb3N0KGhvc3QpO1xuXG4gICAgLy8gd2UndmUgaW5kaWNhdGVkIHRoYXQgdGhlcmUgaXMgYSBob3N0bmFtZSxcbiAgICAvLyBzbyBldmVuIGlmIGl0J3MgZW1wdHksIGl0IGhhcyB0byBiZSBwcmVzZW50LlxuICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lIHx8ICcnO1xuXG4gICAgLy8gaWYgaG9zdG5hbWUgYmVnaW5zIHdpdGggWyBhbmQgZW5kcyB3aXRoIF1cbiAgICAvLyBhc3N1bWUgdGhhdCBpdCdzIGFuIElQdjYgYWRkcmVzcy5cbiAgICB2YXIgaXB2Nkhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZVswXSA9PT0gJ1snICYmXG4gICAgICAgIHRoaXMuaG9zdG5hbWVbdGhpcy5ob3N0bmFtZS5sZW5ndGggLSAxXSA9PT0gJ10nO1xuXG4gICAgLy8gdmFsaWRhdGUgYSBsaXR0bGUuXG4gICAgaWYgKCFpcHY2SG9zdG5hbWUpIHtcbiAgICAgIHZhciBob3N0cGFydHMgPSB0aGlzLmhvc3RuYW1lLnNwbGl0KC9cXC4vKTtcbiAgICAgIGZvciAoaSA9IDAsIGwgPSBob3N0cGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gaG9zdHBhcnRzW2ldO1xuICAgICAgICBpZiAoIXBhcnQpIHsgY29udGludWU7IH1cbiAgICAgICAgaWYgKCFwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgdmFyIG5ld3BhcnQgPSAnJztcbiAgICAgICAgICBmb3IgKHZhciBqID0gMCwgayA9IHBhcnQubGVuZ3RoOyBqIDwgazsgaisrKSB7XG4gICAgICAgICAgICBpZiAocGFydC5jaGFyQ29kZUF0KGopID4gMTI3KSB7XG4gICAgICAgICAgICAgIC8vIHdlIHJlcGxhY2Ugbm9uLUFTQ0lJIGNoYXIgd2l0aCBhIHRlbXBvcmFyeSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gbWFrZSBzdXJlIHNpemUgb2YgaG9zdG5hbWUgaXMgbm90XG4gICAgICAgICAgICAgIC8vIGJyb2tlbiBieSByZXBsYWNpbmcgbm9uLUFTQ0lJIGJ5IG5vdGhpbmdcbiAgICAgICAgICAgICAgbmV3cGFydCArPSAneCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9IHBhcnRbal07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHdlIHRlc3QgYWdhaW4gd2l0aCBBU0NJSSBjaGFyIG9ubHlcbiAgICAgICAgICBpZiAoIW5ld3BhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICAgIHZhciB2YWxpZFBhcnRzID0gaG9zdHBhcnRzLnNsaWNlKDAsIGkpO1xuICAgICAgICAgICAgdmFyIG5vdEhvc3QgPSBob3N0cGFydHMuc2xpY2UoaSArIDEpO1xuICAgICAgICAgICAgdmFyIGJpdCA9IHBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0U3RhcnQpO1xuICAgICAgICAgICAgaWYgKGJpdCkge1xuICAgICAgICAgICAgICB2YWxpZFBhcnRzLnB1c2goYml0WzFdKTtcbiAgICAgICAgICAgICAgbm90SG9zdC51bnNoaWZ0KGJpdFsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobm90SG9zdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmVzdCA9IG5vdEhvc3Quam9pbignLicpICsgcmVzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaG9zdG5hbWUgPSB2YWxpZFBhcnRzLmpvaW4oJy4nKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhvc3RuYW1lLmxlbmd0aCA+IGhvc3RuYW1lTWF4TGVuKSB7XG4gICAgICB0aGlzLmhvc3RuYW1lID0gJyc7XG4gICAgfVxuXG4gICAgLy8gc3RyaXAgWyBhbmQgXSBmcm9tIHRoZSBob3N0bmFtZVxuICAgIC8vIHRoZSBob3N0IGZpZWxkIHN0aWxsIHJldGFpbnMgdGhlbSwgdGhvdWdoXG4gICAgaWYgKGlwdjZIb3N0bmFtZSkge1xuICAgICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUuc3Vic3RyKDEsIHRoaXMuaG9zdG5hbWUubGVuZ3RoIC0gMik7XG4gICAgfVxuICB9XG5cbiAgLy8gY2hvcCBvZmYgZnJvbSB0aGUgdGFpbCBmaXJzdC5cbiAgdmFyIGhhc2ggPSByZXN0LmluZGV4T2YoJyMnKTtcbiAgaWYgKGhhc2ggIT09IC0xKSB7XG4gICAgLy8gZ290IGEgZnJhZ21lbnQgc3RyaW5nLlxuICAgIHRoaXMuaGFzaCA9IHJlc3Quc3Vic3RyKGhhc2gpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIGhhc2gpO1xuICB9XG4gIHZhciBxbSA9IHJlc3QuaW5kZXhPZignPycpO1xuICBpZiAocW0gIT09IC0xKSB7XG4gICAgdGhpcy5zZWFyY2ggPSByZXN0LnN1YnN0cihxbSk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgcW0pO1xuICB9XG4gIGlmIChyZXN0KSB7IHRoaXMucGF0aG5hbWUgPSByZXN0OyB9XG4gIGlmIChzbGFzaGVkUHJvdG9jb2xbbG93ZXJQcm90b10gJiZcbiAgICAgIHRoaXMuaG9zdG5hbWUgJiYgIXRoaXMucGF0aG5hbWUpIHtcbiAgICB0aGlzLnBhdGhuYW1lID0gJyc7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24oaG9zdCkge1xuICB2YXIgcG9ydCA9IHBvcnRQYXR0ZXJuLmV4ZWMoaG9zdCk7XG4gIGlmIChwb3J0KSB7XG4gICAgcG9ydCA9IHBvcnRbMF07XG4gICAgaWYgKHBvcnQgIT09ICc6Jykge1xuICAgICAgdGhpcy5wb3J0ID0gcG9ydC5zdWJzdHIoMSk7XG4gICAgfVxuICAgIGhvc3QgPSBob3N0LnN1YnN0cigwLCBob3N0Lmxlbmd0aCAtIHBvcnQubGVuZ3RoKTtcbiAgfVxuICBpZiAoaG9zdCkgeyB0aGlzLmhvc3RuYW1lID0gaG9zdDsgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB1cmxQYXJzZTtcbiIsICIndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMuZW5jb2RlID0gcmVxdWlyZSgnLi9lbmNvZGUnKTtcbm1vZHVsZS5leHBvcnRzLmRlY29kZSA9IHJlcXVpcmUoJy4vZGVjb2RlJyk7XG5tb2R1bGUuZXhwb3J0cy5mb3JtYXQgPSByZXF1aXJlKCcuL2Zvcm1hdCcpO1xubW9kdWxlLmV4cG9ydHMucGFyc2UgID0gcmVxdWlyZSgnLi9wYXJzZScpO1xuIiwgIm1vZHVsZS5leHBvcnRzPS9bXFwwLVxcdUQ3RkZcXHVFMDAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W1xcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD86W15cXHVEODAwLVxcdURCRkZdfF4pW1xcdURDMDAtXFx1REZGRl0vIiwgIm1vZHVsZS5leHBvcnRzPS9bXFwwLVxceDFGXFx4N0YtXFx4OUZdLyIsICJtb2R1bGUuZXhwb3J0cz0vW1xceEFEXFx1MDYwMC1cXHUwNjA1XFx1MDYxQ1xcdTA2RERcXHUwNzBGXFx1MDhFMlxcdTE4MEVcXHUyMDBCLVxcdTIwMEZcXHUyMDJBLVxcdTIwMkVcXHUyMDYwLVxcdTIwNjRcXHUyMDY2LVxcdTIwNkZcXHVGRUZGXFx1RkZGOS1cXHVGRkZCXXxcXHVEODA0W1xcdURDQkRcXHVEQ0NEXXxcXHVEODJGW1xcdURDQTAtXFx1RENBM118XFx1RDgzNFtcXHVERDczLVxcdUREN0FdfFxcdURCNDBbXFx1REMwMVxcdURDMjAtXFx1REM3Rl0vIiwgIm1vZHVsZS5leHBvcnRzPS9bIFxceEEwXFx1MTY4MFxcdTIwMDAtXFx1MjAwQVxcdTIwMjhcXHUyMDI5XFx1MjAyRlxcdTIwNUZcXHUzMDAwXS8iLCAiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLkFueSA9IHJlcXVpcmUoJy4vcHJvcGVydGllcy9BbnkvcmVnZXgnKTtcbmV4cG9ydHMuQ2MgID0gcmVxdWlyZSgnLi9jYXRlZ29yaWVzL0NjL3JlZ2V4Jyk7XG5leHBvcnRzLkNmICA9IHJlcXVpcmUoJy4vY2F0ZWdvcmllcy9DZi9yZWdleCcpO1xuZXhwb3J0cy5QICAgPSByZXF1aXJlKCcuL2NhdGVnb3JpZXMvUC9yZWdleCcpO1xuZXhwb3J0cy5aICAgPSByZXF1aXJlKCcuL2NhdGVnb3JpZXMvWi9yZWdleCcpO1xuIiwgIi8vIFV0aWxpdGllc1xuLy9cbid1c2Ugc3RyaWN0JztcblxuXG5mdW5jdGlvbiBfY2xhc3Mob2JqKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTsgfVxuXG5mdW5jdGlvbiBpc1N0cmluZyhvYmopIHsgcmV0dXJuIF9jbGFzcyhvYmopID09PSAnW29iamVjdCBTdHJpbmddJzsgfVxuXG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gaGFzKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBfaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbi8vIE1lcmdlIG9iamVjdHNcbi8vXG5mdW5jdGlvbiBhc3NpZ24ob2JqIC8qZnJvbTEsIGZyb20yLCBmcm9tMywgLi4uKi8pIHtcbiAgdmFyIHNvdXJjZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gIHNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgaWYgKCFzb3VyY2UpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Ioc291cmNlICsgJ211c3QgYmUgb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIG9ialtrZXldID0gc291cmNlW2tleV07XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbi8vIFJlbW92ZSBlbGVtZW50IGZyb20gYXJyYXkgYW5kIHB1dCBhbm90aGVyIGFycmF5IGF0IHRob3NlIHBvc2l0aW9uLlxuLy8gVXNlZnVsIGZvciBzb21lIG9wZXJhdGlvbnMgd2l0aCB0b2tlbnNcbmZ1bmN0aW9uIGFycmF5UmVwbGFjZUF0KHNyYywgcG9zLCBuZXdFbGVtZW50cykge1xuICByZXR1cm4gW10uY29uY2F0KHNyYy5zbGljZSgwLCBwb3MpLCBuZXdFbGVtZW50cywgc3JjLnNsaWNlKHBvcyArIDEpKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZnVuY3Rpb24gaXNWYWxpZEVudGl0eUNvZGUoYykge1xuICAvKmVzbGludCBuby1iaXR3aXNlOjAqL1xuICAvLyBicm9rZW4gc2VxdWVuY2VcbiAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhERkZGKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBuZXZlciB1c2VkXG4gIGlmIChjID49IDB4RkREMCAmJiBjIDw9IDB4RkRFRikgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKChjICYgMHhGRkZGKSA9PT0gMHhGRkZGIHx8IChjICYgMHhGRkZGKSA9PT0gMHhGRkZFKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBjb250cm9sIGNvZGVzXG4gIGlmIChjID49IDB4MDAgJiYgYyA8PSAweDA4KSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoYyA9PT0gMHgwQikgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKGMgPj0gMHgwRSAmJiBjIDw9IDB4MUYpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChjID49IDB4N0YgJiYgYyA8PSAweDlGKSB7IHJldHVybiBmYWxzZTsgfVxuICAvLyBvdXQgb2YgcmFuZ2VcbiAgaWYgKGMgPiAweDEwRkZGRikgeyByZXR1cm4gZmFsc2U7IH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoYykge1xuICAvKmVzbGludCBuby1iaXR3aXNlOjAqL1xuICBpZiAoYyA+IDB4ZmZmZikge1xuICAgIGMgLT0gMHgxMDAwMDtcbiAgICB2YXIgc3Vycm9nYXRlMSA9IDB4ZDgwMCArIChjID4+IDEwKSxcbiAgICAgICAgc3Vycm9nYXRlMiA9IDB4ZGMwMCArIChjICYgMHgzZmYpO1xuXG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoc3Vycm9nYXRlMSwgc3Vycm9nYXRlMik7XG4gIH1cbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7XG59XG5cblxudmFyIFVORVNDQVBFX01EX1JFICA9IC9cXFxcKFshXCIjJCUmJygpKissXFwtLlxcLzo7PD0+P0BbXFxcXFxcXV5fYHt8fX5dKS9nO1xudmFyIEVOVElUWV9SRSAgICAgICA9IC8mKFthLXojXVthLXowLTldezEsMzF9KTsvZ2k7XG52YXIgVU5FU0NBUEVfQUxMX1JFID0gbmV3IFJlZ0V4cChVTkVTQ0FQRV9NRF9SRS5zb3VyY2UgKyAnfCcgKyBFTlRJVFlfUkUuc291cmNlLCAnZ2knKTtcblxudmFyIERJR0lUQUxfRU5USVRZX1RFU1RfUkUgPSAvXiMoKD86eFthLWYwLTldezEsOH18WzAtOV17MSw4fSkpL2k7XG5cbnZhciBlbnRpdGllcyA9IHJlcXVpcmUoJy4vZW50aXRpZXMnKTtcblxuZnVuY3Rpb24gcmVwbGFjZUVudGl0eVBhdHRlcm4obWF0Y2gsIG5hbWUpIHtcbiAgdmFyIGNvZGUgPSAwO1xuXG4gIGlmIChoYXMoZW50aXRpZXMsIG5hbWUpKSB7XG4gICAgcmV0dXJuIGVudGl0aWVzW25hbWVdO1xuICB9XG5cbiAgaWYgKG5hbWUuY2hhckNvZGVBdCgwKSA9PT0gMHgyMy8qICMgKi8gJiYgRElHSVRBTF9FTlRJVFlfVEVTVF9SRS50ZXN0KG5hbWUpKSB7XG4gICAgY29kZSA9IG5hbWVbMV0udG9Mb3dlckNhc2UoKSA9PT0gJ3gnID9cbiAgICAgIHBhcnNlSW50KG5hbWUuc2xpY2UoMiksIDE2KSA6IHBhcnNlSW50KG5hbWUuc2xpY2UoMSksIDEwKTtcblxuICAgIGlmIChpc1ZhbGlkRW50aXR5Q29kZShjb2RlKSkge1xuICAgICAgcmV0dXJuIGZyb21Db2RlUG9pbnQoY29kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1hdGNoO1xufVxuXG4vKmZ1bmN0aW9uIHJlcGxhY2VFbnRpdGllcyhzdHIpIHtcbiAgaWYgKHN0ci5pbmRleE9mKCcmJykgPCAwKSB7IHJldHVybiBzdHI7IH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2UoRU5USVRZX1JFLCByZXBsYWNlRW50aXR5UGF0dGVybik7XG59Ki9cblxuZnVuY3Rpb24gdW5lc2NhcGVNZChzdHIpIHtcbiAgaWYgKHN0ci5pbmRleE9mKCdcXFxcJykgPCAwKSB7IHJldHVybiBzdHI7IH1cbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFVORVNDQVBFX01EX1JFLCAnJDEnKTtcbn1cblxuZnVuY3Rpb24gdW5lc2NhcGVBbGwoc3RyKSB7XG4gIGlmIChzdHIuaW5kZXhPZignXFxcXCcpIDwgMCAmJiBzdHIuaW5kZXhPZignJicpIDwgMCkgeyByZXR1cm4gc3RyOyB9XG5cbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFVORVNDQVBFX0FMTF9SRSwgZnVuY3Rpb24gKG1hdGNoLCBlc2NhcGVkLCBlbnRpdHkpIHtcbiAgICBpZiAoZXNjYXBlZCkgeyByZXR1cm4gZXNjYXBlZDsgfVxuICAgIHJldHVybiByZXBsYWNlRW50aXR5UGF0dGVybihtYXRjaCwgZW50aXR5KTtcbiAgfSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbnZhciBIVE1MX0VTQ0FQRV9URVNUX1JFID0gL1smPD5cIl0vO1xudmFyIEhUTUxfRVNDQVBFX1JFUExBQ0VfUkUgPSAvWyY8PlwiXS9nO1xudmFyIEhUTUxfUkVQTEFDRU1FTlRTID0ge1xuICAnJic6ICcmYW1wOycsXG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90Oydcbn07XG5cbmZ1bmN0aW9uIHJlcGxhY2VVbnNhZmVDaGFyKGNoKSB7XG4gIHJldHVybiBIVE1MX1JFUExBQ0VNRU5UU1tjaF07XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUh0bWwoc3RyKSB7XG4gIGlmIChIVE1MX0VTQ0FQRV9URVNUX1JFLnRlc3Qoc3RyKSkge1xuICAgIHJldHVybiBzdHIucmVwbGFjZShIVE1MX0VTQ0FQRV9SRVBMQUNFX1JFLCByZXBsYWNlVW5zYWZlQ2hhcik7XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxudmFyIFJFR0VYUF9FU0NBUEVfUkUgPSAvWy4/KiteJFtcXF1cXFxcKCl7fXwtXS9nO1xuXG5mdW5jdGlvbiBlc2NhcGVSRShzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFJFR0VYUF9FU0NBUEVfUkUsICdcXFxcJCYnKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZnVuY3Rpb24gaXNTcGFjZShjb2RlKSB7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgMHgwOTpcbiAgICBjYXNlIDB4MjA6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFpzICh1bmljb2RlIGNsYXNzKSB8fCBbXFx0XFxmXFx2XFxyXFxuXVxuZnVuY3Rpb24gaXNXaGl0ZVNwYWNlKGNvZGUpIHtcbiAgaWYgKGNvZGUgPj0gMHgyMDAwICYmIGNvZGUgPD0gMHgyMDBBKSB7IHJldHVybiB0cnVlOyB9XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgMHgwOTogLy8gXFx0XG4gICAgY2FzZSAweDBBOiAvLyBcXG5cbiAgICBjYXNlIDB4MEI6IC8vIFxcdlxuICAgIGNhc2UgMHgwQzogLy8gXFxmXG4gICAgY2FzZSAweDBEOiAvLyBcXHJcbiAgICBjYXNlIDB4MjA6XG4gICAgY2FzZSAweEEwOlxuICAgIGNhc2UgMHgxNjgwOlxuICAgIGNhc2UgMHgyMDJGOlxuICAgIGNhc2UgMHgyMDVGOlxuICAgIGNhc2UgMHgzMDAwOlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4qL1xudmFyIFVOSUNPREVfUFVOQ1RfUkUgPSByZXF1aXJlKCd1Yy5taWNyby9jYXRlZ29yaWVzL1AvcmVnZXgnKTtcblxuLy8gQ3VycmVudGx5IHdpdGhvdXQgYXN0cmFsIGNoYXJhY3RlcnMgc3VwcG9ydC5cbmZ1bmN0aW9uIGlzUHVuY3RDaGFyKGNoKSB7XG4gIHJldHVybiBVTklDT0RFX1BVTkNUX1JFLnRlc3QoY2gpO1xufVxuXG5cbi8vIE1hcmtkb3duIEFTQ0lJIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMuXG4vL1xuLy8gISwgXCIsICMsICQsICUsICYsICcsICgsICksICosICssICwsIC0sIC4sIC8sIDosIDssIDwsID0sID4sID8sIEAsIFssIFxcLCBdLCBeLCBfLCBgLCB7LCB8LCB9LCBvciB+XG4vLyBodHRwOi8vc3BlYy5jb21tb25tYXJrLm9yZy8wLjE1LyNhc2NpaS1wdW5jdHVhdGlvbi1jaGFyYWN0ZXJcbi8vXG4vLyBEb24ndCBjb25mdXNlIHdpdGggdW5pY29kZSBwdW5jdHVhdGlvbiAhISEgSXQgbGFja3Mgc29tZSBjaGFycyBpbiBhc2NpaSByYW5nZS5cbi8vXG5mdW5jdGlvbiBpc01kQXNjaWlQdW5jdChjaCkge1xuICBzd2l0Y2ggKGNoKSB7XG4gICAgY2FzZSAweDIxLyogISAqLzpcbiAgICBjYXNlIDB4MjIvKiBcIiAqLzpcbiAgICBjYXNlIDB4MjMvKiAjICovOlxuICAgIGNhc2UgMHgyNC8qICQgKi86XG4gICAgY2FzZSAweDI1LyogJSAqLzpcbiAgICBjYXNlIDB4MjYvKiAmICovOlxuICAgIGNhc2UgMHgyNy8qICcgKi86XG4gICAgY2FzZSAweDI4LyogKCAqLzpcbiAgICBjYXNlIDB4MjkvKiApICovOlxuICAgIGNhc2UgMHgyQS8qICogKi86XG4gICAgY2FzZSAweDJCLyogKyAqLzpcbiAgICBjYXNlIDB4MkMvKiAsICovOlxuICAgIGNhc2UgMHgyRC8qIC0gKi86XG4gICAgY2FzZSAweDJFLyogLiAqLzpcbiAgICBjYXNlIDB4MkYvKiAvICovOlxuICAgIGNhc2UgMHgzQS8qIDogKi86XG4gICAgY2FzZSAweDNCLyogOyAqLzpcbiAgICBjYXNlIDB4M0MvKiA8ICovOlxuICAgIGNhc2UgMHgzRC8qID0gKi86XG4gICAgY2FzZSAweDNFLyogPiAqLzpcbiAgICBjYXNlIDB4M0YvKiA/ICovOlxuICAgIGNhc2UgMHg0MC8qIEAgKi86XG4gICAgY2FzZSAweDVCLyogWyAqLzpcbiAgICBjYXNlIDB4NUMvKiBcXCAqLzpcbiAgICBjYXNlIDB4NUQvKiBdICovOlxuICAgIGNhc2UgMHg1RS8qIF4gKi86XG4gICAgY2FzZSAweDVGLyogXyAqLzpcbiAgICBjYXNlIDB4NjAvKiBgICovOlxuICAgIGNhc2UgMHg3Qi8qIHsgKi86XG4gICAgY2FzZSAweDdDLyogfCAqLzpcbiAgICBjYXNlIDB4N0QvKiB9ICovOlxuICAgIGNhc2UgMHg3RS8qIH4gKi86XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vIEhlcGxlciB0byB1bmlmeSBbcmVmZXJlbmNlIGxhYmVsc10uXG4vL1xuZnVuY3Rpb24gbm9ybWFsaXplUmVmZXJlbmNlKHN0cikge1xuICAvLyBUcmltIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG4gIC8vXG4gIHN0ciA9IHN0ci50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuXG4gIC8vIEluIG5vZGUgdjEwICdcdTFFOUUnLnRvTG93ZXJDYXNlKCkgPT09ICdcdTFFN0UnLCB3aGljaCBpcyBwcmVzdW1lZCB0byBiZSBhIGJ1Z1xuICAvLyBmaXhlZCBpbiB2MTIgKGNvdWxkbid0IGZpbmQgYW55IGRldGFpbHMpLlxuICAvL1xuICAvLyBTbyB0cmVhdCB0aGlzIG9uZSBhcyBhIHNwZWNpYWwgY2FzZVxuICAvLyAocmVtb3ZlIHRoaXMgd2hlbiBub2RlIHYxMCBpcyBubyBsb25nZXIgc3VwcG9ydGVkKS5cbiAgLy9cbiAgaWYgKCdcdTFFOUUnLnRvTG93ZXJDYXNlKCkgPT09ICdcdTFFN0UnKSB7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1x1MUU5RS9nLCAnXHUwMERGJyk7XG4gIH1cblxuICAvLyAudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpIHNob3VsZCBnZXQgcmlkIG9mIGFsbCBkaWZmZXJlbmNlc1xuICAvLyBiZXR3ZWVuIGxldHRlciB2YXJpYW50cy5cbiAgLy9cbiAgLy8gU2ltcGxlIC50b0xvd2VyQ2FzZSgpIGRvZXNuJ3Qgbm9ybWFsaXplIDEyNSBjb2RlIHBvaW50cyBjb3JyZWN0bHksXG4gIC8vIGFuZCAudG9VcHBlckNhc2UgZG9lc24ndCBub3JtYWxpemUgNiBvZiB0aGVtIChsaXN0IG9mIGV4Y2VwdGlvbnM6XG4gIC8vIFx1MDEzMCwgXHUwM0Y0LCBcdTFFOUUsIFx1MjEyNiwgXHUyMTJBLCBcdTIxMkIgLSB0aG9zZSBhcmUgYWxyZWFkeSB1cHBlcmNhc2VkLCBidXQgaGF2ZSBkaWZmZXJlbnRseVxuICAvLyB1cHBlcmNhc2VkIHZlcnNpb25zKS5cbiAgLy9cbiAgLy8gSGVyZSdzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgaXQgaGFwcGVucy4gTGV0cyB0YWtlIGdyZWVrIGxldHRlciBvbWVnYTpcbiAgLy8gdXBwZXJjYXNlIFUrMDM5OCAoXHUwMzk4KSwgVSswM2Y0IChcdTAzRjQpIGFuZCBsb3dlcmNhc2UgVSswM2I4IChcdTAzQjgpLCBVKzAzZDEgKFx1MDNEMSlcbiAgLy9cbiAgLy8gVW5pY29kZSBlbnRyaWVzOlxuICAvLyAwMzk4O0dSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I4O1xuICAvLyAwM0I4O0dSRUVLIFNNQUxMIExFVFRFUiBUSEVUQTtMbDswO0w7Ozs7O047OzswMzk4OzswMzk4XG4gIC8vIDAzRDE7R1JFRUsgVEhFVEEgU1lNQk9MO0xsOzA7TDs8Y29tcGF0PiAwM0I4Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNDUklQVCBUSEVUQTs7MDM5ODs7MDM5OFxuICAvLyAwM0Y0O0dSRUVLIENBUElUQUwgVEhFVEEgU1lNQk9MO0x1OzA7TDs8Y29tcGF0PiAwMzk4Ozs7O047Ozs7MDNCODtcbiAgLy9cbiAgLy8gQ2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uIHNob3VsZCB0cmVhdCBhbGwgb2YgdGhlbSBhcyBlcXVpdmFsZW50LlxuICAvL1xuICAvLyBCdXQgLnRvTG93ZXJDYXNlKCkgZG9lc24ndCBjaGFuZ2UgXHUwM0QxIChpdCdzIGFscmVhZHkgbG93ZXJjYXNlKSxcbiAgLy8gYW5kIC50b1VwcGVyQ2FzZSgpIGRvZXNuJ3QgY2hhbmdlIFx1MDNGNCAoYWxyZWFkeSB1cHBlcmNhc2UpLlxuICAvL1xuICAvLyBBcHBseWluZyBmaXJzdCBsb3dlciB0aGVuIHVwcGVyIGNhc2Ugbm9ybWFsaXplcyBhbnkgY2hhcmFjdGVyOlxuICAvLyAnXFx1MDM5OFxcdTAzZjRcXHUwM2I4XFx1MDNkMScudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpID09PSAnXFx1MDM5OFxcdTAzOThcXHUwMzk4XFx1MDM5OCdcbiAgLy9cbiAgLy8gTm90ZTogdGhpcyBpcyBlcXVpdmFsZW50IHRvIHVuaWNvZGUgY2FzZSBmb2xkaW5nOyB1bmljb2RlIG5vcm1hbGl6YXRpb25cbiAgLy8gaXMgYSBkaWZmZXJlbnQgc3RlcCB0aGF0IGlzIG5vdCByZXF1aXJlZCBoZXJlLlxuICAvL1xuICAvLyBGaW5hbCByZXN1bHQgc2hvdWxkIGJlIHVwcGVyY2FzZWQsIGJlY2F1c2UgaXQncyBsYXRlciBzdG9yZWQgaW4gYW4gb2JqZWN0XG4gIC8vICh0aGlzIGF2b2lkIGEgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIG1lbWJlcnMsXG4gIC8vIG1vc3Qgbm90YWJseSwgYF9fcHJvdG9fX2ApXG4gIC8vXG4gIHJldHVybiBzdHIudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLyBSZS1leHBvcnQgbGlicmFyaWVzIGNvbW1vbmx5IHVzZWQgaW4gYm90aCBtYXJrZG93bi1pdCBhbmQgaXRzIHBsdWdpbnMsXG4vLyBzbyBwbHVnaW5zIHdvbid0IGhhdmUgdG8gZGVwZW5kIG9uIHRoZW0gZXhwbGljaXRseSwgd2hpY2ggcmVkdWNlcyB0aGVpclxuLy8gYnVuZGxlZCBzaXplIChlLmcuIGEgYnJvd3NlciBidWlsZCkuXG4vL1xuZXhwb3J0cy5saWIgICAgICAgICAgICAgICAgID0ge307XG5leHBvcnRzLmxpYi5tZHVybCAgICAgICAgICAgPSByZXF1aXJlKCdtZHVybCcpO1xuZXhwb3J0cy5saWIudWNtaWNybyAgICAgICAgID0gcmVxdWlyZSgndWMubWljcm8nKTtcblxuZXhwb3J0cy5hc3NpZ24gICAgICAgICAgICAgID0gYXNzaWduO1xuZXhwb3J0cy5pc1N0cmluZyAgICAgICAgICAgID0gaXNTdHJpbmc7XG5leHBvcnRzLmhhcyAgICAgICAgICAgICAgICAgPSBoYXM7XG5leHBvcnRzLnVuZXNjYXBlTWQgICAgICAgICAgPSB1bmVzY2FwZU1kO1xuZXhwb3J0cy51bmVzY2FwZUFsbCAgICAgICAgID0gdW5lc2NhcGVBbGw7XG5leHBvcnRzLmlzVmFsaWRFbnRpdHlDb2RlICAgPSBpc1ZhbGlkRW50aXR5Q29kZTtcbmV4cG9ydHMuZnJvbUNvZGVQb2ludCAgICAgICA9IGZyb21Db2RlUG9pbnQ7XG4vLyBleHBvcnRzLnJlcGxhY2VFbnRpdGllcyAgICAgPSByZXBsYWNlRW50aXRpZXM7XG5leHBvcnRzLmVzY2FwZUh0bWwgICAgICAgICAgPSBlc2NhcGVIdG1sO1xuZXhwb3J0cy5hcnJheVJlcGxhY2VBdCAgICAgID0gYXJyYXlSZXBsYWNlQXQ7XG5leHBvcnRzLmlzU3BhY2UgICAgICAgICAgICAgPSBpc1NwYWNlO1xuZXhwb3J0cy5pc1doaXRlU3BhY2UgICAgICAgID0gaXNXaGl0ZVNwYWNlO1xuZXhwb3J0cy5pc01kQXNjaWlQdW5jdCAgICAgID0gaXNNZEFzY2lpUHVuY3Q7XG5leHBvcnRzLmlzUHVuY3RDaGFyICAgICAgICAgPSBpc1B1bmN0Q2hhcjtcbmV4cG9ydHMuZXNjYXBlUkUgICAgICAgICAgICA9IGVzY2FwZVJFO1xuZXhwb3J0cy5ub3JtYWxpemVSZWZlcmVuY2UgID0gbm9ybWFsaXplUmVmZXJlbmNlO1xuIiwgIi8vIFBhcnNlIGxpbmsgbGFiZWxcbi8vXG4vLyB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBmaXJzdCBjaGFyYWN0ZXIgKFwiW1wiKSBhbHJlYWR5IG1hdGNoZXM7XG4vLyByZXR1cm5zIHRoZSBlbmQgb2YgdGhlIGxhYmVsXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlTGlua0xhYmVsKHN0YXRlLCBzdGFydCwgZGlzYWJsZU5lc3RlZCkge1xuICB2YXIgbGV2ZWwsIGZvdW5kLCBtYXJrZXIsIHByZXZQb3MsXG4gICAgICBsYWJlbEVuZCA9IC0xLFxuICAgICAgbWF4ID0gc3RhdGUucG9zTWF4LFxuICAgICAgb2xkUG9zID0gc3RhdGUucG9zO1xuXG4gIHN0YXRlLnBvcyA9IHN0YXJ0ICsgMTtcbiAgbGV2ZWwgPSAxO1xuXG4gIHdoaWxlIChzdGF0ZS5wb3MgPCBtYXgpIHtcbiAgICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGF0ZS5wb3MpO1xuICAgIGlmIChtYXJrZXIgPT09IDB4NUQgLyogXSAqLykge1xuICAgICAgbGV2ZWwtLTtcbiAgICAgIGlmIChsZXZlbCA9PT0gMCkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHByZXZQb3MgPSBzdGF0ZS5wb3M7XG4gICAgc3RhdGUubWQuaW5saW5lLnNraXBUb2tlbihzdGF0ZSk7XG4gICAgaWYgKG1hcmtlciA9PT0gMHg1QiAvKiBbICovKSB7XG4gICAgICBpZiAocHJldlBvcyA9PT0gc3RhdGUucG9zIC0gMSkge1xuICAgICAgICAvLyBpbmNyZWFzZSBsZXZlbCBpZiB3ZSBmaW5kIHRleHQgYFtgLCB3aGljaCBpcyBub3QgYSBwYXJ0IG9mIGFueSB0b2tlblxuICAgICAgICBsZXZlbCsrO1xuICAgICAgfSBlbHNlIGlmIChkaXNhYmxlTmVzdGVkKSB7XG4gICAgICAgIHN0YXRlLnBvcyA9IG9sZFBvcztcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChmb3VuZCkge1xuICAgIGxhYmVsRW5kID0gc3RhdGUucG9zO1xuICB9XG5cbiAgLy8gcmVzdG9yZSBvbGQgc3RhdGVcbiAgc3RhdGUucG9zID0gb2xkUG9zO1xuXG4gIHJldHVybiBsYWJlbEVuZDtcbn07XG4iLCAiLy8gUGFyc2UgbGluayBkZXN0aW5hdGlvblxuLy9cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgdW5lc2NhcGVBbGwgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS51bmVzY2FwZUFsbDtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlTGlua0Rlc3RpbmF0aW9uKHN0ciwgcG9zLCBtYXgpIHtcbiAgdmFyIGNvZGUsIGxldmVsLFxuICAgICAgbGluZXMgPSAwLFxuICAgICAgc3RhcnQgPSBwb3MsXG4gICAgICByZXN1bHQgPSB7XG4gICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgcG9zOiAwLFxuICAgICAgICBsaW5lczogMCxcbiAgICAgICAgc3RyOiAnJ1xuICAgICAgfTtcblxuICBpZiAoc3RyLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgzQyAvKiA8ICovKSB7XG4gICAgcG9zKys7XG4gICAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgICAgY29kZSA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoY29kZSA9PT0gMHgwQSAvKiBcXG4gKi8pIHsgcmV0dXJuIHJlc3VsdDsgfVxuICAgICAgaWYgKGNvZGUgPT09IDB4M0MgLyogPCAqLykgeyByZXR1cm4gcmVzdWx0OyB9XG4gICAgICBpZiAoY29kZSA9PT0gMHgzRSAvKiA+ICovKSB7XG4gICAgICAgIHJlc3VsdC5wb3MgPSBwb3MgKyAxO1xuICAgICAgICByZXN1bHQuc3RyID0gdW5lc2NhcGVBbGwoc3RyLnNsaWNlKHN0YXJ0ICsgMSwgcG9zKSk7XG4gICAgICAgIHJlc3VsdC5vayA9IHRydWU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gMHg1QyAvKiBcXCAqLyAmJiBwb3MgKyAxIDwgbWF4KSB7XG4gICAgICAgIHBvcyArPSAyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcG9zKys7XG4gICAgfVxuXG4gICAgLy8gbm8gY2xvc2luZyAnPidcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gdGhpcyBzaG91bGQgYmUgLi4uIH0gZWxzZSB7IC4uLiBicmFuY2hcblxuICBsZXZlbCA9IDA7XG4gIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICBjb2RlID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcblxuICAgIGlmIChjb2RlID09PSAweDIwKSB7IGJyZWFrOyB9XG5cbiAgICAvLyBhc2NpaSBjb250cm9sIGNoYXJhY3RlcnNcbiAgICBpZiAoY29kZSA8IDB4MjAgfHwgY29kZSA9PT0gMHg3RikgeyBicmVhazsgfVxuXG4gICAgaWYgKGNvZGUgPT09IDB4NUMgLyogXFwgKi8gJiYgcG9zICsgMSA8IG1heCkge1xuICAgICAgaWYgKHN0ci5jaGFyQ29kZUF0KHBvcyArIDEpID09PSAweDIwKSB7IGJyZWFrOyB9XG4gICAgICBwb3MgKz0gMjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjb2RlID09PSAweDI4IC8qICggKi8pIHtcbiAgICAgIGxldmVsKys7XG4gICAgICBpZiAobGV2ZWwgPiAzMikgeyByZXR1cm4gcmVzdWx0OyB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IDB4MjkgLyogKSAqLykge1xuICAgICAgaWYgKGxldmVsID09PSAwKSB7IGJyZWFrOyB9XG4gICAgICBsZXZlbC0tO1xuICAgIH1cblxuICAgIHBvcysrO1xuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSBwb3MpIHsgcmV0dXJuIHJlc3VsdDsgfVxuICBpZiAobGV2ZWwgIT09IDApIHsgcmV0dXJuIHJlc3VsdDsgfVxuXG4gIHJlc3VsdC5zdHIgPSB1bmVzY2FwZUFsbChzdHIuc2xpY2Uoc3RhcnQsIHBvcykpO1xuICByZXN1bHQubGluZXMgPSBsaW5lcztcbiAgcmVzdWx0LnBvcyA9IHBvcztcbiAgcmVzdWx0Lm9rID0gdHJ1ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCAiLy8gUGFyc2UgbGluayB0aXRsZVxuLy9cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgdW5lc2NhcGVBbGwgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS51bmVzY2FwZUFsbDtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcnNlTGlua1RpdGxlKHN0ciwgcG9zLCBtYXgpIHtcbiAgdmFyIGNvZGUsXG4gICAgICBtYXJrZXIsXG4gICAgICBsaW5lcyA9IDAsXG4gICAgICBzdGFydCA9IHBvcyxcbiAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgb2s6IGZhbHNlLFxuICAgICAgICBwb3M6IDAsXG4gICAgICAgIGxpbmVzOiAwLFxuICAgICAgICBzdHI6ICcnXG4gICAgICB9O1xuXG4gIGlmIChwb3MgPj0gbWF4KSB7IHJldHVybiByZXN1bHQ7IH1cblxuICBtYXJrZXIgPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuXG4gIGlmIChtYXJrZXIgIT09IDB4MjIgLyogXCIgKi8gJiYgbWFya2VyICE9PSAweDI3IC8qICcgKi8gJiYgbWFya2VyICE9PSAweDI4IC8qICggKi8pIHsgcmV0dXJuIHJlc3VsdDsgfVxuXG4gIHBvcysrO1xuXG4gIC8vIGlmIG9wZW5pbmcgbWFya2VyIGlzIFwiKFwiLCBzd2l0Y2ggaXQgdG8gY2xvc2luZyBtYXJrZXIgXCIpXCJcbiAgaWYgKG1hcmtlciA9PT0gMHgyOCkgeyBtYXJrZXIgPSAweDI5OyB9XG5cbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIHJlc3VsdC5wb3MgPSBwb3MgKyAxO1xuICAgICAgcmVzdWx0LmxpbmVzID0gbGluZXM7XG4gICAgICByZXN1bHQuc3RyID0gdW5lc2NhcGVBbGwoc3RyLnNsaWNlKHN0YXJ0ICsgMSwgcG9zKSk7XG4gICAgICByZXN1bHQub2sgPSB0cnVlO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4MjggLyogKCAqLyAmJiBtYXJrZXIgPT09IDB4MjkgLyogKSAqLykge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4MEEpIHtcbiAgICAgIGxpbmVzKys7XG4gICAgfSBlbHNlIGlmIChjb2RlID09PSAweDVDIC8qIFxcICovICYmIHBvcyArIDEgPCBtYXgpIHtcbiAgICAgIHBvcysrO1xuICAgICAgaWYgKHN0ci5jaGFyQ29kZUF0KHBvcykgPT09IDB4MEEpIHtcbiAgICAgICAgbGluZXMrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwb3MrKztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIi8vIEp1c3QgYSBzaG9ydGN1dCBmb3IgYnVsayBleHBvcnRcbid1c2Ugc3RyaWN0JztcblxuXG5leHBvcnRzLnBhcnNlTGlua0xhYmVsICAgICAgID0gcmVxdWlyZSgnLi9wYXJzZV9saW5rX2xhYmVsJyk7XG5leHBvcnRzLnBhcnNlTGlua0Rlc3RpbmF0aW9uID0gcmVxdWlyZSgnLi9wYXJzZV9saW5rX2Rlc3RpbmF0aW9uJyk7XG5leHBvcnRzLnBhcnNlTGlua1RpdGxlICAgICAgID0gcmVxdWlyZSgnLi9wYXJzZV9saW5rX3RpdGxlJyk7XG4iLCAiLyoqXG4gKiBjbGFzcyBSZW5kZXJlclxuICpcbiAqIEdlbmVyYXRlcyBIVE1MIGZyb20gcGFyc2VkIHRva2VuIHN0cmVhbS4gRWFjaCBpbnN0YW5jZSBoYXMgaW5kZXBlbmRlbnRcbiAqIGNvcHkgb2YgcnVsZXMuIFRob3NlIGNhbiBiZSByZXdyaXR0ZW4gd2l0aCBlYXNlLiBBbHNvLCB5b3UgY2FuIGFkZCBuZXdcbiAqIHJ1bGVzIGlmIHlvdSBjcmVhdGUgcGx1Z2luIGFuZCBhZGRzIG5ldyB0b2tlbiB0eXBlcy5cbiAqKi9cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgYXNzaWduICAgICAgICAgID0gcmVxdWlyZSgnLi9jb21tb24vdXRpbHMnKS5hc3NpZ247XG52YXIgdW5lc2NhcGVBbGwgICAgID0gcmVxdWlyZSgnLi9jb21tb24vdXRpbHMnKS51bmVzY2FwZUFsbDtcbnZhciBlc2NhcGVIdG1sICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbi91dGlscycpLmVzY2FwZUh0bWw7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxudmFyIGRlZmF1bHRfcnVsZXMgPSB7fTtcblxuXG5kZWZhdWx0X3J1bGVzLmNvZGVfaW5saW5lID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNsZikge1xuICB2YXIgdG9rZW4gPSB0b2tlbnNbaWR4XTtcblxuICByZXR1cm4gICc8Y29kZScgKyBzbGYucmVuZGVyQXR0cnModG9rZW4pICsgJz4nICtcbiAgICAgICAgICBlc2NhcGVIdG1sKHRva2Vuc1tpZHhdLmNvbnRlbnQpICtcbiAgICAgICAgICAnPC9jb2RlPic7XG59O1xuXG5cbmRlZmF1bHRfcnVsZXMuY29kZV9ibG9jayA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCBzbGYpIHtcbiAgdmFyIHRva2VuID0gdG9rZW5zW2lkeF07XG5cbiAgcmV0dXJuICAnPHByZScgKyBzbGYucmVuZGVyQXR0cnModG9rZW4pICsgJz48Y29kZT4nICtcbiAgICAgICAgICBlc2NhcGVIdG1sKHRva2Vuc1tpZHhdLmNvbnRlbnQpICtcbiAgICAgICAgICAnPC9jb2RlPjwvcHJlPlxcbic7XG59O1xuXG5cbmRlZmF1bHRfcnVsZXMuZmVuY2UgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHgsIG9wdGlvbnMsIGVudiwgc2xmKSB7XG4gIHZhciB0b2tlbiA9IHRva2Vuc1tpZHhdLFxuICAgICAgaW5mbyA9IHRva2VuLmluZm8gPyB1bmVzY2FwZUFsbCh0b2tlbi5pbmZvKS50cmltKCkgOiAnJyxcbiAgICAgIGxhbmdOYW1lID0gJycsXG4gICAgICBsYW5nQXR0cnMgPSAnJyxcbiAgICAgIGhpZ2hsaWdodGVkLCBpLCBhcnIsIHRtcEF0dHJzLCB0bXBUb2tlbjtcblxuICBpZiAoaW5mbykge1xuICAgIGFyciA9IGluZm8uc3BsaXQoLyhcXHMrKS9nKTtcbiAgICBsYW5nTmFtZSA9IGFyclswXTtcbiAgICBsYW5nQXR0cnMgPSBhcnIuc2xpY2UoMikuam9pbignJyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5oaWdobGlnaHQpIHtcbiAgICBoaWdobGlnaHRlZCA9IG9wdGlvbnMuaGlnaGxpZ2h0KHRva2VuLmNvbnRlbnQsIGxhbmdOYW1lLCBsYW5nQXR0cnMpIHx8IGVzY2FwZUh0bWwodG9rZW4uY29udGVudCk7XG4gIH0gZWxzZSB7XG4gICAgaGlnaGxpZ2h0ZWQgPSBlc2NhcGVIdG1sKHRva2VuLmNvbnRlbnQpO1xuICB9XG5cbiAgaWYgKGhpZ2hsaWdodGVkLmluZGV4T2YoJzxwcmUnKSA9PT0gMCkge1xuICAgIHJldHVybiBoaWdobGlnaHRlZCArICdcXG4nO1xuICB9XG5cbiAgLy8gSWYgbGFuZ3VhZ2UgZXhpc3RzLCBpbmplY3QgY2xhc3MgZ2VudGx5LCB3aXRob3V0IG1vZGlmeWluZyBvcmlnaW5hbCB0b2tlbi5cbiAgLy8gTWF5IGJlLCBvbmUgZGF5IHdlIHdpbGwgYWRkIC5kZWVwQ2xvbmUoKSBmb3IgdG9rZW4gYW5kIHNpbXBsaWZ5IHRoaXMgcGFydCwgYnV0XG4gIC8vIG5vdyB3ZSBwcmVmZXIgdG8ga2VlcCB0aGluZ3MgbG9jYWwuXG4gIGlmIChpbmZvKSB7XG4gICAgaSAgICAgICAgPSB0b2tlbi5hdHRySW5kZXgoJ2NsYXNzJyk7XG4gICAgdG1wQXR0cnMgPSB0b2tlbi5hdHRycyA/IHRva2VuLmF0dHJzLnNsaWNlKCkgOiBbXTtcblxuICAgIGlmIChpIDwgMCkge1xuICAgICAgdG1wQXR0cnMucHVzaChbICdjbGFzcycsIG9wdGlvbnMubGFuZ1ByZWZpeCArIGxhbmdOYW1lIF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0bXBBdHRyc1tpXSA9IHRtcEF0dHJzW2ldLnNsaWNlKCk7XG4gICAgICB0bXBBdHRyc1tpXVsxXSArPSAnICcgKyBvcHRpb25zLmxhbmdQcmVmaXggKyBsYW5nTmFtZTtcbiAgICB9XG5cbiAgICAvLyBGYWtlIHRva2VuIGp1c3QgdG8gcmVuZGVyIGF0dHJpYnV0ZXNcbiAgICB0bXBUb2tlbiA9IHtcbiAgICAgIGF0dHJzOiB0bXBBdHRyc1xuICAgIH07XG5cbiAgICByZXR1cm4gICc8cHJlPjxjb2RlJyArIHNsZi5yZW5kZXJBdHRycyh0bXBUb2tlbikgKyAnPidcbiAgICAgICAgICArIGhpZ2hsaWdodGVkXG4gICAgICAgICAgKyAnPC9jb2RlPjwvcHJlPlxcbic7XG4gIH1cblxuXG4gIHJldHVybiAgJzxwcmU+PGNvZGUnICsgc2xmLnJlbmRlckF0dHJzKHRva2VuKSArICc+J1xuICAgICAgICArIGhpZ2hsaWdodGVkXG4gICAgICAgICsgJzwvY29kZT48L3ByZT5cXG4nO1xufTtcblxuXG5kZWZhdWx0X3J1bGVzLmltYWdlID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNsZikge1xuICB2YXIgdG9rZW4gPSB0b2tlbnNbaWR4XTtcblxuICAvLyBcImFsdFwiIGF0dHIgTVVTVCBiZSBzZXQsIGV2ZW4gaWYgZW1wdHkuIEJlY2F1c2UgaXQncyBtYW5kYXRvcnkgYW5kXG4gIC8vIHNob3VsZCBiZSBwbGFjZWQgb24gcHJvcGVyIHBvc2l0aW9uIGZvciB0ZXN0cy5cbiAgLy9cbiAgLy8gUmVwbGFjZSBjb250ZW50IHdpdGggYWN0dWFsIHZhbHVlXG5cbiAgdG9rZW4uYXR0cnNbdG9rZW4uYXR0ckluZGV4KCdhbHQnKV1bMV0gPVxuICAgIHNsZi5yZW5kZXJJbmxpbmVBc1RleHQodG9rZW4uY2hpbGRyZW4sIG9wdGlvbnMsIGVudik7XG5cbiAgcmV0dXJuIHNsZi5yZW5kZXJUb2tlbih0b2tlbnMsIGlkeCwgb3B0aW9ucyk7XG59O1xuXG5cbmRlZmF1bHRfcnVsZXMuaGFyZGJyZWFrID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zIC8qLCBlbnYgKi8pIHtcbiAgcmV0dXJuIG9wdGlvbnMueGh0bWxPdXQgPyAnPGJyIC8+XFxuJyA6ICc8YnI+XFxuJztcbn07XG5kZWZhdWx0X3J1bGVzLnNvZnRicmVhayA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCwgb3B0aW9ucyAvKiwgZW52ICovKSB7XG4gIHJldHVybiBvcHRpb25zLmJyZWFrcyA/IChvcHRpb25zLnhodG1sT3V0ID8gJzxiciAvPlxcbicgOiAnPGJyPlxcbicpIDogJ1xcbic7XG59O1xuXG5cbmRlZmF1bHRfcnVsZXMudGV4dCA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCAvKiwgb3B0aW9ucywgZW52ICovKSB7XG4gIHJldHVybiBlc2NhcGVIdG1sKHRva2Vuc1tpZHhdLmNvbnRlbnQpO1xufTtcblxuXG5kZWZhdWx0X3J1bGVzLmh0bWxfYmxvY2sgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHggLyosIG9wdGlvbnMsIGVudiAqLykge1xuICByZXR1cm4gdG9rZW5zW2lkeF0uY29udGVudDtcbn07XG5kZWZhdWx0X3J1bGVzLmh0bWxfaW5saW5lID0gZnVuY3Rpb24gKHRva2VucywgaWR4IC8qLCBvcHRpb25zLCBlbnYgKi8pIHtcbiAgcmV0dXJuIHRva2Vuc1tpZHhdLmNvbnRlbnQ7XG59O1xuXG5cbi8qKlxuICogbmV3IFJlbmRlcmVyKClcbiAqXG4gKiBDcmVhdGVzIG5ldyBbW1JlbmRlcmVyXV0gaW5zdGFuY2UgYW5kIGZpbGwgW1tSZW5kZXJlciNydWxlc11dIHdpdGggZGVmYXVsdHMuXG4gKiovXG5mdW5jdGlvbiBSZW5kZXJlcigpIHtcblxuICAvKipcbiAgICogUmVuZGVyZXIjcnVsZXMgLT4gT2JqZWN0XG4gICAqXG4gICAqIENvbnRhaW5zIHJlbmRlciBydWxlcyBmb3IgdG9rZW5zLiBDYW4gYmUgdXBkYXRlZCBhbmQgZXh0ZW5kZWQuXG4gICAqXG4gICAqICMjIyMjIEV4YW1wbGVcbiAgICpcbiAgICogYGBgamF2YXNjcmlwdFxuICAgKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gICAqXG4gICAqIG1kLnJlbmRlcmVyLnJ1bGVzLnN0cm9uZ19vcGVuICA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICc8Yj4nOyB9O1xuICAgKiBtZC5yZW5kZXJlci5ydWxlcy5zdHJvbmdfY2xvc2UgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnPC9iPic7IH07XG4gICAqXG4gICAqIHZhciByZXN1bHQgPSBtZC5yZW5kZXJJbmxpbmUoLi4uKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEVhY2ggcnVsZSBpcyBjYWxsZWQgYXMgaW5kZXBlbmRlbnQgc3RhdGljIGZ1bmN0aW9uIHdpdGggZml4ZWQgc2lnbmF0dXJlOlxuICAgKlxuICAgKiBgYGBqYXZhc2NyaXB0XG4gICAqIGZ1bmN0aW9uIG15X3Rva2VuX3JlbmRlcih0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCByZW5kZXJlcikge1xuICAgKiAgIC8vIC4uLlxuICAgKiAgIHJldHVybiByZW5kZXJlZEhUTUw7XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIFNlZSBbc291cmNlIGNvZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcmVuZGVyZXIuanMpXG4gICAqIGZvciBtb3JlIGRldGFpbHMgYW5kIGV4YW1wbGVzLlxuICAgKiovXG4gIHRoaXMucnVsZXMgPSBhc3NpZ24oe30sIGRlZmF1bHRfcnVsZXMpO1xufVxuXG5cbi8qKlxuICogUmVuZGVyZXIucmVuZGVyQXR0cnModG9rZW4pIC0+IFN0cmluZ1xuICpcbiAqIFJlbmRlciB0b2tlbiBhdHRyaWJ1dGVzIHRvIHN0cmluZy5cbiAqKi9cblJlbmRlcmVyLnByb3RvdHlwZS5yZW5kZXJBdHRycyA9IGZ1bmN0aW9uIHJlbmRlckF0dHJzKHRva2VuKSB7XG4gIHZhciBpLCBsLCByZXN1bHQ7XG5cbiAgaWYgKCF0b2tlbi5hdHRycykgeyByZXR1cm4gJyc7IH1cblxuICByZXN1bHQgPSAnJztcblxuICBmb3IgKGkgPSAwLCBsID0gdG9rZW4uYXR0cnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgcmVzdWx0ICs9ICcgJyArIGVzY2FwZUh0bWwodG9rZW4uYXR0cnNbaV1bMF0pICsgJz1cIicgKyBlc2NhcGVIdG1sKHRva2VuLmF0dHJzW2ldWzFdKSArICdcIic7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKipcbiAqIFJlbmRlcmVyLnJlbmRlclRva2VuKHRva2VucywgaWR4LCBvcHRpb25zKSAtPiBTdHJpbmdcbiAqIC0gdG9rZW5zIChBcnJheSk6IGxpc3Qgb2YgdG9rZW5zXG4gKiAtIGlkeCAoTnVtYmVkKTogdG9rZW4gaW5kZXggdG8gcmVuZGVyXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHBhcmFtcyBvZiBwYXJzZXIgaW5zdGFuY2VcbiAqXG4gKiBEZWZhdWx0IHRva2VuIHJlbmRlcmVyLiBDYW4gYmUgb3ZlcnJpZGVuIGJ5IGN1c3RvbSBmdW5jdGlvblxuICogaW4gW1tSZW5kZXJlciNydWxlc11dLlxuICoqL1xuUmVuZGVyZXIucHJvdG90eXBlLnJlbmRlclRva2VuID0gZnVuY3Rpb24gcmVuZGVyVG9rZW4odG9rZW5zLCBpZHgsIG9wdGlvbnMpIHtcbiAgdmFyIG5leHRUb2tlbixcbiAgICAgIHJlc3VsdCA9ICcnLFxuICAgICAgbmVlZExmID0gZmFsc2UsXG4gICAgICB0b2tlbiA9IHRva2Vuc1tpZHhdO1xuXG4gIC8vIFRpZ2h0IGxpc3QgcGFyYWdyYXBoc1xuICBpZiAodG9rZW4uaGlkZGVuKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gSW5zZXJ0IGEgbmV3bGluZSBiZXR3ZWVuIGhpZGRlbiBwYXJhZ3JhcGggYW5kIHN1YnNlcXVlbnQgb3BlbmluZ1xuICAvLyBibG9jay1sZXZlbCB0YWcuXG4gIC8vXG4gIC8vIEZvciBleGFtcGxlLCBoZXJlIHdlIHNob3VsZCBpbnNlcnQgYSBuZXdsaW5lIGJlZm9yZSBibG9ja3F1b3RlOlxuICAvLyAgLSBhXG4gIC8vICAgID5cbiAgLy9cbiAgaWYgKHRva2VuLmJsb2NrICYmIHRva2VuLm5lc3RpbmcgIT09IC0xICYmIGlkeCAmJiB0b2tlbnNbaWR4IC0gMV0uaGlkZGVuKSB7XG4gICAgcmVzdWx0ICs9ICdcXG4nO1xuICB9XG5cbiAgLy8gQWRkIHRva2VuIG5hbWUsIGUuZy4gYDxpbWdgXG4gIHJlc3VsdCArPSAodG9rZW4ubmVzdGluZyA9PT0gLTEgPyAnPC8nIDogJzwnKSArIHRva2VuLnRhZztcblxuICAvLyBFbmNvZGUgYXR0cmlidXRlcywgZS5nLiBgPGltZyBzcmM9XCJmb29cImBcbiAgcmVzdWx0ICs9IHRoaXMucmVuZGVyQXR0cnModG9rZW4pO1xuXG4gIC8vIEFkZCBhIHNsYXNoIGZvciBzZWxmLWNsb3NpbmcgdGFncywgZS5nLiBgPGltZyBzcmM9XCJmb29cIiAvYFxuICBpZiAodG9rZW4ubmVzdGluZyA9PT0gMCAmJiBvcHRpb25zLnhodG1sT3V0KSB7XG4gICAgcmVzdWx0ICs9ICcgLyc7XG4gIH1cblxuICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIGFkZCBhIG5ld2xpbmUgYWZ0ZXIgdGhpcyB0YWdcbiAgaWYgKHRva2VuLmJsb2NrKSB7XG4gICAgbmVlZExmID0gdHJ1ZTtcblxuICAgIGlmICh0b2tlbi5uZXN0aW5nID09PSAxKSB7XG4gICAgICBpZiAoaWR4ICsgMSA8IHRva2Vucy5sZW5ndGgpIHtcbiAgICAgICAgbmV4dFRva2VuID0gdG9rZW5zW2lkeCArIDFdO1xuXG4gICAgICAgIGlmIChuZXh0VG9rZW4udHlwZSA9PT0gJ2lubGluZScgfHwgbmV4dFRva2VuLmhpZGRlbikge1xuICAgICAgICAgIC8vIEJsb2NrLWxldmVsIHRhZyBjb250YWluaW5nIGFuIGlubGluZSB0YWcuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBuZWVkTGYgPSBmYWxzZTtcblxuICAgICAgICB9IGVsc2UgaWYgKG5leHRUb2tlbi5uZXN0aW5nID09PSAtMSAmJiBuZXh0VG9rZW4udGFnID09PSB0b2tlbi50YWcpIHtcbiAgICAgICAgICAvLyBPcGVuaW5nIHRhZyArIGNsb3NpbmcgdGFnIG9mIHRoZSBzYW1lIHR5cGUuIEUuZy4gYDxsaT48L2xpPmAuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBuZWVkTGYgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlc3VsdCArPSBuZWVkTGYgPyAnPlxcbicgOiAnPic7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqXG4gKiBSZW5kZXJlci5yZW5kZXJJbmxpbmUodG9rZW5zLCBvcHRpb25zLCBlbnYpIC0+IFN0cmluZ1xuICogLSB0b2tlbnMgKEFycmF5KTogbGlzdCBvbiBibG9jayB0b2tlbnMgdG8gcmVuZGVyXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHBhcmFtcyBvZiBwYXJzZXIgaW5zdGFuY2VcbiAqIC0gZW52IChPYmplY3QpOiBhZGRpdGlvbmFsIGRhdGEgZnJvbSBwYXJzZWQgaW5wdXQgKHJlZmVyZW5jZXMsIGZvciBleGFtcGxlKVxuICpcbiAqIFRoZSBzYW1lIGFzIFtbUmVuZGVyZXIucmVuZGVyXV0sIGJ1dCBmb3Igc2luZ2xlIHRva2VuIG9mIGBpbmxpbmVgIHR5cGUuXG4gKiovXG5SZW5kZXJlci5wcm90b3R5cGUucmVuZGVySW5saW5lID0gZnVuY3Rpb24gKHRva2Vucywgb3B0aW9ucywgZW52KSB7XG4gIHZhciB0eXBlLFxuICAgICAgcmVzdWx0ID0gJycsXG4gICAgICBydWxlcyA9IHRoaXMucnVsZXM7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHR5cGUgPSB0b2tlbnNbaV0udHlwZTtcblxuICAgIGlmICh0eXBlb2YgcnVsZXNbdHlwZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXN1bHQgKz0gcnVsZXNbdHlwZV0odG9rZW5zLCBpLCBvcHRpb25zLCBlbnYsIHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJUb2tlbih0b2tlbnMsIGksIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKiBpbnRlcm5hbFxuICogUmVuZGVyZXIucmVuZGVySW5saW5lQXNUZXh0KHRva2Vucywgb3B0aW9ucywgZW52KSAtPiBTdHJpbmdcbiAqIC0gdG9rZW5zIChBcnJheSk6IGxpc3Qgb24gYmxvY2sgdG9rZW5zIHRvIHJlbmRlclxuICogLSBvcHRpb25zIChPYmplY3QpOiBwYXJhbXMgb2YgcGFyc2VyIGluc3RhbmNlXG4gKiAtIGVudiAoT2JqZWN0KTogYWRkaXRpb25hbCBkYXRhIGZyb20gcGFyc2VkIGlucHV0IChyZWZlcmVuY2VzLCBmb3IgZXhhbXBsZSlcbiAqXG4gKiBTcGVjaWFsIGtsdWRnZSBmb3IgaW1hZ2UgYGFsdGAgYXR0cmlidXRlcyB0byBjb25mb3JtIENvbW1vbk1hcmsgc3BlYy5cbiAqIERvbid0IHRyeSB0byB1c2UgaXQhIFNwZWMgcmVxdWlyZXMgdG8gc2hvdyBgYWx0YCBjb250ZW50IHdpdGggc3RyaXBwZWQgbWFya3VwLFxuICogaW5zdGVhZCBvZiBzaW1wbGUgZXNjYXBpbmcuXG4gKiovXG5SZW5kZXJlci5wcm90b3R5cGUucmVuZGVySW5saW5lQXNUZXh0ID0gZnVuY3Rpb24gKHRva2Vucywgb3B0aW9ucywgZW52KSB7XG4gIHZhciByZXN1bHQgPSAnJztcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdG9rZW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKHRva2Vuc1tpXS50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIHJlc3VsdCArPSB0b2tlbnNbaV0uY29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRva2Vuc1tpXS50eXBlID09PSAnaW1hZ2UnKSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJJbmxpbmVBc1RleHQodG9rZW5zW2ldLmNoaWxkcmVuLCBvcHRpb25zLCBlbnYpO1xuICAgIH0gZWxzZSBpZiAodG9rZW5zW2ldLnR5cGUgPT09ICdzb2Z0YnJlYWsnKSB7XG4gICAgICByZXN1bHQgKz0gJ1xcbic7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqXG4gKiBSZW5kZXJlci5yZW5kZXIodG9rZW5zLCBvcHRpb25zLCBlbnYpIC0+IFN0cmluZ1xuICogLSB0b2tlbnMgKEFycmF5KTogbGlzdCBvbiBibG9jayB0b2tlbnMgdG8gcmVuZGVyXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHBhcmFtcyBvZiBwYXJzZXIgaW5zdGFuY2VcbiAqIC0gZW52IChPYmplY3QpOiBhZGRpdGlvbmFsIGRhdGEgZnJvbSBwYXJzZWQgaW5wdXQgKHJlZmVyZW5jZXMsIGZvciBleGFtcGxlKVxuICpcbiAqIFRha2VzIHRva2VuIHN0cmVhbSBhbmQgZ2VuZXJhdGVzIEhUTUwuIFByb2JhYmx5LCB5b3Ugd2lsbCBuZXZlciBuZWVkIHRvIGNhbGxcbiAqIHRoaXMgbWV0aG9kIGRpcmVjdGx5LlxuICoqL1xuUmVuZGVyZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICh0b2tlbnMsIG9wdGlvbnMsIGVudikge1xuICB2YXIgaSwgbGVuLCB0eXBlLFxuICAgICAgcmVzdWx0ID0gJycsXG4gICAgICBydWxlcyA9IHRoaXMucnVsZXM7XG5cbiAgZm9yIChpID0gMCwgbGVuID0gdG9rZW5zLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdHlwZSA9IHRva2Vuc1tpXS50eXBlO1xuXG4gICAgaWYgKHR5cGUgPT09ICdpbmxpbmUnKSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJJbmxpbmUodG9rZW5zW2ldLmNoaWxkcmVuLCBvcHRpb25zLCBlbnYpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJ1bGVzW3R5cGVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmVzdWx0ICs9IHJ1bGVzW3Rva2Vuc1tpXS50eXBlXSh0b2tlbnMsIGksIG9wdGlvbnMsIGVudiwgdGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlclRva2VuKHRva2VucywgaSwgb3B0aW9ucywgZW52KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZW5kZXJlcjtcbiIsICIvKipcbiAqIGNsYXNzIFJ1bGVyXG4gKlxuICogSGVscGVyIGNsYXNzLCB1c2VkIGJ5IFtbTWFya2Rvd25JdCNjb3JlXV0sIFtbTWFya2Rvd25JdCNibG9ja11dIGFuZFxuICogW1tNYXJrZG93bkl0I2lubGluZV1dIHRvIG1hbmFnZSBzZXF1ZW5jZXMgb2YgZnVuY3Rpb25zIChydWxlcyk6XG4gKlxuICogLSBrZWVwIHJ1bGVzIGluIGRlZmluZWQgb3JkZXJcbiAqIC0gYXNzaWduIHRoZSBuYW1lIHRvIGVhY2ggcnVsZVxuICogLSBlbmFibGUvZGlzYWJsZSBydWxlc1xuICogLSBhZGQvcmVwbGFjZSBydWxlc1xuICogLSBhbGxvdyBhc3NpZ24gcnVsZXMgdG8gYWRkaXRpb25hbCBuYW1lZCBjaGFpbnMgKGluIHRoZSBzYW1lKVxuICogLSBjYWNoZWluZyBsaXN0cyBvZiBhY3RpdmUgcnVsZXNcbiAqXG4gKiBZb3Ugd2lsbCBub3QgbmVlZCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSB1bnRpbCB3cml0ZSBwbHVnaW5zLiBGb3Igc2ltcGxlXG4gKiBydWxlcyBjb250cm9sIHVzZSBbW01hcmtkb3duSXQuZGlzYWJsZV1dLCBbW01hcmtkb3duSXQuZW5hYmxlXV0gYW5kXG4gKiBbW01hcmtkb3duSXQudXNlXV0uXG4gKiovXG4ndXNlIHN0cmljdCc7XG5cblxuLyoqXG4gKiBuZXcgUnVsZXIoKVxuICoqL1xuZnVuY3Rpb24gUnVsZXIoKSB7XG4gIC8vIExpc3Qgb2YgYWRkZWQgcnVsZXMuIEVhY2ggZWxlbWVudCBpczpcbiAgLy9cbiAgLy8ge1xuICAvLyAgIG5hbWU6IFhYWCxcbiAgLy8gICBlbmFibGVkOiBCb29sZWFuLFxuICAvLyAgIGZuOiBGdW5jdGlvbigpLFxuICAvLyAgIGFsdDogWyBuYW1lMiwgbmFtZTMgXVxuICAvLyB9XG4gIC8vXG4gIHRoaXMuX19ydWxlc19fID0gW107XG5cbiAgLy8gQ2FjaGVkIHJ1bGUgY2hhaW5zLlxuICAvL1xuICAvLyBGaXJzdCBsZXZlbCAtIGNoYWluIG5hbWUsICcnIGZvciBkZWZhdWx0LlxuICAvLyBTZWNvbmQgbGV2ZWwgLSBkaWdpbmFsIGFuY2hvciBmb3IgZmFzdCBmaWx0ZXJpbmcgYnkgY2hhcmNvZGVzLlxuICAvL1xuICB0aGlzLl9fY2FjaGVfXyA9IG51bGw7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIZWxwZXIgbWV0aG9kcywgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5XG5cblxuLy8gRmluZCBydWxlIGluZGV4IGJ5IG5hbWVcbi8vXG5SdWxlci5wcm90b3R5cGUuX19maW5kX18gPSBmdW5jdGlvbiAobmFtZSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX19ydWxlc19fLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRoaXMuX19ydWxlc19fW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59O1xuXG5cbi8vIEJ1aWxkIHJ1bGVzIGxvb2t1cCBjYWNoZVxuLy9cblJ1bGVyLnByb3RvdHlwZS5fX2NvbXBpbGVfXyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgY2hhaW5zID0gWyAnJyBdO1xuXG4gIC8vIGNvbGxlY3QgdW5pcXVlIG5hbWVzXG4gIHNlbGYuX19ydWxlc19fLmZvckVhY2goZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICBpZiAoIXJ1bGUuZW5hYmxlZCkgeyByZXR1cm47IH1cblxuICAgIHJ1bGUuYWx0LmZvckVhY2goZnVuY3Rpb24gKGFsdE5hbWUpIHtcbiAgICAgIGlmIChjaGFpbnMuaW5kZXhPZihhbHROYW1lKSA8IDApIHtcbiAgICAgICAgY2hhaW5zLnB1c2goYWx0TmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHNlbGYuX19jYWNoZV9fID0ge307XG5cbiAgY2hhaW5zLmZvckVhY2goZnVuY3Rpb24gKGNoYWluKSB7XG4gICAgc2VsZi5fX2NhY2hlX19bY2hhaW5dID0gW107XG4gICAgc2VsZi5fX3J1bGVzX18uZm9yRWFjaChmdW5jdGlvbiAocnVsZSkge1xuICAgICAgaWYgKCFydWxlLmVuYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgIGlmIChjaGFpbiAmJiBydWxlLmFsdC5pbmRleE9mKGNoYWluKSA8IDApIHsgcmV0dXJuOyB9XG5cbiAgICAgIHNlbGYuX19jYWNoZV9fW2NoYWluXS5wdXNoKHJ1bGUuZm4pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5hdChuYW1lLCBmbiBbLCBvcHRpb25zXSlcbiAqIC0gbmFtZSAoU3RyaW5nKTogcnVsZSBuYW1lIHRvIHJlcGxhY2UuXG4gKiAtIGZuIChGdW5jdGlvbik6IG5ldyBydWxlIGZ1bmN0aW9uLlxuICogLSBvcHRpb25zIChPYmplY3QpOiBuZXcgcnVsZSBvcHRpb25zIChub3QgbWFuZGF0b3J5KS5cbiAqXG4gKiBSZXBsYWNlIHJ1bGUgYnkgbmFtZSB3aXRoIG5ldyBmdW5jdGlvbiAmIG9wdGlvbnMuIFRocm93cyBlcnJvciBpZiBuYW1lIG5vdFxuICogZm91bmQuXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBSZXBsYWNlIGV4aXN0aW5nIHR5cG9ncmFwaGVyIHJlcGxhY2VtZW50IHJ1bGUgd2l0aCBuZXcgb25lOlxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAqXG4gKiBtZC5jb3JlLnJ1bGVyLmF0KCdyZXBsYWNlbWVudHMnLCBmdW5jdGlvbiByZXBsYWNlKHN0YXRlKSB7XG4gKiAgIC8vLi4uXG4gKiB9KTtcbiAqIGBgYFxuICoqL1xuUnVsZXIucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gKG5hbWUsIGZuLCBvcHRpb25zKSB7XG4gIHZhciBpbmRleCA9IHRoaXMuX19maW5kX18obmFtZSk7XG4gIHZhciBvcHQgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmIChpbmRleCA9PT0gLTEpIHsgdGhyb3cgbmV3IEVycm9yKCdQYXJzZXIgcnVsZSBub3QgZm91bmQ6ICcgKyBuYW1lKTsgfVxuXG4gIHRoaXMuX19ydWxlc19fW2luZGV4XS5mbiA9IGZuO1xuICB0aGlzLl9fcnVsZXNfX1tpbmRleF0uYWx0ID0gb3B0LmFsdCB8fCBbXTtcbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuXG4vKipcbiAqIFJ1bGVyLmJlZm9yZShiZWZvcmVOYW1lLCBydWxlTmFtZSwgZm4gWywgb3B0aW9uc10pXG4gKiAtIGJlZm9yZU5hbWUgKFN0cmluZyk6IG5ldyBydWxlIHdpbGwgYmUgYWRkZWQgYmVmb3JlIHRoaXMgb25lLlxuICogLSBydWxlTmFtZSAoU3RyaW5nKTogbmFtZSBvZiBhZGRlZCBydWxlLlxuICogLSBmbiAoRnVuY3Rpb24pOiBydWxlIGZ1bmN0aW9uLlxuICogLSBvcHRpb25zIChPYmplY3QpOiBydWxlIG9wdGlvbnMgKG5vdCBtYW5kYXRvcnkpLlxuICpcbiAqIEFkZCBuZXcgcnVsZSB0byBjaGFpbiBiZWZvcmUgb25lIHdpdGggZ2l2ZW4gbmFtZS4gU2VlIGFsc29cbiAqIFtbUnVsZXIuYWZ0ZXJdXSwgW1tSdWxlci5wdXNoXV0uXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gKlxuICogbWQuYmxvY2sucnVsZXIuYmVmb3JlKCdwYXJhZ3JhcGgnLCAnbXlfcnVsZScsIGZ1bmN0aW9uIHJlcGxhY2Uoc3RhdGUpIHtcbiAqICAgLy8uLi5cbiAqIH0pO1xuICogYGBgXG4gKiovXG5SdWxlci5wcm90b3R5cGUuYmVmb3JlID0gZnVuY3Rpb24gKGJlZm9yZU5hbWUsIHJ1bGVOYW1lLCBmbiwgb3B0aW9ucykge1xuICB2YXIgaW5kZXggPSB0aGlzLl9fZmluZF9fKGJlZm9yZU5hbWUpO1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7IHRocm93IG5ldyBFcnJvcignUGFyc2VyIHJ1bGUgbm90IGZvdW5kOiAnICsgYmVmb3JlTmFtZSk7IH1cblxuICB0aGlzLl9fcnVsZXNfXy5zcGxpY2UoaW5kZXgsIDAsIHtcbiAgICBuYW1lOiBydWxlTmFtZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGZuOiBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSk7XG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuXG4vKipcbiAqIFJ1bGVyLmFmdGVyKGFmdGVyTmFtZSwgcnVsZU5hbWUsIGZuIFssIG9wdGlvbnNdKVxuICogLSBhZnRlck5hbWUgKFN0cmluZyk6IG5ldyBydWxlIHdpbGwgYmUgYWRkZWQgYWZ0ZXIgdGhpcyBvbmUuXG4gKiAtIHJ1bGVOYW1lIChTdHJpbmcpOiBuYW1lIG9mIGFkZGVkIHJ1bGUuXG4gKiAtIGZuIChGdW5jdGlvbik6IHJ1bGUgZnVuY3Rpb24uXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHJ1bGUgb3B0aW9ucyAobm90IG1hbmRhdG9yeSkuXG4gKlxuICogQWRkIG5ldyBydWxlIHRvIGNoYWluIGFmdGVyIG9uZSB3aXRoIGdpdmVuIG5hbWUuIFNlZSBhbHNvXG4gKiBbW1J1bGVyLmJlZm9yZV1dLCBbW1J1bGVyLnB1c2hdXS5cbiAqXG4gKiAjIyMjIyBPcHRpb25zOlxuICpcbiAqIC0gX19hbHRfXyAtIGFycmF5IHdpdGggbmFtZXMgb2YgXCJhbHRlcm5hdGVcIiBjaGFpbnMuXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAqXG4gKiBtZC5pbmxpbmUucnVsZXIuYWZ0ZXIoJ3RleHQnLCAnbXlfcnVsZScsIGZ1bmN0aW9uIHJlcGxhY2Uoc3RhdGUpIHtcbiAqICAgLy8uLi5cbiAqIH0pO1xuICogYGBgXG4gKiovXG5SdWxlci5wcm90b3R5cGUuYWZ0ZXIgPSBmdW5jdGlvbiAoYWZ0ZXJOYW1lLCBydWxlTmFtZSwgZm4sIG9wdGlvbnMpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fX2ZpbmRfXyhhZnRlck5hbWUpO1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcblxuICBpZiAoaW5kZXggPT09IC0xKSB7IHRocm93IG5ldyBFcnJvcignUGFyc2VyIHJ1bGUgbm90IGZvdW5kOiAnICsgYWZ0ZXJOYW1lKTsgfVxuXG4gIHRoaXMuX19ydWxlc19fLnNwbGljZShpbmRleCArIDEsIDAsIHtcbiAgICBuYW1lOiBydWxlTmFtZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGZuOiBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSk7XG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuLyoqXG4gKiBSdWxlci5wdXNoKHJ1bGVOYW1lLCBmbiBbLCBvcHRpb25zXSlcbiAqIC0gcnVsZU5hbWUgKFN0cmluZyk6IG5hbWUgb2YgYWRkZWQgcnVsZS5cbiAqIC0gZm4gKEZ1bmN0aW9uKTogcnVsZSBmdW5jdGlvbi5cbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogcnVsZSBvcHRpb25zIChub3QgbWFuZGF0b3J5KS5cbiAqXG4gKiBQdXNoIG5ldyBydWxlIHRvIHRoZSBlbmQgb2YgY2hhaW4uIFNlZSBhbHNvXG4gKiBbW1J1bGVyLmJlZm9yZV1dLCBbW1J1bGVyLmFmdGVyXV0uXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gKlxuICogbWQuY29yZS5ydWxlci5wdXNoKCdteV9ydWxlJywgZnVuY3Rpb24gcmVwbGFjZShzdGF0ZSkge1xuICogICAvLy4uLlxuICogfSk7XG4gKiBgYGBcbiAqKi9cblJ1bGVyLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHJ1bGVOYW1lLCBmbiwgb3B0aW9ucykge1xuICB2YXIgb3B0ID0gb3B0aW9ucyB8fCB7fTtcblxuICB0aGlzLl9fcnVsZXNfXy5wdXNoKHtcbiAgICBuYW1lOiBydWxlTmFtZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGZuOiBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSk7XG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsO1xufTtcblxuXG4vKipcbiAqIFJ1bGVyLmVuYWJsZShsaXN0IFssIGlnbm9yZUludmFsaWRdKSAtPiBBcnJheVxuICogLSBsaXN0IChTdHJpbmd8QXJyYXkpOiBsaXN0IG9mIHJ1bGUgbmFtZXMgdG8gZW5hYmxlLlxuICogLSBpZ25vcmVJbnZhbGlkIChCb29sZWFuKTogc2V0IGB0cnVlYCB0byBpZ25vcmUgZXJyb3JzIHdoZW4gcnVsZSBub3QgZm91bmQuXG4gKlxuICogRW5hYmxlIHJ1bGVzIHdpdGggZ2l2ZW4gbmFtZXMuIElmIGFueSBydWxlIG5hbWUgbm90IGZvdW5kIC0gdGhyb3cgRXJyb3IuXG4gKiBFcnJvcnMgY2FuIGJlIGRpc2FibGVkIGJ5IHNlY29uZCBwYXJhbS5cbiAqXG4gKiBSZXR1cm5zIGxpc3Qgb2YgZm91bmQgcnVsZSBuYW1lcyAoaWYgbm8gZXhjZXB0aW9uIGhhcHBlbmVkKS5cbiAqXG4gKiBTZWUgYWxzbyBbW1J1bGVyLmRpc2FibGVdXSwgW1tSdWxlci5lbmFibGVPbmx5XV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24gKGxpc3QsIGlnbm9yZUludmFsaWQpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSB7IGxpc3QgPSBbIGxpc3QgXTsgfVxuXG4gIHZhciByZXN1bHQgPSBbXTtcblxuICAvLyBTZWFyY2ggYnkgbmFtZSBhbmQgZW5hYmxlXG4gIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBpZHggPSB0aGlzLl9fZmluZF9fKG5hbWUpO1xuXG4gICAgaWYgKGlkeCA8IDApIHtcbiAgICAgIGlmIChpZ25vcmVJbnZhbGlkKSB7IHJldHVybjsgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlcyBtYW5hZ2VyOiBpbnZhbGlkIHJ1bGUgbmFtZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHRoaXMuX19ydWxlc19fW2lkeF0uZW5hYmxlZCA9IHRydWU7XG4gICAgcmVzdWx0LnB1c2gobmFtZSk7XG4gIH0sIHRoaXMpO1xuXG4gIHRoaXMuX19jYWNoZV9fID0gbnVsbDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5lbmFibGVPbmx5KGxpc3QgWywgaWdub3JlSW52YWxpZF0pXG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBlbmFibGUgKHdoaXRlbGlzdCkuXG4gKiAtIGlnbm9yZUludmFsaWQgKEJvb2xlYW4pOiBzZXQgYHRydWVgIHRvIGlnbm9yZSBlcnJvcnMgd2hlbiBydWxlIG5vdCBmb3VuZC5cbiAqXG4gKiBFbmFibGUgcnVsZXMgd2l0aCBnaXZlbiBuYW1lcywgYW5kIGRpc2FibGUgZXZlcnl0aGluZyBlbHNlLiBJZiBhbnkgcnVsZSBuYW1lXG4gKiBub3QgZm91bmQgLSB0aHJvdyBFcnJvci4gRXJyb3JzIGNhbiBiZSBkaXNhYmxlZCBieSBzZWNvbmQgcGFyYW0uXG4gKlxuICogU2VlIGFsc28gW1tSdWxlci5kaXNhYmxlXV0sIFtbUnVsZXIuZW5hYmxlXV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZW5hYmxlT25seSA9IGZ1bmN0aW9uIChsaXN0LCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gWyBsaXN0IF07IH1cblxuICB0aGlzLl9fcnVsZXNfXy5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7IHJ1bGUuZW5hYmxlZCA9IGZhbHNlOyB9KTtcblxuICB0aGlzLmVuYWJsZShsaXN0LCBpZ25vcmVJbnZhbGlkKTtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5kaXNhYmxlKGxpc3QgWywgaWdub3JlSW52YWxpZF0pIC0+IEFycmF5XG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBkaXNhYmxlLlxuICogLSBpZ25vcmVJbnZhbGlkIChCb29sZWFuKTogc2V0IGB0cnVlYCB0byBpZ25vcmUgZXJyb3JzIHdoZW4gcnVsZSBub3QgZm91bmQuXG4gKlxuICogRGlzYWJsZSBydWxlcyB3aXRoIGdpdmVuIG5hbWVzLiBJZiBhbnkgcnVsZSBuYW1lIG5vdCBmb3VuZCAtIHRocm93IEVycm9yLlxuICogRXJyb3JzIGNhbiBiZSBkaXNhYmxlZCBieSBzZWNvbmQgcGFyYW0uXG4gKlxuICogUmV0dXJucyBsaXN0IG9mIGZvdW5kIHJ1bGUgbmFtZXMgKGlmIG5vIGV4Y2VwdGlvbiBoYXBwZW5lZCkuXG4gKlxuICogU2VlIGFsc28gW1tSdWxlci5lbmFibGVdXSwgW1tSdWxlci5lbmFibGVPbmx5XV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uIChsaXN0LCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gWyBsaXN0IF07IH1cblxuICB2YXIgcmVzdWx0ID0gW107XG5cbiAgLy8gU2VhcmNoIGJ5IG5hbWUgYW5kIGRpc2FibGVcbiAgbGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX19maW5kX18obmFtZSk7XG5cbiAgICBpZiAoaWR4IDwgMCkge1xuICAgICAgaWYgKGlnbm9yZUludmFsaWQpIHsgcmV0dXJuOyB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bGVzIG1hbmFnZXI6IGludmFsaWQgcnVsZSBuYW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgdGhpcy5fX3J1bGVzX19baWR4XS5lbmFibGVkID0gZmFsc2U7XG4gICAgcmVzdWx0LnB1c2gobmFtZSk7XG4gIH0sIHRoaXMpO1xuXG4gIHRoaXMuX19jYWNoZV9fID0gbnVsbDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqXG4gKiBSdWxlci5nZXRSdWxlcyhjaGFpbk5hbWUpIC0+IEFycmF5XG4gKlxuICogUmV0dXJuIGFycmF5IG9mIGFjdGl2ZSBmdW5jdGlvbnMgKHJ1bGVzKSBmb3IgZ2l2ZW4gY2hhaW4gbmFtZS4gSXQgYW5hbHl6ZXNcbiAqIHJ1bGVzIGNvbmZpZ3VyYXRpb24sIGNvbXBpbGVzIGNhY2hlcyBpZiBub3QgZXhpc3RzIGFuZCByZXR1cm5zIHJlc3VsdC5cbiAqXG4gKiBEZWZhdWx0IGNoYWluIG5hbWUgaXMgYCcnYCAoZW1wdHkgc3RyaW5nKS4gSXQgY2FuJ3QgYmUgc2tpcHBlZC4gVGhhdCdzXG4gKiBkb25lIGludGVudGlvbmFsbHksIHRvIGtlZXAgc2lnbmF0dXJlIG1vbm9tb3JwaGljIGZvciBoaWdoIHNwZWVkLlxuICoqL1xuUnVsZXIucHJvdG90eXBlLmdldFJ1bGVzID0gZnVuY3Rpb24gKGNoYWluTmFtZSkge1xuICBpZiAodGhpcy5fX2NhY2hlX18gPT09IG51bGwpIHtcbiAgICB0aGlzLl9fY29tcGlsZV9fKCk7XG4gIH1cblxuICAvLyBDaGFpbiBjYW4gYmUgZW1wdHksIGlmIHJ1bGVzIGRpc2FibGVkLiBCdXQgd2Ugc3RpbGwgaGF2ZSB0byByZXR1cm4gQXJyYXkuXG4gIHJldHVybiB0aGlzLl9fY2FjaGVfX1tjaGFpbk5hbWVdIHx8IFtdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSdWxlcjtcbiIsICIvLyBOb3JtYWxpemUgaW5wdXQgc3RyaW5nXG5cbid1c2Ugc3RyaWN0JztcblxuXG4vLyBodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4yOS8jbGluZS1lbmRpbmdcbnZhciBORVdMSU5FU19SRSAgPSAvXFxyXFxuP3xcXG4vZztcbnZhciBOVUxMX1JFICAgICAgPSAvXFwwL2c7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBub3JtYWxpemUoc3RhdGUpIHtcbiAgdmFyIHN0cjtcblxuICAvLyBOb3JtYWxpemUgbmV3bGluZXNcbiAgc3RyID0gc3RhdGUuc3JjLnJlcGxhY2UoTkVXTElORVNfUkUsICdcXG4nKTtcblxuICAvLyBSZXBsYWNlIE5VTEwgY2hhcmFjdGVyc1xuICBzdHIgPSBzdHIucmVwbGFjZShOVUxMX1JFLCAnXFx1RkZGRCcpO1xuXG4gIHN0YXRlLnNyYyA9IHN0cjtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYmxvY2soc3RhdGUpIHtcbiAgdmFyIHRva2VuO1xuXG4gIGlmIChzdGF0ZS5pbmxpbmVNb2RlKSB7XG4gICAgdG9rZW4gICAgICAgICAgPSBuZXcgc3RhdGUuVG9rZW4oJ2lubGluZScsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ICA9IHN0YXRlLnNyYztcbiAgICB0b2tlbi5tYXAgICAgICA9IFsgMCwgMSBdO1xuICAgIHRva2VuLmNoaWxkcmVuID0gW107XG4gICAgc3RhdGUudG9rZW5zLnB1c2godG9rZW4pO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLm1kLmJsb2NrLnBhcnNlKHN0YXRlLnNyYywgc3RhdGUubWQsIHN0YXRlLmVudiwgc3RhdGUudG9rZW5zKTtcbiAgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5saW5lKHN0YXRlKSB7XG4gIHZhciB0b2tlbnMgPSBzdGF0ZS50b2tlbnMsIHRvaywgaSwgbDtcblxuICAvLyBQYXJzZSBpbmxpbmVzXG4gIGZvciAoaSA9IDAsIGwgPSB0b2tlbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdG9rID0gdG9rZW5zW2ldO1xuICAgIGlmICh0b2sudHlwZSA9PT0gJ2lubGluZScpIHtcbiAgICAgIHN0YXRlLm1kLmlubGluZS5wYXJzZSh0b2suY29udGVudCwgc3RhdGUubWQsIHN0YXRlLmVudiwgdG9rLmNoaWxkcmVuKTtcbiAgICB9XG4gIH1cbn07XG4iLCAiLy8gUmVwbGFjZSBsaW5rLWxpa2UgdGV4dHMgd2l0aCBsaW5rIG5vZGVzLlxuLy9cbi8vIEN1cnJlbnRseSByZXN0cmljdGVkIGJ5IGBtZC52YWxpZGF0ZUxpbmsoKWAgdG8gaHR0cC9odHRwcy9mdHBcbi8vXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIGFycmF5UmVwbGFjZUF0ID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuYXJyYXlSZXBsYWNlQXQ7XG5cblxuZnVuY3Rpb24gaXNMaW5rT3BlbihzdHIpIHtcbiAgcmV0dXJuIC9ePGFbPlxcc10vaS50ZXN0KHN0cik7XG59XG5mdW5jdGlvbiBpc0xpbmtDbG9zZShzdHIpIHtcbiAgcmV0dXJuIC9ePFxcL2FcXHMqPi9pLnRlc3Qoc3RyKTtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpbmtpZnkoc3RhdGUpIHtcbiAgdmFyIGksIGosIGwsIHRva2VucywgdG9rZW4sIGN1cnJlbnRUb2tlbiwgbm9kZXMsIGxuLCB0ZXh0LCBwb3MsIGxhc3RQb3MsXG4gICAgICBsZXZlbCwgaHRtbExpbmtMZXZlbCwgdXJsLCBmdWxsVXJsLCB1cmxUZXh0LFxuICAgICAgYmxvY2tUb2tlbnMgPSBzdGF0ZS50b2tlbnMsXG4gICAgICBsaW5rcztcblxuICBpZiAoIXN0YXRlLm1kLm9wdGlvbnMubGlua2lmeSkgeyByZXR1cm47IH1cblxuICBmb3IgKGogPSAwLCBsID0gYmxvY2tUb2tlbnMubGVuZ3RoOyBqIDwgbDsgaisrKSB7XG4gICAgaWYgKGJsb2NrVG9rZW5zW2pdLnR5cGUgIT09ICdpbmxpbmUnIHx8XG4gICAgICAgICFzdGF0ZS5tZC5saW5raWZ5LnByZXRlc3QoYmxvY2tUb2tlbnNbal0uY29udGVudCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHRva2VucyA9IGJsb2NrVG9rZW5zW2pdLmNoaWxkcmVuO1xuXG4gICAgaHRtbExpbmtMZXZlbCA9IDA7XG5cbiAgICAvLyBXZSBzY2FuIGZyb20gdGhlIGVuZCwgdG8ga2VlcCBwb3NpdGlvbiB3aGVuIG5ldyB0YWdzIGFkZGVkLlxuICAgIC8vIFVzZSByZXZlcnNlZCBsb2dpYyBpbiBsaW5rcyBzdGFydC9lbmQgbWF0Y2hcbiAgICBmb3IgKGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGN1cnJlbnRUb2tlbiA9IHRva2Vuc1tpXTtcblxuICAgICAgLy8gU2tpcCBjb250ZW50IG9mIG1hcmtkb3duIGxpbmtzXG4gICAgICBpZiAoY3VycmVudFRva2VuLnR5cGUgPT09ICdsaW5rX2Nsb3NlJykge1xuICAgICAgICBpLS07XG4gICAgICAgIHdoaWxlICh0b2tlbnNbaV0ubGV2ZWwgIT09IGN1cnJlbnRUb2tlbi5sZXZlbCAmJiB0b2tlbnNbaV0udHlwZSAhPT0gJ2xpbmtfb3BlbicpIHtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFNraXAgY29udGVudCBvZiBodG1sIHRhZyBsaW5rc1xuICAgICAgaWYgKGN1cnJlbnRUb2tlbi50eXBlID09PSAnaHRtbF9pbmxpbmUnKSB7XG4gICAgICAgIGlmIChpc0xpbmtPcGVuKGN1cnJlbnRUb2tlbi5jb250ZW50KSAmJiBodG1sTGlua0xldmVsID4gMCkge1xuICAgICAgICAgIGh0bWxMaW5rTGV2ZWwtLTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNMaW5rQ2xvc2UoY3VycmVudFRva2VuLmNvbnRlbnQpKSB7XG4gICAgICAgICAgaHRtbExpbmtMZXZlbCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaHRtbExpbmtMZXZlbCA+IDApIHsgY29udGludWU7IH1cblxuICAgICAgaWYgKGN1cnJlbnRUb2tlbi50eXBlID09PSAndGV4dCcgJiYgc3RhdGUubWQubGlua2lmeS50ZXN0KGN1cnJlbnRUb2tlbi5jb250ZW50KSkge1xuXG4gICAgICAgIHRleHQgPSBjdXJyZW50VG9rZW4uY29udGVudDtcbiAgICAgICAgbGlua3MgPSBzdGF0ZS5tZC5saW5raWZ5Lm1hdGNoKHRleHQpO1xuXG4gICAgICAgIC8vIE5vdyBzcGxpdCBzdHJpbmcgdG8gbm9kZXNcbiAgICAgICAgbm9kZXMgPSBbXTtcbiAgICAgICAgbGV2ZWwgPSBjdXJyZW50VG9rZW4ubGV2ZWw7XG4gICAgICAgIGxhc3RQb3MgPSAwO1xuXG4gICAgICAgIC8vIGZvcmJpZCBlc2NhcGUgc2VxdWVuY2UgYXQgdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcsXG4gICAgICAgIC8vIHRoaXMgYXZvaWRzIGh0dHBcXDovL2V4YW1wbGUuY29tLyBmcm9tIGJlaW5nIGxpbmtpZmllZCBhc1xuICAgICAgICAvLyBodHRwOjxhIGhyZWY9XCIvL2V4YW1wbGUuY29tL1wiPi8vZXhhbXBsZS5jb20vPC9hPlxuICAgICAgICBpZiAobGlua3MubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgbGlua3NbMF0uaW5kZXggPT09IDAgJiZcbiAgICAgICAgICAgIGkgPiAwICYmXG4gICAgICAgICAgICB0b2tlbnNbaSAtIDFdLnR5cGUgPT09ICd0ZXh0X3NwZWNpYWwnKSB7XG4gICAgICAgICAgbGlua3MgPSBsaW5rcy5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobG4gPSAwOyBsbiA8IGxpbmtzLmxlbmd0aDsgbG4rKykge1xuICAgICAgICAgIHVybCA9IGxpbmtzW2xuXS51cmw7XG4gICAgICAgICAgZnVsbFVybCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsodXJsKTtcbiAgICAgICAgICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkgeyBjb250aW51ZTsgfVxuXG4gICAgICAgICAgdXJsVGV4dCA9IGxpbmtzW2xuXS50ZXh0O1xuXG4gICAgICAgICAgLy8gTGlua2lmaWVyIG1pZ2h0IHNlbmQgcmF3IGhvc3RuYW1lcyBsaWtlIFwiZXhhbXBsZS5jb21cIiwgd2hlcmUgdXJsXG4gICAgICAgICAgLy8gc3RhcnRzIHdpdGggZG9tYWluIG5hbWUuIFNvIHdlIHByZXBlbmQgaHR0cDovLyBpbiB0aG9zZSBjYXNlcyxcbiAgICAgICAgICAvLyBhbmQgcmVtb3ZlIGl0IGFmdGVyd2FyZHMuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBpZiAoIWxpbmtzW2xuXS5zY2hlbWEpIHtcbiAgICAgICAgICAgIHVybFRleHQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCgnaHR0cDovLycgKyB1cmxUZXh0KS5yZXBsYWNlKC9eaHR0cDpcXC9cXC8vLCAnJyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChsaW5rc1tsbl0uc2NoZW1hID09PSAnbWFpbHRvOicgJiYgIS9ebWFpbHRvOi9pLnRlc3QodXJsVGV4dCkpIHtcbiAgICAgICAgICAgIHVybFRleHQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCgnbWFpbHRvOicgKyB1cmxUZXh0KS5yZXBsYWNlKC9ebWFpbHRvOi8sICcnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsVGV4dCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KHVybFRleHQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBvcyA9IGxpbmtzW2xuXS5pbmRleDtcblxuICAgICAgICAgIGlmIChwb3MgPiBsYXN0UG9zKSB7XG4gICAgICAgICAgICB0b2tlbiAgICAgICAgID0gbmV3IHN0YXRlLlRva2VuKCd0ZXh0JywgJycsIDApO1xuICAgICAgICAgICAgdG9rZW4uY29udGVudCA9IHRleHQuc2xpY2UobGFzdFBvcywgcG9zKTtcbiAgICAgICAgICAgIHRva2VuLmxldmVsICAgPSBsZXZlbDtcbiAgICAgICAgICAgIG5vZGVzLnB1c2godG9rZW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRva2VuICAgICAgICAgPSBuZXcgc3RhdGUuVG9rZW4oJ2xpbmtfb3BlbicsICdhJywgMSk7XG4gICAgICAgICAgdG9rZW4uYXR0cnMgICA9IFsgWyAnaHJlZicsIGZ1bGxVcmwgXSBdO1xuICAgICAgICAgIHRva2VuLmxldmVsICAgPSBsZXZlbCsrO1xuICAgICAgICAgIHRva2VuLm1hcmt1cCAgPSAnbGlua2lmeSc7XG4gICAgICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKTtcblxuICAgICAgICAgIHRva2VuICAgICAgICAgPSBuZXcgc3RhdGUuVG9rZW4oJ3RleHQnLCAnJywgMCk7XG4gICAgICAgICAgdG9rZW4uY29udGVudCA9IHVybFRleHQ7XG4gICAgICAgICAgdG9rZW4ubGV2ZWwgICA9IGxldmVsO1xuICAgICAgICAgIG5vZGVzLnB1c2godG9rZW4pO1xuXG4gICAgICAgICAgdG9rZW4gICAgICAgICA9IG5ldyBzdGF0ZS5Ub2tlbignbGlua19jbG9zZScsICdhJywgLTEpO1xuICAgICAgICAgIHRva2VuLmxldmVsICAgPSAtLWxldmVsO1xuICAgICAgICAgIHRva2VuLm1hcmt1cCAgPSAnbGlua2lmeSc7XG4gICAgICAgICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKTtcblxuICAgICAgICAgIGxhc3RQb3MgPSBsaW5rc1tsbl0ubGFzdEluZGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXN0UG9zIDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgICB0b2tlbiAgICAgICAgID0gbmV3IHN0YXRlLlRva2VuKCd0ZXh0JywgJycsIDApO1xuICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSB0ZXh0LnNsaWNlKGxhc3RQb3MpO1xuICAgICAgICAgIHRva2VuLmxldmVsICAgPSBsZXZlbDtcbiAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlcGxhY2UgY3VycmVudCBub2RlXG4gICAgICAgIGJsb2NrVG9rZW5zW2pdLmNoaWxkcmVuID0gdG9rZW5zID0gYXJyYXlSZXBsYWNlQXQodG9rZW5zLCBpLCBub2Rlcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuIiwgIi8vIFNpbXBsZSB0eXBvZ3JhcGhpYyByZXBsYWNlbWVudHNcbi8vXG4vLyAoYykgKEMpIFx1MjE5MiBcdTAwQTlcbi8vICh0bSkgKFRNKSBcdTIxOTIgXHUyMTIyXG4vLyAocikgKFIpIFx1MjE5MiBcdTAwQUVcbi8vICstIFx1MjE5MiBcdTAwQjFcbi8vIChwKSAoUCkgLT4gXHUwMEE3XG4vLyAuLi4gXHUyMTkyIFx1MjAyNiAoYWxzbyA/Li4uLiBcdTIxOTIgPy4uLCAhLi4uLiBcdTIxOTIgIS4uKVxuLy8gPz8/Pz8/Pz8gXHUyMTkyID8/PywgISEhISEgXHUyMTkyICEhISwgYCwsYCBcdTIxOTIgYCxgXG4vLyAtLSBcdTIxOTIgJm5kYXNoOywgLS0tIFx1MjE5MiAmbWRhc2g7XG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG4vLyBUT0RPOlxuLy8gLSBmcmFjdGlvbmFscyAxLzIsIDEvNCwgMy80IC0+IFx1MDBCRCwgXHUwMEJDLCBcdTAwQkVcbi8vIC0gbXVsdGlwbGljYXRpb25zIDIgeCA0IC0+IDIgXHUwMEQ3IDRcblxudmFyIFJBUkVfUkUgPSAvXFwrLXxcXC5cXC58XFw/XFw/XFw/XFw/fCEhISF8LCx8LS0vO1xuXG4vLyBXb3JrYXJvdW5kIGZvciBwaGFudG9tanMgLSBuZWVkIHJlZ2V4IHdpdGhvdXQgL2cgZmxhZyxcbi8vIG9yIHJvb3QgY2hlY2sgd2lsbCBmYWlsIGV2ZXJ5IHNlY29uZCB0aW1lXG52YXIgU0NPUEVEX0FCQlJfVEVTVF9SRSA9IC9cXCgoY3x0bXxyKVxcKS9pO1xuXG52YXIgU0NPUEVEX0FCQlJfUkUgPSAvXFwoKGN8dG18cilcXCkvaWc7XG52YXIgU0NPUEVEX0FCQlIgPSB7XG4gIGM6ICdcdTAwQTknLFxuICByOiAnXHUwMEFFJyxcbiAgdG06ICdcdTIxMjInXG59O1xuXG5mdW5jdGlvbiByZXBsYWNlRm4obWF0Y2gsIG5hbWUpIHtcbiAgcmV0dXJuIFNDT1BFRF9BQkJSW25hbWUudG9Mb3dlckNhc2UoKV07XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2Vfc2NvcGVkKGlubGluZVRva2Vucykge1xuICB2YXIgaSwgdG9rZW4sIGluc2lkZV9hdXRvbGluayA9IDA7XG5cbiAgZm9yIChpID0gaW5saW5lVG9rZW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdG9rZW4gPSBpbmxpbmVUb2tlbnNbaV07XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ3RleHQnICYmICFpbnNpZGVfYXV0b2xpbmspIHtcbiAgICAgIHRva2VuLmNvbnRlbnQgPSB0b2tlbi5jb250ZW50LnJlcGxhY2UoU0NPUEVEX0FCQlJfUkUsIHJlcGxhY2VGbik7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdsaW5rX29wZW4nICYmIHRva2VuLmluZm8gPT09ICdhdXRvJykge1xuICAgICAgaW5zaWRlX2F1dG9saW5rLS07XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdsaW5rX2Nsb3NlJyAmJiB0b2tlbi5pbmZvID09PSAnYXV0bycpIHtcbiAgICAgIGluc2lkZV9hdXRvbGluaysrO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlX3JhcmUoaW5saW5lVG9rZW5zKSB7XG4gIHZhciBpLCB0b2tlbiwgaW5zaWRlX2F1dG9saW5rID0gMDtcblxuICBmb3IgKGkgPSBpbmxpbmVUb2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB0b2tlbiA9IGlubGluZVRva2Vuc1tpXTtcblxuICAgIGlmICh0b2tlbi50eXBlID09PSAndGV4dCcgJiYgIWluc2lkZV9hdXRvbGluaykge1xuICAgICAgaWYgKFJBUkVfUkUudGVzdCh0b2tlbi5jb250ZW50KSkge1xuICAgICAgICB0b2tlbi5jb250ZW50ID0gdG9rZW4uY29udGVudFxuICAgICAgICAgIC5yZXBsYWNlKC9cXCstL2csICdcdTAwQjEnKVxuICAgICAgICAgIC8vIC4uLCAuLi4sIC4uLi4uLi4gLT4gXHUyMDI2XG4gICAgICAgICAgLy8gYnV0ID8uLi4uLiAmICEuLi4uLiAtPiA/Li4gJiAhLi5cbiAgICAgICAgICAucmVwbGFjZSgvXFwuezIsfS9nLCAnXHUyMDI2JykucmVwbGFjZSgvKFs/IV0pXHUyMDI2L2csICckMS4uJylcbiAgICAgICAgICAucmVwbGFjZSgvKFs/IV0pezQsfS9nLCAnJDEkMSQxJykucmVwbGFjZSgvLHsyLH0vZywgJywnKVxuICAgICAgICAgIC8vIGVtLWRhc2hcbiAgICAgICAgICAucmVwbGFjZSgvKF58W14tXSktLS0oPz1bXi1dfCQpL21nLCAnJDFcXHUyMDE0JylcbiAgICAgICAgICAvLyBlbi1kYXNoXG4gICAgICAgICAgLnJlcGxhY2UoLyhefFxccyktLSg/PVxcc3wkKS9tZywgJyQxXFx1MjAxMycpXG4gICAgICAgICAgLnJlcGxhY2UoLyhefFteLVxcc10pLS0oPz1bXi1cXHNdfCQpL21nLCAnJDFcXHUyMDEzJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdsaW5rX29wZW4nICYmIHRva2VuLmluZm8gPT09ICdhdXRvJykge1xuICAgICAgaW5zaWRlX2F1dG9saW5rLS07XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdsaW5rX2Nsb3NlJyAmJiB0b2tlbi5pbmZvID09PSAnYXV0bycpIHtcbiAgICAgIGluc2lkZV9hdXRvbGluaysrO1xuICAgIH1cbiAgfVxufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmVwbGFjZShzdGF0ZSkge1xuICB2YXIgYmxrSWR4O1xuXG4gIGlmICghc3RhdGUubWQub3B0aW9ucy50eXBvZ3JhcGhlcikgeyByZXR1cm47IH1cblxuICBmb3IgKGJsa0lkeCA9IHN0YXRlLnRva2Vucy5sZW5ndGggLSAxOyBibGtJZHggPj0gMDsgYmxrSWR4LS0pIHtcblxuICAgIGlmIChzdGF0ZS50b2tlbnNbYmxrSWR4XS50eXBlICE9PSAnaW5saW5lJykgeyBjb250aW51ZTsgfVxuXG4gICAgaWYgKFNDT1BFRF9BQkJSX1RFU1RfUkUudGVzdChzdGF0ZS50b2tlbnNbYmxrSWR4XS5jb250ZW50KSkge1xuICAgICAgcmVwbGFjZV9zY29wZWQoc3RhdGUudG9rZW5zW2Jsa0lkeF0uY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIGlmIChSQVJFX1JFLnRlc3Qoc3RhdGUudG9rZW5zW2Jsa0lkeF0uY29udGVudCkpIHtcbiAgICAgIHJlcGxhY2VfcmFyZShzdGF0ZS50b2tlbnNbYmxrSWR4XS5jaGlsZHJlbik7XG4gICAgfVxuXG4gIH1cbn07XG4iLCAiLy8gQ29udmVydCBzdHJhaWdodCBxdW90YXRpb24gbWFya3MgdG8gdHlwb2dyYXBoaWMgb25lc1xuLy9cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgaXNXaGl0ZVNwYWNlICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1doaXRlU3BhY2U7XG52YXIgaXNQdW5jdENoYXIgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1B1bmN0Q2hhcjtcbnZhciBpc01kQXNjaWlQdW5jdCA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzTWRBc2NpaVB1bmN0O1xuXG52YXIgUVVPVEVfVEVTVF9SRSA9IC9bJ1wiXS87XG52YXIgUVVPVEVfUkUgPSAvWydcIl0vZztcbnZhciBBUE9TVFJPUEhFID0gJ1xcdTIwMTknOyAvKiBcdTIwMTkgKi9cblxuXG5mdW5jdGlvbiByZXBsYWNlQXQoc3RyLCBpbmRleCwgY2gpIHtcbiAgcmV0dXJuIHN0ci5zbGljZSgwLCBpbmRleCkgKyBjaCArIHN0ci5zbGljZShpbmRleCArIDEpO1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzX2lubGluZXModG9rZW5zLCBzdGF0ZSkge1xuICB2YXIgaSwgdG9rZW4sIHRleHQsIHQsIHBvcywgbWF4LCB0aGlzTGV2ZWwsIGl0ZW0sIGxhc3RDaGFyLCBuZXh0Q2hhcixcbiAgICAgIGlzTGFzdFB1bmN0Q2hhciwgaXNOZXh0UHVuY3RDaGFyLCBpc0xhc3RXaGl0ZVNwYWNlLCBpc05leHRXaGl0ZVNwYWNlLFxuICAgICAgY2FuT3BlbiwgY2FuQ2xvc2UsIGosIGlzU2luZ2xlLCBzdGFjaywgb3BlblF1b3RlLCBjbG9zZVF1b3RlO1xuXG4gIHN0YWNrID0gW107XG5cbiAgZm9yIChpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIHRva2VuID0gdG9rZW5zW2ldO1xuXG4gICAgdGhpc0xldmVsID0gdG9rZW5zW2ldLmxldmVsO1xuXG4gICAgZm9yIChqID0gc3RhY2subGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIGlmIChzdGFja1tqXS5sZXZlbCA8PSB0aGlzTGV2ZWwpIHsgYnJlYWs7IH1cbiAgICB9XG4gICAgc3RhY2subGVuZ3RoID0gaiArIDE7XG5cbiAgICBpZiAodG9rZW4udHlwZSAhPT0gJ3RleHQnKSB7IGNvbnRpbnVlOyB9XG5cbiAgICB0ZXh0ID0gdG9rZW4uY29udGVudDtcbiAgICBwb3MgPSAwO1xuICAgIG1heCA9IHRleHQubGVuZ3RoO1xuXG4gICAgLyplc2xpbnQgbm8tbGFiZWxzOjAsYmxvY2stc2NvcGVkLXZhcjowKi9cbiAgICBPVVRFUjpcbiAgICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgICBRVU9URV9SRS5sYXN0SW5kZXggPSBwb3M7XG4gICAgICB0ID0gUVVPVEVfUkUuZXhlYyh0ZXh0KTtcbiAgICAgIGlmICghdCkgeyBicmVhazsgfVxuXG4gICAgICBjYW5PcGVuID0gY2FuQ2xvc2UgPSB0cnVlO1xuICAgICAgcG9zID0gdC5pbmRleCArIDE7XG4gICAgICBpc1NpbmdsZSA9ICh0WzBdID09PSBcIidcIik7XG5cbiAgICAgIC8vIEZpbmQgcHJldmlvdXMgY2hhcmFjdGVyLFxuICAgICAgLy8gZGVmYXVsdCB0byBzcGFjZSBpZiBpdCdzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmVcbiAgICAgIC8vXG4gICAgICBsYXN0Q2hhciA9IDB4MjA7XG5cbiAgICAgIGlmICh0LmluZGV4IC0gMSA+PSAwKSB7XG4gICAgICAgIGxhc3RDaGFyID0gdGV4dC5jaGFyQ29kZUF0KHQuaW5kZXggLSAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoaiA9IGkgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgIGlmICh0b2tlbnNbal0udHlwZSA9PT0gJ3NvZnRicmVhaycgfHwgdG9rZW5zW2pdLnR5cGUgPT09ICdoYXJkYnJlYWsnKSBicmVhazsgLy8gbGFzdENoYXIgZGVmYXVsdHMgdG8gMHgyMFxuICAgICAgICAgIGlmICghdG9rZW5zW2pdLmNvbnRlbnQpIGNvbnRpbnVlOyAvLyBzaG91bGQgc2tpcCBhbGwgdG9rZW5zIGV4Y2VwdCAndGV4dCcsICdodG1sX2lubGluZScgb3IgJ2NvZGVfaW5saW5lJ1xuXG4gICAgICAgICAgbGFzdENoYXIgPSB0b2tlbnNbal0uY29udGVudC5jaGFyQ29kZUF0KHRva2Vuc1tqXS5jb250ZW50Lmxlbmd0aCAtIDEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEZpbmQgbmV4dCBjaGFyYWN0ZXIsXG4gICAgICAvLyBkZWZhdWx0IHRvIHNwYWNlIGlmIGl0J3MgdGhlIGVuZCBvZiB0aGUgbGluZVxuICAgICAgLy9cbiAgICAgIG5leHRDaGFyID0gMHgyMDtcblxuICAgICAgaWYgKHBvcyA8IG1heCkge1xuICAgICAgICBuZXh0Q2hhciA9IHRleHQuY2hhckNvZGVBdChwb3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChqID0gaSArIDE7IGogPCB0b2tlbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBpZiAodG9rZW5zW2pdLnR5cGUgPT09ICdzb2Z0YnJlYWsnIHx8IHRva2Vuc1tqXS50eXBlID09PSAnaGFyZGJyZWFrJykgYnJlYWs7IC8vIG5leHRDaGFyIGRlZmF1bHRzIHRvIDB4MjBcbiAgICAgICAgICBpZiAoIXRva2Vuc1tqXS5jb250ZW50KSBjb250aW51ZTsgLy8gc2hvdWxkIHNraXAgYWxsIHRva2VucyBleGNlcHQgJ3RleHQnLCAnaHRtbF9pbmxpbmUnIG9yICdjb2RlX2lubGluZSdcblxuICAgICAgICAgIG5leHRDaGFyID0gdG9rZW5zW2pdLmNvbnRlbnQuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpc0xhc3RQdW5jdENoYXIgPSBpc01kQXNjaWlQdW5jdChsYXN0Q2hhcikgfHwgaXNQdW5jdENoYXIoU3RyaW5nLmZyb21DaGFyQ29kZShsYXN0Q2hhcikpO1xuICAgICAgaXNOZXh0UHVuY3RDaGFyID0gaXNNZEFzY2lpUHVuY3QobmV4dENoYXIpIHx8IGlzUHVuY3RDaGFyKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dENoYXIpKTtcblxuICAgICAgaXNMYXN0V2hpdGVTcGFjZSA9IGlzV2hpdGVTcGFjZShsYXN0Q2hhcik7XG4gICAgICBpc05leHRXaGl0ZVNwYWNlID0gaXNXaGl0ZVNwYWNlKG5leHRDaGFyKTtcblxuICAgICAgaWYgKGlzTmV4dFdoaXRlU3BhY2UpIHtcbiAgICAgICAgY2FuT3BlbiA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChpc05leHRQdW5jdENoYXIpIHtcbiAgICAgICAgaWYgKCEoaXNMYXN0V2hpdGVTcGFjZSB8fCBpc0xhc3RQdW5jdENoYXIpKSB7XG4gICAgICAgICAgY2FuT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0xhc3RXaGl0ZVNwYWNlKSB7XG4gICAgICAgIGNhbkNsb3NlID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKGlzTGFzdFB1bmN0Q2hhcikge1xuICAgICAgICBpZiAoIShpc05leHRXaGl0ZVNwYWNlIHx8IGlzTmV4dFB1bmN0Q2hhcikpIHtcbiAgICAgICAgICBjYW5DbG9zZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0Q2hhciA9PT0gMHgyMiAvKiBcIiAqLyAmJiB0WzBdID09PSAnXCInKSB7XG4gICAgICAgIGlmIChsYXN0Q2hhciA+PSAweDMwIC8qIDAgKi8gJiYgbGFzdENoYXIgPD0gMHgzOSAvKiA5ICovKSB7XG4gICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiAxXCJcIiAtIGNvdW50IGZpcnN0IHF1b3RlIGFzIGFuIGluY2hcbiAgICAgICAgICBjYW5DbG9zZSA9IGNhbk9wZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2FuT3BlbiAmJiBjYW5DbG9zZSkge1xuICAgICAgICAvLyBSZXBsYWNlIHF1b3RlcyBpbiB0aGUgbWlkZGxlIG9mIHB1bmN0dWF0aW9uIHNlcXVlbmNlLCBidXQgbm90XG4gICAgICAgIC8vIGluIHRoZSBtaWRkbGUgb2YgdGhlIHdvcmRzLCBpLmUuOlxuICAgICAgICAvL1xuICAgICAgICAvLyAxLiBmb28gXCIgYmFyIFwiIGJheiAtIG5vdCByZXBsYWNlZFxuICAgICAgICAvLyAyLiBmb28tXCItYmFyLVwiLWJheiAtIHJlcGxhY2VkXG4gICAgICAgIC8vIDMuIGZvb1wiYmFyXCJiYXogICAgIC0gbm90IHJlcGxhY2VkXG4gICAgICAgIC8vXG4gICAgICAgIGNhbk9wZW4gPSBpc0xhc3RQdW5jdENoYXI7XG4gICAgICAgIGNhbkNsb3NlID0gaXNOZXh0UHVuY3RDaGFyO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWNhbk9wZW4gJiYgIWNhbkNsb3NlKSB7XG4gICAgICAgIC8vIG1pZGRsZSBvZiB3b3JkXG4gICAgICAgIGlmIChpc1NpbmdsZSkge1xuICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSByZXBsYWNlQXQodG9rZW4uY29udGVudCwgdC5pbmRleCwgQVBPU1RST1BIRSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5DbG9zZSkge1xuICAgICAgICAvLyB0aGlzIGNvdWxkIGJlIGEgY2xvc2luZyBxdW90ZSwgcmV3aW5kIHRoZSBzdGFjayB0byBnZXQgYSBtYXRjaFxuICAgICAgICBmb3IgKGogPSBzdGFjay5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgIGl0ZW0gPSBzdGFja1tqXTtcbiAgICAgICAgICBpZiAoc3RhY2tbal0ubGV2ZWwgPCB0aGlzTGV2ZWwpIHsgYnJlYWs7IH1cbiAgICAgICAgICBpZiAoaXRlbS5zaW5nbGUgPT09IGlzU2luZ2xlICYmIHN0YWNrW2pdLmxldmVsID09PSB0aGlzTGV2ZWwpIHtcbiAgICAgICAgICAgIGl0ZW0gPSBzdGFja1tqXTtcblxuICAgICAgICAgICAgaWYgKGlzU2luZ2xlKSB7XG4gICAgICAgICAgICAgIG9wZW5RdW90ZSA9IHN0YXRlLm1kLm9wdGlvbnMucXVvdGVzWzJdO1xuICAgICAgICAgICAgICBjbG9zZVF1b3RlID0gc3RhdGUubWQub3B0aW9ucy5xdW90ZXNbM107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvcGVuUXVvdGUgPSBzdGF0ZS5tZC5vcHRpb25zLnF1b3Rlc1swXTtcbiAgICAgICAgICAgICAgY2xvc2VRdW90ZSA9IHN0YXRlLm1kLm9wdGlvbnMucXVvdGVzWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyByZXBsYWNlIHRva2VuLmNvbnRlbnQgKmJlZm9yZSogdG9rZW5zW2l0ZW0udG9rZW5dLmNvbnRlbnQsXG4gICAgICAgICAgICAvLyBiZWNhdXNlLCBpZiB0aGV5IGFyZSBwb2ludGluZyBhdCB0aGUgc2FtZSB0b2tlbiwgcmVwbGFjZUF0XG4gICAgICAgICAgICAvLyBjb3VsZCBtZXNzIHVwIGluZGljZXMgd2hlbiBxdW90ZSBsZW5ndGggIT0gMVxuICAgICAgICAgICAgdG9rZW4uY29udGVudCA9IHJlcGxhY2VBdCh0b2tlbi5jb250ZW50LCB0LmluZGV4LCBjbG9zZVF1b3RlKTtcbiAgICAgICAgICAgIHRva2Vuc1tpdGVtLnRva2VuXS5jb250ZW50ID0gcmVwbGFjZUF0KFxuICAgICAgICAgICAgICB0b2tlbnNbaXRlbS50b2tlbl0uY29udGVudCwgaXRlbS5wb3MsIG9wZW5RdW90ZSk7XG5cbiAgICAgICAgICAgIHBvcyArPSBjbG9zZVF1b3RlLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBpZiAoaXRlbS50b2tlbiA9PT0gaSkgeyBwb3MgKz0gb3BlblF1b3RlLmxlbmd0aCAtIDE7IH1cblxuICAgICAgICAgICAgdGV4dCA9IHRva2VuLmNvbnRlbnQ7XG4gICAgICAgICAgICBtYXggPSB0ZXh0Lmxlbmd0aDtcblxuICAgICAgICAgICAgc3RhY2subGVuZ3RoID0gajtcbiAgICAgICAgICAgIGNvbnRpbnVlIE9VVEVSO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2FuT3Blbikge1xuICAgICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgICB0b2tlbjogaSxcbiAgICAgICAgICBwb3M6IHQuaW5kZXgsXG4gICAgICAgICAgc2luZ2xlOiBpc1NpbmdsZSxcbiAgICAgICAgICBsZXZlbDogdGhpc0xldmVsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjYW5DbG9zZSAmJiBpc1NpbmdsZSkge1xuICAgICAgICB0b2tlbi5jb250ZW50ID0gcmVwbGFjZUF0KHRva2VuLmNvbnRlbnQsIHQuaW5kZXgsIEFQT1NUUk9QSEUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc21hcnRxdW90ZXMoc3RhdGUpIHtcbiAgLyplc2xpbnQgbWF4LWRlcHRoOjAqL1xuICB2YXIgYmxrSWR4O1xuXG4gIGlmICghc3RhdGUubWQub3B0aW9ucy50eXBvZ3JhcGhlcikgeyByZXR1cm47IH1cblxuICBmb3IgKGJsa0lkeCA9IHN0YXRlLnRva2Vucy5sZW5ndGggLSAxOyBibGtJZHggPj0gMDsgYmxrSWR4LS0pIHtcblxuICAgIGlmIChzdGF0ZS50b2tlbnNbYmxrSWR4XS50eXBlICE9PSAnaW5saW5lJyB8fFxuICAgICAgICAhUVVPVEVfVEVTVF9SRS50ZXN0KHN0YXRlLnRva2Vuc1tibGtJZHhdLmNvbnRlbnQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBwcm9jZXNzX2lubGluZXMoc3RhdGUudG9rZW5zW2Jsa0lkeF0uY2hpbGRyZW4sIHN0YXRlKTtcbiAgfVxufTtcbiIsICIvLyBKb2luIHJhdyB0ZXh0IHRva2VucyB3aXRoIHRoZSByZXN0IG9mIHRoZSB0ZXh0XG4vL1xuLy8gVGhpcyBpcyBzZXQgYXMgYSBzZXBhcmF0ZSBydWxlIHRvIHByb3ZpZGUgYW4gb3Bwb3J0dW5pdHkgZm9yIHBsdWdpbnNcbi8vIHRvIHJ1biB0ZXh0IHJlcGxhY2VtZW50cyBhZnRlciB0ZXh0IGpvaW4sIGJ1dCBiZWZvcmUgZXNjYXBlIGpvaW4uXG4vL1xuLy8gRm9yIGV4YW1wbGUsIGBcXDopYCBzaG91bGRuJ3QgYmUgcmVwbGFjZWQgd2l0aCBhbiBlbW9qaS5cbi8vXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0ZXh0X2pvaW4oc3RhdGUpIHtcbiAgdmFyIGosIGwsIHRva2VucywgY3VyciwgbWF4LCBsYXN0LFxuICAgICAgYmxvY2tUb2tlbnMgPSBzdGF0ZS50b2tlbnM7XG5cbiAgZm9yIChqID0gMCwgbCA9IGJsb2NrVG9rZW5zLmxlbmd0aDsgaiA8IGw7IGorKykge1xuICAgIGlmIChibG9ja1Rva2Vuc1tqXS50eXBlICE9PSAnaW5saW5lJykgY29udGludWU7XG5cbiAgICB0b2tlbnMgPSBibG9ja1Rva2Vuc1tqXS5jaGlsZHJlbjtcbiAgICBtYXggPSB0b2tlbnMubGVuZ3RoO1xuXG4gICAgZm9yIChjdXJyID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgICBpZiAodG9rZW5zW2N1cnJdLnR5cGUgPT09ICd0ZXh0X3NwZWNpYWwnKSB7XG4gICAgICAgIHRva2Vuc1tjdXJyXS50eXBlID0gJ3RleHQnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY3VyciA9IGxhc3QgPSAwOyBjdXJyIDwgbWF4OyBjdXJyKyspIHtcbiAgICAgIGlmICh0b2tlbnNbY3Vycl0udHlwZSA9PT0gJ3RleHQnICYmXG4gICAgICAgICAgY3VyciArIDEgPCBtYXggJiZcbiAgICAgICAgICB0b2tlbnNbY3VyciArIDFdLnR5cGUgPT09ICd0ZXh0Jykge1xuXG4gICAgICAgIC8vIGNvbGxhcHNlIHR3byBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIHRva2Vuc1tjdXJyICsgMV0uY29udGVudCA9IHRva2Vuc1tjdXJyXS5jb250ZW50ICsgdG9rZW5zW2N1cnIgKyAxXS5jb250ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGN1cnIgIT09IGxhc3QpIHsgdG9rZW5zW2xhc3RdID0gdG9rZW5zW2N1cnJdOyB9XG5cbiAgICAgICAgbGFzdCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyICE9PSBsYXN0KSB7XG4gICAgICB0b2tlbnMubGVuZ3RoID0gbGFzdDtcbiAgICB9XG4gIH1cbn07XG4iLCAiLy8gVG9rZW4gY2xhc3NcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbi8qKlxuICogY2xhc3MgVG9rZW5cbiAqKi9cblxuLyoqXG4gKiBuZXcgVG9rZW4odHlwZSwgdGFnLCBuZXN0aW5nKVxuICpcbiAqIENyZWF0ZSBuZXcgdG9rZW4gYW5kIGZpbGwgcGFzc2VkIHByb3BlcnRpZXMuXG4gKiovXG5mdW5jdGlvbiBUb2tlbih0eXBlLCB0YWcsIG5lc3RpbmcpIHtcbiAgLyoqXG4gICAqIFRva2VuI3R5cGUgLT4gU3RyaW5nXG4gICAqXG4gICAqIFR5cGUgb2YgdGhlIHRva2VuIChzdHJpbmcsIGUuZy4gXCJwYXJhZ3JhcGhfb3BlblwiKVxuICAgKiovXG4gIHRoaXMudHlwZSAgICAgPSB0eXBlO1xuXG4gIC8qKlxuICAgKiBUb2tlbiN0YWcgLT4gU3RyaW5nXG4gICAqXG4gICAqIGh0bWwgdGFnIG5hbWUsIGUuZy4gXCJwXCJcbiAgICoqL1xuICB0aGlzLnRhZyAgICAgID0gdGFnO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNhdHRycyAtPiBBcnJheVxuICAgKlxuICAgKiBIdG1sIGF0dHJpYnV0ZXMuIEZvcm1hdDogYFsgWyBuYW1lMSwgdmFsdWUxIF0sIFsgbmFtZTIsIHZhbHVlMiBdIF1gXG4gICAqKi9cbiAgdGhpcy5hdHRycyAgICA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRva2VuI21hcCAtPiBBcnJheVxuICAgKlxuICAgKiBTb3VyY2UgbWFwIGluZm8uIEZvcm1hdDogYFsgbGluZV9iZWdpbiwgbGluZV9lbmQgXWBcbiAgICoqL1xuICB0aGlzLm1hcCAgICAgID0gbnVsbDtcblxuICAvKipcbiAgICogVG9rZW4jbmVzdGluZyAtPiBOdW1iZXJcbiAgICpcbiAgICogTGV2ZWwgY2hhbmdlIChudW1iZXIgaW4gey0xLCAwLCAxfSBzZXQpLCB3aGVyZTpcbiAgICpcbiAgICogLSAgYDFgIG1lYW5zIHRoZSB0YWcgaXMgb3BlbmluZ1xuICAgKiAtICBgMGAgbWVhbnMgdGhlIHRhZyBpcyBzZWxmLWNsb3NpbmdcbiAgICogLSBgLTFgIG1lYW5zIHRoZSB0YWcgaXMgY2xvc2luZ1xuICAgKiovXG4gIHRoaXMubmVzdGluZyAgPSBuZXN0aW5nO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNsZXZlbCAtPiBOdW1iZXJcbiAgICpcbiAgICogbmVzdGluZyBsZXZlbCwgdGhlIHNhbWUgYXMgYHN0YXRlLmxldmVsYFxuICAgKiovXG4gIHRoaXMubGV2ZWwgICAgPSAwO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNjaGlsZHJlbiAtPiBBcnJheVxuICAgKlxuICAgKiBBbiBhcnJheSBvZiBjaGlsZCBub2RlcyAoaW5saW5lIGFuZCBpbWcgdG9rZW5zKVxuICAgKiovXG4gIHRoaXMuY2hpbGRyZW4gPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNjb250ZW50IC0+IFN0cmluZ1xuICAgKlxuICAgKiBJbiBhIGNhc2Ugb2Ygc2VsZi1jbG9zaW5nIHRhZyAoY29kZSwgaHRtbCwgZmVuY2UsIGV0Yy4pLFxuICAgKiBpdCBoYXMgY29udGVudHMgb2YgdGhpcyB0YWcuXG4gICAqKi9cbiAgdGhpcy5jb250ZW50ICA9ICcnO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNtYXJrdXAgLT4gU3RyaW5nXG4gICAqXG4gICAqICcqJyBvciAnXycgZm9yIGVtcGhhc2lzLCBmZW5jZSBzdHJpbmcgZm9yIGZlbmNlLCBldGMuXG4gICAqKi9cbiAgdGhpcy5tYXJrdXAgICA9ICcnO1xuXG4gIC8qKlxuICAgKiBUb2tlbiNpbmZvIC0+IFN0cmluZ1xuICAgKlxuICAgKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uOlxuICAgKlxuICAgKiAtIEluZm8gc3RyaW5nIGZvciBcImZlbmNlXCIgdG9rZW5zXG4gICAqIC0gVGhlIHZhbHVlIFwiYXV0b1wiIGZvciBhdXRvbGluayBcImxpbmtfb3BlblwiIGFuZCBcImxpbmtfY2xvc2VcIiB0b2tlbnNcbiAgICogLSBUaGUgc3RyaW5nIHZhbHVlIG9mIHRoZSBpdGVtIG1hcmtlciBmb3Igb3JkZXJlZC1saXN0IFwibGlzdF9pdGVtX29wZW5cIiB0b2tlbnNcbiAgICoqL1xuICB0aGlzLmluZm8gICAgID0gJyc7XG5cbiAgLyoqXG4gICAqIFRva2VuI21ldGEgLT4gT2JqZWN0XG4gICAqXG4gICAqIEEgcGxhY2UgZm9yIHBsdWdpbnMgdG8gc3RvcmUgYW4gYXJiaXRyYXJ5IGRhdGFcbiAgICoqL1xuICB0aGlzLm1ldGEgICAgID0gbnVsbDtcblxuICAvKipcbiAgICogVG9rZW4jYmxvY2sgLT4gQm9vbGVhblxuICAgKlxuICAgKiBUcnVlIGZvciBibG9jay1sZXZlbCB0b2tlbnMsIGZhbHNlIGZvciBpbmxpbmUgdG9rZW5zLlxuICAgKiBVc2VkIGluIHJlbmRlcmVyIHRvIGNhbGN1bGF0ZSBsaW5lIGJyZWFrc1xuICAgKiovXG4gIHRoaXMuYmxvY2sgICAgPSBmYWxzZTtcblxuICAvKipcbiAgICogVG9rZW4jaGlkZGVuIC0+IEJvb2xlYW5cbiAgICpcbiAgICogSWYgaXQncyB0cnVlLCBpZ25vcmUgdGhpcyBlbGVtZW50IHdoZW4gcmVuZGVyaW5nLiBVc2VkIGZvciB0aWdodCBsaXN0c1xuICAgKiB0byBoaWRlIHBhcmFncmFwaHMuXG4gICAqKi9cbiAgdGhpcy5oaWRkZW4gICA9IGZhbHNlO1xufVxuXG5cbi8qKlxuICogVG9rZW4uYXR0ckluZGV4KG5hbWUpIC0+IE51bWJlclxuICpcbiAqIFNlYXJjaCBhdHRyaWJ1dGUgaW5kZXggYnkgbmFtZS5cbiAqKi9cblRva2VuLnByb3RvdHlwZS5hdHRySW5kZXggPSBmdW5jdGlvbiBhdHRySW5kZXgobmFtZSkge1xuICB2YXIgYXR0cnMsIGksIGxlbjtcblxuICBpZiAoIXRoaXMuYXR0cnMpIHsgcmV0dXJuIC0xOyB9XG5cbiAgYXR0cnMgPSB0aGlzLmF0dHJzO1xuXG4gIGZvciAoaSA9IDAsIGxlbiA9IGF0dHJzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGF0dHJzW2ldWzBdID09PSBuYW1lKSB7IHJldHVybiBpOyB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcblxuXG4vKipcbiAqIFRva2VuLmF0dHJQdXNoKGF0dHJEYXRhKVxuICpcbiAqIEFkZCBgWyBuYW1lLCB2YWx1ZSBdYCBhdHRyaWJ1dGUgdG8gbGlzdC4gSW5pdCBhdHRycyBpZiBuZWNlc3NhcnlcbiAqKi9cblRva2VuLnByb3RvdHlwZS5hdHRyUHVzaCA9IGZ1bmN0aW9uIGF0dHJQdXNoKGF0dHJEYXRhKSB7XG4gIGlmICh0aGlzLmF0dHJzKSB7XG4gICAgdGhpcy5hdHRycy5wdXNoKGF0dHJEYXRhKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmF0dHJzID0gWyBhdHRyRGF0YSBdO1xuICB9XG59O1xuXG5cbi8qKlxuICogVG9rZW4uYXR0clNldChuYW1lLCB2YWx1ZSlcbiAqXG4gKiBTZXQgYG5hbWVgIGF0dHJpYnV0ZSB0byBgdmFsdWVgLiBPdmVycmlkZSBvbGQgdmFsdWUgaWYgZXhpc3RzLlxuICoqL1xuVG9rZW4ucHJvdG90eXBlLmF0dHJTZXQgPSBmdW5jdGlvbiBhdHRyU2V0KG5hbWUsIHZhbHVlKSB7XG4gIHZhciBpZHggPSB0aGlzLmF0dHJJbmRleChuYW1lKSxcbiAgICAgIGF0dHJEYXRhID0gWyBuYW1lLCB2YWx1ZSBdO1xuXG4gIGlmIChpZHggPCAwKSB7XG4gICAgdGhpcy5hdHRyUHVzaChhdHRyRGF0YSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5hdHRyc1tpZHhdID0gYXR0ckRhdGE7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBUb2tlbi5hdHRyR2V0KG5hbWUpXG4gKlxuICogR2V0IHRoZSB2YWx1ZSBvZiBhdHRyaWJ1dGUgYG5hbWVgLCBvciBudWxsIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICoqL1xuVG9rZW4ucHJvdG90eXBlLmF0dHJHZXQgPSBmdW5jdGlvbiBhdHRyR2V0KG5hbWUpIHtcbiAgdmFyIGlkeCA9IHRoaXMuYXR0ckluZGV4KG5hbWUpLCB2YWx1ZSA9IG51bGw7XG4gIGlmIChpZHggPj0gMCkge1xuICAgIHZhbHVlID0gdGhpcy5hdHRyc1tpZHhdWzFdO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cblxuLyoqXG4gKiBUb2tlbi5hdHRySm9pbihuYW1lLCB2YWx1ZSlcbiAqXG4gKiBKb2luIHZhbHVlIHRvIGV4aXN0aW5nIGF0dHJpYnV0ZSB2aWEgc3BhY2UuIE9yIGNyZWF0ZSBuZXcgYXR0cmlidXRlIGlmIG5vdFxuICogZXhpc3RzLiBVc2VmdWwgdG8gb3BlcmF0ZSB3aXRoIHRva2VuIGNsYXNzZXMuXG4gKiovXG5Ub2tlbi5wcm90b3R5cGUuYXR0ckpvaW4gPSBmdW5jdGlvbiBhdHRySm9pbihuYW1lLCB2YWx1ZSkge1xuICB2YXIgaWR4ID0gdGhpcy5hdHRySW5kZXgobmFtZSk7XG5cbiAgaWYgKGlkeCA8IDApIHtcbiAgICB0aGlzLmF0dHJQdXNoKFsgbmFtZSwgdmFsdWUgXSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5hdHRyc1tpZHhdWzFdID0gdGhpcy5hdHRyc1tpZHhdWzFdICsgJyAnICsgdmFsdWU7XG4gIH1cbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBUb2tlbjtcbiIsICIvLyBDb3JlIHN0YXRlIG9iamVjdFxuLy9cbid1c2Ugc3RyaWN0JztcblxudmFyIFRva2VuID0gcmVxdWlyZSgnLi4vdG9rZW4nKTtcblxuXG5mdW5jdGlvbiBTdGF0ZUNvcmUoc3JjLCBtZCwgZW52KSB7XG4gIHRoaXMuc3JjID0gc3JjO1xuICB0aGlzLmVudiA9IGVudjtcbiAgdGhpcy50b2tlbnMgPSBbXTtcbiAgdGhpcy5pbmxpbmVNb2RlID0gZmFsc2U7XG4gIHRoaXMubWQgPSBtZDsgLy8gbGluayB0byBwYXJzZXIgaW5zdGFuY2Vcbn1cblxuLy8gcmUtZXhwb3J0IFRva2VuIGNsYXNzIHRvIHVzZSBpbiBjb3JlIHJ1bGVzXG5TdGF0ZUNvcmUucHJvdG90eXBlLlRva2VuID0gVG9rZW47XG5cblxubW9kdWxlLmV4cG9ydHMgPSBTdGF0ZUNvcmU7XG4iLCAiLyoqIGludGVybmFsXG4gKiBjbGFzcyBDb3JlXG4gKlxuICogVG9wLWxldmVsIHJ1bGVzIGV4ZWN1dG9yLiBHbHVlcyBibG9jay9pbmxpbmUgcGFyc2VycyBhbmQgZG9lcyBpbnRlcm1lZGlhdGVcbiAqIHRyYW5zZm9ybWF0aW9ucy5cbiAqKi9cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgUnVsZXIgID0gcmVxdWlyZSgnLi9ydWxlcicpO1xuXG5cbnZhciBfcnVsZXMgPSBbXG4gIFsgJ25vcm1hbGl6ZScsICAgICAgcmVxdWlyZSgnLi9ydWxlc19jb3JlL25vcm1hbGl6ZScpICAgICAgXSxcbiAgWyAnYmxvY2snLCAgICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2NvcmUvYmxvY2snKSAgICAgICAgICBdLFxuICBbICdpbmxpbmUnLCAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfY29yZS9pbmxpbmUnKSAgICAgICAgIF0sXG4gIFsgJ2xpbmtpZnknLCAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19jb3JlL2xpbmtpZnknKSAgICAgICAgXSxcbiAgWyAncmVwbGFjZW1lbnRzJywgICByZXF1aXJlKCcuL3J1bGVzX2NvcmUvcmVwbGFjZW1lbnRzJykgICBdLFxuICBbICdzbWFydHF1b3RlcycsICAgIHJlcXVpcmUoJy4vcnVsZXNfY29yZS9zbWFydHF1b3RlcycpICAgIF0sXG4gIC8vIGB0ZXh0X2pvaW5gIGZpbmRzIGB0ZXh0X3NwZWNpYWxgIHRva2VucyAoZm9yIGVzY2FwZSBzZXF1ZW5jZXMpXG4gIC8vIGFuZCBqb2lucyB0aGVtIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHRleHRcbiAgWyAndGV4dF9qb2luJywgICAgICByZXF1aXJlKCcuL3J1bGVzX2NvcmUvdGV4dF9qb2luJykgICAgICBdXG5dO1xuXG5cbi8qKlxuICogbmV3IENvcmUoKVxuICoqL1xuZnVuY3Rpb24gQ29yZSgpIHtcbiAgLyoqXG4gICAqIENvcmUjcnVsZXIgLT4gUnVsZXJcbiAgICpcbiAgICogW1tSdWxlcl1dIGluc3RhbmNlLiBLZWVwIGNvbmZpZ3VyYXRpb24gb2YgY29yZSBydWxlcy5cbiAgICoqL1xuICB0aGlzLnJ1bGVyID0gbmV3IFJ1bGVyKCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBfcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLnJ1bGVyLnB1c2goX3J1bGVzW2ldWzBdLCBfcnVsZXNbaV1bMV0pO1xuICB9XG59XG5cblxuLyoqXG4gKiBDb3JlLnByb2Nlc3Moc3RhdGUpXG4gKlxuICogRXhlY3V0ZXMgY29yZSBjaGFpbiBydWxlcy5cbiAqKi9cbkNvcmUucHJvdG90eXBlLnByb2Nlc3MgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgdmFyIGksIGwsIHJ1bGVzO1xuXG4gIHJ1bGVzID0gdGhpcy5ydWxlci5nZXRSdWxlcygnJyk7XG5cbiAgZm9yIChpID0gMCwgbCA9IHJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHJ1bGVzW2ldKHN0YXRlKTtcbiAgfVxufTtcblxuQ29yZS5wcm90b3R5cGUuU3RhdGUgPSByZXF1aXJlKCcuL3J1bGVzX2NvcmUvc3RhdGVfY29yZScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gQ29yZTtcbiIsICIvLyBHRk0gdGFibGUsIGh0dHBzOi8vZ2l0aHViLmdpdGh1Yi5jb20vZ2ZtLyN0YWJsZXMtZXh0ZW5zaW9uLVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc1NwYWNlID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNTcGFjZTtcblxuXG5mdW5jdGlvbiBnZXRMaW5lKHN0YXRlLCBsaW5lKSB7XG4gIHZhciBwb3MgPSBzdGF0ZS5iTWFya3NbbGluZV0gKyBzdGF0ZS50U2hpZnRbbGluZV0sXG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3NbbGluZV07XG5cbiAgcmV0dXJuIHN0YXRlLnNyYy5zbGljZShwb3MsIG1heCk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZWRTcGxpdChzdHIpIHtcbiAgdmFyIHJlc3VsdCA9IFtdLFxuICAgICAgcG9zID0gMCxcbiAgICAgIG1heCA9IHN0ci5sZW5ndGgsXG4gICAgICBjaCxcbiAgICAgIGlzRXNjYXBlZCA9IGZhbHNlLFxuICAgICAgbGFzdFBvcyA9IDAsXG4gICAgICBjdXJyZW50ID0gJyc7XG5cbiAgY2ggID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcblxuICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgaWYgKGNoID09PSAweDdjLyogfCAqLykge1xuICAgICAgaWYgKCFpc0VzY2FwZWQpIHtcbiAgICAgICAgLy8gcGlwZSBzZXBhcmF0aW5nIGNlbGxzLCAnfCdcbiAgICAgICAgcmVzdWx0LnB1c2goY3VycmVudCArIHN0ci5zdWJzdHJpbmcobGFzdFBvcywgcG9zKSk7XG4gICAgICAgIGN1cnJlbnQgPSAnJztcbiAgICAgICAgbGFzdFBvcyA9IHBvcyArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2NhcGVkIHBpcGUsICdcXHwnXG4gICAgICAgIGN1cnJlbnQgKz0gc3RyLnN1YnN0cmluZyhsYXN0UG9zLCBwb3MgLSAxKTtcbiAgICAgICAgbGFzdFBvcyA9IHBvcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpc0VzY2FwZWQgPSAoY2ggPT09IDB4NWMvKiBcXCAqLyk7XG4gICAgcG9zKys7XG5cbiAgICBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gIH1cblxuICByZXN1bHQucHVzaChjdXJyZW50ICsgc3RyLnN1YnN0cmluZyhsYXN0UG9zKSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRhYmxlKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICB2YXIgY2gsIGxpbmVUZXh0LCBwb3MsIGksIGwsIG5leHRMaW5lLCBjb2x1bW5zLCBjb2x1bW5Db3VudCwgdG9rZW4sXG4gICAgICBhbGlnbnMsIHQsIHRhYmxlTGluZXMsIHRib2R5TGluZXMsIG9sZFBhcmVudFR5cGUsIHRlcm1pbmF0ZSxcbiAgICAgIHRlcm1pbmF0b3JSdWxlcywgZmlyc3RDaCwgc2Vjb25kQ2g7XG5cbiAgLy8gc2hvdWxkIGhhdmUgYXQgbGVhc3QgdHdvIGxpbmVzXG4gIGlmIChzdGFydExpbmUgKyAyID4gZW5kTGluZSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBuZXh0TGluZSA9IHN0YXJ0TGluZSArIDE7XG5cbiAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAvLyBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlY29uZCBsaW5lIHNob3VsZCBiZSAnfCcsICctJywgJzonLFxuICAvLyBhbmQgbm8gb3RoZXIgY2hhcmFjdGVycyBhcmUgYWxsb3dlZCBidXQgc3BhY2VzO1xuICAvLyBiYXNpY2FsbHksIHRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgL15bLTp8XVstOnxcXHNdKiQvIHJlZ2V4cFxuXG4gIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICBpZiAocG9zID49IHN0YXRlLmVNYXJrc1tuZXh0TGluZV0pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgZmlyc3RDaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcbiAgaWYgKGZpcnN0Q2ggIT09IDB4N0MvKiB8ICovICYmIGZpcnN0Q2ggIT09IDB4MkQvKiAtICovICYmIGZpcnN0Q2ggIT09IDB4M0EvKiA6ICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChwb3MgPj0gc3RhdGUuZU1hcmtzW25leHRMaW5lXSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBzZWNvbmRDaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcbiAgaWYgKHNlY29uZENoICE9PSAweDdDLyogfCAqLyAmJiBzZWNvbmRDaCAhPT0gMHgyRC8qIC0gKi8gJiYgc2Vjb25kQ2ggIT09IDB4M0EvKiA6ICovICYmICFpc1NwYWNlKHNlY29uZENoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGlmIGZpcnN0IGNoYXJhY3RlciBpcyAnLScsIHRoZW4gc2Vjb25kIGNoYXJhY3RlciBtdXN0IG5vdCBiZSBhIHNwYWNlXG4gIC8vIChkdWUgdG8gcGFyc2luZyBhbWJpZ3VpdHkgd2l0aCBsaXN0KVxuICBpZiAoZmlyc3RDaCA9PT0gMHgyRC8qIC0gKi8gJiYgaXNTcGFjZShzZWNvbmRDaCkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgd2hpbGUgKHBvcyA8IHN0YXRlLmVNYXJrc1tuZXh0TGluZV0pIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoY2ggIT09IDB4N0MvKiB8ICovICYmIGNoICE9PSAweDJELyogLSAqLyAmJiBjaCAhPT0gMHgzQS8qIDogKi8gJiYgIWlzU3BhY2UoY2gpKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgcG9zKys7XG4gIH1cblxuICBsaW5lVGV4dCA9IGdldExpbmUoc3RhdGUsIHN0YXJ0TGluZSArIDEpO1xuXG4gIGNvbHVtbnMgPSBsaW5lVGV4dC5zcGxpdCgnfCcpO1xuICBhbGlnbnMgPSBbXTtcbiAgZm9yIChpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICB0ID0gY29sdW1uc1tpXS50cmltKCk7XG4gICAgaWYgKCF0KSB7XG4gICAgICAvLyBhbGxvdyBlbXB0eSBjb2x1bW5zIGJlZm9yZSBhbmQgYWZ0ZXIgdGFibGUsIGJ1dCBub3QgaW4gYmV0d2VlbiBjb2x1bW5zO1xuICAgICAgLy8gZS5nLiBhbGxvdyBgIHwtLS18IGAsIGRpc2FsbG93IGAgLS0tfHwtLS0gYFxuICAgICAgaWYgKGkgPT09IDAgfHwgaSA9PT0gY29sdW1ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghL146Py0rOj8kLy50ZXN0KHQpKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGlmICh0LmNoYXJDb2RlQXQodC5sZW5ndGggLSAxKSA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgIGFsaWducy5wdXNoKHQuY2hhckNvZGVBdCgwKSA9PT0gMHgzQS8qIDogKi8gPyAnY2VudGVyJyA6ICdyaWdodCcpO1xuICAgIH0gZWxzZSBpZiAodC5jaGFyQ29kZUF0KDApID09PSAweDNBLyogOiAqLykge1xuICAgICAgYWxpZ25zLnB1c2goJ2xlZnQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWxpZ25zLnB1c2goJycpO1xuICAgIH1cbiAgfVxuXG4gIGxpbmVUZXh0ID0gZ2V0TGluZShzdGF0ZSwgc3RhcnRMaW5lKS50cmltKCk7XG4gIGlmIChsaW5lVGV4dC5pbmRleE9mKCd8JykgPT09IC0xKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgY29sdW1ucyA9IGVzY2FwZWRTcGxpdChsaW5lVGV4dCk7XG4gIGlmIChjb2x1bW5zLmxlbmd0aCAmJiBjb2x1bW5zWzBdID09PSAnJykgY29sdW1ucy5zaGlmdCgpO1xuICBpZiAoY29sdW1ucy5sZW5ndGggJiYgY29sdW1uc1tjb2x1bW5zLmxlbmd0aCAtIDFdID09PSAnJykgY29sdW1ucy5wb3AoKTtcblxuICAvLyBoZWFkZXIgcm93IHdpbGwgZGVmaW5lIGFuIGFtb3VudCBvZiBjb2x1bW5zIGluIHRoZSBlbnRpcmUgdGFibGUsXG4gIC8vIGFuZCBhbGlnbiByb3cgc2hvdWxkIGJlIGV4YWN0bHkgdGhlIHNhbWUgKHRoZSByZXN0IG9mIHRoZSByb3dzIGNhbiBkaWZmZXIpXG4gIGNvbHVtbkNvdW50ID0gY29sdW1ucy5sZW5ndGg7XG4gIGlmIChjb2x1bW5Db3VudCA9PT0gMCB8fCBjb2x1bW5Db3VudCAhPT0gYWxpZ25zLmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoc2lsZW50KSB7IHJldHVybiB0cnVlOyB9XG5cbiAgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGU7XG4gIHN0YXRlLnBhcmVudFR5cGUgPSAndGFibGUnO1xuXG4gIC8vIHVzZSAnYmxvY2txdW90ZScgbGlzdHMgZm9yIHRlcm1pbmF0aW9uIGJlY2F1c2UgaXQnc1xuICAvLyB0aGUgbW9zdCBzaW1pbGFyIHRvIHRhYmxlc1xuICB0ZXJtaW5hdG9yUnVsZXMgPSBzdGF0ZS5tZC5ibG9jay5ydWxlci5nZXRSdWxlcygnYmxvY2txdW90ZScpO1xuXG4gIHRva2VuICAgICA9IHN0YXRlLnB1c2goJ3RhYmxlX29wZW4nLCAndGFibGUnLCAxKTtcbiAgdG9rZW4ubWFwID0gdGFibGVMaW5lcyA9IFsgc3RhcnRMaW5lLCAwIF07XG5cbiAgdG9rZW4gICAgID0gc3RhdGUucHVzaCgndGhlYWRfb3BlbicsICd0aGVhZCcsIDEpO1xuICB0b2tlbi5tYXAgPSBbIHN0YXJ0TGluZSwgc3RhcnRMaW5lICsgMSBdO1xuXG4gIHRva2VuICAgICA9IHN0YXRlLnB1c2goJ3RyX29wZW4nLCAndHInLCAxKTtcbiAgdG9rZW4ubWFwID0gWyBzdGFydExpbmUsIHN0YXJ0TGluZSArIDEgXTtcblxuICBmb3IgKGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgndGhfb3BlbicsICd0aCcsIDEpO1xuICAgIGlmIChhbGlnbnNbaV0pIHtcbiAgICAgIHRva2VuLmF0dHJzICA9IFsgWyAnc3R5bGUnLCAndGV4dC1hbGlnbjonICsgYWxpZ25zW2ldIF0gXTtcbiAgICB9XG5cbiAgICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ2lubGluZScsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ICA9IGNvbHVtbnNbaV0udHJpbSgpO1xuICAgIHRva2VuLmNoaWxkcmVuID0gW107XG5cbiAgICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ3RoX2Nsb3NlJywgJ3RoJywgLTEpO1xuICB9XG5cbiAgdG9rZW4gICAgID0gc3RhdGUucHVzaCgndHJfY2xvc2UnLCAndHInLCAtMSk7XG4gIHRva2VuICAgICA9IHN0YXRlLnB1c2goJ3RoZWFkX2Nsb3NlJywgJ3RoZWFkJywgLTEpO1xuXG4gIGZvciAobmV4dExpbmUgPSBzdGFydExpbmUgKyAyOyBuZXh0TGluZSA8IGVuZExpbmU7IG5leHRMaW5lKyspIHtcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IHN0YXRlLmJsa0luZGVudCkgeyBicmVhazsgfVxuXG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGVybWluYXRlKSB7IGJyZWFrOyB9XG4gICAgbGluZVRleHQgPSBnZXRMaW5lKHN0YXRlLCBuZXh0TGluZSkudHJpbSgpO1xuICAgIGlmICghbGluZVRleHQpIHsgYnJlYWs7IH1cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IGJyZWFrOyB9XG4gICAgY29sdW1ucyA9IGVzY2FwZWRTcGxpdChsaW5lVGV4dCk7XG4gICAgaWYgKGNvbHVtbnMubGVuZ3RoICYmIGNvbHVtbnNbMF0gPT09ICcnKSBjb2x1bW5zLnNoaWZ0KCk7XG4gICAgaWYgKGNvbHVtbnMubGVuZ3RoICYmIGNvbHVtbnNbY29sdW1ucy5sZW5ndGggLSAxXSA9PT0gJycpIGNvbHVtbnMucG9wKCk7XG5cbiAgICBpZiAobmV4dExpbmUgPT09IHN0YXJ0TGluZSArIDIpIHtcbiAgICAgIHRva2VuICAgICA9IHN0YXRlLnB1c2goJ3Rib2R5X29wZW4nLCAndGJvZHknLCAxKTtcbiAgICAgIHRva2VuLm1hcCA9IHRib2R5TGluZXMgPSBbIHN0YXJ0TGluZSArIDIsIDAgXTtcbiAgICB9XG5cbiAgICB0b2tlbiAgICAgPSBzdGF0ZS5wdXNoKCd0cl9vcGVuJywgJ3RyJywgMSk7XG4gICAgdG9rZW4ubWFwID0gWyBuZXh0TGluZSwgbmV4dExpbmUgKyAxIF07XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7IGkrKykge1xuICAgICAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCd0ZF9vcGVuJywgJ3RkJywgMSk7XG4gICAgICBpZiAoYWxpZ25zW2ldKSB7XG4gICAgICAgIHRva2VuLmF0dHJzICA9IFsgWyAnc3R5bGUnLCAndGV4dC1hbGlnbjonICsgYWxpZ25zW2ldIF0gXTtcbiAgICAgIH1cblxuICAgICAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCdpbmxpbmUnLCAnJywgMCk7XG4gICAgICB0b2tlbi5jb250ZW50ICA9IGNvbHVtbnNbaV0gPyBjb2x1bW5zW2ldLnRyaW0oKSA6ICcnO1xuICAgICAgdG9rZW4uY2hpbGRyZW4gPSBbXTtcblxuICAgICAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCd0ZF9jbG9zZScsICd0ZCcsIC0xKTtcbiAgICB9XG4gICAgdG9rZW4gPSBzdGF0ZS5wdXNoKCd0cl9jbG9zZScsICd0cicsIC0xKTtcbiAgfVxuXG4gIGlmICh0Ym9keUxpbmVzKSB7XG4gICAgdG9rZW4gPSBzdGF0ZS5wdXNoKCd0Ym9keV9jbG9zZScsICd0Ym9keScsIC0xKTtcbiAgICB0Ym9keUxpbmVzWzFdID0gbmV4dExpbmU7XG4gIH1cblxuICB0b2tlbiA9IHN0YXRlLnB1c2goJ3RhYmxlX2Nsb3NlJywgJ3RhYmxlJywgLTEpO1xuICB0YWJsZUxpbmVzWzFdID0gbmV4dExpbmU7XG5cbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZTtcbiAgcmV0dXJuIHRydWU7XG59O1xuIiwgIi8vIENvZGUgYmxvY2sgKDQgc3BhY2VzIHBhZGRlZClcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY29kZShzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLyosIHNpbGVudCovKSB7XG4gIHZhciBuZXh0TGluZSwgbGFzdCwgdG9rZW47XG5cbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50IDwgNCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBsYXN0ID0gbmV4dExpbmUgPSBzdGFydExpbmUgKyAxO1xuXG4gIHdoaWxlIChuZXh0TGluZSA8IGVuZExpbmUpIHtcbiAgICBpZiAoc3RhdGUuaXNFbXB0eShuZXh0TGluZSkpIHtcbiAgICAgIG5leHRMaW5lKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7XG4gICAgICBuZXh0TGluZSsrO1xuICAgICAgbGFzdCA9IG5leHRMaW5lO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG5cbiAgc3RhdGUubGluZSA9IGxhc3Q7XG5cbiAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ2NvZGVfYmxvY2snLCAnY29kZScsIDApO1xuICB0b2tlbi5jb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBsYXN0LCA0ICsgc3RhdGUuYmxrSW5kZW50LCBmYWxzZSkgKyAnXFxuJztcbiAgdG9rZW4ubWFwICAgICA9IFsgc3RhcnRMaW5lLCBzdGF0ZS5saW5lIF07XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwgIi8vIGZlbmNlcyAoYGBgIGxhbmcsIH5+fiBsYW5nKVxuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmZW5jZShzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIG1hcmtlciwgbGVuLCBwYXJhbXMsIG5leHRMaW5lLCBtZW0sIHRva2VuLCBtYXJrdXAsXG4gICAgICBoYXZlRW5kTWFya2VyID0gZmFsc2UsXG4gICAgICBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLFxuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV07XG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaWYgKHBvcyArIDMgPiBtYXgpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbWFya2VyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICBpZiAobWFya2VyICE9PSAweDdFLyogfiAqLyAmJiBtYXJrZXIgIT09IDB4NjAgLyogYCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIHNjYW4gbWFya2VyIGxlbmd0aFxuICBtZW0gPSBwb3M7XG4gIHBvcyA9IHN0YXRlLnNraXBDaGFycyhwb3MsIG1hcmtlcik7XG5cbiAgbGVuID0gcG9zIC0gbWVtO1xuXG4gIGlmIChsZW4gPCAzKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIG1hcmt1cCA9IHN0YXRlLnNyYy5zbGljZShtZW0sIHBvcyk7XG4gIHBhcmFtcyA9IHN0YXRlLnNyYy5zbGljZShwb3MsIG1heCk7XG5cbiAgaWYgKG1hcmtlciA9PT0gMHg2MCAvKiBgICovKSB7XG4gICAgaWYgKHBhcmFtcy5pbmRleE9mKFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKSkgPj0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNpbmNlIHN0YXJ0IGlzIGZvdW5kLCB3ZSBjYW4gcmVwb3J0IHN1Y2Nlc3MgaGVyZSBpbiB2YWxpZGF0aW9uIG1vZGVcbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gIC8vIHNlYXJjaCBlbmQgb2YgYmxvY2tcbiAgbmV4dExpbmUgPSBzdGFydExpbmU7XG5cbiAgZm9yICg7Oykge1xuICAgIG5leHRMaW5lKys7XG4gICAgaWYgKG5leHRMaW5lID49IGVuZExpbmUpIHtcbiAgICAgIC8vIHVuY2xvc2VkIGJsb2NrIHNob3VsZCBiZSBhdXRvY2xvc2VkIGJ5IGVuZCBvZiBkb2N1bWVudC5cbiAgICAgIC8vIGFsc28gYmxvY2sgc2VlbXMgdG8gYmUgYXV0b2Nsb3NlZCBieSBlbmQgb2YgcGFyZW50XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBwb3MgPSBtZW0gPSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdICsgc3RhdGUudFNoaWZ0W25leHRMaW5lXTtcbiAgICBtYXggPSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdO1xuXG4gICAgaWYgKHBvcyA8IG1heCAmJiBzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgICAvLyBub24tZW1wdHkgbGluZSB3aXRoIG5lZ2F0aXZlIGluZGVudCBzaG91bGQgc3RvcCB0aGUgbGlzdDpcbiAgICAgIC8vIC0gYGBgXG4gICAgICAvLyAgdGVzdFxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IG1hcmtlcikgeyBjb250aW51ZTsgfVxuXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkge1xuICAgICAgLy8gY2xvc2luZyBmZW5jZSBzaG91bGQgYmUgaW5kZW50ZWQgbGVzcyB0aGFuIDQgc3BhY2VzXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBwb3MgPSBzdGF0ZS5za2lwQ2hhcnMocG9zLCBtYXJrZXIpO1xuXG4gICAgLy8gY2xvc2luZyBjb2RlIGZlbmNlIG11c3QgYmUgYXQgbGVhc3QgYXMgbG9uZyBhcyB0aGUgb3BlbmluZyBvbmVcbiAgICBpZiAocG9zIC0gbWVtIDwgbGVuKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAvLyBtYWtlIHN1cmUgdGFpbCBoYXMgc3BhY2VzIG9ubHlcbiAgICBwb3MgPSBzdGF0ZS5za2lwU3BhY2VzKHBvcyk7XG5cbiAgICBpZiAocG9zIDwgbWF4KSB7IGNvbnRpbnVlOyB9XG5cbiAgICBoYXZlRW5kTWFya2VyID0gdHJ1ZTtcbiAgICAvLyBmb3VuZCFcbiAgICBicmVhaztcbiAgfVxuXG4gIC8vIElmIGEgZmVuY2UgaGFzIGhlYWRpbmcgc3BhY2VzLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIGZyb20gaXRzIGlubmVyIGJsb2NrXG4gIGxlbiA9IHN0YXRlLnNDb3VudFtzdGFydExpbmVdO1xuXG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZSArIChoYXZlRW5kTWFya2VyID8gMSA6IDApO1xuXG4gIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCdmZW5jZScsICdjb2RlJywgMCk7XG4gIHRva2VuLmluZm8gICAgPSBwYXJhbXM7XG4gIHRva2VuLmNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUgKyAxLCBuZXh0TGluZSwgbGVuLCB0cnVlKTtcbiAgdG9rZW4ubWFya3VwICA9IG1hcmt1cDtcbiAgdG9rZW4ubWFwICAgICA9IFsgc3RhcnRMaW5lLCBzdGF0ZS5saW5lIF07XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwgIi8vIEJsb2NrIHF1b3Rlc1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpc1NwYWNlID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNTcGFjZTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJsb2NrcXVvdGUoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBhZGp1c3RUYWIsXG4gICAgICBjaCxcbiAgICAgIGksXG4gICAgICBpbml0aWFsLFxuICAgICAgbCxcbiAgICAgIGxhc3RMaW5lRW1wdHksXG4gICAgICBsaW5lcyxcbiAgICAgIG5leHRMaW5lLFxuICAgICAgb2Zmc2V0LFxuICAgICAgb2xkQk1hcmtzLFxuICAgICAgb2xkQlNDb3VudCxcbiAgICAgIG9sZEluZGVudCxcbiAgICAgIG9sZFBhcmVudFR5cGUsXG4gICAgICBvbGRTQ291bnQsXG4gICAgICBvbGRUU2hpZnQsXG4gICAgICBzcGFjZUFmdGVyTWFya2VyLFxuICAgICAgdGVybWluYXRlLFxuICAgICAgdGVybWluYXRvclJ1bGVzLFxuICAgICAgdG9rZW4sXG4gICAgICBpc091dGRlbnRlZCxcbiAgICAgIG9sZExpbmVNYXggPSBzdGF0ZS5saW5lTWF4LFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIGNoZWNrIHRoZSBibG9jayBxdW90ZSBtYXJrZXJcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKSAhPT0gMHgzRS8qID4gKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gd2Uga25vdyB0aGF0IGl0J3MgZ29pbmcgdG8gYmUgYSB2YWxpZCBibG9ja3F1b3RlLFxuICAvLyBzbyBubyBwb2ludCB0cnlpbmcgdG8gZmluZCB0aGUgZW5kIG9mIGl0IGluIHNpbGVudCBtb2RlXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIHRydWU7IH1cblxuICAvLyBzZXQgb2Zmc2V0IHBhc3Qgc3BhY2VzIGFuZCBcIj5cIlxuICBpbml0aWFsID0gb2Zmc2V0ID0gc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gKyAxO1xuXG4gIC8vIHNraXAgb25lIG9wdGlvbmFsIHNwYWNlIGFmdGVyICc+J1xuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgyMCAvKiBzcGFjZSAqLykge1xuICAgIC8vICcgPiAgIHRlc3QgJ1xuICAgIC8vICAgICBeIC0tIHBvc2l0aW9uIHN0YXJ0IG9mIGxpbmUgaGVyZTpcbiAgICBwb3MrKztcbiAgICBpbml0aWFsKys7XG4gICAgb2Zmc2V0Kys7XG4gICAgYWRqdXN0VGFiID0gZmFsc2U7XG4gICAgc3BhY2VBZnRlck1hcmtlciA9IHRydWU7XG4gIH0gZWxzZSBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgwOSAvKiB0YWIgKi8pIHtcbiAgICBzcGFjZUFmdGVyTWFya2VyID0gdHJ1ZTtcblxuICAgIGlmICgoc3RhdGUuYnNDb3VudFtzdGFydExpbmVdICsgb2Zmc2V0KSAlIDQgPT09IDMpIHtcbiAgICAgIC8vICcgID5cXHQgIHRlc3QgJ1xuICAgICAgLy8gICAgICAgXiAtLSBwb3NpdGlvbiBzdGFydCBvZiBsaW5lIGhlcmUgKHRhYiBoYXMgd2lkdGg9PT0xKVxuICAgICAgcG9zKys7XG4gICAgICBpbml0aWFsKys7XG4gICAgICBvZmZzZXQrKztcbiAgICAgIGFkanVzdFRhYiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAnID5cXHQgIHRlc3QgJ1xuICAgICAgLy8gICAgXiAtLSBwb3NpdGlvbiBzdGFydCBvZiBsaW5lIGhlcmUgKyBzaGlmdCBic0NvdW50IHNsaWdodGx5XG4gICAgICAvLyAgICAgICAgIHRvIG1ha2UgZXh0cmEgc3BhY2UgYXBwZWFyXG4gICAgICBhZGp1c3RUYWIgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzcGFjZUFmdGVyTWFya2VyID0gZmFsc2U7XG4gIH1cblxuICBvbGRCTWFya3MgPSBbIHN0YXRlLmJNYXJrc1tzdGFydExpbmVdIF07XG4gIHN0YXRlLmJNYXJrc1tzdGFydExpbmVdID0gcG9zO1xuXG4gIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoaXNTcGFjZShjaCkpIHtcbiAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICBvZmZzZXQgKz0gNCAtIChvZmZzZXQgKyBzdGF0ZS5ic0NvdW50W3N0YXJ0TGluZV0gKyAoYWRqdXN0VGFiID8gMSA6IDApKSAlIDQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvZmZzZXQrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcG9zKys7XG4gIH1cblxuICBvbGRCU0NvdW50ID0gWyBzdGF0ZS5ic0NvdW50W3N0YXJ0TGluZV0gXTtcbiAgc3RhdGUuYnNDb3VudFtzdGFydExpbmVdID0gc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gKyAxICsgKHNwYWNlQWZ0ZXJNYXJrZXIgPyAxIDogMCk7XG5cbiAgbGFzdExpbmVFbXB0eSA9IHBvcyA+PSBtYXg7XG5cbiAgb2xkU0NvdW50ID0gWyBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSBdO1xuICBzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSA9IG9mZnNldCAtIGluaXRpYWw7XG5cbiAgb2xkVFNoaWZ0ID0gWyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSBdO1xuICBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSA9IHBvcyAtIHN0YXRlLmJNYXJrc1tzdGFydExpbmVdO1xuXG4gIHRlcm1pbmF0b3JSdWxlcyA9IHN0YXRlLm1kLmJsb2NrLnJ1bGVyLmdldFJ1bGVzKCdibG9ja3F1b3RlJyk7XG5cbiAgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGU7XG4gIHN0YXRlLnBhcmVudFR5cGUgPSAnYmxvY2txdW90ZSc7XG5cbiAgLy8gU2VhcmNoIHRoZSBlbmQgb2YgdGhlIGJsb2NrXG4gIC8vXG4gIC8vIEJsb2NrIGVuZHMgd2l0aCBlaXRoZXI6XG4gIC8vICAxLiBhbiBlbXB0eSBsaW5lIG91dHNpZGU6XG4gIC8vICAgICBgYGBcbiAgLy8gICAgID4gdGVzdFxuICAvL1xuICAvLyAgICAgYGBgXG4gIC8vICAyLiBhbiBlbXB0eSBsaW5lIGluc2lkZTpcbiAgLy8gICAgIGBgYFxuICAvLyAgICAgPlxuICAvLyAgICAgdGVzdFxuICAvLyAgICAgYGBgXG4gIC8vICAzLiBhbm90aGVyIHRhZzpcbiAgLy8gICAgIGBgYFxuICAvLyAgICAgPiB0ZXN0XG4gIC8vICAgICAgLSAtIC1cbiAgLy8gICAgIGBgYFxuICBmb3IgKG5leHRMaW5lID0gc3RhcnRMaW5lICsgMTsgbmV4dExpbmUgPCBlbmRMaW5lOyBuZXh0TGluZSsrKSB7XG4gICAgLy8gY2hlY2sgaWYgaXQncyBvdXRkZW50ZWQsIGkuZS4gaXQncyBpbnNpZGUgbGlzdCBpdGVtIGFuZCBpbmRlbnRlZFxuICAgIC8vIGxlc3MgdGhhbiBzYWlkIGxpc3QgaXRlbTpcbiAgICAvL1xuICAgIC8vIGBgYFxuICAgIC8vIDEuIGFueXRoaW5nXG4gICAgLy8gICAgPiBjdXJyZW50IGJsb2NrcXVvdGVcbiAgICAvLyAyLiBjaGVja2luZyB0aGlzIGxpbmVcbiAgICAvLyBgYGBcbiAgICBpc091dGRlbnRlZCA9IHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQ7XG5cbiAgICBwb3MgPSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdICsgc3RhdGUudFNoaWZ0W25leHRMaW5lXTtcbiAgICBtYXggPSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdO1xuXG4gICAgaWYgKHBvcyA+PSBtYXgpIHtcbiAgICAgIC8vIENhc2UgMTogbGluZSBpcyBub3QgaW5zaWRlIHRoZSBibG9ja3F1b3RlLCBhbmQgdGhpcyBsaW5lIGlzIGVtcHR5LlxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKSA9PT0gMHgzRS8qID4gKi8gJiYgIWlzT3V0ZGVudGVkKSB7XG4gICAgICAvLyBUaGlzIGxpbmUgaXMgaW5zaWRlIHRoZSBibG9ja3F1b3RlLlxuXG4gICAgICAvLyBzZXQgb2Zmc2V0IHBhc3Qgc3BhY2VzIGFuZCBcIj5cIlxuICAgICAgaW5pdGlhbCA9IG9mZnNldCA9IHN0YXRlLnNDb3VudFtuZXh0TGluZV0gKyAxO1xuXG4gICAgICAvLyBza2lwIG9uZSBvcHRpb25hbCBzcGFjZSBhZnRlciAnPidcbiAgICAgIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDIwIC8qIHNwYWNlICovKSB7XG4gICAgICAgIC8vICcgPiAgIHRlc3QgJ1xuICAgICAgICAvLyAgICAgXiAtLSBwb3NpdGlvbiBzdGFydCBvZiBsaW5lIGhlcmU6XG4gICAgICAgIHBvcysrO1xuICAgICAgICBpbml0aWFsKys7XG4gICAgICAgIG9mZnNldCsrO1xuICAgICAgICBhZGp1c3RUYWIgPSBmYWxzZTtcbiAgICAgICAgc3BhY2VBZnRlck1hcmtlciA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4MDkgLyogdGFiICovKSB7XG4gICAgICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSB0cnVlO1xuXG4gICAgICAgIGlmICgoc3RhdGUuYnNDb3VudFtuZXh0TGluZV0gKyBvZmZzZXQpICUgNCA9PT0gMykge1xuICAgICAgICAgIC8vICcgID5cXHQgIHRlc3QgJ1xuICAgICAgICAgIC8vICAgICAgIF4gLS0gcG9zaXRpb24gc3RhcnQgb2YgbGluZSBoZXJlICh0YWIgaGFzIHdpZHRoPT09MSlcbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgICBpbml0aWFsKys7XG4gICAgICAgICAgb2Zmc2V0Kys7XG4gICAgICAgICAgYWRqdXN0VGFiID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gJyA+XFx0ICB0ZXN0ICdcbiAgICAgICAgICAvLyAgICBeIC0tIHBvc2l0aW9uIHN0YXJ0IG9mIGxpbmUgaGVyZSArIHNoaWZ0IGJzQ291bnQgc2xpZ2h0bHlcbiAgICAgICAgICAvLyAgICAgICAgIHRvIG1ha2UgZXh0cmEgc3BhY2UgYXBwZWFyXG4gICAgICAgICAgYWRqdXN0VGFiID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3BhY2VBZnRlck1hcmtlciA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBvbGRCTWFya3MucHVzaChzdGF0ZS5iTWFya3NbbmV4dExpbmVdKTtcbiAgICAgIHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gPSBwb3M7XG5cbiAgICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgICAgIGlmIChpc1NwYWNlKGNoKSkge1xuICAgICAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQgLSAob2Zmc2V0ICsgc3RhdGUuYnNDb3VudFtuZXh0TGluZV0gKyAoYWRqdXN0VGFiID8gMSA6IDApKSAlIDQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHBvcysrO1xuICAgICAgfVxuXG4gICAgICBsYXN0TGluZUVtcHR5ID0gcG9zID49IG1heDtcblxuICAgICAgb2xkQlNDb3VudC5wdXNoKHN0YXRlLmJzQ291bnRbbmV4dExpbmVdKTtcbiAgICAgIHN0YXRlLmJzQ291bnRbbmV4dExpbmVdID0gc3RhdGUuc0NvdW50W25leHRMaW5lXSArIDEgKyAoc3BhY2VBZnRlck1hcmtlciA/IDEgOiAwKTtcblxuICAgICAgb2xkU0NvdW50LnB1c2goc3RhdGUuc0NvdW50W25leHRMaW5lXSk7XG4gICAgICBzdGF0ZS5zQ291bnRbbmV4dExpbmVdID0gb2Zmc2V0IC0gaW5pdGlhbDtcblxuICAgICAgb2xkVFNoaWZ0LnB1c2goc3RhdGUudFNoaWZ0W25leHRMaW5lXSk7XG4gICAgICBzdGF0ZS50U2hpZnRbbmV4dExpbmVdID0gcG9zIC0gc3RhdGUuYk1hcmtzW25leHRMaW5lXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIENhc2UgMjogbGluZSBpcyBub3QgaW5zaWRlIHRoZSBibG9ja3F1b3RlLCBhbmQgdGhlIGxhc3QgbGluZSB3YXMgZW1wdHkuXG4gICAgaWYgKGxhc3RMaW5lRW1wdHkpIHsgYnJlYWs7IH1cblxuICAgIC8vIENhc2UgMzogYW5vdGhlciB0YWcgZm91bmQuXG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGVybWluYXRlKSB7XG4gICAgICAvLyBRdWlyayB0byBlbmZvcmNlIFwiaGFyZCB0ZXJtaW5hdGlvbiBtb2RlXCIgZm9yIHBhcmFncmFwaHM7XG4gICAgICAvLyBub3JtYWxseSBpZiB5b3UgY2FsbCBgdG9rZW5pemUoc3RhdGUsIHN0YXJ0TGluZSwgbmV4dExpbmUpYCxcbiAgICAgIC8vIHBhcmFncmFwaHMgd2lsbCBsb29rIGJlbG93IG5leHRMaW5lIGZvciBwYXJhZ3JhcGggY29udGludWF0aW9uLFxuICAgICAgLy8gYnV0IGlmIGJsb2NrcXVvdGUgaXMgdGVybWluYXRlZCBieSBhbm90aGVyIHRhZywgdGhleSBzaG91bGRuJ3RcbiAgICAgIHN0YXRlLmxpbmVNYXggPSBuZXh0TGluZTtcblxuICAgICAgaWYgKHN0YXRlLmJsa0luZGVudCAhPT0gMCkge1xuICAgICAgICAvLyBzdGF0ZS5ibGtJbmRlbnQgd2FzIG5vbi16ZXJvLCB3ZSBub3cgc2V0IGl0IHRvIHplcm8sXG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gcmUtY2FsY3VsYXRlIGFsbCBvZmZzZXRzIHRvIGFwcGVhciBhc1xuICAgICAgICAvLyBpZiBpbmRlbnQgd2Fzbid0IGNoYW5nZWRcbiAgICAgICAgb2xkQk1hcmtzLnB1c2goc3RhdGUuYk1hcmtzW25leHRMaW5lXSk7XG4gICAgICAgIG9sZEJTQ291bnQucHVzaChzdGF0ZS5ic0NvdW50W25leHRMaW5lXSk7XG4gICAgICAgIG9sZFRTaGlmdC5wdXNoKHN0YXRlLnRTaGlmdFtuZXh0TGluZV0pO1xuICAgICAgICBvbGRTQ291bnQucHVzaChzdGF0ZS5zQ291bnRbbmV4dExpbmVdKTtcbiAgICAgICAgc3RhdGUuc0NvdW50W25leHRMaW5lXSAtPSBzdGF0ZS5ibGtJbmRlbnQ7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIG9sZEJNYXJrcy5wdXNoKHN0YXRlLmJNYXJrc1tuZXh0TGluZV0pO1xuICAgIG9sZEJTQ291bnQucHVzaChzdGF0ZS5ic0NvdW50W25leHRMaW5lXSk7XG4gICAgb2xkVFNoaWZ0LnB1c2goc3RhdGUudFNoaWZ0W25leHRMaW5lXSk7XG4gICAgb2xkU0NvdW50LnB1c2goc3RhdGUuc0NvdW50W25leHRMaW5lXSk7XG5cbiAgICAvLyBBIG5lZ2F0aXZlIGluZGVudGF0aW9uIG1lYW5zIHRoYXQgdGhpcyBpcyBhIHBhcmFncmFwaCBjb250aW51YXRpb25cbiAgICAvL1xuICAgIHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPSAtMTtcbiAgfVxuXG4gIG9sZEluZGVudCA9IHN0YXRlLmJsa0luZGVudDtcbiAgc3RhdGUuYmxrSW5kZW50ID0gMDtcblxuICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdibG9ja3F1b3RlX29wZW4nLCAnYmxvY2txdW90ZScsIDEpO1xuICB0b2tlbi5tYXJrdXAgPSAnPic7XG4gIHRva2VuLm1hcCAgICA9IGxpbmVzID0gWyBzdGFydExpbmUsIDAgXTtcblxuICBzdGF0ZS5tZC5ibG9jay50b2tlbml6ZShzdGF0ZSwgc3RhcnRMaW5lLCBuZXh0TGluZSk7XG5cbiAgdG9rZW4gICAgICAgID0gc3RhdGUucHVzaCgnYmxvY2txdW90ZV9jbG9zZScsICdibG9ja3F1b3RlJywgLTEpO1xuICB0b2tlbi5tYXJrdXAgPSAnPic7XG5cbiAgc3RhdGUubGluZU1heCA9IG9sZExpbmVNYXg7XG4gIHN0YXRlLnBhcmVudFR5cGUgPSBvbGRQYXJlbnRUeXBlO1xuICBsaW5lc1sxXSA9IHN0YXRlLmxpbmU7XG5cbiAgLy8gUmVzdG9yZSBvcmlnaW5hbCB0U2hpZnQ7IHRoaXMgbWlnaHQgbm90IGJlIG5lY2Vzc2FyeSBzaW5jZSB0aGUgcGFyc2VyXG4gIC8vIGhhcyBhbHJlYWR5IGJlZW4gaGVyZSwgYnV0IGp1c3QgdG8gbWFrZSBzdXJlIHdlIGNhbiBkbyB0aGF0LlxuICBmb3IgKGkgPSAwOyBpIDwgb2xkVFNoaWZ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgc3RhdGUuYk1hcmtzW2kgKyBzdGFydExpbmVdID0gb2xkQk1hcmtzW2ldO1xuICAgIHN0YXRlLnRTaGlmdFtpICsgc3RhcnRMaW5lXSA9IG9sZFRTaGlmdFtpXTtcbiAgICBzdGF0ZS5zQ291bnRbaSArIHN0YXJ0TGluZV0gPSBvbGRTQ291bnRbaV07XG4gICAgc3RhdGUuYnNDb3VudFtpICsgc3RhcnRMaW5lXSA9IG9sZEJTQ291bnRbaV07XG4gIH1cbiAgc3RhdGUuYmxrSW5kZW50ID0gb2xkSW5kZW50O1xuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsICIvLyBIb3Jpem9udGFsIHJ1bGVcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBocihzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgdmFyIG1hcmtlciwgY250LCBjaCwgdG9rZW4sXG4gICAgICBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLFxuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV07XG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbWFya2VyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspO1xuXG4gIC8vIENoZWNrIGhyIG1hcmtlclxuICBpZiAobWFya2VyICE9PSAweDJBLyogKiAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDJELyogLSAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDVGLyogXyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIG1hcmtlcnMgY2FuIGJlIG1peGVkIHdpdGggc3BhY2VzLCBidXQgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgb2YgdGhlbVxuXG4gIGNudCA9IDE7XG4gIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcbiAgICBpZiAoY2ggIT09IG1hcmtlciAmJiAhaXNTcGFjZShjaCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgaWYgKGNoID09PSBtYXJrZXIpIHsgY250Kys7IH1cbiAgfVxuXG4gIGlmIChjbnQgPCAzKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIHRydWU7IH1cblxuICBzdGF0ZS5saW5lID0gc3RhcnRMaW5lICsgMTtcblxuICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdocicsICdocicsIDApO1xuICB0b2tlbi5tYXAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuICB0b2tlbi5tYXJrdXAgPSBBcnJheShjbnQgKyAxKS5qb2luKFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKSk7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwgIi8vIExpc3RzXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGlzU3BhY2UgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbi8vIFNlYXJjaCBgWy0rKl1bXFxuIF1gLCByZXR1cm5zIG5leHQgcG9zIGFmdGVyIG1hcmtlciBvbiBzdWNjZXNzXG4vLyBvciAtMSBvbiBmYWlsLlxuZnVuY3Rpb24gc2tpcEJ1bGxldExpc3RNYXJrZXIoc3RhdGUsIHN0YXJ0TGluZSkge1xuICB2YXIgbWFya2VyLCBwb3MsIG1heCwgY2g7XG5cbiAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXTtcbiAgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV07XG5cbiAgbWFya2VyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspO1xuICAvLyBDaGVjayBidWxsZXRcbiAgaWYgKG1hcmtlciAhPT0gMHgyQS8qICogKi8gJiZcbiAgICAgIG1hcmtlciAhPT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIG1hcmtlciAhPT0gMHgyQi8qICsgKi8pIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBpZiAocG9zIDwgbWF4KSB7XG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgaWYgKCFpc1NwYWNlKGNoKSkge1xuICAgICAgLy8gXCIgLXRlc3QgXCIgLSBpcyBub3QgYSBsaXN0IGl0ZW1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcG9zO1xufVxuXG4vLyBTZWFyY2ggYFxcZCtbLildW1xcbiBdYCwgcmV0dXJucyBuZXh0IHBvcyBhZnRlciBtYXJrZXIgb24gc3VjY2Vzc1xuLy8gb3IgLTEgb24gZmFpbC5cbmZ1bmN0aW9uIHNraXBPcmRlcmVkTGlzdE1hcmtlcihzdGF0ZSwgc3RhcnRMaW5lKSB7XG4gIHZhciBjaCxcbiAgICAgIHN0YXJ0ID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIHBvcyA9IHN0YXJ0LFxuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV07XG5cbiAgLy8gTGlzdCBtYXJrZXIgc2hvdWxkIGhhdmUgYXQgbGVhc3QgMiBjaGFycyAoZGlnaXQgKyBkb3QpXG4gIGlmIChwb3MgKyAxID49IG1heCkgeyByZXR1cm4gLTE7IH1cblxuICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKTtcblxuICBpZiAoY2ggPCAweDMwLyogMCAqLyB8fCBjaCA+IDB4MzkvKiA5ICovKSB7IHJldHVybiAtMTsgfVxuXG4gIGZvciAoOzspIHtcbiAgICAvLyBFT0wgLT4gZmFpbFxuICAgIGlmIChwb3MgPj0gbWF4KSB7IHJldHVybiAtMTsgfVxuXG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MrKyk7XG5cbiAgICBpZiAoY2ggPj0gMHgzMC8qIDAgKi8gJiYgY2ggPD0gMHgzOS8qIDkgKi8pIHtcblxuICAgICAgLy8gTGlzdCBtYXJrZXIgc2hvdWxkIGhhdmUgbm8gbW9yZSB0aGFuIDkgZGlnaXRzXG4gICAgICAvLyAocHJldmVudHMgaW50ZWdlciBvdmVyZmxvdyBpbiBicm93c2VycylcbiAgICAgIGlmIChwb3MgLSBzdGFydCA+PSAxMCkgeyByZXR1cm4gLTE7IH1cblxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLy8gZm91bmQgdmFsaWQgbWFya2VyXG4gICAgaWYgKGNoID09PSAweDI5LyogKSAqLyB8fCBjaCA9PT0gMHgyZS8qIC4gKi8pIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiAtMTtcbiAgfVxuXG5cbiAgaWYgKHBvcyA8IG1heCkge1xuICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICAgIGlmICghaXNTcGFjZShjaCkpIHtcbiAgICAgIC8vIFwiIDEudGVzdCBcIiAtIGlzIG5vdCBhIGxpc3QgaXRlbVxuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcG9zO1xufVxuXG5mdW5jdGlvbiBtYXJrVGlnaHRQYXJhZ3JhcGhzKHN0YXRlLCBpZHgpIHtcbiAgdmFyIGksIGwsXG4gICAgICBsZXZlbCA9IHN0YXRlLmxldmVsICsgMjtcblxuICBmb3IgKGkgPSBpZHggKyAyLCBsID0gc3RhdGUudG9rZW5zLmxlbmd0aCAtIDI7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoc3RhdGUudG9rZW5zW2ldLmxldmVsID09PSBsZXZlbCAmJiBzdGF0ZS50b2tlbnNbaV0udHlwZSA9PT0gJ3BhcmFncmFwaF9vcGVuJykge1xuICAgICAgc3RhdGUudG9rZW5zW2kgKyAyXS5oaWRkZW4gPSB0cnVlO1xuICAgICAgc3RhdGUudG9rZW5zW2ldLmhpZGRlbiA9IHRydWU7XG4gICAgICBpICs9IDI7XG4gICAgfVxuICB9XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBsaXN0KHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICB2YXIgY2gsXG4gICAgICBjb250ZW50U3RhcnQsXG4gICAgICBpLFxuICAgICAgaW5kZW50LFxuICAgICAgaW5kZW50QWZ0ZXJNYXJrZXIsXG4gICAgICBpbml0aWFsLFxuICAgICAgaXNPcmRlcmVkLFxuICAgICAgaXRlbUxpbmVzLFxuICAgICAgbCxcbiAgICAgIGxpc3RMaW5lcyxcbiAgICAgIGxpc3RUb2tJZHgsXG4gICAgICBtYXJrZXJDaGFyQ29kZSxcbiAgICAgIG1hcmtlclZhbHVlLFxuICAgICAgbWF4LFxuICAgICAgbmV4dExpbmUsXG4gICAgICBvZmZzZXQsXG4gICAgICBvbGRMaXN0SW5kZW50LFxuICAgICAgb2xkUGFyZW50VHlwZSxcbiAgICAgIG9sZFNDb3VudCxcbiAgICAgIG9sZFRTaGlmdCxcbiAgICAgIG9sZFRpZ2h0LFxuICAgICAgcG9zLFxuICAgICAgcG9zQWZ0ZXJNYXJrZXIsXG4gICAgICBwcmV2RW1wdHlFbmQsXG4gICAgICBzdGFydCxcbiAgICAgIHRlcm1pbmF0ZSxcbiAgICAgIHRlcm1pbmF0b3JSdWxlcyxcbiAgICAgIHRva2VuLFxuICAgICAgaXNUZXJtaW5hdGluZ1BhcmFncmFwaCA9IGZhbHNlLFxuICAgICAgdGlnaHQgPSB0cnVlO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIFNwZWNpYWwgY2FzZTpcbiAgLy8gIC0gaXRlbSAxXG4gIC8vICAgLSBpdGVtIDJcbiAgLy8gICAgLSBpdGVtIDNcbiAgLy8gICAgIC0gaXRlbSA0XG4gIC8vICAgICAgLSB0aGlzIG9uZSBpcyBhIHBhcmFncmFwaCBjb250aW51YXRpb25cbiAgaWYgKHN0YXRlLmxpc3RJbmRlbnQgPj0gMCAmJlxuICAgICAgc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5saXN0SW5kZW50ID49IDQgJiZcbiAgICAgIHN0YXRlLnNDb3VudFtzdGFydExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gbGltaXQgY29uZGl0aW9ucyB3aGVuIGxpc3QgY2FuIGludGVycnVwdFxuICAvLyBhIHBhcmFncmFwaCAodmFsaWRhdGlvbiBtb2RlIG9ubHkpXG4gIGlmIChzaWxlbnQgJiYgc3RhdGUucGFyZW50VHlwZSA9PT0gJ3BhcmFncmFwaCcpIHtcbiAgICAvLyBOZXh0IGxpc3QgaXRlbSBzaG91bGQgc3RpbGwgdGVybWluYXRlIHByZXZpb3VzIGxpc3QgaXRlbTtcbiAgICAvL1xuICAgIC8vIFRoaXMgY29kZSBjYW4gZmFpbCBpZiBwbHVnaW5zIHVzZSBibGtJbmRlbnQgYXMgd2VsbCBhcyBsaXN0cyxcbiAgICAvLyBidXQgSSBob3BlIHRoZSBzcGVjIGdldHMgZml4ZWQgbG9uZyBiZWZvcmUgdGhhdCBoYXBwZW5zLlxuICAgIC8vXG4gICAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdID49IHN0YXRlLmJsa0luZGVudCkge1xuICAgICAgaXNUZXJtaW5hdGluZ1BhcmFncmFwaCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gRGV0ZWN0IGxpc3QgdHlwZSBhbmQgcG9zaXRpb24gYWZ0ZXIgbWFya2VyXG4gIGlmICgocG9zQWZ0ZXJNYXJrZXIgPSBza2lwT3JkZXJlZExpc3RNYXJrZXIoc3RhdGUsIHN0YXJ0TGluZSkpID49IDApIHtcbiAgICBpc09yZGVyZWQgPSB0cnVlO1xuICAgIHN0YXJ0ID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXTtcbiAgICBtYXJrZXJWYWx1ZSA9IE51bWJlcihzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIHBvc0FmdGVyTWFya2VyIC0gMSkpO1xuXG4gICAgLy8gSWYgd2UncmUgc3RhcnRpbmcgYSBuZXcgb3JkZXJlZCBsaXN0IHJpZ2h0IGFmdGVyXG4gICAgLy8gYSBwYXJhZ3JhcGgsIGl0IHNob3VsZCBzdGFydCB3aXRoIDEuXG4gICAgaWYgKGlzVGVybWluYXRpbmdQYXJhZ3JhcGggJiYgbWFya2VyVmFsdWUgIT09IDEpIHJldHVybiBmYWxzZTtcblxuICB9IGVsc2UgaWYgKChwb3NBZnRlck1hcmtlciA9IHNraXBCdWxsZXRMaXN0TWFya2VyKHN0YXRlLCBzdGFydExpbmUpKSA+PSAwKSB7XG4gICAgaXNPcmRlcmVkID0gZmFsc2U7XG5cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBJZiB3ZSdyZSBzdGFydGluZyBhIG5ldyB1bm9yZGVyZWQgbGlzdCByaWdodCBhZnRlclxuICAvLyBhIHBhcmFncmFwaCwgZmlyc3QgbGluZSBzaG91bGQgbm90IGJlIGVtcHR5LlxuICBpZiAoaXNUZXJtaW5hdGluZ1BhcmFncmFwaCkge1xuICAgIGlmIChzdGF0ZS5za2lwU3BhY2VzKHBvc0FmdGVyTWFya2VyKSA+PSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXSkgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gV2Ugc2hvdWxkIHRlcm1pbmF0ZSBsaXN0IG9uIHN0eWxlIGNoYW5nZS4gUmVtZW1iZXIgZmlyc3Qgb25lIHRvIGNvbXBhcmUuXG4gIG1hcmtlckNoYXJDb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zQWZ0ZXJNYXJrZXIgLSAxKTtcblxuICAvLyBGb3IgdmFsaWRhdGlvbiBtb2RlIHdlIGNhbiB0ZXJtaW5hdGUgaW1tZWRpYXRlbHlcbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZTsgfVxuXG4gIC8vIFN0YXJ0IGxpc3RcbiAgbGlzdFRva0lkeCA9IHN0YXRlLnRva2Vucy5sZW5ndGg7XG5cbiAgaWYgKGlzT3JkZXJlZCkge1xuICAgIHRva2VuICAgICAgID0gc3RhdGUucHVzaCgnb3JkZXJlZF9saXN0X29wZW4nLCAnb2wnLCAxKTtcbiAgICBpZiAobWFya2VyVmFsdWUgIT09IDEpIHtcbiAgICAgIHRva2VuLmF0dHJzID0gWyBbICdzdGFydCcsIG1hcmtlclZhbHVlIF0gXTtcbiAgICB9XG5cbiAgfSBlbHNlIHtcbiAgICB0b2tlbiAgICAgICA9IHN0YXRlLnB1c2goJ2J1bGxldF9saXN0X29wZW4nLCAndWwnLCAxKTtcbiAgfVxuXG4gIHRva2VuLm1hcCAgICA9IGxpc3RMaW5lcyA9IFsgc3RhcnRMaW5lLCAwIF07XG4gIHRva2VuLm1hcmt1cCA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyQ2hhckNvZGUpO1xuXG4gIC8vXG4gIC8vIEl0ZXJhdGUgbGlzdCBpdGVtc1xuICAvL1xuXG4gIG5leHRMaW5lID0gc3RhcnRMaW5lO1xuICBwcmV2RW1wdHlFbmQgPSBmYWxzZTtcbiAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoJ2xpc3QnKTtcblxuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9ICdsaXN0JztcblxuICB3aGlsZSAobmV4dExpbmUgPCBlbmRMaW5lKSB7XG4gICAgcG9zID0gcG9zQWZ0ZXJNYXJrZXI7XG4gICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXTtcblxuICAgIGluaXRpYWwgPSBvZmZzZXQgPSBzdGF0ZS5zQ291bnRbbmV4dExpbmVdICsgcG9zQWZ0ZXJNYXJrZXIgLSAoc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSk7XG5cbiAgICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICBvZmZzZXQgKz0gNCAtIChvZmZzZXQgKyBzdGF0ZS5ic0NvdW50W25leHRMaW5lXSkgJSA0O1xuICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyMCkge1xuICAgICAgICBvZmZzZXQrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBwb3MrKztcbiAgICB9XG5cbiAgICBjb250ZW50U3RhcnQgPSBwb3M7XG5cbiAgICBpZiAoY29udGVudFN0YXJ0ID49IG1heCkge1xuICAgICAgLy8gdHJpbW1pbmcgc3BhY2UgaW4gXCItICAgIFxcbiAgM1wiIGNhc2UsIGluZGVudCBpcyAxIGhlcmVcbiAgICAgIGluZGVudEFmdGVyTWFya2VyID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5kZW50QWZ0ZXJNYXJrZXIgPSBvZmZzZXQgLSBpbml0aWFsO1xuICAgIH1cblxuICAgIC8vIElmIHdlIGhhdmUgbW9yZSB0aGFuIDQgc3BhY2VzLCB0aGUgaW5kZW50IGlzIDFcbiAgICAvLyAodGhlIHJlc3QgaXMganVzdCBpbmRlbnRlZCBjb2RlIGJsb2NrKVxuICAgIGlmIChpbmRlbnRBZnRlck1hcmtlciA+IDQpIHsgaW5kZW50QWZ0ZXJNYXJrZXIgPSAxOyB9XG5cbiAgICAvLyBcIiAgLSAgdGVzdFwiXG4gICAgLy8gIF5eXl5eIC0gY2FsY3VsYXRpbmcgdG90YWwgbGVuZ3RoIG9mIHRoaXMgdGhpbmdcbiAgICBpbmRlbnQgPSBpbml0aWFsICsgaW5kZW50QWZ0ZXJNYXJrZXI7XG5cbiAgICAvLyBSdW4gc3VicGFyc2VyICYgd3JpdGUgdG9rZW5zXG4gICAgdG9rZW4gICAgICAgID0gc3RhdGUucHVzaCgnbGlzdF9pdGVtX29wZW4nLCAnbGknLCAxKTtcbiAgICB0b2tlbi5tYXJrdXAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlckNoYXJDb2RlKTtcbiAgICB0b2tlbi5tYXAgICAgPSBpdGVtTGluZXMgPSBbIHN0YXJ0TGluZSwgMCBdO1xuICAgIGlmIChpc09yZGVyZWQpIHtcbiAgICAgIHRva2VuLmluZm8gPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIHBvc0FmdGVyTWFya2VyIC0gMSk7XG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGN1cnJlbnQgc3RhdGUsIHRoZW4gcmVzdG9yZSBpdCBhZnRlciBwYXJzZXIgc3ViY2FsbFxuICAgIG9sZFRpZ2h0ID0gc3RhdGUudGlnaHQ7XG4gICAgb2xkVFNoaWZ0ID0gc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV07XG4gICAgb2xkU0NvdW50ID0gc3RhdGUuc0NvdW50W3N0YXJ0TGluZV07XG5cbiAgICAvLyAgLSBleGFtcGxlIGxpc3RcbiAgICAvLyBeIGxpc3RJbmRlbnQgcG9zaXRpb24gd2lsbCBiZSBoZXJlXG4gICAgLy8gICBeIGJsa0luZGVudCBwb3NpdGlvbiB3aWxsIGJlIGhlcmVcbiAgICAvL1xuICAgIG9sZExpc3RJbmRlbnQgPSBzdGF0ZS5saXN0SW5kZW50O1xuICAgIHN0YXRlLmxpc3RJbmRlbnQgPSBzdGF0ZS5ibGtJbmRlbnQ7XG4gICAgc3RhdGUuYmxrSW5kZW50ID0gaW5kZW50O1xuXG4gICAgc3RhdGUudGlnaHQgPSB0cnVlO1xuICAgIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdID0gY29udGVudFN0YXJ0IC0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV07XG4gICAgc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gPSBvZmZzZXQ7XG5cbiAgICBpZiAoY29udGVudFN0YXJ0ID49IG1heCAmJiBzdGF0ZS5pc0VtcHR5KHN0YXJ0TGluZSArIDEpKSB7XG4gICAgICAvLyB3b3JrYXJvdW5kIGZvciB0aGlzIGNhc2VcbiAgICAgIC8vIChsaXN0IGl0ZW0gaXMgZW1wdHksIGxpc3QgdGVybWluYXRlcyBiZWZvcmUgXCJmb29cIik6XG4gICAgICAvLyB+fn5+fn5+flxuICAgICAgLy8gICAtXG4gICAgICAvL1xuICAgICAgLy8gICAgIGZvb1xuICAgICAgLy8gfn5+fn5+fn5cbiAgICAgIHN0YXRlLmxpbmUgPSBNYXRoLm1pbihzdGF0ZS5saW5lICsgMiwgZW5kTGluZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLm1kLmJsb2NrLnRva2VuaXplKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHRydWUpO1xuICAgIH1cblxuICAgIC8vIElmIGFueSBvZiBsaXN0IGl0ZW0gaXMgdGlnaHQsIG1hcmsgbGlzdCBhcyB0aWdodFxuICAgIGlmICghc3RhdGUudGlnaHQgfHwgcHJldkVtcHR5RW5kKSB7XG4gICAgICB0aWdodCA9IGZhbHNlO1xuICAgIH1cbiAgICAvLyBJdGVtIGJlY29tZSBsb29zZSBpZiBmaW5pc2ggd2l0aCBlbXB0eSBsaW5lLFxuICAgIC8vIGJ1dCB3ZSBzaG91bGQgZmlsdGVyIGxhc3QgZWxlbWVudCwgYmVjYXVzZSBpdCBtZWFucyBsaXN0IGZpbmlzaFxuICAgIHByZXZFbXB0eUVuZCA9IChzdGF0ZS5saW5lIC0gc3RhcnRMaW5lKSA+IDEgJiYgc3RhdGUuaXNFbXB0eShzdGF0ZS5saW5lIC0gMSk7XG5cbiAgICBzdGF0ZS5ibGtJbmRlbnQgPSBzdGF0ZS5saXN0SW5kZW50O1xuICAgIHN0YXRlLmxpc3RJbmRlbnQgPSBvbGRMaXN0SW5kZW50O1xuICAgIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdID0gb2xkVFNoaWZ0O1xuICAgIHN0YXRlLnNDb3VudFtzdGFydExpbmVdID0gb2xkU0NvdW50O1xuICAgIHN0YXRlLnRpZ2h0ID0gb2xkVGlnaHQ7XG5cbiAgICB0b2tlbiAgICAgICAgPSBzdGF0ZS5wdXNoKCdsaXN0X2l0ZW1fY2xvc2UnLCAnbGknLCAtMSk7XG4gICAgdG9rZW4ubWFya3VwID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXJrZXJDaGFyQ29kZSk7XG5cbiAgICBuZXh0TGluZSA9IHN0YXJ0TGluZSA9IHN0YXRlLmxpbmU7XG4gICAgaXRlbUxpbmVzWzFdID0gbmV4dExpbmU7XG4gICAgY29udGVudFN0YXJ0ID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV07XG5cbiAgICBpZiAobmV4dExpbmUgPj0gZW5kTGluZSkgeyBicmVhazsgfVxuXG4gICAgLy9cbiAgICAvLyBUcnkgdG8gY2hlY2sgaWYgbGlzdCBpcyB0ZXJtaW5hdGVkIG9yIGNvbnRpbnVlZC5cbiAgICAvL1xuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7IGJyZWFrOyB9XG5cbiAgICAvLyBpZiBpdCdzIGluZGVudGVkIG1vcmUgdGhhbiAzIHNwYWNlcywgaXQgc2hvdWxkIGJlIGEgY29kZSBibG9ja1xuICAgIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IGJyZWFrOyB9XG5cbiAgICAvLyBmYWlsIGlmIHRlcm1pbmF0aW5nIGJsb2NrIGZvdW5kXG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlcm1pbmF0ZSkgeyBicmVhazsgfVxuXG4gICAgLy8gZmFpbCBpZiBsaXN0IGhhcyBhbm90aGVyIHR5cGVcbiAgICBpZiAoaXNPcmRlcmVkKSB7XG4gICAgICBwb3NBZnRlck1hcmtlciA9IHNraXBPcmRlcmVkTGlzdE1hcmtlcihzdGF0ZSwgbmV4dExpbmUpO1xuICAgICAgaWYgKHBvc0FmdGVyTWFya2VyIDwgMCkgeyBicmVhazsgfVxuICAgICAgc3RhcnQgPSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdICsgc3RhdGUudFNoaWZ0W25leHRMaW5lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcG9zQWZ0ZXJNYXJrZXIgPSBza2lwQnVsbGV0TGlzdE1hcmtlcihzdGF0ZSwgbmV4dExpbmUpO1xuICAgICAgaWYgKHBvc0FmdGVyTWFya2VyIDwgMCkgeyBicmVhazsgfVxuICAgIH1cblxuICAgIGlmIChtYXJrZXJDaGFyQ29kZSAhPT0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zQWZ0ZXJNYXJrZXIgLSAxKSkgeyBicmVhazsgfVxuICB9XG5cbiAgLy8gRmluYWxpemUgbGlzdFxuICBpZiAoaXNPcmRlcmVkKSB7XG4gICAgdG9rZW4gPSBzdGF0ZS5wdXNoKCdvcmRlcmVkX2xpc3RfY2xvc2UnLCAnb2wnLCAtMSk7XG4gIH0gZWxzZSB7XG4gICAgdG9rZW4gPSBzdGF0ZS5wdXNoKCdidWxsZXRfbGlzdF9jbG9zZScsICd1bCcsIC0xKTtcbiAgfVxuICB0b2tlbi5tYXJrdXAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlckNoYXJDb2RlKTtcblxuICBsaXN0TGluZXNbMV0gPSBuZXh0TGluZTtcbiAgc3RhdGUubGluZSA9IG5leHRMaW5lO1xuXG4gIHN0YXRlLnBhcmVudFR5cGUgPSBvbGRQYXJlbnRUeXBlO1xuXG4gIC8vIG1hcmsgcGFyYWdyYXBocyB0aWdodCBpZiBuZWVkZWRcbiAgaWYgKHRpZ2h0KSB7XG4gICAgbWFya1RpZ2h0UGFyYWdyYXBocyhzdGF0ZSwgbGlzdFRva0lkeCk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBub3JtYWxpemVSZWZlcmVuY2UgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLm5vcm1hbGl6ZVJlZmVyZW5jZTtcbnZhciBpc1NwYWNlICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZWZlcmVuY2Uoc3RhdGUsIHN0YXJ0TGluZSwgX2VuZExpbmUsIHNpbGVudCkge1xuICB2YXIgY2gsXG4gICAgICBkZXN0RW5kUG9zLFxuICAgICAgZGVzdEVuZExpbmVObyxcbiAgICAgIGVuZExpbmUsXG4gICAgICBocmVmLFxuICAgICAgaSxcbiAgICAgIGwsXG4gICAgICBsYWJlbCxcbiAgICAgIGxhYmVsRW5kLFxuICAgICAgb2xkUGFyZW50VHlwZSxcbiAgICAgIHJlcyxcbiAgICAgIHN0YXJ0LFxuICAgICAgc3RyLFxuICAgICAgdGVybWluYXRlLFxuICAgICAgdGVybWluYXRvclJ1bGVzLFxuICAgICAgdGl0bGUsXG4gICAgICBsaW5lcyA9IDAsXG4gICAgICBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdLFxuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV0sXG4gICAgICBuZXh0TGluZSA9IHN0YXJ0TGluZSArIDE7XG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IDB4NUIvKiBbICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIFNpbXBsZSBjaGVjayB0byBxdWlja2x5IGludGVycnVwdCBzY2FuIG9uIFtsaW5rXSh1cmwpIGF0IHRoZSBzdGFydCBvZiBsaW5lLlxuICAvLyBDYW4gYmUgdXNlZnVsIG9uIHByYWN0aWNlOiBodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvaXNzdWVzLzU0XG4gIHdoaWxlICgrK3BvcyA8IG1heCkge1xuICAgIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDVEIC8qIF0gKi8gJiZcbiAgICAgICAgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zIC0gMSkgIT09IDB4NUMvKiBcXCAqLykge1xuICAgICAgaWYgKHBvcyArIDEgPT09IG1heCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MgKyAxKSAhPT0gMHgzQS8qIDogKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBlbmRMaW5lID0gc3RhdGUubGluZU1heDtcblxuICAvLyBqdW1wIGxpbmUtYnktbGluZSB1bnRpbCBlbXB0eSBvbmUgb3IgRU9GXG4gIHRlcm1pbmF0b3JSdWxlcyA9IHN0YXRlLm1kLmJsb2NrLnJ1bGVyLmdldFJ1bGVzKCdyZWZlcmVuY2UnKTtcblxuICBvbGRQYXJlbnRUeXBlID0gc3RhdGUucGFyZW50VHlwZTtcbiAgc3RhdGUucGFyZW50VHlwZSA9ICdyZWZlcmVuY2UnO1xuXG4gIGZvciAoOyBuZXh0TGluZSA8IGVuZExpbmUgJiYgIXN0YXRlLmlzRW1wdHkobmV4dExpbmUpOyBuZXh0TGluZSsrKSB7XG4gICAgLy8gdGhpcyB3b3VsZCBiZSBhIGNvZGUgYmxvY2sgbm9ybWFsbHksIGJ1dCBhZnRlciBwYXJhZ3JhcGhcbiAgICAvLyBpdCdzIGNvbnNpZGVyZWQgYSBsYXp5IGNvbnRpbnVhdGlvbiByZWdhcmRsZXNzIG9mIHdoYXQncyB0aGVyZVxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID4gMykgeyBjb250aW51ZTsgfVxuXG4gICAgLy8gcXVpcmsgZm9yIGJsb2NrcXVvdGVzLCB0aGlzIGxpbmUgc2hvdWxkIGFscmVhZHkgYmUgY2hlY2tlZCBieSB0aGF0IHJ1bGVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IDApIHsgY29udGludWU7IH1cblxuICAgIC8vIFNvbWUgdGFncyBjYW4gdGVybWluYXRlIHBhcmFncmFwaCB3aXRob3V0IGVtcHR5IGxpbmUuXG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlcm1pbmF0ZSkgeyBicmVhazsgfVxuICB9XG5cbiAgc3RyID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBuZXh0TGluZSwgc3RhdGUuYmxrSW5kZW50LCBmYWxzZSkudHJpbSgpO1xuICBtYXggPSBzdHIubGVuZ3RoO1xuXG4gIGZvciAocG9zID0gMTsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoY2ggPT09IDB4NUIgLyogWyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4NUQgLyogXSAqLykge1xuICAgICAgbGFiZWxFbmQgPSBwb3M7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDBBIC8qIFxcbiAqLykge1xuICAgICAgbGluZXMrKztcbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDVDIC8qIFxcICovKSB7XG4gICAgICBwb3MrKztcbiAgICAgIGlmIChwb3MgPCBtYXggJiYgc3RyLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgwQSkge1xuICAgICAgICBsaW5lcysrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChsYWJlbEVuZCA8IDAgfHwgc3RyLmNoYXJDb2RlQXQobGFiZWxFbmQgKyAxKSAhPT0gMHgzQS8qIDogKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gW2xhYmVsXTogICBkZXN0aW5hdGlvbiAgICd0aXRsZSdcbiAgLy8gICAgICAgICBeXl4gc2tpcCBvcHRpb25hbCB3aGl0ZXNwYWNlIGhlcmVcbiAgZm9yIChwb3MgPSBsYWJlbEVuZCArIDI7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcyk7XG4gICAgaWYgKGNoID09PSAweDBBKSB7XG4gICAgICBsaW5lcysrO1xuICAgIH0gZWxzZSBpZiAoaXNTcGFjZShjaCkpIHtcbiAgICAgIC8qZXNsaW50IG5vLWVtcHR5OjAqL1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBbbGFiZWxdOiAgIGRlc3RpbmF0aW9uICAgJ3RpdGxlJ1xuICAvLyAgICAgICAgICAgIF5eXl5eXl5eXl5eIHBhcnNlIHRoaXNcbiAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtEZXN0aW5hdGlvbihzdHIsIHBvcywgbWF4KTtcbiAgaWYgKCFyZXMub2spIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaHJlZiA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsocmVzLnN0cik7XG4gIGlmICghc3RhdGUubWQudmFsaWRhdGVMaW5rKGhyZWYpKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIHBvcyA9IHJlcy5wb3M7XG4gIGxpbmVzICs9IHJlcy5saW5lcztcblxuICAvLyBzYXZlIGN1cnNvciBzdGF0ZSwgd2UgY291bGQgcmVxdWlyZSB0byByb2xsYmFjayBsYXRlclxuICBkZXN0RW5kUG9zID0gcG9zO1xuICBkZXN0RW5kTGluZU5vID0gbGluZXM7XG5cbiAgLy8gW2xhYmVsXTogICBkZXN0aW5hdGlvbiAgICd0aXRsZSdcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgIF5eXiBza2lwcGluZyB0aG9zZSBzcGFjZXNcbiAgc3RhcnQgPSBwb3M7XG4gIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgY2ggPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgIGlmIChjaCA9PT0gMHgwQSkge1xuICAgICAgbGluZXMrKztcbiAgICB9IGVsc2UgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAvKmVzbGludCBuby1lbXB0eTowKi9cbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gW2xhYmVsXTogICBkZXN0aW5hdGlvbiAgICd0aXRsZSdcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl4gcGFyc2UgdGhpc1xuICByZXMgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua1RpdGxlKHN0ciwgcG9zLCBtYXgpO1xuICBpZiAocG9zIDwgbWF4ICYmIHN0YXJ0ICE9PSBwb3MgJiYgcmVzLm9rKSB7XG4gICAgdGl0bGUgPSByZXMuc3RyO1xuICAgIHBvcyA9IHJlcy5wb3M7XG4gICAgbGluZXMgKz0gcmVzLmxpbmVzO1xuICB9IGVsc2Uge1xuICAgIHRpdGxlID0gJyc7XG4gICAgcG9zID0gZGVzdEVuZFBvcztcbiAgICBsaW5lcyA9IGRlc3RFbmRMaW5lTm87XG4gIH1cblxuICAvLyBza2lwIHRyYWlsaW5nIHNwYWNlcyB1bnRpbCB0aGUgcmVzdCBvZiB0aGUgbGluZVxuICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgY2ggPSBzdHIuY2hhckNvZGVBdChwb3MpO1xuICAgIGlmICghaXNTcGFjZShjaCkpIHsgYnJlYWs7IH1cbiAgICBwb3MrKztcbiAgfVxuXG4gIGlmIChwb3MgPCBtYXggJiYgc3RyLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgwQSkge1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgLy8gZ2FyYmFnZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIGFmdGVyIHRpdGxlLFxuICAgICAgLy8gYnV0IGl0IGNvdWxkIHN0aWxsIGJlIGEgdmFsaWQgcmVmZXJlbmNlIGlmIHdlIHJvbGwgYmFja1xuICAgICAgdGl0bGUgPSAnJztcbiAgICAgIHBvcyA9IGRlc3RFbmRQb3M7XG4gICAgICBsaW5lcyA9IGRlc3RFbmRMaW5lTm87XG4gICAgICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgaWYgKCFpc1NwYWNlKGNoKSkgeyBicmVhazsgfVxuICAgICAgICBwb3MrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAocG9zIDwgbWF4ICYmIHN0ci5jaGFyQ29kZUF0KHBvcykgIT09IDB4MEEpIHtcbiAgICAvLyBnYXJiYWdlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmVcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBsYWJlbCA9IG5vcm1hbGl6ZVJlZmVyZW5jZShzdHIuc2xpY2UoMSwgbGFiZWxFbmQpKTtcbiAgaWYgKCFsYWJlbCkge1xuICAgIC8vIENvbW1vbk1hcmsgMC4yMCBkaXNhbGxvd3MgZW1wdHkgbGFiZWxzXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gUmVmZXJlbmNlIGNhbiBub3QgdGVybWluYXRlIGFueXRoaW5nLiBUaGlzIGNoZWNrIGlzIGZvciBzYWZldHkgb25seS5cbiAgLyppc3RhbmJ1bCBpZ25vcmUgaWYqL1xuICBpZiAoc2lsZW50KSB7IHJldHVybiB0cnVlOyB9XG5cbiAgaWYgKHR5cGVvZiBzdGF0ZS5lbnYucmVmZXJlbmNlcyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBzdGF0ZS5lbnYucmVmZXJlbmNlcyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygc3RhdGUuZW52LnJlZmVyZW5jZXNbbGFiZWxdID09PSAndW5kZWZpbmVkJykge1xuICAgIHN0YXRlLmVudi5yZWZlcmVuY2VzW2xhYmVsXSA9IHsgdGl0bGU6IHRpdGxlLCBocmVmOiBocmVmIH07XG4gIH1cblxuICBzdGF0ZS5wYXJlbnRUeXBlID0gb2xkUGFyZW50VHlwZTtcblxuICBzdGF0ZS5saW5lID0gc3RhcnRMaW5lICsgbGluZXMgKyAxO1xuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCAiLy8gTGlzdCBvZiB2YWxpZCBodG1sIGJsb2NrcyBuYW1lcywgYWNjb3J0aW5nIHRvIGNvbW1vbm1hcmsgc3BlY1xuLy8gaHR0cDovL2pnbS5naXRodWIuaW8vQ29tbW9uTWFyay9zcGVjLmh0bWwjaHRtbC1ibG9ja3NcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gW1xuICAnYWRkcmVzcycsXG4gICdhcnRpY2xlJyxcbiAgJ2FzaWRlJyxcbiAgJ2Jhc2UnLFxuICAnYmFzZWZvbnQnLFxuICAnYmxvY2txdW90ZScsXG4gICdib2R5JyxcbiAgJ2NhcHRpb24nLFxuICAnY2VudGVyJyxcbiAgJ2NvbCcsXG4gICdjb2xncm91cCcsXG4gICdkZCcsXG4gICdkZXRhaWxzJyxcbiAgJ2RpYWxvZycsXG4gICdkaXInLFxuICAnZGl2JyxcbiAgJ2RsJyxcbiAgJ2R0JyxcbiAgJ2ZpZWxkc2V0JyxcbiAgJ2ZpZ2NhcHRpb24nLFxuICAnZmlndXJlJyxcbiAgJ2Zvb3RlcicsXG4gICdmb3JtJyxcbiAgJ2ZyYW1lJyxcbiAgJ2ZyYW1lc2V0JyxcbiAgJ2gxJyxcbiAgJ2gyJyxcbiAgJ2gzJyxcbiAgJ2g0JyxcbiAgJ2g1JyxcbiAgJ2g2JyxcbiAgJ2hlYWQnLFxuICAnaGVhZGVyJyxcbiAgJ2hyJyxcbiAgJ2h0bWwnLFxuICAnaWZyYW1lJyxcbiAgJ2xlZ2VuZCcsXG4gICdsaScsXG4gICdsaW5rJyxcbiAgJ21haW4nLFxuICAnbWVudScsXG4gICdtZW51aXRlbScsXG4gICduYXYnLFxuICAnbm9mcmFtZXMnLFxuICAnb2wnLFxuICAnb3B0Z3JvdXAnLFxuICAnb3B0aW9uJyxcbiAgJ3AnLFxuICAncGFyYW0nLFxuICAnc2VjdGlvbicsXG4gICdzb3VyY2UnLFxuICAnc3VtbWFyeScsXG4gICd0YWJsZScsXG4gICd0Ym9keScsXG4gICd0ZCcsXG4gICd0Zm9vdCcsXG4gICd0aCcsXG4gICd0aGVhZCcsXG4gICd0aXRsZScsXG4gICd0cicsXG4gICd0cmFjaycsXG4gICd1bCdcbl07XG4iLCAiLy8gUmVnZXhwcyB0byBtYXRjaCBodG1sIGVsZW1lbnRzXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGF0dHJfbmFtZSAgICAgPSAnW2EtekEtWl86XVthLXpBLVowLTk6Ll8tXSonO1xuXG52YXIgdW5xdW90ZWQgICAgICA9ICdbXlwiXFwnPTw+YFxcXFx4MDAtXFxcXHgyMF0rJztcbnZhciBzaW5nbGVfcXVvdGVkID0gXCInW14nXSonXCI7XG52YXIgZG91YmxlX3F1b3RlZCA9ICdcIlteXCJdKlwiJztcblxudmFyIGF0dHJfdmFsdWUgID0gJyg/OicgKyB1bnF1b3RlZCArICd8JyArIHNpbmdsZV9xdW90ZWQgKyAnfCcgKyBkb3VibGVfcXVvdGVkICsgJyknO1xuXG52YXIgYXR0cmlidXRlICAgPSAnKD86XFxcXHMrJyArIGF0dHJfbmFtZSArICcoPzpcXFxccyo9XFxcXHMqJyArIGF0dHJfdmFsdWUgKyAnKT8pJztcblxudmFyIG9wZW5fdGFnICAgID0gJzxbQS1aYS16XVtBLVphLXowLTlcXFxcLV0qJyArIGF0dHJpYnV0ZSArICcqXFxcXHMqXFxcXC8/Pic7XG5cbnZhciBjbG9zZV90YWcgICA9ICc8XFxcXC9bQS1aYS16XVtBLVphLXowLTlcXFxcLV0qXFxcXHMqPic7XG52YXIgY29tbWVudCAgICAgPSAnPCEtLS0tPnw8IS0tKD86LT9bXj4tXSkoPzotP1teLV0pKi0tPic7XG52YXIgcHJvY2Vzc2luZyAgPSAnPFs/XVtcXFxcc1xcXFxTXSo/Wz9dPic7XG52YXIgZGVjbGFyYXRpb24gPSAnPCFbQS1aXStcXFxccytbXj5dKj4nO1xudmFyIGNkYXRhICAgICAgID0gJzwhXFxcXFtDREFUQVxcXFxbW1xcXFxzXFxcXFNdKj9cXFxcXVxcXFxdPic7XG5cbnZhciBIVE1MX1RBR19SRSA9IG5ldyBSZWdFeHAoJ14oPzonICsgb3Blbl90YWcgKyAnfCcgKyBjbG9zZV90YWcgKyAnfCcgKyBjb21tZW50ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICd8JyArIHByb2Nlc3NpbmcgKyAnfCcgKyBkZWNsYXJhdGlvbiArICd8JyArIGNkYXRhICsgJyknKTtcbnZhciBIVE1MX09QRU5fQ0xPU0VfVEFHX1JFID0gbmV3IFJlZ0V4cCgnXig/OicgKyBvcGVuX3RhZyArICd8JyArIGNsb3NlX3RhZyArICcpJyk7XG5cbm1vZHVsZS5leHBvcnRzLkhUTUxfVEFHX1JFID0gSFRNTF9UQUdfUkU7XG5tb2R1bGUuZXhwb3J0cy5IVE1MX09QRU5fQ0xPU0VfVEFHX1JFID0gSFRNTF9PUEVOX0NMT1NFX1RBR19SRTtcbiIsICIvLyBIVE1MIGJsb2NrXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgYmxvY2tfbmFtZXMgPSByZXF1aXJlKCcuLi9jb21tb24vaHRtbF9ibG9ja3MnKTtcbnZhciBIVE1MX09QRU5fQ0xPU0VfVEFHX1JFID0gcmVxdWlyZSgnLi4vY29tbW9uL2h0bWxfcmUnKS5IVE1MX09QRU5fQ0xPU0VfVEFHX1JFO1xuXG4vLyBBbiBhcnJheSBvZiBvcGVuaW5nIGFuZCBjb3JyZXNwb25kaW5nIGNsb3Npbmcgc2VxdWVuY2VzIGZvciBodG1sIHRhZ3MsXG4vLyBsYXN0IGFyZ3VtZW50IGRlZmluZXMgd2hldGhlciBpdCBjYW4gdGVybWluYXRlIGEgcGFyYWdyYXBoIG9yIG5vdFxuLy9cbnZhciBIVE1MX1NFUVVFTkNFUyA9IFtcbiAgWyAvXjwoc2NyaXB0fHByZXxzdHlsZXx0ZXh0YXJlYSkoPz0oXFxzfD58JCkpL2ksIC88XFwvKHNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpPi9pLCB0cnVlIF0sXG4gIFsgL148IS0tLywgICAgICAgIC8tLT4vLCAgIHRydWUgXSxcbiAgWyAvXjxcXD8vLCAgICAgICAgIC9cXD8+LywgICB0cnVlIF0sXG4gIFsgL148IVtBLVpdLywgICAgIC8+LywgICAgIHRydWUgXSxcbiAgWyAvXjwhXFxbQ0RBVEFcXFsvLCAvXFxdXFxdPi8sIHRydWUgXSxcbiAgWyBuZXcgUmVnRXhwKCdePC8/KCcgKyBibG9ja19uYW1lcy5qb2luKCd8JykgKyAnKSg/PShcXFxcc3wvPz58JCkpJywgJ2knKSwgL14kLywgdHJ1ZSBdLFxuICBbIG5ldyBSZWdFeHAoSFRNTF9PUEVOX0NMT1NFX1RBR19SRS5zb3VyY2UgKyAnXFxcXHMqJCcpLCAgL14kLywgZmFsc2UgXVxuXTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGh0bWxfYmxvY2soc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIHZhciBpLCBuZXh0TGluZSwgdG9rZW4sIGxpbmVUZXh0LFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmICghc3RhdGUubWQub3B0aW9ucy5odG1sKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDNDLyogPCAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBsaW5lVGV4dCA9IHN0YXRlLnNyYy5zbGljZShwb3MsIG1heCk7XG5cbiAgZm9yIChpID0gMDsgaSA8IEhUTUxfU0VRVUVOQ0VTLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKEhUTUxfU0VRVUVOQ0VTW2ldWzBdLnRlc3QobGluZVRleHQpKSB7IGJyZWFrOyB9XG4gIH1cblxuICBpZiAoaSA9PT0gSFRNTF9TRVFVRU5DRVMubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGlmIChzaWxlbnQpIHtcbiAgICAvLyB0cnVlIGlmIHRoaXMgc2VxdWVuY2UgY2FuIGJlIGEgdGVybWluYXRvciwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgcmV0dXJuIEhUTUxfU0VRVUVOQ0VTW2ldWzJdO1xuICB9XG5cbiAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxO1xuXG4gIC8vIElmIHdlIGFyZSBoZXJlIC0gd2UgZGV0ZWN0ZWQgSFRNTCBibG9jay5cbiAgLy8gTGV0J3Mgcm9sbCBkb3duIHRpbGwgYmxvY2sgZW5kLlxuICBpZiAoIUhUTUxfU0VRVUVOQ0VTW2ldWzFdLnRlc3QobGluZVRleHQpKSB7XG4gICAgZm9yICg7IG5leHRMaW5lIDwgZW5kTGluZTsgbmV4dExpbmUrKykge1xuICAgICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHsgYnJlYWs7IH1cblxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV07XG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdO1xuICAgICAgbGluZVRleHQgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpO1xuXG4gICAgICBpZiAoSFRNTF9TRVFVRU5DRVNbaV1bMV0udGVzdChsaW5lVGV4dCkpIHtcbiAgICAgICAgaWYgKGxpbmVUZXh0Lmxlbmd0aCAhPT0gMCkgeyBuZXh0TGluZSsrOyB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmxpbmUgPSBuZXh0TGluZTtcblxuICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnaHRtbF9ibG9jaycsICcnLCAwKTtcbiAgdG9rZW4ubWFwICAgICA9IFsgc3RhcnRMaW5lLCBuZXh0TGluZSBdO1xuICB0b2tlbi5jb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBuZXh0TGluZSwgc3RhdGUuYmxrSW5kZW50LCB0cnVlKTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCAiLy8gaGVhZGluZyAoIywgIyMsIC4uLilcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBoZWFkaW5nKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICB2YXIgY2gsIGxldmVsLCB0bXAsIHRva2VuLFxuICAgICAgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXSxcbiAgICAgIG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIGNoICA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgaWYgKGNoICE9PSAweDIzLyogIyAqLyB8fCBwb3MgPj0gbWF4KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIGNvdW50IGhlYWRpbmcgbGV2ZWxcbiAgbGV2ZWwgPSAxO1xuICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KCsrcG9zKTtcbiAgd2hpbGUgKGNoID09PSAweDIzLyogIyAqLyAmJiBwb3MgPCBtYXggJiYgbGV2ZWwgPD0gNikge1xuICAgIGxldmVsKys7XG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdCgrK3Bvcyk7XG4gIH1cblxuICBpZiAobGV2ZWwgPiA2IHx8IChwb3MgPCBtYXggJiYgIWlzU3BhY2UoY2gpKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoc2lsZW50KSB7IHJldHVybiB0cnVlOyB9XG5cbiAgLy8gTGV0J3MgY3V0IHRhaWxzIGxpa2UgJyAgICAjIyMgICcgZnJvbSB0aGUgZW5kIG9mIHN0cmluZ1xuXG4gIG1heCA9IHN0YXRlLnNraXBTcGFjZXNCYWNrKG1heCwgcG9zKTtcbiAgdG1wID0gc3RhdGUuc2tpcENoYXJzQmFjayhtYXgsIDB4MjMsIHBvcyk7IC8vICNcbiAgaWYgKHRtcCA+IHBvcyAmJiBpc1NwYWNlKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHRtcCAtIDEpKSkge1xuICAgIG1heCA9IHRtcDtcbiAgfVxuXG4gIHN0YXRlLmxpbmUgPSBzdGFydExpbmUgKyAxO1xuXG4gIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfb3BlbicsICdoJyArIFN0cmluZyhsZXZlbCksIDEpO1xuICB0b2tlbi5tYXJrdXAgPSAnIyMjIyMjIyMnLnNsaWNlKDAsIGxldmVsKTtcbiAgdG9rZW4ubWFwICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgXTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ2lubGluZScsICcnLCAwKTtcbiAgdG9rZW4uY29udGVudCAgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpLnRyaW0oKTtcbiAgdG9rZW4ubWFwICAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuICB0b2tlbi5jaGlsZHJlbiA9IFtdO1xuXG4gIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfY2xvc2UnLCAnaCcgKyBTdHJpbmcobGV2ZWwpLCAtMSk7XG4gIHRva2VuLm1hcmt1cCA9ICcjIyMjIyMjIycuc2xpY2UoMCwgbGV2ZWwpO1xuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsICIvLyBsaGVhZGluZyAoLS0tLCA9PT0pXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxoZWFkaW5nKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUvKiwgc2lsZW50Ki8pIHtcbiAgdmFyIGNvbnRlbnQsIHRlcm1pbmF0ZSwgaSwgbCwgdG9rZW4sIHBvcywgbWF4LCBsZXZlbCwgbWFya2VyLFxuICAgICAgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxLCBvbGRQYXJlbnRUeXBlLFxuICAgICAgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoJ3BhcmFncmFwaCcpO1xuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIG9sZFBhcmVudFR5cGUgPSBzdGF0ZS5wYXJlbnRUeXBlO1xuICBzdGF0ZS5wYXJlbnRUeXBlID0gJ3BhcmFncmFwaCc7IC8vIHVzZSBwYXJhZ3JhcGggdG8gbWF0Y2ggdGVybWluYXRvclJ1bGVzXG5cbiAgLy8ganVtcCBsaW5lLWJ5LWxpbmUgdW50aWwgZW1wdHkgb25lIG9yIEVPRlxuICBmb3IgKDsgbmV4dExpbmUgPCBlbmRMaW5lICYmICFzdGF0ZS5pc0VtcHR5KG5leHRMaW5lKTsgbmV4dExpbmUrKykge1xuICAgIC8vIHRoaXMgd291bGQgYmUgYSBjb2RlIGJsb2NrIG5vcm1hbGx5LCBidXQgYWZ0ZXIgcGFyYWdyYXBoXG4gICAgLy8gaXQncyBjb25zaWRlcmVkIGEgbGF6eSBjb250aW51YXRpb24gcmVnYXJkbGVzcyBvZiB3aGF0J3MgdGhlcmVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+IDMpIHsgY29udGludWU7IH1cblxuICAgIC8vXG4gICAgLy8gQ2hlY2sgZm9yIHVuZGVybGluZSBpbiBzZXRleHQgaGVhZGVyXG4gICAgLy9cbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA+PSBzdGF0ZS5ibGtJbmRlbnQpIHtcbiAgICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdO1xuICAgICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXTtcblxuICAgICAgaWYgKHBvcyA8IG1heCkge1xuICAgICAgICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgICAgIGlmIChtYXJrZXIgPT09IDB4MkQvKiAtICovIHx8IG1hcmtlciA9PT0gMHgzRC8qID0gKi8pIHtcbiAgICAgICAgICBwb3MgPSBzdGF0ZS5za2lwQ2hhcnMocG9zLCBtYXJrZXIpO1xuICAgICAgICAgIHBvcyA9IHN0YXRlLnNraXBTcGFjZXMocG9zKTtcblxuICAgICAgICAgIGlmIChwb3MgPj0gbWF4KSB7XG4gICAgICAgICAgICBsZXZlbCA9IChtYXJrZXIgPT09IDB4M0QvKiA9ICovID8gMSA6IDIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcXVpcmsgZm9yIGJsb2NrcXVvdGVzLCB0aGlzIGxpbmUgc2hvdWxkIGFscmVhZHkgYmUgY2hlY2tlZCBieSB0aGF0IHJ1bGVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IDApIHsgY29udGludWU7IH1cblxuICAgIC8vIFNvbWUgdGFncyBjYW4gdGVybWluYXRlIHBhcmFncmFwaCB3aXRob3V0IGVtcHR5IGxpbmUuXG4gICAgdGVybWluYXRlID0gZmFsc2U7XG4gICAgZm9yIChpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlcm1pbmF0ZSkgeyBicmVhazsgfVxuICB9XG5cbiAgaWYgKCFsZXZlbCkge1xuICAgIC8vIERpZG4ndCBmaW5kIHZhbGlkIHVuZGVybGluZVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUsIG5leHRMaW5lLCBzdGF0ZS5ibGtJbmRlbnQsIGZhbHNlKS50cmltKCk7XG5cbiAgc3RhdGUubGluZSA9IG5leHRMaW5lICsgMTtcblxuICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfb3BlbicsICdoJyArIFN0cmluZyhsZXZlbCksIDEpO1xuICB0b2tlbi5tYXJrdXAgICA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKTtcbiAgdG9rZW4ubWFwICAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuXG4gIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgnaW5saW5lJywgJycsIDApO1xuICB0b2tlbi5jb250ZW50ICA9IGNvbnRlbnQ7XG4gIHRva2VuLm1hcCAgICAgID0gWyBzdGFydExpbmUsIHN0YXRlLmxpbmUgLSAxIF07XG4gIHRva2VuLmNoaWxkcmVuID0gW107XG5cbiAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCdoZWFkaW5nX2Nsb3NlJywgJ2gnICsgU3RyaW5nKGxldmVsKSwgLTEpO1xuICB0b2tlbi5tYXJrdXAgICA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKTtcblxuICBzdGF0ZS5wYXJlbnRUeXBlID0gb2xkUGFyZW50VHlwZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCAiLy8gUGFyYWdyYXBoXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcmFncmFwaChzdGF0ZSwgc3RhcnRMaW5lLyosIGVuZExpbmUqLykge1xuICB2YXIgY29udGVudCwgdGVybWluYXRlLCBpLCBsLCB0b2tlbiwgb2xkUGFyZW50VHlwZSxcbiAgICAgIG5leHRMaW5lID0gc3RhcnRMaW5lICsgMSxcbiAgICAgIHRlcm1pbmF0b3JSdWxlcyA9IHN0YXRlLm1kLmJsb2NrLnJ1bGVyLmdldFJ1bGVzKCdwYXJhZ3JhcGgnKSxcbiAgICAgIGVuZExpbmUgPSBzdGF0ZS5saW5lTWF4O1xuXG4gIG9sZFBhcmVudFR5cGUgPSBzdGF0ZS5wYXJlbnRUeXBlO1xuICBzdGF0ZS5wYXJlbnRUeXBlID0gJ3BhcmFncmFwaCc7XG5cbiAgLy8ganVtcCBsaW5lLWJ5LWxpbmUgdW50aWwgZW1wdHkgb25lIG9yIEVPRlxuICBmb3IgKDsgbmV4dExpbmUgPCBlbmRMaW5lICYmICFzdGF0ZS5pc0VtcHR5KG5leHRMaW5lKTsgbmV4dExpbmUrKykge1xuICAgIC8vIHRoaXMgd291bGQgYmUgYSBjb2RlIGJsb2NrIG5vcm1hbGx5LCBidXQgYWZ0ZXIgcGFyYWdyYXBoXG4gICAgLy8gaXQncyBjb25zaWRlcmVkIGEgbGF6eSBjb250aW51YXRpb24gcmVnYXJkbGVzcyBvZiB3aGF0J3MgdGhlcmVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+IDMpIHsgY29udGludWU7IH1cblxuICAgIC8vIHF1aXJrIGZvciBibG9ja3F1b3RlcywgdGhpcyBsaW5lIHNob3VsZCBhbHJlYWR5IGJlIGNoZWNrZWQgYnkgdGhhdCBydWxlXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCAwKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAvLyBTb21lIHRhZ3MgY2FuIHRlcm1pbmF0ZSBwYXJhZ3JhcGggd2l0aG91dCBlbXB0eSBsaW5lLlxuICAgIHRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIGZvciAoaSA9IDAsIGwgPSB0ZXJtaW5hdG9yUnVsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAodGVybWluYXRvclJ1bGVzW2ldKHN0YXRlLCBuZXh0TGluZSwgZW5kTGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgdGVybWluYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0ZXJtaW5hdGUpIHsgYnJlYWs7IH1cbiAgfVxuXG4gIGNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUsIG5leHRMaW5lLCBzdGF0ZS5ibGtJbmRlbnQsIGZhbHNlKS50cmltKCk7XG5cbiAgc3RhdGUubGluZSA9IG5leHRMaW5lO1xuXG4gIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgncGFyYWdyYXBoX29wZW4nLCAncCcsIDEpO1xuICB0b2tlbi5tYXAgICAgICA9IFsgc3RhcnRMaW5lLCBzdGF0ZS5saW5lIF07XG5cbiAgdG9rZW4gICAgICAgICAgPSBzdGF0ZS5wdXNoKCdpbmxpbmUnLCAnJywgMCk7XG4gIHRva2VuLmNvbnRlbnQgID0gY29udGVudDtcbiAgdG9rZW4ubWFwICAgICAgPSBbIHN0YXJ0TGluZSwgc3RhdGUubGluZSBdO1xuICB0b2tlbi5jaGlsZHJlbiA9IFtdO1xuXG4gIHRva2VuICAgICAgICAgID0gc3RhdGUucHVzaCgncGFyYWdyYXBoX2Nsb3NlJywgJ3AnLCAtMSk7XG5cbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGU7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwgIi8vIFBhcnNlciBzdGF0ZSBjbGFzc1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBUb2tlbiA9IHJlcXVpcmUoJy4uL3Rva2VuJyk7XG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxuZnVuY3Rpb24gU3RhdGVCbG9jayhzcmMsIG1kLCBlbnYsIHRva2Vucykge1xuICB2YXIgY2gsIHMsIHN0YXJ0LCBwb3MsIGxlbiwgaW5kZW50LCBvZmZzZXQsIGluZGVudF9mb3VuZDtcblxuICB0aGlzLnNyYyA9IHNyYztcblxuICAvLyBsaW5rIHRvIHBhcnNlciBpbnN0YW5jZVxuICB0aGlzLm1kICAgICA9IG1kO1xuXG4gIHRoaXMuZW52ID0gZW52O1xuXG4gIC8vXG4gIC8vIEludGVybmFsIHN0YXRlIHZhcnRpYWJsZXNcbiAgLy9cblxuICB0aGlzLnRva2VucyA9IHRva2VucztcblxuICB0aGlzLmJNYXJrcyA9IFtdOyAgLy8gbGluZSBiZWdpbiBvZmZzZXRzIGZvciBmYXN0IGp1bXBzXG4gIHRoaXMuZU1hcmtzID0gW107ICAvLyBsaW5lIGVuZCBvZmZzZXRzIGZvciBmYXN0IGp1bXBzXG4gIHRoaXMudFNoaWZ0ID0gW107ICAvLyBvZmZzZXRzIG9mIHRoZSBmaXJzdCBub24tc3BhY2UgY2hhcmFjdGVycyAodGFicyBub3QgZXhwYW5kZWQpXG4gIHRoaXMuc0NvdW50ID0gW107ICAvLyBpbmRlbnRzIGZvciBlYWNoIGxpbmUgKHRhYnMgZXhwYW5kZWQpXG5cbiAgLy8gQW4gYW1vdW50IG9mIHZpcnR1YWwgc3BhY2VzICh0YWJzIGV4cGFuZGVkKSBiZXR3ZWVuIGJlZ2lubmluZ1xuICAvLyBvZiBlYWNoIGxpbmUgKGJNYXJrcykgYW5kIHJlYWwgYmVnaW5uaW5nIG9mIHRoYXQgbGluZS5cbiAgLy9cbiAgLy8gSXQgZXhpc3RzIG9ubHkgYXMgYSBoYWNrIGJlY2F1c2UgYmxvY2txdW90ZXMgb3ZlcnJpZGUgYk1hcmtzXG4gIC8vIGxvc2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgcHJvY2Vzcy5cbiAgLy9cbiAgLy8gSXQncyB1c2VkIG9ubHkgd2hlbiBleHBhbmRpbmcgdGFicywgeW91IGNhbiB0aGluayBhYm91dCBpdCBhc1xuICAvLyBhbiBpbml0aWFsIHRhYiBsZW5ndGgsIGUuZy4gYnNDb3VudD0yMSBhcHBsaWVkIHRvIHN0cmluZyBgXFx0MTIzYFxuICAvLyBtZWFucyBmaXJzdCB0YWIgc2hvdWxkIGJlIGV4cGFuZGVkIHRvIDQtMjElNCA9PT0gMyBzcGFjZXMuXG4gIC8vXG4gIHRoaXMuYnNDb3VudCA9IFtdO1xuXG4gIC8vIGJsb2NrIHBhcnNlciB2YXJpYWJsZXNcbiAgdGhpcy5ibGtJbmRlbnQgID0gMDsgLy8gcmVxdWlyZWQgYmxvY2sgY29udGVudCBpbmRlbnQgKGZvciBleGFtcGxlLCBpZiB3ZSBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5zaWRlIGEgbGlzdCwgaXQgd291bGQgYmUgcG9zaXRpb25lZCBhZnRlciBsaXN0IG1hcmtlcilcbiAgdGhpcy5saW5lICAgICAgID0gMDsgLy8gbGluZSBpbmRleCBpbiBzcmNcbiAgdGhpcy5saW5lTWF4ICAgID0gMDsgLy8gbGluZXMgY291bnRcbiAgdGhpcy50aWdodCAgICAgID0gZmFsc2U7ICAvLyBsb29zZS90aWdodCBtb2RlIGZvciBsaXN0c1xuICB0aGlzLmRkSW5kZW50ICAgPSAtMTsgLy8gaW5kZW50IG9mIHRoZSBjdXJyZW50IGRkIGJsb2NrICgtMSBpZiB0aGVyZSBpc24ndCBhbnkpXG4gIHRoaXMubGlzdEluZGVudCA9IC0xOyAvLyBpbmRlbnQgb2YgdGhlIGN1cnJlbnQgbGlzdCBibG9jayAoLTEgaWYgdGhlcmUgaXNuJ3QgYW55KVxuXG4gIC8vIGNhbiBiZSAnYmxvY2txdW90ZScsICdsaXN0JywgJ3Jvb3QnLCAncGFyYWdyYXBoJyBvciAncmVmZXJlbmNlJ1xuICAvLyB1c2VkIGluIGxpc3RzIHRvIGRldGVybWluZSBpZiB0aGV5IGludGVycnVwdCBhIHBhcmFncmFwaFxuICB0aGlzLnBhcmVudFR5cGUgPSAncm9vdCc7XG5cbiAgdGhpcy5sZXZlbCA9IDA7XG5cbiAgLy8gcmVuZGVyZXJcbiAgdGhpcy5yZXN1bHQgPSAnJztcblxuICAvLyBDcmVhdGUgY2FjaGVzXG4gIC8vIEdlbmVyYXRlIG1hcmtlcnMuXG4gIHMgPSB0aGlzLnNyYztcbiAgaW5kZW50X2ZvdW5kID0gZmFsc2U7XG5cbiAgZm9yIChzdGFydCA9IHBvcyA9IGluZGVudCA9IG9mZnNldCA9IDAsIGxlbiA9IHMubGVuZ3RoOyBwb3MgPCBsZW47IHBvcysrKSB7XG4gICAgY2ggPSBzLmNoYXJDb2RlQXQocG9zKTtcblxuICAgIGlmICghaW5kZW50X2ZvdW5kKSB7XG4gICAgICBpZiAoaXNTcGFjZShjaCkpIHtcbiAgICAgICAgaW5kZW50Kys7XG5cbiAgICAgICAgaWYgKGNoID09PSAweDA5KSB7XG4gICAgICAgICAgb2Zmc2V0ICs9IDQgLSBvZmZzZXQgJSA0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZnNldCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5kZW50X2ZvdW5kID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2ggPT09IDB4MEEgfHwgcG9zID09PSBsZW4gLSAxKSB7XG4gICAgICBpZiAoY2ggIT09IDB4MEEpIHsgcG9zKys7IH1cbiAgICAgIHRoaXMuYk1hcmtzLnB1c2goc3RhcnQpO1xuICAgICAgdGhpcy5lTWFya3MucHVzaChwb3MpO1xuICAgICAgdGhpcy50U2hpZnQucHVzaChpbmRlbnQpO1xuICAgICAgdGhpcy5zQ291bnQucHVzaChvZmZzZXQpO1xuICAgICAgdGhpcy5ic0NvdW50LnB1c2goMCk7XG5cbiAgICAgIGluZGVudF9mb3VuZCA9IGZhbHNlO1xuICAgICAgaW5kZW50ID0gMDtcbiAgICAgIG9mZnNldCA9IDA7XG4gICAgICBzdGFydCA9IHBvcyArIDE7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVzaCBmYWtlIGVudHJ5IHRvIHNpbXBsaWZ5IGNhY2hlIGJvdW5kcyBjaGVja3NcbiAgdGhpcy5iTWFya3MucHVzaChzLmxlbmd0aCk7XG4gIHRoaXMuZU1hcmtzLnB1c2gocy5sZW5ndGgpO1xuICB0aGlzLnRTaGlmdC5wdXNoKDApO1xuICB0aGlzLnNDb3VudC5wdXNoKDApO1xuICB0aGlzLmJzQ291bnQucHVzaCgwKTtcblxuICB0aGlzLmxpbmVNYXggPSB0aGlzLmJNYXJrcy5sZW5ndGggLSAxOyAvLyBkb24ndCBjb3VudCBsYXN0IGZha2UgbGluZVxufVxuXG4vLyBQdXNoIG5ldyB0b2tlbiB0byBcInN0cmVhbVwiLlxuLy9cblN0YXRlQmxvY2sucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAodHlwZSwgdGFnLCBuZXN0aW5nKSB7XG4gIHZhciB0b2tlbiA9IG5ldyBUb2tlbih0eXBlLCB0YWcsIG5lc3RpbmcpO1xuICB0b2tlbi5ibG9jayA9IHRydWU7XG5cbiAgaWYgKG5lc3RpbmcgPCAwKSB0aGlzLmxldmVsLS07IC8vIGNsb3NpbmcgdGFnXG4gIHRva2VuLmxldmVsID0gdGhpcy5sZXZlbDtcbiAgaWYgKG5lc3RpbmcgPiAwKSB0aGlzLmxldmVsKys7IC8vIG9wZW5pbmcgdGFnXG5cbiAgdGhpcy50b2tlbnMucHVzaCh0b2tlbik7XG4gIHJldHVybiB0b2tlbjtcbn07XG5cblN0YXRlQmxvY2sucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiBpc0VtcHR5KGxpbmUpIHtcbiAgcmV0dXJuIHRoaXMuYk1hcmtzW2xpbmVdICsgdGhpcy50U2hpZnRbbGluZV0gPj0gdGhpcy5lTWFya3NbbGluZV07XG59O1xuXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5za2lwRW1wdHlMaW5lcyA9IGZ1bmN0aW9uIHNraXBFbXB0eUxpbmVzKGZyb20pIHtcbiAgZm9yICh2YXIgbWF4ID0gdGhpcy5saW5lTWF4OyBmcm9tIDwgbWF4OyBmcm9tKyspIHtcbiAgICBpZiAodGhpcy5iTWFya3NbZnJvbV0gKyB0aGlzLnRTaGlmdFtmcm9tXSA8IHRoaXMuZU1hcmtzW2Zyb21dKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZyb207XG59O1xuXG4vLyBTa2lwIHNwYWNlcyBmcm9tIGdpdmVuIHBvc2l0aW9uLlxuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcFNwYWNlcyA9IGZ1bmN0aW9uIHNraXBTcGFjZXMocG9zKSB7XG4gIHZhciBjaDtcblxuICBmb3IgKHZhciBtYXggPSB0aGlzLnNyYy5sZW5ndGg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBjaCA9IHRoaXMuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICBpZiAoIWlzU3BhY2UoY2gpKSB7IGJyZWFrOyB9XG4gIH1cbiAgcmV0dXJuIHBvcztcbn07XG5cbi8vIFNraXAgc3BhY2VzIGZyb20gZ2l2ZW4gcG9zaXRpb24gaW4gcmV2ZXJzZS5cblN0YXRlQmxvY2sucHJvdG90eXBlLnNraXBTcGFjZXNCYWNrID0gZnVuY3Rpb24gc2tpcFNwYWNlc0JhY2socG9zLCBtaW4pIHtcbiAgaWYgKHBvcyA8PSBtaW4pIHsgcmV0dXJuIHBvczsgfVxuXG4gIHdoaWxlIChwb3MgPiBtaW4pIHtcbiAgICBpZiAoIWlzU3BhY2UodGhpcy5zcmMuY2hhckNvZGVBdCgtLXBvcykpKSB7IHJldHVybiBwb3MgKyAxOyB9XG4gIH1cbiAgcmV0dXJuIHBvcztcbn07XG5cbi8vIFNraXAgY2hhciBjb2RlcyBmcm9tIGdpdmVuIHBvc2l0aW9uXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5za2lwQ2hhcnMgPSBmdW5jdGlvbiBza2lwQ2hhcnMocG9zLCBjb2RlKSB7XG4gIGZvciAodmFyIG1heCA9IHRoaXMuc3JjLmxlbmd0aDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgIGlmICh0aGlzLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IGNvZGUpIHsgYnJlYWs7IH1cbiAgfVxuICByZXR1cm4gcG9zO1xufTtcblxuLy8gU2tpcCBjaGFyIGNvZGVzIHJldmVyc2UgZnJvbSBnaXZlbiBwb3NpdGlvbiAtIDFcblN0YXRlQmxvY2sucHJvdG90eXBlLnNraXBDaGFyc0JhY2sgPSBmdW5jdGlvbiBza2lwQ2hhcnNCYWNrKHBvcywgY29kZSwgbWluKSB7XG4gIGlmIChwb3MgPD0gbWluKSB7IHJldHVybiBwb3M7IH1cblxuICB3aGlsZSAocG9zID4gbWluKSB7XG4gICAgaWYgKGNvZGUgIT09IHRoaXMuc3JjLmNoYXJDb2RlQXQoLS1wb3MpKSB7IHJldHVybiBwb3MgKyAxOyB9XG4gIH1cbiAgcmV0dXJuIHBvcztcbn07XG5cbi8vIGN1dCBsaW5lcyByYW5nZSBmcm9tIHNvdXJjZS5cblN0YXRlQmxvY2sucHJvdG90eXBlLmdldExpbmVzID0gZnVuY3Rpb24gZ2V0TGluZXMoYmVnaW4sIGVuZCwgaW5kZW50LCBrZWVwTGFzdExGKSB7XG4gIHZhciBpLCBsaW5lSW5kZW50LCBjaCwgZmlyc3QsIGxhc3QsIHF1ZXVlLCBsaW5lU3RhcnQsXG4gICAgICBsaW5lID0gYmVnaW47XG5cbiAgaWYgKGJlZ2luID49IGVuZCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHF1ZXVlID0gbmV3IEFycmF5KGVuZCAtIGJlZ2luKTtcblxuICBmb3IgKGkgPSAwOyBsaW5lIDwgZW5kOyBsaW5lKyssIGkrKykge1xuICAgIGxpbmVJbmRlbnQgPSAwO1xuICAgIGxpbmVTdGFydCA9IGZpcnN0ID0gdGhpcy5iTWFya3NbbGluZV07XG5cbiAgICBpZiAobGluZSArIDEgPCBlbmQgfHwga2VlcExhc3RMRikge1xuICAgICAgLy8gTm8gbmVlZCBmb3IgYm91bmRzIGNoZWNrIGJlY2F1c2Ugd2UgaGF2ZSBmYWtlIGVudHJ5IG9uIHRhaWwuXG4gICAgICBsYXN0ID0gdGhpcy5lTWFya3NbbGluZV0gKyAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0ID0gdGhpcy5lTWFya3NbbGluZV07XG4gICAgfVxuXG4gICAgd2hpbGUgKGZpcnN0IDwgbGFzdCAmJiBsaW5lSW5kZW50IDwgaW5kZW50KSB7XG4gICAgICBjaCA9IHRoaXMuc3JjLmNoYXJDb2RlQXQoZmlyc3QpO1xuXG4gICAgICBpZiAoaXNTcGFjZShjaCkpIHtcbiAgICAgICAgaWYgKGNoID09PSAweDA5KSB7XG4gICAgICAgICAgbGluZUluZGVudCArPSA0IC0gKGxpbmVJbmRlbnQgKyB0aGlzLmJzQ291bnRbbGluZV0pICUgNDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsaW5lSW5kZW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmlyc3QgLSBsaW5lU3RhcnQgPCB0aGlzLnRTaGlmdFtsaW5lXSkge1xuICAgICAgICAvLyBwYXRjaGVkIHRTaGlmdCBtYXNrZWQgY2hhcmFjdGVycyB0byBsb29rIGxpa2Ugc3BhY2VzIChibG9ja3F1b3RlcywgbGlzdCBtYXJrZXJzKVxuICAgICAgICBsaW5lSW5kZW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZmlyc3QrKztcbiAgICB9XG5cbiAgICBpZiAobGluZUluZGVudCA+IGluZGVudCkge1xuICAgICAgLy8gcGFydGlhbGx5IGV4cGFuZGluZyB0YWJzIGluIGNvZGUgYmxvY2tzLCBlLmcgJ1xcdFxcdGZvb2JhcidcbiAgICAgIC8vIHdpdGggaW5kZW50PTIgYmVjb21lcyAnICBcXHRmb29iYXInXG4gICAgICBxdWV1ZVtpXSA9IG5ldyBBcnJheShsaW5lSW5kZW50IC0gaW5kZW50ICsgMSkuam9pbignICcpICsgdGhpcy5zcmMuc2xpY2UoZmlyc3QsIGxhc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWV1ZVtpXSA9IHRoaXMuc3JjLnNsaWNlKGZpcnN0LCBsYXN0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVldWUuam9pbignJyk7XG59O1xuXG4vLyByZS1leHBvcnQgVG9rZW4gY2xhc3MgdG8gdXNlIGluIGJsb2NrIHJ1bGVzXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5Ub2tlbiA9IFRva2VuO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gU3RhdGVCbG9jaztcbiIsICIvKiogaW50ZXJuYWxcbiAqIGNsYXNzIFBhcnNlckJsb2NrXG4gKlxuICogQmxvY2stbGV2ZWwgdG9rZW5pemVyLlxuICoqL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBSdWxlciAgICAgICAgICAgPSByZXF1aXJlKCcuL3J1bGVyJyk7XG5cblxudmFyIF9ydWxlcyA9IFtcbiAgLy8gRmlyc3QgMiBwYXJhbXMgLSBydWxlIG5hbWUgJiBzb3VyY2UuIFNlY29uZGFyeSBhcnJheSAtIGxpc3Qgb2YgcnVsZXMsXG4gIC8vIHdoaWNoIGNhbiBiZSB0ZXJtaW5hdGVkIGJ5IHRoaXMgb25lLlxuICBbICd0YWJsZScsICAgICAgcmVxdWlyZSgnLi9ydWxlc19ibG9jay90YWJsZScpLCAgICAgIFsgJ3BhcmFncmFwaCcsICdyZWZlcmVuY2UnIF0gXSxcbiAgWyAnY29kZScsICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svY29kZScpIF0sXG4gIFsgJ2ZlbmNlJywgICAgICByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL2ZlbmNlJyksICAgICAgWyAncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScsICdibG9ja3F1b3RlJywgJ2xpc3QnIF0gXSxcbiAgWyAnYmxvY2txdW90ZScsIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svYmxvY2txdW90ZScpLCBbICdwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnLCAnbGlzdCcgXSBdLFxuICBbICdocicsICAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19ibG9jay9ocicpLCAgICAgICAgIFsgJ3BhcmFncmFwaCcsICdyZWZlcmVuY2UnLCAnYmxvY2txdW90ZScsICdsaXN0JyBdIF0sXG4gIFsgJ2xpc3QnLCAgICAgICByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL2xpc3QnKSwgICAgICAgWyAncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScsICdibG9ja3F1b3RlJyBdIF0sXG4gIFsgJ3JlZmVyZW5jZScsICByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL3JlZmVyZW5jZScpIF0sXG4gIFsgJ2h0bWxfYmxvY2snLCByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL2h0bWxfYmxvY2snKSwgWyAncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScsICdibG9ja3F1b3RlJyBdIF0sXG4gIFsgJ2hlYWRpbmcnLCAgICByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL2hlYWRpbmcnKSwgICAgWyAncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScsICdibG9ja3F1b3RlJyBdIF0sXG4gIFsgJ2xoZWFkaW5nJywgICByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL2xoZWFkaW5nJykgXSxcbiAgWyAncGFyYWdyYXBoJywgIHJlcXVpcmUoJy4vcnVsZXNfYmxvY2svcGFyYWdyYXBoJykgXVxuXTtcblxuXG4vKipcbiAqIG5ldyBQYXJzZXJCbG9jaygpXG4gKiovXG5mdW5jdGlvbiBQYXJzZXJCbG9jaygpIHtcbiAgLyoqXG4gICAqIFBhcnNlckJsb2NrI3J1bGVyIC0+IFJ1bGVyXG4gICAqXG4gICAqIFtbUnVsZXJdXSBpbnN0YW5jZS4gS2VlcCBjb25maWd1cmF0aW9uIG9mIGJsb2NrIHJ1bGVzLlxuICAgKiovXG4gIHRoaXMucnVsZXIgPSBuZXcgUnVsZXIoKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IF9ydWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMucnVsZXIucHVzaChfcnVsZXNbaV1bMF0sIF9ydWxlc1tpXVsxXSwgeyBhbHQ6IChfcnVsZXNbaV1bMl0gfHwgW10pLnNsaWNlKCkgfSk7XG4gIH1cbn1cblxuXG4vLyBHZW5lcmF0ZSB0b2tlbnMgZm9yIGlucHV0IHJhbmdlXG4vL1xuUGFyc2VyQmxvY2sucHJvdG90eXBlLnRva2VuaXplID0gZnVuY3Rpb24gKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUpIHtcbiAgdmFyIG9rLCBpLFxuICAgICAgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKCcnKSxcbiAgICAgIGxlbiA9IHJ1bGVzLmxlbmd0aCxcbiAgICAgIGxpbmUgPSBzdGFydExpbmUsXG4gICAgICBoYXNFbXB0eUxpbmVzID0gZmFsc2UsXG4gICAgICBtYXhOZXN0aW5nID0gc3RhdGUubWQub3B0aW9ucy5tYXhOZXN0aW5nO1xuXG4gIHdoaWxlIChsaW5lIDwgZW5kTGluZSkge1xuICAgIHN0YXRlLmxpbmUgPSBsaW5lID0gc3RhdGUuc2tpcEVtcHR5TGluZXMobGluZSk7XG4gICAgaWYgKGxpbmUgPj0gZW5kTGluZSkgeyBicmVhazsgfVxuXG4gICAgLy8gVGVybWluYXRpb24gY29uZGl0aW9uIGZvciBuZXN0ZWQgY2FsbHMuXG4gICAgLy8gTmVzdGVkIGNhbGxzIGN1cnJlbnRseSB1c2VkIGZvciBibG9ja3F1b3RlcyAmIGxpc3RzXG4gICAgaWYgKHN0YXRlLnNDb3VudFtsaW5lXSA8IHN0YXRlLmJsa0luZGVudCkgeyBicmVhazsgfVxuXG4gICAgLy8gSWYgbmVzdGluZyBsZXZlbCBleGNlZWRlZCAtIHNraXAgdGFpbCB0byB0aGUgZW5kLiBUaGF0J3Mgbm90IG9yZGluYXJ5XG4gICAgLy8gc2l0dWF0aW9uIGFuZCB3ZSBzaG91bGQgbm90IGNhcmUgYWJvdXQgY29udGVudC5cbiAgICBpZiAoc3RhdGUubGV2ZWwgPj0gbWF4TmVzdGluZykge1xuICAgICAgc3RhdGUubGluZSA9IGVuZExpbmU7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBUcnkgYWxsIHBvc3NpYmxlIHJ1bGVzLlxuICAgIC8vIE9uIHN1Y2Nlc3MsIHJ1bGUgc2hvdWxkOlxuICAgIC8vXG4gICAgLy8gLSB1cGRhdGUgYHN0YXRlLmxpbmVgXG4gICAgLy8gLSB1cGRhdGUgYHN0YXRlLnRva2Vuc2BcbiAgICAvLyAtIHJldHVybiB0cnVlXG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIG9rID0gcnVsZXNbaV0oc3RhdGUsIGxpbmUsIGVuZExpbmUsIGZhbHNlKTtcbiAgICAgIGlmIChvaykgeyBicmVhazsgfVxuICAgIH1cblxuICAgIC8vIHNldCBzdGF0ZS50aWdodCBpZiB3ZSBoYWQgYW4gZW1wdHkgbGluZSBiZWZvcmUgY3VycmVudCB0YWdcbiAgICAvLyBpLmUuIGxhdGVzdCBlbXB0eSBsaW5lIHNob3VsZCBub3QgY291bnRcbiAgICBzdGF0ZS50aWdodCA9ICFoYXNFbXB0eUxpbmVzO1xuXG4gICAgLy8gcGFyYWdyYXBoIG1pZ2h0IFwiZWF0XCIgb25lIG5ld2xpbmUgYWZ0ZXIgaXQgaW4gbmVzdGVkIGxpc3RzXG4gICAgaWYgKHN0YXRlLmlzRW1wdHkoc3RhdGUubGluZSAtIDEpKSB7XG4gICAgICBoYXNFbXB0eUxpbmVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBsaW5lID0gc3RhdGUubGluZTtcblxuICAgIGlmIChsaW5lIDwgZW5kTGluZSAmJiBzdGF0ZS5pc0VtcHR5KGxpbmUpKSB7XG4gICAgICBoYXNFbXB0eUxpbmVzID0gdHJ1ZTtcbiAgICAgIGxpbmUrKztcbiAgICAgIHN0YXRlLmxpbmUgPSBsaW5lO1xuICAgIH1cbiAgfVxufTtcblxuXG4vKipcbiAqIFBhcnNlckJsb2NrLnBhcnNlKHN0ciwgbWQsIGVudiwgb3V0VG9rZW5zKVxuICpcbiAqIFByb2Nlc3MgaW5wdXQgc3RyaW5nIGFuZCBwdXNoIGJsb2NrIHRva2VucyBpbnRvIGBvdXRUb2tlbnNgXG4gKiovXG5QYXJzZXJCbG9jay5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAoc3JjLCBtZCwgZW52LCBvdXRUb2tlbnMpIHtcbiAgdmFyIHN0YXRlO1xuXG4gIGlmICghc3JjKSB7IHJldHVybjsgfVxuXG4gIHN0YXRlID0gbmV3IHRoaXMuU3RhdGUoc3JjLCBtZCwgZW52LCBvdXRUb2tlbnMpO1xuXG4gIHRoaXMudG9rZW5pemUoc3RhdGUsIHN0YXRlLmxpbmUsIHN0YXRlLmxpbmVNYXgpO1xufTtcblxuXG5QYXJzZXJCbG9jay5wcm90b3R5cGUuU3RhdGUgPSByZXF1aXJlKCcuL3J1bGVzX2Jsb2NrL3N0YXRlX2Jsb2NrJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBQYXJzZXJCbG9jaztcbiIsICIvLyBTa2lwIHRleHQgY2hhcmFjdGVycyBmb3IgdGV4dCB0b2tlbiwgcGxhY2UgdGhvc2UgdG8gcGVuZGluZyBidWZmZXJcbi8vIGFuZCBpbmNyZW1lbnQgY3VycmVudCBwb3NcblxuJ3VzZSBzdHJpY3QnO1xuXG5cbi8vIFJ1bGUgdG8gc2tpcCBwdXJlIHRleHRcbi8vICd7fSQlQH4rPTonIHJlc2VydmVkIGZvciBleHRlbnRpb25zXG5cbi8vICEsIFwiLCAjLCAkLCAlLCAmLCAnLCAoLCApLCAqLCArLCAsLCAtLCAuLCAvLCA6LCA7LCA8LCA9LCA+LCA/LCBALCBbLCBcXCwgXSwgXiwgXywgYCwgeywgfCwgfSwgb3IgflxuXG4vLyAhISEhIERvbid0IGNvbmZ1c2Ugd2l0aCBcIk1hcmtkb3duIEFTQ0lJIFB1bmN0dWF0aW9uXCIgY2hhcnNcbi8vIGh0dHA6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMTUvI2FzY2lpLXB1bmN0dWF0aW9uLWNoYXJhY3RlclxuZnVuY3Rpb24gaXNUZXJtaW5hdG9yQ2hhcihjaCkge1xuICBzd2l0Y2ggKGNoKSB7XG4gICAgY2FzZSAweDBBLyogXFxuICovOlxuICAgIGNhc2UgMHgyMS8qICEgKi86XG4gICAgY2FzZSAweDIzLyogIyAqLzpcbiAgICBjYXNlIDB4MjQvKiAkICovOlxuICAgIGNhc2UgMHgyNS8qICUgKi86XG4gICAgY2FzZSAweDI2LyogJiAqLzpcbiAgICBjYXNlIDB4MkEvKiAqICovOlxuICAgIGNhc2UgMHgyQi8qICsgKi86XG4gICAgY2FzZSAweDJELyogLSAqLzpcbiAgICBjYXNlIDB4M0EvKiA6ICovOlxuICAgIGNhc2UgMHgzQy8qIDwgKi86XG4gICAgY2FzZSAweDNELyogPSAqLzpcbiAgICBjYXNlIDB4M0UvKiA+ICovOlxuICAgIGNhc2UgMHg0MC8qIEAgKi86XG4gICAgY2FzZSAweDVCLyogWyAqLzpcbiAgICBjYXNlIDB4NUMvKiBcXCAqLzpcbiAgICBjYXNlIDB4NUQvKiBdICovOlxuICAgIGNhc2UgMHg1RS8qIF4gKi86XG4gICAgY2FzZSAweDVGLyogXyAqLzpcbiAgICBjYXNlIDB4NjAvKiBgICovOlxuICAgIGNhc2UgMHg3Qi8qIHsgKi86XG4gICAgY2FzZSAweDdELyogfSAqLzpcbiAgICBjYXNlIDB4N0UvKiB+ICovOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRleHQoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG9zID0gc3RhdGUucG9zO1xuXG4gIHdoaWxlIChwb3MgPCBzdGF0ZS5wb3NNYXggJiYgIWlzVGVybWluYXRvckNoYXIoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSkpIHtcbiAgICBwb3MrKztcbiAgfVxuXG4gIGlmIChwb3MgPT09IHN0YXRlLnBvcykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoIXNpbGVudCkgeyBzdGF0ZS5wZW5kaW5nICs9IHN0YXRlLnNyYy5zbGljZShzdGF0ZS5wb3MsIHBvcyk7IH1cblxuICBzdGF0ZS5wb3MgPSBwb3M7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBBbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgZm9yIG1lbW9yeS5cbi8vXG4vLyBJdCBjb3N0cyAxMCUgb2YgcGVyZm9ybWFuY2UsIGJ1dCBhbGxvd3MgZXh0ZW5kIHRlcm1pbmF0b3JzIGxpc3QsIGlmIHBsYWNlIGl0XG4vLyB0byBgUGFyY2VySW5saW5lYCBwcm9wZXJ0eS4gUHJvYmFibHksIHdpbGwgc3dpdGNoIHRvIGl0IHNvbWV0aW1lLCBzdWNoXG4vLyBmbGV4aWJpbGl0eSByZXF1aXJlZC5cblxuLypcbnZhciBURVJNSU5BVE9SX1JFID0gL1tcXG4hIyQlJiorXFwtOjw9PkBbXFxcXFxcXV5fYHt9fl0vO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRleHQoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG9zID0gc3RhdGUucG9zLFxuICAgICAgaWR4ID0gc3RhdGUuc3JjLnNsaWNlKHBvcykuc2VhcmNoKFRFUk1JTkFUT1JfUkUpO1xuXG4gIC8vIGZpcnN0IGNoYXIgaXMgdGVybWluYXRvciAtPiBlbXB0eSB0ZXh0XG4gIGlmIChpZHggPT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gbm8gdGVybWluYXRvciAtPiB0ZXh0IHRpbGwgZW5kIG9mIHN0cmluZ1xuICBpZiAoaWR4IDwgMCkge1xuICAgIGlmICghc2lsZW50KSB7IHN0YXRlLnBlbmRpbmcgKz0gc3RhdGUuc3JjLnNsaWNlKHBvcyk7IH1cbiAgICBzdGF0ZS5wb3MgPSBzdGF0ZS5zcmMubGVuZ3RoO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFzaWxlbnQpIHsgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBwb3MgKyBpZHgpOyB9XG5cbiAgc3RhdGUucG9zICs9IGlkeDtcblxuICByZXR1cm4gdHJ1ZTtcbn07Ki9cbiIsICIvLyBQcm9jZXNzIGxpbmtzIGxpa2UgaHR0cHM6Ly9leGFtcGxlLm9yZy9cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbi8vIFJGQzM5ODY6IHNjaGVtZSA9IEFMUEhBICooIEFMUEhBIC8gRElHSVQgLyBcIitcIiAvIFwiLVwiIC8gXCIuXCIgKVxudmFyIFNDSEVNRV9SRSA9IC8oPzpefFteYS16MC05ListXSkoW2Etel1bYS16MC05ListXSopJC9pO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbGlua2lmeShzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBwb3MsIG1heCwgbWF0Y2gsIHByb3RvLCBsaW5rLCB1cmwsIGZ1bGxVcmwsIHRva2VuO1xuXG4gIGlmICghc3RhdGUubWQub3B0aW9ucy5saW5raWZ5KSByZXR1cm4gZmFsc2U7XG4gIGlmIChzdGF0ZS5saW5rTGV2ZWwgPiAwKSByZXR1cm4gZmFsc2U7XG5cbiAgcG9zID0gc3RhdGUucG9zO1xuICBtYXggPSBzdGF0ZS5wb3NNYXg7XG5cbiAgaWYgKHBvcyArIDMgPiBtYXgpIHJldHVybiBmYWxzZTtcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IDB4M0EvKiA6ICovKSByZXR1cm4gZmFsc2U7XG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MgKyAxKSAhPT0gMHgyRi8qIC8gKi8pIHJldHVybiBmYWxzZTtcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyArIDIpICE9PSAweDJGLyogLyAqLykgcmV0dXJuIGZhbHNlO1xuXG4gIG1hdGNoID0gc3RhdGUucGVuZGluZy5tYXRjaChTQ0hFTUVfUkUpO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gZmFsc2U7XG5cbiAgcHJvdG8gPSBtYXRjaFsxXTtcblxuICBsaW5rID0gc3RhdGUubWQubGlua2lmeS5tYXRjaEF0U3RhcnQoc3RhdGUuc3JjLnNsaWNlKHBvcyAtIHByb3RvLmxlbmd0aCkpO1xuICBpZiAoIWxpbmspIHJldHVybiBmYWxzZTtcblxuICB1cmwgPSBsaW5rLnVybDtcblxuICAvLyBkaXNhbGxvdyAnKicgYXQgdGhlIGVuZCBvZiB0aGUgbGluayAoY29uZmxpY3RzIHdpdGggZW1waGFzaXMpXG4gIHVybCA9IHVybC5yZXBsYWNlKC9cXCorJC8sICcnKTtcblxuICBmdWxsVXJsID0gc3RhdGUubWQubm9ybWFsaXplTGluayh1cmwpO1xuICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICghc2lsZW50KSB7XG4gICAgc3RhdGUucGVuZGluZyA9IHN0YXRlLnBlbmRpbmcuc2xpY2UoMCwgLXByb3RvLmxlbmd0aCk7XG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnbGlua19vcGVuJywgJ2EnLCAxKTtcbiAgICB0b2tlbi5hdHRycyAgID0gWyBbICdocmVmJywgZnVsbFVybCBdIF07XG4gICAgdG9rZW4ubWFya3VwICA9ICdsaW5raWZ5JztcbiAgICB0b2tlbi5pbmZvICAgID0gJ2F1dG8nO1xuXG4gICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ3RleHQnLCAnJywgMCk7XG4gICAgdG9rZW4uY29udGVudCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KHVybCk7XG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgnbGlua19jbG9zZScsICdhJywgLTEpO1xuICAgIHRva2VuLm1hcmt1cCAgPSAnbGlua2lmeSc7XG4gICAgdG9rZW4uaW5mbyAgICA9ICdhdXRvJztcbiAgfVxuXG4gIHN0YXRlLnBvcyArPSB1cmwubGVuZ3RoIC0gcHJvdG8ubGVuZ3RoO1xuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCAiLy8gUHJvY2Vlc3MgJ1xcbidcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBuZXdsaW5lKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIHBtYXgsIG1heCwgd3MsIHBvcyA9IHN0YXRlLnBvcztcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgwQS8qIFxcbiAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBwbWF4ID0gc3RhdGUucGVuZGluZy5sZW5ndGggLSAxO1xuICBtYXggPSBzdGF0ZS5wb3NNYXg7XG5cbiAgLy8gJyAgXFxuJyAtPiBoYXJkYnJlYWtcbiAgLy8gTG9va3VwIGluIHBlbmRpbmcgY2hhcnMgaXMgYmFkIHByYWN0aWNlISBEb24ndCBjb3B5IHRvIG90aGVyIHJ1bGVzIVxuICAvLyBQZW5kaW5nIHN0cmluZyBpcyBzdG9yZWQgaW4gY29uY2F0IG1vZGUsIGluZGV4ZWQgbG9va3VwcyB3aWxsIGNhdXNlXG4gIC8vIGNvbnZlcnRpb24gdG8gZmxhdCBtb2RlLlxuICBpZiAoIXNpbGVudCkge1xuICAgIGlmIChwbWF4ID49IDAgJiYgc3RhdGUucGVuZGluZy5jaGFyQ29kZUF0KHBtYXgpID09PSAweDIwKSB7XG4gICAgICBpZiAocG1heCA+PSAxICYmIHN0YXRlLnBlbmRpbmcuY2hhckNvZGVBdChwbWF4IC0gMSkgPT09IDB4MjApIHtcbiAgICAgICAgLy8gRmluZCB3aGl0ZXNwYWNlcyB0YWlsIG9mIHBlbmRpbmcgY2hhcnMuXG4gICAgICAgIHdzID0gcG1heCAtIDE7XG4gICAgICAgIHdoaWxlICh3cyA+PSAxICYmIHN0YXRlLnBlbmRpbmcuY2hhckNvZGVBdCh3cyAtIDEpID09PSAweDIwKSB3cy0tO1xuXG4gICAgICAgIHN0YXRlLnBlbmRpbmcgPSBzdGF0ZS5wZW5kaW5nLnNsaWNlKDAsIHdzKTtcbiAgICAgICAgc3RhdGUucHVzaCgnaGFyZGJyZWFrJywgJ2JyJywgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5wZW5kaW5nID0gc3RhdGUucGVuZGluZy5zbGljZSgwLCAtMSk7XG4gICAgICAgIHN0YXRlLnB1c2goJ3NvZnRicmVhaycsICdicicsIDApO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnB1c2goJ3NvZnRicmVhaycsICdicicsIDApO1xuICAgIH1cbiAgfVxuXG4gIHBvcysrO1xuXG4gIC8vIHNraXAgaGVhZGluZyBzcGFjZXMgZm9yIG5leHQgbGluZVxuICB3aGlsZSAocG9zIDwgbWF4ICYmIGlzU3BhY2Uoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSkpIHsgcG9zKys7IH1cblxuICBzdGF0ZS5wb3MgPSBwb3M7XG4gIHJldHVybiB0cnVlO1xufTtcbiIsICIvLyBQcm9jZXNzIGVzY2FwZWQgY2hhcnMgYW5kIGhhcmRicmVha3NcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNTcGFjZSA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzU3BhY2U7XG5cbnZhciBFU0NBUEVEID0gW107XG5cbmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsgRVNDQVBFRC5wdXNoKDApOyB9XG5cbidcXFxcIVwiIyQlJlxcJygpKissLi86Ozw9Pj9AW11eX2B7fH1+LSdcbiAgLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChjaCkgeyBFU0NBUEVEW2NoLmNoYXJDb2RlQXQoMCldID0gMTsgfSk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBlc2NhcGUoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgY2gxLCBjaDIsIG9yaWdTdHIsIGVzY2FwZWRTdHIsIHRva2VuLCBwb3MgPSBzdGF0ZS5wb3MsIG1heCA9IHN0YXRlLnBvc01heDtcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHg1Qy8qIFxcICovKSByZXR1cm4gZmFsc2U7XG4gIHBvcysrO1xuXG4gIC8vICdcXCcgYXQgdGhlIGVuZCBvZiB0aGUgaW5saW5lIGJsb2NrXG4gIGlmIChwb3MgPj0gbWF4KSByZXR1cm4gZmFsc2U7XG5cbiAgY2gxID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICBpZiAoY2gxID09PSAweDBBKSB7XG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIHN0YXRlLnB1c2goJ2hhcmRicmVhaycsICdicicsIDApO1xuICAgIH1cblxuICAgIHBvcysrO1xuICAgIC8vIHNraXAgbGVhZGluZyB3aGl0ZXNwYWNlcyBmcm9tIG5leHQgbGluZVxuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIGNoMSA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoIWlzU3BhY2UoY2gxKSkgYnJlYWs7XG4gICAgICBwb3MrKztcbiAgICB9XG5cbiAgICBzdGF0ZS5wb3MgPSBwb3M7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBlc2NhcGVkU3RyID0gc3RhdGUuc3JjW3Bvc107XG5cbiAgaWYgKGNoMSA+PSAweEQ4MDAgJiYgY2gxIDw9IDB4REJGRiAmJiBwb3MgKyAxIDwgbWF4KSB7XG4gICAgY2gyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zICsgMSk7XG5cbiAgICBpZiAoY2gyID49IDB4REMwMCAmJiBjaDIgPD0gMHhERkZGKSB7XG4gICAgICBlc2NhcGVkU3RyICs9IHN0YXRlLnNyY1twb3MgKyAxXTtcbiAgICAgIHBvcysrO1xuICAgIH1cbiAgfVxuXG4gIG9yaWdTdHIgPSAnXFxcXCcgKyBlc2NhcGVkU3RyO1xuXG4gIGlmICghc2lsZW50KSB7XG4gICAgdG9rZW4gPSBzdGF0ZS5wdXNoKCd0ZXh0X3NwZWNpYWwnLCAnJywgMCk7XG5cbiAgICBpZiAoY2gxIDwgMjU2ICYmIEVTQ0FQRURbY2gxXSAhPT0gMCkge1xuICAgICAgdG9rZW4uY29udGVudCA9IGVzY2FwZWRTdHI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRva2VuLmNvbnRlbnQgPSBvcmlnU3RyO1xuICAgIH1cblxuICAgIHRva2VuLm1hcmt1cCA9IG9yaWdTdHI7XG4gICAgdG9rZW4uaW5mbyAgID0gJ2VzY2FwZSc7XG4gIH1cblxuICBzdGF0ZS5wb3MgPSBwb3MgKyAxO1xuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCAiLy8gUGFyc2UgYmFja3RpY2tzXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJhY2t0aWNrKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIHN0YXJ0LCBtYXgsIG1hcmtlciwgdG9rZW4sIG1hdGNoU3RhcnQsIG1hdGNoRW5kLCBvcGVuZXJMZW5ndGgsIGNsb3Nlckxlbmd0aCxcbiAgICAgIHBvcyA9IHN0YXRlLnBvcyxcbiAgICAgIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcblxuICBpZiAoY2ggIT09IDB4NjAvKiBgICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIHN0YXJ0ID0gcG9zO1xuICBwb3MrKztcbiAgbWF4ID0gc3RhdGUucG9zTWF4O1xuXG4gIC8vIHNjYW4gbWFya2VyIGxlbmd0aFxuICB3aGlsZSAocG9zIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4NjAvKiBgICovKSB7IHBvcysrOyB9XG5cbiAgbWFya2VyID0gc3RhdGUuc3JjLnNsaWNlKHN0YXJ0LCBwb3MpO1xuICBvcGVuZXJMZW5ndGggPSBtYXJrZXIubGVuZ3RoO1xuXG4gIGlmIChzdGF0ZS5iYWNrdGlja3NTY2FubmVkICYmIChzdGF0ZS5iYWNrdGlja3Nbb3BlbmVyTGVuZ3RoXSB8fCAwKSA8PSBzdGFydCkge1xuICAgIGlmICghc2lsZW50KSBzdGF0ZS5wZW5kaW5nICs9IG1hcmtlcjtcbiAgICBzdGF0ZS5wb3MgKz0gb3BlbmVyTGVuZ3RoO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbWF0Y2hTdGFydCA9IG1hdGNoRW5kID0gcG9zO1xuXG4gIC8vIE5vdGhpbmcgZm91bmQgaW4gdGhlIGNhY2hlLCBzY2FuIHVudGlsIHRoZSBlbmQgb2YgdGhlIGxpbmUgKG9yIHVudGlsIG1hcmtlciBpcyBmb3VuZClcbiAgd2hpbGUgKChtYXRjaFN0YXJ0ID0gc3RhdGUuc3JjLmluZGV4T2YoJ2AnLCBtYXRjaEVuZCkpICE9PSAtMSkge1xuICAgIG1hdGNoRW5kID0gbWF0Y2hTdGFydCArIDE7XG5cbiAgICAvLyBzY2FuIG1hcmtlciBsZW5ndGhcbiAgICB3aGlsZSAobWF0Y2hFbmQgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQobWF0Y2hFbmQpID09PSAweDYwLyogYCAqLykgeyBtYXRjaEVuZCsrOyB9XG5cbiAgICBjbG9zZXJMZW5ndGggPSBtYXRjaEVuZCAtIG1hdGNoU3RhcnQ7XG5cbiAgICBpZiAoY2xvc2VyTGVuZ3RoID09PSBvcGVuZXJMZW5ndGgpIHtcbiAgICAgIC8vIEZvdW5kIG1hdGNoaW5nIGNsb3NlciBsZW5ndGguXG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICB0b2tlbiAgICAgPSBzdGF0ZS5wdXNoKCdjb2RlX2lubGluZScsICdjb2RlJywgMCk7XG4gICAgICAgIHRva2VuLm1hcmt1cCAgPSBtYXJrZXI7XG4gICAgICAgIHRva2VuLmNvbnRlbnQgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXRjaFN0YXJ0KVxuICAgICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJyAnKVxuICAgICAgICAgIC5yZXBsYWNlKC9eICguKykgJC8sICckMScpO1xuICAgICAgfVxuICAgICAgc3RhdGUucG9zID0gbWF0Y2hFbmQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBTb21lIGRpZmZlcmVudCBsZW5ndGggZm91bmQsIHB1dCBpdCBpbiBjYWNoZSBhcyB1cHBlciBsaW1pdCBvZiB3aGVyZSBjbG9zZXIgY2FuIGJlIGZvdW5kXG4gICAgc3RhdGUuYmFja3RpY2tzW2Nsb3Nlckxlbmd0aF0gPSBtYXRjaFN0YXJ0O1xuICB9XG5cbiAgLy8gU2Nhbm5lZCB0aHJvdWdoIHRoZSBlbmQsIGRpZG4ndCBmaW5kIGFueXRoaW5nXG4gIHN0YXRlLmJhY2t0aWNrc1NjYW5uZWQgPSB0cnVlO1xuXG4gIGlmICghc2lsZW50KSBzdGF0ZS5wZW5kaW5nICs9IG1hcmtlcjtcbiAgc3RhdGUucG9zICs9IG9wZW5lckxlbmd0aDtcbiAgcmV0dXJuIHRydWU7XG59O1xuIiwgIi8vIH5+c3RyaWtlIHRocm91Z2h+flxuLy9cbid1c2Ugc3RyaWN0JztcblxuXG4vLyBJbnNlcnQgZWFjaCBtYXJrZXIgYXMgYSBzZXBhcmF0ZSB0ZXh0IHRva2VuLCBhbmQgYWRkIGl0IHRvIGRlbGltaXRlciBsaXN0XG4vL1xubW9kdWxlLmV4cG9ydHMudG9rZW5pemUgPSBmdW5jdGlvbiBzdHJpa2V0aHJvdWdoKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIGksIHNjYW5uZWQsIHRva2VuLCBsZW4sIGNoLFxuICAgICAgc3RhcnQgPSBzdGF0ZS5wb3MsXG4gICAgICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGFydCk7XG5cbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAobWFya2VyICE9PSAweDdFLyogfiAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBzY2FubmVkID0gc3RhdGUuc2NhbkRlbGltcyhzdGF0ZS5wb3MsIHRydWUpO1xuICBsZW4gPSBzY2FubmVkLmxlbmd0aDtcbiAgY2ggPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcik7XG5cbiAgaWYgKGxlbiA8IDIpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaWYgKGxlbiAlIDIpIHtcbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgndGV4dCcsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ID0gY2g7XG4gICAgbGVuLS07XG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHtcbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgndGV4dCcsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ID0gY2ggKyBjaDtcblxuICAgIHN0YXRlLmRlbGltaXRlcnMucHVzaCh7XG4gICAgICBtYXJrZXI6IG1hcmtlcixcbiAgICAgIGxlbmd0aDogMCwgICAgIC8vIGRpc2FibGUgXCJydWxlIG9mIDNcIiBsZW5ndGggY2hlY2tzIG1lYW50IGZvciBlbXBoYXNpc1xuICAgICAgdG9rZW46ICBzdGF0ZS50b2tlbnMubGVuZ3RoIC0gMSxcbiAgICAgIGVuZDogICAgLTEsXG4gICAgICBvcGVuOiAgIHNjYW5uZWQuY2FuX29wZW4sXG4gICAgICBjbG9zZTogIHNjYW5uZWQuY2FuX2Nsb3NlXG4gICAgfSk7XG4gIH1cblxuICBzdGF0ZS5wb3MgKz0gc2Nhbm5lZC5sZW5ndGg7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5cbmZ1bmN0aW9uIHBvc3RQcm9jZXNzKHN0YXRlLCBkZWxpbWl0ZXJzKSB7XG4gIHZhciBpLCBqLFxuICAgICAgc3RhcnREZWxpbSxcbiAgICAgIGVuZERlbGltLFxuICAgICAgdG9rZW4sXG4gICAgICBsb25lTWFya2VycyA9IFtdLFxuICAgICAgbWF4ID0gZGVsaW1pdGVycy5sZW5ndGg7XG5cbiAgZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7XG4gICAgc3RhcnREZWxpbSA9IGRlbGltaXRlcnNbaV07XG5cbiAgICBpZiAoc3RhcnREZWxpbS5tYXJrZXIgIT09IDB4N0UvKiB+ICovKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnREZWxpbS5lbmQgPT09IC0xKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBlbmREZWxpbSA9IGRlbGltaXRlcnNbc3RhcnREZWxpbS5lbmRdO1xuXG4gICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnRva2Vuc1tzdGFydERlbGltLnRva2VuXTtcbiAgICB0b2tlbi50eXBlICAgID0gJ3Nfb3Blbic7XG4gICAgdG9rZW4udGFnICAgICA9ICdzJztcbiAgICB0b2tlbi5uZXN0aW5nID0gMTtcbiAgICB0b2tlbi5tYXJrdXAgID0gJ35+JztcbiAgICB0b2tlbi5jb250ZW50ID0gJyc7XG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuXTtcbiAgICB0b2tlbi50eXBlICAgID0gJ3NfY2xvc2UnO1xuICAgIHRva2VuLnRhZyAgICAgPSAncyc7XG4gICAgdG9rZW4ubmVzdGluZyA9IC0xO1xuICAgIHRva2VuLm1hcmt1cCAgPSAnfn4nO1xuICAgIHRva2VuLmNvbnRlbnQgPSAnJztcblxuICAgIGlmIChzdGF0ZS50b2tlbnNbZW5kRGVsaW0udG9rZW4gLSAxXS50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuIC0gMV0uY29udGVudCA9PT0gJ34nKSB7XG5cbiAgICAgIGxvbmVNYXJrZXJzLnB1c2goZW5kRGVsaW0udG9rZW4gLSAxKTtcbiAgICB9XG4gIH1cblxuICAvLyBJZiBhIG1hcmtlciBzZXF1ZW5jZSBoYXMgYW4gb2RkIG51bWJlciBvZiBjaGFyYWN0ZXJzLCBpdCdzIHNwbGl0dGVkXG4gIC8vIGxpa2UgdGhpczogYH5+fn5+YCAtPiBgfmAgKyBgfn5gICsgYH5+YCwgbGVhdmluZyBvbmUgbWFya2VyIGF0IHRoZVxuICAvLyBzdGFydCBvZiB0aGUgc2VxdWVuY2UuXG4gIC8vXG4gIC8vIFNvLCB3ZSBoYXZlIHRvIG1vdmUgYWxsIHRob3NlIG1hcmtlcnMgYWZ0ZXIgc3Vic2VxdWVudCBzX2Nsb3NlIHRhZ3MuXG4gIC8vXG4gIHdoaWxlIChsb25lTWFya2Vycy5sZW5ndGgpIHtcbiAgICBpID0gbG9uZU1hcmtlcnMucG9wKCk7XG4gICAgaiA9IGkgKyAxO1xuXG4gICAgd2hpbGUgKGogPCBzdGF0ZS50b2tlbnMubGVuZ3RoICYmIHN0YXRlLnRva2Vuc1tqXS50eXBlID09PSAnc19jbG9zZScpIHtcbiAgICAgIGorKztcbiAgICB9XG5cbiAgICBqLS07XG5cbiAgICBpZiAoaSAhPT0gaikge1xuICAgICAgdG9rZW4gPSBzdGF0ZS50b2tlbnNbal07XG4gICAgICBzdGF0ZS50b2tlbnNbal0gPSBzdGF0ZS50b2tlbnNbaV07XG4gICAgICBzdGF0ZS50b2tlbnNbaV0gPSB0b2tlbjtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBXYWxrIHRocm91Z2ggZGVsaW1pdGVyIGxpc3QgYW5kIHJlcGxhY2UgdGV4dCB0b2tlbnMgd2l0aCB0YWdzXG4vL1xubW9kdWxlLmV4cG9ydHMucG9zdFByb2Nlc3MgPSBmdW5jdGlvbiBzdHJpa2V0aHJvdWdoKHN0YXRlKSB7XG4gIHZhciBjdXJyLFxuICAgICAgdG9rZW5zX21ldGEgPSBzdGF0ZS50b2tlbnNfbWV0YSxcbiAgICAgIG1heCA9IHN0YXRlLnRva2Vuc19tZXRhLmxlbmd0aDtcblxuICBwb3N0UHJvY2VzcyhzdGF0ZSwgc3RhdGUuZGVsaW1pdGVycyk7XG5cbiAgZm9yIChjdXJyID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgaWYgKHRva2Vuc19tZXRhW2N1cnJdICYmIHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpIHtcbiAgICAgIHBvc3RQcm9jZXNzKHN0YXRlLCB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKTtcbiAgICB9XG4gIH1cbn07XG4iLCAiLy8gUHJvY2VzcyAqdGhpcyogYW5kIF90aGF0X1xuLy9cbid1c2Ugc3RyaWN0JztcblxuXG4vLyBJbnNlcnQgZWFjaCBtYXJrZXIgYXMgYSBzZXBhcmF0ZSB0ZXh0IHRva2VuLCBhbmQgYWRkIGl0IHRvIGRlbGltaXRlciBsaXN0XG4vL1xubW9kdWxlLmV4cG9ydHMudG9rZW5pemUgPSBmdW5jdGlvbiBlbXBoYXNpcyhzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBpLCBzY2FubmVkLCB0b2tlbixcbiAgICAgIHN0YXJ0ID0gc3RhdGUucG9zLFxuICAgICAgbWFya2VyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhcnQpO1xuXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgaWYgKG1hcmtlciAhPT0gMHg1RiAvKiBfICovICYmIG1hcmtlciAhPT0gMHgyQSAvKiAqICovKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIHNjYW5uZWQgPSBzdGF0ZS5zY2FuRGVsaW1zKHN0YXRlLnBvcywgbWFya2VyID09PSAweDJBKTtcblxuICBmb3IgKGkgPSAwOyBpIDwgc2Nhbm5lZC5sZW5ndGg7IGkrKykge1xuICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCd0ZXh0JywgJycsIDApO1xuICAgIHRva2VuLmNvbnRlbnQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcik7XG5cbiAgICBzdGF0ZS5kZWxpbWl0ZXJzLnB1c2goe1xuICAgICAgLy8gQ2hhciBjb2RlIG9mIHRoZSBzdGFydGluZyBtYXJrZXIgKG51bWJlcikuXG4gICAgICAvL1xuICAgICAgbWFya2VyOiBtYXJrZXIsXG5cbiAgICAgIC8vIFRvdGFsIGxlbmd0aCBvZiB0aGVzZSBzZXJpZXMgb2YgZGVsaW1pdGVycy5cbiAgICAgIC8vXG4gICAgICBsZW5ndGg6IHNjYW5uZWQubGVuZ3RoLFxuXG4gICAgICAvLyBBIHBvc2l0aW9uIG9mIHRoZSB0b2tlbiB0aGlzIGRlbGltaXRlciBjb3JyZXNwb25kcyB0by5cbiAgICAgIC8vXG4gICAgICB0b2tlbjogIHN0YXRlLnRva2Vucy5sZW5ndGggLSAxLFxuXG4gICAgICAvLyBJZiB0aGlzIGRlbGltaXRlciBpcyBtYXRjaGVkIGFzIGEgdmFsaWQgb3BlbmVyLCBgZW5kYCB3aWxsIGJlXG4gICAgICAvLyBlcXVhbCB0byBpdHMgcG9zaXRpb24sIG90aGVyd2lzZSBpdCdzIGAtMWAuXG4gICAgICAvL1xuICAgICAgZW5kOiAgICAtMSxcblxuICAgICAgLy8gQm9vbGVhbiBmbGFncyB0aGF0IGRldGVybWluZSBpZiB0aGlzIGRlbGltaXRlciBjb3VsZCBvcGVuIG9yIGNsb3NlXG4gICAgICAvLyBhbiBlbXBoYXNpcy5cbiAgICAgIC8vXG4gICAgICBvcGVuOiAgIHNjYW5uZWQuY2FuX29wZW4sXG4gICAgICBjbG9zZTogIHNjYW5uZWQuY2FuX2Nsb3NlXG4gICAgfSk7XG4gIH1cblxuICBzdGF0ZS5wb3MgKz0gc2Nhbm5lZC5sZW5ndGg7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5cbmZ1bmN0aW9uIHBvc3RQcm9jZXNzKHN0YXRlLCBkZWxpbWl0ZXJzKSB7XG4gIHZhciBpLFxuICAgICAgc3RhcnREZWxpbSxcbiAgICAgIGVuZERlbGltLFxuICAgICAgdG9rZW4sXG4gICAgICBjaCxcbiAgICAgIGlzU3Ryb25nLFxuICAgICAgbWF4ID0gZGVsaW1pdGVycy5sZW5ndGg7XG5cbiAgZm9yIChpID0gbWF4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBzdGFydERlbGltID0gZGVsaW1pdGVyc1tpXTtcblxuICAgIGlmIChzdGFydERlbGltLm1hcmtlciAhPT0gMHg1Ri8qIF8gKi8gJiYgc3RhcnREZWxpbS5tYXJrZXIgIT09IDB4MkEvKiAqICovKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIG9ubHkgb3BlbmluZyBtYXJrZXJzXG4gICAgaWYgKHN0YXJ0RGVsaW0uZW5kID09PSAtMSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZW5kRGVsaW0gPSBkZWxpbWl0ZXJzW3N0YXJ0RGVsaW0uZW5kXTtcblxuICAgIC8vIElmIHRoZSBwcmV2aW91cyBkZWxpbWl0ZXIgaGFzIHRoZSBzYW1lIG1hcmtlciBhbmQgaXMgYWRqYWNlbnQgdG8gdGhpcyBvbmUsXG4gICAgLy8gbWVyZ2UgdGhvc2UgaW50byBvbmUgc3Ryb25nIGRlbGltaXRlci5cbiAgICAvL1xuICAgIC8vIGA8ZW0+PGVtPndoYXRldmVyPC9lbT48L2VtPmAgLT4gYDxzdHJvbmc+d2hhdGV2ZXI8L3N0cm9uZz5gXG4gICAgLy9cbiAgICBpc1N0cm9uZyA9IGkgPiAwICYmXG4gICAgICAgICAgICAgICBkZWxpbWl0ZXJzW2kgLSAxXS5lbmQgPT09IHN0YXJ0RGVsaW0uZW5kICsgMSAmJlxuICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCBmaXJzdCB0d28gbWFya2VycyBtYXRjaCBhbmQgYWRqYWNlbnRcbiAgICAgICAgICAgICAgIGRlbGltaXRlcnNbaSAtIDFdLm1hcmtlciA9PT0gc3RhcnREZWxpbS5tYXJrZXIgJiZcbiAgICAgICAgICAgICAgIGRlbGltaXRlcnNbaSAtIDFdLnRva2VuID09PSBzdGFydERlbGltLnRva2VuIC0gMSAmJlxuICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCBsYXN0IHR3byBtYXJrZXJzIGFyZSBhZGphY2VudCAod2UgY2FuIHNhZmVseSBhc3N1bWUgdGhleSBtYXRjaClcbiAgICAgICAgICAgICAgIGRlbGltaXRlcnNbc3RhcnREZWxpbS5lbmQgKyAxXS50b2tlbiA9PT0gZW5kRGVsaW0udG9rZW4gKyAxO1xuXG4gICAgY2ggPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHN0YXJ0RGVsaW0ubWFya2VyKTtcblxuICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS50b2tlbnNbc3RhcnREZWxpbS50b2tlbl07XG4gICAgdG9rZW4udHlwZSAgICA9IGlzU3Ryb25nID8gJ3N0cm9uZ19vcGVuJyA6ICdlbV9vcGVuJztcbiAgICB0b2tlbi50YWcgICAgID0gaXNTdHJvbmcgPyAnc3Ryb25nJyA6ICdlbSc7XG4gICAgdG9rZW4ubmVzdGluZyA9IDE7XG4gICAgdG9rZW4ubWFya3VwICA9IGlzU3Ryb25nID8gY2ggKyBjaCA6IGNoO1xuICAgIHRva2VuLmNvbnRlbnQgPSAnJztcblxuICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS50b2tlbnNbZW5kRGVsaW0udG9rZW5dO1xuICAgIHRva2VuLnR5cGUgICAgPSBpc1N0cm9uZyA/ICdzdHJvbmdfY2xvc2UnIDogJ2VtX2Nsb3NlJztcbiAgICB0b2tlbi50YWcgICAgID0gaXNTdHJvbmcgPyAnc3Ryb25nJyA6ICdlbSc7XG4gICAgdG9rZW4ubmVzdGluZyA9IC0xO1xuICAgIHRva2VuLm1hcmt1cCAgPSBpc1N0cm9uZyA/IGNoICsgY2ggOiBjaDtcbiAgICB0b2tlbi5jb250ZW50ID0gJyc7XG5cbiAgICBpZiAoaXNTdHJvbmcpIHtcbiAgICAgIHN0YXRlLnRva2Vuc1tkZWxpbWl0ZXJzW2kgLSAxXS50b2tlbl0uY29udGVudCA9ICcnO1xuICAgICAgc3RhdGUudG9rZW5zW2RlbGltaXRlcnNbc3RhcnREZWxpbS5lbmQgKyAxXS50b2tlbl0uY29udGVudCA9ICcnO1xuICAgICAgaS0tO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFdhbGsgdGhyb3VnaCBkZWxpbWl0ZXIgbGlzdCBhbmQgcmVwbGFjZSB0ZXh0IHRva2VucyB3aXRoIHRhZ3Ncbi8vXG5tb2R1bGUuZXhwb3J0cy5wb3N0UHJvY2VzcyA9IGZ1bmN0aW9uIGVtcGhhc2lzKHN0YXRlKSB7XG4gIHZhciBjdXJyLFxuICAgICAgdG9rZW5zX21ldGEgPSBzdGF0ZS50b2tlbnNfbWV0YSxcbiAgICAgIG1heCA9IHN0YXRlLnRva2Vuc19tZXRhLmxlbmd0aDtcblxuICBwb3N0UHJvY2VzcyhzdGF0ZSwgc3RhdGUuZGVsaW1pdGVycyk7XG5cbiAgZm9yIChjdXJyID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgaWYgKHRva2Vuc19tZXRhW2N1cnJdICYmIHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpIHtcbiAgICAgIHBvc3RQcm9jZXNzKHN0YXRlLCB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKTtcbiAgICB9XG4gIH1cbn07XG4iLCAiLy8gUHJvY2VzcyBbbGlua10oPHRvPiBcInN0dWZmXCIpXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIG5vcm1hbGl6ZVJlZmVyZW5jZSAgID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykubm9ybWFsaXplUmVmZXJlbmNlO1xudmFyIGlzU3BhY2UgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNTcGFjZTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpbmsoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgYXR0cnMsXG4gICAgICBjb2RlLFxuICAgICAgbGFiZWwsXG4gICAgICBsYWJlbEVuZCxcbiAgICAgIGxhYmVsU3RhcnQsXG4gICAgICBwb3MsXG4gICAgICByZXMsXG4gICAgICByZWYsXG4gICAgICB0b2tlbixcbiAgICAgIGhyZWYgPSAnJyxcbiAgICAgIHRpdGxlID0gJycsXG4gICAgICBvbGRQb3MgPSBzdGF0ZS5wb3MsXG4gICAgICBtYXggPSBzdGF0ZS5wb3NNYXgsXG4gICAgICBzdGFydCA9IHN0YXRlLnBvcyxcbiAgICAgIHBhcnNlUmVmZXJlbmNlID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhdGUucG9zKSAhPT0gMHg1Qi8qIFsgKi8pIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgbGFiZWxTdGFydCA9IHN0YXRlLnBvcyArIDE7XG4gIGxhYmVsRW5kID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtMYWJlbChzdGF0ZSwgc3RhdGUucG9zLCB0cnVlKTtcblxuICAvLyBwYXJzZXIgZmFpbGVkIHRvIGZpbmQgJ10nLCBzbyBpdCdzIG5vdCBhIHZhbGlkIGxpbmtcbiAgaWYgKGxhYmVsRW5kIDwgMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBwb3MgPSBsYWJlbEVuZCArIDE7XG4gIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgyOC8qICggKi8pIHtcbiAgICAvL1xuICAgIC8vIElubGluZSBsaW5rXG4gICAgLy9cblxuICAgIC8vIG1pZ2h0IGhhdmUgZm91bmQgYSB2YWxpZCBzaG9ydGN1dCBsaW5rLCBkaXNhYmxlIHJlZmVyZW5jZSBwYXJzaW5nXG4gICAgcGFyc2VSZWZlcmVuY2UgPSBmYWxzZTtcblxuICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgLy8gICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgIHBvcysrO1xuICAgIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrOyB9XG4gICAgfVxuICAgIGlmIChwb3MgPj0gbWF4KSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgICBeXl5eXl4gcGFyc2luZyBsaW5rIGRlc3RpbmF0aW9uXG4gICAgc3RhcnQgPSBwb3M7XG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtEZXN0aW5hdGlvbihzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KTtcbiAgICBpZiAocmVzLm9rKSB7XG4gICAgICBocmVmID0gc3RhdGUubWQubm9ybWFsaXplTGluayhyZXMuc3RyKTtcbiAgICAgIGlmIChzdGF0ZS5tZC52YWxpZGF0ZUxpbmsoaHJlZikpIHtcbiAgICAgICAgcG9zID0gcmVzLnBvcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhyZWYgPSAnJztcbiAgICAgIH1cblxuICAgICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAgIC8vICAgICAgICAgICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgICAgc3RhcnQgPSBwb3M7XG4gICAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgaWYgKCFpc1NwYWNlKGNvZGUpICYmIGNvZGUgIT09IDB4MEEpIHsgYnJlYWs7IH1cbiAgICAgIH1cblxuICAgICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgXl5eXl5eXiBwYXJzaW5nIGxpbmsgdGl0bGVcbiAgICAgIHJlcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rVGl0bGUoc3RhdGUuc3JjLCBwb3MsIHN0YXRlLnBvc01heCk7XG4gICAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXJ0ICE9PSBwb3MgJiYgcmVzLm9rKSB7XG4gICAgICAgIHRpdGxlID0gcmVzLnN0cjtcbiAgICAgICAgcG9zID0gcmVzLnBvcztcblxuICAgICAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBeXiBza2lwcGluZyB0aGVzZSBzcGFjZXNcbiAgICAgICAgZm9yICg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICAgICAgICBjb2RlID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgICBpZiAoIWlzU3BhY2UoY29kZSkgJiYgY29kZSAhPT0gMHgwQSkgeyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvcyA+PSBtYXggfHwgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgyOS8qICkgKi8pIHtcbiAgICAgIC8vIHBhcnNpbmcgYSB2YWxpZCBzaG9ydGN1dCBsaW5rIGZhaWxlZCwgZmFsbGJhY2sgdG8gcmVmZXJlbmNlXG4gICAgICBwYXJzZVJlZmVyZW5jZSA9IHRydWU7XG4gICAgfVxuICAgIHBvcysrO1xuICB9XG5cbiAgaWYgKHBhcnNlUmVmZXJlbmNlKSB7XG4gICAgLy9cbiAgICAvLyBMaW5rIHJlZmVyZW5jZVxuICAgIC8vXG4gICAgaWYgKHR5cGVvZiBzdGF0ZS5lbnYucmVmZXJlbmNlcyA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4NUIvKiBbICovKSB7XG4gICAgICBzdGFydCA9IHBvcyArIDE7XG4gICAgICBwb3MgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua0xhYmVsKHN0YXRlLCBwb3MpO1xuICAgICAgaWYgKHBvcyA+PSAwKSB7XG4gICAgICAgIGxhYmVsID0gc3RhdGUuc3JjLnNsaWNlKHN0YXJ0LCBwb3MrKyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3MgPSBsYWJlbEVuZCArIDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcyA9IGxhYmVsRW5kICsgMTtcbiAgICB9XG5cbiAgICAvLyBjb3ZlcnMgbGFiZWwgPT09ICcnIGFuZCBsYWJlbCA9PT0gdW5kZWZpbmVkXG4gICAgLy8gKGNvbGxhcHNlZCByZWZlcmVuY2UgbGluayBhbmQgc2hvcnRjdXQgcmVmZXJlbmNlIGxpbmsgcmVzcGVjdGl2ZWx5KVxuICAgIGlmICghbGFiZWwpIHsgbGFiZWwgPSBzdGF0ZS5zcmMuc2xpY2UobGFiZWxTdGFydCwgbGFiZWxFbmQpOyB9XG5cbiAgICByZWYgPSBzdGF0ZS5lbnYucmVmZXJlbmNlc1tub3JtYWxpemVSZWZlcmVuY2UobGFiZWwpXTtcbiAgICBpZiAoIXJlZikge1xuICAgICAgc3RhdGUucG9zID0gb2xkUG9zO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBocmVmID0gcmVmLmhyZWY7XG4gICAgdGl0bGUgPSByZWYudGl0bGU7XG4gIH1cblxuICAvL1xuICAvLyBXZSBmb3VuZCB0aGUgZW5kIG9mIHRoZSBsaW5rLCBhbmQga25vdyBmb3IgYSBmYWN0IGl0J3MgYSB2YWxpZCBsaW5rO1xuICAvLyBzbyBhbGwgdGhhdCdzIGxlZnQgdG8gZG8gaXMgdG8gY2FsbCB0b2tlbml6ZXIuXG4gIC8vXG4gIGlmICghc2lsZW50KSB7XG4gICAgc3RhdGUucG9zID0gbGFiZWxTdGFydDtcbiAgICBzdGF0ZS5wb3NNYXggPSBsYWJlbEVuZDtcblxuICAgIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2xpbmtfb3BlbicsICdhJywgMSk7XG4gICAgdG9rZW4uYXR0cnMgID0gYXR0cnMgPSBbIFsgJ2hyZWYnLCBocmVmIF0gXTtcbiAgICBpZiAodGl0bGUpIHtcbiAgICAgIGF0dHJzLnB1c2goWyAndGl0bGUnLCB0aXRsZSBdKTtcbiAgICB9XG5cbiAgICBzdGF0ZS5saW5rTGV2ZWwrKztcbiAgICBzdGF0ZS5tZC5pbmxpbmUudG9rZW5pemUoc3RhdGUpO1xuICAgIHN0YXRlLmxpbmtMZXZlbC0tO1xuXG4gICAgdG9rZW4gICAgICAgID0gc3RhdGUucHVzaCgnbGlua19jbG9zZScsICdhJywgLTEpO1xuICB9XG5cbiAgc3RhdGUucG9zID0gcG9zO1xuICBzdGF0ZS5wb3NNYXggPSBtYXg7XG4gIHJldHVybiB0cnVlO1xufTtcbiIsICIvLyBQcm9jZXNzICFbaW1hZ2VdKDxzcmM+IFwidGl0bGVcIilcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgbm9ybWFsaXplUmVmZXJlbmNlICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5ub3JtYWxpemVSZWZlcmVuY2U7XG52YXIgaXNTcGFjZSAgICAgICAgICAgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5pc1NwYWNlO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW1hZ2Uoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgYXR0cnMsXG4gICAgICBjb2RlLFxuICAgICAgY29udGVudCxcbiAgICAgIGxhYmVsLFxuICAgICAgbGFiZWxFbmQsXG4gICAgICBsYWJlbFN0YXJ0LFxuICAgICAgcG9zLFxuICAgICAgcmVmLFxuICAgICAgcmVzLFxuICAgICAgdGl0bGUsXG4gICAgICB0b2tlbixcbiAgICAgIHRva2VucyxcbiAgICAgIHN0YXJ0LFxuICAgICAgaHJlZiA9ICcnLFxuICAgICAgb2xkUG9zID0gc3RhdGUucG9zLFxuICAgICAgbWF4ID0gc3RhdGUucG9zTWF4O1xuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGF0ZS5wb3MpICE9PSAweDIxLyogISAqLykgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXRlLnBvcyArIDEpICE9PSAweDVCLyogWyAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBsYWJlbFN0YXJ0ID0gc3RhdGUucG9zICsgMjtcbiAgbGFiZWxFbmQgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua0xhYmVsKHN0YXRlLCBzdGF0ZS5wb3MgKyAxLCBmYWxzZSk7XG5cbiAgLy8gcGFyc2VyIGZhaWxlZCB0byBmaW5kICddJywgc28gaXQncyBub3QgYSB2YWxpZCBsaW5rXG4gIGlmIChsYWJlbEVuZCA8IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgcG9zID0gbGFiZWxFbmQgKyAxO1xuICBpZiAocG9zIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4MjgvKiAoICovKSB7XG4gICAgLy9cbiAgICAvLyBJbmxpbmUgbGlua1xuICAgIC8vXG5cbiAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgIC8vICAgICAgICBeXiBza2lwcGluZyB0aGVzZSBzcGFjZXNcbiAgICBwb3MrKztcbiAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgY29kZSA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoIWlzU3BhY2UoY29kZSkgJiYgY29kZSAhPT0gMHgwQSkgeyBicmVhazsgfVxuICAgIH1cbiAgICBpZiAocG9zID49IG1heCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgLy8gICAgICAgICAgXl5eXl5eIHBhcnNpbmcgbGluayBkZXN0aW5hdGlvblxuICAgIHN0YXJ0ID0gcG9zO1xuICAgIHJlcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rRGVzdGluYXRpb24oc3RhdGUuc3JjLCBwb3MsIHN0YXRlLnBvc01heCk7XG4gICAgaWYgKHJlcy5vaykge1xuICAgICAgaHJlZiA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsocmVzLnN0cik7XG4gICAgICBpZiAoc3RhdGUubWQudmFsaWRhdGVMaW5rKGhyZWYpKSB7XG4gICAgICAgIHBvcyA9IHJlcy5wb3M7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBocmVmID0gJyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgICAgICAgICBeXiBza2lwcGluZyB0aGVzZSBzcGFjZXNcbiAgICBzdGFydCA9IHBvcztcbiAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgY29kZSA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICBpZiAoIWlzU3BhY2UoY29kZSkgJiYgY29kZSAhPT0gMHgwQSkgeyBicmVhazsgfVxuICAgIH1cblxuICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgLy8gICAgICAgICAgICAgICAgICBeXl5eXl5eIHBhcnNpbmcgbGluayB0aXRsZVxuICAgIHJlcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rVGl0bGUoc3RhdGUuc3JjLCBwb3MsIHN0YXRlLnBvc01heCk7XG4gICAgaWYgKHBvcyA8IG1heCAmJiBzdGFydCAhPT0gcG9zICYmIHJlcy5vaykge1xuICAgICAgdGl0bGUgPSByZXMuc3RyO1xuICAgICAgcG9zID0gcmVzLnBvcztcblxuICAgICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgICAgZm9yICg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICAgICAgY29kZSA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrOyB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRpdGxlID0gJyc7XG4gICAgfVxuXG4gICAgaWYgKHBvcyA+PSBtYXggfHwgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgyOS8qICkgKi8pIHtcbiAgICAgIHN0YXRlLnBvcyA9IG9sZFBvcztcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcG9zKys7XG4gIH0gZWxzZSB7XG4gICAgLy9cbiAgICAvLyBMaW5rIHJlZmVyZW5jZVxuICAgIC8vXG4gICAgaWYgKHR5cGVvZiBzdGF0ZS5lbnYucmVmZXJlbmNlcyA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4NUIvKiBbICovKSB7XG4gICAgICBzdGFydCA9IHBvcyArIDE7XG4gICAgICBwb3MgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua0xhYmVsKHN0YXRlLCBwb3MpO1xuICAgICAgaWYgKHBvcyA+PSAwKSB7XG4gICAgICAgIGxhYmVsID0gc3RhdGUuc3JjLnNsaWNlKHN0YXJ0LCBwb3MrKyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3MgPSBsYWJlbEVuZCArIDE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvcyA9IGxhYmVsRW5kICsgMTtcbiAgICB9XG5cbiAgICAvLyBjb3ZlcnMgbGFiZWwgPT09ICcnIGFuZCBsYWJlbCA9PT0gdW5kZWZpbmVkXG4gICAgLy8gKGNvbGxhcHNlZCByZWZlcmVuY2UgbGluayBhbmQgc2hvcnRjdXQgcmVmZXJlbmNlIGxpbmsgcmVzcGVjdGl2ZWx5KVxuICAgIGlmICghbGFiZWwpIHsgbGFiZWwgPSBzdGF0ZS5zcmMuc2xpY2UobGFiZWxTdGFydCwgbGFiZWxFbmQpOyB9XG5cbiAgICByZWYgPSBzdGF0ZS5lbnYucmVmZXJlbmNlc1tub3JtYWxpemVSZWZlcmVuY2UobGFiZWwpXTtcbiAgICBpZiAoIXJlZikge1xuICAgICAgc3RhdGUucG9zID0gb2xkUG9zO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBocmVmID0gcmVmLmhyZWY7XG4gICAgdGl0bGUgPSByZWYudGl0bGU7XG4gIH1cblxuICAvL1xuICAvLyBXZSBmb3VuZCB0aGUgZW5kIG9mIHRoZSBsaW5rLCBhbmQga25vdyBmb3IgYSBmYWN0IGl0J3MgYSB2YWxpZCBsaW5rO1xuICAvLyBzbyBhbGwgdGhhdCdzIGxlZnQgdG8gZG8gaXMgdG8gY2FsbCB0b2tlbml6ZXIuXG4gIC8vXG4gIGlmICghc2lsZW50KSB7XG4gICAgY29udGVudCA9IHN0YXRlLnNyYy5zbGljZShsYWJlbFN0YXJ0LCBsYWJlbEVuZCk7XG5cbiAgICBzdGF0ZS5tZC5pbmxpbmUucGFyc2UoXG4gICAgICBjb250ZW50LFxuICAgICAgc3RhdGUubWQsXG4gICAgICBzdGF0ZS5lbnYsXG4gICAgICB0b2tlbnMgPSBbXVxuICAgICk7XG5cbiAgICB0b2tlbiAgICAgICAgICA9IHN0YXRlLnB1c2goJ2ltYWdlJywgJ2ltZycsIDApO1xuICAgIHRva2VuLmF0dHJzICAgID0gYXR0cnMgPSBbIFsgJ3NyYycsIGhyZWYgXSwgWyAnYWx0JywgJycgXSBdO1xuICAgIHRva2VuLmNoaWxkcmVuID0gdG9rZW5zO1xuICAgIHRva2VuLmNvbnRlbnQgID0gY29udGVudDtcblxuICAgIGlmICh0aXRsZSkge1xuICAgICAgYXR0cnMucHVzaChbICd0aXRsZScsIHRpdGxlIF0pO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnBvcyA9IHBvcztcbiAgc3RhdGUucG9zTWF4ID0gbWF4O1xuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCAiLy8gUHJvY2VzcyBhdXRvbGlua3MgJzxwcm90b2NvbDouLi4+J1xuXG4ndXNlIHN0cmljdCc7XG5cblxuLyplc2xpbnQgbWF4LWxlbjowKi9cbnZhciBFTUFJTF9SRSAgICA9IC9eKFthLXpBLVowLTkuISMkJSYnKitcXC89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XFwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSopJC87XG52YXIgQVVUT0xJTktfUkUgPSAvXihbYS16QS1aXVthLXpBLVowLTkrLlxcLV17MSwzMX0pOihbXjw+XFx4MDAtXFx4MjBdKikkLztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGF1dG9saW5rKHN0YXRlLCBzaWxlbnQpIHtcbiAgdmFyIHVybCwgZnVsbFVybCwgdG9rZW4sIGNoLCBzdGFydCwgbWF4LFxuICAgICAgcG9zID0gc3RhdGUucG9zO1xuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDNDLyogPCAqLykgeyByZXR1cm4gZmFsc2U7IH1cblxuICBzdGFydCA9IHN0YXRlLnBvcztcbiAgbWF4ID0gc3RhdGUucG9zTWF4O1xuXG4gIGZvciAoOzspIHtcbiAgICBpZiAoKytwb3MgPj0gbWF4KSByZXR1cm4gZmFsc2U7XG5cbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICBpZiAoY2ggPT09IDB4M0MgLyogPCAqLykgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjaCA9PT0gMHgzRSAvKiA+ICovKSBicmVhaztcbiAgfVxuXG4gIHVybCA9IHN0YXRlLnNyYy5zbGljZShzdGFydCArIDEsIHBvcyk7XG5cbiAgaWYgKEFVVE9MSU5LX1JFLnRlc3QodXJsKSkge1xuICAgIGZ1bGxVcmwgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKHVybCk7XG4gICAgaWYgKCFzdGF0ZS5tZC52YWxpZGF0ZUxpbmsoZnVsbFVybCkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ2xpbmtfb3BlbicsICdhJywgMSk7XG4gICAgICB0b2tlbi5hdHRycyAgID0gWyBbICdocmVmJywgZnVsbFVybCBdIF07XG4gICAgICB0b2tlbi5tYXJrdXAgID0gJ2F1dG9saW5rJztcbiAgICAgIHRva2VuLmluZm8gICAgPSAnYXV0byc7XG5cbiAgICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCd0ZXh0JywgJycsIDApO1xuICAgICAgdG9rZW4uY29udGVudCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KHVybCk7XG5cbiAgICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCdsaW5rX2Nsb3NlJywgJ2EnLCAtMSk7XG4gICAgICB0b2tlbi5tYXJrdXAgID0gJ2F1dG9saW5rJztcbiAgICAgIHRva2VuLmluZm8gICAgPSAnYXV0byc7XG4gICAgfVxuXG4gICAgc3RhdGUucG9zICs9IHVybC5sZW5ndGggKyAyO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKEVNQUlMX1JFLnRlc3QodXJsKSkge1xuICAgIGZ1bGxVcmwgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKCdtYWlsdG86JyArIHVybCk7XG4gICAgaWYgKCFzdGF0ZS5tZC52YWxpZGF0ZUxpbmsoZnVsbFVybCkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ2xpbmtfb3BlbicsICdhJywgMSk7XG4gICAgICB0b2tlbi5hdHRycyAgID0gWyBbICdocmVmJywgZnVsbFVybCBdIF07XG4gICAgICB0b2tlbi5tYXJrdXAgID0gJ2F1dG9saW5rJztcbiAgICAgIHRva2VuLmluZm8gICAgPSAnYXV0byc7XG5cbiAgICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCd0ZXh0JywgJycsIDApO1xuICAgICAgdG9rZW4uY29udGVudCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KHVybCk7XG5cbiAgICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCdsaW5rX2Nsb3NlJywgJ2EnLCAtMSk7XG4gICAgICB0b2tlbi5tYXJrdXAgID0gJ2F1dG9saW5rJztcbiAgICAgIHRva2VuLmluZm8gICAgPSAnYXV0byc7XG4gICAgfVxuXG4gICAgc3RhdGUucG9zICs9IHVybC5sZW5ndGggKyAyO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsICIvLyBQcm9jZXNzIGh0bWwgdGFnc1xuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIEhUTUxfVEFHX1JFID0gcmVxdWlyZSgnLi4vY29tbW9uL2h0bWxfcmUnKS5IVE1MX1RBR19SRTtcblxuXG5mdW5jdGlvbiBpc0xpbmtPcGVuKHN0cikge1xuICByZXR1cm4gL148YVs+XFxzXS9pLnRlc3Qoc3RyKTtcbn1cbmZ1bmN0aW9uIGlzTGlua0Nsb3NlKHN0cikge1xuICByZXR1cm4gL148XFwvYVxccyo+L2kudGVzdChzdHIpO1xufVxuXG5cbmZ1bmN0aW9uIGlzTGV0dGVyKGNoKSB7XG4gIC8qZXNsaW50IG5vLWJpdHdpc2U6MCovXG4gIHZhciBsYyA9IGNoIHwgMHgyMDsgLy8gdG8gbG93ZXIgY2FzZVxuICByZXR1cm4gKGxjID49IDB4NjEvKiBhICovKSAmJiAobGMgPD0gMHg3YS8qIHogKi8pO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaHRtbF9pbmxpbmUoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgY2gsIG1hdGNoLCBtYXgsIHRva2VuLFxuICAgICAgcG9zID0gc3RhdGUucG9zO1xuXG4gIGlmICghc3RhdGUubWQub3B0aW9ucy5odG1sKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gIC8vIENoZWNrIHN0YXJ0XG4gIG1heCA9IHN0YXRlLnBvc01heDtcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IDB4M0MvKiA8ICovIHx8XG4gICAgICBwb3MgKyAyID49IG1heCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFF1aWNrIGZhaWwgb24gc2Vjb25kIGNoYXJcbiAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MgKyAxKTtcbiAgaWYgKGNoICE9PSAweDIxLyogISAqLyAmJlxuICAgICAgY2ggIT09IDB4M0YvKiA/ICovICYmXG4gICAgICBjaCAhPT0gMHgyRi8qIC8gKi8gJiZcbiAgICAgICFpc0xldHRlcihjaCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBtYXRjaCA9IHN0YXRlLnNyYy5zbGljZShwb3MpLm1hdGNoKEhUTUxfVEFHX1JFKTtcbiAgaWYgKCFtYXRjaCkgeyByZXR1cm4gZmFsc2U7IH1cblxuICBpZiAoIXNpbGVudCkge1xuICAgIHRva2VuICAgICAgICAgPSBzdGF0ZS5wdXNoKCdodG1sX2lubGluZScsICcnLCAwKTtcbiAgICB0b2tlbi5jb250ZW50ID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgcG9zICsgbWF0Y2hbMF0ubGVuZ3RoKTtcblxuICAgIGlmIChpc0xpbmtPcGVuKHRva2VuLmNvbnRlbnQpKSAgc3RhdGUubGlua0xldmVsKys7XG4gICAgaWYgKGlzTGlua0Nsb3NlKHRva2VuLmNvbnRlbnQpKSBzdGF0ZS5saW5rTGV2ZWwtLTtcbiAgfVxuICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCAiLy8gUHJvY2VzcyBodG1sIGVudGl0eSAtICYjMTIzOywgJiN4QUY7LCAmcXVvdDssIC4uLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbnRpdGllcyAgICAgICAgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi9lbnRpdGllcycpO1xudmFyIGhhcyAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaGFzO1xudmFyIGlzVmFsaWRFbnRpdHlDb2RlID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNWYWxpZEVudGl0eUNvZGU7XG52YXIgZnJvbUNvZGVQb2ludCAgICAgPSByZXF1aXJlKCcuLi9jb21tb24vdXRpbHMnKS5mcm9tQ29kZVBvaW50O1xuXG5cbnZhciBESUdJVEFMX1JFID0gL14mIygoPzp4W2EtZjAtOV17MSw2fXxbMC05XXsxLDd9KSk7L2k7XG52YXIgTkFNRURfUkUgICA9IC9eJihbYS16XVthLXowLTldezEsMzF9KTsvaTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVudGl0eShzdGF0ZSwgc2lsZW50KSB7XG4gIHZhciBjaCwgY29kZSwgbWF0Y2gsIHRva2VuLCBwb3MgPSBzdGF0ZS5wb3MsIG1heCA9IHN0YXRlLnBvc01heDtcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgyNi8qICYgKi8pIHJldHVybiBmYWxzZTtcblxuICBpZiAocG9zICsgMSA+PSBtYXgpIHJldHVybiBmYWxzZTtcblxuICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyArIDEpO1xuXG4gIGlmIChjaCA9PT0gMHgyMyAvKiAjICovKSB7XG4gICAgbWF0Y2ggPSBzdGF0ZS5zcmMuc2xpY2UocG9zKS5tYXRjaChESUdJVEFMX1JFKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgIGNvZGUgPSBtYXRjaFsxXVswXS50b0xvd2VyQ2FzZSgpID09PSAneCcgPyBwYXJzZUludChtYXRjaFsxXS5zbGljZSgxKSwgMTYpIDogcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTtcblxuICAgICAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgndGV4dF9zcGVjaWFsJywgJycsIDApO1xuICAgICAgICB0b2tlbi5jb250ZW50ID0gaXNWYWxpZEVudGl0eUNvZGUoY29kZSkgPyBmcm9tQ29kZVBvaW50KGNvZGUpIDogZnJvbUNvZGVQb2ludCgweEZGRkQpO1xuICAgICAgICB0b2tlbi5tYXJrdXAgID0gbWF0Y2hbMF07XG4gICAgICAgIHRva2VuLmluZm8gICAgPSAnZW50aXR5JztcbiAgICAgIH1cbiAgICAgIHN0YXRlLnBvcyArPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbWF0Y2ggPSBzdGF0ZS5zcmMuc2xpY2UocG9zKS5tYXRjaChOQU1FRF9SRSk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBpZiAoaGFzKGVudGl0aWVzLCBtYXRjaFsxXSkpIHtcbiAgICAgICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgICAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgndGV4dF9zcGVjaWFsJywgJycsIDApO1xuICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSBlbnRpdGllc1ttYXRjaFsxXV07XG4gICAgICAgICAgdG9rZW4ubWFya3VwICA9IG1hdGNoWzBdO1xuICAgICAgICAgIHRva2VuLmluZm8gICAgPSAnZW50aXR5JztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwgIi8vIEZvciBlYWNoIG9wZW5pbmcgZW1waGFzaXMtbGlrZSBtYXJrZXIgZmluZCBhIG1hdGNoaW5nIGNsb3Npbmcgb25lXG4vL1xuJ3VzZSBzdHJpY3QnO1xuXG5cbmZ1bmN0aW9uIHByb2Nlc3NEZWxpbWl0ZXJzKHN0YXRlLCBkZWxpbWl0ZXJzKSB7XG4gIHZhciBjbG9zZXJJZHgsIG9wZW5lcklkeCwgY2xvc2VyLCBvcGVuZXIsIG1pbk9wZW5lcklkeCwgbmV3TWluT3BlbmVySWR4LFxuICAgICAgaXNPZGRNYXRjaCwgbGFzdEp1bXAsXG4gICAgICBvcGVuZXJzQm90dG9tID0ge30sXG4gICAgICBtYXggPSBkZWxpbWl0ZXJzLmxlbmd0aDtcblxuICBpZiAoIW1heCkgcmV0dXJuO1xuXG4gIC8vIGhlYWRlcklkeCBpcyB0aGUgZmlyc3QgZGVsaW1pdGVyIG9mIHRoZSBjdXJyZW50ICh3aGVyZSBjbG9zZXIgaXMpIGRlbGltaXRlciBydW5cbiAgdmFyIGhlYWRlcklkeCA9IDA7XG4gIHZhciBsYXN0VG9rZW5JZHggPSAtMjsgLy8gbmVlZHMgYW55IHZhbHVlIGxvd2VyIHRoYW4gLTFcbiAgdmFyIGp1bXBzID0gW107XG5cbiAgZm9yIChjbG9zZXJJZHggPSAwOyBjbG9zZXJJZHggPCBtYXg7IGNsb3NlcklkeCsrKSB7XG4gICAgY2xvc2VyID0gZGVsaW1pdGVyc1tjbG9zZXJJZHhdO1xuXG4gICAganVtcHMucHVzaCgwKTtcblxuICAgIC8vIG1hcmtlcnMgYmVsb25nIHRvIHNhbWUgZGVsaW1pdGVyIHJ1biBpZjpcbiAgICAvLyAgLSB0aGV5IGhhdmUgYWRqYWNlbnQgdG9rZW5zXG4gICAgLy8gIC0gQU5EIG1hcmtlcnMgYXJlIHRoZSBzYW1lXG4gICAgLy9cbiAgICBpZiAoZGVsaW1pdGVyc1toZWFkZXJJZHhdLm1hcmtlciAhPT0gY2xvc2VyLm1hcmtlciB8fCBsYXN0VG9rZW5JZHggIT09IGNsb3Nlci50b2tlbiAtIDEpIHtcbiAgICAgIGhlYWRlcklkeCA9IGNsb3NlcklkeDtcbiAgICB9XG5cbiAgICBsYXN0VG9rZW5JZHggPSBjbG9zZXIudG9rZW47XG5cbiAgICAvLyBMZW5ndGggaXMgb25seSB1c2VkIGZvciBlbXBoYXNpcy1zcGVjaWZpYyBcInJ1bGUgb2YgM1wiLFxuICAgIC8vIGlmIGl0J3Mgbm90IGRlZmluZWQgKGluIHN0cmlrZXRocm91Z2ggb3IgM3JkIHBhcnR5IHBsdWdpbnMpLFxuICAgIC8vIHdlIGNhbiBkZWZhdWx0IGl0IHRvIDAgdG8gZGlzYWJsZSB0aG9zZSBjaGVja3MuXG4gICAgLy9cbiAgICBjbG9zZXIubGVuZ3RoID0gY2xvc2VyLmxlbmd0aCB8fCAwO1xuXG4gICAgaWYgKCFjbG9zZXIuY2xvc2UpIGNvbnRpbnVlO1xuXG4gICAgLy8gUHJldmlvdXNseSBjYWxjdWxhdGVkIGxvd2VyIGJvdW5kcyAocHJldmlvdXMgZmFpbHMpXG4gICAgLy8gZm9yIGVhY2ggbWFya2VyLCBlYWNoIGRlbGltaXRlciBsZW5ndGggbW9kdWxvIDMsXG4gICAgLy8gYW5kIGZvciB3aGV0aGVyIHRoaXMgY2xvc2VyIGNhbiBiZSBhbiBvcGVuZXI7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2NvbW1vbm1hcmsvY21hcmsvY29tbWl0LzM0MjUwZTEyY2NlYmRjNjM3MmI4YjQ5YzQ0ZmFiNTdjNzI0NDM0NjBcbiAgICBpZiAoIW9wZW5lcnNCb3R0b20uaGFzT3duUHJvcGVydHkoY2xvc2VyLm1hcmtlcikpIHtcbiAgICAgIG9wZW5lcnNCb3R0b21bY2xvc2VyLm1hcmtlcl0gPSBbIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEgXTtcbiAgICB9XG5cbiAgICBtaW5PcGVuZXJJZHggPSBvcGVuZXJzQm90dG9tW2Nsb3Nlci5tYXJrZXJdWyhjbG9zZXIub3BlbiA/IDMgOiAwKSArIChjbG9zZXIubGVuZ3RoICUgMyldO1xuXG4gICAgb3BlbmVySWR4ID0gaGVhZGVySWR4IC0ganVtcHNbaGVhZGVySWR4XSAtIDE7XG5cbiAgICBuZXdNaW5PcGVuZXJJZHggPSBvcGVuZXJJZHg7XG5cbiAgICBmb3IgKDsgb3BlbmVySWR4ID4gbWluT3BlbmVySWR4OyBvcGVuZXJJZHggLT0ganVtcHNbb3BlbmVySWR4XSArIDEpIHtcbiAgICAgIG9wZW5lciA9IGRlbGltaXRlcnNbb3BlbmVySWR4XTtcblxuICAgICAgaWYgKG9wZW5lci5tYXJrZXIgIT09IGNsb3Nlci5tYXJrZXIpIGNvbnRpbnVlO1xuXG4gICAgICBpZiAob3BlbmVyLm9wZW4gJiYgb3BlbmVyLmVuZCA8IDApIHtcblxuICAgICAgICBpc09kZE1hdGNoID0gZmFsc2U7XG5cbiAgICAgICAgLy8gZnJvbSBzcGVjOlxuICAgICAgICAvL1xuICAgICAgICAvLyBJZiBvbmUgb2YgdGhlIGRlbGltaXRlcnMgY2FuIGJvdGggb3BlbiBhbmQgY2xvc2UgZW1waGFzaXMsIHRoZW4gdGhlXG4gICAgICAgIC8vIHN1bSBvZiB0aGUgbGVuZ3RocyBvZiB0aGUgZGVsaW1pdGVyIHJ1bnMgY29udGFpbmluZyB0aGUgb3BlbmluZyBhbmRcbiAgICAgICAgLy8gY2xvc2luZyBkZWxpbWl0ZXJzIG11c3Qgbm90IGJlIGEgbXVsdGlwbGUgb2YgMyB1bmxlc3MgYm90aCBsZW5ndGhzXG4gICAgICAgIC8vIGFyZSBtdWx0aXBsZXMgb2YgMy5cbiAgICAgICAgLy9cbiAgICAgICAgaWYgKG9wZW5lci5jbG9zZSB8fCBjbG9zZXIub3Blbikge1xuICAgICAgICAgIGlmICgob3BlbmVyLmxlbmd0aCArIGNsb3Nlci5sZW5ndGgpICUgMyA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKG9wZW5lci5sZW5ndGggJSAzICE9PSAwIHx8IGNsb3Nlci5sZW5ndGggJSAzICE9PSAwKSB7XG4gICAgICAgICAgICAgIGlzT2RkTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNPZGRNYXRjaCkge1xuICAgICAgICAgIC8vIElmIHByZXZpb3VzIGRlbGltaXRlciBjYW5ub3QgYmUgYW4gb3BlbmVyLCB3ZSBjYW4gc2FmZWx5IHNraXBcbiAgICAgICAgICAvLyB0aGUgZW50aXJlIHNlcXVlbmNlIGluIGZ1dHVyZSBjaGVja3MuIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZVxuICAgICAgICAgIC8vIHN1cmUgYWxnb3JpdGhtIGhhcyBsaW5lYXIgY29tcGxleGl0eSAoc2VlICpfKl8qXypfKl8uLi4gY2FzZSkuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBsYXN0SnVtcCA9IG9wZW5lcklkeCA+IDAgJiYgIWRlbGltaXRlcnNbb3BlbmVySWR4IC0gMV0ub3BlbiA/XG4gICAgICAgICAgICBqdW1wc1tvcGVuZXJJZHggLSAxXSArIDEgOlxuICAgICAgICAgICAgMDtcblxuICAgICAgICAgIGp1bXBzW2Nsb3NlcklkeF0gPSBjbG9zZXJJZHggLSBvcGVuZXJJZHggKyBsYXN0SnVtcDtcbiAgICAgICAgICBqdW1wc1tvcGVuZXJJZHhdID0gbGFzdEp1bXA7XG5cbiAgICAgICAgICBjbG9zZXIub3BlbiAgPSBmYWxzZTtcbiAgICAgICAgICBvcGVuZXIuZW5kICAgPSBjbG9zZXJJZHg7XG4gICAgICAgICAgb3BlbmVyLmNsb3NlID0gZmFsc2U7XG4gICAgICAgICAgbmV3TWluT3BlbmVySWR4ID0gLTE7XG4gICAgICAgICAgLy8gdHJlYXQgbmV4dCB0b2tlbiBhcyBzdGFydCBvZiBydW4sXG4gICAgICAgICAgLy8gaXQgb3B0aW1pemVzIHNraXBzIGluICoqPC4uLj4qKmEqKjwuLi4+KiogcGF0aG9sb2dpY2FsIGNhc2VcbiAgICAgICAgICBsYXN0VG9rZW5JZHggPSAtMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdNaW5PcGVuZXJJZHggIT09IC0xKSB7XG4gICAgICAvLyBJZiBtYXRjaCBmb3IgdGhpcyBkZWxpbWl0ZXIgcnVuIGZhaWxlZCwgd2Ugd2FudCB0byBzZXQgbG93ZXIgYm91bmQgZm9yXG4gICAgICAvLyBmdXR1cmUgbG9va3Vwcy4gVGhpcyBpcyByZXF1aXJlZCB0byBtYWtlIHN1cmUgYWxnb3JpdGhtIGhhcyBsaW5lYXJcbiAgICAgIC8vIGNvbXBsZXhpdHkuXG4gICAgICAvL1xuICAgICAgLy8gU2VlIGRldGFpbHMgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21tb25tYXJrL2NtYXJrL2lzc3Vlcy8xNzgjaXNzdWVjb21tZW50LTI3MDQxNzQ0MlxuICAgICAgLy9cbiAgICAgIG9wZW5lcnNCb3R0b21bY2xvc2VyLm1hcmtlcl1bKGNsb3Nlci5vcGVuID8gMyA6IDApICsgKChjbG9zZXIubGVuZ3RoIHx8IDApICUgMyldID0gbmV3TWluT3BlbmVySWR4O1xuICAgIH1cbiAgfVxufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbGlua19wYWlycyhzdGF0ZSkge1xuICB2YXIgY3VycixcbiAgICAgIHRva2Vuc19tZXRhID0gc3RhdGUudG9rZW5zX21ldGEsXG4gICAgICBtYXggPSBzdGF0ZS50b2tlbnNfbWV0YS5sZW5ndGg7XG5cbiAgcHJvY2Vzc0RlbGltaXRlcnMoc3RhdGUsIHN0YXRlLmRlbGltaXRlcnMpO1xuXG4gIGZvciAoY3VyciA9IDA7IGN1cnIgPCBtYXg7IGN1cnIrKykge1xuICAgIGlmICh0b2tlbnNfbWV0YVtjdXJyXSAmJiB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKSB7XG4gICAgICBwcm9jZXNzRGVsaW1pdGVycyhzdGF0ZSwgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycyk7XG4gICAgfVxuICB9XG59O1xuIiwgIi8vIENsZWFuIHVwIHRva2VucyBhZnRlciBlbXBoYXNpcyBhbmQgc3RyaWtldGhyb3VnaCBwb3N0cHJvY2Vzc2luZzpcbi8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXMgaW50byBvbmUgYW5kIHJlLWNhbGN1bGF0ZSBhbGwgdG9rZW4gbGV2ZWxzXG4vL1xuLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpbml0aWFsbHkgZW1waGFzaXMgZGVsaW1pdGVyIG1hcmtlcnMgKCosIF8sIH4pXG4vLyBhcmUgdHJlYXRlZCBhcyB0aGVpciBvd24gc2VwYXJhdGUgdGV4dCB0b2tlbnMuIFRoZW4gZW1waGFzaXMgcnVsZSBlaXRoZXJcbi8vIGxlYXZlcyB0aGVtIGFzIHRleHQgKG5lZWRlZCB0byBtZXJnZSB3aXRoIGFkamFjZW50IHRleHQpIG9yIHR1cm5zIHRoZW1cbi8vIGludG8gb3BlbmluZy9jbG9zaW5nIHRhZ3MgKHdoaWNoIG1lc3NlcyB1cCBsZXZlbHMgaW5zaWRlKS5cbi8vXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmcmFnbWVudHNfam9pbihzdGF0ZSkge1xuICB2YXIgY3VyciwgbGFzdCxcbiAgICAgIGxldmVsID0gMCxcbiAgICAgIHRva2VucyA9IHN0YXRlLnRva2VucyxcbiAgICAgIG1heCA9IHN0YXRlLnRva2Vucy5sZW5ndGg7XG5cbiAgZm9yIChjdXJyID0gbGFzdCA9IDA7IGN1cnIgPCBtYXg7IGN1cnIrKykge1xuICAgIC8vIHJlLWNhbGN1bGF0ZSBsZXZlbHMgYWZ0ZXIgZW1waGFzaXMvc3RyaWtldGhyb3VnaCB0dXJucyBzb21lIHRleHQgbm9kZXNcbiAgICAvLyBpbnRvIG9wZW5pbmcvY2xvc2luZyB0YWdzXG4gICAgaWYgKHRva2Vuc1tjdXJyXS5uZXN0aW5nIDwgMCkgbGV2ZWwtLTsgLy8gY2xvc2luZyB0YWdcbiAgICB0b2tlbnNbY3Vycl0ubGV2ZWwgPSBsZXZlbDtcbiAgICBpZiAodG9rZW5zW2N1cnJdLm5lc3RpbmcgPiAwKSBsZXZlbCsrOyAvLyBvcGVuaW5nIHRhZ1xuXG4gICAgaWYgKHRva2Vuc1tjdXJyXS50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgY3VyciArIDEgPCBtYXggJiZcbiAgICAgICAgdG9rZW5zW2N1cnIgKyAxXS50eXBlID09PSAndGV4dCcpIHtcblxuICAgICAgLy8gY29sbGFwc2UgdHdvIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgIHRva2Vuc1tjdXJyICsgMV0uY29udGVudCA9IHRva2Vuc1tjdXJyXS5jb250ZW50ICsgdG9rZW5zW2N1cnIgKyAxXS5jb250ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VyciAhPT0gbGFzdCkgeyB0b2tlbnNbbGFzdF0gPSB0b2tlbnNbY3Vycl07IH1cblxuICAgICAgbGFzdCsrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjdXJyICE9PSBsYXN0KSB7XG4gICAgdG9rZW5zLmxlbmd0aCA9IGxhc3Q7XG4gIH1cbn07XG4iLCAiLy8gSW5saW5lIHBhcnNlciBzdGF0ZVxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFRva2VuICAgICAgICAgID0gcmVxdWlyZSgnLi4vdG9rZW4nKTtcbnZhciBpc1doaXRlU3BhY2UgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzV2hpdGVTcGFjZTtcbnZhciBpc1B1bmN0Q2hhciAgICA9IHJlcXVpcmUoJy4uL2NvbW1vbi91dGlscycpLmlzUHVuY3RDaGFyO1xudmFyIGlzTWRBc2NpaVB1bmN0ID0gcmVxdWlyZSgnLi4vY29tbW9uL3V0aWxzJykuaXNNZEFzY2lpUHVuY3Q7XG5cblxuZnVuY3Rpb24gU3RhdGVJbmxpbmUoc3JjLCBtZCwgZW52LCBvdXRUb2tlbnMpIHtcbiAgdGhpcy5zcmMgPSBzcmM7XG4gIHRoaXMuZW52ID0gZW52O1xuICB0aGlzLm1kID0gbWQ7XG4gIHRoaXMudG9rZW5zID0gb3V0VG9rZW5zO1xuICB0aGlzLnRva2Vuc19tZXRhID0gQXJyYXkob3V0VG9rZW5zLmxlbmd0aCk7XG5cbiAgdGhpcy5wb3MgPSAwO1xuICB0aGlzLnBvc01heCA9IHRoaXMuc3JjLmxlbmd0aDtcbiAgdGhpcy5sZXZlbCA9IDA7XG4gIHRoaXMucGVuZGluZyA9ICcnO1xuICB0aGlzLnBlbmRpbmdMZXZlbCA9IDA7XG5cbiAgLy8gU3RvcmVzIHsgc3RhcnQ6IGVuZCB9IHBhaXJzLiBVc2VmdWwgZm9yIGJhY2t0cmFja1xuICAvLyBvcHRpbWl6YXRpb24gb2YgcGFpcnMgcGFyc2UgKGVtcGhhc2lzLCBzdHJpa2VzKS5cbiAgdGhpcy5jYWNoZSA9IHt9O1xuXG4gIC8vIExpc3Qgb2YgZW1waGFzaXMtbGlrZSBkZWxpbWl0ZXJzIGZvciBjdXJyZW50IHRhZ1xuICB0aGlzLmRlbGltaXRlcnMgPSBbXTtcblxuICAvLyBTdGFjayBvZiBkZWxpbWl0ZXIgbGlzdHMgZm9yIHVwcGVyIGxldmVsIHRhZ3NcbiAgdGhpcy5fcHJldl9kZWxpbWl0ZXJzID0gW107XG5cbiAgLy8gYmFja3RpY2sgbGVuZ3RoID0+IGxhc3Qgc2VlbiBwb3NpdGlvblxuICB0aGlzLmJhY2t0aWNrcyA9IHt9O1xuICB0aGlzLmJhY2t0aWNrc1NjYW5uZWQgPSBmYWxzZTtcblxuICAvLyBDb3VudGVyIHVzZWQgdG8gZGlzYWJsZSBpbmxpbmUgbGlua2lmeS1pdCBleGVjdXRpb25cbiAgLy8gaW5zaWRlIDxhPiBhbmQgbWFya2Rvd24gbGlua3NcbiAgdGhpcy5saW5rTGV2ZWwgPSAwO1xufVxuXG5cbi8vIEZsdXNoIHBlbmRpbmcgdGV4dFxuLy9cblN0YXRlSW5saW5lLnByb3RvdHlwZS5wdXNoUGVuZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRva2VuID0gbmV3IFRva2VuKCd0ZXh0JywgJycsIDApO1xuICB0b2tlbi5jb250ZW50ID0gdGhpcy5wZW5kaW5nO1xuICB0b2tlbi5sZXZlbCA9IHRoaXMucGVuZGluZ0xldmVsO1xuICB0aGlzLnRva2Vucy5wdXNoKHRva2VuKTtcbiAgdGhpcy5wZW5kaW5nID0gJyc7XG4gIHJldHVybiB0b2tlbjtcbn07XG5cblxuLy8gUHVzaCBuZXcgdG9rZW4gdG8gXCJzdHJlYW1cIi5cbi8vIElmIHBlbmRpbmcgdGV4dCBleGlzdHMgLSBmbHVzaCBpdCBhcyB0ZXh0IHRva2VuXG4vL1xuU3RhdGVJbmxpbmUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAodHlwZSwgdGFnLCBuZXN0aW5nKSB7XG4gIGlmICh0aGlzLnBlbmRpbmcpIHtcbiAgICB0aGlzLnB1c2hQZW5kaW5nKCk7XG4gIH1cblxuICB2YXIgdG9rZW4gPSBuZXcgVG9rZW4odHlwZSwgdGFnLCBuZXN0aW5nKTtcbiAgdmFyIHRva2VuX21ldGEgPSBudWxsO1xuXG4gIGlmIChuZXN0aW5nIDwgMCkge1xuICAgIC8vIGNsb3NpbmcgdGFnXG4gICAgdGhpcy5sZXZlbC0tO1xuICAgIHRoaXMuZGVsaW1pdGVycyA9IHRoaXMuX3ByZXZfZGVsaW1pdGVycy5wb3AoKTtcbiAgfVxuXG4gIHRva2VuLmxldmVsID0gdGhpcy5sZXZlbDtcblxuICBpZiAobmVzdGluZyA+IDApIHtcbiAgICAvLyBvcGVuaW5nIHRhZ1xuICAgIHRoaXMubGV2ZWwrKztcbiAgICB0aGlzLl9wcmV2X2RlbGltaXRlcnMucHVzaCh0aGlzLmRlbGltaXRlcnMpO1xuICAgIHRoaXMuZGVsaW1pdGVycyA9IFtdO1xuICAgIHRva2VuX21ldGEgPSB7IGRlbGltaXRlcnM6IHRoaXMuZGVsaW1pdGVycyB9O1xuICB9XG5cbiAgdGhpcy5wZW5kaW5nTGV2ZWwgPSB0aGlzLmxldmVsO1xuICB0aGlzLnRva2Vucy5wdXNoKHRva2VuKTtcbiAgdGhpcy50b2tlbnNfbWV0YS5wdXNoKHRva2VuX21ldGEpO1xuICByZXR1cm4gdG9rZW47XG59O1xuXG5cbi8vIFNjYW4gYSBzZXF1ZW5jZSBvZiBlbXBoYXNpcy1saWtlIG1hcmtlcnMsIGFuZCBkZXRlcm1pbmUgd2hldGhlclxuLy8gaXQgY2FuIHN0YXJ0IGFuIGVtcGhhc2lzIHNlcXVlbmNlIG9yIGVuZCBhbiBlbXBoYXNpcyBzZXF1ZW5jZS5cbi8vXG4vLyAgLSBzdGFydCAtIHBvc2l0aW9uIHRvIHNjYW4gZnJvbSAoaXQgc2hvdWxkIHBvaW50IGF0IGEgdmFsaWQgbWFya2VyKTtcbi8vICAtIGNhblNwbGl0V29yZCAtIGRldGVybWluZSBpZiB0aGVzZSBtYXJrZXJzIGNhbiBiZSBmb3VuZCBpbnNpZGUgYSB3b3JkXG4vL1xuU3RhdGVJbmxpbmUucHJvdG90eXBlLnNjYW5EZWxpbXMgPSBmdW5jdGlvbiAoc3RhcnQsIGNhblNwbGl0V29yZCkge1xuICB2YXIgcG9zID0gc3RhcnQsIGxhc3RDaGFyLCBuZXh0Q2hhciwgY291bnQsIGNhbl9vcGVuLCBjYW5fY2xvc2UsXG4gICAgICBpc0xhc3RXaGl0ZVNwYWNlLCBpc0xhc3RQdW5jdENoYXIsXG4gICAgICBpc05leHRXaGl0ZVNwYWNlLCBpc05leHRQdW5jdENoYXIsXG4gICAgICBsZWZ0X2ZsYW5raW5nID0gdHJ1ZSxcbiAgICAgIHJpZ2h0X2ZsYW5raW5nID0gdHJ1ZSxcbiAgICAgIG1heCA9IHRoaXMucG9zTWF4LFxuICAgICAgbWFya2VyID0gdGhpcy5zcmMuY2hhckNvZGVBdChzdGFydCk7XG5cbiAgLy8gdHJlYXQgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGFzIGEgd2hpdGVzcGFjZVxuICBsYXN0Q2hhciA9IHN0YXJ0ID4gMCA/IHRoaXMuc3JjLmNoYXJDb2RlQXQoc3RhcnQgLSAxKSA6IDB4MjA7XG5cbiAgd2hpbGUgKHBvcyA8IG1heCAmJiB0aGlzLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IG1hcmtlcikgeyBwb3MrKzsgfVxuXG4gIGNvdW50ID0gcG9zIC0gc3RhcnQ7XG5cbiAgLy8gdHJlYXQgZW5kIG9mIHRoZSBsaW5lIGFzIGEgd2hpdGVzcGFjZVxuICBuZXh0Q2hhciA9IHBvcyA8IG1heCA/IHRoaXMuc3JjLmNoYXJDb2RlQXQocG9zKSA6IDB4MjA7XG5cbiAgaXNMYXN0UHVuY3RDaGFyID0gaXNNZEFzY2lpUHVuY3QobGFzdENoYXIpIHx8IGlzUHVuY3RDaGFyKFN0cmluZy5mcm9tQ2hhckNvZGUobGFzdENoYXIpKTtcbiAgaXNOZXh0UHVuY3RDaGFyID0gaXNNZEFzY2lpUHVuY3QobmV4dENoYXIpIHx8IGlzUHVuY3RDaGFyKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dENoYXIpKTtcblxuICBpc0xhc3RXaGl0ZVNwYWNlID0gaXNXaGl0ZVNwYWNlKGxhc3RDaGFyKTtcbiAgaXNOZXh0V2hpdGVTcGFjZSA9IGlzV2hpdGVTcGFjZShuZXh0Q2hhcik7XG5cbiAgaWYgKGlzTmV4dFdoaXRlU3BhY2UpIHtcbiAgICBsZWZ0X2ZsYW5raW5nID0gZmFsc2U7XG4gIH0gZWxzZSBpZiAoaXNOZXh0UHVuY3RDaGFyKSB7XG4gICAgaWYgKCEoaXNMYXN0V2hpdGVTcGFjZSB8fCBpc0xhc3RQdW5jdENoYXIpKSB7XG4gICAgICBsZWZ0X2ZsYW5raW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzTGFzdFdoaXRlU3BhY2UpIHtcbiAgICByaWdodF9mbGFua2luZyA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKGlzTGFzdFB1bmN0Q2hhcikge1xuICAgIGlmICghKGlzTmV4dFdoaXRlU3BhY2UgfHwgaXNOZXh0UHVuY3RDaGFyKSkge1xuICAgICAgcmlnaHRfZmxhbmtpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNhblNwbGl0V29yZCkge1xuICAgIGNhbl9vcGVuICA9IGxlZnRfZmxhbmtpbmcgICYmICghcmlnaHRfZmxhbmtpbmcgfHwgaXNMYXN0UHVuY3RDaGFyKTtcbiAgICBjYW5fY2xvc2UgPSByaWdodF9mbGFua2luZyAmJiAoIWxlZnRfZmxhbmtpbmcgIHx8IGlzTmV4dFB1bmN0Q2hhcik7XG4gIH0gZWxzZSB7XG4gICAgY2FuX29wZW4gID0gbGVmdF9mbGFua2luZztcbiAgICBjYW5fY2xvc2UgPSByaWdodF9mbGFua2luZztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgY2FuX29wZW46ICBjYW5fb3BlbixcbiAgICBjYW5fY2xvc2U6IGNhbl9jbG9zZSxcbiAgICBsZW5ndGg6ICAgIGNvdW50XG4gIH07XG59O1xuXG5cbi8vIHJlLWV4cG9ydCBUb2tlbiBjbGFzcyB0byB1c2UgaW4gYmxvY2sgcnVsZXNcblN0YXRlSW5saW5lLnByb3RvdHlwZS5Ub2tlbiA9IFRva2VuO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gU3RhdGVJbmxpbmU7XG4iLCAiLyoqIGludGVybmFsXG4gKiBjbGFzcyBQYXJzZXJJbmxpbmVcbiAqXG4gKiBUb2tlbml6ZXMgcGFyYWdyYXBoIGNvbnRlbnQuXG4gKiovXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFJ1bGVyICAgICAgICAgICA9IHJlcXVpcmUoJy4vcnVsZXInKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGFyc2VyIHJ1bGVzXG5cbnZhciBfcnVsZXMgPSBbXG4gIFsgJ3RleHQnLCAgICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL3RleHQnKSBdLFxuICBbICdsaW5raWZ5JywgICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9saW5raWZ5JykgXSxcbiAgWyAnbmV3bGluZScsICAgICAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvbmV3bGluZScpIF0sXG4gIFsgJ2VzY2FwZScsICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2VzY2FwZScpIF0sXG4gIFsgJ2JhY2t0aWNrcycsICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2JhY2t0aWNrcycpIF0sXG4gIFsgJ3N0cmlrZXRocm91Z2gnLCAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL3N0cmlrZXRocm91Z2gnKS50b2tlbml6ZSBdLFxuICBbICdlbXBoYXNpcycsICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9lbXBoYXNpcycpLnRva2VuaXplIF0sXG4gIFsgJ2xpbmsnLCAgICAgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2xpbmsnKSBdLFxuICBbICdpbWFnZScsICAgICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9pbWFnZScpIF0sXG4gIFsgJ2F1dG9saW5rJywgICAgICAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2F1dG9saW5rJykgXSxcbiAgWyAnaHRtbF9pbmxpbmUnLCAgICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvaHRtbF9pbmxpbmUnKSBdLFxuICBbICdlbnRpdHknLCAgICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9lbnRpdHknKSBdXG5dO1xuXG4vLyBgcnVsZTJgIHJ1bGVzZXQgd2FzIGNyZWF0ZWQgc3BlY2lmaWNhbGx5IGZvciBlbXBoYXNpcy9zdHJpa2V0aHJvdWdoXG4vLyBwb3N0LXByb2Nlc3NpbmcgYW5kIG1heSBiZSBjaGFuZ2VkIGluIHRoZSBmdXR1cmUuXG4vL1xuLy8gRG9uJ3QgdXNlIHRoaXMgZm9yIGFueXRoaW5nIGV4Y2VwdCBwYWlycyAocGx1Z2lucyB3b3JraW5nIHdpdGggYGJhbGFuY2VfcGFpcnNgKS5cbi8vXG52YXIgX3J1bGVzMiA9IFtcbiAgWyAnYmFsYW5jZV9wYWlycycsICAgcmVxdWlyZSgnLi9ydWxlc19pbmxpbmUvYmFsYW5jZV9wYWlycycpIF0sXG4gIFsgJ3N0cmlrZXRocm91Z2gnLCAgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL3N0cmlrZXRocm91Z2gnKS5wb3N0UHJvY2VzcyBdLFxuICBbICdlbXBoYXNpcycsICAgICAgICByZXF1aXJlKCcuL3J1bGVzX2lubGluZS9lbXBoYXNpcycpLnBvc3RQcm9jZXNzIF0sXG4gIC8vIHJ1bGVzIGZvciBwYWlycyBzZXBhcmF0ZSAnKionIGludG8gaXRzIG93biB0ZXh0IHRva2Vucywgd2hpY2ggbWF5IGJlIGxlZnQgdW51c2VkLFxuICAvLyBydWxlIGJlbG93IG1lcmdlcyB1bnVzZWQgc2VnbWVudHMgYmFjayB3aXRoIHRoZSByZXN0IG9mIHRoZSB0ZXh0XG4gIFsgJ2ZyYWdtZW50c19qb2luJywgIHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL2ZyYWdtZW50c19qb2luJykgXVxuXTtcblxuXG4vKipcbiAqIG5ldyBQYXJzZXJJbmxpbmUoKVxuICoqL1xuZnVuY3Rpb24gUGFyc2VySW5saW5lKCkge1xuICB2YXIgaTtcblxuICAvKipcbiAgICogUGFyc2VySW5saW5lI3J1bGVyIC0+IFJ1bGVyXG4gICAqXG4gICAqIFtbUnVsZXJdXSBpbnN0YW5jZS4gS2VlcCBjb25maWd1cmF0aW9uIG9mIGlubGluZSBydWxlcy5cbiAgICoqL1xuICB0aGlzLnJ1bGVyID0gbmV3IFJ1bGVyKCk7XG5cbiAgZm9yIChpID0gMDsgaSA8IF9ydWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMucnVsZXIucHVzaChfcnVsZXNbaV1bMF0sIF9ydWxlc1tpXVsxXSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2VySW5saW5lI3J1bGVyMiAtPiBSdWxlclxuICAgKlxuICAgKiBbW1J1bGVyXV0gaW5zdGFuY2UuIFNlY29uZCBydWxlciB1c2VkIGZvciBwb3N0LXByb2Nlc3NpbmdcbiAgICogKGUuZy4gaW4gZW1waGFzaXMtbGlrZSBydWxlcykuXG4gICAqKi9cbiAgdGhpcy5ydWxlcjIgPSBuZXcgUnVsZXIoKTtcblxuICBmb3IgKGkgPSAwOyBpIDwgX3J1bGVzMi5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMucnVsZXIyLnB1c2goX3J1bGVzMltpXVswXSwgX3J1bGVzMltpXVsxXSk7XG4gIH1cbn1cblxuXG4vLyBTa2lwIHNpbmdsZSB0b2tlbiBieSBydW5uaW5nIGFsbCBydWxlcyBpbiB2YWxpZGF0aW9uIG1vZGU7XG4vLyByZXR1cm5zIGB0cnVlYCBpZiBhbnkgcnVsZSByZXBvcnRlZCBzdWNjZXNzXG4vL1xuUGFyc2VySW5saW5lLnByb3RvdHlwZS5za2lwVG9rZW4gPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgdmFyIG9rLCBpLCBwb3MgPSBzdGF0ZS5wb3MsXG4gICAgICBydWxlcyA9IHRoaXMucnVsZXIuZ2V0UnVsZXMoJycpLFxuICAgICAgbGVuID0gcnVsZXMubGVuZ3RoLFxuICAgICAgbWF4TmVzdGluZyA9IHN0YXRlLm1kLm9wdGlvbnMubWF4TmVzdGluZyxcbiAgICAgIGNhY2hlID0gc3RhdGUuY2FjaGU7XG5cblxuICBpZiAodHlwZW9mIGNhY2hlW3Bvc10gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgc3RhdGUucG9zID0gY2FjaGVbcG9zXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc3RhdGUubGV2ZWwgPCBtYXhOZXN0aW5nKSB7XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAvLyBJbmNyZW1lbnQgc3RhdGUubGV2ZWwgYW5kIGRlY3JlbWVudCBpdCBsYXRlciB0byBsaW1pdCByZWN1cnNpb24uXG4gICAgICAvLyBJdCdzIGhhcm1sZXNzIHRvIGRvIGhlcmUsIGJlY2F1c2Ugbm8gdG9rZW5zIGFyZSBjcmVhdGVkLiBCdXQgaWRlYWxseSxcbiAgICAgIC8vIHdlJ2QgbmVlZCBhIHNlcGFyYXRlIHByaXZhdGUgc3RhdGUgdmFyaWFibGUgZm9yIHRoaXMgcHVycG9zZS5cbiAgICAgIC8vXG4gICAgICBzdGF0ZS5sZXZlbCsrO1xuICAgICAgb2sgPSBydWxlc1tpXShzdGF0ZSwgdHJ1ZSk7XG4gICAgICBzdGF0ZS5sZXZlbC0tO1xuXG4gICAgICBpZiAob2spIHsgYnJlYWs7IH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gVG9vIG11Y2ggbmVzdGluZywganVzdCBza2lwIHVudGlsIHRoZSBlbmQgb2YgdGhlIHBhcmFncmFwaC5cbiAgICAvL1xuICAgIC8vIE5PVEU6IHRoaXMgd2lsbCBjYXVzZSBsaW5rcyB0byBiZWhhdmUgaW5jb3JyZWN0bHkgaW4gdGhlIGZvbGxvd2luZyBjYXNlLFxuICAgIC8vICAgICAgIHdoZW4gYW4gYW1vdW50IG9mIGBbYCBpcyBleGFjdGx5IGVxdWFsIHRvIGBtYXhOZXN0aW5nICsgMWA6XG4gICAgLy9cbiAgICAvLyAgICAgICBbW1tbW1tbW1tbW1tbW1tbW1tbW1tmb29dKClcbiAgICAvL1xuICAgIC8vIFRPRE86IHJlbW92ZSB0aGlzIHdvcmthcm91bmQgd2hlbiBDTSBzdGFuZGFyZCB3aWxsIGFsbG93IG5lc3RlZCBsaW5rc1xuICAgIC8vICAgICAgICh3ZSBjYW4gcmVwbGFjZSBpdCBieSBwcmV2ZW50aW5nIGxpbmtzIGZyb20gYmVpbmcgcGFyc2VkIGluXG4gICAgLy8gICAgICAgdmFsaWRhdGlvbiBtb2RlKVxuICAgIC8vXG4gICAgc3RhdGUucG9zID0gc3RhdGUucG9zTWF4O1xuICB9XG5cbiAgaWYgKCFvaykgeyBzdGF0ZS5wb3MrKzsgfVxuICBjYWNoZVtwb3NdID0gc3RhdGUucG9zO1xufTtcblxuXG4vLyBHZW5lcmF0ZSB0b2tlbnMgZm9yIGlucHV0IHJhbmdlXG4vL1xuUGFyc2VySW5saW5lLnByb3RvdHlwZS50b2tlbml6ZSA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICB2YXIgb2ssIGksXG4gICAgICBydWxlcyA9IHRoaXMucnVsZXIuZ2V0UnVsZXMoJycpLFxuICAgICAgbGVuID0gcnVsZXMubGVuZ3RoLFxuICAgICAgZW5kID0gc3RhdGUucG9zTWF4LFxuICAgICAgbWF4TmVzdGluZyA9IHN0YXRlLm1kLm9wdGlvbnMubWF4TmVzdGluZztcblxuICB3aGlsZSAoc3RhdGUucG9zIDwgZW5kKSB7XG4gICAgLy8gVHJ5IGFsbCBwb3NzaWJsZSBydWxlcy5cbiAgICAvLyBPbiBzdWNjZXNzLCBydWxlIHNob3VsZDpcbiAgICAvL1xuICAgIC8vIC0gdXBkYXRlIGBzdGF0ZS5wb3NgXG4gICAgLy8gLSB1cGRhdGUgYHN0YXRlLnRva2Vuc2BcbiAgICAvLyAtIHJldHVybiB0cnVlXG5cbiAgICBpZiAoc3RhdGUubGV2ZWwgPCBtYXhOZXN0aW5nKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgb2sgPSBydWxlc1tpXShzdGF0ZSwgZmFsc2UpO1xuICAgICAgICBpZiAob2spIHsgYnJlYWs7IH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob2spIHtcbiAgICAgIGlmIChzdGF0ZS5wb3MgPj0gZW5kKSB7IGJyZWFrOyB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBzdGF0ZS5wZW5kaW5nICs9IHN0YXRlLnNyY1tzdGF0ZS5wb3MrK107XG4gIH1cblxuICBpZiAoc3RhdGUucGVuZGluZykge1xuICAgIHN0YXRlLnB1c2hQZW5kaW5nKCk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBQYXJzZXJJbmxpbmUucGFyc2Uoc3RyLCBtZCwgZW52LCBvdXRUb2tlbnMpXG4gKlxuICogUHJvY2VzcyBpbnB1dCBzdHJpbmcgYW5kIHB1c2ggaW5saW5lIHRva2VucyBpbnRvIGBvdXRUb2tlbnNgXG4gKiovXG5QYXJzZXJJbmxpbmUucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gKHN0ciwgbWQsIGVudiwgb3V0VG9rZW5zKSB7XG4gIHZhciBpLCBydWxlcywgbGVuO1xuICB2YXIgc3RhdGUgPSBuZXcgdGhpcy5TdGF0ZShzdHIsIG1kLCBlbnYsIG91dFRva2Vucyk7XG5cbiAgdGhpcy50b2tlbml6ZShzdGF0ZSk7XG5cbiAgcnVsZXMgPSB0aGlzLnJ1bGVyMi5nZXRSdWxlcygnJyk7XG4gIGxlbiA9IHJ1bGVzLmxlbmd0aDtcblxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBydWxlc1tpXShzdGF0ZSk7XG4gIH1cbn07XG5cblxuUGFyc2VySW5saW5lLnByb3RvdHlwZS5TdGF0ZSA9IHJlcXVpcmUoJy4vcnVsZXNfaW5saW5lL3N0YXRlX2lubGluZScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gUGFyc2VySW5saW5lO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRzKSB7XG4gIHZhciByZSA9IHt9O1xuICBvcHRzID0gb3B0cyB8fCB7fTtcblxuICAvLyBVc2UgZGlyZWN0IGV4dHJhY3QgaW5zdGVhZCBvZiBgcmVnZW5lcmF0ZWAgdG8gcmVkdXNlIGJyb3dzZXJpZmllZCBzaXplXG4gIHJlLnNyY19BbnkgPSByZXF1aXJlKCd1Yy5taWNyby9wcm9wZXJ0aWVzL0FueS9yZWdleCcpLnNvdXJjZTtcbiAgcmUuc3JjX0NjICA9IHJlcXVpcmUoJ3VjLm1pY3JvL2NhdGVnb3JpZXMvQ2MvcmVnZXgnKS5zb3VyY2U7XG4gIHJlLnNyY19aICAgPSByZXF1aXJlKCd1Yy5taWNyby9jYXRlZ29yaWVzL1ovcmVnZXgnKS5zb3VyY2U7XG4gIHJlLnNyY19QICAgPSByZXF1aXJlKCd1Yy5taWNyby9jYXRlZ29yaWVzL1AvcmVnZXgnKS5zb3VyY2U7XG5cbiAgLy8gXFxwe1xcWlxcUFxcQ2NcXENGfSAod2hpdGUgc3BhY2VzICsgY29udHJvbCArIGZvcm1hdCArIHB1bmN0dWF0aW9uKVxuICByZS5zcmNfWlBDYyA9IFsgcmUuc3JjX1osIHJlLnNyY19QLCByZS5zcmNfQ2MgXS5qb2luKCd8Jyk7XG5cbiAgLy8gXFxwe1xcWlxcQ2N9ICh3aGl0ZSBzcGFjZXMgKyBjb250cm9sKVxuICByZS5zcmNfWkNjID0gWyByZS5zcmNfWiwgcmUuc3JjX0NjIF0uam9pbignfCcpO1xuXG4gIC8vIEV4cGVyaW1lbnRhbC4gTGlzdCBvZiBjaGFycywgY29tcGxldGVseSBwcm9oaWJpdGVkIGluIGxpbmtzXG4gIC8vIGJlY2F1c2UgY2FuIHNlcGFyYXRlIGl0IGZyb20gb3RoZXIgcGFydCBvZiB0ZXh0XG4gIHZhciB0ZXh0X3NlcGFyYXRvcnMgPSAnWz48XFx1ZmY1Y10nO1xuXG4gIC8vIEFsbCBwb3NzaWJsZSB3b3JkIGNoYXJhY3RlcnMgKGV2ZXJ5dGhpbmcgd2l0aG91dCBwdW5jdHVhdGlvbiwgc3BhY2VzICYgY29udHJvbHMpXG4gIC8vIERlZmluZWQgdmlhIHB1bmN0dWF0aW9uICYgc3BhY2VzIHRvIHNhdmUgc3BhY2VcbiAgLy8gU2hvdWxkIGJlIHNvbWV0aGluZyBsaWtlIFxccHtcXExcXE5cXFNcXE19IChcXHcgYnV0IHdpdGhvdXQgYF9gKVxuICByZS5zcmNfcHNldWRvX2xldHRlciAgICAgICA9ICcoPzooPyEnICsgdGV4dF9zZXBhcmF0b3JzICsgJ3wnICsgcmUuc3JjX1pQQ2MgKyAnKScgKyByZS5zcmNfQW55ICsgJyknO1xuICAvLyBUaGUgc2FtZSBhcyBhYm90aGUgYnV0IHdpdGhvdXQgWzAtOV1cbiAgLy8gdmFyIHNyY19wc2V1ZG9fbGV0dGVyX25vbl9kID0gJyg/Oig/IVswLTldfCcgKyBzcmNfWlBDYyArICcpJyArIHNyY19BbnkgKyAnKSc7XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICByZS5zcmNfaXA0ID1cblxuICAgICcoPzooMjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcXFwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pJztcblxuICAvLyBQcm9oaWJpdCBhbnkgb2YgXCJAL1tdKClcIiBpbiB1c2VyL3Bhc3MgdG8gYXZvaWQgd3JvbmcgZG9tYWluIGZldGNoLlxuICByZS5zcmNfYXV0aCAgICA9ICcoPzooPzooPyEnICsgcmUuc3JjX1pDYyArICd8W0AvXFxcXFtcXFxcXSgpXSkuKStAKT8nO1xuXG4gIHJlLnNyY19wb3J0ID1cblxuICAgICcoPzo6KD86Nig/OlswLTRdXFxcXGR7M318NSg/OlswLTRdXFxcXGR7Mn18NSg/OlswLTJdXFxcXGR8M1swLTVdKSkpfFsxLTVdP1xcXFxkezEsNH0pKT8nO1xuXG4gIHJlLnNyY19ob3N0X3Rlcm1pbmF0b3IgPVxuXG4gICAgJyg/PSR8JyArIHRleHRfc2VwYXJhdG9ycyArICd8JyArIHJlLnNyY19aUENjICsgJyknICtcbiAgICAnKD8hJyArIChvcHRzWyctLS0nXSA/ICctKD8hLS0pfCcgOiAnLXwnKSArICdffDpcXFxcZHxcXFxcLi18XFxcXC4oPyEkfCcgKyByZS5zcmNfWlBDYyArICcpKSc7XG5cbiAgcmUuc3JjX3BhdGggPVxuXG4gICAgJyg/OicgK1xuICAgICAgJ1svPyNdJyArXG4gICAgICAgICcoPzonICtcbiAgICAgICAgICAnKD8hJyArIHJlLnNyY19aQ2MgKyAnfCcgKyB0ZXh0X3NlcGFyYXRvcnMgKyAnfFsoKVtcXFxcXXt9LixcIlxcJz8hXFxcXC07XSkufCcgK1xuICAgICAgICAgICdcXFxcWyg/Oig/IScgKyByZS5zcmNfWkNjICsgJ3xcXFxcXSkuKSpcXFxcXXwnICtcbiAgICAgICAgICAnXFxcXCgoPzooPyEnICsgcmUuc3JjX1pDYyArICd8WyldKS4pKlxcXFwpfCcgK1xuICAgICAgICAgICdcXFxceyg/Oig/IScgKyByZS5zcmNfWkNjICsgJ3xbfV0pLikqXFxcXH18JyArXG4gICAgICAgICAgJ1xcXFxcIig/Oig/IScgKyByZS5zcmNfWkNjICsgJ3xbXCJdKS4pK1xcXFxcInwnICtcbiAgICAgICAgICBcIlxcXFwnKD86KD8hXCIgKyByZS5zcmNfWkNjICsgXCJ8WyddKS4pK1xcXFwnfFwiICtcbiAgICAgICAgICBcIlxcXFwnKD89XCIgKyByZS5zcmNfcHNldWRvX2xldHRlciArICd8Wy1dKXwnICsgIC8vIGFsbG93IGBJJ21fa2luZ2AgaWYgbm8gcGFpciBmb3VuZFxuICAgICAgICAgICdcXFxcLnsyLH1bYS16QS1aMC05JS8mXXwnICsgLy8gZ29vZ2xlIGhhcyBtYW55IGRvdHMgaW4gXCJnb29nbGUgc2VhcmNoXCIgbGlua3MgKCM2NiwgIzgxKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnaXRodWIgaGFzIC4uLiBpbiBjb21taXQgcmFuZ2UgbGlua3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdHJpY3QgdG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIGVuZ2xpc2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAtIHBlcmNlbnQtZW5jb2RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gcGFydHMgb2YgZmlsZSBwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLSBwYXJhbXMgc2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW50aWwgbW9yZSBleGFtcGxlcyBmb3VuZC5cbiAgICAgICAgICAnXFxcXC4oPyEnICsgcmUuc3JjX1pDYyArICd8Wy5dfCQpfCcgK1xuICAgICAgICAgIChvcHRzWyctLS0nXSA/XG4gICAgICAgICAgICAnXFxcXC0oPyEtLSg/OlteLV18JCkpKD86LSopfCcgLy8gYC0tLWAgPT4gbG9uZyBkYXNoLCB0ZXJtaW5hdGVcbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgICdcXFxcLSt8J1xuICAgICAgICAgICkgK1xuICAgICAgICAgICcsKD8hJyArIHJlLnNyY19aQ2MgKyAnfCQpfCcgKyAgICAgICAvLyBhbGxvdyBgLCwsYCBpbiBwYXRoc1xuICAgICAgICAgICc7KD8hJyArIHJlLnNyY19aQ2MgKyAnfCQpfCcgKyAgICAgICAvLyBhbGxvdyBgO2AgaWYgbm90IGZvbGxvd2VkIGJ5IHNwYWNlLWxpa2UgY2hhclxuICAgICAgICAgICdcXFxcISsoPyEnICsgcmUuc3JjX1pDYyArICd8WyFdfCQpfCcgKyAgLy8gYWxsb3cgYCEhIWAgaW4gcGF0aHMsIGJ1dCBub3QgYXQgdGhlIGVuZFxuICAgICAgICAgICdcXFxcPyg/IScgKyByZS5zcmNfWkNjICsgJ3xbP118JCknICtcbiAgICAgICAgJykrJyArXG4gICAgICAnfFxcXFwvJyArXG4gICAgJyk/JztcblxuICAvLyBBbGxvdyBhbnl0aGluZyBpbiBtYXJrZG93biBzcGVjLCBmb3JiaWQgcXVvdGUgKFwiKSBhdCB0aGUgZmlyc3QgcG9zaXRpb25cbiAgLy8gYmVjYXVzZSBlbWFpbHMgZW5jbG9zZWQgaW4gcXVvdGVzIGFyZSBmYXIgbW9yZSBjb21tb25cbiAgcmUuc3JjX2VtYWlsX25hbWUgPVxuXG4gICAgJ1tcXFxcLTs6Jj1cXFxcK1xcXFwkLFxcXFwuYS16QS1aMC05X11bXFxcXC07OiY9XFxcXCtcXFxcJCxcXFxcXCJcXFxcLmEtekEtWjAtOV9dKic7XG5cbiAgcmUuc3JjX3huID1cblxuICAgICd4bi0tW2EtejAtOVxcXFwtXXsxLDU5fSc7XG5cbiAgLy8gTW9yZSB0byByZWFkIGFib3V0IGRvbWFpbiBuYW1lc1xuICAvLyBodHRwOi8vc2VydmVyZmF1bHQuY29tL3F1ZXN0aW9ucy82MzgyNjAvXG5cbiAgcmUuc3JjX2RvbWFpbl9yb290ID1cblxuICAgIC8vIEFsbG93IGxldHRlcnMgJiBkaWdpdHMgKGh0dHA6Ly90ZXN0MSlcbiAgICAnKD86JyArXG4gICAgICByZS5zcmNfeG4gK1xuICAgICAgJ3wnICtcbiAgICAgIHJlLnNyY19wc2V1ZG9fbGV0dGVyICsgJ3sxLDYzfScgK1xuICAgICcpJztcblxuICByZS5zcmNfZG9tYWluID1cblxuICAgICcoPzonICtcbiAgICAgIHJlLnNyY194biArXG4gICAgICAnfCcgK1xuICAgICAgJyg/OicgKyByZS5zcmNfcHNldWRvX2xldHRlciArICcpJyArXG4gICAgICAnfCcgK1xuICAgICAgJyg/OicgKyByZS5zcmNfcHNldWRvX2xldHRlciArICcoPzotfCcgKyByZS5zcmNfcHNldWRvX2xldHRlciArICcpezAsNjF9JyArIHJlLnNyY19wc2V1ZG9fbGV0dGVyICsgJyknICtcbiAgICAnKSc7XG5cbiAgcmUuc3JjX2hvc3QgPVxuXG4gICAgJyg/OicgK1xuICAgIC8vIERvbid0IG5lZWQgSVAgY2hlY2ssIGJlY2F1c2UgZGlnaXRzIGFyZSBhbHJlYWR5IGFsbG93ZWQgaW4gbm9ybWFsIGRvbWFpbiBuYW1lc1xuICAgIC8vICAgc3JjX2lwNCArXG4gICAgLy8gJ3wnICtcbiAgICAgICcoPzooPzooPzonICsgcmUuc3JjX2RvbWFpbiArICcpXFxcXC4pKicgKyByZS5zcmNfZG9tYWluLypfcm9vdCovICsgJyknICtcbiAgICAnKSc7XG5cbiAgcmUudHBsX2hvc3RfZnV6enkgPVxuXG4gICAgJyg/OicgK1xuICAgICAgcmUuc3JjX2lwNCArXG4gICAgJ3wnICtcbiAgICAgICcoPzooPzooPzonICsgcmUuc3JjX2RvbWFpbiArICcpXFxcXC4pKyg/OiVUTERTJSkpJyArXG4gICAgJyknO1xuXG4gIHJlLnRwbF9ob3N0X25vX2lwX2Z1enp5ID1cblxuICAgICcoPzooPzooPzonICsgcmUuc3JjX2RvbWFpbiArICcpXFxcXC4pKyg/OiVUTERTJSkpJztcblxuICByZS5zcmNfaG9zdF9zdHJpY3QgPVxuXG4gICAgcmUuc3JjX2hvc3QgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yO1xuXG4gIHJlLnRwbF9ob3N0X2Z1enp5X3N0cmljdCA9XG5cbiAgICByZS50cGxfaG9zdF9mdXp6eSArIHJlLnNyY19ob3N0X3Rlcm1pbmF0b3I7XG5cbiAgcmUuc3JjX2hvc3RfcG9ydF9zdHJpY3QgPVxuXG4gICAgcmUuc3JjX2hvc3QgKyByZS5zcmNfcG9ydCArIHJlLnNyY19ob3N0X3Rlcm1pbmF0b3I7XG5cbiAgcmUudHBsX2hvc3RfcG9ydF9mdXp6eV9zdHJpY3QgPVxuXG4gICAgcmUudHBsX2hvc3RfZnV6enkgKyByZS5zcmNfcG9ydCArIHJlLnNyY19ob3N0X3Rlcm1pbmF0b3I7XG5cbiAgcmUudHBsX2hvc3RfcG9ydF9ub19pcF9mdXp6eV9zdHJpY3QgPVxuXG4gICAgcmUudHBsX2hvc3Rfbm9faXBfZnV6enkgKyByZS5zcmNfcG9ydCArIHJlLnNyY19ob3N0X3Rlcm1pbmF0b3I7XG5cblxuICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAvLyBNYWluIHJ1bGVzXG5cbiAgLy8gUnVkZSB0ZXN0IGZ1enp5IGxpbmtzIGJ5IGhvc3QsIGZvciBxdWljayBkZW55XG4gIHJlLnRwbF9ob3N0X2Z1enp5X3Rlc3QgPVxuXG4gICAgJ2xvY2FsaG9zdHx3d3dcXFxcLnxcXFxcLlxcXFxkezEsM31cXFxcLnwoPzpcXFxcLig/OiVUTERTJSkoPzonICsgcmUuc3JjX1pQQ2MgKyAnfD58JCkpJztcblxuICByZS50cGxfZW1haWxfZnV6enkgPVxuXG4gICAgICAnKF58JyArIHRleHRfc2VwYXJhdG9ycyArICd8XCJ8XFxcXCh8JyArIHJlLnNyY19aQ2MgKyAnKScgK1xuICAgICAgJygnICsgcmUuc3JjX2VtYWlsX25hbWUgKyAnQCcgKyByZS50cGxfaG9zdF9mdXp6eV9zdHJpY3QgKyAnKSc7XG5cbiAgcmUudHBsX2xpbmtfZnV6enkgPVxuICAgICAgLy8gRnV6enkgbGluayBjYW4ndCBiZSBwcmVwZW5kZWQgd2l0aCAuOi9cXC0gYW5kIG5vbiBwdW5jdHVhdGlvbi5cbiAgICAgIC8vIGJ1dCBjYW4gc3RhcnQgd2l0aCA+IChtYXJrZG93biBibG9ja3F1b3RlKVxuICAgICAgJyhefCg/IVsuOi9cXFxcLV9AXSkoPzpbJCs8PT5eYHxcXHVmZjVjXXwnICsgcmUuc3JjX1pQQ2MgKyAnKSknICtcbiAgICAgICcoKD8hWyQrPD0+XmB8XFx1ZmY1Y10pJyArIHJlLnRwbF9ob3N0X3BvcnRfZnV6enlfc3RyaWN0ICsgcmUuc3JjX3BhdGggKyAnKSc7XG5cbiAgcmUudHBsX2xpbmtfbm9faXBfZnV6enkgPVxuICAgICAgLy8gRnV6enkgbGluayBjYW4ndCBiZSBwcmVwZW5kZWQgd2l0aCAuOi9cXC0gYW5kIG5vbiBwdW5jdHVhdGlvbi5cbiAgICAgIC8vIGJ1dCBjYW4gc3RhcnQgd2l0aCA+IChtYXJrZG93biBibG9ja3F1b3RlKVxuICAgICAgJyhefCg/IVsuOi9cXFxcLV9AXSkoPzpbJCs8PT5eYHxcXHVmZjVjXXwnICsgcmUuc3JjX1pQQ2MgKyAnKSknICtcbiAgICAgICcoKD8hWyQrPD0+XmB8XFx1ZmY1Y10pJyArIHJlLnRwbF9ob3N0X3BvcnRfbm9faXBfZnV6enlfc3RyaWN0ICsgcmUuc3JjX3BhdGggKyAnKSc7XG5cbiAgcmV0dXJuIHJlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhlbHBlcnNcblxuLy8gTWVyZ2Ugb2JqZWN0c1xuLy9cbmZ1bmN0aW9uIGFzc2lnbihvYmogLypmcm9tMSwgZnJvbTIsIGZyb20zLCAuLi4qLykge1xuICB2YXIgc291cmNlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICBpZiAoIXNvdXJjZSkgeyByZXR1cm47IH1cblxuICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBvYmpba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBfY2xhc3Mob2JqKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTsgfVxuZnVuY3Rpb24gaXNTdHJpbmcob2JqKSB7IHJldHVybiBfY2xhc3Mob2JqKSA9PT0gJ1tvYmplY3QgU3RyaW5nXSc7IH1cbmZ1bmN0aW9uIGlzT2JqZWN0KG9iaikgeyByZXR1cm4gX2NsYXNzKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nOyB9XG5mdW5jdGlvbiBpc1JlZ0V4cChvYmopIHsgcmV0dXJuIF9jbGFzcyhvYmopID09PSAnW29iamVjdCBSZWdFeHBdJzsgfVxuZnVuY3Rpb24gaXNGdW5jdGlvbihvYmopIHsgcmV0dXJuIF9jbGFzcyhvYmopID09PSAnW29iamVjdCBGdW5jdGlvbl0nOyB9XG5cblxuZnVuY3Rpb24gZXNjYXBlUkUoc3RyKSB7IHJldHVybiBzdHIucmVwbGFjZSgvWy4/KiteJFtcXF1cXFxcKCl7fXwtXS9nLCAnXFxcXCQmJyk7IH1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuXG52YXIgZGVmYXVsdE9wdGlvbnMgPSB7XG4gIGZ1enp5TGluazogdHJ1ZSxcbiAgZnV6enlFbWFpbDogdHJ1ZSxcbiAgZnV6enlJUDogZmFsc2Vcbn07XG5cblxuZnVuY3Rpb24gaXNPcHRpb25zT2JqKG9iaikge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqIHx8IHt9KS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgaykge1xuICAgIHJldHVybiBhY2MgfHwgZGVmYXVsdE9wdGlvbnMuaGFzT3duUHJvcGVydHkoayk7XG4gIH0sIGZhbHNlKTtcbn1cblxuXG52YXIgZGVmYXVsdFNjaGVtYXMgPSB7XG4gICdodHRwOic6IHtcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKHRleHQsIHBvcywgc2VsZikge1xuICAgICAgdmFyIHRhaWwgPSB0ZXh0LnNsaWNlKHBvcyk7XG5cbiAgICAgIGlmICghc2VsZi5yZS5odHRwKSB7XG4gICAgICAgIC8vIGNvbXBpbGUgbGF6aWx5LCBiZWNhdXNlIFwiaG9zdFwiLWNvbnRhaW5pbmcgdmFyaWFibGVzIGNhbiBjaGFuZ2Ugb24gdGxkcyB1cGRhdGUuXG4gICAgICAgIHNlbGYucmUuaHR0cCA9ICBuZXcgUmVnRXhwKFxuICAgICAgICAgICdeXFxcXC9cXFxcLycgKyBzZWxmLnJlLnNyY19hdXRoICsgc2VsZi5yZS5zcmNfaG9zdF9wb3J0X3N0cmljdCArIHNlbGYucmUuc3JjX3BhdGgsICdpJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHNlbGYucmUuaHR0cC50ZXN0KHRhaWwpKSB7XG4gICAgICAgIHJldHVybiB0YWlsLm1hdGNoKHNlbGYucmUuaHR0cClbMF0ubGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9LFxuICAnaHR0cHM6JzogICdodHRwOicsXG4gICdmdHA6JzogICAgJ2h0dHA6JyxcbiAgJy8vJzogICAgICB7XG4gICAgdmFsaWRhdGU6IGZ1bmN0aW9uICh0ZXh0LCBwb3MsIHNlbGYpIHtcbiAgICAgIHZhciB0YWlsID0gdGV4dC5zbGljZShwb3MpO1xuXG4gICAgICBpZiAoIXNlbGYucmUubm9faHR0cCkge1xuICAgICAgLy8gY29tcGlsZSBsYXppbHksIGJlY2F1c2UgXCJob3N0XCItY29udGFpbmluZyB2YXJpYWJsZXMgY2FuIGNoYW5nZSBvbiB0bGRzIHVwZGF0ZS5cbiAgICAgICAgc2VsZi5yZS5ub19odHRwID0gIG5ldyBSZWdFeHAoXG4gICAgICAgICAgJ14nICtcbiAgICAgICAgICBzZWxmLnJlLnNyY19hdXRoICtcbiAgICAgICAgICAvLyBEb24ndCBhbGxvdyBzaW5nbGUtbGV2ZWwgZG9tYWlucywgYmVjYXVzZSBvZiBmYWxzZSBwb3NpdGl2ZXMgbGlrZSAnLy90ZXN0J1xuICAgICAgICAgIC8vIHdpdGggY29kZSBjb21tZW50c1xuICAgICAgICAgICcoPzpsb2NhbGhvc3R8KD86KD86JyArIHNlbGYucmUuc3JjX2RvbWFpbiArICcpXFxcXC4pKycgKyBzZWxmLnJlLnNyY19kb21haW5fcm9vdCArICcpJyArXG4gICAgICAgICAgc2VsZi5yZS5zcmNfcG9ydCArXG4gICAgICAgICAgc2VsZi5yZS5zcmNfaG9zdF90ZXJtaW5hdG9yICtcbiAgICAgICAgICBzZWxmLnJlLnNyY19wYXRoLFxuXG4gICAgICAgICAgJ2knXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLnJlLm5vX2h0dHAudGVzdCh0YWlsKSkge1xuICAgICAgICAvLyBzaG91bGQgbm90IGJlIGA6Ly9gICYgYC8vL2AsIHRoYXQgcHJvdGVjdHMgZnJvbSBlcnJvcnMgaW4gcHJvdG9jb2wgbmFtZVxuICAgICAgICBpZiAocG9zID49IDMgJiYgdGV4dFtwb3MgLSAzXSA9PT0gJzonKSB7IHJldHVybiAwOyB9XG4gICAgICAgIGlmIChwb3MgPj0gMyAmJiB0ZXh0W3BvcyAtIDNdID09PSAnLycpIHsgcmV0dXJuIDA7IH1cbiAgICAgICAgcmV0dXJuIHRhaWwubWF0Y2goc2VsZi5yZS5ub19odHRwKVswXS5sZW5ndGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH0sXG4gICdtYWlsdG86Jzoge1xuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAodGV4dCwgcG9zLCBzZWxmKSB7XG4gICAgICB2YXIgdGFpbCA9IHRleHQuc2xpY2UocG9zKTtcblxuICAgICAgaWYgKCFzZWxmLnJlLm1haWx0bykge1xuICAgICAgICBzZWxmLnJlLm1haWx0byA9ICBuZXcgUmVnRXhwKFxuICAgICAgICAgICdeJyArIHNlbGYucmUuc3JjX2VtYWlsX25hbWUgKyAnQCcgKyBzZWxmLnJlLnNyY19ob3N0X3N0cmljdCwgJ2knXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZi5yZS5tYWlsdG8udGVzdCh0YWlsKSkge1xuICAgICAgICByZXR1cm4gdGFpbC5tYXRjaChzZWxmLnJlLm1haWx0bylbMF0ubGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG59O1xuXG4vKmVzbGludC1kaXNhYmxlIG1heC1sZW4qL1xuXG4vLyBSRSBwYXR0ZXJuIGZvciAyLWNoYXJhY3RlciB0bGRzIChhdXRvZ2VuZXJhdGVkIGJ5IC4vc3VwcG9ydC90bGRzXzJjaGFyX2dlbi5qcylcbnZhciB0bGRzXzJjaF9zcmNfcmUgPSAnYVtjZGVmZ2lsbW5vcXJzdHV3eHpdfGJbYWJkZWZnaGlqbW5vcnN0dnd5el18Y1thY2RmZ2hpa2xtbm9ydXZ3eHl6XXxkW2Vqa21vel18ZVtjZWdyc3R1XXxmW2lqa21vcl18Z1thYmRlZmdoaWxtbnBxcnN0dXd5XXxoW2ttbnJ0dV18aVtkZWxtbm9xcnN0XXxqW2Vtb3BdfGtbZWdoaW1ucHJ3eXpdfGxbYWJjaWtyc3R1dnldfG1bYWNkZWdoa2xtbm9wcXJzdHV2d3h5el18blthY2VmZ2lsb3BydXpdfG9tfHBbYWVmZ2hrbG1ucnN0d3ldfHFhfHJbZW9zdXddfHNbYWJjZGVnaGlqa2xtbm9ydHV2eHl6XXx0W2NkZmdoamtsbW5vcnR2d3pdfHVbYWdrc3l6XXx2W2FjZWdpbnVdfHdbZnNdfHlbZXRdfHpbYW13XSc7XG5cbi8vIERPTidUIHRyeSB0byBtYWtlIFBScyB3aXRoIGNoYW5nZXMuIEV4dGVuZCBUTERzIHdpdGggTGlua2lmeUl0LnRsZHMoKSBpbnN0ZWFkXG52YXIgdGxkc19kZWZhdWx0ID0gJ2Jpenxjb218ZWR1fGdvdnxuZXR8b3JnfHByb3x3ZWJ8eHh4fGFlcm98YXNpYXxjb29wfGluZm98bXVzZXVtfG5hbWV8c2hvcHxcdTA0NDBcdTA0NDQnLnNwbGl0KCd8Jyk7XG5cbi8qZXNsaW50LWVuYWJsZSBtYXgtbGVuKi9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZnVuY3Rpb24gcmVzZXRTY2FuQ2FjaGUoc2VsZikge1xuICBzZWxmLl9faW5kZXhfXyA9IC0xO1xuICBzZWxmLl9fdGV4dF9jYWNoZV9fICAgPSAnJztcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmFsaWRhdG9yKHJlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGV4dCwgcG9zKSB7XG4gICAgdmFyIHRhaWwgPSB0ZXh0LnNsaWNlKHBvcyk7XG5cbiAgICBpZiAocmUudGVzdCh0YWlsKSkge1xuICAgICAgcmV0dXJuIHRhaWwubWF0Y2gocmUpWzBdLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU5vcm1hbGl6ZXIoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAobWF0Y2gsIHNlbGYpIHtcbiAgICBzZWxmLm5vcm1hbGl6ZShtYXRjaCk7XG4gIH07XG59XG5cbi8vIFNjaGVtYXMgY29tcGlsZXIuIEJ1aWxkIHJlZ2V4cHMuXG4vL1xuZnVuY3Rpb24gY29tcGlsZShzZWxmKSB7XG5cbiAgLy8gTG9hZCAmIGNsb25lIFJFIHBhdHRlcm5zLlxuICB2YXIgcmUgPSBzZWxmLnJlID0gcmVxdWlyZSgnLi9saWIvcmUnKShzZWxmLl9fb3B0c19fKTtcblxuICAvLyBEZWZpbmUgZHluYW1pYyBwYXR0ZXJuc1xuICB2YXIgdGxkcyA9IHNlbGYuX190bGRzX18uc2xpY2UoKTtcblxuICBzZWxmLm9uQ29tcGlsZSgpO1xuXG4gIGlmICghc2VsZi5fX3RsZHNfcmVwbGFjZWRfXykge1xuICAgIHRsZHMucHVzaCh0bGRzXzJjaF9zcmNfcmUpO1xuICB9XG4gIHRsZHMucHVzaChyZS5zcmNfeG4pO1xuXG4gIHJlLnNyY190bGRzID0gdGxkcy5qb2luKCd8Jyk7XG5cbiAgZnVuY3Rpb24gdW50cGwodHBsKSB7IHJldHVybiB0cGwucmVwbGFjZSgnJVRMRFMlJywgcmUuc3JjX3RsZHMpOyB9XG5cbiAgcmUuZW1haWxfZnV6enkgICAgICA9IFJlZ0V4cCh1bnRwbChyZS50cGxfZW1haWxfZnV6enkpLCAnaScpO1xuICByZS5saW5rX2Z1enp5ICAgICAgID0gUmVnRXhwKHVudHBsKHJlLnRwbF9saW5rX2Z1enp5KSwgJ2knKTtcbiAgcmUubGlua19ub19pcF9mdXp6eSA9IFJlZ0V4cCh1bnRwbChyZS50cGxfbGlua19ub19pcF9mdXp6eSksICdpJyk7XG4gIHJlLmhvc3RfZnV6enlfdGVzdCAgPSBSZWdFeHAodW50cGwocmUudHBsX2hvc3RfZnV6enlfdGVzdCksICdpJyk7XG5cbiAgLy9cbiAgLy8gQ29tcGlsZSBlYWNoIHNjaGVtYVxuICAvL1xuXG4gIHZhciBhbGlhc2VzID0gW107XG5cbiAgc2VsZi5fX2NvbXBpbGVkX18gPSB7fTsgLy8gUmVzZXQgY29tcGlsZWQgZGF0YVxuXG4gIGZ1bmN0aW9uIHNjaGVtYUVycm9yKG5hbWUsIHZhbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignKExpbmtpZnlJdCkgSW52YWxpZCBzY2hlbWEgXCInICsgbmFtZSArICdcIjogJyArIHZhbCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhzZWxmLl9fc2NoZW1hc19fKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIHZhbCA9IHNlbGYuX19zY2hlbWFzX19bbmFtZV07XG5cbiAgICAvLyBza2lwIGRpc2FibGVkIG1ldGhvZHNcbiAgICBpZiAodmFsID09PSBudWxsKSB7IHJldHVybjsgfVxuXG4gICAgdmFyIGNvbXBpbGVkID0geyB2YWxpZGF0ZTogbnVsbCwgbGluazogbnVsbCB9O1xuXG4gICAgc2VsZi5fX2NvbXBpbGVkX19bbmFtZV0gPSBjb21waWxlZDtcblxuICAgIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgICBpZiAoaXNSZWdFeHAodmFsLnZhbGlkYXRlKSkge1xuICAgICAgICBjb21waWxlZC52YWxpZGF0ZSA9IGNyZWF0ZVZhbGlkYXRvcih2YWwudmFsaWRhdGUpO1xuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKHZhbC52YWxpZGF0ZSkpIHtcbiAgICAgICAgY29tcGlsZWQudmFsaWRhdGUgPSB2YWwudmFsaWRhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNGdW5jdGlvbih2YWwubm9ybWFsaXplKSkge1xuICAgICAgICBjb21waWxlZC5ub3JtYWxpemUgPSB2YWwubm9ybWFsaXplO1xuICAgICAgfSBlbHNlIGlmICghdmFsLm5vcm1hbGl6ZSkge1xuICAgICAgICBjb21waWxlZC5ub3JtYWxpemUgPSBjcmVhdGVOb3JtYWxpemVyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKHZhbCkpIHtcbiAgICAgIGFsaWFzZXMucHVzaChuYW1lKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpO1xuICB9KTtcblxuICAvL1xuICAvLyBDb21waWxlIHBvc3Rwb25lZCBhbGlhc2VzXG4gIC8vXG5cbiAgYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgIGlmICghc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dKSB7XG4gICAgICAvLyBTaWxlbnRseSBmYWlsIG9uIG1pc3NlZCBzY2hlbWFzIHRvIGF2b2lkIGVycm9ucyBvbiBkaXNhYmxlLlxuICAgICAgLy8gc2NoZW1hRXJyb3IoYWxpYXMsIHNlbGYuX19zY2hlbWFzX19bYWxpYXNdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZWxmLl9fY29tcGlsZWRfX1thbGlhc10udmFsaWRhdGUgPVxuICAgICAgc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dLnZhbGlkYXRlO1xuICAgIHNlbGYuX19jb21waWxlZF9fW2FsaWFzXS5ub3JtYWxpemUgPVxuICAgICAgc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dLm5vcm1hbGl6ZTtcbiAgfSk7XG5cbiAgLy9cbiAgLy8gRmFrZSByZWNvcmQgZm9yIGd1ZXNzZWQgbGlua3NcbiAgLy9cbiAgc2VsZi5fX2NvbXBpbGVkX19bJyddID0geyB2YWxpZGF0ZTogbnVsbCwgbm9ybWFsaXplOiBjcmVhdGVOb3JtYWxpemVyKCkgfTtcblxuICAvL1xuICAvLyBCdWlsZCBzY2hlbWEgY29uZGl0aW9uXG4gIC8vXG4gIHZhciBzbGlzdCA9IE9iamVjdC5rZXlzKHNlbGYuX19jb21waWxlZF9fKVxuICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBkaXNhYmxlZCAmIGZha2Ugc2NoZW1hc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUubGVuZ3RoID4gMCAmJiBzZWxmLl9fY29tcGlsZWRfX1tuYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZXNjYXBlUkUpXG4gICAgICAgICAgICAgICAgICAgICAgLmpvaW4oJ3wnKTtcbiAgLy8gKD8hXykgY2F1c2UgMS41eCBzbG93ZG93blxuICBzZWxmLnJlLnNjaGVtYV90ZXN0ICAgICA9IFJlZ0V4cCgnKF58KD8hXykoPzpbPjxcXHVmZjVjXXwnICsgcmUuc3JjX1pQQ2MgKyAnKSkoJyArIHNsaXN0ICsgJyknLCAnaScpO1xuICBzZWxmLnJlLnNjaGVtYV9zZWFyY2ggICA9IFJlZ0V4cCgnKF58KD8hXykoPzpbPjxcXHVmZjVjXXwnICsgcmUuc3JjX1pQQ2MgKyAnKSkoJyArIHNsaXN0ICsgJyknLCAnaWcnKTtcbiAgc2VsZi5yZS5zY2hlbWFfYXRfc3RhcnQgPSBSZWdFeHAoJ14nICsgc2VsZi5yZS5zY2hlbWFfc2VhcmNoLnNvdXJjZSwgJ2knKTtcblxuICBzZWxmLnJlLnByZXRlc3QgPSBSZWdFeHAoXG4gICAgJygnICsgc2VsZi5yZS5zY2hlbWFfdGVzdC5zb3VyY2UgKyAnKXwoJyArIHNlbGYucmUuaG9zdF9mdXp6eV90ZXN0LnNvdXJjZSArICcpfEAnLFxuICAgICdpJ1xuICApO1xuXG4gIC8vXG4gIC8vIENsZWFudXBcbiAgLy9cblxuICByZXNldFNjYW5DYWNoZShzZWxmKTtcbn1cblxuLyoqXG4gKiBjbGFzcyBNYXRjaFxuICpcbiAqIE1hdGNoIHJlc3VsdC4gU2luZ2xlIGVsZW1lbnQgb2YgYXJyYXksIHJldHVybmVkIGJ5IFtbTGlua2lmeUl0I21hdGNoXV1cbiAqKi9cbmZ1bmN0aW9uIE1hdGNoKHNlbGYsIHNoaWZ0KSB7XG4gIHZhciBzdGFydCA9IHNlbGYuX19pbmRleF9fLFxuICAgICAgZW5kICAgPSBzZWxmLl9fbGFzdF9pbmRleF9fLFxuICAgICAgdGV4dCAgPSBzZWxmLl9fdGV4dF9jYWNoZV9fLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gIC8qKlxuICAgKiBNYXRjaCNzY2hlbWEgLT4gU3RyaW5nXG4gICAqXG4gICAqIFByZWZpeCAocHJvdG9jb2wpIGZvciBtYXRjaGVkIHN0cmluZy5cbiAgICoqL1xuICB0aGlzLnNjaGVtYSAgICA9IHNlbGYuX19zY2hlbWFfXy50b0xvd2VyQ2FzZSgpO1xuICAvKipcbiAgICogTWF0Y2gjaW5kZXggLT4gTnVtYmVyXG4gICAqXG4gICAqIEZpcnN0IHBvc2l0aW9uIG9mIG1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMuaW5kZXggICAgID0gc3RhcnQgKyBzaGlmdDtcbiAgLyoqXG4gICAqIE1hdGNoI2xhc3RJbmRleCAtPiBOdW1iZXJcbiAgICpcbiAgICogTmV4dCBwb3NpdGlvbiBhZnRlciBtYXRjaGVkIHN0cmluZy5cbiAgICoqL1xuICB0aGlzLmxhc3RJbmRleCA9IGVuZCArIHNoaWZ0O1xuICAvKipcbiAgICogTWF0Y2gjcmF3IC0+IFN0cmluZ1xuICAgKlxuICAgKiBNYXRjaGVkIHN0cmluZy5cbiAgICoqL1xuICB0aGlzLnJhdyAgICAgICA9IHRleHQ7XG4gIC8qKlxuICAgKiBNYXRjaCN0ZXh0IC0+IFN0cmluZ1xuICAgKlxuICAgKiBOb3RtYWxpemVkIHRleHQgb2YgbWF0Y2hlZCBzdHJpbmcuXG4gICAqKi9cbiAgdGhpcy50ZXh0ICAgICAgPSB0ZXh0O1xuICAvKipcbiAgICogTWF0Y2gjdXJsIC0+IFN0cmluZ1xuICAgKlxuICAgKiBOb3JtYWxpemVkIHVybCBvZiBtYXRjaGVkIHN0cmluZy5cbiAgICoqL1xuICB0aGlzLnVybCAgICAgICA9IHRleHQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1hdGNoKHNlbGYsIHNoaWZ0KSB7XG4gIHZhciBtYXRjaCA9IG5ldyBNYXRjaChzZWxmLCBzaGlmdCk7XG5cbiAgc2VsZi5fX2NvbXBpbGVkX19bbWF0Y2guc2NoZW1hXS5ub3JtYWxpemUobWF0Y2gsIHNlbGYpO1xuXG4gIHJldHVybiBtYXRjaDtcbn1cblxuXG4vKipcbiAqIGNsYXNzIExpbmtpZnlJdFxuICoqL1xuXG4vKipcbiAqIG5ldyBMaW5raWZ5SXQoc2NoZW1hcywgb3B0aW9ucylcbiAqIC0gc2NoZW1hcyAoT2JqZWN0KTogT3B0aW9uYWwuIEFkZGl0aW9uYWwgc2NoZW1hcyB0byB2YWxpZGF0ZSAocHJlZml4L3ZhbGlkYXRvcilcbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogeyBmdXp6eUxpbmt8ZnV6enlFbWFpbHxmdXp6eUlQOiB0cnVlfGZhbHNlIH1cbiAqXG4gKiBDcmVhdGVzIG5ldyBsaW5raWZpZXIgaW5zdGFuY2Ugd2l0aCBvcHRpb25hbCBhZGRpdGlvbmFsIHNjaGVtYXMuXG4gKiBDYW4gYmUgY2FsbGVkIHdpdGhvdXQgYG5ld2Aga2V5d29yZCBmb3IgY29udmVuaWVuY2UuXG4gKlxuICogQnkgZGVmYXVsdCB1bmRlcnN0YW5kczpcbiAqXG4gKiAtIGBodHRwKHMpOi8vLi4uYCAsIGBmdHA6Ly8uLi5gLCBgbWFpbHRvOi4uLmAgJiBgLy8uLi5gIGxpbmtzXG4gKiAtIFwiZnV6enlcIiBsaW5rcyBhbmQgZW1haWxzIChleGFtcGxlLmNvbSwgZm9vQGJhci5jb20pLlxuICpcbiAqIGBzY2hlbWFzYCBpcyBhbiBvYmplY3QsIHdoZXJlIGVhY2gga2V5L3ZhbHVlIGRlc2NyaWJlcyBwcm90b2NvbC9ydWxlOlxuICpcbiAqIC0gX19rZXlfXyAtIGxpbmsgcHJlZml4ICh1c3VhbGx5LCBwcm90b2NvbCBuYW1lIHdpdGggYDpgIGF0IHRoZSBlbmQsIGBza3lwZTpgXG4gKiAgIGZvciBleGFtcGxlKS4gYGxpbmtpZnktaXRgIG1ha2VzIHNodXJlIHRoYXQgcHJlZml4IGlzIG5vdCBwcmVjZWVkZWQgd2l0aFxuICogICBhbHBoYW51bWVyaWMgY2hhciBhbmQgc3ltYm9scy4gT25seSB3aGl0ZXNwYWNlcyBhbmQgcHVuY3R1YXRpb24gYWxsb3dlZC5cbiAqIC0gX192YWx1ZV9fIC0gcnVsZSB0byBjaGVjayB0YWlsIGFmdGVyIGxpbmsgcHJlZml4XG4gKiAgIC0gX1N0cmluZ18gLSBqdXN0IGFsaWFzIHRvIGV4aXN0aW5nIHJ1bGVcbiAqICAgLSBfT2JqZWN0X1xuICogICAgIC0gX3ZhbGlkYXRlXyAtIHZhbGlkYXRvciBmdW5jdGlvbiAoc2hvdWxkIHJldHVybiBtYXRjaGVkIGxlbmd0aCBvbiBzdWNjZXNzKSxcbiAqICAgICAgIG9yIGBSZWdFeHBgLlxuICogICAgIC0gX25vcm1hbGl6ZV8gLSBvcHRpb25hbCBmdW5jdGlvbiB0byBub3JtYWxpemUgdGV4dCAmIHVybCBvZiBtYXRjaGVkIHJlc3VsdFxuICogICAgICAgKGZvciBleGFtcGxlLCBmb3IgQHR3aXR0ZXIgbWVudGlvbnMpLlxuICpcbiAqIGBvcHRpb25zYDpcbiAqXG4gKiAtIF9fZnV6enlMaW5rX18gLSByZWNvZ25pZ2UgVVJMLXMgd2l0aG91dCBgaHR0cChzKTpgIHByZWZpeC4gRGVmYXVsdCBgdHJ1ZWAuXG4gKiAtIF9fZnV6enlJUF9fIC0gYWxsb3cgSVBzIGluIGZ1enp5IGxpbmtzIGFib3ZlLiBDYW4gY29uZmxpY3Qgd2l0aCBzb21lIHRleHRzXG4gKiAgIGxpa2UgdmVyc2lvbiBudW1iZXJzLiBEZWZhdWx0IGBmYWxzZWAuXG4gKiAtIF9fZnV6enlFbWFpbF9fIC0gcmVjb2duaXplIGVtYWlscyB3aXRob3V0IGBtYWlsdG86YCBwcmVmaXguXG4gKlxuICoqL1xuZnVuY3Rpb24gTGlua2lmeUl0KHNjaGVtYXMsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExpbmtpZnlJdCkpIHtcbiAgICByZXR1cm4gbmV3IExpbmtpZnlJdChzY2hlbWFzLCBvcHRpb25zKTtcbiAgfVxuXG4gIGlmICghb3B0aW9ucykge1xuICAgIGlmIChpc09wdGlvbnNPYmooc2NoZW1hcykpIHtcbiAgICAgIG9wdGlvbnMgPSBzY2hlbWFzO1xuICAgICAgc2NoZW1hcyA9IHt9O1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuX19vcHRzX18gICAgICAgICAgID0gYXNzaWduKHt9LCBkZWZhdWx0T3B0aW9ucywgb3B0aW9ucyk7XG5cbiAgLy8gQ2FjaGUgbGFzdCB0ZXN0ZWQgcmVzdWx0LiBVc2VkIHRvIHNraXAgcmVwZWF0aW5nIHN0ZXBzIG9uIG5leHQgYG1hdGNoYCBjYWxsLlxuICB0aGlzLl9faW5kZXhfXyAgICAgICAgICA9IC0xO1xuICB0aGlzLl9fbGFzdF9pbmRleF9fICAgICA9IC0xOyAvLyBOZXh0IHNjYW4gcG9zaXRpb25cbiAgdGhpcy5fX3NjaGVtYV9fICAgICAgICAgPSAnJztcbiAgdGhpcy5fX3RleHRfY2FjaGVfXyAgICAgPSAnJztcblxuICB0aGlzLl9fc2NoZW1hc19fICAgICAgICA9IGFzc2lnbih7fSwgZGVmYXVsdFNjaGVtYXMsIHNjaGVtYXMpO1xuICB0aGlzLl9fY29tcGlsZWRfXyAgICAgICA9IHt9O1xuXG4gIHRoaXMuX190bGRzX18gICAgICAgICAgID0gdGxkc19kZWZhdWx0O1xuICB0aGlzLl9fdGxkc19yZXBsYWNlZF9fICA9IGZhbHNlO1xuXG4gIHRoaXMucmUgPSB7fTtcblxuICBjb21waWxlKHRoaXMpO1xufVxuXG5cbi8qKiBjaGFpbmFibGVcbiAqIExpbmtpZnlJdCNhZGQoc2NoZW1hLCBkZWZpbml0aW9uKVxuICogLSBzY2hlbWEgKFN0cmluZyk6IHJ1bGUgbmFtZSAoZml4ZWQgcGF0dGVybiBwcmVmaXgpXG4gKiAtIGRlZmluaXRpb24gKFN0cmluZ3xSZWdFeHB8T2JqZWN0KTogc2NoZW1hIGRlZmluaXRpb25cbiAqXG4gKiBBZGQgbmV3IHJ1bGUgZGVmaW5pdGlvbi4gU2VlIGNvbnN0cnVjdG9yIGRlc2NyaXB0aW9uIGZvciBkZXRhaWxzLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQoc2NoZW1hLCBkZWZpbml0aW9uKSB7XG4gIHRoaXMuX19zY2hlbWFzX19bc2NoZW1hXSA9IGRlZmluaXRpb247XG4gIGNvbXBpbGUodGhpcyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuXG4vKiogY2hhaW5hYmxlXG4gKiBMaW5raWZ5SXQjc2V0KG9wdGlvbnMpXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHsgZnV6enlMaW5rfGZ1enp5RW1haWx8ZnV6enlJUDogdHJ1ZXxmYWxzZSB9XG4gKlxuICogU2V0IHJlY29nbml0aW9uIG9wdGlvbnMgZm9yIGxpbmtzIHdpdGhvdXQgc2NoZW1hLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiBzZXQob3B0aW9ucykge1xuICB0aGlzLl9fb3B0c19fID0gYXNzaWduKHRoaXMuX19vcHRzX18sIG9wdGlvbnMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblxuLyoqXG4gKiBMaW5raWZ5SXQjdGVzdCh0ZXh0KSAtPiBCb29sZWFuXG4gKlxuICogU2VhcmNoZXMgbGlua2lmaWFibGUgcGF0dGVybiBhbmQgcmV0dXJucyBgdHJ1ZWAgb24gc3VjY2VzcyBvciBgZmFsc2VgIG9uIGZhaWwuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiB0ZXN0KHRleHQpIHtcbiAgLy8gUmVzZXQgc2NhbiBjYWNoZVxuICB0aGlzLl9fdGV4dF9jYWNoZV9fID0gdGV4dDtcbiAgdGhpcy5fX2luZGV4X18gICAgICA9IC0xO1xuXG4gIGlmICghdGV4dC5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgdmFyIG0sIG1sLCBtZSwgbGVuLCBzaGlmdCwgbmV4dCwgcmUsIHRsZF9wb3MsIGF0X3BvcztcblxuICAvLyB0cnkgdG8gc2NhbiBmb3IgbGluayB3aXRoIHNjaGVtYSAtIHRoYXQncyB0aGUgbW9zdCBzaW1wbGUgcnVsZVxuICBpZiAodGhpcy5yZS5zY2hlbWFfdGVzdC50ZXN0KHRleHQpKSB7XG4gICAgcmUgPSB0aGlzLnJlLnNjaGVtYV9zZWFyY2g7XG4gICAgcmUubGFzdEluZGV4ID0gMDtcbiAgICB3aGlsZSAoKG0gPSByZS5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgbGVuID0gdGhpcy50ZXN0U2NoZW1hQXQodGV4dCwgbVsyXSwgcmUubGFzdEluZGV4KTtcbiAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgdGhpcy5fX3NjaGVtYV9fICAgICA9IG1bMl07XG4gICAgICAgIHRoaXMuX19pbmRleF9fICAgICAgPSBtLmluZGV4ICsgbVsxXS5sZW5ndGg7XG4gICAgICAgIHRoaXMuX19sYXN0X2luZGV4X18gPSBtLmluZGV4ICsgbVswXS5sZW5ndGggKyBsZW47XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLl9fb3B0c19fLmZ1enp5TGluayAmJiB0aGlzLl9fY29tcGlsZWRfX1snaHR0cDonXSkge1xuICAgIC8vIGd1ZXNzIHNjaGVtYWxlc3MgbGlua3NcbiAgICB0bGRfcG9zID0gdGV4dC5zZWFyY2godGhpcy5yZS5ob3N0X2Z1enp5X3Rlc3QpO1xuICAgIGlmICh0bGRfcG9zID49IDApIHtcbiAgICAgIC8vIGlmIHRsZCBpcyBsb2NhdGVkIGFmdGVyIGZvdW5kIGxpbmsgLSBubyBuZWVkIHRvIGNoZWNrIGZ1enp5IHBhdHRlcm5cbiAgICAgIGlmICh0aGlzLl9faW5kZXhfXyA8IDAgfHwgdGxkX3BvcyA8IHRoaXMuX19pbmRleF9fKSB7XG4gICAgICAgIGlmICgobWwgPSB0ZXh0Lm1hdGNoKHRoaXMuX19vcHRzX18uZnV6enlJUCA/IHRoaXMucmUubGlua19mdXp6eSA6IHRoaXMucmUubGlua19ub19pcF9mdXp6eSkpICE9PSBudWxsKSB7XG5cbiAgICAgICAgICBzaGlmdCA9IG1sLmluZGV4ICsgbWxbMV0ubGVuZ3RoO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX19pbmRleF9fIDwgMCB8fCBzaGlmdCA8IHRoaXMuX19pbmRleF9fKSB7XG4gICAgICAgICAgICB0aGlzLl9fc2NoZW1hX18gICAgID0gJyc7XG4gICAgICAgICAgICB0aGlzLl9faW5kZXhfXyAgICAgID0gc2hpZnQ7XG4gICAgICAgICAgICB0aGlzLl9fbGFzdF9pbmRleF9fID0gbWwuaW5kZXggKyBtbFswXS5sZW5ndGg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMuX19vcHRzX18uZnV6enlFbWFpbCAmJiB0aGlzLl9fY29tcGlsZWRfX1snbWFpbHRvOiddKSB7XG4gICAgLy8gZ3Vlc3Mgc2NoZW1hbGVzcyBlbWFpbHNcbiAgICBhdF9wb3MgPSB0ZXh0LmluZGV4T2YoJ0AnKTtcbiAgICBpZiAoYXRfcG9zID49IDApIHtcbiAgICAgIC8vIFdlIGNhbid0IHNraXAgdGhpcyBjaGVjaywgYmVjYXVzZSB0aGlzIGNhc2VzIGFyZSBwb3NzaWJsZTpcbiAgICAgIC8vIDE5Mi4xNjguMS4xQGdtYWlsLmNvbSwgbXkuaW5AZXhhbXBsZS5jb21cbiAgICAgIGlmICgobWUgPSB0ZXh0Lm1hdGNoKHRoaXMucmUuZW1haWxfZnV6enkpKSAhPT0gbnVsbCkge1xuXG4gICAgICAgIHNoaWZ0ID0gbWUuaW5kZXggKyBtZVsxXS5sZW5ndGg7XG4gICAgICAgIG5leHQgID0gbWUuaW5kZXggKyBtZVswXS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKHRoaXMuX19pbmRleF9fIDwgMCB8fCBzaGlmdCA8IHRoaXMuX19pbmRleF9fIHx8XG4gICAgICAgICAgICAoc2hpZnQgPT09IHRoaXMuX19pbmRleF9fICYmIG5leHQgPiB0aGlzLl9fbGFzdF9pbmRleF9fKSkge1xuICAgICAgICAgIHRoaXMuX19zY2hlbWFfXyAgICAgPSAnbWFpbHRvOic7XG4gICAgICAgICAgdGhpcy5fX2luZGV4X18gICAgICA9IHNoaWZ0O1xuICAgICAgICAgIHRoaXMuX19sYXN0X2luZGV4X18gPSBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXMuX19pbmRleF9fID49IDA7XG59O1xuXG5cbi8qKlxuICogTGlua2lmeUl0I3ByZXRlc3QodGV4dCkgLT4gQm9vbGVhblxuICpcbiAqIFZlcnkgcXVpY2sgY2hlY2ssIHRoYXQgY2FuIGdpdmUgZmFsc2UgcG9zaXRpdmVzLiBSZXR1cm5zIHRydWUgaWYgbGluayBNQVkgQkVcbiAqIGNhbiBleGlzdHMuIENhbiBiZSB1c2VkIGZvciBzcGVlZCBvcHRpbWl6YXRpb24sIHdoZW4geW91IG5lZWQgdG8gY2hlY2sgdGhhdFxuICogbGluayBOT1QgZXhpc3RzLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5wcmV0ZXN0ID0gZnVuY3Rpb24gcHJldGVzdCh0ZXh0KSB7XG4gIHJldHVybiB0aGlzLnJlLnByZXRlc3QudGVzdCh0ZXh0KTtcbn07XG5cblxuLyoqXG4gKiBMaW5raWZ5SXQjdGVzdFNjaGVtYUF0KHRleHQsIG5hbWUsIHBvc2l0aW9uKSAtPiBOdW1iZXJcbiAqIC0gdGV4dCAoU3RyaW5nKTogdGV4dCB0byBzY2FuXG4gKiAtIG5hbWUgKFN0cmluZyk6IHJ1bGUgKHNjaGVtYSkgbmFtZVxuICogLSBwb3NpdGlvbiAoTnVtYmVyKTogdGV4dCBvZmZzZXQgdG8gY2hlY2sgZnJvbVxuICpcbiAqIFNpbWlsYXIgdG8gW1tMaW5raWZ5SXQjdGVzdF1dIGJ1dCBjaGVja3Mgb25seSBzcGVjaWZpYyBwcm90b2NvbCB0YWlsIGV4YWN0bHlcbiAqIGF0IGdpdmVuIHBvc2l0aW9uLiBSZXR1cm5zIGxlbmd0aCBvZiBmb3VuZCBwYXR0ZXJuICgwIG9uIGZhaWwpLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS50ZXN0U2NoZW1hQXQgPSBmdW5jdGlvbiB0ZXN0U2NoZW1hQXQodGV4dCwgc2NoZW1hLCBwb3MpIHtcbiAgLy8gSWYgbm90IHN1cHBvcnRlZCBzY2hlbWEgY2hlY2sgcmVxdWVzdGVkIC0gdGVybWluYXRlXG4gIGlmICghdGhpcy5fX2NvbXBpbGVkX19bc2NoZW1hLnRvTG93ZXJDYXNlKCldKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX19jb21waWxlZF9fW3NjaGVtYS50b0xvd2VyQ2FzZSgpXS52YWxpZGF0ZSh0ZXh0LCBwb3MsIHRoaXMpO1xufTtcblxuXG4vKipcbiAqIExpbmtpZnlJdCNtYXRjaCh0ZXh0KSAtPiBBcnJheXxudWxsXG4gKlxuICogUmV0dXJucyBhcnJheSBvZiBmb3VuZCBsaW5rIGRlc2NyaXB0aW9ucyBvciBgbnVsbGAgb24gZmFpbC4gV2Ugc3Ryb25nbHlcbiAqIHJlY29tbWVuZCB0byB1c2UgW1tMaW5raWZ5SXQjdGVzdF1dIGZpcnN0LCBmb3IgYmVzdCBzcGVlZC5cbiAqXG4gKiAjIyMjIyBSZXN1bHQgbWF0Y2ggZGVzY3JpcHRpb25cbiAqXG4gKiAtIF9fc2NoZW1hX18gLSBsaW5rIHNjaGVtYSwgY2FuIGJlIGVtcHR5IGZvciBmdXp6eSBsaW5rcywgb3IgYC8vYCBmb3JcbiAqICAgcHJvdG9jb2wtbmV1dHJhbCAgbGlua3MuXG4gKiAtIF9faW5kZXhfXyAtIG9mZnNldCBvZiBtYXRjaGVkIHRleHRcbiAqIC0gX19sYXN0SW5kZXhfXyAtIGluZGV4IG9mIG5leHQgY2hhciBhZnRlciBtYXRoY2ggZW5kXG4gKiAtIF9fcmF3X18gLSBtYXRjaGVkIHRleHRcbiAqIC0gX190ZXh0X18gLSBub3JtYWxpemVkIHRleHRcbiAqIC0gX191cmxfXyAtIGxpbmssIGdlbmVyYXRlZCBmcm9tIG1hdGNoZWQgdGV4dFxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uIG1hdGNoKHRleHQpIHtcbiAgdmFyIHNoaWZ0ID0gMCwgcmVzdWx0ID0gW107XG5cbiAgLy8gVHJ5IHRvIHRha2UgcHJldmlvdXMgZWxlbWVudCBmcm9tIGNhY2hlLCBpZiAudGVzdCgpIGNhbGxlZCBiZWZvcmVcbiAgaWYgKHRoaXMuX19pbmRleF9fID49IDAgJiYgdGhpcy5fX3RleHRfY2FjaGVfXyA9PT0gdGV4dCkge1xuICAgIHJlc3VsdC5wdXNoKGNyZWF0ZU1hdGNoKHRoaXMsIHNoaWZ0KSk7XG4gICAgc2hpZnQgPSB0aGlzLl9fbGFzdF9pbmRleF9fO1xuICB9XG5cbiAgLy8gQ3V0IGhlYWQgaWYgY2FjaGUgd2FzIHVzZWRcbiAgdmFyIHRhaWwgPSBzaGlmdCA/IHRleHQuc2xpY2Uoc2hpZnQpIDogdGV4dDtcblxuICAvLyBTY2FuIHN0cmluZyB1bnRpbCBlbmQgcmVhY2hlZFxuICB3aGlsZSAodGhpcy50ZXN0KHRhaWwpKSB7XG4gICAgcmVzdWx0LnB1c2goY3JlYXRlTWF0Y2godGhpcywgc2hpZnQpKTtcblxuICAgIHRhaWwgPSB0YWlsLnNsaWNlKHRoaXMuX19sYXN0X2luZGV4X18pO1xuICAgIHNoaWZ0ICs9IHRoaXMuX19sYXN0X2luZGV4X187XG4gIH1cblxuICBpZiAocmVzdWx0Lmxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cblxuLyoqXG4gKiBMaW5raWZ5SXQjbWF0Y2hBdFN0YXJ0KHRleHQpIC0+IE1hdGNofG51bGxcbiAqXG4gKiBSZXR1cm5zIGZ1bGx5LWZvcm1lZCAobm90IGZ1enp5KSBsaW5rIGlmIGl0IHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nXG4gKiBvZiB0aGUgc3RyaW5nLCBhbmQgbnVsbCBvdGhlcndpc2UuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLm1hdGNoQXRTdGFydCA9IGZ1bmN0aW9uIG1hdGNoQXRTdGFydCh0ZXh0KSB7XG4gIC8vIFJlc2V0IHNjYW4gY2FjaGVcbiAgdGhpcy5fX3RleHRfY2FjaGVfXyA9IHRleHQ7XG4gIHRoaXMuX19pbmRleF9fICAgICAgPSAtMTtcblxuICBpZiAoIXRleHQubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICB2YXIgbSA9IHRoaXMucmUuc2NoZW1hX2F0X3N0YXJ0LmV4ZWModGV4dCk7XG4gIGlmICghbSkgcmV0dXJuIG51bGw7XG5cbiAgdmFyIGxlbiA9IHRoaXMudGVzdFNjaGVtYUF0KHRleHQsIG1bMl0sIG1bMF0ubGVuZ3RoKTtcbiAgaWYgKCFsZW4pIHJldHVybiBudWxsO1xuXG4gIHRoaXMuX19zY2hlbWFfXyAgICAgPSBtWzJdO1xuICB0aGlzLl9faW5kZXhfXyAgICAgID0gbS5pbmRleCArIG1bMV0ubGVuZ3RoO1xuICB0aGlzLl9fbGFzdF9pbmRleF9fID0gbS5pbmRleCArIG1bMF0ubGVuZ3RoICsgbGVuO1xuXG4gIHJldHVybiBjcmVhdGVNYXRjaCh0aGlzLCAwKTtcbn07XG5cblxuLyoqIGNoYWluYWJsZVxuICogTGlua2lmeUl0I3RsZHMobGlzdCBbLCBrZWVwT2xkXSkgLT4gdGhpc1xuICogLSBsaXN0IChBcnJheSk6IGxpc3Qgb2YgdGxkc1xuICogLSBrZWVwT2xkIChCb29sZWFuKTogbWVyZ2Ugd2l0aCBjdXJyZW50IGxpc3QgaWYgYHRydWVgIChgZmFsc2VgIGJ5IGRlZmF1bHQpXG4gKlxuICogTG9hZCAob3IgbWVyZ2UpIG5ldyB0bGRzIGxpc3QuIFRob3NlIGFyZSB1c2VyIGZvciBmdXp6eSBsaW5rcyAod2l0aG91dCBwcmVmaXgpXG4gKiB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMuIEJ5IGRlZmF1bHQgdGhpcyBhbGdvcnl0aG0gdXNlZDpcbiAqXG4gKiAtIGhvc3RuYW1lIHdpdGggYW55IDItbGV0dGVyIHJvb3Qgem9uZXMgYXJlIG9rLlxuICogLSBiaXp8Y29tfGVkdXxnb3Z8bmV0fG9yZ3xwcm98d2VifHh4eHxhZXJvfGFzaWF8Y29vcHxpbmZvfG11c2V1bXxuYW1lfHNob3B8XHUwNDQwXHUwNDQ0XG4gKiAgIGFyZSBvay5cbiAqIC0gZW5jb2RlZCAoYHhuLS0uLi5gKSByb290IHpvbmVzIGFyZSBvay5cbiAqXG4gKiBJZiBsaXN0IGlzIHJlcGxhY2VkLCB0aGVuIGV4YWN0IG1hdGNoIGZvciAyLWNoYXJzIHJvb3Qgem9uZXMgd2lsbCBiZSBjaGVja2VkLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS50bGRzID0gZnVuY3Rpb24gdGxkcyhsaXN0LCBrZWVwT2xkKSB7XG4gIGxpc3QgPSBBcnJheS5pc0FycmF5KGxpc3QpID8gbGlzdCA6IFsgbGlzdCBdO1xuXG4gIGlmICgha2VlcE9sZCkge1xuICAgIHRoaXMuX190bGRzX18gPSBsaXN0LnNsaWNlKCk7XG4gICAgdGhpcy5fX3RsZHNfcmVwbGFjZWRfXyA9IHRydWU7XG4gICAgY29tcGlsZSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRoaXMuX190bGRzX18gPSB0aGlzLl9fdGxkc19fLmNvbmNhdChsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChlbCwgaWR4LCBhcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbCAhPT0gYXJyW2lkeCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJldmVyc2UoKTtcblxuICBjb21waWxlKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogTGlua2lmeUl0I25vcm1hbGl6ZShtYXRjaClcbiAqXG4gKiBEZWZhdWx0IG5vcm1hbGl6ZXIgKGlmIHNjaGVtYSBkb2VzIG5vdCBkZWZpbmUgaXQncyBvd24pLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUobWF0Y2gpIHtcblxuICAvLyBEbyBtaW5pbWFsIHBvc3NpYmxlIGNoYW5nZXMgYnkgZGVmYXVsdC4gTmVlZCB0byBjb2xsZWN0IGZlZWRiYWNrIHByaW9yXG4gIC8vIHRvIG1vdmUgZm9yd2FyZCBodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbGlua2lmeS1pdC9pc3N1ZXMvMVxuXG4gIGlmICghbWF0Y2guc2NoZW1hKSB7IG1hdGNoLnVybCA9ICdodHRwOi8vJyArIG1hdGNoLnVybDsgfVxuXG4gIGlmIChtYXRjaC5zY2hlbWEgPT09ICdtYWlsdG86JyAmJiAhL15tYWlsdG86L2kudGVzdChtYXRjaC51cmwpKSB7XG4gICAgbWF0Y2gudXJsID0gJ21haWx0bzonICsgbWF0Y2gudXJsO1xuICB9XG59O1xuXG5cbi8qKlxuICogTGlua2lmeUl0I29uQ29tcGlsZSgpXG4gKlxuICogT3ZlcnJpZGUgdG8gbW9kaWZ5IGJhc2ljIFJlZ0V4cC1zLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5vbkNvbXBpbGUgPSBmdW5jdGlvbiBvbkNvbXBpbGUoKSB7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gTGlua2lmeUl0O1xuIiwgIi8vIG1hcmtkb3duLWl0IGRlZmF1bHQgb3B0aW9uc1xuXG4ndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG9wdGlvbnM6IHtcbiAgICBodG1sOiAgICAgICAgIGZhbHNlLCAgICAgICAgLy8gRW5hYmxlIEhUTUwgdGFncyBpbiBzb3VyY2VcbiAgICB4aHRtbE91dDogICAgIGZhbHNlLCAgICAgICAgLy8gVXNlICcvJyB0byBjbG9zZSBzaW5nbGUgdGFncyAoPGJyIC8+KVxuICAgIGJyZWFrczogICAgICAgZmFsc2UsICAgICAgICAvLyBDb252ZXJ0ICdcXG4nIGluIHBhcmFncmFwaHMgaW50byA8YnI+XG4gICAgbGFuZ1ByZWZpeDogICAnbGFuZ3VhZ2UtJywgIC8vIENTUyBsYW5ndWFnZSBwcmVmaXggZm9yIGZlbmNlZCBibG9ja3NcbiAgICBsaW5raWZ5OiAgICAgIGZhbHNlLCAgICAgICAgLy8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dHMgdG8gbGlua3NcblxuICAgIC8vIEVuYWJsZSBzb21lIGxhbmd1YWdlLW5ldXRyYWwgcmVwbGFjZW1lbnRzICsgcXVvdGVzIGJlYXV0aWZpY2F0aW9uXG4gICAgdHlwb2dyYXBoZXI6ICBmYWxzZSxcblxuICAgIC8vIERvdWJsZSArIHNpbmdsZSBxdW90ZXMgcmVwbGFjZW1lbnQgcGFpcnMsIHdoZW4gdHlwb2dyYXBoZXIgZW5hYmxlZCxcbiAgICAvLyBhbmQgc21hcnRxdW90ZXMgb24uIENvdWxkIGJlIGVpdGhlciBhIFN0cmluZyBvciBhbiBBcnJheS5cbiAgICAvL1xuICAgIC8vIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSAnXHUwMEFCXHUwMEJCXHUyMDFFXHUyMDFDJyBmb3IgUnVzc2lhbiwgJ1x1MjAxRVx1MjAxQ1x1MjAxQVx1MjAxOCcgZm9yIEdlcm1hbixcbiAgICAvLyBhbmQgWydcdTAwQUJcXHhBMCcsICdcXHhBMFx1MDBCQicsICdcdTIwMzlcXHhBMCcsICdcXHhBMFx1MjAzQSddIGZvciBGcmVuY2ggKGluY2x1ZGluZyBuYnNwKS5cbiAgICBxdW90ZXM6ICdcXHUyMDFjXFx1MjAxZFxcdTIwMThcXHUyMDE5JywgLyogXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5ICovXG5cbiAgICAvLyBIaWdobGlnaHRlciBmdW5jdGlvbi4gU2hvdWxkIHJldHVybiBlc2NhcGVkIEhUTUwsXG4gICAgLy8gb3IgJycgaWYgdGhlIHNvdXJjZSBzdHJpbmcgaXMgbm90IGNoYW5nZWQgYW5kIHNob3VsZCBiZSBlc2NhcGVkIGV4dGVybmFseS5cbiAgICAvLyBJZiByZXN1bHQgc3RhcnRzIHdpdGggPHByZS4uLiBpbnRlcm5hbCB3cmFwcGVyIGlzIHNraXBwZWQuXG4gICAgLy9cbiAgICAvLyBmdW5jdGlvbiAoLypzdHIsIGxhbmcqLykgeyByZXR1cm4gJyc7IH1cbiAgICAvL1xuICAgIGhpZ2hsaWdodDogbnVsbCxcblxuICAgIG1heE5lc3Rpbmc6ICAgMTAwICAgICAgICAgICAgLy8gSW50ZXJuYWwgcHJvdGVjdGlvbiwgcmVjdXJzaW9uIGxpbWl0XG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuXG4gICAgY29yZToge30sXG4gICAgYmxvY2s6IHt9LFxuICAgIGlubGluZToge31cbiAgfVxufTtcbiIsICIvLyBcIlplcm9cIiBwcmVzZXQsIHdpdGggbm90aGluZyBlbmFibGVkLiBVc2VmdWwgZm9yIG1hbnVhbCBjb25maWd1cmluZyBvZiBzaW1wbGVcbi8vIG1vZGVzLiBGb3IgZXhhbXBsZSwgdG8gcGFyc2UgYm9sZC9pdGFsaWMgb25seS5cblxuJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBvcHRpb25zOiB7XG4gICAgaHRtbDogICAgICAgICBmYWxzZSwgICAgICAgIC8vIEVuYWJsZSBIVE1MIHRhZ3MgaW4gc291cmNlXG4gICAgeGh0bWxPdXQ6ICAgICBmYWxzZSwgICAgICAgIC8vIFVzZSAnLycgdG8gY2xvc2Ugc2luZ2xlIHRhZ3MgKDxiciAvPilcbiAgICBicmVha3M6ICAgICAgIGZhbHNlLCAgICAgICAgLy8gQ29udmVydCAnXFxuJyBpbiBwYXJhZ3JhcGhzIGludG8gPGJyPlxuICAgIGxhbmdQcmVmaXg6ICAgJ2xhbmd1YWdlLScsICAvLyBDU1MgbGFuZ3VhZ2UgcHJlZml4IGZvciBmZW5jZWQgYmxvY2tzXG4gICAgbGlua2lmeTogICAgICBmYWxzZSwgICAgICAgIC8vIGF1dG9jb252ZXJ0IFVSTC1saWtlIHRleHRzIHRvIGxpbmtzXG5cbiAgICAvLyBFbmFibGUgc29tZSBsYW5ndWFnZS1uZXV0cmFsIHJlcGxhY2VtZW50cyArIHF1b3RlcyBiZWF1dGlmaWNhdGlvblxuICAgIHR5cG9ncmFwaGVyOiAgZmFsc2UsXG5cbiAgICAvLyBEb3VibGUgKyBzaW5nbGUgcXVvdGVzIHJlcGxhY2VtZW50IHBhaXJzLCB3aGVuIHR5cG9ncmFwaGVyIGVuYWJsZWQsXG4gICAgLy8gYW5kIHNtYXJ0cXVvdGVzIG9uLiBDb3VsZCBiZSBlaXRoZXIgYSBTdHJpbmcgb3IgYW4gQXJyYXkuXG4gICAgLy9cbiAgICAvLyBGb3IgZXhhbXBsZSwgeW91IGNhbiB1c2UgJ1x1MDBBQlx1MDBCQlx1MjAxRVx1MjAxQycgZm9yIFJ1c3NpYW4sICdcdTIwMUVcdTIwMUNcdTIwMUFcdTIwMTgnIGZvciBHZXJtYW4sXG4gICAgLy8gYW5kIFsnXHUwMEFCXFx4QTAnLCAnXFx4QTBcdTAwQkInLCAnXHUyMDM5XFx4QTAnLCAnXFx4QTBcdTIwM0EnXSBmb3IgRnJlbmNoIChpbmNsdWRpbmcgbmJzcCkuXG4gICAgcXVvdGVzOiAnXFx1MjAxY1xcdTIwMWRcXHUyMDE4XFx1MjAxOScsIC8qIFx1MjAxQ1x1MjAxRFx1MjAxOFx1MjAxOSAqL1xuXG4gICAgLy8gSGlnaGxpZ2h0ZXIgZnVuY3Rpb24uIFNob3VsZCByZXR1cm4gZXNjYXBlZCBIVE1MLFxuICAgIC8vIG9yICcnIGlmIHRoZSBzb3VyY2Ugc3RyaW5nIGlzIG5vdCBjaGFuZ2VkIGFuZCBzaG91bGQgYmUgZXNjYXBlZCBleHRlcm5hbHkuXG4gICAgLy8gSWYgcmVzdWx0IHN0YXJ0cyB3aXRoIDxwcmUuLi4gaW50ZXJuYWwgd3JhcHBlciBpcyBza2lwcGVkLlxuICAgIC8vXG4gICAgLy8gZnVuY3Rpb24gKC8qc3RyLCBsYW5nKi8pIHsgcmV0dXJuICcnOyB9XG4gICAgLy9cbiAgICBoaWdobGlnaHQ6IG51bGwsXG5cbiAgICBtYXhOZXN0aW5nOiAgIDIwICAgICAgICAgICAgLy8gSW50ZXJuYWwgcHJvdGVjdGlvbiwgcmVjdXJzaW9uIGxpbWl0XG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuXG4gICAgY29yZToge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ25vcm1hbGl6ZScsXG4gICAgICAgICdibG9jaycsXG4gICAgICAgICdpbmxpbmUnLFxuICAgICAgICAndGV4dF9qb2luJ1xuICAgICAgXVxuICAgIH0sXG5cbiAgICBibG9jazoge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ3BhcmFncmFwaCdcbiAgICAgIF1cbiAgICB9LFxuXG4gICAgaW5saW5lOiB7XG4gICAgICBydWxlczogW1xuICAgICAgICAndGV4dCdcbiAgICAgIF0sXG4gICAgICBydWxlczI6IFtcbiAgICAgICAgJ2JhbGFuY2VfcGFpcnMnLFxuICAgICAgICAnZnJhZ21lbnRzX2pvaW4nXG4gICAgICBdXG4gICAgfVxuICB9XG59O1xuIiwgIi8vIENvbW1vbm1hcmsgZGVmYXVsdCBvcHRpb25zXG5cbid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgb3B0aW9uczoge1xuICAgIGh0bWw6ICAgICAgICAgdHJ1ZSwgICAgICAgICAvLyBFbmFibGUgSFRNTCB0YWdzIGluIHNvdXJjZVxuICAgIHhodG1sT3V0OiAgICAgdHJ1ZSwgICAgICAgICAvLyBVc2UgJy8nIHRvIGNsb3NlIHNpbmdsZSB0YWdzICg8YnIgLz4pXG4gICAgYnJlYWtzOiAgICAgICBmYWxzZSwgICAgICAgIC8vIENvbnZlcnQgJ1xcbicgaW4gcGFyYWdyYXBocyBpbnRvIDxicj5cbiAgICBsYW5nUHJlZml4OiAgICdsYW5ndWFnZS0nLCAgLy8gQ1NTIGxhbmd1YWdlIHByZWZpeCBmb3IgZmVuY2VkIGJsb2Nrc1xuICAgIGxpbmtpZnk6ICAgICAgZmFsc2UsICAgICAgICAvLyBhdXRvY29udmVydCBVUkwtbGlrZSB0ZXh0cyB0byBsaW5rc1xuXG4gICAgLy8gRW5hYmxlIHNvbWUgbGFuZ3VhZ2UtbmV1dHJhbCByZXBsYWNlbWVudHMgKyBxdW90ZXMgYmVhdXRpZmljYXRpb25cbiAgICB0eXBvZ3JhcGhlcjogIGZhbHNlLFxuXG4gICAgLy8gRG91YmxlICsgc2luZ2xlIHF1b3RlcyByZXBsYWNlbWVudCBwYWlycywgd2hlbiB0eXBvZ3JhcGhlciBlbmFibGVkLFxuICAgIC8vIGFuZCBzbWFydHF1b3RlcyBvbi4gQ291bGQgYmUgZWl0aGVyIGEgU3RyaW5nIG9yIGFuIEFycmF5LlxuICAgIC8vXG4gICAgLy8gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlICdcdTAwQUJcdTAwQkJcdTIwMUVcdTIwMUMnIGZvciBSdXNzaWFuLCAnXHUyMDFFXHUyMDFDXHUyMDFBXHUyMDE4JyBmb3IgR2VybWFuLFxuICAgIC8vIGFuZCBbJ1x1MDBBQlxceEEwJywgJ1xceEEwXHUwMEJCJywgJ1x1MjAzOVxceEEwJywgJ1xceEEwXHUyMDNBJ10gZm9yIEZyZW5jaCAoaW5jbHVkaW5nIG5ic3ApLlxuICAgIHF1b3RlczogJ1xcdTIwMWNcXHUyMDFkXFx1MjAxOFxcdTIwMTknLCAvKiBcdTIwMUNcdTIwMURcdTIwMThcdTIwMTkgKi9cblxuICAgIC8vIEhpZ2hsaWdodGVyIGZ1bmN0aW9uLiBTaG91bGQgcmV0dXJuIGVzY2FwZWQgSFRNTCxcbiAgICAvLyBvciAnJyBpZiB0aGUgc291cmNlIHN0cmluZyBpcyBub3QgY2hhbmdlZCBhbmQgc2hvdWxkIGJlIGVzY2FwZWQgZXh0ZXJuYWx5LlxuICAgIC8vIElmIHJlc3VsdCBzdGFydHMgd2l0aCA8cHJlLi4uIGludGVybmFsIHdyYXBwZXIgaXMgc2tpcHBlZC5cbiAgICAvL1xuICAgIC8vIGZ1bmN0aW9uICgvKnN0ciwgbGFuZyovKSB7IHJldHVybiAnJzsgfVxuICAgIC8vXG4gICAgaGlnaGxpZ2h0OiBudWxsLFxuXG4gICAgbWF4TmVzdGluZzogICAyMCAgICAgICAgICAgIC8vIEludGVybmFsIHByb3RlY3Rpb24sIHJlY3Vyc2lvbiBsaW1pdFxuICB9LFxuXG4gIGNvbXBvbmVudHM6IHtcblxuICAgIGNvcmU6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgICdub3JtYWxpemUnLFxuICAgICAgICAnYmxvY2snLFxuICAgICAgICAnaW5saW5lJyxcbiAgICAgICAgJ3RleHRfam9pbidcbiAgICAgIF1cbiAgICB9LFxuXG4gICAgYmxvY2s6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgICdibG9ja3F1b3RlJyxcbiAgICAgICAgJ2NvZGUnLFxuICAgICAgICAnZmVuY2UnLFxuICAgICAgICAnaGVhZGluZycsXG4gICAgICAgICdocicsXG4gICAgICAgICdodG1sX2Jsb2NrJyxcbiAgICAgICAgJ2xoZWFkaW5nJyxcbiAgICAgICAgJ2xpc3QnLFxuICAgICAgICAncmVmZXJlbmNlJyxcbiAgICAgICAgJ3BhcmFncmFwaCdcbiAgICAgIF1cbiAgICB9LFxuXG4gICAgaW5saW5lOiB7XG4gICAgICBydWxlczogW1xuICAgICAgICAnYXV0b2xpbmsnLFxuICAgICAgICAnYmFja3RpY2tzJyxcbiAgICAgICAgJ2VtcGhhc2lzJyxcbiAgICAgICAgJ2VudGl0eScsXG4gICAgICAgICdlc2NhcGUnLFxuICAgICAgICAnaHRtbF9pbmxpbmUnLFxuICAgICAgICAnaW1hZ2UnLFxuICAgICAgICAnbGluaycsXG4gICAgICAgICduZXdsaW5lJyxcbiAgICAgICAgJ3RleHQnXG4gICAgICBdLFxuICAgICAgcnVsZXMyOiBbXG4gICAgICAgICdiYWxhbmNlX3BhaXJzJyxcbiAgICAgICAgJ2VtcGhhc2lzJyxcbiAgICAgICAgJ2ZyYWdtZW50c19qb2luJ1xuICAgICAgXVxuICAgIH1cbiAgfVxufTtcbiIsICIvLyBNYWluIHBhcnNlciBjbGFzc1xuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIHV0aWxzICAgICAgICA9IHJlcXVpcmUoJy4vY29tbW9uL3V0aWxzJyk7XG52YXIgaGVscGVycyAgICAgID0gcmVxdWlyZSgnLi9oZWxwZXJzJyk7XG52YXIgUmVuZGVyZXIgICAgID0gcmVxdWlyZSgnLi9yZW5kZXJlcicpO1xudmFyIFBhcnNlckNvcmUgICA9IHJlcXVpcmUoJy4vcGFyc2VyX2NvcmUnKTtcbnZhciBQYXJzZXJCbG9jayAgPSByZXF1aXJlKCcuL3BhcnNlcl9ibG9jaycpO1xudmFyIFBhcnNlcklubGluZSA9IHJlcXVpcmUoJy4vcGFyc2VyX2lubGluZScpO1xudmFyIExpbmtpZnlJdCAgICA9IHJlcXVpcmUoJ2xpbmtpZnktaXQnKTtcbnZhciBtZHVybCAgICAgICAgPSByZXF1aXJlKCdtZHVybCcpO1xudmFyIHB1bnljb2RlICAgICA9IHJlcXVpcmUoJ3B1bnljb2RlJyk7XG5cblxudmFyIGNvbmZpZyA9IHtcbiAgZGVmYXVsdDogcmVxdWlyZSgnLi9wcmVzZXRzL2RlZmF1bHQnKSxcbiAgemVybzogcmVxdWlyZSgnLi9wcmVzZXRzL3plcm8nKSxcbiAgY29tbW9ubWFyazogcmVxdWlyZSgnLi9wcmVzZXRzL2NvbW1vbm1hcmsnKVxufTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vXG4vLyBUaGlzIHZhbGlkYXRvciBjYW4gcHJvaGliaXQgbW9yZSB0aGFuIHJlYWxseSBuZWVkZWQgdG8gcHJldmVudCBYU1MuIEl0J3MgYVxuLy8gdHJhZGVvZmYgdG8ga2VlcCBjb2RlIHNpbXBsZSBhbmQgdG8gYmUgc2VjdXJlIGJ5IGRlZmF1bHQuXG4vL1xuLy8gSWYgeW91IG5lZWQgZGlmZmVyZW50IHNldHVwIC0gb3ZlcnJpZGUgdmFsaWRhdG9yIG1ldGhvZCBhcyB5b3Ugd2lzaC4gT3Jcbi8vIHJlcGxhY2UgaXQgd2l0aCBkdW1teSBmdW5jdGlvbiBhbmQgdXNlIGV4dGVybmFsIHNhbml0aXplci5cbi8vXG5cbnZhciBCQURfUFJPVE9fUkUgPSAvXih2YnNjcmlwdHxqYXZhc2NyaXB0fGZpbGV8ZGF0YSk6LztcbnZhciBHT09EX0RBVEFfUkUgPSAvXmRhdGE6aW1hZ2VcXC8oZ2lmfHBuZ3xqcGVnfHdlYnApOy87XG5cbmZ1bmN0aW9uIHZhbGlkYXRlTGluayh1cmwpIHtcbiAgLy8gdXJsIHNob3VsZCBiZSBub3JtYWxpemVkIGF0IHRoaXMgcG9pbnQsIGFuZCBleGlzdGluZyBlbnRpdGllcyBhcmUgZGVjb2RlZFxuICB2YXIgc3RyID0gdXJsLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gIHJldHVybiBCQURfUFJPVE9fUkUudGVzdChzdHIpID8gKEdPT0RfREFUQV9SRS50ZXN0KHN0cikgPyB0cnVlIDogZmFsc2UpIDogdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuXG52YXIgUkVDT0RFX0hPU1ROQU1FX0ZPUiA9IFsgJ2h0dHA6JywgJ2h0dHBzOicsICdtYWlsdG86JyBdO1xuXG5mdW5jdGlvbiBub3JtYWxpemVMaW5rKHVybCkge1xuICB2YXIgcGFyc2VkID0gbWR1cmwucGFyc2UodXJsLCB0cnVlKTtcblxuICBpZiAocGFyc2VkLmhvc3RuYW1lKSB7XG4gICAgLy8gRW5jb2RlIGhvc3RuYW1lcyBpbiB1cmxzIGxpa2U6XG4gICAgLy8gYGh0dHA6Ly9ob3N0L2AsIGBodHRwczovL2hvc3QvYCwgYG1haWx0bzp1c2VyQGhvc3RgLCBgLy9ob3N0L2BcbiAgICAvL1xuICAgIC8vIFdlIGRvbid0IGVuY29kZSB1bmtub3duIHNjaGVtYXMsIGJlY2F1c2UgaXQncyBsaWtlbHkgdGhhdCB3ZSBlbmNvZGVcbiAgICAvLyBzb21ldGhpbmcgd2Ugc2hvdWxkbid0IChlLmcuIGBza3lwZTpuYW1lYCB0cmVhdGVkIGFzIGBza3lwZTpob3N0YClcbiAgICAvL1xuICAgIGlmICghcGFyc2VkLnByb3RvY29sIHx8IFJFQ09ERV9IT1NUTkFNRV9GT1IuaW5kZXhPZihwYXJzZWQucHJvdG9jb2wpID49IDApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBhcnNlZC5ob3N0bmFtZSA9IHB1bnljb2RlLnRvQVNDSUkocGFyc2VkLmhvc3RuYW1lKTtcbiAgICAgIH0gY2F0Y2ggKGVyKSB7IC8qKi8gfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZHVybC5lbmNvZGUobWR1cmwuZm9ybWF0KHBhcnNlZCkpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVMaW5rVGV4dCh1cmwpIHtcbiAgdmFyIHBhcnNlZCA9IG1kdXJsLnBhcnNlKHVybCwgdHJ1ZSk7XG5cbiAgaWYgKHBhcnNlZC5ob3N0bmFtZSkge1xuICAgIC8vIEVuY29kZSBob3N0bmFtZXMgaW4gdXJscyBsaWtlOlxuICAgIC8vIGBodHRwOi8vaG9zdC9gLCBgaHR0cHM6Ly9ob3N0L2AsIGBtYWlsdG86dXNlckBob3N0YCwgYC8vaG9zdC9gXG4gICAgLy9cbiAgICAvLyBXZSBkb24ndCBlbmNvZGUgdW5rbm93biBzY2hlbWFzLCBiZWNhdXNlIGl0J3MgbGlrZWx5IHRoYXQgd2UgZW5jb2RlXG4gICAgLy8gc29tZXRoaW5nIHdlIHNob3VsZG4ndCAoZS5nLiBgc2t5cGU6bmFtZWAgdHJlYXRlZCBhcyBgc2t5cGU6aG9zdGApXG4gICAgLy9cbiAgICBpZiAoIXBhcnNlZC5wcm90b2NvbCB8fCBSRUNPREVfSE9TVE5BTUVfRk9SLmluZGV4T2YocGFyc2VkLnByb3RvY29sKSA+PSAwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQuaG9zdG5hbWUgPSBwdW55Y29kZS50b1VuaWNvZGUocGFyc2VkLmhvc3RuYW1lKTtcbiAgICAgIH0gY2F0Y2ggKGVyKSB7IC8qKi8gfVxuICAgIH1cbiAgfVxuXG4gIC8vIGFkZCAnJScgdG8gZXhjbHVkZSBsaXN0IGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2lzc3Vlcy83MjBcbiAgcmV0dXJuIG1kdXJsLmRlY29kZShtZHVybC5mb3JtYXQocGFyc2VkKSwgbWR1cmwuZGVjb2RlLmRlZmF1bHRDaGFycyArICclJyk7XG59XG5cblxuLyoqXG4gKiBjbGFzcyBNYXJrZG93bkl0XG4gKlxuICogTWFpbiBwYXJzZXIvcmVuZGVyZXIgY2xhc3MuXG4gKlxuICogIyMjIyMgVXNhZ2VcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiAvLyBub2RlLmpzLCBcImNsYXNzaWNcIiB3YXk6XG4gKiB2YXIgTWFya2Rvd25JdCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JyksXG4gKiAgICAgbWQgPSBuZXcgTWFya2Rvd25JdCgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKlxuICogLy8gbm9kZS5qcywgdGhlIHNhbWUsIGJ1dCB3aXRoIHN1Z2FyOlxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKlxuICogLy8gYnJvd3NlciB3aXRob3V0IEFNRCwgYWRkZWQgdG8gXCJ3aW5kb3dcIiBvbiBzY3JpcHQgbG9hZFxuICogLy8gTm90ZSwgdGhlcmUgYXJlIG5vIGRhc2guXG4gKiB2YXIgbWQgPSB3aW5kb3cubWFya2Rvd25pdCgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKiBgYGBcbiAqXG4gKiBTaW5nbGUgbGluZSByZW5kZXJpbmcsIHdpdGhvdXQgcGFyYWdyYXBoIHdyYXA6XG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcklubGluZSgnX19tYXJrZG93bi1pdF9fIHJ1bGV6eiEnKTtcbiAqIGBgYFxuICoqL1xuXG4vKipcbiAqIG5ldyBNYXJrZG93bkl0KFtwcmVzZXROYW1lLCBvcHRpb25zXSlcbiAqIC0gcHJlc2V0TmFtZSAoU3RyaW5nKTogb3B0aW9uYWwsIGBjb21tb25tYXJrYCAvIGB6ZXJvYFxuICogLSBvcHRpb25zIChPYmplY3QpXG4gKlxuICogQ3JlYXRlcyBwYXJzZXIgaW5zdGFuc2Ugd2l0aCBnaXZlbiBjb25maWcuIENhbiBiZSBjYWxsZWQgd2l0aG91dCBgbmV3YC5cbiAqXG4gKiAjIyMjIyBwcmVzZXROYW1lXG4gKlxuICogTWFya2Rvd25JdCBwcm92aWRlcyBuYW1lZCBwcmVzZXRzIGFzIGEgY29udmVuaWVuY2UgdG8gcXVpY2tseVxuICogZW5hYmxlL2Rpc2FibGUgYWN0aXZlIHN5bnRheCBydWxlcyBhbmQgb3B0aW9ucyBmb3IgY29tbW9uIHVzZSBjYXNlcy5cbiAqXG4gKiAtIFtcImNvbW1vbm1hcmtcIl0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL2NvbW1vbm1hcmsuanMpIC1cbiAqICAgY29uZmlndXJlcyBwYXJzZXIgdG8gc3RyaWN0IFtDb21tb25NYXJrXShodHRwOi8vY29tbW9ubWFyay5vcmcvKSBtb2RlLlxuICogLSBbZGVmYXVsdF0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL2RlZmF1bHQuanMpIC1cbiAqICAgc2ltaWxhciB0byBHRk0sIHVzZWQgd2hlbiBubyBwcmVzZXQgbmFtZSBnaXZlbi4gRW5hYmxlcyBhbGwgYXZhaWxhYmxlIHJ1bGVzLFxuICogICBidXQgc3RpbGwgd2l0aG91dCBodG1sLCB0eXBvZ3JhcGhlciAmIGF1dG9saW5rZXIuXG4gKiAtIFtcInplcm9cIl0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL3plcm8uanMpIC1cbiAqICAgYWxsIHJ1bGVzIGRpc2FibGVkLiBVc2VmdWwgdG8gcXVpY2tseSBzZXR1cCB5b3VyIGNvbmZpZyB2aWEgYC5lbmFibGUoKWAuXG4gKiAgIEZvciBleGFtcGxlLCB3aGVuIHlvdSBuZWVkIG9ubHkgYGJvbGRgIGFuZCBgaXRhbGljYCBtYXJrdXAgYW5kIG5vdGhpbmcgZWxzZS5cbiAqXG4gKiAjIyMjIyBvcHRpb25zOlxuICpcbiAqIC0gX19odG1sX18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGVuYWJsZSBIVE1MIHRhZ3MgaW4gc291cmNlLiBCZSBjYXJlZnVsIVxuICogICBUaGF0J3Mgbm90IHNhZmUhIFlvdSBtYXkgbmVlZCBleHRlcm5hbCBzYW5pdGl6ZXIgdG8gcHJvdGVjdCBvdXRwdXQgZnJvbSBYU1MuXG4gKiAgIEl0J3MgYmV0dGVyIHRvIGV4dGVuZCBmZWF0dXJlcyB2aWEgcGx1Z2lucywgaW5zdGVhZCBvZiBlbmFibGluZyBIVE1MLlxuICogLSBfX3hodG1sT3V0X18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGFkZCAnLycgd2hlbiBjbG9zaW5nIHNpbmdsZSB0YWdzXG4gKiAgIChgPGJyIC8+YCkuIFRoaXMgaXMgbmVlZGVkIG9ubHkgZm9yIGZ1bGwgQ29tbW9uTWFyayBjb21wYXRpYmlsaXR5LiBJbiByZWFsXG4gKiAgIHdvcmxkIHlvdSB3aWxsIG5lZWQgSFRNTCBvdXRwdXQuXG4gKiAtIF9fYnJlYWtzX18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGNvbnZlcnQgYFxcbmAgaW4gcGFyYWdyYXBocyBpbnRvIGA8YnI+YC5cbiAqIC0gX19sYW5nUHJlZml4X18gLSBgbGFuZ3VhZ2UtYC4gQ1NTIGxhbmd1YWdlIGNsYXNzIHByZWZpeCBmb3IgZmVuY2VkIGJsb2Nrcy5cbiAqICAgQ2FuIGJlIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgaGlnaGxpZ2h0ZXJzLlxuICogLSBfX2xpbmtpZnlfXyAtIGBmYWxzZWAuIFNldCBgdHJ1ZWAgdG8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dCB0byBsaW5rcy5cbiAqIC0gX190eXBvZ3JhcGhlcl9fICAtIGBmYWxzZWAuIFNldCBgdHJ1ZWAgdG8gZW5hYmxlIFtzb21lIGxhbmd1YWdlLW5ldXRyYWxcbiAqICAgcmVwbGFjZW1lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcnVsZXNfY29yZS9yZXBsYWNlbWVudHMuanMpICtcbiAqICAgcXVvdGVzIGJlYXV0aWZpY2F0aW9uIChzbWFydHF1b3RlcykuXG4gKiAtIF9fcXVvdGVzX18gLSBgXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5YCwgU3RyaW5nIG9yIEFycmF5LiBEb3VibGUgKyBzaW5nbGUgcXVvdGVzIHJlcGxhY2VtZW50XG4gKiAgIHBhaXJzLCB3aGVuIHR5cG9ncmFwaGVyIGVuYWJsZWQgYW5kIHNtYXJ0cXVvdGVzIG9uLiBGb3IgZXhhbXBsZSwgeW91IGNhblxuICogICB1c2UgYCdcdTAwQUJcdTAwQkJcdTIwMUVcdTIwMUMnYCBmb3IgUnVzc2lhbiwgYCdcdTIwMUVcdTIwMUNcdTIwMUFcdTIwMTgnYCBmb3IgR2VybWFuLCBhbmRcbiAqICAgYFsnXHUwMEFCXFx4QTAnLCAnXFx4QTBcdTAwQkInLCAnXHUyMDM5XFx4QTAnLCAnXFx4QTBcdTIwM0EnXWAgZm9yIEZyZW5jaCAoaW5jbHVkaW5nIG5ic3ApLlxuICogLSBfX2hpZ2hsaWdodF9fIC0gYG51bGxgLiBIaWdobGlnaHRlciBmdW5jdGlvbiBmb3IgZmVuY2VkIGNvZGUgYmxvY2tzLlxuICogICBIaWdobGlnaHRlciBgZnVuY3Rpb24gKHN0ciwgbGFuZylgIHNob3VsZCByZXR1cm4gZXNjYXBlZCBIVE1MLiBJdCBjYW4gYWxzb1xuICogICByZXR1cm4gZW1wdHkgc3RyaW5nIGlmIHRoZSBzb3VyY2Ugd2FzIG5vdCBjaGFuZ2VkIGFuZCBzaG91bGQgYmUgZXNjYXBlZFxuICogICBleHRlcm5hbHkuIElmIHJlc3VsdCBzdGFydHMgd2l0aCA8cHJlLi4uIGludGVybmFsIHdyYXBwZXIgaXMgc2tpcHBlZC5cbiAqXG4gKiAjIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogLy8gY29tbW9ubWFyayBtb2RlXG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCdjb21tb25tYXJrJyk7XG4gKlxuICogLy8gZGVmYXVsdCBtb2RlXG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gKlxuICogLy8gZW5hYmxlIGV2ZXJ5dGhpbmdcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0Jykoe1xuICogICBodG1sOiB0cnVlLFxuICogICBsaW5raWZ5OiB0cnVlLFxuICogICB0eXBvZ3JhcGhlcjogdHJ1ZVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiAjIyMjIyBTeW50YXggaGlnaGxpZ2h0aW5nXG4gKlxuICogYGBganNcbiAqIHZhciBobGpzID0gcmVxdWlyZSgnaGlnaGxpZ2h0LmpzJykgLy8gaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvXG4gKlxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSh7XG4gKiAgIGhpZ2hsaWdodDogZnVuY3Rpb24gKHN0ciwgbGFuZykge1xuICogICAgIGlmIChsYW5nICYmIGhsanMuZ2V0TGFuZ3VhZ2UobGFuZykpIHtcbiAqICAgICAgIHRyeSB7XG4gKiAgICAgICAgIHJldHVybiBobGpzLmhpZ2hsaWdodChzdHIsIHsgbGFuZ3VhZ2U6IGxhbmcsIGlnbm9yZUlsbGVnYWxzOiB0cnVlIH0pLnZhbHVlO1xuICogICAgICAgfSBjYXRjaCAoX18pIHt9XG4gKiAgICAgfVxuICpcbiAqICAgICByZXR1cm4gJyc7IC8vIHVzZSBleHRlcm5hbCBkZWZhdWx0IGVzY2FwaW5nXG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKlxuICogT3Igd2l0aCBmdWxsIHdyYXBwZXIgb3ZlcnJpZGUgKGlmIHlvdSBuZWVkIGFzc2lnbiBjbGFzcyB0byBgPHByZT5gKTpcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgaGxqcyA9IHJlcXVpcmUoJ2hpZ2hsaWdodC5qcycpIC8vIGh0dHBzOi8vaGlnaGxpZ2h0anMub3JnL1xuICpcbiAqIC8vIEFjdHVhbCBkZWZhdWx0IHZhbHVlc1xuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSh7XG4gKiAgIGhpZ2hsaWdodDogZnVuY3Rpb24gKHN0ciwgbGFuZykge1xuICogICAgIGlmIChsYW5nICYmIGhsanMuZ2V0TGFuZ3VhZ2UobGFuZykpIHtcbiAqICAgICAgIHRyeSB7XG4gKiAgICAgICAgIHJldHVybiAnPHByZSBjbGFzcz1cImhsanNcIj48Y29kZT4nICtcbiAqICAgICAgICAgICAgICAgIGhsanMuaGlnaGxpZ2h0KHN0ciwgeyBsYW5ndWFnZTogbGFuZywgaWdub3JlSWxsZWdhbHM6IHRydWUgfSkudmFsdWUgK1xuICogICAgICAgICAgICAgICAgJzwvY29kZT48L3ByZT4nO1xuICogICAgICAgfSBjYXRjaCAoX18pIHt9XG4gKiAgICAgfVxuICpcbiAqICAgICByZXR1cm4gJzxwcmUgY2xhc3M9XCJobGpzXCI+PGNvZGU+JyArIG1kLnV0aWxzLmVzY2FwZUh0bWwoc3RyKSArICc8L2NvZGU+PC9wcmU+JztcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiovXG5mdW5jdGlvbiBNYXJrZG93bkl0KHByZXNldE5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIE1hcmtkb3duSXQpKSB7XG4gICAgcmV0dXJuIG5ldyBNYXJrZG93bkl0KHByZXNldE5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgaWYgKCF1dGlscy5pc1N0cmluZyhwcmVzZXROYW1lKSkge1xuICAgICAgb3B0aW9ucyA9IHByZXNldE5hbWUgfHwge307XG4gICAgICBwcmVzZXROYW1lID0gJ2RlZmF1bHQnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I2lubGluZSAtPiBQYXJzZXJJbmxpbmVcbiAgICpcbiAgICogSW5zdGFuY2Ugb2YgW1tQYXJzZXJJbmxpbmVdXS4gWW91IG1heSBuZWVkIGl0IHRvIGFkZCBuZXcgcnVsZXMgd2hlblxuICAgKiB3cml0aW5nIHBsdWdpbnMuIEZvciBzaW1wbGUgcnVsZXMgY29udHJvbCB1c2UgW1tNYXJrZG93bkl0LmRpc2FibGVdXSBhbmRcbiAgICogW1tNYXJrZG93bkl0LmVuYWJsZV1dLlxuICAgKiovXG4gIHRoaXMuaW5saW5lID0gbmV3IFBhcnNlcklubGluZSgpO1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I2Jsb2NrIC0+IFBhcnNlckJsb2NrXG4gICAqXG4gICAqIEluc3RhbmNlIG9mIFtbUGFyc2VyQmxvY2tdXS4gWW91IG1heSBuZWVkIGl0IHRvIGFkZCBuZXcgcnVsZXMgd2hlblxuICAgKiB3cml0aW5nIHBsdWdpbnMuIEZvciBzaW1wbGUgcnVsZXMgY29udHJvbCB1c2UgW1tNYXJrZG93bkl0LmRpc2FibGVdXSBhbmRcbiAgICogW1tNYXJrZG93bkl0LmVuYWJsZV1dLlxuICAgKiovXG4gIHRoaXMuYmxvY2sgPSBuZXcgUGFyc2VyQmxvY2soKTtcblxuICAvKipcbiAgICogTWFya2Rvd25JdCNjb3JlIC0+IENvcmVcbiAgICpcbiAgICogSW5zdGFuY2Ugb2YgW1tDb3JlXV0gY2hhaW4gZXhlY3V0b3IuIFlvdSBtYXkgbmVlZCBpdCB0byBhZGQgbmV3IHJ1bGVzIHdoZW5cbiAgICogd3JpdGluZyBwbHVnaW5zLiBGb3Igc2ltcGxlIHJ1bGVzIGNvbnRyb2wgdXNlIFtbTWFya2Rvd25JdC5kaXNhYmxlXV0gYW5kXG4gICAqIFtbTWFya2Rvd25JdC5lbmFibGVdXS5cbiAgICoqL1xuICB0aGlzLmNvcmUgPSBuZXcgUGFyc2VyQ29yZSgpO1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I3JlbmRlcmVyIC0+IFJlbmRlcmVyXG4gICAqXG4gICAqIEluc3RhbmNlIG9mIFtbUmVuZGVyZXJdXS4gVXNlIGl0IHRvIG1vZGlmeSBvdXRwdXQgbG9vay4gT3IgdG8gYWRkIHJlbmRlcmluZ1xuICAgKiBydWxlcyBmb3IgbmV3IHRva2VuIHR5cGVzLCBnZW5lcmF0ZWQgYnkgcGx1Z2lucy5cbiAgICpcbiAgICogIyMjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGBqYXZhc2NyaXB0XG4gICAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAgICpcbiAgICogZnVuY3Rpb24gbXlUb2tlbih0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCBzZWxmKSB7XG4gICAqICAgLy8uLi5cbiAgICogICByZXR1cm4gcmVzdWx0O1xuICAgKiB9O1xuICAgKlxuICAgKiBtZC5yZW5kZXJlci5ydWxlc1snbXlfdG9rZW4nXSA9IG15VG9rZW5cbiAgICogYGBgXG4gICAqXG4gICAqIFNlZSBbW1JlbmRlcmVyXV0gZG9jcyBhbmQgW3NvdXJjZSBjb2RlXShodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvYmxvYi9tYXN0ZXIvbGliL3JlbmRlcmVyLmpzKS5cbiAgICoqL1xuICB0aGlzLnJlbmRlcmVyID0gbmV3IFJlbmRlcmVyKCk7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjbGlua2lmeSAtPiBMaW5raWZ5SXRcbiAgICpcbiAgICogW2xpbmtpZnktaXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9saW5raWZ5LWl0KSBpbnN0YW5jZS5cbiAgICogVXNlZCBieSBbbGlua2lmeV0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9ydWxlc19jb3JlL2xpbmtpZnkuanMpXG4gICAqIHJ1bGUuXG4gICAqKi9cbiAgdGhpcy5saW5raWZ5ID0gbmV3IExpbmtpZnlJdCgpO1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I3ZhbGlkYXRlTGluayh1cmwpIC0+IEJvb2xlYW5cbiAgICpcbiAgICogTGluayB2YWxpZGF0aW9uIGZ1bmN0aW9uLiBDb21tb25NYXJrIGFsbG93cyB0b28gbXVjaCBpbiBsaW5rcy4gQnkgZGVmYXVsdFxuICAgKiB3ZSBkaXNhYmxlIGBqYXZhc2NyaXB0OmAsIGB2YnNjcmlwdDpgLCBgZmlsZTpgIHNjaGVtYXMsIGFuZCBhbG1vc3QgYWxsIGBkYXRhOi4uLmAgc2NoZW1hc1xuICAgKiBleGNlcHQgc29tZSBlbWJlZGRlZCBpbWFnZSB0eXBlcy5cbiAgICpcbiAgICogWW91IGNhbiBjaGFuZ2UgdGhpcyBiZWhhdmlvdXI6XG4gICAqXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICAgKiAvLyBlbmFibGUgZXZlcnl0aGluZ1xuICAgKiBtZC52YWxpZGF0ZUxpbmsgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9XG4gICAqIGBgYFxuICAgKiovXG4gIHRoaXMudmFsaWRhdGVMaW5rID0gdmFsaWRhdGVMaW5rO1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I25vcm1hbGl6ZUxpbmsodXJsKSAtPiBTdHJpbmdcbiAgICpcbiAgICogRnVuY3Rpb24gdXNlZCB0byBlbmNvZGUgbGluayB1cmwgdG8gYSBtYWNoaW5lLXJlYWRhYmxlIGZvcm1hdCxcbiAgICogd2hpY2ggaW5jbHVkZXMgdXJsLWVuY29kaW5nLCBwdW55Y29kZSwgZXRjLlxuICAgKiovXG4gIHRoaXMubm9ybWFsaXplTGluayA9IG5vcm1hbGl6ZUxpbms7XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjbm9ybWFsaXplTGlua1RleHQodXJsKSAtPiBTdHJpbmdcbiAgICpcbiAgICogRnVuY3Rpb24gdXNlZCB0byBkZWNvZGUgbGluayB1cmwgdG8gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXRgXG4gICAqKi9cbiAgdGhpcy5ub3JtYWxpemVMaW5rVGV4dCA9IG5vcm1hbGl6ZUxpbmtUZXh0O1xuXG5cbiAgLy8gRXhwb3NlIHV0aWxzICYgaGVscGVycyBmb3IgZWFzeSBhY2NlcyBmcm9tIHBsdWdpbnNcblxuICAvKipcbiAgICogTWFya2Rvd25JdCN1dGlscyAtPiB1dGlsc1xuICAgKlxuICAgKiBBc3NvcnRlZCB1dGlsaXR5IGZ1bmN0aW9ucywgdXNlZnVsIHRvIHdyaXRlIHBsdWdpbnMuIFNlZSBkZXRhaWxzXG4gICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvYmxvYi9tYXN0ZXIvbGliL2NvbW1vbi91dGlscy5qcykuXG4gICAqKi9cbiAgdGhpcy51dGlscyA9IHV0aWxzO1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I2hlbHBlcnMgLT4gaGVscGVyc1xuICAgKlxuICAgKiBMaW5rIGNvbXBvbmVudHMgcGFyc2VyIGZ1bmN0aW9ucywgdXNlZnVsIHRvIHdyaXRlIHBsdWdpbnMuIFNlZSBkZXRhaWxzXG4gICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvYmxvYi9tYXN0ZXIvbGliL2hlbHBlcnMpLlxuICAgKiovXG4gIHRoaXMuaGVscGVycyA9IHV0aWxzLmFzc2lnbih7fSwgaGVscGVycyk7XG5cblxuICB0aGlzLm9wdGlvbnMgPSB7fTtcbiAgdGhpcy5jb25maWd1cmUocHJlc2V0TmFtZSk7XG5cbiAgaWYgKG9wdGlvbnMpIHsgdGhpcy5zZXQob3B0aW9ucyk7IH1cbn1cblxuXG4vKiogY2hhaW5hYmxlXG4gKiBNYXJrZG93bkl0LnNldChvcHRpb25zKVxuICpcbiAqIFNldCBwYXJzZXIgb3B0aW9ucyAoaW4gdGhlIHNhbWUgZm9ybWF0IGFzIGluIGNvbnN0cnVjdG9yKS4gUHJvYmFibHksIHlvdVxuICogd2lsbCBuZXZlciBuZWVkIGl0LCBidXQgeW91IGNhbiBjaGFuZ2Ugb3B0aW9ucyBhZnRlciBjb25zdHJ1Y3RvciBjYWxsLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKClcbiAqICAgICAgICAgICAgIC5zZXQoeyBodG1sOiB0cnVlLCBicmVha3M6IHRydWUgfSlcbiAqICAgICAgICAgICAgIC5zZXQoeyB0eXBvZ3JhcGhlciwgdHJ1ZSB9KTtcbiAqIGBgYFxuICpcbiAqIF9fTm90ZTpfXyBUbyBhY2hpZXZlIHRoZSBiZXN0IHBvc3NpYmxlIHBlcmZvcm1hbmNlLCBkb24ndCBtb2RpZnkgYVxuICogYG1hcmtkb3duLWl0YCBpbnN0YW5jZSBvcHRpb25zIG9uIHRoZSBmbHkuIElmIHlvdSBuZWVkIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zXG4gKiBpdCdzIGJlc3QgdG8gY3JlYXRlIG11bHRpcGxlIGluc3RhbmNlcyBhbmQgaW5pdGlhbGl6ZSBlYWNoIHdpdGggc2VwYXJhdGVcbiAqIGNvbmZpZy5cbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHV0aWxzLmFzc2lnbih0aGlzLm9wdGlvbnMsIG9wdGlvbnMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblxuLyoqIGNoYWluYWJsZSwgaW50ZXJuYWxcbiAqIE1hcmtkb3duSXQuY29uZmlndXJlKHByZXNldHMpXG4gKlxuICogQmF0Y2ggbG9hZCBvZiBhbGwgb3B0aW9ucyBhbmQgY29tcGVuZW50IHNldHRpbmdzLiBUaGlzIGlzIGludGVybmFsIG1ldGhvZCxcbiAqIGFuZCB5b3UgcHJvYmFibHkgd2lsbCBub3QgbmVlZCBpdC4gQnV0IGlmIHlvdSB3aWxsIC0gc2VlIGF2YWlsYWJsZSBwcmVzZXRzXG4gKiBhbmQgZGF0YSBzdHJ1Y3R1cmUgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC90cmVlL21hc3Rlci9saWIvcHJlc2V0cylcbiAqXG4gKiBXZSBzdHJvbmdseSByZWNvbW1lbmQgdG8gdXNlIHByZXNldHMgaW5zdGVhZCBvZiBkaXJlY3QgY29uZmlnIGxvYWRzLiBUaGF0XG4gKiB3aWxsIGdpdmUgYmV0dGVyIGNvbXBhdGliaWxpdHkgd2l0aCBuZXh0IHZlcnNpb25zLlxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUuY29uZmlndXJlID0gZnVuY3Rpb24gKHByZXNldHMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzLCBwcmVzZXROYW1lO1xuXG4gIGlmICh1dGlscy5pc1N0cmluZyhwcmVzZXRzKSkge1xuICAgIHByZXNldE5hbWUgPSBwcmVzZXRzO1xuICAgIHByZXNldHMgPSBjb25maWdbcHJlc2V0TmFtZV07XG4gICAgaWYgKCFwcmVzZXRzKSB7IHRocm93IG5ldyBFcnJvcignV3JvbmcgYG1hcmtkb3duLWl0YCBwcmVzZXQgXCInICsgcHJlc2V0TmFtZSArICdcIiwgY2hlY2sgbmFtZScpOyB9XG4gIH1cblxuICBpZiAoIXByZXNldHMpIHsgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBgbWFya2Rvd24taXRgIHByZXNldCwgY2FuXFwndCBiZSBlbXB0eScpOyB9XG5cbiAgaWYgKHByZXNldHMub3B0aW9ucykgeyBzZWxmLnNldChwcmVzZXRzLm9wdGlvbnMpOyB9XG5cbiAgaWYgKHByZXNldHMuY29tcG9uZW50cykge1xuICAgIE9iamVjdC5rZXlzKHByZXNldHMuY29tcG9uZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgaWYgKHByZXNldHMuY29tcG9uZW50c1tuYW1lXS5ydWxlcykge1xuICAgICAgICBzZWxmW25hbWVdLnJ1bGVyLmVuYWJsZU9ubHkocHJlc2V0cy5jb21wb25lbnRzW25hbWVdLnJ1bGVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcmVzZXRzLmNvbXBvbmVudHNbbmFtZV0ucnVsZXMyKSB7XG4gICAgICAgIHNlbGZbbmFtZV0ucnVsZXIyLmVuYWJsZU9ubHkocHJlc2V0cy5jb21wb25lbnRzW25hbWVdLnJ1bGVzMik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKiBjaGFpbmFibGVcbiAqIE1hcmtkb3duSXQuZW5hYmxlKGxpc3QsIGlnbm9yZUludmFsaWQpXG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IHJ1bGUgbmFtZSBvciBsaXN0IG9mIHJ1bGUgbmFtZXMgdG8gZW5hYmxlXG4gKiAtIGlnbm9yZUludmFsaWQgKEJvb2xlYW4pOiBzZXQgYHRydWVgIHRvIGlnbm9yZSBlcnJvcnMgd2hlbiBydWxlIG5vdCBmb3VuZC5cbiAqXG4gKiBFbmFibGUgbGlzdCBvciBydWxlcy4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgYXBwcm9wcmlhdGUgY29tcG9uZW50cyxcbiAqIGNvbnRhaW5pbmcgcnVsZXMgd2l0aCBnaXZlbiBuYW1lcy4gSWYgcnVsZSBub3QgZm91bmQsIGFuZCBgaWdub3JlSW52YWxpZGBcbiAqIG5vdCBzZXQgLSB0aHJvd3MgZXhjZXB0aW9uLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKClcbiAqICAgICAgICAgICAgIC5lbmFibGUoWydzdWInLCAnc3VwJ10pXG4gKiAgICAgICAgICAgICAuZGlzYWJsZSgnc21hcnRxdW90ZXMnKTtcbiAqIGBgYFxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24gKGxpc3QsIGlnbm9yZUludmFsaWQpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuXG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gWyBsaXN0IF07IH1cblxuICBbICdjb3JlJywgJ2Jsb2NrJywgJ2lubGluZScgXS5mb3JFYWNoKGZ1bmN0aW9uIChjaGFpbikge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpc1tjaGFpbl0ucnVsZXIuZW5hYmxlKGxpc3QsIHRydWUpKTtcbiAgfSwgdGhpcyk7XG5cbiAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0aGlzLmlubGluZS5ydWxlcjIuZW5hYmxlKGxpc3QsIHRydWUpKTtcblxuICB2YXIgbWlzc2VkID0gbGlzdC5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIHJlc3VsdC5pbmRleE9mKG5hbWUpIDwgMDsgfSk7XG5cbiAgaWYgKG1pc3NlZC5sZW5ndGggJiYgIWlnbm9yZUludmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01hcmtkb3duSXQuIEZhaWxlZCB0byBlbmFibGUgdW5rbm93biBydWxlKHMpOiAnICsgbWlzc2VkKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuXG4vKiogY2hhaW5hYmxlXG4gKiBNYXJrZG93bkl0LmRpc2FibGUobGlzdCwgaWdub3JlSW52YWxpZClcbiAqIC0gbGlzdCAoU3RyaW5nfEFycmF5KTogcnVsZSBuYW1lIG9yIGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBkaXNhYmxlLlxuICogLSBpZ25vcmVJbnZhbGlkIChCb29sZWFuKTogc2V0IGB0cnVlYCB0byBpZ25vcmUgZXJyb3JzIHdoZW4gcnVsZSBub3QgZm91bmQuXG4gKlxuICogVGhlIHNhbWUgYXMgW1tNYXJrZG93bkl0LmVuYWJsZV1dLCBidXQgdHVybiBzcGVjaWZpZWQgcnVsZXMgb2ZmLlxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uIChsaXN0LCBpZ25vcmVJbnZhbGlkKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcblxuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHsgbGlzdCA9IFsgbGlzdCBdOyB9XG5cbiAgWyAnY29yZScsICdibG9jaycsICdpbmxpbmUnIF0uZm9yRWFjaChmdW5jdGlvbiAoY2hhaW4pIHtcbiAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXNbY2hhaW5dLnJ1bGVyLmRpc2FibGUobGlzdCwgdHJ1ZSkpO1xuICB9LCB0aGlzKTtcblxuICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHRoaXMuaW5saW5lLnJ1bGVyMi5kaXNhYmxlKGxpc3QsIHRydWUpKTtcblxuICB2YXIgbWlzc2VkID0gbGlzdC5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIHJlc3VsdC5pbmRleE9mKG5hbWUpIDwgMDsgfSk7XG5cbiAgaWYgKG1pc3NlZC5sZW5ndGggJiYgIWlnbm9yZUludmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01hcmtkb3duSXQuIEZhaWxlZCB0byBkaXNhYmxlIHVua25vd24gcnVsZShzKTogJyArIG1pc3NlZCk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5cbi8qKiBjaGFpbmFibGVcbiAqIE1hcmtkb3duSXQudXNlKHBsdWdpbiwgcGFyYW1zKVxuICpcbiAqIExvYWQgc3BlY2lmaWVkIHBsdWdpbiB3aXRoIGdpdmVuIHBhcmFtcyBpbnRvIGN1cnJlbnQgcGFyc2VyIGluc3RhbmNlLlxuICogSXQncyBqdXN0IGEgc3VnYXIgdG8gY2FsbCBgcGx1Z2luKG1kLCBwYXJhbXMpYCB3aXRoIGN1cnJpbmcuXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIHZhciBpdGVyYXRvciA9IHJlcXVpcmUoJ21hcmtkb3duLWl0LWZvci1pbmxpbmUnKTtcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKVxuICogICAgICAgICAgICAgLnVzZShpdGVyYXRvciwgJ2Zvb19yZXBsYWNlJywgJ3RleHQnLCBmdW5jdGlvbiAodG9rZW5zLCBpZHgpIHtcbiAqICAgICAgICAgICAgICAgdG9rZW5zW2lkeF0uY29udGVudCA9IHRva2Vuc1tpZHhdLmNvbnRlbnQucmVwbGFjZSgvZm9vL2csICdiYXInKTtcbiAqICAgICAgICAgICAgIH0pO1xuICogYGBgXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiAocGx1Z2luIC8qLCBwYXJhbXMsIC4uLiAqLykge1xuICB2YXIgYXJncyA9IFsgdGhpcyBdLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgcGx1Z2luLmFwcGx5KHBsdWdpbiwgYXJncyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuXG4vKiogaW50ZXJuYWxcbiAqIE1hcmtkb3duSXQucGFyc2Uoc3JjLCBlbnYpIC0+IEFycmF5XG4gKiAtIHNyYyAoU3RyaW5nKTogc291cmNlIHN0cmluZ1xuICogLSBlbnYgKE9iamVjdCk6IGVudmlyb25tZW50IHNhbmRib3hcbiAqXG4gKiBQYXJzZSBpbnB1dCBzdHJpbmcgYW5kIHJldHVybiBsaXN0IG9mIGJsb2NrIHRva2VucyAoc3BlY2lhbCB0b2tlbiB0eXBlXG4gKiBcImlubGluZVwiIHdpbGwgY29udGFpbiBsaXN0IG9mIGlubGluZSB0b2tlbnMpLiBZb3Ugc2hvdWxkIG5vdCBjYWxsIHRoaXNcbiAqIG1ldGhvZCBkaXJlY3RseSwgdW50aWwgeW91IHdyaXRlIGN1c3RvbSByZW5kZXJlciAoZm9yIGV4YW1wbGUsIHRvIHByb2R1Y2VcbiAqIEFTVCkuXG4gKlxuICogYGVudmAgaXMgdXNlZCB0byBwYXNzIGRhdGEgYmV0d2VlbiBcImRpc3RyaWJ1dGVkXCIgcnVsZXMgYW5kIHJldHVybiBhZGRpdGlvbmFsXG4gKiBtZXRhZGF0YSBsaWtlIHJlZmVyZW5jZSBpbmZvLCBuZWVkZWQgZm9yIHRoZSByZW5kZXJlci4gSXQgYWxzbyBjYW4gYmUgdXNlZCB0b1xuICogaW5qZWN0IGRhdGEgaW4gc3BlY2lmaWMgY2FzZXMuIFVzdWFsbHksIHlvdSB3aWxsIGJlIG9rIHRvIHBhc3MgYHt9YCxcbiAqIGFuZCB0aGVuIHBhc3MgdXBkYXRlZCBvYmplY3QgdG8gcmVuZGVyZXIuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uIChzcmMsIGVudikge1xuICBpZiAodHlwZW9mIHNyYyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lucHV0IGRhdGEgc2hvdWxkIGJlIGEgU3RyaW5nJyk7XG4gIH1cblxuICB2YXIgc3RhdGUgPSBuZXcgdGhpcy5jb3JlLlN0YXRlKHNyYywgdGhpcywgZW52KTtcblxuICB0aGlzLmNvcmUucHJvY2VzcyhzdGF0ZSk7XG5cbiAgcmV0dXJuIHN0YXRlLnRva2Vucztcbn07XG5cblxuLyoqXG4gKiBNYXJrZG93bkl0LnJlbmRlcihzcmMgWywgZW52XSkgLT4gU3RyaW5nXG4gKiAtIHNyYyAoU3RyaW5nKTogc291cmNlIHN0cmluZ1xuICogLSBlbnYgKE9iamVjdCk6IGVudmlyb25tZW50IHNhbmRib3hcbiAqXG4gKiBSZW5kZXIgbWFya2Rvd24gc3RyaW5nIGludG8gaHRtbC4gSXQgZG9lcyBhbGwgbWFnaWMgZm9yIHlvdSA6KS5cbiAqXG4gKiBgZW52YCBjYW4gYmUgdXNlZCB0byBpbmplY3QgYWRkaXRpb25hbCBtZXRhZGF0YSAoYHt9YCBieSBkZWZhdWx0KS5cbiAqIEJ1dCB5b3Ugd2lsbCBub3QgbmVlZCBpdCB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuIFNlZSBhbHNvIGNvbW1lbnRcbiAqIGluIFtbTWFya2Rvd25JdC5wYXJzZV1dLlxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKHNyYywgZW52KSB7XG4gIGVudiA9IGVudiB8fCB7fTtcblxuICByZXR1cm4gdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5wYXJzZShzcmMsIGVudiksIHRoaXMub3B0aW9ucywgZW52KTtcbn07XG5cblxuLyoqIGludGVybmFsXG4gKiBNYXJrZG93bkl0LnBhcnNlSW5saW5lKHNyYywgZW52KSAtPiBBcnJheVxuICogLSBzcmMgKFN0cmluZyk6IHNvdXJjZSBzdHJpbmdcbiAqIC0gZW52IChPYmplY3QpOiBlbnZpcm9ubWVudCBzYW5kYm94XG4gKlxuICogVGhlIHNhbWUgYXMgW1tNYXJrZG93bkl0LnBhcnNlXV0gYnV0IHNraXAgYWxsIGJsb2NrIHJ1bGVzLiBJdCByZXR1cm5zIHRoZVxuICogYmxvY2sgdG9rZW5zIGxpc3Qgd2l0aCB0aGUgc2luZ2xlIGBpbmxpbmVgIGVsZW1lbnQsIGNvbnRhaW5pbmcgcGFyc2VkIGlubGluZVxuICogdG9rZW5zIGluIGBjaGlsZHJlbmAgcHJvcGVydHkuIEFsc28gdXBkYXRlcyBgZW52YCBvYmplY3QuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5wYXJzZUlubGluZSA9IGZ1bmN0aW9uIChzcmMsIGVudikge1xuICB2YXIgc3RhdGUgPSBuZXcgdGhpcy5jb3JlLlN0YXRlKHNyYywgdGhpcywgZW52KTtcblxuICBzdGF0ZS5pbmxpbmVNb2RlID0gdHJ1ZTtcbiAgdGhpcy5jb3JlLnByb2Nlc3Moc3RhdGUpO1xuXG4gIHJldHVybiBzdGF0ZS50b2tlbnM7XG59O1xuXG5cbi8qKlxuICogTWFya2Rvd25JdC5yZW5kZXJJbmxpbmUoc3JjIFssIGVudl0pIC0+IFN0cmluZ1xuICogLSBzcmMgKFN0cmluZyk6IHNvdXJjZSBzdHJpbmdcbiAqIC0gZW52IChPYmplY3QpOiBlbnZpcm9ubWVudCBzYW5kYm94XG4gKlxuICogU2ltaWxhciB0byBbW01hcmtkb3duSXQucmVuZGVyXV0gYnV0IGZvciBzaW5nbGUgcGFyYWdyYXBoIGNvbnRlbnQuIFJlc3VsdFxuICogd2lsbCBOT1QgYmUgd3JhcHBlZCBpbnRvIGA8cD5gIHRhZ3MuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5yZW5kZXJJbmxpbmUgPSBmdW5jdGlvbiAoc3JjLCBlbnYpIHtcbiAgZW52ID0gZW52IHx8IHt9O1xuXG4gIHJldHVybiB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnBhcnNlSW5saW5lKHNyYywgZW52KSwgdGhpcy5vcHRpb25zLCBlbnYpO1xufTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcmtkb3duSXQ7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvJyk7XG4iLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiXCJ1c2Ugc3RyaWN0XCI7XG4vKiFcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIG1oY2hlbVBhcnNlci50c1xuICogIDQuMS4xXG4gKlxuICogIFBhcnNlciBmb3IgdGhlIFxcY2UgY29tbWFuZCBhbmQgXFxwdSBjb21tYW5kIGZvciBNYXRoSmF4IGFuZCBDby5cbiAqXG4gKiAgbWhjaGVtJ3MgXFxjZSBpcyBhIHRvb2wgZm9yIHdyaXRpbmcgYmVhdXRpZnVsIGNoZW1pY2FsIGVxdWF0aW9ucyBlYXNpbHkuXG4gKiAgbWhjaGVtJ3MgXFxwdSBpcyBhIHRvb2wgZm9yIHdyaXRpbmcgcGh5c2ljYWwgdW5pdHMgZWFzaWx5LlxuICpcbiAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNS0yMDIxIE1hcnRpbiBIZW5zZWxcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqXG4gKiAgaHR0cHM6Ly9naXRodWIuY29tL21oY2hlbS9taGNoZW1QYXJzZXJcbiAqXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMubWhjaGVtUGFyc2VyID0gdm9pZCAwO1xudmFyIG1oY2hlbVBhcnNlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gbWhjaGVtUGFyc2VyKCkge1xuICAgIH1cbiAgICBtaGNoZW1QYXJzZXIudG9UZXggPSBmdW5jdGlvbiAoaW5wdXQsIHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIF9taGNoZW1UZXhpZnkuZ28oX21oY2hlbVBhcnNlci5nbyhpbnB1dCwgdHlwZSksIHR5cGUgIT09IFwidGV4XCIpO1xuICAgIH07XG4gICAgcmV0dXJuIG1oY2hlbVBhcnNlcjtcbn0oKSk7XG5leHBvcnRzLm1oY2hlbVBhcnNlciA9IG1oY2hlbVBhcnNlcjtcbmZ1bmN0aW9uIF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyhvKSB7XG4gICAgdmFyIHBhdHRlcm4sIHN0YXRlO1xuICAgIHZhciB0cmFuc2l0aW9ucyA9IHt9O1xuICAgIGZvciAocGF0dGVybiBpbiBvKSB7XG4gICAgICAgIGZvciAoc3RhdGUgaW4gb1twYXR0ZXJuXSkge1xuICAgICAgICAgICAgdmFyIHN0YXRlQXJyYXkgPSBzdGF0ZS5zcGxpdChcInxcIik7XG4gICAgICAgICAgICBvW3BhdHRlcm5dW3N0YXRlXS5zdGF0ZUFycmF5ID0gc3RhdGVBcnJheTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdGVBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zW3N0YXRlQXJyYXlbaV1dID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChwYXR0ZXJuIGluIG8pIHtcbiAgICAgICAgZm9yIChzdGF0ZSBpbiBvW3BhdHRlcm5dKSB7XG4gICAgICAgICAgICB2YXIgc3RhdGVBcnJheSA9IG9bcGF0dGVybl1bc3RhdGVdLnN0YXRlQXJyYXkgfHwgW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcCA9IG9bcGF0dGVybl1bc3RhdGVdO1xuICAgICAgICAgICAgICAgIHAuYWN0aW9uXyA9IFtdLmNvbmNhdChwLmFjdGlvbl8pO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgcC5hY3Rpb25fLmxlbmd0aDsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC5hY3Rpb25fW2tdID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLmFjdGlvbl9ba10gPSB7IHR5cGVfOiBwLmFjdGlvbl9ba10gfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcGF0dGVybkFycmF5ID0gcGF0dGVybi5zcGxpdChcInxcIik7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBwYXR0ZXJuQXJyYXkubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlQXJyYXlbaV0gPT09ICcqJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHQgaW4gdHJhbnNpdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uc1t0XS5wdXNoKHsgcGF0dGVybjogcGF0dGVybkFycmF5W2pdLCB0YXNrOiBwIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnNbc3RhdGVBcnJheVtpXV0ucHVzaCh7IHBhdHRlcm46IHBhdHRlcm5BcnJheVtqXSwgdGFzazogcCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJhbnNpdGlvbnM7XG59XG47XG52YXIgX21oY2hlbVBhcnNlciA9IHtcbiAgICBnbzogZnVuY3Rpb24gKGlucHV0LCBzdGF0ZU1hY2hpbmUpIHtcbiAgICAgICAgaWYgKCFpbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZU1hY2hpbmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc3RhdGVNYWNoaW5lID0gJ2NlJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RhdGUgPSAnMCc7XG4gICAgICAgIHZhciBidWZmZXIgPSB7fTtcbiAgICAgICAgYnVmZmVyWydwYXJlbnRoZXNpc0xldmVsJ10gPSAwO1xuICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1xcbi9nLCBcIiBcIik7XG4gICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgvW1xcdTIyMTJcXHUyMDEzXFx1MjAxNFxcdTIwMTBdL2csIFwiLVwiKTtcbiAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC9bXFx1MjAyNl0vZywgXCIuLi5cIik7XG4gICAgICAgIHZhciBsYXN0SW5wdXQ7XG4gICAgICAgIHZhciB3YXRjaGRvZyA9IDEwO1xuICAgICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBpZiAobGFzdElucHV0ICE9PSBpbnB1dCkge1xuICAgICAgICAgICAgICAgIHdhdGNoZG9nID0gMTA7XG4gICAgICAgICAgICAgICAgbGFzdElucHV0ID0gaW5wdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB3YXRjaGRvZy0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG1hY2hpbmUgPSBfbWhjaGVtUGFyc2VyLnN0YXRlTWFjaGluZXNbc3RhdGVNYWNoaW5lXTtcbiAgICAgICAgICAgIHZhciB0ID0gbWFjaGluZS50cmFuc2l0aW9uc1tzdGF0ZV0gfHwgbWFjaGluZS50cmFuc2l0aW9uc1snKiddO1xuICAgICAgICAgICAgaXRlcmF0ZVRyYW5zaXRpb25zOiBmb3IgKHZhciBpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgbWF0Y2hlcyA9IF9taGNoZW1QYXJzZXIucGF0dGVybnMubWF0Y2hfKHRbaV0ucGF0dGVybiwgaW5wdXQpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXNrID0gdFtpXS50YXNrO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpQSA9IDA7IGlBIDwgdGFzay5hY3Rpb25fLmxlbmd0aDsgaUErKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFjaGluZS5hY3Rpb25zW3Rhc2suYWN0aW9uX1tpQV0udHlwZV9dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG1hY2hpbmUuYWN0aW9uc1t0YXNrLmFjdGlvbl9baUFdLnR5cGVfXShidWZmZXIsIG1hdGNoZXMubWF0Y2hfLCB0YXNrLmFjdGlvbl9baUFdLm9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChfbWhjaGVtUGFyc2VyLmFjdGlvbnNbdGFzay5hY3Rpb25fW2lBXS50eXBlX10pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gX21oY2hlbVBhcnNlci5hY3Rpb25zW3Rhc2suYWN0aW9uX1tpQV0udHlwZV9dKGJ1ZmZlciwgbWF0Y2hlcy5tYXRjaF8sIHRhc2suYWN0aW9uX1tpQV0ub3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFtcIk1oY2hlbUJ1Z0FcIiwgXCJtaGNoZW0gYnVnIEEuIFBsZWFzZSByZXBvcnQuIChcIiArIHRhc2suYWN0aW9uX1tpQV0udHlwZV8gKyBcIilcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBfbWhjaGVtUGFyc2VyLmNvbmNhdEFycmF5KG91dHB1dCwgbyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSB0YXNrLm5leHRTdGF0ZSB8fCBzdGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGFzay5yZXZpc2l0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSBtYXRjaGVzLnJlbWFpbmRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGFzay50b0NvbnRpbnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaXRlcmF0ZVRyYW5zaXRpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh3YXRjaGRvZyA8PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgW1wiTWhjaGVtQnVnVVwiLCBcIm1oY2hlbSBidWcgVS4gUGxlYXNlIHJlcG9ydC5cIl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNvbmNhdEFycmF5OiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICBpZiAoYikge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYikpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpQiA9IDA7IGlCIDwgYi5sZW5ndGg7IGlCKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYS5wdXNoKGJbaUJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBhLnB1c2goYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHBhdHRlcm5zOiB7XG4gICAgICAgIHBhdHRlcm5zOiB7XG4gICAgICAgICAgICAnZW1wdHknOiAvXiQvLFxuICAgICAgICAgICAgJ2Vsc2UnOiAvXi4vLFxuICAgICAgICAgICAgJ2Vsc2UyJzogL14uLyxcbiAgICAgICAgICAgICdzcGFjZSc6IC9eXFxzLyxcbiAgICAgICAgICAgICdzcGFjZSBBJzogL15cXHMoPz1bQS1aXFxcXCRdKS8sXG4gICAgICAgICAgICAnc3BhY2UkJzogL15cXHMkLyxcbiAgICAgICAgICAgICdhLXonOiAvXlthLXpdLyxcbiAgICAgICAgICAgICd4JzogL154LyxcbiAgICAgICAgICAgICd4JCc6IC9eeCQvLFxuICAgICAgICAgICAgJ2kkJzogL15pJC8sXG4gICAgICAgICAgICAnbGV0dGVycyc6IC9eKD86W2EtekEtWlxcdTAzQjEtXFx1MDNDOVxcdTAzOTEtXFx1MDNBOT9AXXwoPzpcXFxcKD86YWxwaGF8YmV0YXxnYW1tYXxkZWx0YXxlcHNpbG9ufHpldGF8ZXRhfHRoZXRhfGlvdGF8a2FwcGF8bGFtYmRhfG11fG51fHhpfG9taWNyb258cGl8cmhvfHNpZ21hfHRhdXx1cHNpbG9ufHBoaXxjaGl8cHNpfG9tZWdhfEdhbW1hfERlbHRhfFRoZXRhfExhbWJkYXxYaXxQaXxTaWdtYXxVcHNpbG9ufFBoaXxQc2l8T21lZ2EpKD86XFxzK3xcXHtcXH18KD8hW2EtekEtWl0pKSkpKy8sXG4gICAgICAgICAgICAnXFxcXGdyZWVrJzogL15cXFxcKD86YWxwaGF8YmV0YXxnYW1tYXxkZWx0YXxlcHNpbG9ufHpldGF8ZXRhfHRoZXRhfGlvdGF8a2FwcGF8bGFtYmRhfG11fG51fHhpfG9taWNyb258cGl8cmhvfHNpZ21hfHRhdXx1cHNpbG9ufHBoaXxjaGl8cHNpfG9tZWdhfEdhbW1hfERlbHRhfFRoZXRhfExhbWJkYXxYaXxQaXxTaWdtYXxVcHNpbG9ufFBoaXxQc2l8T21lZ2EpKD86XFxzK3xcXHtcXH18KD8hW2EtekEtWl0pKS8sXG4gICAgICAgICAgICAnb25lIGxvd2VyY2FzZSBsYXRpbiBsZXR0ZXIgJCc6IC9eKD86KFthLXpdKSg/OiR8W15hLXpBLVpdKSkkLyxcbiAgICAgICAgICAgICckb25lIGxvd2VyY2FzZSBsYXRpbiBsZXR0ZXIkICQnOiAvXlxcJCg/OihbYS16XSkoPzokfFteYS16QS1aXSkpXFwkJC8sXG4gICAgICAgICAgICAnb25lIGxvd2VyY2FzZSBncmVlayBsZXR0ZXIgJCc6IC9eKD86XFwkP1tcXHUwM0IxLVxcdTAzQzldXFwkP3xcXCQ/XFxcXCg/OmFscGhhfGJldGF8Z2FtbWF8ZGVsdGF8ZXBzaWxvbnx6ZXRhfGV0YXx0aGV0YXxpb3RhfGthcHBhfGxhbWJkYXxtdXxudXx4aXxvbWljcm9ufHBpfHJob3xzaWdtYXx0YXV8dXBzaWxvbnxwaGl8Y2hpfHBzaXxvbWVnYSlcXHMqXFwkPykoPzpcXHMrfFxce1xcfXwoPyFbYS16QS1aXSkpJC8sXG4gICAgICAgICAgICAnZGlnaXRzJzogL15bMC05XSsvLFxuICAgICAgICAgICAgJy05Liw5JzogL15bK1xcLV0/KD86WzAtOV0rKD86WywuXVswLTldKyk/fFswLTldKig/OlxcLlswLTldKykpLyxcbiAgICAgICAgICAgICctOS4sOSBubyBtaXNzaW5nIDAnOiAvXlsrXFwtXT9bMC05XSsoPzpbLixdWzAtOV0rKT8vLFxuICAgICAgICAgICAgJygtKSg5Liw5KShlKSg5OSknOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBpbnB1dC5tYXRjaCgvXihcXCtcXC18XFwrXFwvXFwtfFxcK3xcXC18XFxcXHBtXFxzPyk/KFswLTldKyg/OlssLl1bMC05XSspP3xbMC05XSooPzpcXC5bMC05XSspKT8oXFwoKD86WzAtOV0rKD86WywuXVswLTldKyk/fFswLTldKig/OlxcLlswLTldKykpXFwpKT8oPzooPzooW2VFXSl8XFxzKihcXCp8eHxcXFxcdGltZXN8XFx1MDBENylcXHMqMTBcXF4pKFsrXFwtXT9bMC05XSt8XFx7WytcXC1dP1swLTldK1xcfSkpPy8pO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaFswXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaF86IG1hdGNoLnNsaWNlKDEpLCByZW1haW5kZXI6IGlucHV0LnN1YnN0cihtYXRjaFswXS5sZW5ndGgpIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcoLSkoOSleKC05KSc6IC9eKFxcK1xcLXxcXCtcXC9cXC18XFwrfFxcLXxcXFxccG1cXHM/KT8oWzAtOV0rKD86WywuXVswLTldKyk/fFswLTldKig/OlxcLlswLTldKyk/KVxcXihbK1xcLV0/WzAtOV0rfFxce1srXFwtXT9bMC05XStcXH0pLyxcbiAgICAgICAgICAgICdzdGF0ZSBvZiBhZ2dyZWdhdGlvbiAkJzogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGEgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlwiLCAvXlxcKFthLXpdezEsM30oPz1bXFwpLF0pLywgXCIpXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmIChhICYmIGEucmVtYWluZGVyLm1hdGNoKC9eKCR8W1xccyw7XFwpXFxdXFx9XSkvKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gaW5wdXQubWF0Y2goL14oPzpcXCgoPzpcXFxcY2FcXHM/KT9cXCRbYW1vdGhjXVxcJFxcKSkvKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hfOiBtYXRjaFswXSwgcmVtYWluZGVyOiBpbnB1dC5zdWJzdHIobWF0Y2hbMF0ubGVuZ3RoKSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnX3soc3RhdGUgb2YgYWdncmVnYXRpb24pfSQnOiAvXl9cXHsoXFwoW2Etel17MSwzfVxcKSlcXH0vLFxuICAgICAgICAgICAgJ3tbKCc6IC9eKD86XFxcXFxce3xcXFt8XFwoKS8sXG4gICAgICAgICAgICAnKV19JzogL14oPzpcXCl8XFxdfFxcXFxcXH0pLyxcbiAgICAgICAgICAgICcsICc6IC9eWyw7XVxccyovLFxuICAgICAgICAgICAgJywnOiAvXlssO10vLFxuICAgICAgICAgICAgJy4nOiAvXlsuXS8sXG4gICAgICAgICAgICAnLiBfXyogJzogL14oWy5cXHUyMkM1XFx1MDBCN1xcdTIwMjJdfFsqXSlcXHMqLyxcbiAgICAgICAgICAgICcuLi4nOiAvXlxcLlxcLlxcLig/PSR8W14uXSkvLFxuICAgICAgICAgICAgJ157KC4uLil9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIl57XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICdeKCQuLi4kKSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJeXCIsIFwiJFwiLCBcIiRcIiwgXCJcIik7IH0sXG4gICAgICAgICAgICAnXmEnOiAvXlxcXihbMC05XSt8W15cXFxcX10pLyxcbiAgICAgICAgICAgICdeXFxcXHh7fXt9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIl5cIiwgL15cXFxcW2EtekEtWl0rXFx7LywgXCJ9XCIsIFwiXCIsIFwiXCIsIFwie1wiLCBcIn1cIiwgXCJcIiwgdHJ1ZSk7IH0sXG4gICAgICAgICAgICAnXlxcXFx4e30nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXlwiLCAvXlxcXFxbYS16QS1aXStcXHsvLCBcIn1cIiwgXCJcIik7IH0sXG4gICAgICAgICAgICAnXlxcXFx4JzogL15cXF4oXFxcXFthLXpBLVpdKylcXHMqLyxcbiAgICAgICAgICAgICdeKC0xKSc6IC9eXFxeKC0/XFxkKykvLFxuICAgICAgICAgICAgJ1xcJyc6IC9eJy8sXG4gICAgICAgICAgICAnX3soLi4uKX0nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiX3tcIiwgXCJcIiwgXCJcIiwgXCJ9XCIpOyB9LFxuICAgICAgICAgICAgJ18oJC4uLiQpJzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIl9cIiwgXCIkXCIsIFwiJFwiLCBcIlwiKTsgfSxcbiAgICAgICAgICAgICdfOSc6IC9eXyhbK1xcLV0/WzAtOV0rfFteXFxcXF0pLyxcbiAgICAgICAgICAgICdfXFxcXHh7fXt9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIl9cIiwgL15cXFxcW2EtekEtWl0rXFx7LywgXCJ9XCIsIFwiXCIsIFwiXCIsIFwie1wiLCBcIn1cIiwgXCJcIiwgdHJ1ZSk7IH0sXG4gICAgICAgICAgICAnX1xcXFx4e30nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiX1wiLCAvXlxcXFxbYS16QS1aXStcXHsvLCBcIn1cIiwgXCJcIik7IH0sXG4gICAgICAgICAgICAnX1xcXFx4JzogL15fKFxcXFxbYS16QS1aXSspXFxzKi8sXG4gICAgICAgICAgICAnXl8nOiAvXig/OlxcXig/PV8pfFxcXyg/PVxcXil8W1xcXl9dJCkvLFxuICAgICAgICAgICAgJ3t9Xic6IC9eXFx7XFx9KD89XFxeKS8sXG4gICAgICAgICAgICAne30nOiAvXlxce1xcfS8sXG4gICAgICAgICAgICAney4uLn0nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXCIsIFwie1wiLCBcIn1cIiwgXCJcIik7IH0sXG4gICAgICAgICAgICAneyguLi4pfSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJ7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICckLi4uJCc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJcIiwgXCIkXCIsIFwiJFwiLCBcIlwiKTsgfSxcbiAgICAgICAgICAgICckeyguLi4pfSRfXyQoLi4uKSQnOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCIke1wiLCBcIlwiLCBcIlwiLCBcIn0kXCIpIHx8IF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiJFwiLCBcIlwiLCBcIlwiLCBcIiRcIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJz08Pic6IC9eWz08Pl0vLFxuICAgICAgICAgICAgJyMnOiAvXlsjXFx1MjI2MV0vLFxuICAgICAgICAgICAgJysnOiAvXlxcKy8sXG4gICAgICAgICAgICAnLSQnOiAvXi0oPz1bXFxzX30sO1xcXS9dfCR8XFwoW2Etel0rXFwpKS8sXG4gICAgICAgICAgICAnLTknOiAvXi0oPz1bMC05XSkvLFxuICAgICAgICAgICAgJy0gb3JiaXRhbCBvdmVybGFwJzogL14tKD89KD86W3NwZF18c3ApKD86JHxbXFxzLDtcXClcXF1cXH1dKSkvLFxuICAgICAgICAgICAgJy0nOiAvXi0vLFxuICAgICAgICAgICAgJ3BtLW9wZXJhdG9yJzogL14oPzpcXFxccG18XFwkXFxcXHBtXFwkfFxcKy18XFwrXFwvLSkvLFxuICAgICAgICAgICAgJ29wZXJhdG9yJzogL14oPzpcXCt8KD86W1xcLT08Pl18PDx8Pj58XFxcXGFwcHJveHxcXCRcXFxcYXBwcm94XFwkKSg/PVxcc3wkfC0/WzAtOV0pKS8sXG4gICAgICAgICAgICAnYXJyb3dVcERvd24nOiAvXig/OnZ8XFwodlxcKXxcXF58XFwoXFxeXFwpKSg/PSR8W1xccyw7XFwpXFxdXFx9XSkvLFxuICAgICAgICAgICAgJ1xcXFxib25keyguLi4pfSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJcXFxcYm9uZHtcIiwgXCJcIiwgXCJcIiwgXCJ9XCIpOyB9LFxuICAgICAgICAgICAgJy0+JzogL14oPzo8LT58PC0tPnwtPnw8LXw8PT4+fDw8PT58PD0+fFtcXHUyMTkyXFx1MjdGNlxcdTIxQ0NdKS8sXG4gICAgICAgICAgICAnQ01UJzogL15bQ01UXSg/PVxcWykvLFxuICAgICAgICAgICAgJ1soLi4uKV0nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiW1wiLCBcIlwiLCBcIlwiLCBcIl1cIik7IH0sXG4gICAgICAgICAgICAnMXN0LWxldmVsIGVzY2FwZSc6IC9eKCZ8XFxcXFxcXFx8XFxcXGhsaW5lKVxccyovLFxuICAgICAgICAgICAgJ1xcXFwsJzogL14oPzpcXFxcWyxcXCA7Ol0pLyxcbiAgICAgICAgICAgICdcXFxceHt9e30nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXCIsIC9eXFxcXFthLXpBLVpdK1xcey8sIFwifVwiLCBcIlwiLCBcIlwiLCBcIntcIiwgXCJ9XCIsIFwiXCIsIHRydWUpOyB9LFxuICAgICAgICAgICAgJ1xcXFx4e30nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXCIsIC9eXFxcXFthLXpBLVpdK1xcey8sIFwifVwiLCBcIlwiKTsgfSxcbiAgICAgICAgICAgICdcXFxcY2EnOiAvXlxcXFxjYSg/Olxccyt8KD8hW2EtekEtWl0pKS8sXG4gICAgICAgICAgICAnXFxcXHgnOiAvXig/OlxcXFxbYS16QS1aXStcXHMqfFxcXFxbXyZ7fSVdKS8sXG4gICAgICAgICAgICAnb3JiaXRhbCc6IC9eKD86WzAtOV17MSwyfVtzcGRmZ2hdfFswLTldezAsMn1zcCkoPz0kfFteYS16QS1aXSkvLFxuICAgICAgICAgICAgJ290aGVycyc6IC9eW1xcL358XS8sXG4gICAgICAgICAgICAnXFxcXGZyYWN7KC4uLil9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlxcXFxmcmFje1wiLCBcIlwiLCBcIlwiLCBcIn1cIiwgXCJ7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICdcXFxcb3ZlcnNldHsoLi4uKX0nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXFxcXG92ZXJzZXR7XCIsIFwiXCIsIFwiXCIsIFwifVwiLCBcIntcIiwgXCJcIiwgXCJcIiwgXCJ9XCIpOyB9LFxuICAgICAgICAgICAgJ1xcXFx1bmRlcnNldHsoLi4uKX0nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXFxcXHVuZGVyc2V0e1wiLCBcIlwiLCBcIlwiLCBcIn1cIiwgXCJ7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICdcXFxcdW5kZXJicmFjZXsoLi4uKX0nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXFxcXHVuZGVyYnJhY2V7XCIsIFwiXCIsIFwiXCIsIFwifV9cIiwgXCJ7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICdcXFxcY29sb3J7KC4uLil9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlxcXFxjb2xvcntcIiwgXCJcIiwgXCJcIiwgXCJ9XCIpOyB9LFxuICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX17KC4uLil9JzogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXFxcXGNvbG9ye1wiLCBcIlwiLCBcIlwiLCBcIn1cIiwgXCJ7XCIsIFwiXCIsIFwiXCIsIFwifVwiKSB8fFxuICAgICAgICAgICAgICAgICAgICBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlxcXFxjb2xvclwiLCBcIlxcXFxcIiwgXCJcIiwgL14oPz1cXHspLywgXCJ7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnXFxcXGNleyguLi4pfSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJcXFxcY2V7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICdcXFxccHV7KC4uLil9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlxcXFxwdXtcIiwgXCJcIiwgXCJcIiwgXCJ9XCIpOyB9LFxuICAgICAgICAgICAgJ294aWRhdGlvbiQnOiAvXig/OlsrLV1bSVZYXSt8XFxcXHBtXFxzKjB8XFwkXFxcXHBtXFwkXFxzKjApJC8sXG4gICAgICAgICAgICAnZC1veGlkYXRpb24kJzogL14oPzpbKy1dP1xccz9bSVZYXSt8XFxcXHBtXFxzKjB8XFwkXFxcXHBtXFwkXFxzKjApJC8sXG4gICAgICAgICAgICAncm9tYW4gbnVtZXJhbCc6IC9eW0lWWF0rLyxcbiAgICAgICAgICAgICcxLzIkJzogL15bK1xcLV0/KD86WzAtOV0rfFxcJFthLXpdXFwkfFthLXpdKVxcL1swLTldKyg/OlxcJFthLXpdXFwkfFthLXpdKT8kLyxcbiAgICAgICAgICAgICdhbW91bnQnOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWF0Y2g7XG4gICAgICAgICAgICAgICAgbWF0Y2ggPSBpbnB1dC5tYXRjaCgvXig/Oig/Oig/OlxcKFsrXFwtXT9bMC05XStcXC9bMC05XStcXCl8WytcXC1dPyg/OlswLTldK3xcXCRbYS16XVxcJHxbYS16XSlcXC9bMC05XSt8WytcXC1dP1swLTldK1suLF1bMC05XSt8WytcXC1dP1xcLlswLTldK3xbK1xcLV0/WzAtOV0rKSg/OlthLXpdKD89XFxzKltBLVpdKSk/KXxbK1xcLV0/W2Etel0oPz1cXHMqW0EtWl0pfFxcKyg/IVxccykpLyk7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoXzogbWF0Y2hbMF0sIHJlbWFpbmRlcjogaW5wdXQuc3Vic3RyKG1hdGNoWzBdLmxlbmd0aCkgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGEgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlwiLCBcIiRcIiwgXCIkXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoID0gYS5tYXRjaF8ubWF0Y2goL15cXCQoPzpcXCg/WytcXC1dPyg/OlswLTldKlthLXpdP1srXFwtXSk/WzAtOV0qW2Etel0oPzpbK1xcLV1bMC05XSpbYS16XT8pP1xcKT98XFwrfC0pXFwkJC8pO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoXzogbWF0Y2hbMF0sIHJlbWFpbmRlcjogaW5wdXQuc3Vic3RyKG1hdGNoWzBdLmxlbmd0aCkgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnYW1vdW50Mic6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gdGhpc1snYW1vdW50J10oaW5wdXQpOyB9LFxuICAgICAgICAgICAgJyhLViBsZXR0ZXJzKSwnOiAvXig/OltBLVpdW2Etel17MCwyfXxpKSg/PSwpLyxcbiAgICAgICAgICAgICdmb3JtdWxhJCc6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5tYXRjaCgvXlxcKFthLXpdK1xcKSQvKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gaW5wdXQubWF0Y2goL14oPzpbYS16XXwoPzpbMC05XFwgXFwrXFwtXFwsXFwuXFwoXFwpXStbYS16XSkrWzAtOVxcIFxcK1xcLVxcLFxcLlxcKFxcKV0qfCg/OlthLXpdWzAtOVxcIFxcK1xcLVxcLFxcLlxcKFxcKV0rKStbYS16XT8pJC8pO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaF86IG1hdGNoWzBdLCByZW1haW5kZXI6IGlucHV0LnN1YnN0cihtYXRjaFswXS5sZW5ndGgpIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICd1cHJpZ2h0RW50aXRpZXMnOiAvXig/OnBIfHBPSHxwQ3xwS3xpUHJ8aUJ1KSg/PSR8W15hLXpBLVpdKS8sXG4gICAgICAgICAgICAnLyc6IC9eXFxzKihcXC8pXFxzKi8sXG4gICAgICAgICAgICAnLy8nOiAvXlxccyooXFwvXFwvKVxccyovLFxuICAgICAgICAgICAgJyonOiAvXlxccypbKi5dXFxzKi9cbiAgICAgICAgfSxcbiAgICAgICAgZmluZE9ic2VydmVHcm91cHM6IGZ1bmN0aW9uIChpbnB1dCwgYmVnRXhjbCwgYmVnSW5jbCwgZW5kSW5jbCwgZW5kRXhjbCwgYmVnMkV4Y2wsIGJlZzJJbmNsLCBlbmQySW5jbCwgZW5kMkV4Y2wsIGNvbWJpbmUpIHtcbiAgICAgICAgICAgIHZhciBfbWF0Y2ggPSBmdW5jdGlvbiAoaW5wdXQsIHBhdHRlcm4pIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBhdHRlcm4gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmluZGV4T2YocGF0dGVybikgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoXzEgPSBpbnB1dC5tYXRjaChwYXR0ZXJuKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaF8xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hfMVswXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIF9maW5kT2JzZXJ2ZUdyb3VwcyA9IGZ1bmN0aW9uIChpbnB1dCwgaSwgZW5kQ2hhcnMpIHtcbiAgICAgICAgICAgICAgICB2YXIgYnJhY2VzID0gMDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGlucHV0LmNoYXJBdChpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoXzIgPSBfbWF0Y2goaW5wdXQuc3Vic3RyKGkpLCBlbmRDaGFycyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaF8yICE9PSBudWxsICYmIGJyYWNlcyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgZW5kTWF0Y2hCZWdpbjogaSwgZW5kTWF0Y2hFbmQ6IGkgKyBtYXRjaF8yLmxlbmd0aCB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGEgPT09IFwie1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmFjZXMrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhID09PSBcIn1cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJyYWNlcyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFtcIkV4dHJhQ2xvc2VNaXNzaW5nT3BlblwiLCBcIkV4dHJhIGNsb3NlIGJyYWNlIG9yIG1pc3Npbmcgb3BlbiBicmFjZVwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYWNlcy0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGJyYWNlcyA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBtYXRjaCA9IF9tYXRjaChpbnB1dCwgYmVnRXhjbCk7XG4gICAgICAgICAgICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc3Vic3RyKG1hdGNoLmxlbmd0aCk7XG4gICAgICAgICAgICBtYXRjaCA9IF9tYXRjaChpbnB1dCwgYmVnSW5jbCk7XG4gICAgICAgICAgICBpZiAobWF0Y2ggPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBlID0gX2ZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBtYXRjaC5sZW5ndGgsIGVuZEluY2wgfHwgZW5kRXhjbCk7XG4gICAgICAgICAgICBpZiAoZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG1hdGNoMSA9IGlucHV0LnN1YnN0cmluZygwLCAoZW5kSW5jbCA/IGUuZW5kTWF0Y2hFbmQgOiBlLmVuZE1hdGNoQmVnaW4pKTtcbiAgICAgICAgICAgIGlmICghKGJlZzJFeGNsIHx8IGJlZzJJbmNsKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoXzogbWF0Y2gxLFxuICAgICAgICAgICAgICAgICAgICByZW1haW5kZXI6IGlucHV0LnN1YnN0cihlLmVuZE1hdGNoRW5kKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgZ3JvdXAyID0gdGhpcy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dC5zdWJzdHIoZS5lbmRNYXRjaEVuZCksIGJlZzJFeGNsLCBiZWcySW5jbCwgZW5kMkluY2wsIGVuZDJFeGNsKTtcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAyID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgbWF0Y2hSZXQgPSBbbWF0Y2gxLCBncm91cDIubWF0Y2hfXTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaF86IChjb21iaW5lID8gbWF0Y2hSZXQuam9pbihcIlwiKSA6IG1hdGNoUmV0KSxcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyOiBncm91cDIucmVtYWluZGVyXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbWF0Y2hfOiBmdW5jdGlvbiAobSwgaW5wdXQpIHtcbiAgICAgICAgICAgIHZhciBwYXR0ZXJuID0gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5wYXR0ZXJuc1ttXTtcbiAgICAgICAgICAgIGlmIChwYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBbXCJNaGNoZW1CdWdQXCIsIFwibWhjaGVtIGJ1ZyBQLiBQbGVhc2UgcmVwb3J0LiAoXCIgKyBtICsgXCIpXCJdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBhdHRlcm4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLnBhdHRlcm5zW21dKGlucHV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IGlucHV0Lm1hdGNoKHBhdHRlcm4pO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hfOiBtYXRjaC5zbGljZSgxKSwgcmVtYWluZGVyOiBpbnB1dC5zdWJzdHIobWF0Y2hbMF0ubGVuZ3RoKSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hfOiBtYXRjaFsxXSB8fCBtYXRjaFswXSwgcmVtYWluZGVyOiBpbnB1dC5zdWJzdHIobWF0Y2hbMF0ubGVuZ3RoKSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICAgICdhPSc6IGZ1bmN0aW9uIChidWZmZXIsIG0pIHsgYnVmZmVyLmEgPSAoYnVmZmVyLmEgfHwgXCJcIikgKyBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAnYj0nOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci5iID0gKGJ1ZmZlci5iIHx8IFwiXCIpICsgbTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgJ3A9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucCA9IChidWZmZXIucCB8fCBcIlwiKSArIG07IHJldHVybiB1bmRlZmluZWQ7IH0sXG4gICAgICAgICdvPSc6IGZ1bmN0aW9uIChidWZmZXIsIG0pIHsgYnVmZmVyLm8gPSAoYnVmZmVyLm8gfHwgXCJcIikgKyBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAncT0nOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci5xID0gKGJ1ZmZlci5xIHx8IFwiXCIpICsgbTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgJ2Q9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIuZCA9IChidWZmZXIuZCB8fCBcIlwiKSArIG07IHJldHVybiB1bmRlZmluZWQ7IH0sXG4gICAgICAgICdybT0nOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci5ybSA9IChidWZmZXIucm0gfHwgXCJcIikgKyBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAndGV4dD0nOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci50ZXh0XyA9IChidWZmZXIudGV4dF8gfHwgXCJcIikgKyBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAnaW5zZXJ0JzogZnVuY3Rpb24gKF9idWZmZXIsIF9tLCBhKSB7IHJldHVybiB7IHR5cGVfOiBhIH07IH0sXG4gICAgICAgICdpbnNlcnQrcDEnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSwgYSkgeyByZXR1cm4geyB0eXBlXzogYSwgcDE6IG0gfTsgfSxcbiAgICAgICAgJ2luc2VydCtwMStwMic6IGZ1bmN0aW9uIChfYnVmZmVyLCBtLCBhKSB7IHJldHVybiB7IHR5cGVfOiBhLCBwMTogbVswXSwgcDI6IG1bMV0gfTsgfSxcbiAgICAgICAgJ2NvcHknOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4gbTsgfSxcbiAgICAgICAgJ3dyaXRlJzogZnVuY3Rpb24gKF9idWZmZXIsIF9tLCBhKSB7IHJldHVybiBhOyB9LFxuICAgICAgICAncm0nOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4geyB0eXBlXzogJ3JtJywgcDE6IG0gfTsgfSxcbiAgICAgICAgJ3RleHQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5nbyhtLCAndGV4dCcpOyB9LFxuICAgICAgICAndGV4LW1hdGgnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5nbyhtLCAndGV4LW1hdGgnKTsgfSxcbiAgICAgICAgJ3RleC1tYXRoIHRpZ2h0JzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIuZ28obSwgJ3RleC1tYXRoIHRpZ2h0Jyk7IH0sXG4gICAgICAgICdib25kJzogZnVuY3Rpb24gKF9idWZmZXIsIG0sIGspIHsgcmV0dXJuIHsgdHlwZV86ICdib25kJywga2luZF86IGsgfHwgbSB9OyB9LFxuICAgICAgICAnY29sb3IwLW91dHB1dCc6IGZ1bmN0aW9uIChfYnVmZmVyLCBtKSB7IHJldHVybiB7IHR5cGVfOiAnY29sb3IwJywgY29sb3I6IG0gfTsgfSxcbiAgICAgICAgJ2NlJzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIuZ28obSwgJ2NlJyk7IH0sXG4gICAgICAgICdwdSc6IGZ1bmN0aW9uIChfYnVmZmVyLCBtKSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLmdvKG0sICdwdScpOyB9LFxuICAgICAgICAnMS8yJzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHtcbiAgICAgICAgICAgIHZhciByZXQgPSBbXTtcbiAgICAgICAgICAgIGlmIChtLm1hdGNoKC9eWytcXC1dLykpIHtcbiAgICAgICAgICAgICAgICByZXQucHVzaChtLnN1YnN0cigwLCAxKSk7XG4gICAgICAgICAgICAgICAgbSA9IG0uc3Vic3RyKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG4gPSBtLm1hdGNoKC9eKFswLTldK3xcXCRbYS16XVxcJHxbYS16XSlcXC8oWzAtOV0rKShcXCRbYS16XVxcJHxbYS16XSk/JC8pO1xuICAgICAgICAgICAgblsxXSA9IG5bMV0ucmVwbGFjZSgvXFwkL2csIFwiXCIpO1xuICAgICAgICAgICAgcmV0LnB1c2goeyB0eXBlXzogJ2ZyYWMnLCBwMTogblsxXSwgcDI6IG5bMl0gfSk7XG4gICAgICAgICAgICBpZiAoblszXSkge1xuICAgICAgICAgICAgICAgIG5bM10gPSBuWzNdLnJlcGxhY2UoL1xcJC9nLCBcIlwiKTtcbiAgICAgICAgICAgICAgICByZXQucHVzaCh7IHR5cGVfOiAndGV4LW1hdGgnLCBwMTogblszXSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH0sXG4gICAgICAgICc5LDknOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5nbyhtLCAnOSw5Jyk7IH1cbiAgICB9LFxuICAgIHN0YXRlTWFjaGluZXM6IHtcbiAgICAgICAgJ3RleCc6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25zOiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMoe1xuICAgICAgICAgICAgICAgICdlbXB0eSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86ICdjb3B5JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGNleyguLi4pfSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFt7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwie1wiIH0sICdjZScsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ9XCIgfV0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxwdXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIntcIiB9LCAncHUnLCB7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwifVwiIH1dIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJ2NvcHknIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7fVxuICAgICAgICB9LFxuICAgICAgICAnY2UnOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uczogX21oY2hlbUNyZWF0ZVRyYW5zaXRpb25zKHtcbiAgICAgICAgICAgICAgICAnZW1wdHknOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnb3V0cHV0JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyJzogeyBhY3Rpb25fOiAnYmVnaW5zV2l0aEJvbmQ9ZmFsc2UnLCByZXZpc2l0OiB0cnVlLCB0b0NvbnRpbnVlOiB0cnVlIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdveGlkYXRpb24kJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJ294aWRhdGlvbi1vdXRwdXQnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdDTVQnOiB7XG4gICAgICAgICAgICAgICAgICAgICdyJzogeyBhY3Rpb25fOiAncmR0PScsIG5leHRTdGF0ZTogJ3J0JyB9LFxuICAgICAgICAgICAgICAgICAgICAncmQnOiB7IGFjdGlvbl86ICdycXQ9JywgbmV4dFN0YXRlOiAncmR0JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnYXJyb3dVcERvd24nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8Mnxhcyc6IHsgYWN0aW9uXzogWydzYj1mYWxzZScsICdvdXRwdXQnLCAnb3BlcmF0b3InXSwgbmV4dFN0YXRlOiAnMScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3VwcmlnaHRFbnRpdGllcyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyJzogeyBhY3Rpb25fOiBbJ289JywgJ291dHB1dCddLCBuZXh0U3RhdGU6ICcxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnb3JiaXRhbCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfDMnOiB7IGFjdGlvbl86ICdvPScsIG5leHRTdGF0ZTogJ28nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICctPic6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfDMnOiB7IGFjdGlvbl86ICdyPScsIG5leHRTdGF0ZTogJ3InIH0sXG4gICAgICAgICAgICAgICAgICAgICdhfGFzJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdyPSddLCBuZXh0U3RhdGU6ICdyJyB9LFxuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAncj0nXSwgbmV4dFN0YXRlOiAncicgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJysnOiB7XG4gICAgICAgICAgICAgICAgICAgICdvJzogeyBhY3Rpb25fOiAnZD0ga3YnLCBuZXh0U3RhdGU6ICdkJyB9LFxuICAgICAgICAgICAgICAgICAgICAnZHxEJzogeyBhY3Rpb25fOiAnZD0nLCBuZXh0U3RhdGU6ICdkJyB9LFxuICAgICAgICAgICAgICAgICAgICAncSc6IHsgYWN0aW9uXzogJ2Q9JywgbmV4dFN0YXRlOiAncWQnIH0sXG4gICAgICAgICAgICAgICAgICAgICdxZHxxRCc6IHsgYWN0aW9uXzogJ2Q9JywgbmV4dFN0YXRlOiAncWQnIH0sXG4gICAgICAgICAgICAgICAgICAgICdkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnZD0nXSwgbmV4dFN0YXRlOiAnZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJzMnOiB7IGFjdGlvbl86IFsnc2I9ZmFsc2UnLCAnb3V0cHV0JywgJ29wZXJhdG9yJ10sIG5leHRTdGF0ZTogJzAnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdhbW91bnQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDInOiB7IGFjdGlvbl86ICdhPScsIG5leHRTdGF0ZTogJ2EnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdwbS1vcGVyYXRvcic6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfGF8YXMnOiB7IGFjdGlvbl86IFsnc2I9ZmFsc2UnLCAnb3V0cHV0JywgeyB0eXBlXzogJ29wZXJhdG9yJywgb3B0aW9uOiAnXFxcXHBtJyB9XSwgbmV4dFN0YXRlOiAnMCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ29wZXJhdG9yJzoge1xuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8YXxhcyc6IHsgYWN0aW9uXzogWydzYj1mYWxzZScsICdvdXRwdXQnLCAnb3BlcmF0b3InXSwgbmV4dFN0YXRlOiAnMCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJy0kJzoge1xuICAgICAgICAgICAgICAgICAgICAnb3xxJzogeyBhY3Rpb25fOiBbJ2NoYXJnZSBvciBib25kJywgJ291dHB1dCddLCBuZXh0U3RhdGU6ICdxZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2QnOiB7IGFjdGlvbl86ICdkPScsIG5leHRTdGF0ZTogJ2QnIH0sXG4gICAgICAgICAgICAgICAgICAgICdEJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3EnOiB7IGFjdGlvbl86ICdkPScsIG5leHRTdGF0ZTogJ3FkJyB9LFxuICAgICAgICAgICAgICAgICAgICAncWQnOiB7IGFjdGlvbl86ICdkPScsIG5leHRTdGF0ZTogJ3FkJyB9LFxuICAgICAgICAgICAgICAgICAgICAncUR8ZHEnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgeyB0eXBlXzogJ2JvbmQnLCBvcHRpb246IFwiLVwiIH1dLCBuZXh0U3RhdGU6ICczJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLTknOiB7XG4gICAgICAgICAgICAgICAgICAgICczfG8nOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgeyB0eXBlXzogJ2luc2VydCcsIG9wdGlvbjogJ2h5cGhlbicgfV0sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICctIG9yYml0YWwgb3ZlcmxhcCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ28nOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgeyB0eXBlXzogJ2luc2VydCcsIG9wdGlvbjogJ2h5cGhlbicgfV0sIG5leHRTdGF0ZTogJzInIH0sXG4gICAgICAgICAgICAgICAgICAgICdkJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdpbnNlcnQnLCBvcHRpb246ICdoeXBoZW4nIH1dLCBuZXh0U3RhdGU6ICcyJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMSB9LCAnYmVnaW5zV2l0aEJvbmQ9dHJ1ZScsIHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfSxcbiAgICAgICAgICAgICAgICAgICAgJzMnOiB7IGFjdGlvbl86IHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICdhJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdpbnNlcnQnLCBvcHRpb246ICdoeXBoZW4nIH1dLCBuZXh0U3RhdGU6ICcyJyB9LFxuICAgICAgICAgICAgICAgICAgICAnYXMnOiB7IGFjdGlvbl86IFt7IHR5cGVfOiAnb3V0cHV0Jywgb3B0aW9uOiAyIH0sIHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2InOiB7IGFjdGlvbl86ICdiPScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ28nOiB7IGFjdGlvbl86IHsgdHlwZV86ICctIGFmdGVyIG8vZCcsIG9wdGlvbjogZmFsc2UgfSwgbmV4dFN0YXRlOiAnMicgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3EnOiB7IGFjdGlvbl86IHsgdHlwZV86ICctIGFmdGVyIG8vZCcsIG9wdGlvbjogZmFsc2UgfSwgbmV4dFN0YXRlOiAnMicgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2R8cWR8ZHEnOiB7IGFjdGlvbl86IHsgdHlwZV86ICctIGFmdGVyIG8vZCcsIG9wdGlvbjogdHJ1ZSB9LCBuZXh0U3RhdGU6ICcyJyB9LFxuICAgICAgICAgICAgICAgICAgICAnRHxxRHxwJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Ftb3VudDInOiB7XG4gICAgICAgICAgICAgICAgICAgICcxfDMnOiB7IGFjdGlvbl86ICdhPScsIG5leHRTdGF0ZTogJ2EnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdsZXR0ZXJzJzoge1xuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8M3xhfGFzfGJ8cHxicHxvJzogeyBhY3Rpb25fOiAnbz0nLCBuZXh0U3RhdGU6ICdvJyB9LFxuICAgICAgICAgICAgICAgICAgICAncXxkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnbz0nXSwgbmV4dFN0YXRlOiAnbycgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2R8RHxxZHxxRCc6IHsgYWN0aW9uXzogJ28gYWZ0ZXIgZCcsIG5leHRTdGF0ZTogJ28nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdkaWdpdHMnOiB7XG4gICAgICAgICAgICAgICAgICAgICdvJzogeyBhY3Rpb25fOiAncT0nLCBuZXh0U3RhdGU6ICdxJyB9LFxuICAgICAgICAgICAgICAgICAgICAnZHxEJzogeyBhY3Rpb25fOiAncT0nLCBuZXh0U3RhdGU6ICdkcScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3EnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ289J10sIG5leHRTdGF0ZTogJ28nIH0sXG4gICAgICAgICAgICAgICAgICAgICdhJzogeyBhY3Rpb25fOiAnbz0nLCBuZXh0U3RhdGU6ICdvJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnc3BhY2UgQSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2J8cHxicCc6IHsgYWN0aW9uXzogW10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3NwYWNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnYSc6IHsgYWN0aW9uXzogW10sIG5leHRTdGF0ZTogJ2FzJyB9LFxuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJ3NiPWZhbHNlJyB9LFxuICAgICAgICAgICAgICAgICAgICAnMXwyJzogeyBhY3Rpb25fOiAnc2I9dHJ1ZScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3J8cnR8cmR8cmR0fHJkcSc6IHsgYWN0aW9uXzogJ291dHB1dCcsIG5leHRTdGF0ZTogJzAnIH0sXG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdzYj10cnVlJ10sIG5leHRTdGF0ZTogJzEnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcxc3QtbGV2ZWwgZXNjYXBlJzoge1xuICAgICAgICAgICAgICAgICAgICAnMXwyJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdpbnNlcnQrcDEnLCBvcHRpb246ICcxc3QtbGV2ZWwgZXNjYXBlJyB9XSB9LFxuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCB7IHR5cGVfOiAnaW5zZXJ0K3AxJywgb3B0aW9uOiAnMXN0LWxldmVsIGVzY2FwZScgfV0sIG5leHRTdGF0ZTogJzAnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdbKC4uLildJzoge1xuICAgICAgICAgICAgICAgICAgICAncnxydCc6IHsgYWN0aW9uXzogJ3JkPScsIG5leHRTdGF0ZTogJ3JkJyB9LFxuICAgICAgICAgICAgICAgICAgICAncmR8cmR0JzogeyBhY3Rpb25fOiAncnE9JywgbmV4dFN0YXRlOiAncmRxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLi4uJzoge1xuICAgICAgICAgICAgICAgICAgICAnb3xkfER8ZHF8cWR8cUQnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgeyB0eXBlXzogJ2JvbmQnLCBvcHRpb246IFwiLi4uXCIgfV0sIG5leHRTdGF0ZTogJzMnIH0sXG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMSB9LCB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnZWxsaXBzaXMnIH1dLCBuZXh0U3RhdGU6ICcxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLiBfXyogJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnYWRkaXRpb24gY29tcG91bmQnIH1dLCBuZXh0U3RhdGU6ICcxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnc3RhdGUgb2YgYWdncmVnYXRpb24gJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ3N0YXRlIG9mIGFnZ3JlZ2F0aW9uJ10sIG5leHRTdGF0ZTogJzEnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd7WygnOiB7XG4gICAgICAgICAgICAgICAgICAgICdhfGFzfG8nOiB7IGFjdGlvbl86IFsnbz0nLCAnb3V0cHV0JywgJ3BhcmVudGhlc2lzTGV2ZWwrKyddLCBuZXh0U3RhdGU6ICcyJyB9LFxuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8Myc6IHsgYWN0aW9uXzogWydvPScsICdvdXRwdXQnLCAncGFyZW50aGVzaXNMZXZlbCsrJ10sIG5leHRTdGF0ZTogJzInIH0sXG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdvPScsICdvdXRwdXQnLCAncGFyZW50aGVzaXNMZXZlbCsrJ10sIG5leHRTdGF0ZTogJzInIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcpXX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8MnwzfGJ8cHxicHxvJzogeyBhY3Rpb25fOiBbJ289JywgJ3BhcmVudGhlc2lzTGV2ZWwtLSddLCBuZXh0U3RhdGU6ICdvJyB9LFxuICAgICAgICAgICAgICAgICAgICAnYXxhc3xkfER8cXxxZHxxRHxkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnbz0nLCAncGFyZW50aGVzaXNMZXZlbC0tJ10sIG5leHRTdGF0ZTogJ28nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcsICc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ2NvbW1hJ10sIG5leHRTdGF0ZTogJzAnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdeXyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFtdIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdeeyguLi4pfXxeKCQuLi4kKSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfGFzJzogeyBhY3Rpb25fOiAnYj0nLCBuZXh0U3RhdGU6ICdiJyB9LFxuICAgICAgICAgICAgICAgICAgICAncCc6IHsgYWN0aW9uXzogJ2I9JywgbmV4dFN0YXRlOiAnYnAnIH0sXG4gICAgICAgICAgICAgICAgICAgICczfG8nOiB7IGFjdGlvbl86ICdkPSBrdicsIG5leHRTdGF0ZTogJ0QnIH0sXG4gICAgICAgICAgICAgICAgICAgICdxJzogeyBhY3Rpb25fOiAnZD0nLCBuZXh0U3RhdGU6ICdxRCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2R8RHxxZHxxRHxkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnZD0nXSwgbmV4dFN0YXRlOiAnRCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ15hfF5cXFxceHt9e318XlxcXFx4e318XlxcXFx4fFxcJyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfGFzJzogeyBhY3Rpb25fOiAnYj0nLCBuZXh0U3RhdGU6ICdiJyB9LFxuICAgICAgICAgICAgICAgICAgICAncCc6IHsgYWN0aW9uXzogJ2I9JywgbmV4dFN0YXRlOiAnYnAnIH0sXG4gICAgICAgICAgICAgICAgICAgICczfG8nOiB7IGFjdGlvbl86ICdkPSBrdicsIG5leHRTdGF0ZTogJ2QnIH0sXG4gICAgICAgICAgICAgICAgICAgICdxJzogeyBhY3Rpb25fOiAnZD0nLCBuZXh0U3RhdGU6ICdxZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2R8cWR8RHxxRCc6IHsgYWN0aW9uXzogJ2Q9JyB9LFxuICAgICAgICAgICAgICAgICAgICAnZHEnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ2Q9J10sIG5leHRTdGF0ZTogJ2QnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdfeyhzdGF0ZSBvZiBhZ2dyZWdhdGlvbil9JCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2R8RHxxfHFkfHFEfGRxJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdxPSddLCBuZXh0U3RhdGU6ICdxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnX3soLi4uKX18XygkLi4uJCl8Xzl8X1xcXFx4e317fXxfXFxcXHh7fXxfXFxcXHgnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8Mnxhcyc6IHsgYWN0aW9uXzogJ3A9JywgbmV4dFN0YXRlOiAncCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2InOiB7IGFjdGlvbl86ICdwPScsIG5leHRTdGF0ZTogJ2JwJyB9LFxuICAgICAgICAgICAgICAgICAgICAnM3xvJzogeyBhY3Rpb25fOiAncT0nLCBuZXh0U3RhdGU6ICdxJyB9LFxuICAgICAgICAgICAgICAgICAgICAnZHxEJzogeyBhY3Rpb25fOiAncT0nLCBuZXh0U3RhdGU6ICdkcScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3F8cWR8cUR8ZHEnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ3E9J10sIG5leHRTdGF0ZTogJ3EnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICc9PD4nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8MnwzfGF8YXN8b3xxfGR8RHxxZHxxRHxkcSc6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDIgfSwgJ2JvbmQnXSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8MnwzfGF8YXN8byc6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDIgfSwgeyB0eXBlXzogJ2JvbmQnLCBvcHRpb246IFwiI1wiIH1dLCBuZXh0U3RhdGU6ICczJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAne31eJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDEgfSwgeyB0eXBlXzogJ2luc2VydCcsIG9wdGlvbjogJ3RpbnlTa2lwJyB9XSwgbmV4dFN0YXRlOiAnMScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3t9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMSB9LCBuZXh0U3RhdGU6ICcxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAney4uLn0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8MnwzfGF8YXN8YnxwfGJwJzogeyBhY3Rpb25fOiAnbz0nLCBuZXh0U3RhdGU6ICdvJyB9LFxuICAgICAgICAgICAgICAgICAgICAnb3xkfER8cXxxZHxxRHxkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnbz0nXSwgbmV4dFN0YXRlOiAnbycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyQuLi4kJzoge1xuICAgICAgICAgICAgICAgICAgICAnYSc6IHsgYWN0aW9uXzogJ2E9JyB9LFxuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8M3xhc3xifHB8YnB8byc6IHsgYWN0aW9uXzogJ289JywgbmV4dFN0YXRlOiAnbycgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2FzfG8nOiB7IGFjdGlvbl86ICdvPScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3F8ZHxEfHFkfHFEfGRxJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdvPSddLCBuZXh0U3RhdGU6ICdvJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGJvbmR7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDIgfSwgJ2JvbmQnXSwgbmV4dFN0YXRlOiBcIjNcIiB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGZyYWN7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDEgfSwgJ2ZyYWMtb3V0cHV0J10sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxcb3ZlcnNldHsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMiB9LCAnb3ZlcnNldC1vdXRwdXQnXSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFx1bmRlcnNldHsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMiB9LCAndW5kZXJzZXQtb3V0cHV0J10sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxcdW5kZXJicmFjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMiB9LCAndW5kZXJicmFjZS1vdXRwdXQnXSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX17KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDIgfSwgJ2NvbG9yLW91dHB1dCddLCBuZXh0U3RhdGU6ICczJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGNvbG9yeyguLi4pfSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFt7IHR5cGVfOiAnb3V0cHV0Jywgb3B0aW9uOiAyIH0sICdjb2xvcjAtb3V0cHV0J10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMiB9LCAnY2UnXSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFwsJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDEgfSwgJ2NvcHknXSwgbmV4dFN0YXRlOiAnMScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxwdXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ7XCIgfSwgJ3B1JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFx4e317fXxcXFxceHt9fFxcXFx4Jzoge1xuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8M3xhfGFzfGJ8cHxicHxvfGMwJzogeyBhY3Rpb25fOiBbJ289JywgJ291dHB1dCddLCBuZXh0U3RhdGU6ICczJyB9LFxuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnbz0nLCAnb3V0cHV0J10sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdvdGhlcnMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMSB9LCAnY29weSddLCBuZXh0U3RhdGU6ICczJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZTInOiB7XG4gICAgICAgICAgICAgICAgICAgICdhJzogeyBhY3Rpb25fOiAnYSB0byBvJywgbmV4dFN0YXRlOiAnbycsIHJldmlzaXQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2FzJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdzYj10cnVlJ10sIG5leHRTdGF0ZTogJzEnLCByZXZpc2l0OiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICdyfHJ0fHJkfHJkdHxyZHEnOiB7IGFjdGlvbl86IFsnb3V0cHV0J10sIG5leHRTdGF0ZTogJzAnLCByZXZpc2l0OiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdjb3B5J10sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAnbyBhZnRlciBkJzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmV0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGJ1ZmZlci5kIHx8IFwiXCIpLm1hdGNoKC9eWzEtOV1bMC05XSokLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXAgPSBidWZmZXIuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5kID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdGhpc1snb3V0cHV0J10oYnVmZmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgdHlwZV86ICd0aW55U2tpcCcgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYiA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHRoaXNbJ291dHB1dCddKGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5hY3Rpb25zWydvPSddKGJ1ZmZlciwgbSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZD0ga3YnOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5kID0gbTtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmRUeXBlID0gJ2t2JztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdjaGFyZ2Ugb3IgYm9uZCc6IGZ1bmN0aW9uIChidWZmZXIsIG0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclsnYmVnaW5zV2l0aEJvbmQnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIHRoaXNbJ291dHB1dCddKGJ1ZmZlcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIF9taGNoZW1QYXJzZXIuYWN0aW9uc1snYm9uZCddKGJ1ZmZlciwgbSwgXCItXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuZCA9IG07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLSBhZnRlciBvL2QnOiBmdW5jdGlvbiAoYnVmZmVyLCBtLCBpc0FmdGVyRCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYzEgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnb3JiaXRhbCcsIGJ1ZmZlci5vIHx8IFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYzIgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnb25lIGxvd2VyY2FzZSBncmVlayBsZXR0ZXIgJCcsIGJ1ZmZlci5vIHx8IFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYzMgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnb25lIGxvd2VyY2FzZSBsYXRpbiBsZXR0ZXIgJCcsIGJ1ZmZlci5vIHx8IFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYzQgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnJG9uZSBsb3dlcmNhc2UgbGF0aW4gbGV0dGVyJCAkJywgYnVmZmVyLm8gfHwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoeXBoZW5Gb2xsb3dzID0gbSA9PT0gXCItXCIgJiYgKGMxICYmIGMxLnJlbWFpbmRlciA9PT0gXCJcIiB8fCBjMiB8fCBjMyB8fCBjNCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoeXBoZW5Gb2xsb3dzICYmICFidWZmZXIuYSAmJiAhYnVmZmVyLmIgJiYgIWJ1ZmZlci5wICYmICFidWZmZXIuZCAmJiAhYnVmZmVyLnEgJiYgIWMxICYmIGMzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIubyA9ICckJyArIGJ1ZmZlci5vICsgJyQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh5cGhlbkZvbGxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9taGNoZW1QYXJzZXIuY29uY2F0QXJyYXkocmV0LCB0aGlzWydvdXRwdXQnXShidWZmZXIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgdHlwZV86ICdoeXBoZW4nIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnZGlnaXRzJywgYnVmZmVyLmQgfHwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBZnRlckQgJiYgYzEgJiYgYzEucmVtYWluZGVyID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9taGNoZW1QYXJzZXIuY29uY2F0QXJyYXkocmV0LCBfbWhjaGVtUGFyc2VyLmFjdGlvbnNbJ2Q9J10oYnVmZmVyLCBtKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIHRoaXNbJ291dHB1dCddKGJ1ZmZlcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIHRoaXNbJ291dHB1dCddKGJ1ZmZlcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9taGNoZW1QYXJzZXIuY29uY2F0QXJyYXkocmV0LCBfbWhjaGVtUGFyc2VyLmFjdGlvbnNbJ2JvbmQnXShidWZmZXIsIG0sIFwiLVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdhIHRvIG8nOiBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5vID0gYnVmZmVyLmE7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3NiPXRydWUnOiBmdW5jdGlvbiAoYnVmZmVyKSB7IGJ1ZmZlci5zYiA9IHRydWU7IHJldHVybiB1bmRlZmluZWQ7IH0sXG4gICAgICAgICAgICAgICAgJ3NiPWZhbHNlJzogZnVuY3Rpb24gKGJ1ZmZlcikgeyBidWZmZXIuc2IgPSBmYWxzZTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAnYmVnaW5zV2l0aEJvbmQ9dHJ1ZSc6IGZ1bmN0aW9uIChidWZmZXIpIHsgYnVmZmVyWydiZWdpbnNXaXRoQm9uZCddID0gdHJ1ZTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAnYmVnaW5zV2l0aEJvbmQ9ZmFsc2UnOiBmdW5jdGlvbiAoYnVmZmVyKSB7IGJ1ZmZlclsnYmVnaW5zV2l0aEJvbmQnXSA9IGZhbHNlOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdwYXJlbnRoZXNpc0xldmVsKysnOiBmdW5jdGlvbiAoYnVmZmVyKSB7IGJ1ZmZlclsncGFyZW50aGVzaXNMZXZlbCddKys7IHJldHVybiB1bmRlZmluZWQ7IH0sXG4gICAgICAgICAgICAgICAgJ3BhcmVudGhlc2lzTGV2ZWwtLSc6IGZ1bmN0aW9uIChidWZmZXIpIHsgYnVmZmVyWydwYXJlbnRoZXNpc0xldmVsJ10tLTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAnc3RhdGUgb2YgYWdncmVnYXRpb24nOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ3N0YXRlIG9mIGFnZ3JlZ2F0aW9uJywgcDE6IF9taGNoZW1QYXJzZXIuZ28obSwgJ28nKSB9O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2NvbW1hJzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG0ucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB3aXRoU3BhY2UgPSAoYSAhPT0gbSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aXRoU3BhY2UgJiYgYnVmZmVyWydwYXJlbnRoZXNpc0xldmVsJ10gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGVfOiAnY29tbWEgZW51bWVyYXRpb24gTCcsIHAxOiBhIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ2NvbW1hIGVudW1lcmF0aW9uIE0nLCBwMTogYSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnb3V0cHV0JzogZnVuY3Rpb24gKGJ1ZmZlciwgX20sIGVudGl0eUZvbGxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFidWZmZXIucikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci5hICYmICFidWZmZXIuYiAmJiAhYnVmZmVyLnAgJiYgIWJ1ZmZlci5vICYmICFidWZmZXIucSAmJiAhYnVmZmVyLmQgJiYgIWVudGl0eUZvbGxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIuc2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goeyB0eXBlXzogJ2VudGl0eVNraXAnIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci5vICYmICFidWZmZXIucSAmJiAhYnVmZmVyLmQgJiYgIWJ1ZmZlci5iICYmICFidWZmZXIucCAmJiBlbnRpdHlGb2xsb3dzICE9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5vID0gYnVmZmVyLmE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghYnVmZmVyLm8gJiYgIWJ1ZmZlci5xICYmICFidWZmZXIuZCAmJiAoYnVmZmVyLmIgfHwgYnVmZmVyLnApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5vID0gYnVmZmVyLmE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5kID0gYnVmZmVyLmI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5xID0gYnVmZmVyLnA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hID0gYnVmZmVyLmIgPSBidWZmZXIucCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIubyAmJiBidWZmZXIuZFR5cGUgPT09ICdrdicgJiYgX21oY2hlbVBhcnNlci5wYXR0ZXJucy5tYXRjaF8oJ2Qtb3hpZGF0aW9uJCcsIGJ1ZmZlci5kIHx8IFwiXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuZFR5cGUgPSAnb3hpZGF0aW9uJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChidWZmZXIubyAmJiBidWZmZXIuZFR5cGUgPT09ICdrdicgJiYgIWJ1ZmZlci5xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuZFR5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlXzogJ2NoZW1maXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogX21oY2hlbVBhcnNlci5nbyhidWZmZXIuYSwgJ2EnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjogX21oY2hlbVBhcnNlci5nbyhidWZmZXIuYiwgJ2JkJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHA6IF9taGNoZW1QYXJzZXIuZ28oYnVmZmVyLnAsICdwcScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiBfbWhjaGVtUGFyc2VyLmdvKGJ1ZmZlci5vLCAnbycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxOiBfbWhjaGVtUGFyc2VyLmdvKGJ1ZmZlci5xLCAncHEnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDogX21oY2hlbVBhcnNlci5nbyhidWZmZXIuZCwgKGJ1ZmZlci5kVHlwZSA9PT0gJ294aWRhdGlvbicgPyAnb3hpZGF0aW9uJyA6ICdiZCcpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFR5cGU6IGJ1ZmZlci5kVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJkID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5yZHQgPT09ICdNJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkID0gX21oY2hlbVBhcnNlci5nbyhidWZmZXIucmQsICd0ZXgtbWF0aCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYnVmZmVyLnJkdCA9PT0gJ1QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmQgPSBbeyB0eXBlXzogJ3RleHQnLCBwMTogYnVmZmVyLnJkIHx8IFwiXCIgfV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZCA9IF9taGNoZW1QYXJzZXIuZ28oYnVmZmVyLnJkLCAnY2UnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBycSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIucnF0ID09PSAnTScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBycSA9IF9taGNoZW1QYXJzZXIuZ28oYnVmZmVyLnJxLCAndGV4LW1hdGgnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJ1ZmZlci5ycXQgPT09ICdUJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJxID0gW3sgdHlwZV86ICd0ZXh0JywgcDE6IGJ1ZmZlci5ycSB8fCBcIlwiIH1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnEgPSBfbWhjaGVtUGFyc2VyLmdvKGJ1ZmZlci5ycSwgJ2NlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV86ICdhcnJvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcjogYnVmZmVyLnIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmQ6IHJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJxOiBycVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgIT09ICdwYXJlbnRoZXNpc0xldmVsJyAmJiBwICE9PSAnYmVnaW5zV2l0aEJvbmQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcltwXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ294aWRhdGlvbi1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0gW1wie1wiXTtcbiAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIF9taGNoZW1QYXJzZXIuZ28obSwgJ294aWRhdGlvbicpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goXCJ9XCIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2ZyYWMtb3V0cHV0JzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZV86ICdmcmFjLWNlJywgcDE6IF9taGNoZW1QYXJzZXIuZ28obVswXSwgJ2NlJyksIHAyOiBfbWhjaGVtUGFyc2VyLmdvKG1bMV0sICdjZScpIH07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnb3ZlcnNldC1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ292ZXJzZXQnLCBwMTogX21oY2hlbVBhcnNlci5nbyhtWzBdLCAnY2UnKSwgcDI6IF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ2NlJykgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd1bmRlcnNldC1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ3VuZGVyc2V0JywgcDE6IF9taGNoZW1QYXJzZXIuZ28obVswXSwgJ2NlJyksIHAyOiBfbWhjaGVtUGFyc2VyLmdvKG1bMV0sICdjZScpIH07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAndW5kZXJicmFjZS1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ3VuZGVyYnJhY2UnLCBwMTogX21oY2hlbVBhcnNlci5nbyhtWzBdLCAnY2UnKSwgcDI6IF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ2NlJykgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdjb2xvci1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ2NvbG9yJywgY29sb3IxOiBtWzBdLCBjb2xvcjI6IF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ2NlJykgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdyPSc6IGZ1bmN0aW9uIChidWZmZXIsIG0pIHsgYnVmZmVyLnIgPSBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdyZHQ9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucmR0ID0gbTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAncmQ9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucmQgPSBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdycXQ9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucnF0ID0gbTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAncnE9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucnEgPSBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdvcGVyYXRvcic6IGZ1bmN0aW9uIChfYnVmZmVyLCBtLCBwMSkgeyByZXR1cm4geyB0eXBlXzogJ29wZXJhdG9yJywga2luZF86IChwMSB8fCBtKSB9OyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdhJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJzEvMiQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiAnMS8yJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFtdLCBuZXh0U3RhdGU6ICcxJywgcmV2aXNpdDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnJHsoLi4uKX0kX18kKC4uLikkJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ3RleC1tYXRoIHRpZ2h0JywgbmV4dFN0YXRlOiAnMScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJywnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnY29tbWFEZWNpbWFsJyB9IH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlMic6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdjb3B5JyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7fVxuICAgICAgICB9LFxuICAgICAgICAnbyc6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25zOiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMoe1xuICAgICAgICAgICAgICAgICdlbXB0eSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFtdIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcxLzIkJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJzEvMicgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Vsc2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiBbXSwgbmV4dFN0YXRlOiAnMScsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2xldHRlcnMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAncm0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxcY2EnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnY2lyY2EnIH0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxwdXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIntcIiB9LCAncHUnLCB7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwifVwiIH1dIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxceHt9e318XFxcXHh7fXxcXFxceCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdjb3B5JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnJHsoLi4uKX0kX18kKC4uLikkJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ3RleC1tYXRoJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAneyguLi4pfSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFt7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwie1wiIH0sICd0ZXh0JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZTInOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29weScgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYWN0aW9uczoge31cbiAgICAgICAgfSxcbiAgICAgICAgJ3RleHQnOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uczogX21oY2hlbUNyZWF0ZVRyYW5zaXRpb25zKHtcbiAgICAgICAgICAgICAgICAnZW1wdHknOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnb3V0cHV0JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAney4uLn0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAndGV4dD0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICckeyguLi4pfSRfXyQoLi4uKSQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAndGV4LW1hdGgnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxcZ3JlZWsnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdybSddIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxccHV7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCB7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwie1wiIH0sICdwdScsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ9XCIgfV0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFwsfFxcXFx4e317fXxcXFxceHt9fFxcXFx4Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnY29weSddIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ3RleHQ9JyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgJ291dHB1dCc6IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci50ZXh0Xykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IHsgdHlwZV86ICd0ZXh0JywgcDE6IGJ1ZmZlci50ZXh0XyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYnVmZmVyW3BdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ3BxJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3N0YXRlIG9mIGFnZ3JlZ2F0aW9uICQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnc3RhdGUgb2YgYWdncmVnYXRpb24nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdpJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFtdLCBuZXh0U3RhdGU6ICchZicsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyhLViBsZXR0ZXJzKSwnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiAncm0nLCBuZXh0U3RhdGU6ICcwJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZm9ybXVsYSQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiBbXSwgbmV4dFN0YXRlOiAnZicsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJzEvMiQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiAnMS8yJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFtdLCBuZXh0U3RhdGU6ICchZicsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyR7KC4uLil9JF9fJCguLi4pJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICd0ZXgtbWF0aCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3soLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAndGV4dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Eteic6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2YnOiB7IGFjdGlvbl86ICd0ZXgtbWF0aCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2xldHRlcnMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAncm0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICctOS4sOSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICc5LDknIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcsJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogeyB0eXBlXzogJ2luc2VydCtwMScsIG9wdGlvbjogJ2NvbW1hIGVudW1lcmF0aW9uIFMnIH0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX17KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ2NvbG9yLW91dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29sb3IwLW91dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY2UnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxccHV7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ7XCIgfSwgJ3B1JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXCx8XFxcXHh7fXt9fFxcXFx4e318XFxcXHgnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29weScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Vsc2UyJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ2NvcHknIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAnc3RhdGUgb2YgYWdncmVnYXRpb24nOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ3N0YXRlIG9mIGFnZ3JlZ2F0aW9uIHN1YnNjcmlwdCcsIHAxOiBfbWhjaGVtUGFyc2VyLmdvKG0sICdvJykgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdjb2xvci1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ2NvbG9yJywgY29sb3IxOiBtWzBdLCBjb2xvcjI6IF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ3BxJykgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdiZCc6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25zOiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMoe1xuICAgICAgICAgICAgICAgICdlbXB0eSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFtdIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd4JCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFtdLCBuZXh0U3RhdGU6ICchZicsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Zvcm11bGEkJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogW10sIG5leHRTdGF0ZTogJ2YnLCByZXZpc2l0OiB0cnVlIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogW10sIG5leHRTdGF0ZTogJyFmJywgcmV2aXNpdDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLTkuLDkgbm8gbWlzc2luZyAwJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJzksOScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJy4nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnZWxlY3Ryb24gZG90JyB9IH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdhLXonOiB7XG4gICAgICAgICAgICAgICAgICAgICdmJzogeyBhY3Rpb25fOiAndGV4LW1hdGgnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd4Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogeyB0eXBlXzogJ2luc2VydCcsIG9wdGlvbjogJ0tWIHgnIH0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2xldHRlcnMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAncm0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXCcnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAncHJpbWUnIH0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyR7KC4uLil9JF9fJCguLi4pJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICd0ZXgtbWF0aCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3soLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAndGV4dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX17KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ2NvbG9yLW91dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29sb3IwLW91dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY2UnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxccHV7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ7XCIgfSwgJ3B1JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXCx8XFxcXHh7fXt9fFxcXFx4e318XFxcXHgnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29weScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Vsc2UyJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ2NvcHknIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAnY29sb3Itb3V0cHV0JzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZV86ICdjb2xvcicsIGNvbG9yMTogbVswXSwgY29sb3IyOiBfbWhjaGVtUGFyc2VyLmdvKG1bMV0sICdiZCcpIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnb3hpZGF0aW9uJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3JvbWFuIG51bWVyYWwnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAncm9tYW4tbnVtZXJhbCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyR7KC4uLil9JF9fJCguLi4pJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICd0ZXgtbWF0aCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Vsc2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29weScgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAgICdyb21hbi1udW1lcmFsJzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHsgcmV0dXJuIHsgdHlwZV86ICdyb21hbiBudW1lcmFsJywgcDE6IG0gfTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAndGV4LW1hdGgnOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uczogX21oY2hlbUNyZWF0ZVRyYW5zaXRpb25zKHtcbiAgICAgICAgICAgICAgICAnZW1wdHknOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnb3V0cHV0JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGNleyguLi4pfSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ2NlJ10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxwdXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ7XCIgfSwgJ3B1JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAney4uLn18XFxcXCx8XFxcXHh7fXt9fFxcXFx4e318XFxcXHgnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnbz0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ289JyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgJ291dHB1dCc6IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5vKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0geyB0eXBlXzogJ3RleC1tYXRoJywgcDE6IGJ1ZmZlci5vIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJbcF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAndGV4LW1hdGggdGlnaHQnOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uczogX21oY2hlbUNyZWF0ZVRyYW5zaXRpb25zKHtcbiAgICAgICAgICAgICAgICAnZW1wdHknOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnb3V0cHV0JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGNleyguLi4pfSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ2NlJ10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxwdXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ7XCIgfSwgJ3B1JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAney4uLn18XFxcXCx8XFxcXHh7fXt9fFxcXFx4e318XFxcXHgnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnbz0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICctfCsnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAndGlnaHQgb3BlcmF0b3InIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ289JyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgJ3RpZ2h0IG9wZXJhdG9yJzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIubyA9IChidWZmZXIubyB8fCBcIlwiKSArIFwie1wiICsgbSArIFwifVwiOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdvdXRwdXQnOiBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIubykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IHsgdHlwZV86ICd0ZXgtbWF0aCcsIHAxOiBidWZmZXIubyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYnVmZmVyW3BdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJzksOSc6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25zOiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMoe1xuICAgICAgICAgICAgICAgICdlbXB0eSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFtdIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcsJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ2NvbW1hJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdjb3B5JyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgJ2NvbW1hJzogZnVuY3Rpb24gKCkgeyByZXR1cm4geyB0eXBlXzogJ2NvbW1hRGVjaW1hbCcgfTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAncHUnOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uczogX21oY2hlbUNyZWF0ZVRyYW5zaXRpb25zKHtcbiAgICAgICAgICAgICAgICAnZW1wdHknOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnb3V0cHV0JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnc3BhY2UkJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnc3BhY2UnXSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAne1sofCldfSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8YSc6IHsgYWN0aW9uXzogJ2NvcHknIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcoLSkoOSleKC05KSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86ICdudW1iZXJeJywgbmV4dFN0YXRlOiAnYScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJygtKSg5Liw5KShlKSg5OSknOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiAnZW51bWJlcicsIG5leHRTdGF0ZTogJ2EnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdzcGFjZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8YSc6IHsgYWN0aW9uXzogW10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3BtLW9wZXJhdG9yJzoge1xuICAgICAgICAgICAgICAgICAgICAnMHxhJzogeyBhY3Rpb25fOiB7IHR5cGVfOiAnb3BlcmF0b3InLCBvcHRpb246ICdcXFxccG0nIH0sIG5leHRTdGF0ZTogJzAnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdvcGVyYXRvcic6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8YSc6IHsgYWN0aW9uXzogJ2NvcHknLCBuZXh0U3RhdGU6ICcwJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLy8nOiB7XG4gICAgICAgICAgICAgICAgICAgICdkJzogeyBhY3Rpb25fOiAnbz0nLCBuZXh0U3RhdGU6ICcvJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2QnOiB7IGFjdGlvbl86ICdvPScsIG5leHRTdGF0ZTogJy8nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd7Li4ufXxlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnMHxkJzogeyBhY3Rpb25fOiAnZD0nLCBuZXh0U3RhdGU6ICdkJyB9LFxuICAgICAgICAgICAgICAgICAgICAnYSc6IHsgYWN0aW9uXzogWydzcGFjZScsICdkPSddLCBuZXh0U3RhdGU6ICdkJyB9LFxuICAgICAgICAgICAgICAgICAgICAnL3xxJzogeyBhY3Rpb25fOiAncT0nLCBuZXh0U3RhdGU6ICdxJyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgJ2VudW1iZXInOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIGlmIChtWzBdID09PSBcIistXCIgfHwgbVswXSA9PT0gXCIrLy1cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goXCJcXFxccG0gXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1bMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKG1bMF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChtWzFdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfbWhjaGVtUGFyc2VyLmNvbmNhdEFycmF5KHJldCwgX21oY2hlbVBhcnNlci5nbyhtWzFdLCAncHUtOSw5JykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1bMl0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobVsyXS5tYXRjaCgvWywuXS8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9taGNoZW1QYXJzZXIuY29uY2F0QXJyYXkocmV0LCBfbWhjaGVtUGFyc2VyLmdvKG1bMl0sICdwdS05LDknKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChtWzJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobVszXSB8fCBtWzRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1bM10gPT09IFwiZVwiIHx8IG1bNF0gPT09IFwiKlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgdHlwZV86ICdjZG90JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgdHlwZV86ICd0aW1lcycgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChtWzVdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChcIjEwXntcIiArIG1bNV0gKyBcIn1cIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdudW1iZXJeJzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAobVswXSA9PT0gXCIrLVwiIHx8IG1bMF0gPT09IFwiKy8tXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKFwiXFxcXHBtIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChtWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBfbWhjaGVtUGFyc2VyLmNvbmNhdEFycmF5KHJldCwgX21oY2hlbVBhcnNlci5nbyhtWzFdLCAncHUtOSw5JykpO1xuICAgICAgICAgICAgICAgICAgICByZXQucHVzaChcIl57XCIgKyBtWzJdICsgXCJ9XCIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ29wZXJhdG9yJzogZnVuY3Rpb24gKF9idWZmZXIsIG0sIHAxKSB7IHJldHVybiB7IHR5cGVfOiAnb3BlcmF0b3InLCBraW5kXzogKHAxIHx8IG0pIH07IH0sXG4gICAgICAgICAgICAgICAgJ3NwYWNlJzogZnVuY3Rpb24gKCkgeyByZXR1cm4geyB0eXBlXzogJ3B1LXNwYWNlLTEnIH07IH0sXG4gICAgICAgICAgICAgICAgJ291dHB1dCc6IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1kID0gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5tYXRjaF8oJ3soLi4uKX0nLCBidWZmZXIuZCB8fCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1kICYmIG1kLnJlbWFpbmRlciA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5kID0gbWQubWF0Y2hfO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBtcSA9IF9taGNoZW1QYXJzZXIucGF0dGVybnMubWF0Y2hfKCd7KC4uLil9JywgYnVmZmVyLnEgfHwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtcSAmJiBtcS5yZW1haW5kZXIgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIucSA9IG1xLm1hdGNoXztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5kID0gYnVmZmVyLmQucmVwbGFjZSgvXFx1MDBCMEN8XFxeb0N8XFxee299Qy9nLCBcInt9XntcXFxcY2lyY31DXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmQgPSBidWZmZXIuZC5yZXBsYWNlKC9cXHUwMEIwRnxcXF5vRnxcXF57b31GL2csIFwie31ee1xcXFxjaXJjfUZcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIucSA9IGJ1ZmZlci5xLnJlcGxhY2UoL1xcdTAwQjBDfFxcXm9DfFxcXntvfUMvZywgXCJ7fV57XFxcXGNpcmN9Q1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5xID0gYnVmZmVyLnEucmVwbGFjZSgvXFx1MDBCMEZ8XFxeb0Z8XFxee299Ri9nLCBcInt9XntcXFxcY2lyY31GXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGI1ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ6IF9taGNoZW1QYXJzZXIuZ28oYnVmZmVyLmQsICdwdScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHE6IF9taGNoZW1QYXJzZXIuZ28oYnVmZmVyLnEsICdwdScpXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5vID09PSAnLy8nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0geyB0eXBlXzogJ3B1LWZyYWMnLCBwMTogYjUuZCwgcDI6IGI1LnEgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IGI1LmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGI1LmQubGVuZ3RoID4gMSB8fCBiNS5xLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goeyB0eXBlXzogJyAvICcgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCh7IHR5cGVfOiAnLycgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9taGNoZW1QYXJzZXIuY29uY2F0QXJyYXkocmV0LCBiNS5xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IF9taGNoZW1QYXJzZXIuZ28oYnVmZmVyLmQsICdwdS0yJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJbcF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdwdS0yJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ291dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyonOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdjZG90J10sIG5leHRTdGF0ZTogJzAnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxceCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdybT0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdzcGFjZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ3NwYWNlJ10sIG5leHRTdGF0ZTogJzAnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdeeyguLi4pfXxeKC0xKSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzEnOiB7IGFjdGlvbl86ICdeKC0xKScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJy05Liw5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJ3JtPScsIG5leHRTdGF0ZTogJzAnIH0sXG4gICAgICAgICAgICAgICAgICAgICcxJzogeyBhY3Rpb25fOiAnXigtMSknLCBuZXh0U3RhdGU6ICcwJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAney4uLn18ZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdybT0nLCBuZXh0U3RhdGU6ICcxJyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgJ2Nkb3QnOiBmdW5jdGlvbiAoKSB7IHJldHVybiB7IHR5cGVfOiAndGlnaHQgY2RvdCcgfTsgfSxcbiAgICAgICAgICAgICAgICAnXigtMSknOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci5ybSArPSBcIl57XCIgKyBtICsgXCJ9XCI7IHJldHVybiB1bmRlZmluZWQ7IH0sXG4gICAgICAgICAgICAgICAgJ3NwYWNlJzogZnVuY3Rpb24gKCkgeyByZXR1cm4geyB0eXBlXzogJ3B1LXNwYWNlLTInIH07IH0sXG4gICAgICAgICAgICAgICAgJ291dHB1dCc6IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLnJtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbXJtID0gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5tYXRjaF8oJ3soLi4uKX0nLCBidWZmZXIucm0gfHwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXJtICYmIG1ybS5yZW1haW5kZXIgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gX21oY2hlbVBhcnNlci5nbyhtcm0ubWF0Y2hfLCAncHUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHsgdHlwZV86ICdybScsIHAxOiBidWZmZXIucm0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcltwXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ3B1LTksOSc6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25zOiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMoe1xuICAgICAgICAgICAgICAgICdlbXB0eSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86ICdvdXRwdXQtMCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ28nOiB7IGFjdGlvbl86ICdvdXRwdXQtbycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJywnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiBbJ291dHB1dC0wJywgJ2NvbW1hJ10sIG5leHRTdGF0ZTogJ28nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcuJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogWydvdXRwdXQtMCcsICdjb3B5J10sIG5leHRTdGF0ZTogJ28nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ3RleHQ9JyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgJ2NvbW1hJzogZnVuY3Rpb24gKCkgeyByZXR1cm4geyB0eXBlXzogJ2NvbW1hRGVjaW1hbCcgfTsgfSxcbiAgICAgICAgICAgICAgICAnb3V0cHV0LTAnOiBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnRleHRfID0gYnVmZmVyLnRleHRfIHx8IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIudGV4dF8ubGVuZ3RoID4gNCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBidWZmZXIudGV4dF8ubGVuZ3RoICUgMztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gYnVmZmVyLnRleHRfLmxlbmd0aCAtIDM7IGkgPiAwOyBpIC09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChidWZmZXIudGV4dF8uc3Vic3RyKGksIDMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCh7IHR5cGVfOiAnMTAwMCBzZXBhcmF0b3InIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goYnVmZmVyLnRleHRfLnN1YnN0cigwLCBhKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goYnVmZmVyLnRleHRfKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcltwXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ291dHB1dC1vJzogZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci50ZXh0XyA9IGJ1ZmZlci50ZXh0XyB8fCBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLnRleHRfLmxlbmd0aCA+IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gYnVmZmVyLnRleHRfLmxlbmd0aCAtIDM7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhOyBpICs9IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChidWZmZXIudGV4dF8uc3Vic3RyKGksIDMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCh7IHR5cGVfOiAnMTAwMCBzZXBhcmF0b3InIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goYnVmZmVyLnRleHRfLnN1YnN0cihpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChidWZmZXIudGV4dF8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYnVmZmVyW3BdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcbnZhciBfbWhjaGVtVGV4aWZ5ID0ge1xuICAgIGdvOiBmdW5jdGlvbiAoaW5wdXQsIGFkZE91dGVyQnJhY2VzKSB7XG4gICAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXMgPSBcIlwiO1xuICAgICAgICB2YXIgY2VlID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBpbnB1dGkgPSBpbnB1dFtpXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXRpID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcmVzICs9IGlucHV0aTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlcyArPSBfbWhjaGVtVGV4aWZ5Ll9nbzIoaW5wdXRpKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXRpLnR5cGVfID09PSAnMXN0LWxldmVsIGVzY2FwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY2VlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFkZE91dGVyQnJhY2VzICYmICFjZWUgJiYgcmVzKSB7XG4gICAgICAgICAgICByZXMgPSBcIntcIiArIHJlcyArIFwifVwiO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSxcbiAgICBfZ29Jbm5lcjogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBfbWhjaGVtVGV4aWZ5LmdvKGlucHV0LCBmYWxzZSk7XG4gICAgfSxcbiAgICBfZ28yOiBmdW5jdGlvbiAoYnVmKSB7XG4gICAgICAgIHZhciByZXM7XG4gICAgICAgIHN3aXRjaCAoYnVmLnR5cGVfKSB7XG4gICAgICAgICAgICBjYXNlICdjaGVtZml2ZSc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcIjtcbiAgICAgICAgICAgICAgICB2YXIgYjUgPSB7XG4gICAgICAgICAgICAgICAgICAgIGE6IF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLmEpLFxuICAgICAgICAgICAgICAgICAgICBiOiBfbWhjaGVtVGV4aWZ5Ll9nb0lubmVyKGJ1Zi5iKSxcbiAgICAgICAgICAgICAgICAgICAgcDogX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucCksXG4gICAgICAgICAgICAgICAgICAgIG86IF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLm8pLFxuICAgICAgICAgICAgICAgICAgICBxOiBfbWhjaGVtVGV4aWZ5Ll9nb0lubmVyKGJ1Zi5xKSxcbiAgICAgICAgICAgICAgICAgICAgZDogX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYuZClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChiNS5hKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiNS5hLm1hdGNoKC9eWytcXC1dLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGI1LmEgPSBcIntcIiArIGI1LmEgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXMgKz0gYjUuYSArIFwiXFxcXCxcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGI1LmIgfHwgYjUucCkge1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJ7XFxcXHZwaGFudG9te0F9fVwiO1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJee1xcXFxocGhhbnRvbXtcIiArIChiNS5iIHx8IFwiXCIpICsgXCJ9fV97XFxcXGhwaGFudG9te1wiICsgKGI1LnAgfHwgXCJcIikgKyBcIn19XCI7XG4gICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIlxcXFxta2Vybi0xLjVtdVwiO1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJ7XFxcXHZwaGFudG9te0F9fVwiO1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJee1xcXFxzbWFzaFt0XXtcXFxcdnBoYW50b217Mn19XFxcXGxsYXB7XCIgKyAoYjUuYiB8fCBcIlwiKSArIFwifX1cIjtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiX3tcXFxcdnBoYW50b217Mn1cXFxcbGxhcHtcXFxcc21hc2hbdF17XCIgKyAoYjUucCB8fCBcIlwiKSArIFwifX19XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChiNS5vKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiNS5vLm1hdGNoKC9eWytcXC1dLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGI1Lm8gPSBcIntcIiArIGI1Lm8gKyBcIn1cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXMgKz0gYjUubztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGJ1Zi5kVHlwZSA9PT0gJ2t2Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYjUuZCB8fCBiNS5xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJ7XFxcXHZwaGFudG9te0F9fVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChiNS5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJee1wiICsgYjUuZCArIFwifVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChiNS5xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJfe1xcXFxzbWFzaFt0XXtcIiArIGI1LnEgKyBcIn19XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYnVmLmRUeXBlID09PSAnb3hpZGF0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYjUuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwie1xcXFx2cGhhbnRvbXtBfX1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIl57XCIgKyBiNS5kICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGI1LnEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIntcXFxcdnBoYW50b217QX19XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJfe1xcXFxzbWFzaFt0XXtcIiArIGI1LnEgKyBcIn19XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiNS5xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJ7XFxcXHZwaGFudG9te0F9fVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiX3tcXFxcc21hc2hbdF17XCIgKyBiNS5xICsgXCJ9fVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChiNS5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJ7XFxcXHZwaGFudG9te0F9fVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiXntcIiArIGI1LmQgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JtJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFxtYXRocm17XCIgKyBidWYucDEgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgICAgIGlmIChidWYucDEubWF0Y2goL1tcXF5fXS8pKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1Zi5wMSA9IGJ1Zi5wMS5yZXBsYWNlKFwiIFwiLCBcIn5cIikucmVwbGFjZShcIi1cIiwgXCJcXFxcdGV4dHstfVwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcbWF0aHJte1wiICsgYnVmLnAxICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFx0ZXh0e1wiICsgYnVmLnAxICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncm9tYW4gbnVtZXJhbCc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcbWF0aHJte1wiICsgYnVmLnAxICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGF0ZSBvZiBhZ2dyZWdhdGlvbic6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcbXNraXAybXUgXCIgKyBfbWhjaGVtVGV4aWZ5Ll9nb0lubmVyKGJ1Zi5wMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzdGF0ZSBvZiBhZ2dyZWdhdGlvbiBzdWJzY3JpcHQnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1za2lwMW11IFwiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYm9uZCc6XG4gICAgICAgICAgICAgICAgcmVzID0gX21oY2hlbVRleGlmeS5fZ2V0Qm9uZChidWYua2luZF8pO1xuICAgICAgICAgICAgICAgIGlmICghcmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IFtcIk1oY2hlbUVycm9yQm9uZFwiLCBcIm1oY2hlbSBFcnJvci4gVW5rbm93biBib25kIHR5cGUgKFwiICsgYnVmLmtpbmRfICsgXCIpXCJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZyYWMnOlxuICAgICAgICAgICAgICAgIHZhciBjID0gXCJcXFxcZnJhY3tcIiArIGJ1Zi5wMSArIFwifXtcIiArIGJ1Zi5wMiArIFwifVwiO1xuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1hdGhjaG9pY2V7XFxcXHRleHRzdHlsZVwiICsgYyArIFwifXtcIiArIGMgKyBcIn17XCIgKyBjICsgXCJ9e1wiICsgYyArIFwifVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncHUtZnJhYyc6XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBcIlxcXFxmcmFje1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDEpICsgXCJ9e1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDIpICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcbWF0aGNob2ljZXtcXFxcdGV4dHN0eWxlXCIgKyBkICsgXCJ9e1wiICsgZCArIFwifXtcIiArIGQgKyBcIn17XCIgKyBkICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXgtbWF0aCc6XG4gICAgICAgICAgICAgICAgcmVzID0gYnVmLnAxICsgXCIgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmcmFjLWNlJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFxmcmFje1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDEpICsgXCJ9e1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDIpICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvdmVyc2V0JzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFxvdmVyc2V0e1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDEpICsgXCJ9e1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDIpICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bmRlcnNldCc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcdW5kZXJzZXR7XCIgKyBfbWhjaGVtVGV4aWZ5Ll9nb0lubmVyKGJ1Zi5wMSkgKyBcIn17XCIgKyBfbWhjaGVtVGV4aWZ5Ll9nb0lubmVyKGJ1Zi5wMikgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3VuZGVyYnJhY2UnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXHVuZGVyYnJhY2V7XCIgKyBfbWhjaGVtVGV4aWZ5Ll9nb0lubmVyKGJ1Zi5wMSkgKyBcIn1fe1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDIpICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJ7XFxcXGNvbG9ye1wiICsgYnVmLmNvbG9yMSArIFwifXtcIiArIF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLmNvbG9yMikgKyBcIn19XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb2xvcjAnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXGNvbG9ye1wiICsgYnVmLmNvbG9yICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhcnJvdyc6XG4gICAgICAgICAgICAgICAgdmFyIGI2ID0ge1xuICAgICAgICAgICAgICAgICAgICByZDogX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucmQpLFxuICAgICAgICAgICAgICAgICAgICBycTogX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucnEpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB2YXIgYXJyb3cgPSBfbWhjaGVtVGV4aWZ5Ll9nZXRBcnJvdyhidWYucik7XG4gICAgICAgICAgICAgICAgaWYgKGI2LnJkIHx8IGI2LnJxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWYuciA9PT0gXCI8PT5cIiB8fCBidWYuciA9PT0gXCI8PT4+XCIgfHwgYnVmLnIgPT09IFwiPDw9PlwiIHx8IGJ1Zi5yID09PSBcIjwtLT5cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3cgPSBcIlxcXFxsb25nXCIgKyBhcnJvdztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiNi5yZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93ID0gXCJcXFxcb3ZlcnNldHtcIiArIGI2LnJkICsgXCJ9e1wiICsgYXJyb3cgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiNi5ycSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWYuciA9PT0gXCI8LS0+XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3cgPSBcIlxcXFx1bmRlcnNldHtcXFxcbG93ZXIybXV7XCIgKyBiNi5ycSArIFwifX17XCIgKyBhcnJvdyArIFwifVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3cgPSBcIlxcXFx1bmRlcnNldHtcXFxcbG93ZXI2bXV7XCIgKyBiNi5ycSArIFwifX17XCIgKyBhcnJvdyArIFwifVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93ID0gXCIge31cXFxcbWF0aHJlbHtcIiArIGFycm93ICsgXCJ9e30gXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYjYucnEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvdyArPSBcIlt7XCIgKyBiNi5ycSArIFwifV1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93ICs9IFwie1wiICsgYjYucmQgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93ID0gXCIge31cXFxcbWF0aHJlbHtcXFxceFwiICsgYXJyb3cgKyBcIn17fSBcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyb3cgPSBcIiB7fVxcXFxtYXRocmVse1xcXFxsb25nXCIgKyBhcnJvdyArIFwifXt9IFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXMgPSBhcnJvdztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29wZXJhdG9yJzpcbiAgICAgICAgICAgICAgICByZXMgPSBfbWhjaGVtVGV4aWZ5Ll9nZXRPcGVyYXRvcihidWYua2luZF8pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMXN0LWxldmVsIGVzY2FwZSc6XG4gICAgICAgICAgICAgICAgcmVzID0gYnVmLnAxICsgXCIgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzcGFjZSc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCIgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0aW55U2tpcCc6XG4gICAgICAgICAgICAgICAgcmVzID0gJ1xcXFxta2VybjJtdSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbnRpdHlTa2lwJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIn5cIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3B1LXNwYWNlLTEnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiflwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncHUtc3BhY2UtMic6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcbWtlcm4zbXUgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcxMDAwIHNlcGFyYXRvcic6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcbWtlcm4ybXUgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb21tYURlY2ltYWwnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwieyx9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb21tYSBlbnVtZXJhdGlvbiBMJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIntcIiArIGJ1Zi5wMSArIFwifVxcXFxta2VybjZtdSBcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1hIGVudW1lcmF0aW9uIE0nOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwie1wiICsgYnVmLnAxICsgXCJ9XFxcXG1rZXJuM211IFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY29tbWEgZW51bWVyYXRpb24gUyc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJ7XCIgKyBidWYucDEgKyBcIn1cXFxcbWtlcm4xbXUgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdoeXBoZW4nOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXHRleHR7LX1cIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FkZGl0aW9uIGNvbXBvdW5kJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFwse1xcXFxjZG90fVxcXFwsXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbGVjdHJvbiBkb3QnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1rZXJuMW11IFxcXFxidWxsZXRcXFxcbWtlcm4xbXUgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdLViB4JzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIntcXFxcdGltZXN9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwcmltZSc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxccHJpbWUgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjZG90JzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFxjZG90IFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGlnaHQgY2RvdCc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcbWtlcm4xbXV7XFxcXGNkb3R9XFxcXG1rZXJuMW11IFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGltZXMnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXHRpbWVzIFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2lyY2EnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwie1xcXFxzaW19XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdeJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcInVwYXJyb3dcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3YnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiZG93bmFycm93XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbGxpcHNpcyc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcbGRvdHMgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcvJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIi9cIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJyAvICc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcLC9cXFxcLFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBhc3NlcnROZXZlcihidWYpO1xuICAgICAgICAgICAgICAgIHRocm93IFtcIk1oY2hlbUJ1Z1RcIiwgXCJtaGNoZW0gYnVnIFQuIFBsZWFzZSByZXBvcnQuXCJdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSxcbiAgICBfZ2V0QXJyb3c6IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHN3aXRjaCAoYSkge1xuICAgICAgICAgICAgY2FzZSBcIi0+XCI6IHJldHVybiBcInJpZ2h0YXJyb3dcIjtcbiAgICAgICAgICAgIGNhc2UgXCJcXHUyMTkyXCI6IHJldHVybiBcInJpZ2h0YXJyb3dcIjtcbiAgICAgICAgICAgIGNhc2UgXCJcXHUyN0Y2XCI6IHJldHVybiBcInJpZ2h0YXJyb3dcIjtcbiAgICAgICAgICAgIGNhc2UgXCI8LVwiOiByZXR1cm4gXCJsZWZ0YXJyb3dcIjtcbiAgICAgICAgICAgIGNhc2UgXCI8LT5cIjogcmV0dXJuIFwibGVmdHJpZ2h0YXJyb3dcIjtcbiAgICAgICAgICAgIGNhc2UgXCI8LS0+XCI6IHJldHVybiBcImxlZnRyaWdodGFycm93c1wiO1xuICAgICAgICAgICAgY2FzZSBcIjw9PlwiOiByZXR1cm4gXCJyaWdodGxlZnRoYXJwb29uc1wiO1xuICAgICAgICAgICAgY2FzZSBcIlxcdTIxQ0NcIjogcmV0dXJuIFwicmlnaHRsZWZ0aGFycG9vbnNcIjtcbiAgICAgICAgICAgIGNhc2UgXCI8PT4+XCI6IHJldHVybiBcIlJpZ2h0bGVmdGhhcnBvb25zXCI7XG4gICAgICAgICAgICBjYXNlIFwiPDw9PlwiOiByZXR1cm4gXCJMZWZ0cmlnaHRoYXJwb29uc1wiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBhc3NlcnROZXZlcihhKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBbXCJNaGNoZW1CdWdUXCIsIFwibWhjaGVtIGJ1ZyBULiBQbGVhc2UgcmVwb3J0LlwiXTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgX2dldEJvbmQ6IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHN3aXRjaCAoYSkge1xuICAgICAgICAgICAgY2FzZSBcIi1cIjogcmV0dXJuIFwiey19XCI7XG4gICAgICAgICAgICBjYXNlIFwiMVwiOiByZXR1cm4gXCJ7LX1cIjtcbiAgICAgICAgICAgIGNhc2UgXCI9XCI6IHJldHVybiBcIns9fVwiO1xuICAgICAgICAgICAgY2FzZSBcIjJcIjogcmV0dXJuIFwiez19XCI7XG4gICAgICAgICAgICBjYXNlIFwiI1wiOiByZXR1cm4gXCJ7XFxcXGVxdWl2fVwiO1xuICAgICAgICAgICAgY2FzZSBcIjNcIjogcmV0dXJuIFwie1xcXFxlcXVpdn1cIjtcbiAgICAgICAgICAgIGNhc2UgXCJ+XCI6IHJldHVybiBcIntcXFxcdHJpcGxlZGFzaH1cIjtcbiAgICAgICAgICAgIGNhc2UgXCJ+LVwiOiByZXR1cm4gXCJ7XFxcXHJsYXB7XFxcXGxvd2VyLjFlbXstfX1cXFxccmFpc2UuMWVte1xcXFx0cmlwbGVkYXNofX1cIjtcbiAgICAgICAgICAgIGNhc2UgXCJ+PVwiOiByZXR1cm4gXCJ7XFxcXHJsYXB7XFxcXGxvd2VyLjJlbXstfX1cXFxccmxhcHtcXFxccmFpc2UuMmVte1xcXFx0cmlwbGVkYXNofX0tfVwiO1xuICAgICAgICAgICAgY2FzZSBcIn4tLVwiOiByZXR1cm4gXCJ7XFxcXHJsYXB7XFxcXGxvd2VyLjJlbXstfX1cXFxccmxhcHtcXFxccmFpc2UuMmVte1xcXFx0cmlwbGVkYXNofX0tfVwiO1xuICAgICAgICAgICAgY2FzZSBcIi1+LVwiOiByZXR1cm4gXCJ7XFxcXHJsYXB7XFxcXGxvd2VyLjJlbXstfX1cXFxccmxhcHtcXFxccmFpc2UuMmVtey19fVxcXFx0cmlwbGVkYXNofVwiO1xuICAgICAgICAgICAgY2FzZSBcIi4uLlwiOiByZXR1cm4gXCJ7e1xcXFxjZG90fXtcXFxcY2RvdH17XFxcXGNkb3R9fVwiO1xuICAgICAgICAgICAgY2FzZSBcIi4uLi5cIjogcmV0dXJuIFwie3tcXFxcY2RvdH17XFxcXGNkb3R9e1xcXFxjZG90fXtcXFxcY2RvdH19XCI7XG4gICAgICAgICAgICBjYXNlIFwiLT5cIjogcmV0dXJuIFwie1xcXFxyaWdodGFycm93fVwiO1xuICAgICAgICAgICAgY2FzZSBcIjwtXCI6IHJldHVybiBcIntcXFxcbGVmdGFycm93fVwiO1xuICAgICAgICAgICAgY2FzZSBcIjxcIjogcmV0dXJuIFwiezx9XCI7XG4gICAgICAgICAgICBjYXNlIFwiPlwiOiByZXR1cm4gXCJ7Pn1cIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYXNzZXJ0TmV2ZXIoYSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgW1wiTWhjaGVtQnVnVFwiLCBcIm1oY2hlbSBidWcgVC4gUGxlYXNlIHJlcG9ydC5cIl07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIF9nZXRPcGVyYXRvcjogZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgc3dpdGNoIChhKSB7XG4gICAgICAgICAgICBjYXNlIFwiK1wiOiByZXR1cm4gXCIge30re30gXCI7XG4gICAgICAgICAgICBjYXNlIFwiLVwiOiByZXR1cm4gXCIge30te30gXCI7XG4gICAgICAgICAgICBjYXNlIFwiPVwiOiByZXR1cm4gXCIge309e30gXCI7XG4gICAgICAgICAgICBjYXNlIFwiPFwiOiByZXR1cm4gXCIge308e30gXCI7XG4gICAgICAgICAgICBjYXNlIFwiPlwiOiByZXR1cm4gXCIge30+e30gXCI7XG4gICAgICAgICAgICBjYXNlIFwiPDxcIjogcmV0dXJuIFwiIHt9XFxcXGxse30gXCI7XG4gICAgICAgICAgICBjYXNlIFwiPj5cIjogcmV0dXJuIFwiIHt9XFxcXGdne30gXCI7XG4gICAgICAgICAgICBjYXNlIFwiXFxcXHBtXCI6IHJldHVybiBcIiB7fVxcXFxwbXt9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIlxcXFxhcHByb3hcIjogcmV0dXJuIFwiIHt9XFxcXGFwcHJveHt9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIiRcXFxcYXBwcm94JFwiOiByZXR1cm4gXCIge31cXFxcYXBwcm94e30gXCI7XG4gICAgICAgICAgICBjYXNlIFwidlwiOiByZXR1cm4gXCIgXFxcXGRvd25hcnJvd3t9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIih2KVwiOiByZXR1cm4gXCIgXFxcXGRvd25hcnJvd3t9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIl5cIjogcmV0dXJuIFwiIFxcXFx1cGFycm93e30gXCI7XG4gICAgICAgICAgICBjYXNlIFwiKF4pXCI6IHJldHVybiBcIiBcXFxcdXBhcnJvd3t9IFwiO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBhc3NlcnROZXZlcihhKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBbXCJNaGNoZW1CdWdUXCIsIFwibWhjaGVtIGJ1ZyBULiBQbGVhc2UgcmVwb3J0LlwiXTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5mdW5jdGlvbiBhc3NlcnROZXZlcihhKSB7IH1cbiIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXR5cGVzLmpzLm1hcCIsIG51bGwsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRG9jdHlwZSA9IGV4cG9ydHMuQ0RBVEEgPSBleHBvcnRzLlRhZyA9IGV4cG9ydHMuU3R5bGUgPSBleHBvcnRzLlNjcmlwdCA9IGV4cG9ydHMuQ29tbWVudCA9IGV4cG9ydHMuRGlyZWN0aXZlID0gZXhwb3J0cy5UZXh0ID0gZXhwb3J0cy5Sb290ID0gZXhwb3J0cy5pc1RhZyA9IGV4cG9ydHMuRWxlbWVudFR5cGUgPSB2b2lkIDA7XG4vKiogVHlwZXMgb2YgZWxlbWVudHMgZm91bmQgaW4gaHRtbHBhcnNlcjIncyBET00gKi9cbnZhciBFbGVtZW50VHlwZTtcbihmdW5jdGlvbiAoRWxlbWVudFR5cGUpIHtcbiAgICAvKiogVHlwZSBmb3IgdGhlIHJvb3QgZWxlbWVudCBvZiBhIGRvY3VtZW50ICovXG4gICAgRWxlbWVudFR5cGVbXCJSb290XCJdID0gXCJyb290XCI7XG4gICAgLyoqIFR5cGUgZm9yIFRleHQgKi9cbiAgICBFbGVtZW50VHlwZVtcIlRleHRcIl0gPSBcInRleHRcIjtcbiAgICAvKiogVHlwZSBmb3IgPD8gLi4uID8+ICovXG4gICAgRWxlbWVudFR5cGVbXCJEaXJlY3RpdmVcIl0gPSBcImRpcmVjdGl2ZVwiO1xuICAgIC8qKiBUeXBlIGZvciA8IS0tIC4uLiAtLT4gKi9cbiAgICBFbGVtZW50VHlwZVtcIkNvbW1lbnRcIl0gPSBcImNvbW1lbnRcIjtcbiAgICAvKiogVHlwZSBmb3IgPHNjcmlwdD4gdGFncyAqL1xuICAgIEVsZW1lbnRUeXBlW1wiU2NyaXB0XCJdID0gXCJzY3JpcHRcIjtcbiAgICAvKiogVHlwZSBmb3IgPHN0eWxlPiB0YWdzICovXG4gICAgRWxlbWVudFR5cGVbXCJTdHlsZVwiXSA9IFwic3R5bGVcIjtcbiAgICAvKiogVHlwZSBmb3IgQW55IHRhZyAqL1xuICAgIEVsZW1lbnRUeXBlW1wiVGFnXCJdID0gXCJ0YWdcIjtcbiAgICAvKiogVHlwZSBmb3IgPCFbQ0RBVEFbIC4uLiBdXT4gKi9cbiAgICBFbGVtZW50VHlwZVtcIkNEQVRBXCJdID0gXCJjZGF0YVwiO1xuICAgIC8qKiBUeXBlIGZvciA8IWRvY3R5cGUgLi4uPiAqL1xuICAgIEVsZW1lbnRUeXBlW1wiRG9jdHlwZVwiXSA9IFwiZG9jdHlwZVwiO1xufSkoRWxlbWVudFR5cGUgPSBleHBvcnRzLkVsZW1lbnRUeXBlIHx8IChleHBvcnRzLkVsZW1lbnRUeXBlID0ge30pKTtcbi8qKlxuICogVGVzdHMgd2hldGhlciBhbiBlbGVtZW50IGlzIGEgdGFnIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gZWxlbSBFbGVtZW50IHRvIHRlc3RcbiAqL1xuZnVuY3Rpb24gaXNUYWcoZWxlbSkge1xuICAgIHJldHVybiAoZWxlbS50eXBlID09PSBFbGVtZW50VHlwZS5UYWcgfHxcbiAgICAgICAgZWxlbS50eXBlID09PSBFbGVtZW50VHlwZS5TY3JpcHQgfHxcbiAgICAgICAgZWxlbS50eXBlID09PSBFbGVtZW50VHlwZS5TdHlsZSk7XG59XG5leHBvcnRzLmlzVGFnID0gaXNUYWc7XG4vLyBFeHBvcnRzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuLyoqIFR5cGUgZm9yIHRoZSByb290IGVsZW1lbnQgb2YgYSBkb2N1bWVudCAqL1xuZXhwb3J0cy5Sb290ID0gRWxlbWVudFR5cGUuUm9vdDtcbi8qKiBUeXBlIGZvciBUZXh0ICovXG5leHBvcnRzLlRleHQgPSBFbGVtZW50VHlwZS5UZXh0O1xuLyoqIFR5cGUgZm9yIDw/IC4uLiA/PiAqL1xuZXhwb3J0cy5EaXJlY3RpdmUgPSBFbGVtZW50VHlwZS5EaXJlY3RpdmU7XG4vKiogVHlwZSBmb3IgPCEtLSAuLi4gLS0+ICovXG5leHBvcnRzLkNvbW1lbnQgPSBFbGVtZW50VHlwZS5Db21tZW50O1xuLyoqIFR5cGUgZm9yIDxzY3JpcHQ+IHRhZ3MgKi9cbmV4cG9ydHMuU2NyaXB0ID0gRWxlbWVudFR5cGUuU2NyaXB0O1xuLyoqIFR5cGUgZm9yIDxzdHlsZT4gdGFncyAqL1xuZXhwb3J0cy5TdHlsZSA9IEVsZW1lbnRUeXBlLlN0eWxlO1xuLyoqIFR5cGUgZm9yIEFueSB0YWcgKi9cbmV4cG9ydHMuVGFnID0gRWxlbWVudFR5cGUuVGFnO1xuLyoqIFR5cGUgZm9yIDwhW0NEQVRBWyAuLi4gXV0+ICovXG5leHBvcnRzLkNEQVRBID0gRWxlbWVudFR5cGUuQ0RBVEE7XG4vKiogVHlwZSBmb3IgPCFkb2N0eXBlIC4uLj4gKi9cbmV4cG9ydHMuRG9jdHlwZSA9IEVsZW1lbnRUeXBlLkRvY3R5cGU7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY2xvbmVOb2RlID0gZXhwb3J0cy5oYXNDaGlsZHJlbiA9IGV4cG9ydHMuaXNEb2N1bWVudCA9IGV4cG9ydHMuaXNEaXJlY3RpdmUgPSBleHBvcnRzLmlzQ29tbWVudCA9IGV4cG9ydHMuaXNUZXh0ID0gZXhwb3J0cy5pc0NEQVRBID0gZXhwb3J0cy5pc1RhZyA9IGV4cG9ydHMuRWxlbWVudCA9IGV4cG9ydHMuRG9jdW1lbnQgPSBleHBvcnRzLkNEQVRBID0gZXhwb3J0cy5Ob2RlV2l0aENoaWxkcmVuID0gZXhwb3J0cy5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBleHBvcnRzLkNvbW1lbnQgPSBleHBvcnRzLlRleHQgPSBleHBvcnRzLkRhdGFOb2RlID0gZXhwb3J0cy5Ob2RlID0gdm9pZCAwO1xudmFyIGRvbWVsZW1lbnR0eXBlXzEgPSByZXF1aXJlKFwiZG9tZWxlbWVudHR5cGVcIik7XG4vKipcbiAqIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBhcyB0aGUgcHJvdG90eXBlIGZvciBOb2RlcyB3aGVuIGNyZWF0aW5nIGFcbiAqIERPTS1MZXZlbC0xLWNvbXBsaWFudCBzdHJ1Y3R1cmUuXG4gKi9cbnZhciBOb2RlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vZGUoKSB7XG4gICAgICAgIC8qKiBQYXJlbnQgb2YgdGhlIG5vZGUgKi9cbiAgICAgICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICAgICAgICAvKiogUHJldmlvdXMgc2libGluZyAqL1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgICAgICAvKiogTmV4dCBzaWJsaW5nICovXG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIC8qKiBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIG5vZGUuIFJlcXVpcmVzIGB3aXRoU3RhcnRJbmRpY2VzYCBvbiB0aGUgaGFuZGxlciB0byBiZSBgdHJ1ZS4gKi9cbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gbnVsbDtcbiAgICAgICAgLyoqIFRoZSBlbmQgaW5kZXggb2YgdGhlIG5vZGUuIFJlcXVpcmVzIGB3aXRoRW5kSW5kaWNlc2Agb24gdGhlIGhhbmRsZXIgdG8gYmUgYHRydWUuICovXG4gICAgICAgIHRoaXMuZW5kSW5kZXggPSBudWxsO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsIFwicGFyZW50Tm9kZVwiLCB7XG4gICAgICAgIC8vIFJlYWQtd3JpdGUgYWxpYXNlcyBmb3IgcHJvcGVydGllc1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgcGFyZW50fS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgXCJwcmV2aW91c1NpYmxpbmdcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgcHJldn0uXG4gICAgICAgICAqIFtET00gc3BlY10oaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnKS1jb21wYXRpYmxlIGFsaWFzLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmV2O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChwcmV2KSB7XG4gICAgICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCBcIm5leHRTaWJsaW5nXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIG5leHR9LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV4dCkge1xuICAgICAgICAgICAgdGhpcy5uZXh0ID0gbmV4dDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIENsb25lIHRoaXMgbm9kZSwgYW5kIG9wdGlvbmFsbHkgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY3Vyc2l2ZSBDbG9uZSBjaGlsZCBub2RlcyBhcyB3ZWxsLlxuICAgICAqIEByZXR1cm5zIEEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gICAgICovXG4gICAgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlID0gZnVuY3Rpb24gKHJlY3Vyc2l2ZSkge1xuICAgICAgICBpZiAocmVjdXJzaXZlID09PSB2b2lkIDApIHsgcmVjdXJzaXZlID0gZmFsc2U7IH1cbiAgICAgICAgcmV0dXJuIGNsb25lTm9kZSh0aGlzLCByZWN1cnNpdmUpO1xuICAgIH07XG4gICAgcmV0dXJuIE5vZGU7XG59KCkpO1xuZXhwb3J0cy5Ob2RlID0gTm9kZTtcbi8qKlxuICogQSBub2RlIHRoYXQgY29udGFpbnMgc29tZSBkYXRhLlxuICovXG52YXIgRGF0YU5vZGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKERhdGFOb2RlLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRhIFRoZSBjb250ZW50IG9mIHRoZSBkYXRhIG5vZGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBEYXRhTm9kZShkYXRhKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhTm9kZS5wcm90b3R5cGUsIFwibm9kZVZhbHVlXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIGRhdGF9LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBEYXRhTm9kZTtcbn0oTm9kZSkpO1xuZXhwb3J0cy5EYXRhTm9kZSA9IERhdGFOb2RlO1xuLyoqXG4gKiBUZXh0IHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gKi9cbnZhciBUZXh0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUZXh0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRleHQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UZXh0O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZXh0LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gVGV4dDtcbn0oRGF0YU5vZGUpKTtcbmV4cG9ydHMuVGV4dCA9IFRleHQ7XG4vKipcbiAqIENvbW1lbnRzIHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gKi9cbnZhciBDb21tZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb21tZW50LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbW1lbnQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Db21tZW50O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tZW50LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gQ29tbWVudDtcbn0oRGF0YU5vZGUpKTtcbmV4cG9ydHMuQ29tbWVudCA9IENvbW1lbnQ7XG4vKipcbiAqIFByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLCBpbmNsdWRpbmcgZG9jIHR5cGVzLlxuICovXG52YXIgUHJvY2Vzc2luZ0luc3RydWN0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5hbWUsIGRhdGEpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIF90aGlzLnR5cGUgPSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUHJvY2Vzc2luZ0luc3RydWN0aW9uLnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gUHJvY2Vzc2luZ0luc3RydWN0aW9uO1xufShEYXRhTm9kZSkpO1xuZXhwb3J0cy5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247XG4vKipcbiAqIEEgYE5vZGVgIHRoYXQgY2FuIGhhdmUgY2hpbGRyZW4uXG4gKi9cbnZhciBOb2RlV2l0aENoaWxkcmVuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhOb2RlV2l0aENoaWxkcmVuLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjaGlsZHJlbiBDaGlsZHJlbiBvZiB0aGUgbm9kZS4gT25seSBjZXJ0YWluIG5vZGUgdHlwZXMgY2FuIGhhdmUgY2hpbGRyZW4uXG4gICAgICovXG4gICAgZnVuY3Rpb24gTm9kZVdpdGhDaGlsZHJlbihjaGlsZHJlbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlV2l0aENoaWxkcmVuLnByb3RvdHlwZSwgXCJmaXJzdENoaWxkXCIsIHtcbiAgICAgICAgLy8gQWxpYXNlc1xuICAgICAgICAvKiogRmlyc3QgY2hpbGQgb2YgdGhlIG5vZGUuICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuY2hpbGRyZW5bMF0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZVdpdGhDaGlsZHJlbi5wcm90b3R5cGUsIFwibGFzdENoaWxkXCIsIHtcbiAgICAgICAgLyoqIExhc3QgY2hpbGQgb2YgdGhlIG5vZGUuICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGVXaXRoQ2hpbGRyZW4ucHJvdG90eXBlLCBcImNoaWxkTm9kZXNcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgY2hpbGRyZW59LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW47XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gTm9kZVdpdGhDaGlsZHJlbjtcbn0oTm9kZSkpO1xuZXhwb3J0cy5Ob2RlV2l0aENoaWxkcmVuID0gTm9kZVdpdGhDaGlsZHJlbjtcbnZhciBDREFUQSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ0RBVEEsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ0RBVEEoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5DREFUQTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ0RBVEEucHJvdG90eXBlLCBcIm5vZGVUeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBDREFUQTtcbn0oTm9kZVdpdGhDaGlsZHJlbikpO1xuZXhwb3J0cy5DREFUQSA9IENEQVRBO1xuLyoqXG4gKiBUaGUgcm9vdCBub2RlIG9mIHRoZSBkb2N1bWVudC5cbiAqL1xudmFyIERvY3VtZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEb2N1bWVudCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlJvb3Q7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gRG9jdW1lbnQ7XG59KE5vZGVXaXRoQ2hpbGRyZW4pKTtcbmV4cG9ydHMuRG9jdW1lbnQgPSBEb2N1bWVudDtcbi8qKlxuICogQW4gZWxlbWVudCB3aXRoaW4gdGhlIERPTS5cbiAqL1xudmFyIEVsZW1lbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsZW1lbnQsIF9zdXBlcik7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgdGFnLCBlZy4gYGRpdmAsIGBzcGFuYC5cbiAgICAgKiBAcGFyYW0gYXR0cmlicyBPYmplY3QgbWFwcGluZyBhdHRyaWJ1dGUgbmFtZXMgdG8gYXR0cmlidXRlIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0gY2hpbGRyZW4gQ2hpbGRyZW4gb2YgdGhlIG5vZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gRWxlbWVudChuYW1lLCBhdHRyaWJzLCBjaGlsZHJlbiwgdHlwZSkge1xuICAgICAgICBpZiAoY2hpbGRyZW4gPT09IHZvaWQgMCkgeyBjaGlsZHJlbiA9IFtdOyB9XG4gICAgICAgIGlmICh0eXBlID09PSB2b2lkIDApIHsgdHlwZSA9IG5hbWUgPT09IFwic2NyaXB0XCJcbiAgICAgICAgICAgID8gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5TY3JpcHRcbiAgICAgICAgICAgIDogbmFtZSA9PT0gXCJzdHlsZVwiXG4gICAgICAgICAgICAgICAgPyBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlN0eWxlXG4gICAgICAgICAgICAgICAgOiBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlRhZzsgfVxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBjaGlsZHJlbikgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIF90aGlzLmF0dHJpYnMgPSBhdHRyaWJzO1xuICAgICAgICBfdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIFwibm9kZVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCBcInRhZ05hbWVcIiwge1xuICAgICAgICAvLyBET00gTGV2ZWwgMSBhbGlhc2VzXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTYW1lIGFzIHtAbGluayBuYW1lfS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIFwiYXR0cmlidXRlc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmF0dHJpYnMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdGhpcy5hdHRyaWJzW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IChfYSA9IF90aGlzW1wieC1hdHRyaWJzTmFtZXNwYWNlXCJdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbbmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeDogKF9iID0gX3RoaXNbXCJ4LWF0dHJpYnNQcmVmaXhcIl0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYltuYW1lXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIEVsZW1lbnQ7XG59KE5vZGVXaXRoQ2hpbGRyZW4pKTtcbmV4cG9ydHMuRWxlbWVudCA9IEVsZW1lbnQ7XG4vKipcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaXMgYSBgRWxlbWVudGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1RhZyhub2RlKSB7XG4gICAgcmV0dXJuICgwLCBkb21lbGVtZW50dHlwZV8xLmlzVGFnKShub2RlKTtcbn1cbmV4cG9ydHMuaXNUYWcgPSBpc1RhZztcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYENEQVRBYCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGlzQ0RBVEEobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ0RBVEE7XG59XG5leHBvcnRzLmlzQ0RBVEEgPSBpc0NEQVRBO1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgVGV4dGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1RleHQobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuVGV4dDtcbn1cbmV4cG9ydHMuaXNUZXh0ID0gaXNUZXh0O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgQ29tbWVudGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0NvbW1lbnQobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ29tbWVudDtcbn1cbmV4cG9ydHMuaXNDb21tZW50ID0gaXNDb21tZW50O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgUHJvY2Vzc2luZ0luc3RydWN0aW9uYCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGlzRGlyZWN0aXZlKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbn1cbmV4cG9ydHMuaXNEaXJlY3RpdmUgPSBpc0RpcmVjdGl2ZTtcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYFByb2Nlc3NpbmdJbnN0cnVjdGlvbmAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0RvY3VtZW50KG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlJvb3Q7XG59XG5leHBvcnRzLmlzRG9jdW1lbnQgPSBpc0RvY3VtZW50O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyBjaGlsZHJlbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGhhc0NoaWxkcmVuKG5vZGUpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5vZGUsIFwiY2hpbGRyZW5cIik7XG59XG5leHBvcnRzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW47XG4vKipcbiAqIENsb25lIGEgbm9kZSwgYW5kIG9wdGlvbmFsbHkgaXRzIGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSByZWN1cnNpdmUgQ2xvbmUgY2hpbGQgbm9kZXMgYXMgd2VsbC5cbiAqIEByZXR1cm5zIEEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGNsb25lTm9kZShub2RlLCByZWN1cnNpdmUpIHtcbiAgICBpZiAocmVjdXJzaXZlID09PSB2b2lkIDApIHsgcmVjdXJzaXZlID0gZmFsc2U7IH1cbiAgICB2YXIgcmVzdWx0O1xuICAgIGlmIChpc1RleHQobm9kZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IFRleHQobm9kZS5kYXRhKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNDb21tZW50KG5vZGUpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBDb21tZW50KG5vZGUuZGF0YSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzVGFnKG5vZGUpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHJlY3Vyc2l2ZSA/IGNsb25lQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikgOiBbXTtcbiAgICAgICAgdmFyIGNsb25lXzEgPSBuZXcgRWxlbWVudChub2RlLm5hbWUsIF9fYXNzaWduKHt9LCBub2RlLmF0dHJpYnMpLCBjaGlsZHJlbik7XG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7IHJldHVybiAoY2hpbGQucGFyZW50ID0gY2xvbmVfMSk7IH0pO1xuICAgICAgICBpZiAobm9kZS5uYW1lc3BhY2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgY2xvbmVfMS5uYW1lc3BhY2UgPSBub2RlLm5hbWVzcGFjZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSkge1xuICAgICAgICAgICAgY2xvbmVfMVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSA9IF9fYXNzaWduKHt9LCBub2RlW1wieC1hdHRyaWJzTmFtZXNwYWNlXCJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVtcIngtYXR0cmlic1ByZWZpeFwiXSkge1xuICAgICAgICAgICAgY2xvbmVfMVtcIngtYXR0cmlic1ByZWZpeFwiXSA9IF9fYXNzaWduKHt9LCBub2RlW1wieC1hdHRyaWJzUHJlZml4XCJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBjbG9uZV8xO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0NEQVRBKG5vZGUpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHJlY3Vyc2l2ZSA/IGNsb25lQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikgOiBbXTtcbiAgICAgICAgdmFyIGNsb25lXzIgPSBuZXcgQ0RBVEEoY2hpbGRyZW4pO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gKGNoaWxkLnBhcmVudCA9IGNsb25lXzIpOyB9KTtcbiAgICAgICAgcmVzdWx0ID0gY2xvbmVfMjtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNEb2N1bWVudChub2RlKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSByZWN1cnNpdmUgPyBjbG9uZUNoaWxkcmVuKG5vZGUuY2hpbGRyZW4pIDogW107XG4gICAgICAgIHZhciBjbG9uZV8zID0gbmV3IERvY3VtZW50KGNoaWxkcmVuKTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIChjaGlsZC5wYXJlbnQgPSBjbG9uZV8zKTsgfSk7XG4gICAgICAgIGlmIChub2RlW1wieC1tb2RlXCJdKSB7XG4gICAgICAgICAgICBjbG9uZV8zW1wieC1tb2RlXCJdID0gbm9kZVtcIngtbW9kZVwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBjbG9uZV8zO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0RpcmVjdGl2ZShub2RlKSkge1xuICAgICAgICB2YXIgaW5zdHJ1Y3Rpb24gPSBuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5vZGUubmFtZSwgbm9kZS5kYXRhKTtcbiAgICAgICAgaWYgKG5vZGVbXCJ4LW5hbWVcIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bXCJ4LW5hbWVcIl0gPSBub2RlW1wieC1uYW1lXCJdO1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bXCJ4LXB1YmxpY0lkXCJdID0gbm9kZVtcIngtcHVibGljSWRcIl07XG4gICAgICAgICAgICBpbnN0cnVjdGlvbltcIngtc3lzdGVtSWRcIl0gPSBub2RlW1wieC1zeXN0ZW1JZFwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBpbnN0cnVjdGlvbjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZCB5ZXQ6IFwiLmNvbmNhdChub2RlLnR5cGUpKTtcbiAgICB9XG4gICAgcmVzdWx0LnN0YXJ0SW5kZXggPSBub2RlLnN0YXJ0SW5kZXg7XG4gICAgcmVzdWx0LmVuZEluZGV4ID0gbm9kZS5lbmRJbmRleDtcbiAgICBpZiAobm9kZS5zb3VyY2VDb2RlTG9jYXRpb24gIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQuc291cmNlQ29kZUxvY2F0aW9uID0gbm9kZS5zb3VyY2VDb2RlTG9jYXRpb247XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLmNsb25lTm9kZSA9IGNsb25lTm9kZTtcbmZ1bmN0aW9uIGNsb25lQ2hpbGRyZW4oY2hpbGRzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gY2hpbGRzLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIGNsb25lTm9kZShjaGlsZCwgdHJ1ZSk7IH0pO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hpbGRyZW5baV0ucHJldiA9IGNoaWxkcmVuW2kgLSAxXTtcbiAgICAgICAgY2hpbGRyZW5baSAtIDFdLm5leHQgPSBjaGlsZHJlbltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRvbUhhbmRsZXIgPSB2b2lkIDA7XG52YXIgZG9tZWxlbWVudHR5cGVfMSA9IHJlcXVpcmUoXCJkb21lbGVtZW50dHlwZVwiKTtcbnZhciBub2RlX2pzXzEgPSByZXF1aXJlKFwiLi9ub2RlLmpzXCIpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL25vZGUuanNcIiksIGV4cG9ydHMpO1xuLy8gRGVmYXVsdCBvcHRpb25zXG52YXIgZGVmYXVsdE9wdHMgPSB7XG4gICAgd2l0aFN0YXJ0SW5kaWNlczogZmFsc2UsXG4gICAgd2l0aEVuZEluZGljZXM6IGZhbHNlLFxuICAgIHhtbE1vZGU6IGZhbHNlLFxufTtcbnZhciBEb21IYW5kbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsZWQgb25jZSBwYXJzaW5nIGhhcyBjb21wbGV0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgU2V0dGluZ3MgZm9yIHRoZSBoYW5kbGVyLlxuICAgICAqIEBwYXJhbSBlbGVtZW50Q0IgQ2FsbGJhY2sgd2hlbmV2ZXIgYSB0YWcgaXMgY2xvc2VkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIERvbUhhbmRsZXIoY2FsbGJhY2ssIG9wdGlvbnMsIGVsZW1lbnRDQikge1xuICAgICAgICAvKiogVGhlIGVsZW1lbnRzIG9mIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5kb20gPSBbXTtcbiAgICAgICAgLyoqIFRoZSByb290IGVsZW1lbnQgZm9yIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5yb290ID0gbmV3IG5vZGVfanNfMS5Eb2N1bWVudCh0aGlzLmRvbSk7XG4gICAgICAgIC8qKiBJbmRpY2F0ZWQgd2hldGhlciBwYXJzaW5nIGhhcyBiZWVuIGNvbXBsZXRlZC4gKi9cbiAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIC8qKiBTdGFjayBvZiBvcGVuIHRhZ3MuICovXG4gICAgICAgIHRoaXMudGFnU3RhY2sgPSBbdGhpcy5yb290XTtcbiAgICAgICAgLyoqIEEgZGF0YSBub2RlIHRoYXQgaXMgc3RpbGwgYmVpbmcgd3JpdHRlbiB0by4gKi9cbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHBhcnNlciBpbnN0YW5jZS4gVXNlZCBmb3IgbG9jYXRpb24gaW5mb3JtYXRpb24uICovXG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICAgICAgLy8gTWFrZSBpdCBwb3NzaWJsZSB0byBza2lwIGFyZ3VtZW50cywgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBlbGVtZW50Q0IgPSBvcHRpb25zO1xuICAgICAgICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBjYWxsYmFjaztcbiAgICAgICAgICAgIGNhbGxiYWNrID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjayAhPT0gbnVsbCAmJiBjYWxsYmFjayAhPT0gdm9pZCAwID8gY2FsbGJhY2sgOiBudWxsO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCA/IG9wdGlvbnMgOiBkZWZhdWx0T3B0cztcbiAgICAgICAgdGhpcy5lbGVtZW50Q0IgPSBlbGVtZW50Q0IgIT09IG51bGwgJiYgZWxlbWVudENCICE9PSB2b2lkIDAgPyBlbGVtZW50Q0IgOiBudWxsO1xuICAgIH1cbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnBhcnNlcmluaXQgPSBmdW5jdGlvbiAocGFyc2VyKSB7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgIH07XG4gICAgLy8gUmVzZXRzIHRoZSBoYW5kbGVyIGJhY2sgdG8gc3RhcnRpbmcgc3RhdGVcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmRvbSA9IFtdO1xuICAgICAgICB0aGlzLnJvb3QgPSBuZXcgbm9kZV9qc18xLkRvY3VtZW50KHRoaXMuZG9tKTtcbiAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGFnU3RhY2sgPSBbdGhpcy5yb290XTtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICB9O1xuICAgIC8vIFNpZ25hbHMgdGhlIGhhbmRsZXIgdGhhdCBwYXJzaW5nIGlzIGRvbmVcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmhhbmRsZUNhbGxiYWNrKG51bGwpO1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25lcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICB0aGlzLmhhbmRsZUNhbGxiYWNrKGVycm9yKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY2xvc2V0YWcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgICAgICB2YXIgZWxlbSA9IHRoaXMudGFnU3RhY2sucG9wKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aEVuZEluZGljZXMpIHtcbiAgICAgICAgICAgIGVsZW0uZW5kSW5kZXggPSB0aGlzLnBhcnNlci5lbmRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbGVtZW50Q0IpXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRDQihlbGVtKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9ub3BlbnRhZyA9IGZ1bmN0aW9uIChuYW1lLCBhdHRyaWJzKSB7XG4gICAgICAgIHZhciB0eXBlID0gdGhpcy5vcHRpb25zLnhtbE1vZGUgPyBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlRhZyA6IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBuZXcgbm9kZV9qc18xLkVsZW1lbnQobmFtZSwgYXR0cmlicywgdW5kZWZpbmVkLCB0eXBlKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRhZ1N0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnRleHQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgbGFzdE5vZGUgPSB0aGlzLmxhc3ROb2RlO1xuICAgICAgICBpZiAobGFzdE5vZGUgJiYgbGFzdE5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UZXh0KSB7XG4gICAgICAgICAgICBsYXN0Tm9kZS5kYXRhICs9IGRhdGE7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhFbmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgICAgbGFzdE5vZGUuZW5kSW5kZXggPSB0aGlzLnBhcnNlci5lbmRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gbmV3IG5vZGVfanNfMS5UZXh0KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY29tbWVudCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmxhc3ROb2RlICYmIHRoaXMubGFzdE5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Db21tZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3ROb2RlLmRhdGEgKz0gZGF0YTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuQ29tbWVudChkYXRhKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICB0aGlzLmxhc3ROb2RlID0gbm9kZTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY29tbWVudGVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmNkYXRhc3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0ZXh0ID0gbmV3IG5vZGVfanNfMS5UZXh0KFwiXCIpO1xuICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuQ0RBVEEoW3RleHRdKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICB0ZXh0LnBhcmVudCA9IG5vZGU7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSB0ZXh0O1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25jZGF0YWVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbiA9IGZ1bmN0aW9uIChuYW1lLCBkYXRhKSB7XG4gICAgICAgIHZhciBub2RlID0gbmV3IG5vZGVfanNfMS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obmFtZSwgZGF0YSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLmhhbmRsZUNhbGxiYWNrID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrKGVycm9yLCB0aGlzLmRvbSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5hZGROb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMudGFnU3RhY2tbdGhpcy50YWdTdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgdmFyIHByZXZpb3VzU2libGluZyA9IHBhcmVudC5jaGlsZHJlbltwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aFN0YXJ0SW5kaWNlcykge1xuICAgICAgICAgICAgbm9kZS5zdGFydEluZGV4ID0gdGhpcy5wYXJzZXIuc3RhcnRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhFbmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBub2RlLmVuZEluZGV4ID0gdGhpcy5wYXJzZXIuZW5kSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgIGlmIChwcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgICAgIG5vZGUucHJldiA9IHByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIHByZXZpb3VzU2libGluZy5uZXh0ID0gbm9kZTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gRG9tSGFuZGxlcjtcbn0oKSk7XG5leHBvcnRzLkRvbUhhbmRsZXIgPSBEb21IYW5kbGVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gRG9tSGFuZGxlcjtcbiIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYXR0cmlidXRlTmFtZXMgPSBleHBvcnRzLmVsZW1lbnROYW1lcyA9IHZvaWQgMDtcbmV4cG9ydHMuZWxlbWVudE5hbWVzID0gbmV3IE1hcChbXG4gICAgXCJhbHRHbHlwaFwiLFxuICAgIFwiYWx0R2x5cGhEZWZcIixcbiAgICBcImFsdEdseXBoSXRlbVwiLFxuICAgIFwiYW5pbWF0ZUNvbG9yXCIsXG4gICAgXCJhbmltYXRlTW90aW9uXCIsXG4gICAgXCJhbmltYXRlVHJhbnNmb3JtXCIsXG4gICAgXCJjbGlwUGF0aFwiLFxuICAgIFwiZmVCbGVuZFwiLFxuICAgIFwiZmVDb2xvck1hdHJpeFwiLFxuICAgIFwiZmVDb21wb25lbnRUcmFuc2ZlclwiLFxuICAgIFwiZmVDb21wb3NpdGVcIixcbiAgICBcImZlQ29udm9sdmVNYXRyaXhcIixcbiAgICBcImZlRGlmZnVzZUxpZ2h0aW5nXCIsXG4gICAgXCJmZURpc3BsYWNlbWVudE1hcFwiLFxuICAgIFwiZmVEaXN0YW50TGlnaHRcIixcbiAgICBcImZlRHJvcFNoYWRvd1wiLFxuICAgIFwiZmVGbG9vZFwiLFxuICAgIFwiZmVGdW5jQVwiLFxuICAgIFwiZmVGdW5jQlwiLFxuICAgIFwiZmVGdW5jR1wiLFxuICAgIFwiZmVGdW5jUlwiLFxuICAgIFwiZmVHYXVzc2lhbkJsdXJcIixcbiAgICBcImZlSW1hZ2VcIixcbiAgICBcImZlTWVyZ2VcIixcbiAgICBcImZlTWVyZ2VOb2RlXCIsXG4gICAgXCJmZU1vcnBob2xvZ3lcIixcbiAgICBcImZlT2Zmc2V0XCIsXG4gICAgXCJmZVBvaW50TGlnaHRcIixcbiAgICBcImZlU3BlY3VsYXJMaWdodGluZ1wiLFxuICAgIFwiZmVTcG90TGlnaHRcIixcbiAgICBcImZlVGlsZVwiLFxuICAgIFwiZmVUdXJidWxlbmNlXCIsXG4gICAgXCJmb3JlaWduT2JqZWN0XCIsXG4gICAgXCJnbHlwaFJlZlwiLFxuICAgIFwibGluZWFyR3JhZGllbnRcIixcbiAgICBcInJhZGlhbEdyYWRpZW50XCIsXG4gICAgXCJ0ZXh0UGF0aFwiLFxuXS5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gW3ZhbC50b0xvd2VyQ2FzZSgpLCB2YWxdOyB9KSk7XG5leHBvcnRzLmF0dHJpYnV0ZU5hbWVzID0gbmV3IE1hcChbXG4gICAgXCJkZWZpbml0aW9uVVJMXCIsXG4gICAgXCJhdHRyaWJ1dGVOYW1lXCIsXG4gICAgXCJhdHRyaWJ1dGVUeXBlXCIsXG4gICAgXCJiYXNlRnJlcXVlbmN5XCIsXG4gICAgXCJiYXNlUHJvZmlsZVwiLFxuICAgIFwiY2FsY01vZGVcIixcbiAgICBcImNsaXBQYXRoVW5pdHNcIixcbiAgICBcImRpZmZ1c2VDb25zdGFudFwiLFxuICAgIFwiZWRnZU1vZGVcIixcbiAgICBcImZpbHRlclVuaXRzXCIsXG4gICAgXCJnbHlwaFJlZlwiLFxuICAgIFwiZ3JhZGllbnRUcmFuc2Zvcm1cIixcbiAgICBcImdyYWRpZW50VW5pdHNcIixcbiAgICBcImtlcm5lbE1hdHJpeFwiLFxuICAgIFwia2VybmVsVW5pdExlbmd0aFwiLFxuICAgIFwia2V5UG9pbnRzXCIsXG4gICAgXCJrZXlTcGxpbmVzXCIsXG4gICAgXCJrZXlUaW1lc1wiLFxuICAgIFwibGVuZ3RoQWRqdXN0XCIsXG4gICAgXCJsaW1pdGluZ0NvbmVBbmdsZVwiLFxuICAgIFwibWFya2VySGVpZ2h0XCIsXG4gICAgXCJtYXJrZXJVbml0c1wiLFxuICAgIFwibWFya2VyV2lkdGhcIixcbiAgICBcIm1hc2tDb250ZW50VW5pdHNcIixcbiAgICBcIm1hc2tVbml0c1wiLFxuICAgIFwibnVtT2N0YXZlc1wiLFxuICAgIFwicGF0aExlbmd0aFwiLFxuICAgIFwicGF0dGVybkNvbnRlbnRVbml0c1wiLFxuICAgIFwicGF0dGVyblRyYW5zZm9ybVwiLFxuICAgIFwicGF0dGVyblVuaXRzXCIsXG4gICAgXCJwb2ludHNBdFhcIixcbiAgICBcInBvaW50c0F0WVwiLFxuICAgIFwicG9pbnRzQXRaXCIsXG4gICAgXCJwcmVzZXJ2ZUFscGhhXCIsXG4gICAgXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsXG4gICAgXCJwcmltaXRpdmVVbml0c1wiLFxuICAgIFwicmVmWFwiLFxuICAgIFwicmVmWVwiLFxuICAgIFwicmVwZWF0Q291bnRcIixcbiAgICBcInJlcGVhdER1clwiLFxuICAgIFwicmVxdWlyZWRFeHRlbnNpb25zXCIsXG4gICAgXCJyZXF1aXJlZEZlYXR1cmVzXCIsXG4gICAgXCJzcGVjdWxhckNvbnN0YW50XCIsXG4gICAgXCJzcGVjdWxhckV4cG9uZW50XCIsXG4gICAgXCJzcHJlYWRNZXRob2RcIixcbiAgICBcInN0YXJ0T2Zmc2V0XCIsXG4gICAgXCJzdGREZXZpYXRpb25cIixcbiAgICBcInN0aXRjaFRpbGVzXCIsXG4gICAgXCJzdXJmYWNlU2NhbGVcIixcbiAgICBcInN5c3RlbUxhbmd1YWdlXCIsXG4gICAgXCJ0YWJsZVZhbHVlc1wiLFxuICAgIFwidGFyZ2V0WFwiLFxuICAgIFwidGFyZ2V0WVwiLFxuICAgIFwidGV4dExlbmd0aFwiLFxuICAgIFwidmlld0JveFwiLFxuICAgIFwidmlld1RhcmdldFwiLFxuICAgIFwieENoYW5uZWxTZWxlY3RvclwiLFxuICAgIFwieUNoYW5uZWxTZWxlY3RvclwiLFxuICAgIFwiem9vbUFuZFBhblwiLFxuXS5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gW3ZhbC50b0xvd2VyQ2FzZSgpLCB2YWxdOyB9KSk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdCkgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcbn0pIDogZnVuY3Rpb24obywgdikge1xuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcbn0pO1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlbmRlciA9IHZvaWQgMDtcbi8qXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzXG4gKi9cbnZhciBFbGVtZW50VHlwZSA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiZG9tZWxlbWVudHR5cGVcIikpO1xudmFyIGVudGl0aWVzXzEgPSByZXF1aXJlKFwiZW50aXRpZXNcIik7XG4vKipcbiAqIE1peGVkLWNhc2UgU1ZHIGFuZCBNYXRoTUwgdGFncyAmIGF0dHJpYnV0ZXNcbiAqIHJlY29nbml6ZWQgYnkgdGhlIEhUTUwgcGFyc2VyLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbiAqL1xudmFyIGZvcmVpZ25OYW1lc19qc18xID0gcmVxdWlyZShcIi4vZm9yZWlnbk5hbWVzLmpzXCIpO1xudmFyIHVuZW5jb2RlZEVsZW1lbnRzID0gbmV3IFNldChbXG4gICAgXCJzdHlsZVwiLFxuICAgIFwic2NyaXB0XCIsXG4gICAgXCJ4bXBcIixcbiAgICBcImlmcmFtZVwiLFxuICAgIFwibm9lbWJlZFwiLFxuICAgIFwibm9mcmFtZXNcIixcbiAgICBcInBsYWludGV4dFwiLFxuICAgIFwibm9zY3JpcHRcIixcbl0pO1xuZnVuY3Rpb24gcmVwbGFjZVF1b3Rlcyh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKTtcbn1cbi8qKlxuICogRm9ybWF0IGF0dHJpYnV0ZXNcbiAqL1xuZnVuY3Rpb24gZm9ybWF0QXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBvcHRzKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICghYXR0cmlidXRlcylcbiAgICAgICAgcmV0dXJuO1xuICAgIHZhciBlbmNvZGUgPSAoKF9hID0gb3B0cy5lbmNvZGVFbnRpdGllcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogb3B0cy5kZWNvZGVFbnRpdGllcykgPT09IGZhbHNlXG4gICAgICAgID8gcmVwbGFjZVF1b3Rlc1xuICAgICAgICA6IG9wdHMueG1sTW9kZSB8fCBvcHRzLmVuY29kZUVudGl0aWVzICE9PSBcInV0ZjhcIlxuICAgICAgICAgICAgPyBlbnRpdGllc18xLmVuY29kZVhNTFxuICAgICAgICAgICAgOiBlbnRpdGllc18xLmVzY2FwZUF0dHJpYnV0ZTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYXR0cmlidXRlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHZhciB2YWx1ZSA9IChfYSA9IGF0dHJpYnV0ZXNba2V5XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogXCJcIjtcbiAgICAgICAgaWYgKG9wdHMueG1sTW9kZSA9PT0gXCJmb3JlaWduXCIpIHtcbiAgICAgICAgICAgIC8qIEZpeCB1cCBtaXhlZC1jYXNlIGF0dHJpYnV0ZSBuYW1lcyAqL1xuICAgICAgICAgICAga2V5ID0gKF9iID0gZm9yZWlnbk5hbWVzX2pzXzEuYXR0cmlidXRlTmFtZXMuZ2V0KGtleSkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdHMuZW1wdHlBdHRycyAmJiAhb3B0cy54bWxNb2RlICYmIHZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChrZXksIFwiPVxcXCJcIikuY29uY2F0KGVuY29kZSh2YWx1ZSksIFwiXFxcIlwiKTtcbiAgICB9KVxuICAgICAgICAuam9pbihcIiBcIik7XG59XG4vKipcbiAqIFNlbGYtZW5jbG9zaW5nIHRhZ3NcbiAqL1xudmFyIHNpbmdsZVRhZyA9IG5ldyBTZXQoW1xuICAgIFwiYXJlYVwiLFxuICAgIFwiYmFzZVwiLFxuICAgIFwiYmFzZWZvbnRcIixcbiAgICBcImJyXCIsXG4gICAgXCJjb2xcIixcbiAgICBcImNvbW1hbmRcIixcbiAgICBcImVtYmVkXCIsXG4gICAgXCJmcmFtZVwiLFxuICAgIFwiaHJcIixcbiAgICBcImltZ1wiLFxuICAgIFwiaW5wdXRcIixcbiAgICBcImlzaW5kZXhcIixcbiAgICBcImtleWdlblwiLFxuICAgIFwibGlua1wiLFxuICAgIFwibWV0YVwiLFxuICAgIFwicGFyYW1cIixcbiAgICBcInNvdXJjZVwiLFxuICAgIFwidHJhY2tcIixcbiAgICBcIndiclwiLFxuXSk7XG4vKipcbiAqIFJlbmRlcnMgYSBET00gbm9kZSBvciBhbiBhcnJheSBvZiBET00gbm9kZXMgdG8gYSBzdHJpbmcuXG4gKlxuICogQ2FuIGJlIHRob3VnaHQgb2YgYXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIGBvdXRlckhUTUxgIG9mIHRoZSBwYXNzZWQgbm9kZShzKS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGJlIHJlbmRlcmVkLlxuICogQHBhcmFtIG9wdGlvbnMgQ2hhbmdlcyBzZXJpYWxpemF0aW9uIGJlaGF2aW9yXG4gKi9cbmZ1bmN0aW9uIHJlbmRlcihub2RlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgbm9kZXMgPSBcImxlbmd0aFwiIGluIG5vZGUgPyBub2RlIDogW25vZGVdO1xuICAgIHZhciBvdXRwdXQgPSBcIlwiO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0cHV0ICs9IHJlbmRlck5vZGUobm9kZXNbaV0sIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuZXhwb3J0cy5yZW5kZXIgPSByZW5kZXI7XG5leHBvcnRzLmRlZmF1bHQgPSByZW5kZXI7XG5mdW5jdGlvbiByZW5kZXJOb2RlKG5vZGUsIG9wdGlvbnMpIHtcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLlJvb3Q6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyKG5vZGUuY2hpbGRyZW4sIG9wdGlvbnMpO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFdlIGRvbid0IHVzZSBgRG9jdHlwZWAgeWV0XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuRG9jdHlwZTpcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5EaXJlY3RpdmU6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyRGlyZWN0aXZlKG5vZGUpO1xuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLkNvbW1lbnQ6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyQ29tbWVudChub2RlKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5DREFUQTpcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJDZGF0YShub2RlKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5TY3JpcHQ6XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuU3R5bGU6XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuVGFnOlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRhZyhub2RlLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5UZXh0OlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHQobm9kZSwgb3B0aW9ucyk7XG4gICAgfVxufVxudmFyIGZvcmVpZ25Nb2RlSW50ZWdyYXRpb25Qb2ludHMgPSBuZXcgU2V0KFtcbiAgICBcIm1pXCIsXG4gICAgXCJtb1wiLFxuICAgIFwibW5cIixcbiAgICBcIm1zXCIsXG4gICAgXCJtdGV4dFwiLFxuICAgIFwiYW5ub3RhdGlvbi14bWxcIixcbiAgICBcImZvcmVpZ25PYmplY3RcIixcbiAgICBcImRlc2NcIixcbiAgICBcInRpdGxlXCIsXG5dKTtcbnZhciBmb3JlaWduRWxlbWVudHMgPSBuZXcgU2V0KFtcInN2Z1wiLCBcIm1hdGhcIl0pO1xuZnVuY3Rpb24gcmVuZGVyVGFnKGVsZW0sIG9wdHMpIHtcbiAgICB2YXIgX2E7XG4gICAgLy8gSGFuZGxlIFNWRyAvIE1hdGhNTCBpbiBIVE1MXG4gICAgaWYgKG9wdHMueG1sTW9kZSA9PT0gXCJmb3JlaWduXCIpIHtcbiAgICAgICAgLyogRml4IHVwIG1peGVkLWNhc2UgZWxlbWVudCBuYW1lcyAqL1xuICAgICAgICBlbGVtLm5hbWUgPSAoX2EgPSBmb3JlaWduTmFtZXNfanNfMS5lbGVtZW50TmFtZXMuZ2V0KGVsZW0ubmFtZSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGVsZW0ubmFtZTtcbiAgICAgICAgLyogRXhpdCBmb3JlaWduIG1vZGUgYXQgaW50ZWdyYXRpb24gcG9pbnRzICovXG4gICAgICAgIGlmIChlbGVtLnBhcmVudCAmJlxuICAgICAgICAgICAgZm9yZWlnbk1vZGVJbnRlZ3JhdGlvblBvaW50cy5oYXMoZWxlbS5wYXJlbnQubmFtZSkpIHtcbiAgICAgICAgICAgIG9wdHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0cyksIHsgeG1sTW9kZTogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFvcHRzLnhtbE1vZGUgJiYgZm9yZWlnbkVsZW1lbnRzLmhhcyhlbGVtLm5hbWUpKSB7XG4gICAgICAgIG9wdHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0cyksIHsgeG1sTW9kZTogXCJmb3JlaWduXCIgfSk7XG4gICAgfVxuICAgIHZhciB0YWcgPSBcIjxcIi5jb25jYXQoZWxlbS5uYW1lKTtcbiAgICB2YXIgYXR0cmlicyA9IGZvcm1hdEF0dHJpYnV0ZXMoZWxlbS5hdHRyaWJzLCBvcHRzKTtcbiAgICBpZiAoYXR0cmlicykge1xuICAgICAgICB0YWcgKz0gXCIgXCIuY29uY2F0KGF0dHJpYnMpO1xuICAgIH1cbiAgICBpZiAoZWxlbS5jaGlsZHJlbi5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgKG9wdHMueG1sTW9kZVxuICAgICAgICAgICAgPyAvLyBJbiBYTUwgbW9kZSBvciBmb3JlaWduIG1vZGUsIGFuZCB1c2VyIGhhc24ndCBleHBsaWNpdGx5IHR1cm5lZCBvZmYgc2VsZi1jbG9zaW5nIHRhZ3NcbiAgICAgICAgICAgICAgICBvcHRzLnNlbGZDbG9zaW5nVGFncyAhPT0gZmFsc2VcbiAgICAgICAgICAgIDogLy8gVXNlciBleHBsaWNpdGx5IGFza2VkIGZvciBzZWxmLWNsb3NpbmcgdGFncywgZXZlbiBpbiBIVE1MIG1vZGVcbiAgICAgICAgICAgICAgICBvcHRzLnNlbGZDbG9zaW5nVGFncyAmJiBzaW5nbGVUYWcuaGFzKGVsZW0ubmFtZSkpKSB7XG4gICAgICAgIGlmICghb3B0cy54bWxNb2RlKVxuICAgICAgICAgICAgdGFnICs9IFwiIFwiO1xuICAgICAgICB0YWcgKz0gXCIvPlwiO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFnICs9IFwiPlwiO1xuICAgICAgICBpZiAoZWxlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0YWcgKz0gcmVuZGVyKGVsZW0uY2hpbGRyZW4sIG9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLnhtbE1vZGUgfHwgIXNpbmdsZVRhZy5oYXMoZWxlbS5uYW1lKSkge1xuICAgICAgICAgICAgdGFnICs9IFwiPC9cIi5jb25jYXQoZWxlbS5uYW1lLCBcIj5cIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhZztcbn1cbmZ1bmN0aW9uIHJlbmRlckRpcmVjdGl2ZShlbGVtKSB7XG4gICAgcmV0dXJuIFwiPFwiLmNvbmNhdChlbGVtLmRhdGEsIFwiPlwiKTtcbn1cbmZ1bmN0aW9uIHJlbmRlclRleHQoZWxlbSwgb3B0cykge1xuICAgIHZhciBfYTtcbiAgICB2YXIgZGF0YSA9IGVsZW0uZGF0YSB8fCBcIlwiO1xuICAgIC8vIElmIGVudGl0aWVzIHdlcmVuJ3QgZGVjb2RlZCwgbm8gbmVlZCB0byBlbmNvZGUgdGhlbSBiYWNrXG4gICAgaWYgKCgoX2EgPSBvcHRzLmVuY29kZUVudGl0aWVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBvcHRzLmRlY29kZUVudGl0aWVzKSAhPT0gZmFsc2UgJiZcbiAgICAgICAgISghb3B0cy54bWxNb2RlICYmXG4gICAgICAgICAgICBlbGVtLnBhcmVudCAmJlxuICAgICAgICAgICAgdW5lbmNvZGVkRWxlbWVudHMuaGFzKGVsZW0ucGFyZW50Lm5hbWUpKSkge1xuICAgICAgICBkYXRhID1cbiAgICAgICAgICAgIG9wdHMueG1sTW9kZSB8fCBvcHRzLmVuY29kZUVudGl0aWVzICE9PSBcInV0ZjhcIlxuICAgICAgICAgICAgICAgID8gKDAsIGVudGl0aWVzXzEuZW5jb2RlWE1MKShkYXRhKVxuICAgICAgICAgICAgICAgIDogKDAsIGVudGl0aWVzXzEuZXNjYXBlVGV4dCkoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xufVxuZnVuY3Rpb24gcmVuZGVyQ2RhdGEoZWxlbSkge1xuICAgIHJldHVybiBcIjwhW0NEQVRBW1wiLmNvbmNhdChlbGVtLmNoaWxkcmVuWzBdLmRhdGEsIFwiXV0+XCIpO1xufVxuZnVuY3Rpb24gcmVuZGVyQ29tbWVudChlbGVtKSB7XG4gICAgcmV0dXJuIFwiPCEtLVwiLmNvbmNhdChlbGVtLmRhdGEsIFwiLS0+XCIpO1xufVxuIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BdHRyaWJ1dGVBY3Rpb24gPSBleHBvcnRzLklnbm9yZUNhc2VNb2RlID0gZXhwb3J0cy5TZWxlY3RvclR5cGUgPSB2b2lkIDA7XG52YXIgU2VsZWN0b3JUeXBlO1xuKGZ1bmN0aW9uIChTZWxlY3RvclR5cGUpIHtcbiAgICBTZWxlY3RvclR5cGVbXCJBdHRyaWJ1dGVcIl0gPSBcImF0dHJpYnV0ZVwiO1xuICAgIFNlbGVjdG9yVHlwZVtcIlBzZXVkb1wiXSA9IFwicHNldWRvXCI7XG4gICAgU2VsZWN0b3JUeXBlW1wiUHNldWRvRWxlbWVudFwiXSA9IFwicHNldWRvLWVsZW1lbnRcIjtcbiAgICBTZWxlY3RvclR5cGVbXCJUYWdcIl0gPSBcInRhZ1wiO1xuICAgIFNlbGVjdG9yVHlwZVtcIlVuaXZlcnNhbFwiXSA9IFwidW5pdmVyc2FsXCI7XG4gICAgLy8gVHJhdmVyc2Fsc1xuICAgIFNlbGVjdG9yVHlwZVtcIkFkamFjZW50XCJdID0gXCJhZGphY2VudFwiO1xuICAgIFNlbGVjdG9yVHlwZVtcIkNoaWxkXCJdID0gXCJjaGlsZFwiO1xuICAgIFNlbGVjdG9yVHlwZVtcIkRlc2NlbmRhbnRcIl0gPSBcImRlc2NlbmRhbnRcIjtcbiAgICBTZWxlY3RvclR5cGVbXCJQYXJlbnRcIl0gPSBcInBhcmVudFwiO1xuICAgIFNlbGVjdG9yVHlwZVtcIlNpYmxpbmdcIl0gPSBcInNpYmxpbmdcIjtcbiAgICBTZWxlY3RvclR5cGVbXCJDb2x1bW5Db21iaW5hdG9yXCJdID0gXCJjb2x1bW4tY29tYmluYXRvclwiO1xufSkoU2VsZWN0b3JUeXBlID0gZXhwb3J0cy5TZWxlY3RvclR5cGUgfHwgKGV4cG9ydHMuU2VsZWN0b3JUeXBlID0ge30pKTtcbi8qKlxuICogTW9kZXMgZm9yIGlnbm9yZSBjYXNlLlxuICpcbiAqIFRoaXMgY291bGQgYmUgdXBkYXRlZCB0byBhbiBlbnVtLCBhbmQgdGhlIG9iamVjdCBpc1xuICogdGhlIGN1cnJlbnQgc3RhbmQtaW4gdGhhdCB3aWxsIGFsbG93IGNvZGUgdG8gYmUgdXBkYXRlZFxuICogd2l0aG91dCBiaWcgY2hhbmdlcy5cbiAqL1xuZXhwb3J0cy5JZ25vcmVDYXNlTW9kZSA9IHtcbiAgICBVbmtub3duOiBudWxsLFxuICAgIFF1aXJrc01vZGU6IFwicXVpcmtzXCIsXG4gICAgSWdub3JlQ2FzZTogdHJ1ZSxcbiAgICBDYXNlU2Vuc2l0aXZlOiBmYWxzZSxcbn07XG52YXIgQXR0cmlidXRlQWN0aW9uO1xuKGZ1bmN0aW9uIChBdHRyaWJ1dGVBY3Rpb24pIHtcbiAgICBBdHRyaWJ1dGVBY3Rpb25bXCJBbnlcIl0gPSBcImFueVwiO1xuICAgIEF0dHJpYnV0ZUFjdGlvbltcIkVsZW1lbnRcIl0gPSBcImVsZW1lbnRcIjtcbiAgICBBdHRyaWJ1dGVBY3Rpb25bXCJFbmRcIl0gPSBcImVuZFwiO1xuICAgIEF0dHJpYnV0ZUFjdGlvbltcIkVxdWFsc1wiXSA9IFwiZXF1YWxzXCI7XG4gICAgQXR0cmlidXRlQWN0aW9uW1wiRXhpc3RzXCJdID0gXCJleGlzdHNcIjtcbiAgICBBdHRyaWJ1dGVBY3Rpb25bXCJIeXBoZW5cIl0gPSBcImh5cGhlblwiO1xuICAgIEF0dHJpYnV0ZUFjdGlvbltcIk5vdFwiXSA9IFwibm90XCI7XG4gICAgQXR0cmlidXRlQWN0aW9uW1wiU3RhcnRcIl0gPSBcInN0YXJ0XCI7XG59KShBdHRyaWJ1dGVBY3Rpb24gPSBleHBvcnRzLkF0dHJpYnV0ZUFjdGlvbiB8fCAoZXhwb3J0cy5BdHRyaWJ1dGVBY3Rpb24gPSB7fSkpO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZSA9IGV4cG9ydHMuaXNUcmF2ZXJzYWwgPSB2b2lkIDA7XG52YXIgdHlwZXNfMSA9IHJlcXVpcmUoXCIuL3R5cGVzXCIpO1xudmFyIHJlTmFtZSA9IC9eW15cXFxcI10/KD86XFxcXCg/OltcXGRhLWZdezEsNn1cXHM/fC4pfFtcXHdcXC1cXHUwMGIwLVxcdUZGRkZdKSsvO1xudmFyIHJlRXNjYXBlID0gL1xcXFwoW1xcZGEtZl17MSw2fVxccz98KFxccyl8LikvZ2k7XG52YXIgYWN0aW9uVHlwZXMgPSBuZXcgTWFwKFtcbiAgICBbMTI2IC8qIFRpbGRlICovLCB0eXBlc18xLkF0dHJpYnV0ZUFjdGlvbi5FbGVtZW50XSxcbiAgICBbOTQgLyogQ2lyY3VtZmxleCAqLywgdHlwZXNfMS5BdHRyaWJ1dGVBY3Rpb24uU3RhcnRdLFxuICAgIFszNiAvKiBEb2xsYXIgKi8sIHR5cGVzXzEuQXR0cmlidXRlQWN0aW9uLkVuZF0sXG4gICAgWzQyIC8qIEFzdGVyaXNrICovLCB0eXBlc18xLkF0dHJpYnV0ZUFjdGlvbi5BbnldLFxuICAgIFszMyAvKiBFeGNsYW1hdGlvbk1hcmsgKi8sIHR5cGVzXzEuQXR0cmlidXRlQWN0aW9uLk5vdF0sXG4gICAgWzEyNCAvKiBQaXBlICovLCB0eXBlc18xLkF0dHJpYnV0ZUFjdGlvbi5IeXBoZW5dLFxuXSk7XG4vLyBQc2V1ZG9zLCB3aG9zZSBkYXRhIHByb3BlcnR5IGlzIHBhcnNlZCBhcyB3ZWxsLlxudmFyIHVucGFja1BzZXVkb3MgPSBuZXcgU2V0KFtcbiAgICBcImhhc1wiLFxuICAgIFwibm90XCIsXG4gICAgXCJtYXRjaGVzXCIsXG4gICAgXCJpc1wiLFxuICAgIFwid2hlcmVcIixcbiAgICBcImhvc3RcIixcbiAgICBcImhvc3QtY29udGV4dFwiLFxuXSk7XG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgc3BlY2lmaWMgc2VsZWN0b3IgaXMgYSB0cmF2ZXJzYWwuXG4gKiBUaGlzIGlzIHVzZWZ1bCBlZy4gaW4gc3dhcHBpbmcgdGhlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXRcbiAqIGFyZSBub3QgdHJhdmVyc2Fscy5cbiAqXG4gKiBAcGFyYW0gc2VsZWN0b3IgU2VsZWN0b3IgdG8gY2hlY2suXG4gKi9cbmZ1bmN0aW9uIGlzVHJhdmVyc2FsKHNlbGVjdG9yKSB7XG4gICAgc3dpdGNoIChzZWxlY3Rvci50eXBlKSB7XG4gICAgICAgIGNhc2UgdHlwZXNfMS5TZWxlY3RvclR5cGUuQWRqYWNlbnQ6XG4gICAgICAgIGNhc2UgdHlwZXNfMS5TZWxlY3RvclR5cGUuQ2hpbGQ6XG4gICAgICAgIGNhc2UgdHlwZXNfMS5TZWxlY3RvclR5cGUuRGVzY2VuZGFudDpcbiAgICAgICAgY2FzZSB0eXBlc18xLlNlbGVjdG9yVHlwZS5QYXJlbnQ6XG4gICAgICAgIGNhc2UgdHlwZXNfMS5TZWxlY3RvclR5cGUuU2libGluZzpcbiAgICAgICAgY2FzZSB0eXBlc18xLlNlbGVjdG9yVHlwZS5Db2x1bW5Db21iaW5hdG9yOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0cy5pc1RyYXZlcnNhbCA9IGlzVHJhdmVyc2FsO1xudmFyIHN0cmlwUXVvdGVzRnJvbVBzZXVkb3MgPSBuZXcgU2V0KFtcImNvbnRhaW5zXCIsIFwiaWNvbnRhaW5zXCJdKTtcbi8vIFVuZXNjYXBlIGZ1bmN0aW9uIHRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9zaXp6bGUvYmxvYi9tYXN0ZXIvc3JjL3NpenpsZS5qcyNMMTUyXG5mdW5jdGlvbiBmdW5lc2NhcGUoXywgZXNjYXBlZCwgZXNjYXBlZFdoaXRlc3BhY2UpIHtcbiAgICB2YXIgaGlnaCA9IHBhcnNlSW50KGVzY2FwZWQsIDE2KSAtIDB4MTAwMDA7XG4gICAgLy8gTmFOIG1lYW5zIG5vbi1jb2RlcG9pbnRcbiAgICByZXR1cm4gaGlnaCAhPT0gaGlnaCB8fCBlc2NhcGVkV2hpdGVzcGFjZVxuICAgICAgICA/IGVzY2FwZWRcbiAgICAgICAgOiBoaWdoIDwgMFxuICAgICAgICAgICAgPyAvLyBCTVAgY29kZXBvaW50XG4gICAgICAgICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZShoaWdoICsgMHgxMDAwMClcbiAgICAgICAgICAgIDogLy8gU3VwcGxlbWVudGFsIFBsYW5lIGNvZGVwb2ludCAoc3Vycm9nYXRlIHBhaXIpXG4gICAgICAgICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgoaGlnaCA+PiAxMCkgfCAweGQ4MDAsIChoaWdoICYgMHgzZmYpIHwgMHhkYzAwKTtcbn1cbmZ1bmN0aW9uIHVuZXNjYXBlQ1NTKHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZShyZUVzY2FwZSwgZnVuZXNjYXBlKTtcbn1cbmZ1bmN0aW9uIGlzUXVvdGUoYykge1xuICAgIHJldHVybiBjID09PSAzOSAvKiBTaW5nbGVRdW90ZSAqLyB8fCBjID09PSAzNCAvKiBEb3VibGVRdW90ZSAqLztcbn1cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjKSB7XG4gICAgcmV0dXJuIChjID09PSAzMiAvKiBTcGFjZSAqLyB8fFxuICAgICAgICBjID09PSA5IC8qIFRhYiAqLyB8fFxuICAgICAgICBjID09PSAxMCAvKiBOZXdMaW5lICovIHx8XG4gICAgICAgIGMgPT09IDEyIC8qIEZvcm1GZWVkICovIHx8XG4gICAgICAgIGMgPT09IDEzIC8qIENhcnJpYWdlUmV0dXJuICovKTtcbn1cbi8qKlxuICogUGFyc2VzIGBzZWxlY3RvcmAsIG9wdGlvbmFsbHkgd2l0aCB0aGUgcGFzc2VkIGBvcHRpb25zYC5cbiAqXG4gKiBAcGFyYW0gc2VsZWN0b3IgU2VsZWN0b3IgdG8gcGFyc2UuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBwYXJzaW5nLlxuICogQHJldHVybnMgUmV0dXJucyBhIHR3by1kaW1lbnNpb25hbCBhcnJheS5cbiAqIFRoZSBmaXJzdCBkaW1lbnNpb24gcmVwcmVzZW50cyBzZWxlY3RvcnMgc2VwYXJhdGVkIGJ5IGNvbW1hcyAoZWcuIGBzdWIxLCBzdWIyYCksXG4gKiB0aGUgc2Vjb25kIGNvbnRhaW5zIHRoZSByZWxldmFudCB0b2tlbnMgZm9yIHRoYXQgc2VsZWN0b3IuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKHNlbGVjdG9yKSB7XG4gICAgdmFyIHN1YnNlbGVjdHMgPSBbXTtcbiAgICB2YXIgZW5kSW5kZXggPSBwYXJzZVNlbGVjdG9yKHN1YnNlbGVjdHMsIFwiXCIuY29uY2F0KHNlbGVjdG9yKSwgMCk7XG4gICAgaWYgKGVuZEluZGV4IDwgc2VsZWN0b3IubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVubWF0Y2hlZCBzZWxlY3RvcjogXCIuY29uY2F0KHNlbGVjdG9yLnNsaWNlKGVuZEluZGV4KSkpO1xuICAgIH1cbiAgICByZXR1cm4gc3Vic2VsZWN0cztcbn1cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbmZ1bmN0aW9uIHBhcnNlU2VsZWN0b3Ioc3Vic2VsZWN0cywgc2VsZWN0b3IsIHNlbGVjdG9ySW5kZXgpIHtcbiAgICB2YXIgdG9rZW5zID0gW107XG4gICAgZnVuY3Rpb24gZ2V0TmFtZShvZmZzZXQpIHtcbiAgICAgICAgdmFyIG1hdGNoID0gc2VsZWN0b3Iuc2xpY2Uoc2VsZWN0b3JJbmRleCArIG9mZnNldCkubWF0Y2gocmVOYW1lKTtcbiAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbmFtZSwgZm91bmQgXCIuY29uY2F0KHNlbGVjdG9yLnNsaWNlKHNlbGVjdG9ySW5kZXgpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSBtYXRjaFswXTtcbiAgICAgICAgc2VsZWN0b3JJbmRleCArPSBvZmZzZXQgKyBuYW1lLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHVuZXNjYXBlQ1NTKG5hbWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzdHJpcFdoaXRlc3BhY2Uob2Zmc2V0KSB7XG4gICAgICAgIHNlbGVjdG9ySW5kZXggKz0gb2Zmc2V0O1xuICAgICAgICB3aGlsZSAoc2VsZWN0b3JJbmRleCA8IHNlbGVjdG9yLmxlbmd0aCAmJlxuICAgICAgICAgICAgaXNXaGl0ZXNwYWNlKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCkpKSB7XG4gICAgICAgICAgICBzZWxlY3RvckluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVhZFZhbHVlV2l0aFBhcmVudGhlc2lzKCkge1xuICAgICAgICBzZWxlY3RvckluZGV4ICs9IDE7XG4gICAgICAgIHZhciBzdGFydCA9IHNlbGVjdG9ySW5kZXg7XG4gICAgICAgIHZhciBjb3VudGVyID0gMTtcbiAgICAgICAgZm9yICg7IGNvdW50ZXIgPiAwICYmIHNlbGVjdG9ySW5kZXggPCBzZWxlY3Rvci5sZW5ndGg7IHNlbGVjdG9ySW5kZXgrKykge1xuICAgICAgICAgICAgaWYgKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCkgPT09XG4gICAgICAgICAgICAgICAgNDAgLyogTGVmdFBhcmVudGhlc2lzICovICYmXG4gICAgICAgICAgICAgICAgIWlzRXNjYXBlZChzZWxlY3RvckluZGV4KSkge1xuICAgICAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCkgPT09XG4gICAgICAgICAgICAgICAgNDEgLyogUmlnaHRQYXJlbnRoZXNpcyAqLyAmJlxuICAgICAgICAgICAgICAgICFpc0VzY2FwZWQoc2VsZWN0b3JJbmRleCkpIHtcbiAgICAgICAgICAgICAgICBjb3VudGVyLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvdW50ZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcmVudGhlc2lzIG5vdCBtYXRjaGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmVzY2FwZUNTUyhzZWxlY3Rvci5zbGljZShzdGFydCwgc2VsZWN0b3JJbmRleCAtIDEpKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaXNFc2NhcGVkKHBvcykge1xuICAgICAgICB2YXIgc2xhc2hDb3VudCA9IDA7XG4gICAgICAgIHdoaWxlIChzZWxlY3Rvci5jaGFyQ29kZUF0KC0tcG9zKSA9PT0gOTIgLyogQmFja1NsYXNoICovKVxuICAgICAgICAgICAgc2xhc2hDb3VudCsrO1xuICAgICAgICByZXR1cm4gKHNsYXNoQ291bnQgJiAxKSA9PT0gMTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZW5zdXJlTm90VHJhdmVyc2FsKCkge1xuICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCA+IDAgJiYgaXNUcmF2ZXJzYWwodG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkRpZCBub3QgZXhwZWN0IHN1Y2Nlc3NpdmUgdHJhdmVyc2Fscy5cIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gYWRkVHJhdmVyc2FsKHR5cGUpIHtcbiAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLnR5cGUgPT09IHR5cGVzXzEuU2VsZWN0b3JUeXBlLkRlc2NlbmRhbnQpIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IHR5cGU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZW5zdXJlTm90VHJhdmVyc2FsKCk7XG4gICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogdHlwZSB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWRkU3BlY2lhbEF0dHJpYnV0ZShuYW1lLCBhY3Rpb24pIHtcbiAgICAgICAgdG9rZW5zLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogdHlwZXNfMS5TZWxlY3RvclR5cGUuQXR0cmlidXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICAgICAgdmFsdWU6IGdldE5hbWUoMSksXG4gICAgICAgICAgICBuYW1lc3BhY2U6IG51bGwsXG4gICAgICAgICAgICBpZ25vcmVDYXNlOiBcInF1aXJrc1wiLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2UgaGF2ZSBmaW5pc2hlZCBwYXJzaW5nIHRoZSBjdXJyZW50IHBhcnQgb2YgdGhlIHNlbGVjdG9yLlxuICAgICAqXG4gICAgICogUmVtb3ZlIGRlc2NlbmRhbnQgdG9rZW5zIGF0IHRoZSBlbmQgaWYgdGhleSBleGlzdCxcbiAgICAgKiBhbmQgcmV0dXJuIHRoZSBsYXN0IGluZGV4LCBzbyB0aGF0IHBhcnNpbmcgY2FuIGJlXG4gICAgICogcGlja2VkIHVwIGZyb20gaGVyZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5hbGl6ZVN1YnNlbGVjdG9yKCkge1xuICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCAmJlxuICAgICAgICAgICAgdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXS50eXBlID09PSB0eXBlc18xLlNlbGVjdG9yVHlwZS5EZXNjZW5kYW50KSB7XG4gICAgICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVtcHR5IHN1Yi1zZWxlY3RvclwiKTtcbiAgICAgICAgfVxuICAgICAgICBzdWJzZWxlY3RzLnB1c2godG9rZW5zKTtcbiAgICB9XG4gICAgc3RyaXBXaGl0ZXNwYWNlKDApO1xuICAgIGlmIChzZWxlY3Rvci5sZW5ndGggPT09IHNlbGVjdG9ySW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdG9ySW5kZXg7XG4gICAgfVxuICAgIGxvb3A6IHdoaWxlIChzZWxlY3RvckluZGV4IDwgc2VsZWN0b3IubGVuZ3RoKSB7XG4gICAgICAgIHZhciBmaXJzdENoYXIgPSBzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpO1xuICAgICAgICBzd2l0Y2ggKGZpcnN0Q2hhcikge1xuICAgICAgICAgICAgLy8gV2hpdGVzcGFjZVxuICAgICAgICAgICAgY2FzZSAzMiAvKiBTcGFjZSAqLzpcbiAgICAgICAgICAgIGNhc2UgOSAvKiBUYWIgKi86XG4gICAgICAgICAgICBjYXNlIDEwIC8qIE5ld0xpbmUgKi86XG4gICAgICAgICAgICBjYXNlIDEyIC8qIEZvcm1GZWVkICovOlxuICAgICAgICAgICAgY2FzZSAxMyAvKiBDYXJyaWFnZVJldHVybiAqLzoge1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgICAgICAgICAgIHRva2Vuc1swXS50eXBlICE9PSB0eXBlc18xLlNlbGVjdG9yVHlwZS5EZXNjZW5kYW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGVuc3VyZU5vdFRyYXZlcnNhbCgpO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6IHR5cGVzXzEuU2VsZWN0b3JUeXBlLkRlc2NlbmRhbnQgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRyYXZlcnNhbHNcbiAgICAgICAgICAgIGNhc2UgNjIgLyogR3JlYXRlclRoYW4gKi86IHtcbiAgICAgICAgICAgICAgICBhZGRUcmF2ZXJzYWwodHlwZXNfMS5TZWxlY3RvclR5cGUuQ2hpbGQpO1xuICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgNjAgLyogTGVzc1RoYW4gKi86IHtcbiAgICAgICAgICAgICAgICBhZGRUcmF2ZXJzYWwodHlwZXNfMS5TZWxlY3RvclR5cGUuUGFyZW50KTtcbiAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDEyNiAvKiBUaWxkZSAqLzoge1xuICAgICAgICAgICAgICAgIGFkZFRyYXZlcnNhbCh0eXBlc18xLlNlbGVjdG9yVHlwZS5TaWJsaW5nKTtcbiAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDQzIC8qIFBsdXMgKi86IHtcbiAgICAgICAgICAgICAgICBhZGRUcmF2ZXJzYWwodHlwZXNfMS5TZWxlY3RvclR5cGUuQWRqYWNlbnQpO1xuICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFNwZWNpYWwgYXR0cmlidXRlIHNlbGVjdG9yczogLmNsYXNzLCAjaWRcbiAgICAgICAgICAgIGNhc2UgNDYgLyogUGVyaW9kICovOiB7XG4gICAgICAgICAgICAgICAgYWRkU3BlY2lhbEF0dHJpYnV0ZShcImNsYXNzXCIsIHR5cGVzXzEuQXR0cmlidXRlQWN0aW9uLkVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBIYXNoICovOiB7XG4gICAgICAgICAgICAgICAgYWRkU3BlY2lhbEF0dHJpYnV0ZShcImlkXCIsIHR5cGVzXzEuQXR0cmlidXRlQWN0aW9uLkVxdWFscyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDkxIC8qIExlZnRTcXVhcmVCcmFja2V0ICovOiB7XG4gICAgICAgICAgICAgICAgc3RyaXBXaGl0ZXNwYWNlKDEpO1xuICAgICAgICAgICAgICAgIC8vIERldGVybWluZSBhdHRyaWJ1dGUgbmFtZSBhbmQgbmFtZXNwYWNlXG4gICAgICAgICAgICAgICAgdmFyIG5hbWVfMSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICB2YXIgbmFtZXNwYWNlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSA9PT0gMTI0IC8qIFBpcGUgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRXF1aXZhbGVudCB0byBubyBuYW1lc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgbmFtZV8xID0gZ2V0TmFtZSgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3Iuc3RhcnRzV2l0aChcIip8XCIsIHNlbGVjdG9ySW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZSA9IFwiKlwiO1xuICAgICAgICAgICAgICAgICAgICBuYW1lXzEgPSBnZXROYW1lKDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZV8xID0gZ2V0TmFtZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCkgPT09IDEyNCAvKiBQaXBlICovICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXggKyAxKSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MSAvKiBFcXVhbCAqLykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlID0gbmFtZV8xO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV8xID0gZ2V0TmFtZSgxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMCk7XG4gICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGNvbXBhcmlzb24gb3BlcmF0aW9uXG4gICAgICAgICAgICAgICAgdmFyIGFjdGlvbiA9IHR5cGVzXzEuQXR0cmlidXRlQWN0aW9uLkV4aXN0cztcbiAgICAgICAgICAgICAgICB2YXIgcG9zc2libGVBY3Rpb24gPSBhY3Rpb25UeXBlcy5nZXQoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSk7XG4gICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlQWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IHBvc3NpYmxlQWN0aW9uO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4ICsgMSkgIT09XG4gICAgICAgICAgICAgICAgICAgICAgICA2MSAvKiBFcXVhbCAqLykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgYD1gXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSA9PT0gNjEgLyogRXF1YWwgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gdHlwZXNfMS5BdHRyaWJ1dGVBY3Rpb24uRXF1YWxzO1xuICAgICAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIERldGVybWluZSB2YWx1ZVxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgdmFyIGlnbm9yZUNhc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gIT09IFwiZXhpc3RzXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUXVvdGUoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxdW90ZSA9IHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VjdGlvbkVuZCA9IHNlbGVjdG9ySW5kZXggKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHNlY3Rpb25FbmQgPCBzZWxlY3Rvci5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWN0aW9uRW5kKSAhPT0gcXVvdGUgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGVkKHNlY3Rpb25FbmQpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25FbmQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5jaGFyQ29kZUF0KHNlY3Rpb25FbmQpICE9PSBxdW90ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkF0dHJpYnV0ZSB2YWx1ZSBkaWRuJ3QgZW5kXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1bmVzY2FwZUNTUyhzZWxlY3Rvci5zbGljZShzZWxlY3RvckluZGV4ICsgMSwgc2VjdGlvbkVuZCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JJbmRleCA9IHNlY3Rpb25FbmQgKyAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlU3RhcnQgPSBzZWxlY3RvckluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHNlbGVjdG9ySW5kZXggPCBzZWxlY3Rvci5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCFpc1doaXRlc3BhY2Uoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkzIC8qIFJpZ2h0U3F1YXJlQnJhY2tldCAqLykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGVkKHNlbGVjdG9ySW5kZXgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ySW5kZXggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdW5lc2NhcGVDU1Moc2VsZWN0b3Iuc2xpY2UodmFsdWVTdGFydCwgc2VsZWN0b3JJbmRleCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYSBmb3JjZSBpZ25vcmUgZmxhZ1xuICAgICAgICAgICAgICAgICAgICB2YXIgZm9yY2VJZ25vcmUgPSBzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpIHwgMHgyMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZvcmNlSWdub3JlIGZsYWcgaXMgc2V0IChlaXRoZXIgYGlgIG9yIGBzYCksIHVzZSB0aGF0IHZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGlmIChmb3JjZUlnbm9yZSA9PT0gMTE1IC8qIExvd2VyUyAqLykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBXaGl0ZXNwYWNlKDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvcmNlSWdub3JlID09PSAxMDUgLyogTG93ZXJJICovKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSAhPT1cbiAgICAgICAgICAgICAgICAgICAgOTMgLyogUmlnaHRTcXVhcmVCcmFja2V0ICovKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkF0dHJpYnV0ZSBzZWxlY3RvciBkaWRuJ3QgdGVybWluYXRlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxlY3RvckluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZVNlbGVjdG9yID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlc18xLlNlbGVjdG9yVHlwZS5BdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWVfMSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiBuYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6IGlnbm9yZUNhc2UsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChhdHRyaWJ1dGVTZWxlY3Rvcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDU4IC8qIENvbG9uICovOiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCArIDEpID09PSA1OCAvKiBDb2xvbiAqLykge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlc18xLlNlbGVjdG9yVHlwZS5Qc2V1ZG9FbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZ2V0TmFtZSgyKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MCAvKiBMZWZ0UGFyZW50aGVzaXMgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHJlYWRWYWx1ZVdpdGhQYXJlbnRoZXNpcygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBuYW1lXzIgPSBnZXROYW1lKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpID09PVxuICAgICAgICAgICAgICAgICAgICA0MCAvKiBMZWZ0UGFyZW50aGVzaXMgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVucGFja1BzZXVkb3MuaGFzKG5hbWVfMikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1F1b3RlKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCArIDEpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBzZXVkby1zZWxlY3RvciBcIi5jb25jYXQobmFtZV8yLCBcIiBjYW5ub3QgYmUgcXVvdGVkXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ySW5kZXggPSBwYXJzZVNlbGVjdG9yKGRhdGEsIHNlbGVjdG9yLCBzZWxlY3RvckluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MSAvKiBSaWdodFBhcmVudGhlc2lzICovKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBjbG9zaW5nIHBhcmVudGhlc2lzIGluIDpcIi5jb25jYXQobmFtZV8yLCBcIiAoXCIpLmNvbmNhdChzZWxlY3RvciwgXCIpXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ySW5kZXggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSByZWFkVmFsdWVXaXRoUGFyZW50aGVzaXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpcFF1b3Rlc0Zyb21Qc2V1ZG9zLmhhcyhuYW1lXzIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHF1b3QgPSBkYXRhLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1b3QgPT09IGRhdGEuY2hhckNvZGVBdChkYXRhLmxlbmd0aCAtIDEpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUXVvdGUocXVvdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuc2xpY2UoMSwgLTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSB1bmVzY2FwZUNTUyhkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6IHR5cGVzXzEuU2VsZWN0b3JUeXBlLlBzZXVkbywgbmFtZTogbmFtZV8yLCBkYXRhOiBkYXRhIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA0NCAvKiBDb21tYSAqLzoge1xuICAgICAgICAgICAgICAgIGZpbmFsaXplU3Vic2VsZWN0b3IoKTtcbiAgICAgICAgICAgICAgICB0b2tlbnMgPSBbXTtcbiAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLnN0YXJ0c1dpdGgoXCIvKlwiLCBzZWxlY3RvckluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZW5kSW5kZXggPSBzZWxlY3Rvci5pbmRleE9mKFwiKi9cIiwgc2VsZWN0b3JJbmRleCArIDIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kSW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb21tZW50IHdhcyBub3QgdGVybWluYXRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvckluZGV4ID0gZW5kSW5kZXggKyAyO1xuICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgbGVhZGluZyB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBuYW1lc3BhY2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIHZhciBuYW1lXzMgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0Q2hhciA9PT0gNDIgLyogQXN0ZXJpc2sgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JJbmRleCArPSAxO1xuICAgICAgICAgICAgICAgICAgICBuYW1lXzMgPSBcIipcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZmlyc3RDaGFyID09PSAxMjQgLyogUGlwZSAqLykge1xuICAgICAgICAgICAgICAgICAgICBuYW1lXzMgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4ICsgMSkgPT09IDEyNCAvKiBQaXBlICovKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRUcmF2ZXJzYWwodHlwZXNfMS5TZWxlY3RvclR5cGUuQ29sdW1uQ29tYmluYXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZU5hbWUudGVzdChzZWxlY3Rvci5zbGljZShzZWxlY3RvckluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZV8zID0gZ2V0TmFtZSgwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGxvb3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpID09PSAxMjQgLyogUGlwZSAqLyAmJlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXggKyAxKSAhPT0gMTI0IC8qIFBpcGUgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlID0gbmFtZV8zO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4ICsgMSkgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICA0MiAvKiBBc3RlcmlzayAqLykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV8zID0gXCIqXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvckluZGV4ICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lXzMgPSBnZXROYW1lKDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKG5hbWVfMyA9PT0gXCIqXCJcbiAgICAgICAgICAgICAgICAgICAgPyB7IHR5cGU6IHR5cGVzXzEuU2VsZWN0b3JUeXBlLlVuaXZlcnNhbCwgbmFtZXNwYWNlOiBuYW1lc3BhY2UgfVxuICAgICAgICAgICAgICAgICAgICA6IHsgdHlwZTogdHlwZXNfMS5TZWxlY3RvclR5cGUuVGFnLCBuYW1lOiBuYW1lXzMsIG5hbWVzcGFjZTogbmFtZXNwYWNlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmFsaXplU3Vic2VsZWN0b3IoKTtcbiAgICByZXR1cm4gc2VsZWN0b3JJbmRleDtcbn1cbiIsICJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc3RyaW5naWZ5ID0gdm9pZCAwO1xudmFyIHR5cGVzXzEgPSByZXF1aXJlKFwiLi90eXBlc1wiKTtcbnZhciBhdHRyaWJWYWxDaGFycyA9IFtcIlxcXFxcIiwgJ1wiJ107XG52YXIgcHNldWRvVmFsQ2hhcnMgPSBfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIGF0dHJpYlZhbENoYXJzLCB0cnVlKSwgW1wiKFwiLCBcIilcIl0sIGZhbHNlKTtcbnZhciBjaGFyc1RvRXNjYXBlSW5BdHRyaWJ1dGVWYWx1ZSA9IG5ldyBTZXQoYXR0cmliVmFsQ2hhcnMubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLmNoYXJDb2RlQXQoMCk7IH0pKTtcbnZhciBjaGFyc1RvRXNjYXBlSW5Qc2V1ZG9WYWx1ZSA9IG5ldyBTZXQocHNldWRvVmFsQ2hhcnMubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLmNoYXJDb2RlQXQoMCk7IH0pKTtcbnZhciBjaGFyc1RvRXNjYXBlSW5OYW1lID0gbmV3IFNldChfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIHBzZXVkb1ZhbENoYXJzLCB0cnVlKSwgW1xuICAgIFwiflwiLFxuICAgIFwiXlwiLFxuICAgIFwiJFwiLFxuICAgIFwiKlwiLFxuICAgIFwiK1wiLFxuICAgIFwiIVwiLFxuICAgIFwifFwiLFxuICAgIFwiOlwiLFxuICAgIFwiW1wiLFxuICAgIFwiXVwiLFxuICAgIFwiIFwiLFxuICAgIFwiLlwiLFxuXSwgZmFsc2UpLm1hcChmdW5jdGlvbiAoYykgeyByZXR1cm4gYy5jaGFyQ29kZUF0KDApOyB9KSk7XG4vKipcbiAqIFR1cm5zIGBzZWxlY3RvcmAgYmFjayBpbnRvIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBzZWxlY3RvciBTZWxlY3RvciB0byBzdHJpbmdpZnkuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeShzZWxlY3Rvcikge1xuICAgIHJldHVybiBzZWxlY3RvclxuICAgICAgICAubWFwKGZ1bmN0aW9uICh0b2tlbikgeyByZXR1cm4gdG9rZW4ubWFwKHN0cmluZ2lmeVRva2VuKS5qb2luKFwiXCIpOyB9KVxuICAgICAgICAuam9pbihcIiwgXCIpO1xufVxuZXhwb3J0cy5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG5mdW5jdGlvbiBzdHJpbmdpZnlUb2tlbih0b2tlbiwgaW5kZXgsIGFycikge1xuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICAvLyBTaW1wbGUgdHlwZXNcbiAgICAgICAgY2FzZSB0eXBlc18xLlNlbGVjdG9yVHlwZS5DaGlsZDpcbiAgICAgICAgICAgIHJldHVybiBpbmRleCA9PT0gMCA/IFwiPiBcIiA6IFwiID4gXCI7XG4gICAgICAgIGNhc2UgdHlwZXNfMS5TZWxlY3RvclR5cGUuUGFyZW50OlxuICAgICAgICAgICAgcmV0dXJuIGluZGV4ID09PSAwID8gXCI8IFwiIDogXCIgPCBcIjtcbiAgICAgICAgY2FzZSB0eXBlc18xLlNlbGVjdG9yVHlwZS5TaWJsaW5nOlxuICAgICAgICAgICAgcmV0dXJuIGluZGV4ID09PSAwID8gXCJ+IFwiIDogXCIgfiBcIjtcbiAgICAgICAgY2FzZSB0eXBlc18xLlNlbGVjdG9yVHlwZS5BZGphY2VudDpcbiAgICAgICAgICAgIHJldHVybiBpbmRleCA9PT0gMCA/IFwiKyBcIiA6IFwiICsgXCI7XG4gICAgICAgIGNhc2UgdHlwZXNfMS5TZWxlY3RvclR5cGUuRGVzY2VuZGFudDpcbiAgICAgICAgICAgIHJldHVybiBcIiBcIjtcbiAgICAgICAgY2FzZSB0eXBlc18xLlNlbGVjdG9yVHlwZS5Db2x1bW5Db21iaW5hdG9yOlxuICAgICAgICAgICAgcmV0dXJuIGluZGV4ID09PSAwID8gXCJ8fCBcIiA6IFwiIHx8IFwiO1xuICAgICAgICBjYXNlIHR5cGVzXzEuU2VsZWN0b3JUeXBlLlVuaXZlcnNhbDpcbiAgICAgICAgICAgIC8vIFJldHVybiBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIHNlbGVjdG9yIGlzbid0IG5lZWRlZC5cbiAgICAgICAgICAgIHJldHVybiB0b2tlbi5uYW1lc3BhY2UgPT09IFwiKlwiICYmXG4gICAgICAgICAgICAgICAgaW5kZXggKyAxIDwgYXJyLmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIFwibmFtZVwiIGluIGFycltpbmRleCArIDFdXG4gICAgICAgICAgICAgICAgPyBcIlwiXG4gICAgICAgICAgICAgICAgOiBcIlwiLmNvbmNhdChnZXROYW1lc3BhY2UodG9rZW4ubmFtZXNwYWNlKSwgXCIqXCIpO1xuICAgICAgICBjYXNlIHR5cGVzXzEuU2VsZWN0b3JUeXBlLlRhZzpcbiAgICAgICAgICAgIHJldHVybiBnZXROYW1lc3BhY2VkTmFtZSh0b2tlbik7XG4gICAgICAgIGNhc2UgdHlwZXNfMS5TZWxlY3RvclR5cGUuUHNldWRvRWxlbWVudDpcbiAgICAgICAgICAgIHJldHVybiBcIjo6XCIuY29uY2F0KGVzY2FwZU5hbWUodG9rZW4ubmFtZSwgY2hhcnNUb0VzY2FwZUluTmFtZSkpLmNvbmNhdCh0b2tlbi5kYXRhID09PSBudWxsXG4gICAgICAgICAgICAgICAgPyBcIlwiXG4gICAgICAgICAgICAgICAgOiBcIihcIi5jb25jYXQoZXNjYXBlTmFtZSh0b2tlbi5kYXRhLCBjaGFyc1RvRXNjYXBlSW5Qc2V1ZG9WYWx1ZSksIFwiKVwiKSk7XG4gICAgICAgIGNhc2UgdHlwZXNfMS5TZWxlY3RvclR5cGUuUHNldWRvOlxuICAgICAgICAgICAgcmV0dXJuIFwiOlwiLmNvbmNhdChlc2NhcGVOYW1lKHRva2VuLm5hbWUsIGNoYXJzVG9Fc2NhcGVJbk5hbWUpKS5jb25jYXQodG9rZW4uZGF0YSA9PT0gbnVsbFxuICAgICAgICAgICAgICAgID8gXCJcIlxuICAgICAgICAgICAgICAgIDogXCIoXCIuY29uY2F0KHR5cGVvZiB0b2tlbi5kYXRhID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgID8gZXNjYXBlTmFtZSh0b2tlbi5kYXRhLCBjaGFyc1RvRXNjYXBlSW5Qc2V1ZG9WYWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBzdHJpbmdpZnkodG9rZW4uZGF0YSksIFwiKVwiKSk7XG4gICAgICAgIGNhc2UgdHlwZXNfMS5TZWxlY3RvclR5cGUuQXR0cmlidXRlOiB7XG4gICAgICAgICAgICBpZiAodG9rZW4ubmFtZSA9PT0gXCJpZFwiICYmXG4gICAgICAgICAgICAgICAgdG9rZW4uYWN0aW9uID09PSB0eXBlc18xLkF0dHJpYnV0ZUFjdGlvbi5FcXVhbHMgJiZcbiAgICAgICAgICAgICAgICB0b2tlbi5pZ25vcmVDYXNlID09PSBcInF1aXJrc1wiICYmXG4gICAgICAgICAgICAgICAgIXRva2VuLm5hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBcIiNcIi5jb25jYXQoZXNjYXBlTmFtZSh0b2tlbi52YWx1ZSwgY2hhcnNUb0VzY2FwZUluTmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRva2VuLm5hbWUgPT09IFwiY2xhc3NcIiAmJlxuICAgICAgICAgICAgICAgIHRva2VuLmFjdGlvbiA9PT0gdHlwZXNfMS5BdHRyaWJ1dGVBY3Rpb24uRWxlbWVudCAmJlxuICAgICAgICAgICAgICAgIHRva2VuLmlnbm9yZUNhc2UgPT09IFwicXVpcmtzXCIgJiZcbiAgICAgICAgICAgICAgICAhdG9rZW4ubmFtZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiLlwiLmNvbmNhdChlc2NhcGVOYW1lKHRva2VuLnZhbHVlLCBjaGFyc1RvRXNjYXBlSW5OYW1lKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgbmFtZV8xID0gZ2V0TmFtZXNwYWNlZE5hbWUodG9rZW4pO1xuICAgICAgICAgICAgaWYgKHRva2VuLmFjdGlvbiA9PT0gdHlwZXNfMS5BdHRyaWJ1dGVBY3Rpb24uRXhpc3RzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiW1wiLmNvbmNhdChuYW1lXzEsIFwiXVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIltcIi5jb25jYXQobmFtZV8xKS5jb25jYXQoZ2V0QWN0aW9uVmFsdWUodG9rZW4uYWN0aW9uKSwgXCI9XFxcIlwiKS5jb25jYXQoZXNjYXBlTmFtZSh0b2tlbi52YWx1ZSwgY2hhcnNUb0VzY2FwZUluQXR0cmlidXRlVmFsdWUpLCBcIlxcXCJcIikuY29uY2F0KHRva2VuLmlnbm9yZUNhc2UgPT09IG51bGwgPyBcIlwiIDogdG9rZW4uaWdub3JlQ2FzZSA/IFwiIGlcIiA6IFwiIHNcIiwgXCJdXCIpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0QWN0aW9uVmFsdWUoYWN0aW9uKSB7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgY2FzZSB0eXBlc18xLkF0dHJpYnV0ZUFjdGlvbi5FcXVhbHM6XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgY2FzZSB0eXBlc18xLkF0dHJpYnV0ZUFjdGlvbi5FbGVtZW50OlxuICAgICAgICAgICAgcmV0dXJuIFwiflwiO1xuICAgICAgICBjYXNlIHR5cGVzXzEuQXR0cmlidXRlQWN0aW9uLlN0YXJ0OlxuICAgICAgICAgICAgcmV0dXJuIFwiXlwiO1xuICAgICAgICBjYXNlIHR5cGVzXzEuQXR0cmlidXRlQWN0aW9uLkVuZDpcbiAgICAgICAgICAgIHJldHVybiBcIiRcIjtcbiAgICAgICAgY2FzZSB0eXBlc18xLkF0dHJpYnV0ZUFjdGlvbi5Bbnk6XG4gICAgICAgICAgICByZXR1cm4gXCIqXCI7XG4gICAgICAgIGNhc2UgdHlwZXNfMS5BdHRyaWJ1dGVBY3Rpb24uTm90OlxuICAgICAgICAgICAgcmV0dXJuIFwiIVwiO1xuICAgICAgICBjYXNlIHR5cGVzXzEuQXR0cmlidXRlQWN0aW9uLkh5cGhlbjpcbiAgICAgICAgICAgIHJldHVybiBcInxcIjtcbiAgICAgICAgY2FzZSB0eXBlc18xLkF0dHJpYnV0ZUFjdGlvbi5FeGlzdHM6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGRuJ3QgYmUgaGVyZVwiKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXROYW1lc3BhY2VkTmFtZSh0b2tlbikge1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChnZXROYW1lc3BhY2UodG9rZW4ubmFtZXNwYWNlKSkuY29uY2F0KGVzY2FwZU5hbWUodG9rZW4ubmFtZSwgY2hhcnNUb0VzY2FwZUluTmFtZSkpO1xufVxuZnVuY3Rpb24gZ2V0TmFtZXNwYWNlKG5hbWVzcGFjZSkge1xuICAgIHJldHVybiBuYW1lc3BhY2UgIT09IG51bGxcbiAgICAgICAgPyBcIlwiLmNvbmNhdChuYW1lc3BhY2UgPT09IFwiKlwiXG4gICAgICAgICAgICA/IFwiKlwiXG4gICAgICAgICAgICA6IGVzY2FwZU5hbWUobmFtZXNwYWNlLCBjaGFyc1RvRXNjYXBlSW5OYW1lKSwgXCJ8XCIpXG4gICAgICAgIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGVzY2FwZU5hbWUoc3RyLCBjaGFyc1RvRXNjYXBlKSB7XG4gICAgdmFyIGxhc3RJZHggPSAwO1xuICAgIHZhciByZXQgPSBcIlwiO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjaGFyc1RvRXNjYXBlLmhhcyhzdHIuY2hhckNvZGVBdChpKSkpIHtcbiAgICAgICAgICAgIHJldCArPSBcIlwiLmNvbmNhdChzdHIuc2xpY2UobGFzdElkeCwgaSksIFwiXFxcXFwiKS5jb25jYXQoc3RyLmNoYXJBdChpKSk7XG4gICAgICAgICAgICBsYXN0SWR4ID0gaSArIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldC5sZW5ndGggPiAwID8gcmV0ICsgc3RyLnNsaWNlKGxhc3RJZHgpIDogc3RyO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnN0cmluZ2lmeSA9IGV4cG9ydHMucGFyc2UgPSBleHBvcnRzLmlzVHJhdmVyc2FsID0gdm9pZCAwO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL3R5cGVzXCIpLCBleHBvcnRzKTtcbnZhciBwYXJzZV8xID0gcmVxdWlyZShcIi4vcGFyc2VcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJpc1RyYXZlcnNhbFwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gcGFyc2VfMS5pc1RyYXZlcnNhbDsgfSB9KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInBhcnNlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBwYXJzZV8xLnBhcnNlOyB9IH0pO1xudmFyIHN0cmluZ2lmeV8xID0gcmVxdWlyZShcIi4vc3RyaW5naWZ5XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic3RyaW5naWZ5XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzdHJpbmdpZnlfMS5zdHJpbmdpZnk7IH0gfSk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY2xvbmVOb2RlID0gZXhwb3J0cy5oYXNDaGlsZHJlbiA9IGV4cG9ydHMuaXNEb2N1bWVudCA9IGV4cG9ydHMuaXNEaXJlY3RpdmUgPSBleHBvcnRzLmlzQ29tbWVudCA9IGV4cG9ydHMuaXNUZXh0ID0gZXhwb3J0cy5pc0NEQVRBID0gZXhwb3J0cy5pc1RhZyA9IGV4cG9ydHMuRWxlbWVudCA9IGV4cG9ydHMuRG9jdW1lbnQgPSBleHBvcnRzLkNEQVRBID0gZXhwb3J0cy5Ob2RlV2l0aENoaWxkcmVuID0gZXhwb3J0cy5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBleHBvcnRzLkNvbW1lbnQgPSBleHBvcnRzLlRleHQgPSBleHBvcnRzLkRhdGFOb2RlID0gZXhwb3J0cy5Ob2RlID0gdm9pZCAwO1xudmFyIGRvbWVsZW1lbnR0eXBlXzEgPSByZXF1aXJlKFwiZG9tZWxlbWVudHR5cGVcIik7XG4vKipcbiAqIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBhcyB0aGUgcHJvdG90eXBlIGZvciBOb2RlcyB3aGVuIGNyZWF0aW5nIGFcbiAqIERPTS1MZXZlbC0xLWNvbXBsaWFudCBzdHJ1Y3R1cmUuXG4gKi9cbnZhciBOb2RlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vZGUoKSB7XG4gICAgICAgIC8qKiBQYXJlbnQgb2YgdGhlIG5vZGUgKi9cbiAgICAgICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICAgICAgICAvKiogUHJldmlvdXMgc2libGluZyAqL1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgICAgICAvKiogTmV4dCBzaWJsaW5nICovXG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIC8qKiBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIG5vZGUuIFJlcXVpcmVzIGB3aXRoU3RhcnRJbmRpY2VzYCBvbiB0aGUgaGFuZGxlciB0byBiZSBgdHJ1ZS4gKi9cbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gbnVsbDtcbiAgICAgICAgLyoqIFRoZSBlbmQgaW5kZXggb2YgdGhlIG5vZGUuIFJlcXVpcmVzIGB3aXRoRW5kSW5kaWNlc2Agb24gdGhlIGhhbmRsZXIgdG8gYmUgYHRydWUuICovXG4gICAgICAgIHRoaXMuZW5kSW5kZXggPSBudWxsO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsIFwicGFyZW50Tm9kZVwiLCB7XG4gICAgICAgIC8vIFJlYWQtd3JpdGUgYWxpYXNlcyBmb3IgcHJvcGVydGllc1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgcGFyZW50fS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgXCJwcmV2aW91c1NpYmxpbmdcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgcHJldn0uXG4gICAgICAgICAqIFtET00gc3BlY10oaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnKS1jb21wYXRpYmxlIGFsaWFzLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmV2O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChwcmV2KSB7XG4gICAgICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCBcIm5leHRTaWJsaW5nXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIG5leHR9LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV4dCkge1xuICAgICAgICAgICAgdGhpcy5uZXh0ID0gbmV4dDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIENsb25lIHRoaXMgbm9kZSwgYW5kIG9wdGlvbmFsbHkgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY3Vyc2l2ZSBDbG9uZSBjaGlsZCBub2RlcyBhcyB3ZWxsLlxuICAgICAqIEByZXR1cm5zIEEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gICAgICovXG4gICAgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlID0gZnVuY3Rpb24gKHJlY3Vyc2l2ZSkge1xuICAgICAgICBpZiAocmVjdXJzaXZlID09PSB2b2lkIDApIHsgcmVjdXJzaXZlID0gZmFsc2U7IH1cbiAgICAgICAgcmV0dXJuIGNsb25lTm9kZSh0aGlzLCByZWN1cnNpdmUpO1xuICAgIH07XG4gICAgcmV0dXJuIE5vZGU7XG59KCkpO1xuZXhwb3J0cy5Ob2RlID0gTm9kZTtcbi8qKlxuICogQSBub2RlIHRoYXQgY29udGFpbnMgc29tZSBkYXRhLlxuICovXG52YXIgRGF0YU5vZGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKERhdGFOb2RlLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRhIFRoZSBjb250ZW50IG9mIHRoZSBkYXRhIG5vZGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBEYXRhTm9kZShkYXRhKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhTm9kZS5wcm90b3R5cGUsIFwibm9kZVZhbHVlXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIGRhdGF9LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBEYXRhTm9kZTtcbn0oTm9kZSkpO1xuZXhwb3J0cy5EYXRhTm9kZSA9IERhdGFOb2RlO1xuLyoqXG4gKiBUZXh0IHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gKi9cbnZhciBUZXh0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUZXh0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRleHQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UZXh0O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZXh0LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gVGV4dDtcbn0oRGF0YU5vZGUpKTtcbmV4cG9ydHMuVGV4dCA9IFRleHQ7XG4vKipcbiAqIENvbW1lbnRzIHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gKi9cbnZhciBDb21tZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb21tZW50LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbW1lbnQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Db21tZW50O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tZW50LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gQ29tbWVudDtcbn0oRGF0YU5vZGUpKTtcbmV4cG9ydHMuQ29tbWVudCA9IENvbW1lbnQ7XG4vKipcbiAqIFByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLCBpbmNsdWRpbmcgZG9jIHR5cGVzLlxuICovXG52YXIgUHJvY2Vzc2luZ0luc3RydWN0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5hbWUsIGRhdGEpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIF90aGlzLnR5cGUgPSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUHJvY2Vzc2luZ0luc3RydWN0aW9uLnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gUHJvY2Vzc2luZ0luc3RydWN0aW9uO1xufShEYXRhTm9kZSkpO1xuZXhwb3J0cy5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247XG4vKipcbiAqIEEgYE5vZGVgIHRoYXQgY2FuIGhhdmUgY2hpbGRyZW4uXG4gKi9cbnZhciBOb2RlV2l0aENoaWxkcmVuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhOb2RlV2l0aENoaWxkcmVuLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjaGlsZHJlbiBDaGlsZHJlbiBvZiB0aGUgbm9kZS4gT25seSBjZXJ0YWluIG5vZGUgdHlwZXMgY2FuIGhhdmUgY2hpbGRyZW4uXG4gICAgICovXG4gICAgZnVuY3Rpb24gTm9kZVdpdGhDaGlsZHJlbihjaGlsZHJlbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlV2l0aENoaWxkcmVuLnByb3RvdHlwZSwgXCJmaXJzdENoaWxkXCIsIHtcbiAgICAgICAgLy8gQWxpYXNlc1xuICAgICAgICAvKiogRmlyc3QgY2hpbGQgb2YgdGhlIG5vZGUuICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuY2hpbGRyZW5bMF0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZVdpdGhDaGlsZHJlbi5wcm90b3R5cGUsIFwibGFzdENoaWxkXCIsIHtcbiAgICAgICAgLyoqIExhc3QgY2hpbGQgb2YgdGhlIG5vZGUuICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGVXaXRoQ2hpbGRyZW4ucHJvdG90eXBlLCBcImNoaWxkTm9kZXNcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgY2hpbGRyZW59LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW47XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gTm9kZVdpdGhDaGlsZHJlbjtcbn0oTm9kZSkpO1xuZXhwb3J0cy5Ob2RlV2l0aENoaWxkcmVuID0gTm9kZVdpdGhDaGlsZHJlbjtcbnZhciBDREFUQSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ0RBVEEsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ0RBVEEoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5DREFUQTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ0RBVEEucHJvdG90eXBlLCBcIm5vZGVUeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBDREFUQTtcbn0oTm9kZVdpdGhDaGlsZHJlbikpO1xuZXhwb3J0cy5DREFUQSA9IENEQVRBO1xuLyoqXG4gKiBUaGUgcm9vdCBub2RlIG9mIHRoZSBkb2N1bWVudC5cbiAqL1xudmFyIERvY3VtZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEb2N1bWVudCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlJvb3Q7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gRG9jdW1lbnQ7XG59KE5vZGVXaXRoQ2hpbGRyZW4pKTtcbmV4cG9ydHMuRG9jdW1lbnQgPSBEb2N1bWVudDtcbi8qKlxuICogQW4gZWxlbWVudCB3aXRoaW4gdGhlIERPTS5cbiAqL1xudmFyIEVsZW1lbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsZW1lbnQsIF9zdXBlcik7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgdGFnLCBlZy4gYGRpdmAsIGBzcGFuYC5cbiAgICAgKiBAcGFyYW0gYXR0cmlicyBPYmplY3QgbWFwcGluZyBhdHRyaWJ1dGUgbmFtZXMgdG8gYXR0cmlidXRlIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0gY2hpbGRyZW4gQ2hpbGRyZW4gb2YgdGhlIG5vZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gRWxlbWVudChuYW1lLCBhdHRyaWJzLCBjaGlsZHJlbiwgdHlwZSkge1xuICAgICAgICBpZiAoY2hpbGRyZW4gPT09IHZvaWQgMCkgeyBjaGlsZHJlbiA9IFtdOyB9XG4gICAgICAgIGlmICh0eXBlID09PSB2b2lkIDApIHsgdHlwZSA9IG5hbWUgPT09IFwic2NyaXB0XCJcbiAgICAgICAgICAgID8gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5TY3JpcHRcbiAgICAgICAgICAgIDogbmFtZSA9PT0gXCJzdHlsZVwiXG4gICAgICAgICAgICAgICAgPyBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlN0eWxlXG4gICAgICAgICAgICAgICAgOiBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlRhZzsgfVxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBjaGlsZHJlbikgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIF90aGlzLmF0dHJpYnMgPSBhdHRyaWJzO1xuICAgICAgICBfdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIFwibm9kZVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCBcInRhZ05hbWVcIiwge1xuICAgICAgICAvLyBET00gTGV2ZWwgMSBhbGlhc2VzXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTYW1lIGFzIHtAbGluayBuYW1lfS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIFwiYXR0cmlidXRlc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmF0dHJpYnMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdGhpcy5hdHRyaWJzW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IChfYSA9IF90aGlzW1wieC1hdHRyaWJzTmFtZXNwYWNlXCJdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbbmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeDogKF9iID0gX3RoaXNbXCJ4LWF0dHJpYnNQcmVmaXhcIl0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYltuYW1lXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIEVsZW1lbnQ7XG59KE5vZGVXaXRoQ2hpbGRyZW4pKTtcbmV4cG9ydHMuRWxlbWVudCA9IEVsZW1lbnQ7XG4vKipcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaXMgYSBgRWxlbWVudGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1RhZyhub2RlKSB7XG4gICAgcmV0dXJuICgwLCBkb21lbGVtZW50dHlwZV8xLmlzVGFnKShub2RlKTtcbn1cbmV4cG9ydHMuaXNUYWcgPSBpc1RhZztcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYENEQVRBYCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGlzQ0RBVEEobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ0RBVEE7XG59XG5leHBvcnRzLmlzQ0RBVEEgPSBpc0NEQVRBO1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgVGV4dGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1RleHQobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuVGV4dDtcbn1cbmV4cG9ydHMuaXNUZXh0ID0gaXNUZXh0O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgQ29tbWVudGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0NvbW1lbnQobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ29tbWVudDtcbn1cbmV4cG9ydHMuaXNDb21tZW50ID0gaXNDb21tZW50O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgUHJvY2Vzc2luZ0luc3RydWN0aW9uYCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGlzRGlyZWN0aXZlKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbn1cbmV4cG9ydHMuaXNEaXJlY3RpdmUgPSBpc0RpcmVjdGl2ZTtcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYFByb2Nlc3NpbmdJbnN0cnVjdGlvbmAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0RvY3VtZW50KG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlJvb3Q7XG59XG5leHBvcnRzLmlzRG9jdW1lbnQgPSBpc0RvY3VtZW50O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyBjaGlsZHJlbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGhhc0NoaWxkcmVuKG5vZGUpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5vZGUsIFwiY2hpbGRyZW5cIik7XG59XG5leHBvcnRzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW47XG4vKipcbiAqIENsb25lIGEgbm9kZSwgYW5kIG9wdGlvbmFsbHkgaXRzIGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSByZWN1cnNpdmUgQ2xvbmUgY2hpbGQgbm9kZXMgYXMgd2VsbC5cbiAqIEByZXR1cm5zIEEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGNsb25lTm9kZShub2RlLCByZWN1cnNpdmUpIHtcbiAgICBpZiAocmVjdXJzaXZlID09PSB2b2lkIDApIHsgcmVjdXJzaXZlID0gZmFsc2U7IH1cbiAgICB2YXIgcmVzdWx0O1xuICAgIGlmIChpc1RleHQobm9kZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IFRleHQobm9kZS5kYXRhKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNDb21tZW50KG5vZGUpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBDb21tZW50KG5vZGUuZGF0YSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzVGFnKG5vZGUpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHJlY3Vyc2l2ZSA/IGNsb25lQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikgOiBbXTtcbiAgICAgICAgdmFyIGNsb25lXzEgPSBuZXcgRWxlbWVudChub2RlLm5hbWUsIF9fYXNzaWduKHt9LCBub2RlLmF0dHJpYnMpLCBjaGlsZHJlbik7XG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7IHJldHVybiAoY2hpbGQucGFyZW50ID0gY2xvbmVfMSk7IH0pO1xuICAgICAgICBpZiAobm9kZS5uYW1lc3BhY2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgY2xvbmVfMS5uYW1lc3BhY2UgPSBub2RlLm5hbWVzcGFjZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSkge1xuICAgICAgICAgICAgY2xvbmVfMVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSA9IF9fYXNzaWduKHt9LCBub2RlW1wieC1hdHRyaWJzTmFtZXNwYWNlXCJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVtcIngtYXR0cmlic1ByZWZpeFwiXSkge1xuICAgICAgICAgICAgY2xvbmVfMVtcIngtYXR0cmlic1ByZWZpeFwiXSA9IF9fYXNzaWduKHt9LCBub2RlW1wieC1hdHRyaWJzUHJlZml4XCJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBjbG9uZV8xO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0NEQVRBKG5vZGUpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHJlY3Vyc2l2ZSA/IGNsb25lQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikgOiBbXTtcbiAgICAgICAgdmFyIGNsb25lXzIgPSBuZXcgQ0RBVEEoY2hpbGRyZW4pO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gKGNoaWxkLnBhcmVudCA9IGNsb25lXzIpOyB9KTtcbiAgICAgICAgcmVzdWx0ID0gY2xvbmVfMjtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNEb2N1bWVudChub2RlKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSByZWN1cnNpdmUgPyBjbG9uZUNoaWxkcmVuKG5vZGUuY2hpbGRyZW4pIDogW107XG4gICAgICAgIHZhciBjbG9uZV8zID0gbmV3IERvY3VtZW50KGNoaWxkcmVuKTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIChjaGlsZC5wYXJlbnQgPSBjbG9uZV8zKTsgfSk7XG4gICAgICAgIGlmIChub2RlW1wieC1tb2RlXCJdKSB7XG4gICAgICAgICAgICBjbG9uZV8zW1wieC1tb2RlXCJdID0gbm9kZVtcIngtbW9kZVwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBjbG9uZV8zO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0RpcmVjdGl2ZShub2RlKSkge1xuICAgICAgICB2YXIgaW5zdHJ1Y3Rpb24gPSBuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5vZGUubmFtZSwgbm9kZS5kYXRhKTtcbiAgICAgICAgaWYgKG5vZGVbXCJ4LW5hbWVcIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bXCJ4LW5hbWVcIl0gPSBub2RlW1wieC1uYW1lXCJdO1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bXCJ4LXB1YmxpY0lkXCJdID0gbm9kZVtcIngtcHVibGljSWRcIl07XG4gICAgICAgICAgICBpbnN0cnVjdGlvbltcIngtc3lzdGVtSWRcIl0gPSBub2RlW1wieC1zeXN0ZW1JZFwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBpbnN0cnVjdGlvbjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZCB5ZXQ6IFwiLmNvbmNhdChub2RlLnR5cGUpKTtcbiAgICB9XG4gICAgcmVzdWx0LnN0YXJ0SW5kZXggPSBub2RlLnN0YXJ0SW5kZXg7XG4gICAgcmVzdWx0LmVuZEluZGV4ID0gbm9kZS5lbmRJbmRleDtcbiAgICBpZiAobm9kZS5zb3VyY2VDb2RlTG9jYXRpb24gIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQuc291cmNlQ29kZUxvY2F0aW9uID0gbm9kZS5zb3VyY2VDb2RlTG9jYXRpb247XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLmNsb25lTm9kZSA9IGNsb25lTm9kZTtcbmZ1bmN0aW9uIGNsb25lQ2hpbGRyZW4oY2hpbGRzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gY2hpbGRzLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIGNsb25lTm9kZShjaGlsZCwgdHJ1ZSk7IH0pO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hpbGRyZW5baV0ucHJldiA9IGNoaWxkcmVuW2kgLSAxXTtcbiAgICAgICAgY2hpbGRyZW5baSAtIDFdLm5leHQgPSBjaGlsZHJlbltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRvbUhhbmRsZXIgPSB2b2lkIDA7XG52YXIgZG9tZWxlbWVudHR5cGVfMSA9IHJlcXVpcmUoXCJkb21lbGVtZW50dHlwZVwiKTtcbnZhciBub2RlX2pzXzEgPSByZXF1aXJlKFwiLi9ub2RlLmpzXCIpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL25vZGUuanNcIiksIGV4cG9ydHMpO1xuLy8gRGVmYXVsdCBvcHRpb25zXG52YXIgZGVmYXVsdE9wdHMgPSB7XG4gICAgd2l0aFN0YXJ0SW5kaWNlczogZmFsc2UsXG4gICAgd2l0aEVuZEluZGljZXM6IGZhbHNlLFxuICAgIHhtbE1vZGU6IGZhbHNlLFxufTtcbnZhciBEb21IYW5kbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsZWQgb25jZSBwYXJzaW5nIGhhcyBjb21wbGV0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgU2V0dGluZ3MgZm9yIHRoZSBoYW5kbGVyLlxuICAgICAqIEBwYXJhbSBlbGVtZW50Q0IgQ2FsbGJhY2sgd2hlbmV2ZXIgYSB0YWcgaXMgY2xvc2VkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIERvbUhhbmRsZXIoY2FsbGJhY2ssIG9wdGlvbnMsIGVsZW1lbnRDQikge1xuICAgICAgICAvKiogVGhlIGVsZW1lbnRzIG9mIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5kb20gPSBbXTtcbiAgICAgICAgLyoqIFRoZSByb290IGVsZW1lbnQgZm9yIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5yb290ID0gbmV3IG5vZGVfanNfMS5Eb2N1bWVudCh0aGlzLmRvbSk7XG4gICAgICAgIC8qKiBJbmRpY2F0ZWQgd2hldGhlciBwYXJzaW5nIGhhcyBiZWVuIGNvbXBsZXRlZC4gKi9cbiAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIC8qKiBTdGFjayBvZiBvcGVuIHRhZ3MuICovXG4gICAgICAgIHRoaXMudGFnU3RhY2sgPSBbdGhpcy5yb290XTtcbiAgICAgICAgLyoqIEEgZGF0YSBub2RlIHRoYXQgaXMgc3RpbGwgYmVpbmcgd3JpdHRlbiB0by4gKi9cbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHBhcnNlciBpbnN0YW5jZS4gVXNlZCBmb3IgbG9jYXRpb24gaW5mb3JtYXRpb24uICovXG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICAgICAgLy8gTWFrZSBpdCBwb3NzaWJsZSB0byBza2lwIGFyZ3VtZW50cywgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBlbGVtZW50Q0IgPSBvcHRpb25zO1xuICAgICAgICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBjYWxsYmFjaztcbiAgICAgICAgICAgIGNhbGxiYWNrID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjayAhPT0gbnVsbCAmJiBjYWxsYmFjayAhPT0gdm9pZCAwID8gY2FsbGJhY2sgOiBudWxsO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCA/IG9wdGlvbnMgOiBkZWZhdWx0T3B0cztcbiAgICAgICAgdGhpcy5lbGVtZW50Q0IgPSBlbGVtZW50Q0IgIT09IG51bGwgJiYgZWxlbWVudENCICE9PSB2b2lkIDAgPyBlbGVtZW50Q0IgOiBudWxsO1xuICAgIH1cbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnBhcnNlcmluaXQgPSBmdW5jdGlvbiAocGFyc2VyKSB7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgIH07XG4gICAgLy8gUmVzZXRzIHRoZSBoYW5kbGVyIGJhY2sgdG8gc3RhcnRpbmcgc3RhdGVcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmRvbSA9IFtdO1xuICAgICAgICB0aGlzLnJvb3QgPSBuZXcgbm9kZV9qc18xLkRvY3VtZW50KHRoaXMuZG9tKTtcbiAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGFnU3RhY2sgPSBbdGhpcy5yb290XTtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICB9O1xuICAgIC8vIFNpZ25hbHMgdGhlIGhhbmRsZXIgdGhhdCBwYXJzaW5nIGlzIGRvbmVcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmhhbmRsZUNhbGxiYWNrKG51bGwpO1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25lcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICB0aGlzLmhhbmRsZUNhbGxiYWNrKGVycm9yKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY2xvc2V0YWcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgICAgICB2YXIgZWxlbSA9IHRoaXMudGFnU3RhY2sucG9wKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aEVuZEluZGljZXMpIHtcbiAgICAgICAgICAgIGVsZW0uZW5kSW5kZXggPSB0aGlzLnBhcnNlci5lbmRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbGVtZW50Q0IpXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRDQihlbGVtKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9ub3BlbnRhZyA9IGZ1bmN0aW9uIChuYW1lLCBhdHRyaWJzKSB7XG4gICAgICAgIHZhciB0eXBlID0gdGhpcy5vcHRpb25zLnhtbE1vZGUgPyBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlRhZyA6IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBuZXcgbm9kZV9qc18xLkVsZW1lbnQobmFtZSwgYXR0cmlicywgdW5kZWZpbmVkLCB0eXBlKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRhZ1N0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnRleHQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgbGFzdE5vZGUgPSB0aGlzLmxhc3ROb2RlO1xuICAgICAgICBpZiAobGFzdE5vZGUgJiYgbGFzdE5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UZXh0KSB7XG4gICAgICAgICAgICBsYXN0Tm9kZS5kYXRhICs9IGRhdGE7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhFbmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgICAgbGFzdE5vZGUuZW5kSW5kZXggPSB0aGlzLnBhcnNlci5lbmRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gbmV3IG5vZGVfanNfMS5UZXh0KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY29tbWVudCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmxhc3ROb2RlICYmIHRoaXMubGFzdE5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Db21tZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3ROb2RlLmRhdGEgKz0gZGF0YTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuQ29tbWVudChkYXRhKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICB0aGlzLmxhc3ROb2RlID0gbm9kZTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY29tbWVudGVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmNkYXRhc3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0ZXh0ID0gbmV3IG5vZGVfanNfMS5UZXh0KFwiXCIpO1xuICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuQ0RBVEEoW3RleHRdKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICB0ZXh0LnBhcmVudCA9IG5vZGU7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSB0ZXh0O1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25jZGF0YWVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbiA9IGZ1bmN0aW9uIChuYW1lLCBkYXRhKSB7XG4gICAgICAgIHZhciBub2RlID0gbmV3IG5vZGVfanNfMS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obmFtZSwgZGF0YSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLmhhbmRsZUNhbGxiYWNrID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrKGVycm9yLCB0aGlzLmRvbSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5hZGROb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMudGFnU3RhY2tbdGhpcy50YWdTdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgdmFyIHByZXZpb3VzU2libGluZyA9IHBhcmVudC5jaGlsZHJlbltwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aFN0YXJ0SW5kaWNlcykge1xuICAgICAgICAgICAgbm9kZS5zdGFydEluZGV4ID0gdGhpcy5wYXJzZXIuc3RhcnRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhFbmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBub2RlLmVuZEluZGV4ID0gdGhpcy5wYXJzZXIuZW5kSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgIGlmIChwcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgICAgIG5vZGUucHJldiA9IHByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIHByZXZpb3VzU2libGluZy5uZXh0ID0gbm9kZTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gRG9tSGFuZGxlcjtcbn0oKSk7XG5leHBvcnRzLkRvbUhhbmRsZXIgPSBEb21IYW5kbGVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gRG9tSGFuZGxlcjtcbiIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYXR0cmlidXRlTmFtZXMgPSBleHBvcnRzLmVsZW1lbnROYW1lcyA9IHZvaWQgMDtcbmV4cG9ydHMuZWxlbWVudE5hbWVzID0gbmV3IE1hcChbXG4gICAgXCJhbHRHbHlwaFwiLFxuICAgIFwiYWx0R2x5cGhEZWZcIixcbiAgICBcImFsdEdseXBoSXRlbVwiLFxuICAgIFwiYW5pbWF0ZUNvbG9yXCIsXG4gICAgXCJhbmltYXRlTW90aW9uXCIsXG4gICAgXCJhbmltYXRlVHJhbnNmb3JtXCIsXG4gICAgXCJjbGlwUGF0aFwiLFxuICAgIFwiZmVCbGVuZFwiLFxuICAgIFwiZmVDb2xvck1hdHJpeFwiLFxuICAgIFwiZmVDb21wb25lbnRUcmFuc2ZlclwiLFxuICAgIFwiZmVDb21wb3NpdGVcIixcbiAgICBcImZlQ29udm9sdmVNYXRyaXhcIixcbiAgICBcImZlRGlmZnVzZUxpZ2h0aW5nXCIsXG4gICAgXCJmZURpc3BsYWNlbWVudE1hcFwiLFxuICAgIFwiZmVEaXN0YW50TGlnaHRcIixcbiAgICBcImZlRHJvcFNoYWRvd1wiLFxuICAgIFwiZmVGbG9vZFwiLFxuICAgIFwiZmVGdW5jQVwiLFxuICAgIFwiZmVGdW5jQlwiLFxuICAgIFwiZmVGdW5jR1wiLFxuICAgIFwiZmVGdW5jUlwiLFxuICAgIFwiZmVHYXVzc2lhbkJsdXJcIixcbiAgICBcImZlSW1hZ2VcIixcbiAgICBcImZlTWVyZ2VcIixcbiAgICBcImZlTWVyZ2VOb2RlXCIsXG4gICAgXCJmZU1vcnBob2xvZ3lcIixcbiAgICBcImZlT2Zmc2V0XCIsXG4gICAgXCJmZVBvaW50TGlnaHRcIixcbiAgICBcImZlU3BlY3VsYXJMaWdodGluZ1wiLFxuICAgIFwiZmVTcG90TGlnaHRcIixcbiAgICBcImZlVGlsZVwiLFxuICAgIFwiZmVUdXJidWxlbmNlXCIsXG4gICAgXCJmb3JlaWduT2JqZWN0XCIsXG4gICAgXCJnbHlwaFJlZlwiLFxuICAgIFwibGluZWFyR3JhZGllbnRcIixcbiAgICBcInJhZGlhbEdyYWRpZW50XCIsXG4gICAgXCJ0ZXh0UGF0aFwiLFxuXS5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gW3ZhbC50b0xvd2VyQ2FzZSgpLCB2YWxdOyB9KSk7XG5leHBvcnRzLmF0dHJpYnV0ZU5hbWVzID0gbmV3IE1hcChbXG4gICAgXCJkZWZpbml0aW9uVVJMXCIsXG4gICAgXCJhdHRyaWJ1dGVOYW1lXCIsXG4gICAgXCJhdHRyaWJ1dGVUeXBlXCIsXG4gICAgXCJiYXNlRnJlcXVlbmN5XCIsXG4gICAgXCJiYXNlUHJvZmlsZVwiLFxuICAgIFwiY2FsY01vZGVcIixcbiAgICBcImNsaXBQYXRoVW5pdHNcIixcbiAgICBcImRpZmZ1c2VDb25zdGFudFwiLFxuICAgIFwiZWRnZU1vZGVcIixcbiAgICBcImZpbHRlclVuaXRzXCIsXG4gICAgXCJnbHlwaFJlZlwiLFxuICAgIFwiZ3JhZGllbnRUcmFuc2Zvcm1cIixcbiAgICBcImdyYWRpZW50VW5pdHNcIixcbiAgICBcImtlcm5lbE1hdHJpeFwiLFxuICAgIFwia2VybmVsVW5pdExlbmd0aFwiLFxuICAgIFwia2V5UG9pbnRzXCIsXG4gICAgXCJrZXlTcGxpbmVzXCIsXG4gICAgXCJrZXlUaW1lc1wiLFxuICAgIFwibGVuZ3RoQWRqdXN0XCIsXG4gICAgXCJsaW1pdGluZ0NvbmVBbmdsZVwiLFxuICAgIFwibWFya2VySGVpZ2h0XCIsXG4gICAgXCJtYXJrZXJVbml0c1wiLFxuICAgIFwibWFya2VyV2lkdGhcIixcbiAgICBcIm1hc2tDb250ZW50VW5pdHNcIixcbiAgICBcIm1hc2tVbml0c1wiLFxuICAgIFwibnVtT2N0YXZlc1wiLFxuICAgIFwicGF0aExlbmd0aFwiLFxuICAgIFwicGF0dGVybkNvbnRlbnRVbml0c1wiLFxuICAgIFwicGF0dGVyblRyYW5zZm9ybVwiLFxuICAgIFwicGF0dGVyblVuaXRzXCIsXG4gICAgXCJwb2ludHNBdFhcIixcbiAgICBcInBvaW50c0F0WVwiLFxuICAgIFwicG9pbnRzQXRaXCIsXG4gICAgXCJwcmVzZXJ2ZUFscGhhXCIsXG4gICAgXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsXG4gICAgXCJwcmltaXRpdmVVbml0c1wiLFxuICAgIFwicmVmWFwiLFxuICAgIFwicmVmWVwiLFxuICAgIFwicmVwZWF0Q291bnRcIixcbiAgICBcInJlcGVhdER1clwiLFxuICAgIFwicmVxdWlyZWRFeHRlbnNpb25zXCIsXG4gICAgXCJyZXF1aXJlZEZlYXR1cmVzXCIsXG4gICAgXCJzcGVjdWxhckNvbnN0YW50XCIsXG4gICAgXCJzcGVjdWxhckV4cG9uZW50XCIsXG4gICAgXCJzcHJlYWRNZXRob2RcIixcbiAgICBcInN0YXJ0T2Zmc2V0XCIsXG4gICAgXCJzdGREZXZpYXRpb25cIixcbiAgICBcInN0aXRjaFRpbGVzXCIsXG4gICAgXCJzdXJmYWNlU2NhbGVcIixcbiAgICBcInN5c3RlbUxhbmd1YWdlXCIsXG4gICAgXCJ0YWJsZVZhbHVlc1wiLFxuICAgIFwidGFyZ2V0WFwiLFxuICAgIFwidGFyZ2V0WVwiLFxuICAgIFwidGV4dExlbmd0aFwiLFxuICAgIFwidmlld0JveFwiLFxuICAgIFwidmlld1RhcmdldFwiLFxuICAgIFwieENoYW5uZWxTZWxlY3RvclwiLFxuICAgIFwieUNoYW5uZWxTZWxlY3RvclwiLFxuICAgIFwiem9vbUFuZFBhblwiLFxuXS5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gW3ZhbC50b0xvd2VyQ2FzZSgpLCB2YWxdOyB9KSk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdCkgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcbn0pIDogZnVuY3Rpb24obywgdikge1xuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcbn0pO1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlbmRlciA9IHZvaWQgMDtcbi8qXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzXG4gKi9cbnZhciBFbGVtZW50VHlwZSA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiZG9tZWxlbWVudHR5cGVcIikpO1xudmFyIGVudGl0aWVzXzEgPSByZXF1aXJlKFwiZW50aXRpZXNcIik7XG4vKipcbiAqIE1peGVkLWNhc2UgU1ZHIGFuZCBNYXRoTUwgdGFncyAmIGF0dHJpYnV0ZXNcbiAqIHJlY29nbml6ZWQgYnkgdGhlIEhUTUwgcGFyc2VyLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbiAqL1xudmFyIGZvcmVpZ25OYW1lc19qc18xID0gcmVxdWlyZShcIi4vZm9yZWlnbk5hbWVzLmpzXCIpO1xudmFyIHVuZW5jb2RlZEVsZW1lbnRzID0gbmV3IFNldChbXG4gICAgXCJzdHlsZVwiLFxuICAgIFwic2NyaXB0XCIsXG4gICAgXCJ4bXBcIixcbiAgICBcImlmcmFtZVwiLFxuICAgIFwibm9lbWJlZFwiLFxuICAgIFwibm9mcmFtZXNcIixcbiAgICBcInBsYWludGV4dFwiLFxuICAgIFwibm9zY3JpcHRcIixcbl0pO1xuZnVuY3Rpb24gcmVwbGFjZVF1b3Rlcyh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKTtcbn1cbi8qKlxuICogRm9ybWF0IGF0dHJpYnV0ZXNcbiAqL1xuZnVuY3Rpb24gZm9ybWF0QXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBvcHRzKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICghYXR0cmlidXRlcylcbiAgICAgICAgcmV0dXJuO1xuICAgIHZhciBlbmNvZGUgPSAoKF9hID0gb3B0cy5lbmNvZGVFbnRpdGllcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogb3B0cy5kZWNvZGVFbnRpdGllcykgPT09IGZhbHNlXG4gICAgICAgID8gcmVwbGFjZVF1b3Rlc1xuICAgICAgICA6IG9wdHMueG1sTW9kZSB8fCBvcHRzLmVuY29kZUVudGl0aWVzICE9PSBcInV0ZjhcIlxuICAgICAgICAgICAgPyBlbnRpdGllc18xLmVuY29kZVhNTFxuICAgICAgICAgICAgOiBlbnRpdGllc18xLmVzY2FwZUF0dHJpYnV0ZTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYXR0cmlidXRlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHZhciB2YWx1ZSA9IChfYSA9IGF0dHJpYnV0ZXNba2V5XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogXCJcIjtcbiAgICAgICAgaWYgKG9wdHMueG1sTW9kZSA9PT0gXCJmb3JlaWduXCIpIHtcbiAgICAgICAgICAgIC8qIEZpeCB1cCBtaXhlZC1jYXNlIGF0dHJpYnV0ZSBuYW1lcyAqL1xuICAgICAgICAgICAga2V5ID0gKF9iID0gZm9yZWlnbk5hbWVzX2pzXzEuYXR0cmlidXRlTmFtZXMuZ2V0KGtleSkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdHMuZW1wdHlBdHRycyAmJiAhb3B0cy54bWxNb2RlICYmIHZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChrZXksIFwiPVxcXCJcIikuY29uY2F0KGVuY29kZSh2YWx1ZSksIFwiXFxcIlwiKTtcbiAgICB9KVxuICAgICAgICAuam9pbihcIiBcIik7XG59XG4vKipcbiAqIFNlbGYtZW5jbG9zaW5nIHRhZ3NcbiAqL1xudmFyIHNpbmdsZVRhZyA9IG5ldyBTZXQoW1xuICAgIFwiYXJlYVwiLFxuICAgIFwiYmFzZVwiLFxuICAgIFwiYmFzZWZvbnRcIixcbiAgICBcImJyXCIsXG4gICAgXCJjb2xcIixcbiAgICBcImNvbW1hbmRcIixcbiAgICBcImVtYmVkXCIsXG4gICAgXCJmcmFtZVwiLFxuICAgIFwiaHJcIixcbiAgICBcImltZ1wiLFxuICAgIFwiaW5wdXRcIixcbiAgICBcImlzaW5kZXhcIixcbiAgICBcImtleWdlblwiLFxuICAgIFwibGlua1wiLFxuICAgIFwibWV0YVwiLFxuICAgIFwicGFyYW1cIixcbiAgICBcInNvdXJjZVwiLFxuICAgIFwidHJhY2tcIixcbiAgICBcIndiclwiLFxuXSk7XG4vKipcbiAqIFJlbmRlcnMgYSBET00gbm9kZSBvciBhbiBhcnJheSBvZiBET00gbm9kZXMgdG8gYSBzdHJpbmcuXG4gKlxuICogQ2FuIGJlIHRob3VnaHQgb2YgYXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIGBvdXRlckhUTUxgIG9mIHRoZSBwYXNzZWQgbm9kZShzKS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGJlIHJlbmRlcmVkLlxuICogQHBhcmFtIG9wdGlvbnMgQ2hhbmdlcyBzZXJpYWxpemF0aW9uIGJlaGF2aW9yXG4gKi9cbmZ1bmN0aW9uIHJlbmRlcihub2RlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgbm9kZXMgPSBcImxlbmd0aFwiIGluIG5vZGUgPyBub2RlIDogW25vZGVdO1xuICAgIHZhciBvdXRwdXQgPSBcIlwiO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0cHV0ICs9IHJlbmRlck5vZGUobm9kZXNbaV0sIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuZXhwb3J0cy5yZW5kZXIgPSByZW5kZXI7XG5leHBvcnRzLmRlZmF1bHQgPSByZW5kZXI7XG5mdW5jdGlvbiByZW5kZXJOb2RlKG5vZGUsIG9wdGlvbnMpIHtcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLlJvb3Q6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyKG5vZGUuY2hpbGRyZW4sIG9wdGlvbnMpO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFdlIGRvbid0IHVzZSBgRG9jdHlwZWAgeWV0XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuRG9jdHlwZTpcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5EaXJlY3RpdmU6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyRGlyZWN0aXZlKG5vZGUpO1xuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLkNvbW1lbnQ6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyQ29tbWVudChub2RlKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5DREFUQTpcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJDZGF0YShub2RlKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5TY3JpcHQ6XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuU3R5bGU6XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuVGFnOlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRhZyhub2RlLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5UZXh0OlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHQobm9kZSwgb3B0aW9ucyk7XG4gICAgfVxufVxudmFyIGZvcmVpZ25Nb2RlSW50ZWdyYXRpb25Qb2ludHMgPSBuZXcgU2V0KFtcbiAgICBcIm1pXCIsXG4gICAgXCJtb1wiLFxuICAgIFwibW5cIixcbiAgICBcIm1zXCIsXG4gICAgXCJtdGV4dFwiLFxuICAgIFwiYW5ub3RhdGlvbi14bWxcIixcbiAgICBcImZvcmVpZ25PYmplY3RcIixcbiAgICBcImRlc2NcIixcbiAgICBcInRpdGxlXCIsXG5dKTtcbnZhciBmb3JlaWduRWxlbWVudHMgPSBuZXcgU2V0KFtcInN2Z1wiLCBcIm1hdGhcIl0pO1xuZnVuY3Rpb24gcmVuZGVyVGFnKGVsZW0sIG9wdHMpIHtcbiAgICB2YXIgX2E7XG4gICAgLy8gSGFuZGxlIFNWRyAvIE1hdGhNTCBpbiBIVE1MXG4gICAgaWYgKG9wdHMueG1sTW9kZSA9PT0gXCJmb3JlaWduXCIpIHtcbiAgICAgICAgLyogRml4IHVwIG1peGVkLWNhc2UgZWxlbWVudCBuYW1lcyAqL1xuICAgICAgICBlbGVtLm5hbWUgPSAoX2EgPSBmb3JlaWduTmFtZXNfanNfMS5lbGVtZW50TmFtZXMuZ2V0KGVsZW0ubmFtZSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGVsZW0ubmFtZTtcbiAgICAgICAgLyogRXhpdCBmb3JlaWduIG1vZGUgYXQgaW50ZWdyYXRpb24gcG9pbnRzICovXG4gICAgICAgIGlmIChlbGVtLnBhcmVudCAmJlxuICAgICAgICAgICAgZm9yZWlnbk1vZGVJbnRlZ3JhdGlvblBvaW50cy5oYXMoZWxlbS5wYXJlbnQubmFtZSkpIHtcbiAgICAgICAgICAgIG9wdHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0cyksIHsgeG1sTW9kZTogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFvcHRzLnhtbE1vZGUgJiYgZm9yZWlnbkVsZW1lbnRzLmhhcyhlbGVtLm5hbWUpKSB7XG4gICAgICAgIG9wdHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0cyksIHsgeG1sTW9kZTogXCJmb3JlaWduXCIgfSk7XG4gICAgfVxuICAgIHZhciB0YWcgPSBcIjxcIi5jb25jYXQoZWxlbS5uYW1lKTtcbiAgICB2YXIgYXR0cmlicyA9IGZvcm1hdEF0dHJpYnV0ZXMoZWxlbS5hdHRyaWJzLCBvcHRzKTtcbiAgICBpZiAoYXR0cmlicykge1xuICAgICAgICB0YWcgKz0gXCIgXCIuY29uY2F0KGF0dHJpYnMpO1xuICAgIH1cbiAgICBpZiAoZWxlbS5jaGlsZHJlbi5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgKG9wdHMueG1sTW9kZVxuICAgICAgICAgICAgPyAvLyBJbiBYTUwgbW9kZSBvciBmb3JlaWduIG1vZGUsIGFuZCB1c2VyIGhhc24ndCBleHBsaWNpdGx5IHR1cm5lZCBvZmYgc2VsZi1jbG9zaW5nIHRhZ3NcbiAgICAgICAgICAgICAgICBvcHRzLnNlbGZDbG9zaW5nVGFncyAhPT0gZmFsc2VcbiAgICAgICAgICAgIDogLy8gVXNlciBleHBsaWNpdGx5IGFza2VkIGZvciBzZWxmLWNsb3NpbmcgdGFncywgZXZlbiBpbiBIVE1MIG1vZGVcbiAgICAgICAgICAgICAgICBvcHRzLnNlbGZDbG9zaW5nVGFncyAmJiBzaW5nbGVUYWcuaGFzKGVsZW0ubmFtZSkpKSB7XG4gICAgICAgIGlmICghb3B0cy54bWxNb2RlKVxuICAgICAgICAgICAgdGFnICs9IFwiIFwiO1xuICAgICAgICB0YWcgKz0gXCIvPlwiO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFnICs9IFwiPlwiO1xuICAgICAgICBpZiAoZWxlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0YWcgKz0gcmVuZGVyKGVsZW0uY2hpbGRyZW4sIG9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLnhtbE1vZGUgfHwgIXNpbmdsZVRhZy5oYXMoZWxlbS5uYW1lKSkge1xuICAgICAgICAgICAgdGFnICs9IFwiPC9cIi5jb25jYXQoZWxlbS5uYW1lLCBcIj5cIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhZztcbn1cbmZ1bmN0aW9uIHJlbmRlckRpcmVjdGl2ZShlbGVtKSB7XG4gICAgcmV0dXJuIFwiPFwiLmNvbmNhdChlbGVtLmRhdGEsIFwiPlwiKTtcbn1cbmZ1bmN0aW9uIHJlbmRlclRleHQoZWxlbSwgb3B0cykge1xuICAgIHZhciBfYTtcbiAgICB2YXIgZGF0YSA9IGVsZW0uZGF0YSB8fCBcIlwiO1xuICAgIC8vIElmIGVudGl0aWVzIHdlcmVuJ3QgZGVjb2RlZCwgbm8gbmVlZCB0byBlbmNvZGUgdGhlbSBiYWNrXG4gICAgaWYgKCgoX2EgPSBvcHRzLmVuY29kZUVudGl0aWVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBvcHRzLmRlY29kZUVudGl0aWVzKSAhPT0gZmFsc2UgJiZcbiAgICAgICAgISghb3B0cy54bWxNb2RlICYmXG4gICAgICAgICAgICBlbGVtLnBhcmVudCAmJlxuICAgICAgICAgICAgdW5lbmNvZGVkRWxlbWVudHMuaGFzKGVsZW0ucGFyZW50Lm5hbWUpKSkge1xuICAgICAgICBkYXRhID1cbiAgICAgICAgICAgIG9wdHMueG1sTW9kZSB8fCBvcHRzLmVuY29kZUVudGl0aWVzICE9PSBcInV0ZjhcIlxuICAgICAgICAgICAgICAgID8gKDAsIGVudGl0aWVzXzEuZW5jb2RlWE1MKShkYXRhKVxuICAgICAgICAgICAgICAgIDogKDAsIGVudGl0aWVzXzEuZXNjYXBlVGV4dCkoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xufVxuZnVuY3Rpb24gcmVuZGVyQ2RhdGEoZWxlbSkge1xuICAgIHJldHVybiBcIjwhW0NEQVRBW1wiLmNvbmNhdChlbGVtLmNoaWxkcmVuWzBdLmRhdGEsIFwiXV0+XCIpO1xufVxuZnVuY3Rpb24gcmVuZGVyQ29tbWVudChlbGVtKSB7XG4gICAgcmV0dXJuIFwiPCEtLVwiLmNvbmNhdChlbGVtLmRhdGEsIFwiLS0+XCIpO1xufVxuIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgIm1vZHVsZS5leHBvcnRzID0ge1xuXHR0cnVlRnVuYzogZnVuY3Rpb24gdHJ1ZUZ1bmMoKXtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0ZmFsc2VGdW5jOiBmdW5jdGlvbiBmYWxzZUZ1bmMoKXtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07IiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNsb25lTm9kZSA9IGV4cG9ydHMuaGFzQ2hpbGRyZW4gPSBleHBvcnRzLmlzRG9jdW1lbnQgPSBleHBvcnRzLmlzRGlyZWN0aXZlID0gZXhwb3J0cy5pc0NvbW1lbnQgPSBleHBvcnRzLmlzVGV4dCA9IGV4cG9ydHMuaXNDREFUQSA9IGV4cG9ydHMuaXNUYWcgPSBleHBvcnRzLkVsZW1lbnQgPSBleHBvcnRzLkRvY3VtZW50ID0gZXhwb3J0cy5DREFUQSA9IGV4cG9ydHMuTm9kZVdpdGhDaGlsZHJlbiA9IGV4cG9ydHMuUHJvY2Vzc2luZ0luc3RydWN0aW9uID0gZXhwb3J0cy5Db21tZW50ID0gZXhwb3J0cy5UZXh0ID0gZXhwb3J0cy5EYXRhTm9kZSA9IGV4cG9ydHMuTm9kZSA9IHZvaWQgMDtcbnZhciBkb21lbGVtZW50dHlwZV8xID0gcmVxdWlyZShcImRvbWVsZW1lbnR0eXBlXCIpO1xuLyoqXG4gKiBUaGlzIG9iamVjdCB3aWxsIGJlIHVzZWQgYXMgdGhlIHByb3RvdHlwZSBmb3IgTm9kZXMgd2hlbiBjcmVhdGluZyBhXG4gKiBET00tTGV2ZWwtMS1jb21wbGlhbnQgc3RydWN0dXJlLlxuICovXG52YXIgTm9kZSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBOb2RlKCkge1xuICAgICAgICAvKiogUGFyZW50IG9mIHRoZSBub2RlICovXG4gICAgICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgICAgICAgLyoqIFByZXZpb3VzIHNpYmxpbmcgKi9cbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICAgICAgLyoqIE5leHQgc2libGluZyAqL1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICAvKiogVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBub2RlLiBSZXF1aXJlcyBgd2l0aFN0YXJ0SW5kaWNlc2Agb24gdGhlIGhhbmRsZXIgdG8gYmUgYHRydWUuICovXG4gICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IG51bGw7XG4gICAgICAgIC8qKiBUaGUgZW5kIGluZGV4IG9mIHRoZSBub2RlLiBSZXF1aXJlcyBgd2l0aEVuZEluZGljZXNgIG9uIHRoZSBoYW5kbGVyIHRvIGJlIGB0cnVlLiAqL1xuICAgICAgICB0aGlzLmVuZEluZGV4ID0gbnVsbDtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCBcInBhcmVudE5vZGVcIiwge1xuICAgICAgICAvLyBSZWFkLXdyaXRlIGFsaWFzZXMgZm9yIHByb3BlcnRpZXNcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIHBhcmVudH0uXG4gICAgICAgICAqIFtET00gc3BlY10oaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnKS1jb21wYXRpYmxlIGFsaWFzLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsIFwicHJldmlvdXNTaWJsaW5nXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIHByZXZ9LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldjtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAocHJldikge1xuICAgICAgICAgICAgdGhpcy5wcmV2ID0gcHJldjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgXCJuZXh0U2libGluZ1wiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTYW1lIGFzIHtAbGluayBuZXh0fS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHQ7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKG5leHQpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICAvKipcbiAgICAgKiBDbG9uZSB0aGlzIG5vZGUsIGFuZCBvcHRpb25hbGx5IGl0cyBjaGlsZHJlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWN1cnNpdmUgQ2xvbmUgY2hpbGQgbm9kZXMgYXMgd2VsbC5cbiAgICAgKiBAcmV0dXJucyBBIGNsb25lIG9mIHRoZSBub2RlLlxuICAgICAqL1xuICAgIE5vZGUucHJvdG90eXBlLmNsb25lTm9kZSA9IGZ1bmN0aW9uIChyZWN1cnNpdmUpIHtcbiAgICAgICAgaWYgKHJlY3Vyc2l2ZSA9PT0gdm9pZCAwKSB7IHJlY3Vyc2l2ZSA9IGZhbHNlOyB9XG4gICAgICAgIHJldHVybiBjbG9uZU5vZGUodGhpcywgcmVjdXJzaXZlKTtcbiAgICB9O1xuICAgIHJldHVybiBOb2RlO1xufSgpKTtcbmV4cG9ydHMuTm9kZSA9IE5vZGU7XG4vKipcbiAqIEEgbm9kZSB0aGF0IGNvbnRhaW5zIHNvbWUgZGF0YS5cbiAqL1xudmFyIERhdGFOb2RlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEYXRhTm9kZSwgX3N1cGVyKTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gZGF0YSBUaGUgY29udGVudCBvZiB0aGUgZGF0YSBub2RlXG4gICAgICovXG4gICAgZnVuY3Rpb24gRGF0YU5vZGUoZGF0YSkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRGF0YU5vZGUucHJvdG90eXBlLCBcIm5vZGVWYWx1ZVwiLCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTYW1lIGFzIHtAbGluayBkYXRhfS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGE7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gRGF0YU5vZGU7XG59KE5vZGUpKTtcbmV4cG9ydHMuRGF0YU5vZGUgPSBEYXRhTm9kZTtcbi8qKlxuICogVGV4dCB3aXRoaW4gdGhlIGRvY3VtZW50LlxuICovXG52YXIgVGV4dCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoVGV4dCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBUZXh0KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuVGV4dDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVGV4dC5wcm90b3R5cGUsIFwibm9kZVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAzO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIFRleHQ7XG59KERhdGFOb2RlKSk7XG5leHBvcnRzLlRleHQgPSBUZXh0O1xuLyoqXG4gKiBDb21tZW50cyB3aXRoaW4gdGhlIGRvY3VtZW50LlxuICovXG52YXIgQ29tbWVudCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ29tbWVudCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBDb21tZW50KCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ29tbWVudDtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ29tbWVudC5wcm90b3R5cGUsIFwibm9kZVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiA4O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIENvbW1lbnQ7XG59KERhdGFOb2RlKSk7XG5leHBvcnRzLkNvbW1lbnQgPSBDb21tZW50O1xuLyoqXG4gKiBQcm9jZXNzaW5nIGluc3RydWN0aW9ucywgaW5jbHVkaW5nIGRvYyB0eXBlcy5cbiAqL1xudmFyIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoUHJvY2Vzc2luZ0luc3RydWN0aW9uLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFByb2Nlc3NpbmdJbnN0cnVjdGlvbihuYW1lLCBkYXRhKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMsIGRhdGEpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5EaXJlY3RpdmU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFByb2Nlc3NpbmdJbnN0cnVjdGlvbi5wcm90b3R5cGUsIFwibm9kZVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjtcbn0oRGF0YU5vZGUpKTtcbmV4cG9ydHMuUHJvY2Vzc2luZ0luc3RydWN0aW9uID0gUHJvY2Vzc2luZ0luc3RydWN0aW9uO1xuLyoqXG4gKiBBIGBOb2RlYCB0aGF0IGNhbiBoYXZlIGNoaWxkcmVuLlxuICovXG52YXIgTm9kZVdpdGhDaGlsZHJlbiA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoTm9kZVdpdGhDaGlsZHJlbiwgX3N1cGVyKTtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY2hpbGRyZW4gQ2hpbGRyZW4gb2YgdGhlIG5vZGUuIE9ubHkgY2VydGFpbiBub2RlIHR5cGVzIGNhbiBoYXZlIGNoaWxkcmVuLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIE5vZGVXaXRoQ2hpbGRyZW4oY2hpbGRyZW4pIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZVdpdGhDaGlsZHJlbi5wcm90b3R5cGUsIFwiZmlyc3RDaGlsZFwiLCB7XG4gICAgICAgIC8vIEFsaWFzZXNcbiAgICAgICAgLyoqIEZpcnN0IGNoaWxkIG9mIHRoZSBub2RlLiAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHJldHVybiAoX2EgPSB0aGlzLmNoaWxkcmVuWzBdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGVXaXRoQ2hpbGRyZW4ucHJvdG90eXBlLCBcImxhc3RDaGlsZFwiLCB7XG4gICAgICAgIC8qKiBMYXN0IGNoaWxkIG9mIHRoZSBub2RlLiAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlV2l0aENoaWxkcmVuLnByb3RvdHlwZSwgXCJjaGlsZE5vZGVzXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIGNoaWxkcmVufS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIE5vZGVXaXRoQ2hpbGRyZW47XG59KE5vZGUpKTtcbmV4cG9ydHMuTm9kZVdpdGhDaGlsZHJlbiA9IE5vZGVXaXRoQ2hpbGRyZW47XG52YXIgQ0RBVEEgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKENEQVRBLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENEQVRBKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIgIT09IG51bGwgJiYgX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgICAgICAgX3RoaXMudHlwZSA9IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ0RBVEE7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KENEQVRBLnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gQ0RBVEE7XG59KE5vZGVXaXRoQ2hpbGRyZW4pKTtcbmV4cG9ydHMuQ0RBVEEgPSBDREFUQTtcbi8qKlxuICogVGhlIHJvb3Qgbm9kZSBvZiB0aGUgZG9jdW1lbnQuXG4gKi9cbnZhciBEb2N1bWVudCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRG9jdW1lbnQsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRG9jdW1lbnQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Sb290O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEb2N1bWVudC5wcm90b3R5cGUsIFwibm9kZVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiA5O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIERvY3VtZW50O1xufShOb2RlV2l0aENoaWxkcmVuKSk7XG5leHBvcnRzLkRvY3VtZW50ID0gRG9jdW1lbnQ7XG4vKipcbiAqIEFuIGVsZW1lbnQgd2l0aGluIHRoZSBET00uXG4gKi9cbnZhciBFbGVtZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhFbGVtZW50LCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIHRhZywgZWcuIGBkaXZgLCBgc3BhbmAuXG4gICAgICogQHBhcmFtIGF0dHJpYnMgT2JqZWN0IG1hcHBpbmcgYXR0cmlidXRlIG5hbWVzIHRvIGF0dHJpYnV0ZSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIGNoaWxkcmVuIENoaWxkcmVuIG9mIHRoZSBub2RlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIEVsZW1lbnQobmFtZSwgYXR0cmlicywgY2hpbGRyZW4sIHR5cGUpIHtcbiAgICAgICAgaWYgKGNoaWxkcmVuID09PSB2b2lkIDApIHsgY2hpbGRyZW4gPSBbXTsgfVxuICAgICAgICBpZiAodHlwZSA9PT0gdm9pZCAwKSB7IHR5cGUgPSBuYW1lID09PSBcInNjcmlwdFwiXG4gICAgICAgICAgICA/IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuU2NyaXB0XG4gICAgICAgICAgICA6IG5hbWUgPT09IFwic3R5bGVcIlxuICAgICAgICAgICAgICAgID8gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5TdHlsZVxuICAgICAgICAgICAgICAgIDogZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UYWc7IH1cbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgY2hpbGRyZW4pIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICBfdGhpcy5hdHRyaWJzID0gYXR0cmlicztcbiAgICAgICAgX3RoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCBcIm5vZGVUeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50LnByb3RvdHlwZSwgXCJ0YWdOYW1lXCIsIHtcbiAgICAgICAgLy8gRE9NIExldmVsIDEgYWxpYXNlc1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgbmFtZX0uXG4gICAgICAgICAqIFtET00gc3BlY10oaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnKS1jb21wYXRpYmxlIGFsaWFzLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uYW1lO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCBcImF0dHJpYnV0ZXNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5hdHRyaWJzKS5tYXAoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgICAgIHJldHVybiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3RoaXMuYXR0cmlic1tuYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiAoX2EgPSBfdGhpc1tcIngtYXR0cmlic05hbWVzcGFjZVwiXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXg6IChfYiA9IF90aGlzW1wieC1hdHRyaWJzUHJlZml4XCJdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2JbbmFtZV0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBFbGVtZW50O1xufShOb2RlV2l0aENoaWxkcmVuKSk7XG5leHBvcnRzLkVsZW1lbnQgPSBFbGVtZW50O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGEgYEVsZW1lbnRgLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZnVuY3Rpb24gaXNUYWcobm9kZSkge1xuICAgIHJldHVybiAoMCwgZG9tZWxlbWVudHR5cGVfMS5pc1RhZykobm9kZSk7XG59XG5leHBvcnRzLmlzVGFnID0gaXNUYWc7XG4vKipcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaGFzIHRoZSB0eXBlIGBDREFUQWAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0NEQVRBKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkNEQVRBO1xufVxuZXhwb3J0cy5pc0NEQVRBID0gaXNDREFUQTtcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYFRleHRgLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZnVuY3Rpb24gaXNUZXh0KG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlRleHQ7XG59XG5leHBvcnRzLmlzVGV4dCA9IGlzVGV4dDtcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYENvbW1lbnRgLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZnVuY3Rpb24gaXNDb21tZW50KG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkNvbW1lbnQ7XG59XG5leHBvcnRzLmlzQ29tbWVudCA9IGlzQ29tbWVudDtcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYFByb2Nlc3NpbmdJbnN0cnVjdGlvbmAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0RpcmVjdGl2ZShub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5EaXJlY3RpdmU7XG59XG5leHBvcnRzLmlzRGlyZWN0aXZlID0gaXNEaXJlY3RpdmU7XG4vKipcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaGFzIHRoZSB0eXBlIGBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25gLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZnVuY3Rpb24gaXNEb2N1bWVudChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Sb290O1xufVxuZXhwb3J0cy5pc0RvY3VtZW50ID0gaXNEb2N1bWVudDtcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgY2hpbGRyZW4sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBoYXNDaGlsZHJlbihub2RlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChub2RlLCBcImNoaWxkcmVuXCIpO1xufVxuZXhwb3J0cy5oYXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVuO1xuLyoqXG4gKiBDbG9uZSBhIG5vZGUsIGFuZCBvcHRpb25hbGx5IGl0cyBjaGlsZHJlbi5cbiAqXG4gKiBAcGFyYW0gcmVjdXJzaXZlIENsb25lIGNoaWxkIG5vZGVzIGFzIHdlbGwuXG4gKiBAcmV0dXJucyBBIGNsb25lIG9mIHRoZSBub2RlLlxuICovXG5mdW5jdGlvbiBjbG9uZU5vZGUobm9kZSwgcmVjdXJzaXZlKSB7XG4gICAgaWYgKHJlY3Vyc2l2ZSA9PT0gdm9pZCAwKSB7IHJlY3Vyc2l2ZSA9IGZhbHNlOyB9XG4gICAgdmFyIHJlc3VsdDtcbiAgICBpZiAoaXNUZXh0KG5vZGUpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBUZXh0KG5vZGUuZGF0YSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzQ29tbWVudChub2RlKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgQ29tbWVudChub2RlLmRhdGEpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc1RhZyhub2RlKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSByZWN1cnNpdmUgPyBjbG9uZUNoaWxkcmVuKG5vZGUuY2hpbGRyZW4pIDogW107XG4gICAgICAgIHZhciBjbG9uZV8xID0gbmV3IEVsZW1lbnQobm9kZS5uYW1lLCBfX2Fzc2lnbih7fSwgbm9kZS5hdHRyaWJzKSwgY2hpbGRyZW4pO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gKGNoaWxkLnBhcmVudCA9IGNsb25lXzEpOyB9KTtcbiAgICAgICAgaWYgKG5vZGUubmFtZXNwYWNlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNsb25lXzEubmFtZXNwYWNlID0gbm9kZS5uYW1lc3BhY2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGVbXCJ4LWF0dHJpYnNOYW1lc3BhY2VcIl0pIHtcbiAgICAgICAgICAgIGNsb25lXzFbXCJ4LWF0dHJpYnNOYW1lc3BhY2VcIl0gPSBfX2Fzc2lnbih7fSwgbm9kZVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGVbXCJ4LWF0dHJpYnNQcmVmaXhcIl0pIHtcbiAgICAgICAgICAgIGNsb25lXzFbXCJ4LWF0dHJpYnNQcmVmaXhcIl0gPSBfX2Fzc2lnbih7fSwgbm9kZVtcIngtYXR0cmlic1ByZWZpeFwiXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gY2xvbmVfMTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNDREFUQShub2RlKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSByZWN1cnNpdmUgPyBjbG9uZUNoaWxkcmVuKG5vZGUuY2hpbGRyZW4pIDogW107XG4gICAgICAgIHZhciBjbG9uZV8yID0gbmV3IENEQVRBKGNoaWxkcmVuKTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIChjaGlsZC5wYXJlbnQgPSBjbG9uZV8yKTsgfSk7XG4gICAgICAgIHJlc3VsdCA9IGNsb25lXzI7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzRG9jdW1lbnQobm9kZSkpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gcmVjdXJzaXZlID8gY2xvbmVDaGlsZHJlbihub2RlLmNoaWxkcmVuKSA6IFtdO1xuICAgICAgICB2YXIgY2xvbmVfMyA9IG5ldyBEb2N1bWVudChjaGlsZHJlbik7XG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7IHJldHVybiAoY2hpbGQucGFyZW50ID0gY2xvbmVfMyk7IH0pO1xuICAgICAgICBpZiAobm9kZVtcIngtbW9kZVwiXSkge1xuICAgICAgICAgICAgY2xvbmVfM1tcIngtbW9kZVwiXSA9IG5vZGVbXCJ4LW1vZGVcIl07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gY2xvbmVfMztcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNEaXJlY3RpdmUobm9kZSkpIHtcbiAgICAgICAgdmFyIGluc3RydWN0aW9uID0gbmV3IFByb2Nlc3NpbmdJbnN0cnVjdGlvbihub2RlLm5hbWUsIG5vZGUuZGF0YSk7XG4gICAgICAgIGlmIChub2RlW1wieC1uYW1lXCJdICE9IG51bGwpIHtcbiAgICAgICAgICAgIGluc3RydWN0aW9uW1wieC1uYW1lXCJdID0gbm9kZVtcIngtbmFtZVwiXTtcbiAgICAgICAgICAgIGluc3RydWN0aW9uW1wieC1wdWJsaWNJZFwiXSA9IG5vZGVbXCJ4LXB1YmxpY0lkXCJdO1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bXCJ4LXN5c3RlbUlkXCJdID0gbm9kZVtcIngtc3lzdGVtSWRcIl07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gaW5zdHJ1Y3Rpb247XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWQgeWV0OiBcIi5jb25jYXQobm9kZS50eXBlKSk7XG4gICAgfVxuICAgIHJlc3VsdC5zdGFydEluZGV4ID0gbm9kZS5zdGFydEluZGV4O1xuICAgIHJlc3VsdC5lbmRJbmRleCA9IG5vZGUuZW5kSW5kZXg7XG4gICAgaWYgKG5vZGUuc291cmNlQ29kZUxvY2F0aW9uICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0LnNvdXJjZUNvZGVMb2NhdGlvbiA9IG5vZGUuc291cmNlQ29kZUxvY2F0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5jbG9uZU5vZGUgPSBjbG9uZU5vZGU7XG5mdW5jdGlvbiBjbG9uZUNoaWxkcmVuKGNoaWxkcykge1xuICAgIHZhciBjaGlsZHJlbiA9IGNoaWxkcy5tYXAoZnVuY3Rpb24gKGNoaWxkKSB7IHJldHVybiBjbG9uZU5vZGUoY2hpbGQsIHRydWUpOyB9KTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNoaWxkcmVuW2ldLnByZXYgPSBjaGlsZHJlbltpIC0gMV07XG4gICAgICAgIGNoaWxkcmVuW2kgLSAxXS5uZXh0ID0gY2hpbGRyZW5baV07XG4gICAgfVxuICAgIHJldHVybiBjaGlsZHJlbjtcbn1cbiIsICJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19leHBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4cG9ydHMsIHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Eb21IYW5kbGVyID0gdm9pZCAwO1xudmFyIGRvbWVsZW1lbnR0eXBlXzEgPSByZXF1aXJlKFwiZG9tZWxlbWVudHR5cGVcIik7XG52YXIgbm9kZV9qc18xID0gcmVxdWlyZShcIi4vbm9kZS5qc1wiKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9ub2RlLmpzXCIpLCBleHBvcnRzKTtcbi8vIERlZmF1bHQgb3B0aW9uc1xudmFyIGRlZmF1bHRPcHRzID0ge1xuICAgIHdpdGhTdGFydEluZGljZXM6IGZhbHNlLFxuICAgIHdpdGhFbmRJbmRpY2VzOiBmYWxzZSxcbiAgICB4bWxNb2RlOiBmYWxzZSxcbn07XG52YXIgRG9tSGFuZGxlciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgQ2FsbGVkIG9uY2UgcGFyc2luZyBoYXMgY29tcGxldGVkLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFNldHRpbmdzIGZvciB0aGUgaGFuZGxlci5cbiAgICAgKiBAcGFyYW0gZWxlbWVudENCIENhbGxiYWNrIHdoZW5ldmVyIGEgdGFnIGlzIGNsb3NlZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBEb21IYW5kbGVyKGNhbGxiYWNrLCBvcHRpb25zLCBlbGVtZW50Q0IpIHtcbiAgICAgICAgLyoqIFRoZSBlbGVtZW50cyBvZiB0aGUgRE9NICovXG4gICAgICAgIHRoaXMuZG9tID0gW107XG4gICAgICAgIC8qKiBUaGUgcm9vdCBlbGVtZW50IGZvciB0aGUgRE9NICovXG4gICAgICAgIHRoaXMucm9vdCA9IG5ldyBub2RlX2pzXzEuRG9jdW1lbnQodGhpcy5kb20pO1xuICAgICAgICAvKiogSW5kaWNhdGVkIHdoZXRoZXIgcGFyc2luZyBoYXMgYmVlbiBjb21wbGV0ZWQuICovXG4gICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICAvKiogU3RhY2sgb2Ygb3BlbiB0YWdzLiAqL1xuICAgICAgICB0aGlzLnRhZ1N0YWNrID0gW3RoaXMucm9vdF07XG4gICAgICAgIC8qKiBBIGRhdGEgbm9kZSB0aGF0IGlzIHN0aWxsIGJlaW5nIHdyaXR0ZW4gdG8uICovXG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgICAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBwYXJzZXIgaW5zdGFuY2UuIFVzZWQgZm9yIGxvY2F0aW9uIGluZm9ybWF0aW9uLiAqL1xuICAgICAgICB0aGlzLnBhcnNlciA9IG51bGw7XG4gICAgICAgIC8vIE1ha2UgaXQgcG9zc2libGUgdG8gc2tpcCBhcmd1bWVudHMsIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eVxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgZWxlbWVudENCID0gb3B0aW9ucztcbiAgICAgICAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0cztcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gY2FsbGJhY2s7XG4gICAgICAgICAgICBjYWxsYmFjayA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2sgIT09IG51bGwgJiYgY2FsbGJhY2sgIT09IHZvaWQgMCA/IGNhbGxiYWNrIDogbnVsbDtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDogZGVmYXVsdE9wdHM7XG4gICAgICAgIHRoaXMuZWxlbWVudENCID0gZWxlbWVudENCICE9PSBudWxsICYmIGVsZW1lbnRDQiAhPT0gdm9pZCAwID8gZWxlbWVudENCIDogbnVsbDtcbiAgICB9XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25wYXJzZXJpbml0ID0gZnVuY3Rpb24gKHBhcnNlcikge1xuICAgICAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcbiAgICB9O1xuICAgIC8vIFJlc2V0cyB0aGUgaGFuZGxlciBiYWNrIHRvIHN0YXJ0aW5nIHN0YXRlXG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5kb20gPSBbXTtcbiAgICAgICAgdGhpcy5yb290ID0gbmV3IG5vZGVfanNfMS5Eb2N1bWVudCh0aGlzLmRvbSk7XG4gICAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRhZ1N0YWNrID0gW3RoaXMucm9vdF07XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLnBhcnNlciA9IG51bGw7XG4gICAgfTtcbiAgICAvLyBTaWduYWxzIHRoZSBoYW5kbGVyIHRoYXQgcGFyc2luZyBpcyBkb25lXG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25lbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvbmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICAgICAgdGhpcy5oYW5kbGVDYWxsYmFjayhudWxsKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uZXJyb3IgPSBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVDYWxsYmFjayhlcnJvcik7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmNsb3NldGFnID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmxhc3ROb2RlID0gbnVsbDtcbiAgICAgICAgdmFyIGVsZW0gPSB0aGlzLnRhZ1N0YWNrLnBvcCgpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhFbmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBlbGVtLmVuZEluZGV4ID0gdGhpcy5wYXJzZXIuZW5kSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWxlbWVudENCKVxuICAgICAgICAgICAgdGhpcy5lbGVtZW50Q0IoZWxlbSk7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbm9wZW50YWcgPSBmdW5jdGlvbiAobmFtZSwgYXR0cmlicykge1xuICAgICAgICB2YXIgdHlwZSA9IHRoaXMub3B0aW9ucy54bWxNb2RlID8gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UYWcgOiB1bmRlZmluZWQ7XG4gICAgICAgIHZhciBlbGVtZW50ID0gbmV3IG5vZGVfanNfMS5FbGVtZW50KG5hbWUsIGF0dHJpYnMsIHVuZGVmaW5lZCwgdHlwZSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShlbGVtZW50KTtcbiAgICAgICAgdGhpcy50YWdTdGFjay5wdXNoKGVsZW1lbnQpO1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub250ZXh0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgdmFyIGxhc3ROb2RlID0gdGhpcy5sYXN0Tm9kZTtcbiAgICAgICAgaWYgKGxhc3ROb2RlICYmIGxhc3ROb2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuVGV4dCkge1xuICAgICAgICAgICAgbGFzdE5vZGUuZGF0YSArPSBkYXRhO1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy53aXRoRW5kSW5kaWNlcykge1xuICAgICAgICAgICAgICAgIGxhc3ROb2RlLmVuZEluZGV4ID0gdGhpcy5wYXJzZXIuZW5kSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuVGV4dChkYXRhKTtcbiAgICAgICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICAgICAgICAgIHRoaXMubGFzdE5vZGUgPSBub2RlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmNvbW1lbnQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBpZiAodGhpcy5sYXN0Tm9kZSAmJiB0aGlzLmxhc3ROb2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ29tbWVudCkge1xuICAgICAgICAgICAgdGhpcy5sYXN0Tm9kZS5kYXRhICs9IGRhdGE7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5vZGUgPSBuZXcgbm9kZV9qc18xLkNvbW1lbnQoZGF0YSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG5vZGU7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmNvbW1lbnRlbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25jZGF0YXN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgdGV4dCA9IG5ldyBub2RlX2pzXzEuVGV4dChcIlwiKTtcbiAgICAgICAgdmFyIG5vZGUgPSBuZXcgbm9kZV9qc18xLkNEQVRBKFt0ZXh0XSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICAgICAgdGV4dC5wYXJlbnQgPSBub2RlO1xuICAgICAgICB0aGlzLmxhc3ROb2RlID0gdGV4dDtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY2RhdGFlbmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25wcm9jZXNzaW5naW5zdHJ1Y3Rpb24gPSBmdW5jdGlvbiAobmFtZSwgZGF0YSkge1xuICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5hbWUsIGRhdGEpO1xuICAgICAgICB0aGlzLmFkZE5vZGUobm9kZSk7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5oYW5kbGVDYWxsYmFjayA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdGhpcy5jYWxsYmFjayhlcnJvciwgdGhpcy5kb20pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUuYWRkTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLnRhZ1N0YWNrW3RoaXMudGFnU3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIHZhciBwcmV2aW91c1NpYmxpbmcgPSBwYXJlbnQuY2hpbGRyZW5bcGFyZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhTdGFydEluZGljZXMpIHtcbiAgICAgICAgICAgIG5vZGUuc3RhcnRJbmRleCA9IHRoaXMucGFyc2VyLnN0YXJ0SW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy53aXRoRW5kSW5kaWNlcykge1xuICAgICAgICAgICAgbm9kZS5lbmRJbmRleCA9IHRoaXMucGFyc2VyLmVuZEluZGV4O1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xuICAgICAgICBpZiAocHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgICAgICBub2RlLnByZXYgPSBwcmV2aW91c1NpYmxpbmc7XG4gICAgICAgICAgICBwcmV2aW91c1NpYmxpbmcubmV4dCA9IG5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIERvbUhhbmRsZXI7XG59KCkpO1xuZXhwb3J0cy5Eb21IYW5kbGVyID0gRG9tSGFuZGxlcjtcbmV4cG9ydHMuZGVmYXVsdCA9IERvbUhhbmRsZXI7XG4iLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmF0dHJpYnV0ZU5hbWVzID0gZXhwb3J0cy5lbGVtZW50TmFtZXMgPSB2b2lkIDA7XG5leHBvcnRzLmVsZW1lbnROYW1lcyA9IG5ldyBNYXAoW1xuICAgIFwiYWx0R2x5cGhcIixcbiAgICBcImFsdEdseXBoRGVmXCIsXG4gICAgXCJhbHRHbHlwaEl0ZW1cIixcbiAgICBcImFuaW1hdGVDb2xvclwiLFxuICAgIFwiYW5pbWF0ZU1vdGlvblwiLFxuICAgIFwiYW5pbWF0ZVRyYW5zZm9ybVwiLFxuICAgIFwiY2xpcFBhdGhcIixcbiAgICBcImZlQmxlbmRcIixcbiAgICBcImZlQ29sb3JNYXRyaXhcIixcbiAgICBcImZlQ29tcG9uZW50VHJhbnNmZXJcIixcbiAgICBcImZlQ29tcG9zaXRlXCIsXG4gICAgXCJmZUNvbnZvbHZlTWF0cml4XCIsXG4gICAgXCJmZURpZmZ1c2VMaWdodGluZ1wiLFxuICAgIFwiZmVEaXNwbGFjZW1lbnRNYXBcIixcbiAgICBcImZlRGlzdGFudExpZ2h0XCIsXG4gICAgXCJmZURyb3BTaGFkb3dcIixcbiAgICBcImZlRmxvb2RcIixcbiAgICBcImZlRnVuY0FcIixcbiAgICBcImZlRnVuY0JcIixcbiAgICBcImZlRnVuY0dcIixcbiAgICBcImZlRnVuY1JcIixcbiAgICBcImZlR2F1c3NpYW5CbHVyXCIsXG4gICAgXCJmZUltYWdlXCIsXG4gICAgXCJmZU1lcmdlXCIsXG4gICAgXCJmZU1lcmdlTm9kZVwiLFxuICAgIFwiZmVNb3JwaG9sb2d5XCIsXG4gICAgXCJmZU9mZnNldFwiLFxuICAgIFwiZmVQb2ludExpZ2h0XCIsXG4gICAgXCJmZVNwZWN1bGFyTGlnaHRpbmdcIixcbiAgICBcImZlU3BvdExpZ2h0XCIsXG4gICAgXCJmZVRpbGVcIixcbiAgICBcImZlVHVyYnVsZW5jZVwiLFxuICAgIFwiZm9yZWlnbk9iamVjdFwiLFxuICAgIFwiZ2x5cGhSZWZcIixcbiAgICBcImxpbmVhckdyYWRpZW50XCIsXG4gICAgXCJyYWRpYWxHcmFkaWVudFwiLFxuICAgIFwidGV4dFBhdGhcIixcbl0ubWFwKGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIFt2YWwudG9Mb3dlckNhc2UoKSwgdmFsXTsgfSkpO1xuZXhwb3J0cy5hdHRyaWJ1dGVOYW1lcyA9IG5ldyBNYXAoW1xuICAgIFwiZGVmaW5pdGlvblVSTFwiLFxuICAgIFwiYXR0cmlidXRlTmFtZVwiLFxuICAgIFwiYXR0cmlidXRlVHlwZVwiLFxuICAgIFwiYmFzZUZyZXF1ZW5jeVwiLFxuICAgIFwiYmFzZVByb2ZpbGVcIixcbiAgICBcImNhbGNNb2RlXCIsXG4gICAgXCJjbGlwUGF0aFVuaXRzXCIsXG4gICAgXCJkaWZmdXNlQ29uc3RhbnRcIixcbiAgICBcImVkZ2VNb2RlXCIsXG4gICAgXCJmaWx0ZXJVbml0c1wiLFxuICAgIFwiZ2x5cGhSZWZcIixcbiAgICBcImdyYWRpZW50VHJhbnNmb3JtXCIsXG4gICAgXCJncmFkaWVudFVuaXRzXCIsXG4gICAgXCJrZXJuZWxNYXRyaXhcIixcbiAgICBcImtlcm5lbFVuaXRMZW5ndGhcIixcbiAgICBcImtleVBvaW50c1wiLFxuICAgIFwia2V5U3BsaW5lc1wiLFxuICAgIFwia2V5VGltZXNcIixcbiAgICBcImxlbmd0aEFkanVzdFwiLFxuICAgIFwibGltaXRpbmdDb25lQW5nbGVcIixcbiAgICBcIm1hcmtlckhlaWdodFwiLFxuICAgIFwibWFya2VyVW5pdHNcIixcbiAgICBcIm1hcmtlcldpZHRoXCIsXG4gICAgXCJtYXNrQ29udGVudFVuaXRzXCIsXG4gICAgXCJtYXNrVW5pdHNcIixcbiAgICBcIm51bU9jdGF2ZXNcIixcbiAgICBcInBhdGhMZW5ndGhcIixcbiAgICBcInBhdHRlcm5Db250ZW50VW5pdHNcIixcbiAgICBcInBhdHRlcm5UcmFuc2Zvcm1cIixcbiAgICBcInBhdHRlcm5Vbml0c1wiLFxuICAgIFwicG9pbnRzQXRYXCIsXG4gICAgXCJwb2ludHNBdFlcIixcbiAgICBcInBvaW50c0F0WlwiLFxuICAgIFwicHJlc2VydmVBbHBoYVwiLFxuICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLFxuICAgIFwicHJpbWl0aXZlVW5pdHNcIixcbiAgICBcInJlZlhcIixcbiAgICBcInJlZllcIixcbiAgICBcInJlcGVhdENvdW50XCIsXG4gICAgXCJyZXBlYXREdXJcIixcbiAgICBcInJlcXVpcmVkRXh0ZW5zaW9uc1wiLFxuICAgIFwicmVxdWlyZWRGZWF0dXJlc1wiLFxuICAgIFwic3BlY3VsYXJDb25zdGFudFwiLFxuICAgIFwic3BlY3VsYXJFeHBvbmVudFwiLFxuICAgIFwic3ByZWFkTWV0aG9kXCIsXG4gICAgXCJzdGFydE9mZnNldFwiLFxuICAgIFwic3RkRGV2aWF0aW9uXCIsXG4gICAgXCJzdGl0Y2hUaWxlc1wiLFxuICAgIFwic3VyZmFjZVNjYWxlXCIsXG4gICAgXCJzeXN0ZW1MYW5ndWFnZVwiLFxuICAgIFwidGFibGVWYWx1ZXNcIixcbiAgICBcInRhcmdldFhcIixcbiAgICBcInRhcmdldFlcIixcbiAgICBcInRleHRMZW5ndGhcIixcbiAgICBcInZpZXdCb3hcIixcbiAgICBcInZpZXdUYXJnZXRcIixcbiAgICBcInhDaGFubmVsU2VsZWN0b3JcIixcbiAgICBcInlDaGFubmVsU2VsZWN0b3JcIixcbiAgICBcInpvb21BbmRQYW5cIixcbl0ubWFwKGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIFt2YWwudG9Mb3dlckNhc2UoKSwgdmFsXTsgfSkpO1xuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX3NldE1vZHVsZURlZmF1bHQpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XG59KTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5yZW5kZXIgPSB2b2lkIDA7XG4vKlxuICogTW9kdWxlIGRlcGVuZGVuY2llc1xuICovXG52YXIgRWxlbWVudFR5cGUgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcImRvbWVsZW1lbnR0eXBlXCIpKTtcbnZhciBlbnRpdGllc18xID0gcmVxdWlyZShcImVudGl0aWVzXCIpO1xuLyoqXG4gKiBNaXhlZC1jYXNlIFNWRyBhbmQgTWF0aE1MIHRhZ3MgJiBhdHRyaWJ1dGVzXG4gKiByZWNvZ25pemVkIGJ5IHRoZSBIVE1MIHBhcnNlci5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwYXJzaW5nLW1haW4taW5mb3JlaWduXG4gKi9cbnZhciBmb3JlaWduTmFtZXNfanNfMSA9IHJlcXVpcmUoXCIuL2ZvcmVpZ25OYW1lcy5qc1wiKTtcbnZhciB1bmVuY29kZWRFbGVtZW50cyA9IG5ldyBTZXQoW1xuICAgIFwic3R5bGVcIixcbiAgICBcInNjcmlwdFwiLFxuICAgIFwieG1wXCIsXG4gICAgXCJpZnJhbWVcIixcbiAgICBcIm5vZW1iZWRcIixcbiAgICBcIm5vZnJhbWVzXCIsXG4gICAgXCJwbGFpbnRleHRcIixcbiAgICBcIm5vc2NyaXB0XCIsXG5dKTtcbmZ1bmN0aW9uIHJlcGxhY2VRdW90ZXModmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIik7XG59XG4vKipcbiAqIEZvcm1hdCBhdHRyaWJ1dGVzXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgb3B0cykge1xuICAgIHZhciBfYTtcbiAgICBpZiAoIWF0dHJpYnV0ZXMpXG4gICAgICAgIHJldHVybjtcbiAgICB2YXIgZW5jb2RlID0gKChfYSA9IG9wdHMuZW5jb2RlRW50aXRpZXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG9wdHMuZGVjb2RlRW50aXRpZXMpID09PSBmYWxzZVxuICAgICAgICA/IHJlcGxhY2VRdW90ZXNcbiAgICAgICAgOiBvcHRzLnhtbE1vZGUgfHwgb3B0cy5lbmNvZGVFbnRpdGllcyAhPT0gXCJ1dGY4XCJcbiAgICAgICAgICAgID8gZW50aXRpZXNfMS5lbmNvZGVYTUxcbiAgICAgICAgICAgIDogZW50aXRpZXNfMS5lc2NhcGVBdHRyaWJ1dGU7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICB2YXIgdmFsdWUgPSAoX2EgPSBhdHRyaWJ1dGVzW2tleV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFwiXCI7XG4gICAgICAgIGlmIChvcHRzLnhtbE1vZGUgPT09IFwiZm9yZWlnblwiKSB7XG4gICAgICAgICAgICAvKiBGaXggdXAgbWl4ZWQtY2FzZSBhdHRyaWJ1dGUgbmFtZXMgKi9cbiAgICAgICAgICAgIGtleSA9IChfYiA9IGZvcmVpZ25OYW1lc19qc18xLmF0dHJpYnV0ZU5hbWVzLmdldChrZXkpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBrZXk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvcHRzLmVtcHR5QXR0cnMgJiYgIW9wdHMueG1sTW9kZSAmJiB2YWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQoa2V5LCBcIj1cXFwiXCIpLmNvbmNhdChlbmNvZGUodmFsdWUpLCBcIlxcXCJcIik7XG4gICAgfSlcbiAgICAgICAgLmpvaW4oXCIgXCIpO1xufVxuLyoqXG4gKiBTZWxmLWVuY2xvc2luZyB0YWdzXG4gKi9cbnZhciBzaW5nbGVUYWcgPSBuZXcgU2V0KFtcbiAgICBcImFyZWFcIixcbiAgICBcImJhc2VcIixcbiAgICBcImJhc2Vmb250XCIsXG4gICAgXCJiclwiLFxuICAgIFwiY29sXCIsXG4gICAgXCJjb21tYW5kXCIsXG4gICAgXCJlbWJlZFwiLFxuICAgIFwiZnJhbWVcIixcbiAgICBcImhyXCIsXG4gICAgXCJpbWdcIixcbiAgICBcImlucHV0XCIsXG4gICAgXCJpc2luZGV4XCIsXG4gICAgXCJrZXlnZW5cIixcbiAgICBcImxpbmtcIixcbiAgICBcIm1ldGFcIixcbiAgICBcInBhcmFtXCIsXG4gICAgXCJzb3VyY2VcIixcbiAgICBcInRyYWNrXCIsXG4gICAgXCJ3YnJcIixcbl0pO1xuLyoqXG4gKiBSZW5kZXJzIGEgRE9NIG5vZGUgb3IgYW4gYXJyYXkgb2YgRE9NIG5vZGVzIHRvIGEgc3RyaW5nLlxuICpcbiAqIENhbiBiZSB0aG91Z2h0IG9mIGFzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBgb3V0ZXJIVE1MYCBvZiB0aGUgcGFzc2VkIG5vZGUocykuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBiZSByZW5kZXJlZC5cbiAqIEBwYXJhbSBvcHRpb25zIENoYW5nZXMgc2VyaWFsaXphdGlvbiBiZWhhdmlvclxuICovXG5mdW5jdGlvbiByZW5kZXIobm9kZSwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIG5vZGVzID0gXCJsZW5ndGhcIiBpbiBub2RlID8gbm9kZSA6IFtub2RlXTtcbiAgICB2YXIgb3V0cHV0ID0gXCJcIjtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG91dHB1dCArPSByZW5kZXJOb2RlKG5vZGVzW2ldLCBvcHRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbn1cbmV4cG9ydHMucmVuZGVyID0gcmVuZGVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gcmVuZGVyO1xuZnVuY3Rpb24gcmVuZGVyTm9kZShub2RlLCBvcHRpb25zKSB7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5Sb290OlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihub2RlLmNoaWxkcmVuLCBvcHRpb25zKTtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBkb24ndCB1c2UgYERvY3R5cGVgIHlldFxuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLkRvY3R5cGU6XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuRGlyZWN0aXZlOlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlckRpcmVjdGl2ZShub2RlKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5Db21tZW50OlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlckNvbW1lbnQobm9kZSk7XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuQ0RBVEE6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyQ2RhdGEobm9kZSk7XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuU2NyaXB0OlxuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLlN0eWxlOlxuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLlRhZzpcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJUYWcobm9kZSwgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuVGV4dDpcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0KG5vZGUsIG9wdGlvbnMpO1xuICAgIH1cbn1cbnZhciBmb3JlaWduTW9kZUludGVncmF0aW9uUG9pbnRzID0gbmV3IFNldChbXG4gICAgXCJtaVwiLFxuICAgIFwibW9cIixcbiAgICBcIm1uXCIsXG4gICAgXCJtc1wiLFxuICAgIFwibXRleHRcIixcbiAgICBcImFubm90YXRpb24teG1sXCIsXG4gICAgXCJmb3JlaWduT2JqZWN0XCIsXG4gICAgXCJkZXNjXCIsXG4gICAgXCJ0aXRsZVwiLFxuXSk7XG52YXIgZm9yZWlnbkVsZW1lbnRzID0gbmV3IFNldChbXCJzdmdcIiwgXCJtYXRoXCJdKTtcbmZ1bmN0aW9uIHJlbmRlclRhZyhlbGVtLCBvcHRzKSB7XG4gICAgdmFyIF9hO1xuICAgIC8vIEhhbmRsZSBTVkcgLyBNYXRoTUwgaW4gSFRNTFxuICAgIGlmIChvcHRzLnhtbE1vZGUgPT09IFwiZm9yZWlnblwiKSB7XG4gICAgICAgIC8qIEZpeCB1cCBtaXhlZC1jYXNlIGVsZW1lbnQgbmFtZXMgKi9cbiAgICAgICAgZWxlbS5uYW1lID0gKF9hID0gZm9yZWlnbk5hbWVzX2pzXzEuZWxlbWVudE5hbWVzLmdldChlbGVtLm5hbWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBlbGVtLm5hbWU7XG4gICAgICAgIC8qIEV4aXQgZm9yZWlnbiBtb2RlIGF0IGludGVncmF0aW9uIHBvaW50cyAqL1xuICAgICAgICBpZiAoZWxlbS5wYXJlbnQgJiZcbiAgICAgICAgICAgIGZvcmVpZ25Nb2RlSW50ZWdyYXRpb25Qb2ludHMuaGFzKGVsZW0ucGFyZW50Lm5hbWUpKSB7XG4gICAgICAgICAgICBvcHRzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdHMpLCB7IHhtbE1vZGU6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghb3B0cy54bWxNb2RlICYmIGZvcmVpZ25FbGVtZW50cy5oYXMoZWxlbS5uYW1lKSkge1xuICAgICAgICBvcHRzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIG9wdHMpLCB7IHhtbE1vZGU6IFwiZm9yZWlnblwiIH0pO1xuICAgIH1cbiAgICB2YXIgdGFnID0gXCI8XCIuY29uY2F0KGVsZW0ubmFtZSk7XG4gICAgdmFyIGF0dHJpYnMgPSBmb3JtYXRBdHRyaWJ1dGVzKGVsZW0uYXR0cmlicywgb3B0cyk7XG4gICAgaWYgKGF0dHJpYnMpIHtcbiAgICAgICAgdGFnICs9IFwiIFwiLmNvbmNhdChhdHRyaWJzKTtcbiAgICB9XG4gICAgaWYgKGVsZW0uY2hpbGRyZW4ubGVuZ3RoID09PSAwICYmXG4gICAgICAgIChvcHRzLnhtbE1vZGVcbiAgICAgICAgICAgID8gLy8gSW4gWE1MIG1vZGUgb3IgZm9yZWlnbiBtb2RlLCBhbmQgdXNlciBoYXNuJ3QgZXhwbGljaXRseSB0dXJuZWQgb2ZmIHNlbGYtY2xvc2luZyB0YWdzXG4gICAgICAgICAgICAgICAgb3B0cy5zZWxmQ2xvc2luZ1RhZ3MgIT09IGZhbHNlXG4gICAgICAgICAgICA6IC8vIFVzZXIgZXhwbGljaXRseSBhc2tlZCBmb3Igc2VsZi1jbG9zaW5nIHRhZ3MsIGV2ZW4gaW4gSFRNTCBtb2RlXG4gICAgICAgICAgICAgICAgb3B0cy5zZWxmQ2xvc2luZ1RhZ3MgJiYgc2luZ2xlVGFnLmhhcyhlbGVtLm5hbWUpKSkge1xuICAgICAgICBpZiAoIW9wdHMueG1sTW9kZSlcbiAgICAgICAgICAgIHRhZyArPSBcIiBcIjtcbiAgICAgICAgdGFnICs9IFwiLz5cIjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhZyArPSBcIj5cIjtcbiAgICAgICAgaWYgKGVsZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGFnICs9IHJlbmRlcihlbGVtLmNoaWxkcmVuLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0cy54bWxNb2RlIHx8ICFzaW5nbGVUYWcuaGFzKGVsZW0ubmFtZSkpIHtcbiAgICAgICAgICAgIHRhZyArPSBcIjwvXCIuY29uY2F0KGVsZW0ubmFtZSwgXCI+XCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YWc7XG59XG5mdW5jdGlvbiByZW5kZXJEaXJlY3RpdmUoZWxlbSkge1xuICAgIHJldHVybiBcIjxcIi5jb25jYXQoZWxlbS5kYXRhLCBcIj5cIik7XG59XG5mdW5jdGlvbiByZW5kZXJUZXh0KGVsZW0sIG9wdHMpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGRhdGEgPSBlbGVtLmRhdGEgfHwgXCJcIjtcbiAgICAvLyBJZiBlbnRpdGllcyB3ZXJlbid0IGRlY29kZWQsIG5vIG5lZWQgdG8gZW5jb2RlIHRoZW0gYmFja1xuICAgIGlmICgoKF9hID0gb3B0cy5lbmNvZGVFbnRpdGllcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogb3B0cy5kZWNvZGVFbnRpdGllcykgIT09IGZhbHNlICYmXG4gICAgICAgICEoIW9wdHMueG1sTW9kZSAmJlxuICAgICAgICAgICAgZWxlbS5wYXJlbnQgJiZcbiAgICAgICAgICAgIHVuZW5jb2RlZEVsZW1lbnRzLmhhcyhlbGVtLnBhcmVudC5uYW1lKSkpIHtcbiAgICAgICAgZGF0YSA9XG4gICAgICAgICAgICBvcHRzLnhtbE1vZGUgfHwgb3B0cy5lbmNvZGVFbnRpdGllcyAhPT0gXCJ1dGY4XCJcbiAgICAgICAgICAgICAgICA/ICgwLCBlbnRpdGllc18xLmVuY29kZVhNTCkoZGF0YSlcbiAgICAgICAgICAgICAgICA6ICgwLCBlbnRpdGllc18xLmVzY2FwZVRleHQpKGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbn1cbmZ1bmN0aW9uIHJlbmRlckNkYXRhKGVsZW0pIHtcbiAgICByZXR1cm4gXCI8IVtDREFUQVtcIi5jb25jYXQoZWxlbS5jaGlsZHJlblswXS5kYXRhLCBcIl1dPlwiKTtcbn1cbmZ1bmN0aW9uIHJlbmRlckNvbW1lbnQoZWxlbSkge1xuICAgIHJldHVybiBcIjwhLS1cIi5jb25jYXQoZWxlbS5kYXRhLCBcIi0tPlwiKTtcbn1cbiIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNVbmRlZmluZWRDb2RlUG9pbnQgPSBleHBvcnRzLmlzQ29udHJvbENvZGVQb2ludCA9IGV4cG9ydHMuZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludCA9IGV4cG9ydHMuaXNTdXJyb2dhdGVQYWlyID0gZXhwb3J0cy5pc1N1cnJvZ2F0ZSA9IGV4cG9ydHMuU0VRVUVOQ0VTID0gZXhwb3J0cy5DT0RFX1BPSU5UUyA9IGV4cG9ydHMuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSID0gdm9pZCAwO1xuY29uc3QgVU5ERUZJTkVEX0NPREVfUE9JTlRTID0gbmV3IFNldChbXG4gICAgNjU1MzQsIDY1NTM1LCAxMzEwNzAsIDEzMTA3MSwgMTk2NjA2LCAxOTY2MDcsIDI2MjE0MiwgMjYyMTQzLCAzMjc2NzgsIDMyNzY3OSwgMzkzMjE0LFxuICAgIDM5MzIxNSwgNDU4NzUwLCA0NTg3NTEsIDUyNDI4NiwgNTI0Mjg3LCA1ODk4MjIsIDU4OTgyMywgNjU1MzU4LCA2NTUzNTksIDcyMDg5NCxcbiAgICA3MjA4OTUsIDc4NjQzMCwgNzg2NDMxLCA4NTE5NjYsIDg1MTk2NywgOTE3NTAyLCA5MTc1MDMsIDk4MzAzOCwgOTgzMDM5LCAxMDQ4NTc0LFxuICAgIDEwNDg1NzUsIDExMTQxMTAsIDExMTQxMTEsXG5dKTtcbmV4cG9ydHMuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSID0gJ1xcdUZGRkQnO1xudmFyIENPREVfUE9JTlRTO1xuKGZ1bmN0aW9uIChDT0RFX1BPSU5UUykge1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiRU9GXCJdID0gLTFdID0gXCJFT0ZcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIk5VTExcIl0gPSAwXSA9IFwiTlVMTFwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiVEFCVUxBVElPTlwiXSA9IDldID0gXCJUQUJVTEFUSU9OXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJDQVJSSUFHRV9SRVRVUk5cIl0gPSAxM10gPSBcIkNBUlJJQUdFX1JFVFVSTlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTElORV9GRUVEXCJdID0gMTBdID0gXCJMSU5FX0ZFRURcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkZPUk1fRkVFRFwiXSA9IDEyXSA9IFwiRk9STV9GRUVEXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJTUEFDRVwiXSA9IDMyXSA9IFwiU1BBQ0VcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkVYQ0xBTUFUSU9OX01BUktcIl0gPSAzM10gPSBcIkVYQ0xBTUFUSU9OX01BUktcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlFVT1RBVElPTl9NQVJLXCJdID0gMzRdID0gXCJRVU9UQVRJT05fTUFSS1wiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTlVNQkVSX1NJR05cIl0gPSAzNV0gPSBcIk5VTUJFUl9TSUdOXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJBTVBFUlNBTkRcIl0gPSAzOF0gPSBcIkFNUEVSU0FORFwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiQVBPU1RST1BIRVwiXSA9IDM5XSA9IFwiQVBPU1RST1BIRVwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiSFlQSEVOX01JTlVTXCJdID0gNDVdID0gXCJIWVBIRU5fTUlOVVNcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlNPTElEVVNcIl0gPSA0N10gPSBcIlNPTElEVVNcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkRJR0lUXzBcIl0gPSA0OF0gPSBcIkRJR0lUXzBcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkRJR0lUXzlcIl0gPSA1N10gPSBcIkRJR0lUXzlcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlNFTUlDT0xPTlwiXSA9IDU5XSA9IFwiU0VNSUNPTE9OXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMRVNTX1RIQU5fU0lHTlwiXSA9IDYwXSA9IFwiTEVTU19USEFOX1NJR05cIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkVRVUFMU19TSUdOXCJdID0gNjFdID0gXCJFUVVBTFNfU0lHTlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiR1JFQVRFUl9USEFOX1NJR05cIl0gPSA2Ml0gPSBcIkdSRUFURVJfVEhBTl9TSUdOXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJRVUVTVElPTl9NQVJLXCJdID0gNjNdID0gXCJRVUVTVElPTl9NQVJLXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMQVRJTl9DQVBJVEFMX0FcIl0gPSA2NV0gPSBcIkxBVElOX0NBUElUQUxfQVwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTEFUSU5fQ0FQSVRBTF9GXCJdID0gNzBdID0gXCJMQVRJTl9DQVBJVEFMX0ZcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkxBVElOX0NBUElUQUxfWFwiXSA9IDg4XSA9IFwiTEFUSU5fQ0FQSVRBTF9YXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMQVRJTl9DQVBJVEFMX1pcIl0gPSA5MF0gPSBcIkxBVElOX0NBUElUQUxfWlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiUklHSFRfU1FVQVJFX0JSQUNLRVRcIl0gPSA5M10gPSBcIlJJR0hUX1NRVUFSRV9CUkFDS0VUXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJHUkFWRV9BQ0NFTlRcIl0gPSA5Nl0gPSBcIkdSQVZFX0FDQ0VOVFwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTEFUSU5fU01BTExfQVwiXSA9IDk3XSA9IFwiTEFUSU5fU01BTExfQVwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTEFUSU5fU01BTExfRlwiXSA9IDEwMl0gPSBcIkxBVElOX1NNQUxMX0ZcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkxBVElOX1NNQUxMX1hcIl0gPSAxMjBdID0gXCJMQVRJTl9TTUFMTF9YXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMQVRJTl9TTUFMTF9aXCJdID0gMTIyXSA9IFwiTEFUSU5fU01BTExfWlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiUkVQTEFDRU1FTlRfQ0hBUkFDVEVSXCJdID0gNjU1MzNdID0gXCJSRVBMQUNFTUVOVF9DSEFSQUNURVJcIjtcbn0pKENPREVfUE9JTlRTID0gZXhwb3J0cy5DT0RFX1BPSU5UUyB8fCAoZXhwb3J0cy5DT0RFX1BPSU5UUyA9IHt9KSk7XG5leHBvcnRzLlNFUVVFTkNFUyA9IHtcbiAgICBEQVNIX0RBU0g6ICctLScsXG4gICAgQ0RBVEFfU1RBUlQ6ICdbQ0RBVEFbJyxcbiAgICBET0NUWVBFOiAnZG9jdHlwZScsXG4gICAgU0NSSVBUOiAnc2NyaXB0JyxcbiAgICBQVUJMSUM6ICdwdWJsaWMnLFxuICAgIFNZU1RFTTogJ3N5c3RlbScsXG59O1xuLy9TdXJyb2dhdGVzXG5mdW5jdGlvbiBpc1N1cnJvZ2F0ZShjcCkge1xuICAgIHJldHVybiBjcCA+PSA1NTI5NiAmJiBjcCA8PSA1NzM0Mztcbn1cbmV4cG9ydHMuaXNTdXJyb2dhdGUgPSBpc1N1cnJvZ2F0ZTtcbmZ1bmN0aW9uIGlzU3Vycm9nYXRlUGFpcihjcCkge1xuICAgIHJldHVybiBjcCA+PSA1NjMyMCAmJiBjcCA8PSA1NzM0Mztcbn1cbmV4cG9ydHMuaXNTdXJyb2dhdGVQYWlyID0gaXNTdXJyb2dhdGVQYWlyO1xuZnVuY3Rpb24gZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludChjcDEsIGNwMikge1xuICAgIHJldHVybiAoY3AxIC0gNTUyOTYpICogMTAyNCArIDkyMTYgKyBjcDI7XG59XG5leHBvcnRzLmdldFN1cnJvZ2F0ZVBhaXJDb2RlUG9pbnQgPSBnZXRTdXJyb2dhdGVQYWlyQ29kZVBvaW50O1xuLy9OT1RFOiBleGNsdWRpbmcgTlVMTCBhbmQgQVNDSUkgd2hpdGVzcGFjZVxuZnVuY3Rpb24gaXNDb250cm9sQ29kZVBvaW50KGNwKSB7XG4gICAgcmV0dXJuICgoY3AgIT09IDB4MjAgJiYgY3AgIT09IDB4MGEgJiYgY3AgIT09IDB4MGQgJiYgY3AgIT09IDB4MDkgJiYgY3AgIT09IDB4MGMgJiYgY3AgPj0gMHgwMSAmJiBjcCA8PSAweDFmKSB8fFxuICAgICAgICAoY3AgPj0gMHg3ZiAmJiBjcCA8PSAweDlmKSk7XG59XG5leHBvcnRzLmlzQ29udHJvbENvZGVQb2ludCA9IGlzQ29udHJvbENvZGVQb2ludDtcbmZ1bmN0aW9uIGlzVW5kZWZpbmVkQ29kZVBvaW50KGNwKSB7XG4gICAgcmV0dXJuIChjcCA+PSA2NDk3NiAmJiBjcCA8PSA2NTAwNykgfHwgVU5ERUZJTkVEX0NPREVfUE9JTlRTLmhhcyhjcCk7XG59XG5leHBvcnRzLmlzVW5kZWZpbmVkQ29kZVBvaW50ID0gaXNVbmRlZmluZWRDb2RlUG9pbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmljb2RlLmpzLm1hcCIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRVJSID0gdm9pZCAwO1xudmFyIEVSUjtcbihmdW5jdGlvbiAoRVJSKSB7XG4gICAgRVJSW1wiY29udHJvbENoYXJhY3RlckluSW5wdXRTdHJlYW1cIl0gPSBcImNvbnRyb2wtY2hhcmFjdGVyLWluLWlucHV0LXN0cmVhbVwiO1xuICAgIEVSUltcIm5vbmNoYXJhY3RlckluSW5wdXRTdHJlYW1cIl0gPSBcIm5vbmNoYXJhY3Rlci1pbi1pbnB1dC1zdHJlYW1cIjtcbiAgICBFUlJbXCJzdXJyb2dhdGVJbklucHV0U3RyZWFtXCJdID0gXCJzdXJyb2dhdGUtaW4taW5wdXQtc3RyZWFtXCI7XG4gICAgRVJSW1wibm9uVm9pZEh0bWxFbGVtZW50U3RhcnRUYWdXaXRoVHJhaWxpbmdTb2xpZHVzXCJdID0gXCJub24tdm9pZC1odG1sLWVsZW1lbnQtc3RhcnQtdGFnLXdpdGgtdHJhaWxpbmctc29saWR1c1wiO1xuICAgIEVSUltcImVuZFRhZ1dpdGhBdHRyaWJ1dGVzXCJdID0gXCJlbmQtdGFnLXdpdGgtYXR0cmlidXRlc1wiO1xuICAgIEVSUltcImVuZFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXNcIl0gPSBcImVuZC10YWctd2l0aC10cmFpbGluZy1zb2xpZHVzXCI7XG4gICAgRVJSW1widW5leHBlY3RlZFNvbGlkdXNJblRhZ1wiXSA9IFwidW5leHBlY3RlZC1zb2xpZHVzLWluLXRhZ1wiO1xuICAgIEVSUltcInVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyXCJdID0gXCJ1bmV4cGVjdGVkLW51bGwtY2hhcmFjdGVyXCI7XG4gICAgRVJSW1widW5leHBlY3RlZFF1ZXN0aW9uTWFya0luc3RlYWRPZlRhZ05hbWVcIl0gPSBcInVuZXhwZWN0ZWQtcXVlc3Rpb24tbWFyay1pbnN0ZWFkLW9mLXRhZy1uYW1lXCI7XG4gICAgRVJSW1wiaW52YWxpZEZpcnN0Q2hhcmFjdGVyT2ZUYWdOYW1lXCJdID0gXCJpbnZhbGlkLWZpcnN0LWNoYXJhY3Rlci1vZi10YWctbmFtZVwiO1xuICAgIEVSUltcInVuZXhwZWN0ZWRFcXVhbHNTaWduQmVmb3JlQXR0cmlidXRlTmFtZVwiXSA9IFwidW5leHBlY3RlZC1lcXVhbHMtc2lnbi1iZWZvcmUtYXR0cmlidXRlLW5hbWVcIjtcbiAgICBFUlJbXCJtaXNzaW5nRW5kVGFnTmFtZVwiXSA9IFwibWlzc2luZy1lbmQtdGFnLW5hbWVcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkQ2hhcmFjdGVySW5BdHRyaWJ1dGVOYW1lXCJdID0gXCJ1bmV4cGVjdGVkLWNoYXJhY3Rlci1pbi1hdHRyaWJ1dGUtbmFtZVwiO1xuICAgIEVSUltcInVua25vd25OYW1lZENoYXJhY3RlclJlZmVyZW5jZVwiXSA9IFwidW5rbm93bi1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlXCI7XG4gICAgRVJSW1wibWlzc2luZ1NlbWljb2xvbkFmdGVyQ2hhcmFjdGVyUmVmZXJlbmNlXCJdID0gXCJtaXNzaW5nLXNlbWljb2xvbi1hZnRlci1jaGFyYWN0ZXItcmVmZXJlbmNlXCI7XG4gICAgRVJSW1widW5leHBlY3RlZENoYXJhY3RlckFmdGVyRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJcIl0gPSBcInVuZXhwZWN0ZWQtY2hhcmFjdGVyLWFmdGVyLWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXJcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkQ2hhcmFjdGVySW5VbnF1b3RlZEF0dHJpYnV0ZVZhbHVlXCJdID0gXCJ1bmV4cGVjdGVkLWNoYXJhY3Rlci1pbi11bnF1b3RlZC1hdHRyaWJ1dGUtdmFsdWVcIjtcbiAgICBFUlJbXCJlb2ZCZWZvcmVUYWdOYW1lXCJdID0gXCJlb2YtYmVmb3JlLXRhZy1uYW1lXCI7XG4gICAgRVJSW1wiZW9mSW5UYWdcIl0gPSBcImVvZi1pbi10YWdcIjtcbiAgICBFUlJbXCJtaXNzaW5nQXR0cmlidXRlVmFsdWVcIl0gPSBcIm1pc3NpbmctYXR0cmlidXRlLXZhbHVlXCI7XG4gICAgRVJSW1wibWlzc2luZ1doaXRlc3BhY2VCZXR3ZWVuQXR0cmlidXRlc1wiXSA9IFwibWlzc2luZy13aGl0ZXNwYWNlLWJldHdlZW4tYXR0cmlidXRlc1wiO1xuICAgIEVSUltcIm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZFwiXSA9IFwibWlzc2luZy13aGl0ZXNwYWNlLWFmdGVyLWRvY3R5cGUtcHVibGljLWtleXdvcmRcIjtcbiAgICBFUlJbXCJtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5Eb2N0eXBlUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNcIl0gPSBcIm1pc3Npbmctd2hpdGVzcGFjZS1iZXR3ZWVuLWRvY3R5cGUtcHVibGljLWFuZC1zeXN0ZW0taWRlbnRpZmllcnNcIjtcbiAgICBFUlJbXCJtaXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVN5c3RlbUtleXdvcmRcIl0gPSBcIm1pc3Npbmctd2hpdGVzcGFjZS1hZnRlci1kb2N0eXBlLXN5c3RlbS1rZXl3b3JkXCI7XG4gICAgRVJSW1wibWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXJcIl0gPSBcIm1pc3NpbmctcXVvdGUtYmVmb3JlLWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXJcIjtcbiAgICBFUlJbXCJtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllclwiXSA9IFwibWlzc2luZy1xdW90ZS1iZWZvcmUtZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllclwiO1xuICAgIEVSUltcIm1pc3NpbmdEb2N0eXBlUHVibGljSWRlbnRpZmllclwiXSA9IFwibWlzc2luZy1kb2N0eXBlLXB1YmxpYy1pZGVudGlmaWVyXCI7XG4gICAgRVJSW1wibWlzc2luZ0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyXCJdID0gXCJtaXNzaW5nLWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXJcIjtcbiAgICBFUlJbXCJhYnJ1cHREb2N0eXBlUHVibGljSWRlbnRpZmllclwiXSA9IFwiYWJydXB0LWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXJcIjtcbiAgICBFUlJbXCJhYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllclwiXSA9IFwiYWJydXB0LWRvY3R5cGUtc3lzdGVtLWlkZW50aWZpZXJcIjtcbiAgICBFUlJbXCJjZGF0YUluSHRtbENvbnRlbnRcIl0gPSBcImNkYXRhLWluLWh0bWwtY29udGVudFwiO1xuICAgIEVSUltcImluY29ycmVjdGx5T3BlbmVkQ29tbWVudFwiXSA9IFwiaW5jb3JyZWN0bHktb3BlbmVkLWNvbW1lbnRcIjtcbiAgICBFUlJbXCJlb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHRcIl0gPSBcImVvZi1pbi1zY3JpcHQtaHRtbC1jb21tZW50LWxpa2UtdGV4dFwiO1xuICAgIEVSUltcImVvZkluRG9jdHlwZVwiXSA9IFwiZW9mLWluLWRvY3R5cGVcIjtcbiAgICBFUlJbXCJuZXN0ZWRDb21tZW50XCJdID0gXCJuZXN0ZWQtY29tbWVudFwiO1xuICAgIEVSUltcImFicnVwdENsb3NpbmdPZkVtcHR5Q29tbWVudFwiXSA9IFwiYWJydXB0LWNsb3Npbmctb2YtZW1wdHktY29tbWVudFwiO1xuICAgIEVSUltcImVvZkluQ29tbWVudFwiXSA9IFwiZW9mLWluLWNvbW1lbnRcIjtcbiAgICBFUlJbXCJpbmNvcnJlY3RseUNsb3NlZENvbW1lbnRcIl0gPSBcImluY29ycmVjdGx5LWNsb3NlZC1jb21tZW50XCI7XG4gICAgRVJSW1wiZW9mSW5DZGF0YVwiXSA9IFwiZW9mLWluLWNkYXRhXCI7XG4gICAgRVJSW1wiYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlXCJdID0gXCJhYnNlbmNlLW9mLWRpZ2l0cy1pbi1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJudWxsQ2hhcmFjdGVyUmVmZXJlbmNlXCJdID0gXCJudWxsLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJzdXJyb2dhdGVDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcInN1cnJvZ2F0ZS1jaGFyYWN0ZXItcmVmZXJlbmNlXCI7XG4gICAgRVJSW1wiY2hhcmFjdGVyUmVmZXJlbmNlT3V0c2lkZVVuaWNvZGVSYW5nZVwiXSA9IFwiY2hhcmFjdGVyLXJlZmVyZW5jZS1vdXRzaWRlLXVuaWNvZGUtcmFuZ2VcIjtcbiAgICBFUlJbXCJjb250cm9sQ2hhcmFjdGVyUmVmZXJlbmNlXCJdID0gXCJjb250cm9sLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJub25jaGFyYWN0ZXJDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcIm5vbmNoYXJhY3Rlci1jaGFyYWN0ZXItcmVmZXJlbmNlXCI7XG4gICAgRVJSW1wibWlzc2luZ1doaXRlc3BhY2VCZWZvcmVEb2N0eXBlTmFtZVwiXSA9IFwibWlzc2luZy13aGl0ZXNwYWNlLWJlZm9yZS1kb2N0eXBlLW5hbWVcIjtcbiAgICBFUlJbXCJtaXNzaW5nRG9jdHlwZU5hbWVcIl0gPSBcIm1pc3NpbmctZG9jdHlwZS1uYW1lXCI7XG4gICAgRVJSW1wiaW52YWxpZENoYXJhY3RlclNlcXVlbmNlQWZ0ZXJEb2N0eXBlTmFtZVwiXSA9IFwiaW52YWxpZC1jaGFyYWN0ZXItc2VxdWVuY2UtYWZ0ZXItZG9jdHlwZS1uYW1lXCI7XG4gICAgRVJSW1wiZHVwbGljYXRlQXR0cmlidXRlXCJdID0gXCJkdXBsaWNhdGUtYXR0cmlidXRlXCI7XG4gICAgRVJSW1wibm9uQ29uZm9ybWluZ0RvY3R5cGVcIl0gPSBcIm5vbi1jb25mb3JtaW5nLWRvY3R5cGVcIjtcbiAgICBFUlJbXCJtaXNzaW5nRG9jdHlwZVwiXSA9IFwibWlzc2luZy1kb2N0eXBlXCI7XG4gICAgRVJSW1wibWlzcGxhY2VkRG9jdHlwZVwiXSA9IFwibWlzcGxhY2VkLWRvY3R5cGVcIjtcbiAgICBFUlJbXCJlbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudFwiXSA9IFwiZW5kLXRhZy13aXRob3V0LW1hdGNoaW5nLW9wZW4tZWxlbWVudFwiO1xuICAgIEVSUltcImNsb3NpbmdPZkVsZW1lbnRXaXRoT3BlbkNoaWxkRWxlbWVudHNcIl0gPSBcImNsb3Npbmctb2YtZWxlbWVudC13aXRoLW9wZW4tY2hpbGQtZWxlbWVudHNcIjtcbiAgICBFUlJbXCJkaXNhbGxvd2VkQ29udGVudEluTm9zY3JpcHRJbkhlYWRcIl0gPSBcImRpc2FsbG93ZWQtY29udGVudC1pbi1ub3NjcmlwdC1pbi1oZWFkXCI7XG4gICAgRVJSW1wib3BlbkVsZW1lbnRzTGVmdEFmdGVyRW9mXCJdID0gXCJvcGVuLWVsZW1lbnRzLWxlZnQtYWZ0ZXItZW9mXCI7XG4gICAgRVJSW1wiYWJhbmRvbmVkSGVhZEVsZW1lbnRDaGlsZFwiXSA9IFwiYWJhbmRvbmVkLWhlYWQtZWxlbWVudC1jaGlsZFwiO1xuICAgIEVSUltcIm1pc3BsYWNlZFN0YXJ0VGFnRm9ySGVhZEVsZW1lbnRcIl0gPSBcIm1pc3BsYWNlZC1zdGFydC10YWctZm9yLWhlYWQtZWxlbWVudFwiO1xuICAgIEVSUltcIm5lc3RlZE5vc2NyaXB0SW5IZWFkXCJdID0gXCJuZXN0ZWQtbm9zY3JpcHQtaW4taGVhZFwiO1xuICAgIEVSUltcImVvZkluRWxlbWVudFRoYXRDYW5Db250YWluT25seVRleHRcIl0gPSBcImVvZi1pbi1lbGVtZW50LXRoYXQtY2FuLWNvbnRhaW4tb25seS10ZXh0XCI7XG59KShFUlIgPSBleHBvcnRzLkVSUiB8fCAoZXhwb3J0cy5FUlIgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXJyb3ItY29kZXMuanMubWFwIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QcmVwcm9jZXNzb3IgPSB2b2lkIDA7XG5jb25zdCB1bmljb2RlX2pzXzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL3VuaWNvZGUuanNcIik7XG5jb25zdCBlcnJvcl9jb2Rlc19qc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9lcnJvci1jb2Rlcy5qc1wiKTtcbi8vQ29uc3RcbmNvbnN0IERFRkFVTFRfQlVGRkVSX1dBVEVSTElORSA9IDEgPDwgMTY7XG4vL1ByZXByb2Nlc3NvclxuLy9OT1RFOiBIVE1MIGlucHV0IHByZXByb2Nlc3Npbmdcbi8vKHNlZTogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3ByZXByb2Nlc3NpbmctdGhlLWlucHV0LXN0cmVhbSlcbmNsYXNzIFByZXByb2Nlc3NvciB7XG4gICAgY29uc3RydWN0b3IoaGFuZGxlcikge1xuICAgICAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICB0aGlzLmh0bWwgPSAnJztcbiAgICAgICAgdGhpcy5wb3MgPSAtMTtcbiAgICAgICAgLy8gTk9URTogSW5pdGlhbCBgbGFzdEdhcFBvc2AgaXMgLTIsIHRvIGVuc3VyZSBgY29sYCBvbiBpbml0aWFsaXNhdGlvbiBpcyAwXG4gICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IC0yO1xuICAgICAgICB0aGlzLmdhcFN0YWNrID0gW107XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGFzdENodW5rV3JpdHRlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idWZmZXJXYXRlcmxpbmUgPSBERUZBVUxUX0JVRkZFUl9XQVRFUkxJTkU7XG4gICAgICAgIHRoaXMuaXNFb2wgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saW5lU3RhcnRQb3MgPSAwO1xuICAgICAgICB0aGlzLmRyb3BwZWRCdWZmZXJTaXplID0gMDtcbiAgICAgICAgdGhpcy5saW5lID0gMTtcbiAgICAgICAgLy9OT1RFOiBhdm9pZCByZXBvcnRpbmcgZXJyb3JzIHR3aWNlIG9uIGFkdmFuY2UvcmV0cmVhdFxuICAgICAgICB0aGlzLmxhc3RFcnJPZmZzZXQgPSAtMTtcbiAgICB9XG4gICAgLyoqIFRoZSBjb2x1bW4gb24gdGhlIGN1cnJlbnQgbGluZS4gSWYgd2UganVzdCBzYXcgYSBnYXAgKGVnLiBhIHN1cnJvZ2F0ZSBwYWlyKSwgcmV0dXJuIHRoZSBpbmRleCBiZWZvcmUuICovXG4gICAgZ2V0IGNvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zIC0gdGhpcy5saW5lU3RhcnRQb3MgKyBOdW1iZXIodGhpcy5sYXN0R2FwUG9zICE9PSB0aGlzLnBvcyk7XG4gICAgfVxuICAgIGdldCBvZmZzZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyb3BwZWRCdWZmZXJTaXplICsgdGhpcy5wb3M7XG4gICAgfVxuICAgIGdldEVycm9yKGNvZGUpIHtcbiAgICAgICAgY29uc3QgeyBsaW5lLCBjb2wsIG9mZnNldCB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICBzdGFydExpbmU6IGxpbmUsXG4gICAgICAgICAgICBlbmRMaW5lOiBsaW5lLFxuICAgICAgICAgICAgc3RhcnRDb2w6IGNvbCxcbiAgICAgICAgICAgIGVuZENvbDogY29sLFxuICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgIGVuZE9mZnNldDogb2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfZXJyKGNvZGUpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlci5vblBhcnNlRXJyb3IgJiYgdGhpcy5sYXN0RXJyT2Zmc2V0ICE9PSB0aGlzLm9mZnNldCkge1xuICAgICAgICAgICAgdGhpcy5sYXN0RXJyT2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIub25QYXJzZUVycm9yKHRoaXMuZ2V0RXJyb3IoY29kZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9hZGRHYXAoKSB7XG4gICAgICAgIHRoaXMuZ2FwU3RhY2sucHVzaCh0aGlzLmxhc3RHYXBQb3MpO1xuICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSB0aGlzLnBvcztcbiAgICB9XG4gICAgX3Byb2Nlc3NTdXJyb2dhdGUoY3ApIHtcbiAgICAgICAgLy9OT1RFOiB0cnkgdG8gcGVlayBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGlmICh0aGlzLnBvcyAhPT0gdGhpcy5odG1sLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRDcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoKDAsIHVuaWNvZGVfanNfMS5pc1N1cnJvZ2F0ZVBhaXIpKG5leHRDcCkpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIGhhdmUgYSBzdXJyb2dhdGUgcGFpci4gUGVlayBwYWlyIGNoYXJhY3RlciBhbmQgcmVjYWxjdWxhdGUgY29kZSBwb2ludC5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICAgICAgICAgIC8vTk9URTogYWRkIGEgZ2FwIHRoYXQgc2hvdWxkIGJlIGF2b2lkZWQgZHVyaW5nIHJldHJlYXRcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRHYXAoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIHVuaWNvZGVfanNfMS5nZXRTdXJyb2dhdGVQYWlyQ29kZVBvaW50KShjcCwgbmV4dENwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgY2h1bmssIHRoZXJlZm9yZSB3ZSBjYW4ndCBpbmZlciB0aGUgc3Vycm9nYXRlIHBhaXIgeWV0LlxuICAgICAgICBlbHNlIGlmICghdGhpcy5sYXN0Q2h1bmtXcml0dGVuKSB7XG4gICAgICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgLy9OT1RFOiBpc29sYXRlZCBzdXJyb2dhdGVcbiAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnN1cnJvZ2F0ZUluSW5wdXRTdHJlYW0pO1xuICAgICAgICByZXR1cm4gY3A7XG4gICAgfVxuICAgIHdpbGxEcm9wUGFyc2VkQ2h1bmsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcyA+IHRoaXMuYnVmZmVyV2F0ZXJsaW5lO1xuICAgIH1cbiAgICBkcm9wUGFyc2VkQ2h1bmsoKSB7XG4gICAgICAgIGlmICh0aGlzLndpbGxEcm9wUGFyc2VkQ2h1bmsoKSkge1xuICAgICAgICAgICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZyh0aGlzLnBvcyk7XG4gICAgICAgICAgICB0aGlzLmxpbmVTdGFydFBvcyAtPSB0aGlzLnBvcztcbiAgICAgICAgICAgIHRoaXMuZHJvcHBlZEJ1ZmZlclNpemUgKz0gdGhpcy5wb3M7XG4gICAgICAgICAgICB0aGlzLnBvcyA9IDA7XG4gICAgICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSAtMjtcbiAgICAgICAgICAgIHRoaXMuZ2FwU3RhY2subGVuZ3RoID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3cml0ZShjaHVuaywgaXNMYXN0Q2h1bmspIHtcbiAgICAgICAgaWYgKHRoaXMuaHRtbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgKz0gY2h1bms7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgPSBjaHVuaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sYXN0Q2h1bmtXcml0dGVuID0gaXNMYXN0Q2h1bms7XG4gICAgfVxuICAgIGluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspIHtcbiAgICAgICAgdGhpcy5odG1sID0gdGhpcy5odG1sLnN1YnN0cmluZygwLCB0aGlzLnBvcyArIDEpICsgY2h1bmsgKyB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zICsgMSk7XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgIH1cbiAgICBzdGFydHNXaXRoKHBhdHRlcm4sIGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgb3VyIGJ1ZmZlciBoYXMgZW5vdWdoIGNoYXJhY3RlcnNcbiAgICAgICAgaWYgKHRoaXMucG9zICsgcGF0dGVybi5sZW5ndGggPiB0aGlzLmh0bWwubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSAhdGhpcy5sYXN0Q2h1bmtXcml0dGVuO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXNlU2Vuc2l0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5odG1sLnN0YXJ0c1dpdGgocGF0dGVybiwgdGhpcy5wb3MpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0dGVybi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY3AgPSB0aGlzLmh0bWwuY2hhckNvZGVBdCh0aGlzLnBvcyArIGkpIHwgMHgyMDtcbiAgICAgICAgICAgIGlmIChjcCAhPT0gcGF0dGVybi5jaGFyQ29kZUF0KGkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBwZWVrKG9mZnNldCkge1xuICAgICAgICBjb25zdCBwb3MgPSB0aGlzLnBvcyArIG9mZnNldDtcbiAgICAgICAgaWYgKHBvcyA+PSB0aGlzLmh0bWwubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSAhdGhpcy5sYXN0Q2h1bmtXcml0dGVuO1xuICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29kZSA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIHJldHVybiBjb2RlID09PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuQ0FSUklBR0VfUkVUVVJOID8gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxJTkVfRkVFRCA6IGNvZGU7XG4gICAgfVxuICAgIGFkdmFuY2UoKSB7XG4gICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgIC8vTk9URTogTEYgc2hvdWxkIGJlIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgbGluZVxuICAgICAgICBpZiAodGhpcy5pc0VvbCkge1xuICAgICAgICAgICAgdGhpcy5pc0VvbCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5saW5lKys7XG4gICAgICAgICAgICB0aGlzLmxpbmVTdGFydFBvcyA9IHRoaXMucG9zO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBvcyA+PSB0aGlzLmh0bWwubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSAhdGhpcy5sYXN0Q2h1bmtXcml0dGVuO1xuICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNwID0gdGhpcy5odG1sLmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAvL05PVEU6IGFsbCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVycyBtdXN0IGJlIGNvbnZlcnRlZCB0byBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyc1xuICAgICAgICBpZiAoY3AgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5DQVJSSUFHRV9SRVRVUk4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNFb2wgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQ7XG4gICAgICAgIH1cbiAgICAgICAgLy9OT1RFOiBhbnkgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlcnMgdGhhdCBpbW1lZGlhdGVseSBmb2xsb3cgYSBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVyXG4gICAgICAgIC8vbXVzdCBiZSBpZ25vcmVkLlxuICAgICAgICBpZiAoY3AgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFb2wgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2tpcE5leHROZXdMaW5lKSB7XG4gICAgICAgICAgICAgICAgLy8gYGxpbmVgIHdpbGwgYmUgYnVtcGVkIGFnYWluIGluIHRoZSByZWN1cnNpdmUgY2FsbC5cbiAgICAgICAgICAgICAgICB0aGlzLmxpbmUtLTtcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FkZEdhcCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkdmFuY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBpZiAoKDAsIHVuaWNvZGVfanNfMS5pc1N1cnJvZ2F0ZSkoY3ApKSB7XG4gICAgICAgICAgICBjcCA9IHRoaXMuX3Byb2Nlc3NTdXJyb2dhdGUoY3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vT1BUSU1JWkFUSU9OOiBmaXJzdCBjaGVjayBpZiBjb2RlIHBvaW50IGlzIGluIHRoZSBjb21tb24gYWxsb3dlZFxuICAgICAgICAvL3JhbmdlIChBU0NJSSBhbHBoYW51bWVyaWMsIHdoaXRlc3BhY2VzLCBiaWcgY2h1bmsgb2YgQk1QKVxuICAgICAgICAvL2JlZm9yZSBnb2luZyBpbnRvIGRldGFpbGVkIHBlcmZvcm1hbmNlIGNvc3QgdmFsaWRhdGlvbi5cbiAgICAgICAgY29uc3QgaXNDb21tb25WYWxpZFJhbmdlID0gdGhpcy5oYW5kbGVyLm9uUGFyc2VFcnJvciA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgKGNwID4gMHgxZiAmJiBjcCA8IDB4N2YpIHx8XG4gICAgICAgICAgICBjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxJTkVfRkVFRCB8fFxuICAgICAgICAgICAgY3AgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5DQVJSSUFHRV9SRVRVUk4gfHxcbiAgICAgICAgICAgIChjcCA+IDB4OWYgJiYgY3AgPCA2NDk3Nik7XG4gICAgICAgIGlmICghaXNDb21tb25WYWxpZFJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja0ZvclByb2JsZW1hdGljQ2hhcmFjdGVycyhjcCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNwO1xuICAgIH1cbiAgICBfY2hlY2tGb3JQcm9ibGVtYXRpY0NoYXJhY3RlcnMoY3ApIHtcbiAgICAgICAgaWYgKCgwLCB1bmljb2RlX2pzXzEuaXNDb250cm9sQ29kZVBvaW50KShjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5jb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKDAsIHVuaWNvZGVfanNfMS5pc1VuZGVmaW5lZENvZGVQb2ludCkoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIubm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0cmVhdChjb3VudCkge1xuICAgICAgICB0aGlzLnBvcyAtPSBjb3VudDtcbiAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgdGhpcy5sYXN0R2FwUG9zKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSB0aGlzLmdhcFN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgdGhpcy5wb3MtLTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzRW9sID0gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0cy5QcmVwcm9jZXNzb3IgPSBQcmVwcm9jZXNzb3I7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1wcmVwcm9jZXNzb3IuanMubWFwIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nZXRUb2tlbkF0dHIgPSBleHBvcnRzLlRva2VuVHlwZSA9IHZvaWQgMDtcbnZhciBUb2tlblR5cGU7XG4oZnVuY3Rpb24gKFRva2VuVHlwZSkge1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJDSEFSQUNURVJcIl0gPSAwXSA9IFwiQ0hBUkFDVEVSXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIk5VTExfQ0hBUkFDVEVSXCJdID0gMV0gPSBcIk5VTExfQ0hBUkFDVEVSXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIldISVRFU1BBQ0VfQ0hBUkFDVEVSXCJdID0gMl0gPSBcIldISVRFU1BBQ0VfQ0hBUkFDVEVSXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIlNUQVJUX1RBR1wiXSA9IDNdID0gXCJTVEFSVF9UQUdcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiRU5EX1RBR1wiXSA9IDRdID0gXCJFTkRfVEFHXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIkNPTU1FTlRcIl0gPSA1XSA9IFwiQ09NTUVOVFwiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJET0NUWVBFXCJdID0gNl0gPSBcIkRPQ1RZUEVcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiRU9GXCJdID0gN10gPSBcIkVPRlwiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJISUJFUk5BVElPTlwiXSA9IDhdID0gXCJISUJFUk5BVElPTlwiO1xufSkoVG9rZW5UeXBlID0gZXhwb3J0cy5Ub2tlblR5cGUgfHwgKGV4cG9ydHMuVG9rZW5UeXBlID0ge30pKTtcbmZ1bmN0aW9uIGdldFRva2VuQXR0cih0b2tlbiwgYXR0ck5hbWUpIHtcbiAgICBmb3IgKGxldCBpID0gdG9rZW4uYXR0cnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IGF0dHJOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9rZW4uYXR0cnNbaV0udmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG5leHBvcnRzLmdldFRva2VuQXR0ciA9IGdldFRva2VuQXR0cjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXRva2VuLmpzLm1hcCIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaGFzVW5lc2NhcGVkVGV4dCA9IGV4cG9ydHMuaXNOdW1iZXJlZEhlYWRlciA9IGV4cG9ydHMuU1BFQ0lBTF9FTEVNRU5UUyA9IGV4cG9ydHMuZ2V0VGFnSUQgPSBleHBvcnRzLlRBR19JRCA9IGV4cG9ydHMuVEFHX05BTUVTID0gZXhwb3J0cy5ET0NVTUVOVF9NT0RFID0gZXhwb3J0cy5BVFRSUyA9IGV4cG9ydHMuTlMgPSB2b2lkIDA7XG4vKiogQWxsIHZhbGlkIG5hbWVzcGFjZXMgaW4gSFRNTC4gKi9cbnZhciBOUztcbihmdW5jdGlvbiAoTlMpIHtcbiAgICBOU1tcIkhUTUxcIl0gPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjtcbiAgICBOU1tcIk1BVEhNTFwiXSA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiO1xuICAgIE5TW1wiU1ZHXCJdID0gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO1xuICAgIE5TW1wiWExJTktcIl0gPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIjtcbiAgICBOU1tcIlhNTFwiXSA9IFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCI7XG4gICAgTlNbXCJYTUxOU1wiXSA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy9cIjtcbn0pKE5TID0gZXhwb3J0cy5OUyB8fCAoZXhwb3J0cy5OUyA9IHt9KSk7XG52YXIgQVRUUlM7XG4oZnVuY3Rpb24gKEFUVFJTKSB7XG4gICAgQVRUUlNbXCJUWVBFXCJdID0gXCJ0eXBlXCI7XG4gICAgQVRUUlNbXCJBQ1RJT05cIl0gPSBcImFjdGlvblwiO1xuICAgIEFUVFJTW1wiRU5DT0RJTkdcIl0gPSBcImVuY29kaW5nXCI7XG4gICAgQVRUUlNbXCJQUk9NUFRcIl0gPSBcInByb21wdFwiO1xuICAgIEFUVFJTW1wiTkFNRVwiXSA9IFwibmFtZVwiO1xuICAgIEFUVFJTW1wiQ09MT1JcIl0gPSBcImNvbG9yXCI7XG4gICAgQVRUUlNbXCJGQUNFXCJdID0gXCJmYWNlXCI7XG4gICAgQVRUUlNbXCJTSVpFXCJdID0gXCJzaXplXCI7XG59KShBVFRSUyA9IGV4cG9ydHMuQVRUUlMgfHwgKGV4cG9ydHMuQVRUUlMgPSB7fSkpO1xuLyoqXG4gKiBUaGUgbW9kZSBvZiB0aGUgZG9jdW1lbnQuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWRvY3VtZW50LWxpbWl0ZWQtcXVpcmtzfVxuICovXG52YXIgRE9DVU1FTlRfTU9ERTtcbihmdW5jdGlvbiAoRE9DVU1FTlRfTU9ERSkge1xuICAgIERPQ1VNRU5UX01PREVbXCJOT19RVUlSS1NcIl0gPSBcIm5vLXF1aXJrc1wiO1xuICAgIERPQ1VNRU5UX01PREVbXCJRVUlSS1NcIl0gPSBcInF1aXJrc1wiO1xuICAgIERPQ1VNRU5UX01PREVbXCJMSU1JVEVEX1FVSVJLU1wiXSA9IFwibGltaXRlZC1xdWlya3NcIjtcbn0pKERPQ1VNRU5UX01PREUgPSBleHBvcnRzLkRPQ1VNRU5UX01PREUgfHwgKGV4cG9ydHMuRE9DVU1FTlRfTU9ERSA9IHt9KSk7XG52YXIgVEFHX05BTUVTO1xuKGZ1bmN0aW9uIChUQUdfTkFNRVMpIHtcbiAgICBUQUdfTkFNRVNbXCJBXCJdID0gXCJhXCI7XG4gICAgVEFHX05BTUVTW1wiQUREUkVTU1wiXSA9IFwiYWRkcmVzc1wiO1xuICAgIFRBR19OQU1FU1tcIkFOTk9UQVRJT05fWE1MXCJdID0gXCJhbm5vdGF0aW9uLXhtbFwiO1xuICAgIFRBR19OQU1FU1tcIkFQUExFVFwiXSA9IFwiYXBwbGV0XCI7XG4gICAgVEFHX05BTUVTW1wiQVJFQVwiXSA9IFwiYXJlYVwiO1xuICAgIFRBR19OQU1FU1tcIkFSVElDTEVcIl0gPSBcImFydGljbGVcIjtcbiAgICBUQUdfTkFNRVNbXCJBU0lERVwiXSA9IFwiYXNpZGVcIjtcbiAgICBUQUdfTkFNRVNbXCJCXCJdID0gXCJiXCI7XG4gICAgVEFHX05BTUVTW1wiQkFTRVwiXSA9IFwiYmFzZVwiO1xuICAgIFRBR19OQU1FU1tcIkJBU0VGT05UXCJdID0gXCJiYXNlZm9udFwiO1xuICAgIFRBR19OQU1FU1tcIkJHU09VTkRcIl0gPSBcImJnc291bmRcIjtcbiAgICBUQUdfTkFNRVNbXCJCSUdcIl0gPSBcImJpZ1wiO1xuICAgIFRBR19OQU1FU1tcIkJMT0NLUVVPVEVcIl0gPSBcImJsb2NrcXVvdGVcIjtcbiAgICBUQUdfTkFNRVNbXCJCT0RZXCJdID0gXCJib2R5XCI7XG4gICAgVEFHX05BTUVTW1wiQlJcIl0gPSBcImJyXCI7XG4gICAgVEFHX05BTUVTW1wiQlVUVE9OXCJdID0gXCJidXR0b25cIjtcbiAgICBUQUdfTkFNRVNbXCJDQVBUSU9OXCJdID0gXCJjYXB0aW9uXCI7XG4gICAgVEFHX05BTUVTW1wiQ0VOVEVSXCJdID0gXCJjZW50ZXJcIjtcbiAgICBUQUdfTkFNRVNbXCJDT0RFXCJdID0gXCJjb2RlXCI7XG4gICAgVEFHX05BTUVTW1wiQ09MXCJdID0gXCJjb2xcIjtcbiAgICBUQUdfTkFNRVNbXCJDT0xHUk9VUFwiXSA9IFwiY29sZ3JvdXBcIjtcbiAgICBUQUdfTkFNRVNbXCJERFwiXSA9IFwiZGRcIjtcbiAgICBUQUdfTkFNRVNbXCJERVNDXCJdID0gXCJkZXNjXCI7XG4gICAgVEFHX05BTUVTW1wiREVUQUlMU1wiXSA9IFwiZGV0YWlsc1wiO1xuICAgIFRBR19OQU1FU1tcIkRJQUxPR1wiXSA9IFwiZGlhbG9nXCI7XG4gICAgVEFHX05BTUVTW1wiRElSXCJdID0gXCJkaXJcIjtcbiAgICBUQUdfTkFNRVNbXCJESVZcIl0gPSBcImRpdlwiO1xuICAgIFRBR19OQU1FU1tcIkRMXCJdID0gXCJkbFwiO1xuICAgIFRBR19OQU1FU1tcIkRUXCJdID0gXCJkdFwiO1xuICAgIFRBR19OQU1FU1tcIkVNXCJdID0gXCJlbVwiO1xuICAgIFRBR19OQU1FU1tcIkVNQkVEXCJdID0gXCJlbWJlZFwiO1xuICAgIFRBR19OQU1FU1tcIkZJRUxEU0VUXCJdID0gXCJmaWVsZHNldFwiO1xuICAgIFRBR19OQU1FU1tcIkZJR0NBUFRJT05cIl0gPSBcImZpZ2NhcHRpb25cIjtcbiAgICBUQUdfTkFNRVNbXCJGSUdVUkVcIl0gPSBcImZpZ3VyZVwiO1xuICAgIFRBR19OQU1FU1tcIkZPTlRcIl0gPSBcImZvbnRcIjtcbiAgICBUQUdfTkFNRVNbXCJGT09URVJcIl0gPSBcImZvb3RlclwiO1xuICAgIFRBR19OQU1FU1tcIkZPUkVJR05fT0JKRUNUXCJdID0gXCJmb3JlaWduT2JqZWN0XCI7XG4gICAgVEFHX05BTUVTW1wiRk9STVwiXSA9IFwiZm9ybVwiO1xuICAgIFRBR19OQU1FU1tcIkZSQU1FXCJdID0gXCJmcmFtZVwiO1xuICAgIFRBR19OQU1FU1tcIkZSQU1FU0VUXCJdID0gXCJmcmFtZXNldFwiO1xuICAgIFRBR19OQU1FU1tcIkgxXCJdID0gXCJoMVwiO1xuICAgIFRBR19OQU1FU1tcIkgyXCJdID0gXCJoMlwiO1xuICAgIFRBR19OQU1FU1tcIkgzXCJdID0gXCJoM1wiO1xuICAgIFRBR19OQU1FU1tcIkg0XCJdID0gXCJoNFwiO1xuICAgIFRBR19OQU1FU1tcIkg1XCJdID0gXCJoNVwiO1xuICAgIFRBR19OQU1FU1tcIkg2XCJdID0gXCJoNlwiO1xuICAgIFRBR19OQU1FU1tcIkhFQURcIl0gPSBcImhlYWRcIjtcbiAgICBUQUdfTkFNRVNbXCJIRUFERVJcIl0gPSBcImhlYWRlclwiO1xuICAgIFRBR19OQU1FU1tcIkhHUk9VUFwiXSA9IFwiaGdyb3VwXCI7XG4gICAgVEFHX05BTUVTW1wiSFJcIl0gPSBcImhyXCI7XG4gICAgVEFHX05BTUVTW1wiSFRNTFwiXSA9IFwiaHRtbFwiO1xuICAgIFRBR19OQU1FU1tcIklcIl0gPSBcImlcIjtcbiAgICBUQUdfTkFNRVNbXCJJTUdcIl0gPSBcImltZ1wiO1xuICAgIFRBR19OQU1FU1tcIklNQUdFXCJdID0gXCJpbWFnZVwiO1xuICAgIFRBR19OQU1FU1tcIklOUFVUXCJdID0gXCJpbnB1dFwiO1xuICAgIFRBR19OQU1FU1tcIklGUkFNRVwiXSA9IFwiaWZyYW1lXCI7XG4gICAgVEFHX05BTUVTW1wiS0VZR0VOXCJdID0gXCJrZXlnZW5cIjtcbiAgICBUQUdfTkFNRVNbXCJMQUJFTFwiXSA9IFwibGFiZWxcIjtcbiAgICBUQUdfTkFNRVNbXCJMSVwiXSA9IFwibGlcIjtcbiAgICBUQUdfTkFNRVNbXCJMSU5LXCJdID0gXCJsaW5rXCI7XG4gICAgVEFHX05BTUVTW1wiTElTVElOR1wiXSA9IFwibGlzdGluZ1wiO1xuICAgIFRBR19OQU1FU1tcIk1BSU5cIl0gPSBcIm1haW5cIjtcbiAgICBUQUdfTkFNRVNbXCJNQUxJR05NQVJLXCJdID0gXCJtYWxpZ25tYXJrXCI7XG4gICAgVEFHX05BTUVTW1wiTUFSUVVFRVwiXSA9IFwibWFycXVlZVwiO1xuICAgIFRBR19OQU1FU1tcIk1BVEhcIl0gPSBcIm1hdGhcIjtcbiAgICBUQUdfTkFNRVNbXCJNRU5VXCJdID0gXCJtZW51XCI7XG4gICAgVEFHX05BTUVTW1wiTUVUQVwiXSA9IFwibWV0YVwiO1xuICAgIFRBR19OQU1FU1tcIk1HTFlQSFwiXSA9IFwibWdseXBoXCI7XG4gICAgVEFHX05BTUVTW1wiTUlcIl0gPSBcIm1pXCI7XG4gICAgVEFHX05BTUVTW1wiTU9cIl0gPSBcIm1vXCI7XG4gICAgVEFHX05BTUVTW1wiTU5cIl0gPSBcIm1uXCI7XG4gICAgVEFHX05BTUVTW1wiTVNcIl0gPSBcIm1zXCI7XG4gICAgVEFHX05BTUVTW1wiTVRFWFRcIl0gPSBcIm10ZXh0XCI7XG4gICAgVEFHX05BTUVTW1wiTkFWXCJdID0gXCJuYXZcIjtcbiAgICBUQUdfTkFNRVNbXCJOT0JSXCJdID0gXCJub2JyXCI7XG4gICAgVEFHX05BTUVTW1wiTk9GUkFNRVNcIl0gPSBcIm5vZnJhbWVzXCI7XG4gICAgVEFHX05BTUVTW1wiTk9FTUJFRFwiXSA9IFwibm9lbWJlZFwiO1xuICAgIFRBR19OQU1FU1tcIk5PU0NSSVBUXCJdID0gXCJub3NjcmlwdFwiO1xuICAgIFRBR19OQU1FU1tcIk9CSkVDVFwiXSA9IFwib2JqZWN0XCI7XG4gICAgVEFHX05BTUVTW1wiT0xcIl0gPSBcIm9sXCI7XG4gICAgVEFHX05BTUVTW1wiT1BUR1JPVVBcIl0gPSBcIm9wdGdyb3VwXCI7XG4gICAgVEFHX05BTUVTW1wiT1BUSU9OXCJdID0gXCJvcHRpb25cIjtcbiAgICBUQUdfTkFNRVNbXCJQXCJdID0gXCJwXCI7XG4gICAgVEFHX05BTUVTW1wiUEFSQU1cIl0gPSBcInBhcmFtXCI7XG4gICAgVEFHX05BTUVTW1wiUExBSU5URVhUXCJdID0gXCJwbGFpbnRleHRcIjtcbiAgICBUQUdfTkFNRVNbXCJQUkVcIl0gPSBcInByZVwiO1xuICAgIFRBR19OQU1FU1tcIlJCXCJdID0gXCJyYlwiO1xuICAgIFRBR19OQU1FU1tcIlJQXCJdID0gXCJycFwiO1xuICAgIFRBR19OQU1FU1tcIlJUXCJdID0gXCJydFwiO1xuICAgIFRBR19OQU1FU1tcIlJUQ1wiXSA9IFwicnRjXCI7XG4gICAgVEFHX05BTUVTW1wiUlVCWVwiXSA9IFwicnVieVwiO1xuICAgIFRBR19OQU1FU1tcIlNcIl0gPSBcInNcIjtcbiAgICBUQUdfTkFNRVNbXCJTQ1JJUFRcIl0gPSBcInNjcmlwdFwiO1xuICAgIFRBR19OQU1FU1tcIlNFQ1RJT05cIl0gPSBcInNlY3Rpb25cIjtcbiAgICBUQUdfTkFNRVNbXCJTRUxFQ1RcIl0gPSBcInNlbGVjdFwiO1xuICAgIFRBR19OQU1FU1tcIlNPVVJDRVwiXSA9IFwic291cmNlXCI7XG4gICAgVEFHX05BTUVTW1wiU01BTExcIl0gPSBcInNtYWxsXCI7XG4gICAgVEFHX05BTUVTW1wiU1BBTlwiXSA9IFwic3BhblwiO1xuICAgIFRBR19OQU1FU1tcIlNUUklLRVwiXSA9IFwic3RyaWtlXCI7XG4gICAgVEFHX05BTUVTW1wiU1RST05HXCJdID0gXCJzdHJvbmdcIjtcbiAgICBUQUdfTkFNRVNbXCJTVFlMRVwiXSA9IFwic3R5bGVcIjtcbiAgICBUQUdfTkFNRVNbXCJTVUJcIl0gPSBcInN1YlwiO1xuICAgIFRBR19OQU1FU1tcIlNVTU1BUllcIl0gPSBcInN1bW1hcnlcIjtcbiAgICBUQUdfTkFNRVNbXCJTVVBcIl0gPSBcInN1cFwiO1xuICAgIFRBR19OQU1FU1tcIlRBQkxFXCJdID0gXCJ0YWJsZVwiO1xuICAgIFRBR19OQU1FU1tcIlRCT0RZXCJdID0gXCJ0Ym9keVwiO1xuICAgIFRBR19OQU1FU1tcIlRFTVBMQVRFXCJdID0gXCJ0ZW1wbGF0ZVwiO1xuICAgIFRBR19OQU1FU1tcIlRFWFRBUkVBXCJdID0gXCJ0ZXh0YXJlYVwiO1xuICAgIFRBR19OQU1FU1tcIlRGT09UXCJdID0gXCJ0Zm9vdFwiO1xuICAgIFRBR19OQU1FU1tcIlREXCJdID0gXCJ0ZFwiO1xuICAgIFRBR19OQU1FU1tcIlRIXCJdID0gXCJ0aFwiO1xuICAgIFRBR19OQU1FU1tcIlRIRUFEXCJdID0gXCJ0aGVhZFwiO1xuICAgIFRBR19OQU1FU1tcIlRJVExFXCJdID0gXCJ0aXRsZVwiO1xuICAgIFRBR19OQU1FU1tcIlRSXCJdID0gXCJ0clwiO1xuICAgIFRBR19OQU1FU1tcIlRSQUNLXCJdID0gXCJ0cmFja1wiO1xuICAgIFRBR19OQU1FU1tcIlRUXCJdID0gXCJ0dFwiO1xuICAgIFRBR19OQU1FU1tcIlVcIl0gPSBcInVcIjtcbiAgICBUQUdfTkFNRVNbXCJVTFwiXSA9IFwidWxcIjtcbiAgICBUQUdfTkFNRVNbXCJTVkdcIl0gPSBcInN2Z1wiO1xuICAgIFRBR19OQU1FU1tcIlZBUlwiXSA9IFwidmFyXCI7XG4gICAgVEFHX05BTUVTW1wiV0JSXCJdID0gXCJ3YnJcIjtcbiAgICBUQUdfTkFNRVNbXCJYTVBcIl0gPSBcInhtcFwiO1xufSkoVEFHX05BTUVTID0gZXhwb3J0cy5UQUdfTkFNRVMgfHwgKGV4cG9ydHMuVEFHX05BTUVTID0ge30pKTtcbi8qKlxuICogVGFnIElEcyBhcmUgbnVtZXJpYyBJRHMgZm9yIGtub3duIHRhZyBuYW1lcy5cbiAqXG4gKiBXZSB1c2UgdGFnIElEcyB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiB0YWcgbmFtZSBjb21wYXJpc29ucy5cbiAqL1xudmFyIFRBR19JRDtcbihmdW5jdGlvbiAoVEFHX0lEKSB7XG4gICAgVEFHX0lEW1RBR19JRFtcIlVOS05PV05cIl0gPSAwXSA9IFwiVU5LTk9XTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJBXCJdID0gMV0gPSBcIkFcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQUREUkVTU1wiXSA9IDJdID0gXCJBRERSRVNTXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFOTk9UQVRJT05fWE1MXCJdID0gM10gPSBcIkFOTk9UQVRJT05fWE1MXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFQUExFVFwiXSA9IDRdID0gXCJBUFBMRVRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQVJFQVwiXSA9IDVdID0gXCJBUkVBXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFSVElDTEVcIl0gPSA2XSA9IFwiQVJUSUNMRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJBU0lERVwiXSA9IDddID0gXCJBU0lERVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCXCJdID0gOF0gPSBcIkJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQkFTRVwiXSA9IDldID0gXCJCQVNFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJBU0VGT05UXCJdID0gMTBdID0gXCJCQVNFRk9OVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCR1NPVU5EXCJdID0gMTFdID0gXCJCR1NPVU5EXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJJR1wiXSA9IDEyXSA9IFwiQklHXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJMT0NLUVVPVEVcIl0gPSAxM10gPSBcIkJMT0NLUVVPVEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQk9EWVwiXSA9IDE0XSA9IFwiQk9EWVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCUlwiXSA9IDE1XSA9IFwiQlJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQlVUVE9OXCJdID0gMTZdID0gXCJCVVRUT05cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQ0FQVElPTlwiXSA9IDE3XSA9IFwiQ0FQVElPTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJDRU5URVJcIl0gPSAxOF0gPSBcIkNFTlRFUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJDT0RFXCJdID0gMTldID0gXCJDT0RFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkNPTFwiXSA9IDIwXSA9IFwiQ09MXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkNPTEdST1VQXCJdID0gMjFdID0gXCJDT0xHUk9VUFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJERFwiXSA9IDIyXSA9IFwiRERcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiREVTQ1wiXSA9IDIzXSA9IFwiREVTQ1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJERVRBSUxTXCJdID0gMjRdID0gXCJERVRBSUxTXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRJQUxPR1wiXSA9IDI1XSA9IFwiRElBTE9HXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRJUlwiXSA9IDI2XSA9IFwiRElSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRJVlwiXSA9IDI3XSA9IFwiRElWXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRMXCJdID0gMjhdID0gXCJETFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJEVFwiXSA9IDI5XSA9IFwiRFRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRU1cIl0gPSAzMF0gPSBcIkVNXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkVNQkVEXCJdID0gMzFdID0gXCJFTUJFRFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGSUVMRFNFVFwiXSA9IDMyXSA9IFwiRklFTERTRVRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRklHQ0FQVElPTlwiXSA9IDMzXSA9IFwiRklHQ0FQVElPTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGSUdVUkVcIl0gPSAzNF0gPSBcIkZJR1VSRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGT05UXCJdID0gMzVdID0gXCJGT05UXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZPT1RFUlwiXSA9IDM2XSA9IFwiRk9PVEVSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZPUkVJR05fT0JKRUNUXCJdID0gMzddID0gXCJGT1JFSUdOX09CSkVDVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGT1JNXCJdID0gMzhdID0gXCJGT1JNXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZSQU1FXCJdID0gMzldID0gXCJGUkFNRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGUkFNRVNFVFwiXSA9IDQwXSA9IFwiRlJBTUVTRVRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSDFcIl0gPSA0MV0gPSBcIkgxXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkgyXCJdID0gNDJdID0gXCJIMlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIM1wiXSA9IDQzXSA9IFwiSDNcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSDRcIl0gPSA0NF0gPSBcIkg0XCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkg1XCJdID0gNDVdID0gXCJINVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJINlwiXSA9IDQ2XSA9IFwiSDZcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSEVBRFwiXSA9IDQ3XSA9IFwiSEVBRFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIRUFERVJcIl0gPSA0OF0gPSBcIkhFQURFUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIR1JPVVBcIl0gPSA0OV0gPSBcIkhHUk9VUFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIUlwiXSA9IDUwXSA9IFwiSFJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSFRNTFwiXSA9IDUxXSA9IFwiSFRNTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJJXCJdID0gNTJdID0gXCJJXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIklNR1wiXSA9IDUzXSA9IFwiSU1HXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIklNQUdFXCJdID0gNTRdID0gXCJJTUFHRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJJTlBVVFwiXSA9IDU1XSA9IFwiSU5QVVRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSUZSQU1FXCJdID0gNTZdID0gXCJJRlJBTUVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiS0VZR0VOXCJdID0gNTddID0gXCJLRVlHRU5cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTEFCRUxcIl0gPSA1OF0gPSBcIkxBQkVMXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkxJXCJdID0gNTldID0gXCJMSVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJMSU5LXCJdID0gNjBdID0gXCJMSU5LXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkxJU1RJTkdcIl0gPSA2MV0gPSBcIkxJU1RJTkdcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUFJTlwiXSA9IDYyXSA9IFwiTUFJTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNQUxJR05NQVJLXCJdID0gNjNdID0gXCJNQUxJR05NQVJLXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1BUlFVRUVcIl0gPSA2NF0gPSBcIk1BUlFVRUVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUFUSFwiXSA9IDY1XSA9IFwiTUFUSFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNRU5VXCJdID0gNjZdID0gXCJNRU5VXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1FVEFcIl0gPSA2N10gPSBcIk1FVEFcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUdMWVBIXCJdID0gNjhdID0gXCJNR0xZUEhcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUlcIl0gPSA2OV0gPSBcIk1JXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1PXCJdID0gNzBdID0gXCJNT1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNTlwiXSA9IDcxXSA9IFwiTU5cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTVNcIl0gPSA3Ml0gPSBcIk1TXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1URVhUXCJdID0gNzNdID0gXCJNVEVYVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJOQVZcIl0gPSA3NF0gPSBcIk5BVlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJOT0JSXCJdID0gNzVdID0gXCJOT0JSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk5PRlJBTUVTXCJdID0gNzZdID0gXCJOT0ZSQU1FU1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJOT0VNQkVEXCJdID0gNzddID0gXCJOT0VNQkVEXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk5PU0NSSVBUXCJdID0gNzhdID0gXCJOT1NDUklQVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJPQkpFQ1RcIl0gPSA3OV0gPSBcIk9CSkVDVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJPTFwiXSA9IDgwXSA9IFwiT0xcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiT1BUR1JPVVBcIl0gPSA4MV0gPSBcIk9QVEdST1VQXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk9QVElPTlwiXSA9IDgyXSA9IFwiT1BUSU9OXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlBcIl0gPSA4M10gPSBcIlBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUEFSQU1cIl0gPSA4NF0gPSBcIlBBUkFNXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlBMQUlOVEVYVFwiXSA9IDg1XSA9IFwiUExBSU5URVhUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlBSRVwiXSA9IDg2XSA9IFwiUFJFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlJCXCJdID0gODddID0gXCJSQlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJSUFwiXSA9IDg4XSA9IFwiUlBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUlRcIl0gPSA4OV0gPSBcIlJUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlJUQ1wiXSA9IDkwXSA9IFwiUlRDXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlJVQllcIl0gPSA5MV0gPSBcIlJVQllcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU1wiXSA9IDkyXSA9IFwiU1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTQ1JJUFRcIl0gPSA5M10gPSBcIlNDUklQVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTRUNUSU9OXCJdID0gOTRdID0gXCJTRUNUSU9OXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNFTEVDVFwiXSA9IDk1XSA9IFwiU0VMRUNUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNPVVJDRVwiXSA9IDk2XSA9IFwiU09VUkNFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNNQUxMXCJdID0gOTddID0gXCJTTUFMTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTUEFOXCJdID0gOThdID0gXCJTUEFOXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNUUklLRVwiXSA9IDk5XSA9IFwiU1RSSUtFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNUUk9OR1wiXSA9IDEwMF0gPSBcIlNUUk9OR1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVFlMRVwiXSA9IDEwMV0gPSBcIlNUWUxFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNVQlwiXSA9IDEwMl0gPSBcIlNVQlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVU1NQVJZXCJdID0gMTAzXSA9IFwiU1VNTUFSWVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVVBcIl0gPSAxMDRdID0gXCJTVVBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEFCTEVcIl0gPSAxMDVdID0gXCJUQUJMRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUQk9EWVwiXSA9IDEwNl0gPSBcIlRCT0RZXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRFTVBMQVRFXCJdID0gMTA3XSA9IFwiVEVNUExBVEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEVYVEFSRUFcIl0gPSAxMDhdID0gXCJURVhUQVJFQVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJURk9PVFwiXSA9IDEwOV0gPSBcIlRGT09UXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlREXCJdID0gMTEwXSA9IFwiVERcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEhcIl0gPSAxMTFdID0gXCJUSFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUSEVBRFwiXSA9IDExMl0gPSBcIlRIRUFEXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRJVExFXCJdID0gMTEzXSA9IFwiVElUTEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVFJcIl0gPSAxMTRdID0gXCJUUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUUkFDS1wiXSA9IDExNV0gPSBcIlRSQUNLXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRUXCJdID0gMTE2XSA9IFwiVFRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVVwiXSA9IDExN10gPSBcIlVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVUxcIl0gPSAxMThdID0gXCJVTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVkdcIl0gPSAxMTldID0gXCJTVkdcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVkFSXCJdID0gMTIwXSA9IFwiVkFSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIldCUlwiXSA9IDEyMV0gPSBcIldCUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJYTVBcIl0gPSAxMjJdID0gXCJYTVBcIjtcbn0pKFRBR19JRCA9IGV4cG9ydHMuVEFHX0lEIHx8IChleHBvcnRzLlRBR19JRCA9IHt9KSk7XG5jb25zdCBUQUdfTkFNRV9UT19JRCA9IG5ldyBNYXAoW1xuICAgIFtUQUdfTkFNRVMuQSwgVEFHX0lELkFdLFxuICAgIFtUQUdfTkFNRVMuQUREUkVTUywgVEFHX0lELkFERFJFU1NdLFxuICAgIFtUQUdfTkFNRVMuQU5OT1RBVElPTl9YTUwsIFRBR19JRC5BTk5PVEFUSU9OX1hNTF0sXG4gICAgW1RBR19OQU1FUy5BUFBMRVQsIFRBR19JRC5BUFBMRVRdLFxuICAgIFtUQUdfTkFNRVMuQVJFQSwgVEFHX0lELkFSRUFdLFxuICAgIFtUQUdfTkFNRVMuQVJUSUNMRSwgVEFHX0lELkFSVElDTEVdLFxuICAgIFtUQUdfTkFNRVMuQVNJREUsIFRBR19JRC5BU0lERV0sXG4gICAgW1RBR19OQU1FUy5CLCBUQUdfSUQuQl0sXG4gICAgW1RBR19OQU1FUy5CQVNFLCBUQUdfSUQuQkFTRV0sXG4gICAgW1RBR19OQU1FUy5CQVNFRk9OVCwgVEFHX0lELkJBU0VGT05UXSxcbiAgICBbVEFHX05BTUVTLkJHU09VTkQsIFRBR19JRC5CR1NPVU5EXSxcbiAgICBbVEFHX05BTUVTLkJJRywgVEFHX0lELkJJR10sXG4gICAgW1RBR19OQU1FUy5CTE9DS1FVT1RFLCBUQUdfSUQuQkxPQ0tRVU9URV0sXG4gICAgW1RBR19OQU1FUy5CT0RZLCBUQUdfSUQuQk9EWV0sXG4gICAgW1RBR19OQU1FUy5CUiwgVEFHX0lELkJSXSxcbiAgICBbVEFHX05BTUVTLkJVVFRPTiwgVEFHX0lELkJVVFRPTl0sXG4gICAgW1RBR19OQU1FUy5DQVBUSU9OLCBUQUdfSUQuQ0FQVElPTl0sXG4gICAgW1RBR19OQU1FUy5DRU5URVIsIFRBR19JRC5DRU5URVJdLFxuICAgIFtUQUdfTkFNRVMuQ09ERSwgVEFHX0lELkNPREVdLFxuICAgIFtUQUdfTkFNRVMuQ09MLCBUQUdfSUQuQ09MXSxcbiAgICBbVEFHX05BTUVTLkNPTEdST1VQLCBUQUdfSUQuQ09MR1JPVVBdLFxuICAgIFtUQUdfTkFNRVMuREQsIFRBR19JRC5ERF0sXG4gICAgW1RBR19OQU1FUy5ERVNDLCBUQUdfSUQuREVTQ10sXG4gICAgW1RBR19OQU1FUy5ERVRBSUxTLCBUQUdfSUQuREVUQUlMU10sXG4gICAgW1RBR19OQU1FUy5ESUFMT0csIFRBR19JRC5ESUFMT0ddLFxuICAgIFtUQUdfTkFNRVMuRElSLCBUQUdfSUQuRElSXSxcbiAgICBbVEFHX05BTUVTLkRJViwgVEFHX0lELkRJVl0sXG4gICAgW1RBR19OQU1FUy5ETCwgVEFHX0lELkRMXSxcbiAgICBbVEFHX05BTUVTLkRULCBUQUdfSUQuRFRdLFxuICAgIFtUQUdfTkFNRVMuRU0sIFRBR19JRC5FTV0sXG4gICAgW1RBR19OQU1FUy5FTUJFRCwgVEFHX0lELkVNQkVEXSxcbiAgICBbVEFHX05BTUVTLkZJRUxEU0VULCBUQUdfSUQuRklFTERTRVRdLFxuICAgIFtUQUdfTkFNRVMuRklHQ0FQVElPTiwgVEFHX0lELkZJR0NBUFRJT05dLFxuICAgIFtUQUdfTkFNRVMuRklHVVJFLCBUQUdfSUQuRklHVVJFXSxcbiAgICBbVEFHX05BTUVTLkZPTlQsIFRBR19JRC5GT05UXSxcbiAgICBbVEFHX05BTUVTLkZPT1RFUiwgVEFHX0lELkZPT1RFUl0sXG4gICAgW1RBR19OQU1FUy5GT1JFSUdOX09CSkVDVCwgVEFHX0lELkZPUkVJR05fT0JKRUNUXSxcbiAgICBbVEFHX05BTUVTLkZPUk0sIFRBR19JRC5GT1JNXSxcbiAgICBbVEFHX05BTUVTLkZSQU1FLCBUQUdfSUQuRlJBTUVdLFxuICAgIFtUQUdfTkFNRVMuRlJBTUVTRVQsIFRBR19JRC5GUkFNRVNFVF0sXG4gICAgW1RBR19OQU1FUy5IMSwgVEFHX0lELkgxXSxcbiAgICBbVEFHX05BTUVTLkgyLCBUQUdfSUQuSDJdLFxuICAgIFtUQUdfTkFNRVMuSDMsIFRBR19JRC5IM10sXG4gICAgW1RBR19OQU1FUy5INCwgVEFHX0lELkg0XSxcbiAgICBbVEFHX05BTUVTLkg1LCBUQUdfSUQuSDVdLFxuICAgIFtUQUdfTkFNRVMuSDYsIFRBR19JRC5INl0sXG4gICAgW1RBR19OQU1FUy5IRUFELCBUQUdfSUQuSEVBRF0sXG4gICAgW1RBR19OQU1FUy5IRUFERVIsIFRBR19JRC5IRUFERVJdLFxuICAgIFtUQUdfTkFNRVMuSEdST1VQLCBUQUdfSUQuSEdST1VQXSxcbiAgICBbVEFHX05BTUVTLkhSLCBUQUdfSUQuSFJdLFxuICAgIFtUQUdfTkFNRVMuSFRNTCwgVEFHX0lELkhUTUxdLFxuICAgIFtUQUdfTkFNRVMuSSwgVEFHX0lELkldLFxuICAgIFtUQUdfTkFNRVMuSU1HLCBUQUdfSUQuSU1HXSxcbiAgICBbVEFHX05BTUVTLklNQUdFLCBUQUdfSUQuSU1BR0VdLFxuICAgIFtUQUdfTkFNRVMuSU5QVVQsIFRBR19JRC5JTlBVVF0sXG4gICAgW1RBR19OQU1FUy5JRlJBTUUsIFRBR19JRC5JRlJBTUVdLFxuICAgIFtUQUdfTkFNRVMuS0VZR0VOLCBUQUdfSUQuS0VZR0VOXSxcbiAgICBbVEFHX05BTUVTLkxBQkVMLCBUQUdfSUQuTEFCRUxdLFxuICAgIFtUQUdfTkFNRVMuTEksIFRBR19JRC5MSV0sXG4gICAgW1RBR19OQU1FUy5MSU5LLCBUQUdfSUQuTElOS10sXG4gICAgW1RBR19OQU1FUy5MSVNUSU5HLCBUQUdfSUQuTElTVElOR10sXG4gICAgW1RBR19OQU1FUy5NQUlOLCBUQUdfSUQuTUFJTl0sXG4gICAgW1RBR19OQU1FUy5NQUxJR05NQVJLLCBUQUdfSUQuTUFMSUdOTUFSS10sXG4gICAgW1RBR19OQU1FUy5NQVJRVUVFLCBUQUdfSUQuTUFSUVVFRV0sXG4gICAgW1RBR19OQU1FUy5NQVRILCBUQUdfSUQuTUFUSF0sXG4gICAgW1RBR19OQU1FUy5NRU5VLCBUQUdfSUQuTUVOVV0sXG4gICAgW1RBR19OQU1FUy5NRVRBLCBUQUdfSUQuTUVUQV0sXG4gICAgW1RBR19OQU1FUy5NR0xZUEgsIFRBR19JRC5NR0xZUEhdLFxuICAgIFtUQUdfTkFNRVMuTUksIFRBR19JRC5NSV0sXG4gICAgW1RBR19OQU1FUy5NTywgVEFHX0lELk1PXSxcbiAgICBbVEFHX05BTUVTLk1OLCBUQUdfSUQuTU5dLFxuICAgIFtUQUdfTkFNRVMuTVMsIFRBR19JRC5NU10sXG4gICAgW1RBR19OQU1FUy5NVEVYVCwgVEFHX0lELk1URVhUXSxcbiAgICBbVEFHX05BTUVTLk5BViwgVEFHX0lELk5BVl0sXG4gICAgW1RBR19OQU1FUy5OT0JSLCBUQUdfSUQuTk9CUl0sXG4gICAgW1RBR19OQU1FUy5OT0ZSQU1FUywgVEFHX0lELk5PRlJBTUVTXSxcbiAgICBbVEFHX05BTUVTLk5PRU1CRUQsIFRBR19JRC5OT0VNQkVEXSxcbiAgICBbVEFHX05BTUVTLk5PU0NSSVBULCBUQUdfSUQuTk9TQ1JJUFRdLFxuICAgIFtUQUdfTkFNRVMuT0JKRUNULCBUQUdfSUQuT0JKRUNUXSxcbiAgICBbVEFHX05BTUVTLk9MLCBUQUdfSUQuT0xdLFxuICAgIFtUQUdfTkFNRVMuT1BUR1JPVVAsIFRBR19JRC5PUFRHUk9VUF0sXG4gICAgW1RBR19OQU1FUy5PUFRJT04sIFRBR19JRC5PUFRJT05dLFxuICAgIFtUQUdfTkFNRVMuUCwgVEFHX0lELlBdLFxuICAgIFtUQUdfTkFNRVMuUEFSQU0sIFRBR19JRC5QQVJBTV0sXG4gICAgW1RBR19OQU1FUy5QTEFJTlRFWFQsIFRBR19JRC5QTEFJTlRFWFRdLFxuICAgIFtUQUdfTkFNRVMuUFJFLCBUQUdfSUQuUFJFXSxcbiAgICBbVEFHX05BTUVTLlJCLCBUQUdfSUQuUkJdLFxuICAgIFtUQUdfTkFNRVMuUlAsIFRBR19JRC5SUF0sXG4gICAgW1RBR19OQU1FUy5SVCwgVEFHX0lELlJUXSxcbiAgICBbVEFHX05BTUVTLlJUQywgVEFHX0lELlJUQ10sXG4gICAgW1RBR19OQU1FUy5SVUJZLCBUQUdfSUQuUlVCWV0sXG4gICAgW1RBR19OQU1FUy5TLCBUQUdfSUQuU10sXG4gICAgW1RBR19OQU1FUy5TQ1JJUFQsIFRBR19JRC5TQ1JJUFRdLFxuICAgIFtUQUdfTkFNRVMuU0VDVElPTiwgVEFHX0lELlNFQ1RJT05dLFxuICAgIFtUQUdfTkFNRVMuU0VMRUNULCBUQUdfSUQuU0VMRUNUXSxcbiAgICBbVEFHX05BTUVTLlNPVVJDRSwgVEFHX0lELlNPVVJDRV0sXG4gICAgW1RBR19OQU1FUy5TTUFMTCwgVEFHX0lELlNNQUxMXSxcbiAgICBbVEFHX05BTUVTLlNQQU4sIFRBR19JRC5TUEFOXSxcbiAgICBbVEFHX05BTUVTLlNUUklLRSwgVEFHX0lELlNUUklLRV0sXG4gICAgW1RBR19OQU1FUy5TVFJPTkcsIFRBR19JRC5TVFJPTkddLFxuICAgIFtUQUdfTkFNRVMuU1RZTEUsIFRBR19JRC5TVFlMRV0sXG4gICAgW1RBR19OQU1FUy5TVUIsIFRBR19JRC5TVUJdLFxuICAgIFtUQUdfTkFNRVMuU1VNTUFSWSwgVEFHX0lELlNVTU1BUlldLFxuICAgIFtUQUdfTkFNRVMuU1VQLCBUQUdfSUQuU1VQXSxcbiAgICBbVEFHX05BTUVTLlRBQkxFLCBUQUdfSUQuVEFCTEVdLFxuICAgIFtUQUdfTkFNRVMuVEJPRFksIFRBR19JRC5UQk9EWV0sXG4gICAgW1RBR19OQU1FUy5URU1QTEFURSwgVEFHX0lELlRFTVBMQVRFXSxcbiAgICBbVEFHX05BTUVTLlRFWFRBUkVBLCBUQUdfSUQuVEVYVEFSRUFdLFxuICAgIFtUQUdfTkFNRVMuVEZPT1QsIFRBR19JRC5URk9PVF0sXG4gICAgW1RBR19OQU1FUy5URCwgVEFHX0lELlREXSxcbiAgICBbVEFHX05BTUVTLlRILCBUQUdfSUQuVEhdLFxuICAgIFtUQUdfTkFNRVMuVEhFQUQsIFRBR19JRC5USEVBRF0sXG4gICAgW1RBR19OQU1FUy5USVRMRSwgVEFHX0lELlRJVExFXSxcbiAgICBbVEFHX05BTUVTLlRSLCBUQUdfSUQuVFJdLFxuICAgIFtUQUdfTkFNRVMuVFJBQ0ssIFRBR19JRC5UUkFDS10sXG4gICAgW1RBR19OQU1FUy5UVCwgVEFHX0lELlRUXSxcbiAgICBbVEFHX05BTUVTLlUsIFRBR19JRC5VXSxcbiAgICBbVEFHX05BTUVTLlVMLCBUQUdfSUQuVUxdLFxuICAgIFtUQUdfTkFNRVMuU1ZHLCBUQUdfSUQuU1ZHXSxcbiAgICBbVEFHX05BTUVTLlZBUiwgVEFHX0lELlZBUl0sXG4gICAgW1RBR19OQU1FUy5XQlIsIFRBR19JRC5XQlJdLFxuICAgIFtUQUdfTkFNRVMuWE1QLCBUQUdfSUQuWE1QXSxcbl0pO1xuZnVuY3Rpb24gZ2V0VGFnSUQodGFnTmFtZSkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gVEFHX05BTUVfVE9fSUQuZ2V0KHRhZ05hbWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBUQUdfSUQuVU5LTk9XTjtcbn1cbmV4cG9ydHMuZ2V0VGFnSUQgPSBnZXRUYWdJRDtcbmNvbnN0ICQgPSBUQUdfSUQ7XG5leHBvcnRzLlNQRUNJQUxfRUxFTUVOVFMgPSB7XG4gICAgW05TLkhUTUxdOiBuZXcgU2V0KFtcbiAgICAgICAgJC5BRERSRVNTLFxuICAgICAgICAkLkFQUExFVCxcbiAgICAgICAgJC5BUkVBLFxuICAgICAgICAkLkFSVElDTEUsXG4gICAgICAgICQuQVNJREUsXG4gICAgICAgICQuQkFTRSxcbiAgICAgICAgJC5CQVNFRk9OVCxcbiAgICAgICAgJC5CR1NPVU5ELFxuICAgICAgICAkLkJMT0NLUVVPVEUsXG4gICAgICAgICQuQk9EWSxcbiAgICAgICAgJC5CUixcbiAgICAgICAgJC5CVVRUT04sXG4gICAgICAgICQuQ0FQVElPTixcbiAgICAgICAgJC5DRU5URVIsXG4gICAgICAgICQuQ09MLFxuICAgICAgICAkLkNPTEdST1VQLFxuICAgICAgICAkLkRELFxuICAgICAgICAkLkRFVEFJTFMsXG4gICAgICAgICQuRElSLFxuICAgICAgICAkLkRJVixcbiAgICAgICAgJC5ETCxcbiAgICAgICAgJC5EVCxcbiAgICAgICAgJC5FTUJFRCxcbiAgICAgICAgJC5GSUVMRFNFVCxcbiAgICAgICAgJC5GSUdDQVBUSU9OLFxuICAgICAgICAkLkZJR1VSRSxcbiAgICAgICAgJC5GT09URVIsXG4gICAgICAgICQuRk9STSxcbiAgICAgICAgJC5GUkFNRSxcbiAgICAgICAgJC5GUkFNRVNFVCxcbiAgICAgICAgJC5IMSxcbiAgICAgICAgJC5IMixcbiAgICAgICAgJC5IMyxcbiAgICAgICAgJC5INCxcbiAgICAgICAgJC5INSxcbiAgICAgICAgJC5INixcbiAgICAgICAgJC5IRUFELFxuICAgICAgICAkLkhFQURFUixcbiAgICAgICAgJC5IR1JPVVAsXG4gICAgICAgICQuSFIsXG4gICAgICAgICQuSFRNTCxcbiAgICAgICAgJC5JRlJBTUUsXG4gICAgICAgICQuSU1HLFxuICAgICAgICAkLklOUFVULFxuICAgICAgICAkLkxJLFxuICAgICAgICAkLkxJTkssXG4gICAgICAgICQuTElTVElORyxcbiAgICAgICAgJC5NQUlOLFxuICAgICAgICAkLk1BUlFVRUUsXG4gICAgICAgICQuTUVOVSxcbiAgICAgICAgJC5NRVRBLFxuICAgICAgICAkLk5BVixcbiAgICAgICAgJC5OT0VNQkVELFxuICAgICAgICAkLk5PRlJBTUVTLFxuICAgICAgICAkLk5PU0NSSVBULFxuICAgICAgICAkLk9CSkVDVCxcbiAgICAgICAgJC5PTCxcbiAgICAgICAgJC5QLFxuICAgICAgICAkLlBBUkFNLFxuICAgICAgICAkLlBMQUlOVEVYVCxcbiAgICAgICAgJC5QUkUsXG4gICAgICAgICQuU0NSSVBULFxuICAgICAgICAkLlNFQ1RJT04sXG4gICAgICAgICQuU0VMRUNULFxuICAgICAgICAkLlNPVVJDRSxcbiAgICAgICAgJC5TVFlMRSxcbiAgICAgICAgJC5TVU1NQVJZLFxuICAgICAgICAkLlRBQkxFLFxuICAgICAgICAkLlRCT0RZLFxuICAgICAgICAkLlRELFxuICAgICAgICAkLlRFTVBMQVRFLFxuICAgICAgICAkLlRFWFRBUkVBLFxuICAgICAgICAkLlRGT09ULFxuICAgICAgICAkLlRILFxuICAgICAgICAkLlRIRUFELFxuICAgICAgICAkLlRJVExFLFxuICAgICAgICAkLlRSLFxuICAgICAgICAkLlRSQUNLLFxuICAgICAgICAkLlVMLFxuICAgICAgICAkLldCUixcbiAgICAgICAgJC5YTVAsXG4gICAgXSksXG4gICAgW05TLk1BVEhNTF06IG5ldyBTZXQoWyQuTUksICQuTU8sICQuTU4sICQuTVMsICQuTVRFWFQsICQuQU5OT1RBVElPTl9YTUxdKSxcbiAgICBbTlMuU1ZHXTogbmV3IFNldChbJC5USVRMRSwgJC5GT1JFSUdOX09CSkVDVCwgJC5ERVNDXSksXG4gICAgW05TLlhMSU5LXTogbmV3IFNldCgpLFxuICAgIFtOUy5YTUxdOiBuZXcgU2V0KCksXG4gICAgW05TLlhNTE5TXTogbmV3IFNldCgpLFxufTtcbmZ1bmN0aW9uIGlzTnVtYmVyZWRIZWFkZXIodG4pIHtcbiAgICByZXR1cm4gdG4gPT09ICQuSDEgfHwgdG4gPT09ICQuSDIgfHwgdG4gPT09ICQuSDMgfHwgdG4gPT09ICQuSDQgfHwgdG4gPT09ICQuSDUgfHwgdG4gPT09ICQuSDY7XG59XG5leHBvcnRzLmlzTnVtYmVyZWRIZWFkZXIgPSBpc051bWJlcmVkSGVhZGVyO1xuY29uc3QgVU5FU0NBUEVEX1RFWFQgPSBuZXcgU2V0KFtcbiAgICBUQUdfTkFNRVMuU1RZTEUsXG4gICAgVEFHX05BTUVTLlNDUklQVCxcbiAgICBUQUdfTkFNRVMuWE1QLFxuICAgIFRBR19OQU1FUy5JRlJBTUUsXG4gICAgVEFHX05BTUVTLk5PRU1CRUQsXG4gICAgVEFHX05BTUVTLk5PRlJBTUVTLFxuICAgIFRBR19OQU1FUy5QTEFJTlRFWFQsXG5dKTtcbmZ1bmN0aW9uIGhhc1VuZXNjYXBlZFRleHQodG4sIHNjcmlwdGluZ0VuYWJsZWQpIHtcbiAgICByZXR1cm4gVU5FU0NBUEVEX1RFWFQuaGFzKHRuKSB8fCAoc2NyaXB0aW5nRW5hYmxlZCAmJiB0biA9PT0gVEFHX05BTUVTLk5PU0NSSVBUKTtcbn1cbmV4cG9ydHMuaGFzVW5lc2NhcGVkVGV4dCA9IGhhc1VuZXNjYXBlZFRleHQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1odG1sLmpzLm1hcCIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVG9rZW5pemVyID0gZXhwb3J0cy5Ub2tlbml6ZXJNb2RlID0gdm9pZCAwO1xuY29uc3QgcHJlcHJvY2Vzc29yX2pzXzEgPSByZXF1aXJlKFwiLi9wcmVwcm9jZXNzb3IuanNcIik7XG5jb25zdCB1bmljb2RlX2pzXzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL3VuaWNvZGUuanNcIik7XG5jb25zdCB0b2tlbl9qc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi90b2tlbi5qc1wiKTtcbmNvbnN0IGRlY29kZV9qc18xID0gcmVxdWlyZShcImVudGl0aWVzL2xpYi9kZWNvZGUuanNcIik7XG5jb25zdCBlcnJvcl9jb2Rlc19qc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9lcnJvci1jb2Rlcy5qc1wiKTtcbmNvbnN0IGh0bWxfanNfMSA9IHJlcXVpcmUoXCIuLi9jb21tb24vaHRtbC5qc1wiKTtcbi8vQzEgVW5pY29kZSBjb250cm9sIGNoYXJhY3RlciByZWZlcmVuY2UgcmVwbGFjZW1lbnRzXG5jb25zdCBDMV9DT05UUk9MU19SRUZFUkVOQ0VfUkVQTEFDRU1FTlRTID0gbmV3IE1hcChbXG4gICAgWzB4ODAsIDgzNjRdLFxuICAgIFsweDgyLCA4MjE4XSxcbiAgICBbMHg4MywgNDAyXSxcbiAgICBbMHg4NCwgODIyMl0sXG4gICAgWzB4ODUsIDgyMzBdLFxuICAgIFsweDg2LCA4MjI0XSxcbiAgICBbMHg4NywgODIyNV0sXG4gICAgWzB4ODgsIDcxMF0sXG4gICAgWzB4ODksIDgyNDBdLFxuICAgIFsweDhhLCAzNTJdLFxuICAgIFsweDhiLCA4MjQ5XSxcbiAgICBbMHg4YywgMzM4XSxcbiAgICBbMHg4ZSwgMzgxXSxcbiAgICBbMHg5MSwgODIxNl0sXG4gICAgWzB4OTIsIDgyMTddLFxuICAgIFsweDkzLCA4MjIwXSxcbiAgICBbMHg5NCwgODIyMV0sXG4gICAgWzB4OTUsIDgyMjZdLFxuICAgIFsweDk2LCA4MjExXSxcbiAgICBbMHg5NywgODIxMl0sXG4gICAgWzB4OTgsIDczMl0sXG4gICAgWzB4OTksIDg0ODJdLFxuICAgIFsweDlhLCAzNTNdLFxuICAgIFsweDliLCA4MjUwXSxcbiAgICBbMHg5YywgMzM5XSxcbiAgICBbMHg5ZSwgMzgyXSxcbiAgICBbMHg5ZiwgMzc2XSxcbl0pO1xuLy9TdGF0ZXNcbnZhciBTdGF0ZTtcbihmdW5jdGlvbiAoU3RhdGUpIHtcbiAgICBTdGF0ZVtTdGF0ZVtcIkRBVEFcIl0gPSAwXSA9IFwiREFUQVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkNEQVRBXCJdID0gMV0gPSBcIlJDREFUQVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkFXVEVYVFwiXSA9IDJdID0gXCJSQVdURVhUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQVwiXSA9IDNdID0gXCJTQ1JJUFRfREFUQVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUExBSU5URVhUXCJdID0gNF0gPSBcIlBMQUlOVEVYVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiVEFHX09QRU5cIl0gPSA1XSA9IFwiVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkVORF9UQUdfT1BFTlwiXSA9IDZdID0gXCJFTkRfVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlRBR19OQU1FXCJdID0gN10gPSBcIlRBR19OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJSQ0RBVEFfTEVTU19USEFOX1NJR05cIl0gPSA4XSA9IFwiUkNEQVRBX0xFU1NfVEhBTl9TSUdOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJSQ0RBVEFfRU5EX1RBR19PUEVOXCJdID0gOV0gPSBcIlJDREFUQV9FTkRfVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJDREFUQV9FTkRfVEFHX05BTUVcIl0gPSAxMF0gPSBcIlJDREFUQV9FTkRfVEFHX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJBV1RFWFRfTEVTU19USEFOX1NJR05cIl0gPSAxMV0gPSBcIlJBV1RFWFRfTEVTU19USEFOX1NJR05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJBV1RFWFRfRU5EX1RBR19PUEVOXCJdID0gMTJdID0gXCJSQVdURVhUX0VORF9UQUdfT1BFTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkFXVEVYVF9FTkRfVEFHX05BTUVcIl0gPSAxM10gPSBcIlJBV1RFWFRfRU5EX1RBR19OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTlwiXSA9IDE0XSA9IFwiU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VORF9UQUdfT1BFTlwiXSA9IDE1XSA9IFwiU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVcIl0gPSAxNl0gPSBcIlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUXCJdID0gMTddID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIXCJdID0gMThdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRFwiXSA9IDE5XSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIXCJdID0gMjBdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIXCJdID0gMjFdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiXSA9IDIyXSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU5cIl0gPSAyM10gPSBcIlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRVwiXSA9IDI0XSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRcIl0gPSAyNV0gPSBcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEXCJdID0gMjZdID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSFwiXSA9IDI3XSA9IFwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIXCJdID0gMjhdID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOXCJdID0gMjldID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkRcIl0gPSAzMF0gPSBcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRUZPUkVfQVRUUklCVVRFX05BTUVcIl0gPSAzMV0gPSBcIkJFRk9SRV9BVFRSSUJVVEVfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQVRUUklCVVRFX05BTUVcIl0gPSAzMl0gPSBcIkFUVFJJQlVURV9OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBRlRFUl9BVFRSSUJVVEVfTkFNRVwiXSA9IDMzXSA9IFwiQUZURVJfQVRUUklCVVRFX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJFRk9SRV9BVFRSSUJVVEVfVkFMVUVcIl0gPSAzNF0gPSBcIkJFRk9SRV9BVFRSSUJVVEVfVkFMVUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEXCJdID0gMzVdID0gXCJBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URURcIl0gPSAzNl0gPSBcIkFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURcIl0gPSAzN10gPSBcIkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRFwiXSA9IDM4XSA9IFwiQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0VMRl9DTE9TSU5HX1NUQVJUX1RBR1wiXSA9IDM5XSA9IFwiU0VMRl9DTE9TSU5HX1NUQVJUX1RBR1wiO1xuICAgIFN0YXRlW1N0YXRlW1wiQk9HVVNfQ09NTUVOVFwiXSA9IDQwXSA9IFwiQk9HVVNfQ09NTUVOVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5cIl0gPSA0MV0gPSBcIk1BUktVUF9ERUNMQVJBVElPTl9PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX1NUQVJUXCJdID0gNDJdID0gXCJDT01NRU5UX1NUQVJUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX1NUQVJUX0RBU0hcIl0gPSA0M10gPSBcIkNPTU1FTlRfU1RBUlRfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVFwiXSA9IDQ0XSA9IFwiQ09NTUVOVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTlwiXSA9IDQ1XSA9IFwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HXCJdID0gNDZdID0gXCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIXCJdID0gNDddID0gXCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSFwiXSA9IDQ4XSA9IFwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9FTkRfREFTSFwiXSA9IDQ5XSA9IFwiQ09NTUVOVF9FTkRfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9FTkRcIl0gPSA1MF0gPSBcIkNPTU1FTlRfRU5EXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX0VORF9CQU5HXCJdID0gNTFdID0gXCJDT01NRU5UX0VORF9CQU5HXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFXCJdID0gNTJdID0gXCJET0NUWVBFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRUZPUkVfRE9DVFlQRV9OQU1FXCJdID0gNTNdID0gXCJCRUZPUkVfRE9DVFlQRV9OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFX05BTUVcIl0gPSA1NF0gPSBcIkRPQ1RZUEVfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfRE9DVFlQRV9OQU1FXCJdID0gNTVdID0gXCJBRlRFUl9ET0NUWVBFX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRcIl0gPSA1Nl0gPSBcIkFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSXCJdID0gNTddID0gXCJCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEXCJdID0gNThdID0gXCJET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRFwiXSA9IDU5XSA9IFwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSXCJdID0gNjBdID0gXCJBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNcIl0gPSA2MV0gPSBcIkJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU1wiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRFwiXSA9IDYyXSA9IFwiQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJcIl0gPSA2M10gPSBcIkJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURcIl0gPSA2NF0gPSBcIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEXCJdID0gNjVdID0gXCJET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJcIl0gPSA2Nl0gPSBcIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJPR1VTX0RPQ1RZUEVcIl0gPSA2N10gPSBcIkJPR1VTX0RPQ1RZUEVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNEQVRBX1NFQ1RJT05cIl0gPSA2OF0gPSBcIkNEQVRBX1NFQ1RJT05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNEQVRBX1NFQ1RJT05fQlJBQ0tFVFwiXSA9IDY5XSA9IFwiQ0RBVEFfU0VDVElPTl9CUkFDS0VUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDREFUQV9TRUNUSU9OX0VORFwiXSA9IDcwXSA9IFwiQ0RBVEFfU0VDVElPTl9FTkRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNIQVJBQ1RFUl9SRUZFUkVOQ0VcIl0gPSA3MV0gPSBcIkNIQVJBQ1RFUl9SRUZFUkVOQ0VcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIk5BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0VcIl0gPSA3Ml0gPSBcIk5BTUVEX0NIQVJBQ1RFUl9SRUZFUkVOQ0VcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFNQklHVU9VU19BTVBFUlNBTkRcIl0gPSA3M10gPSBcIkFNQklHVU9VU19BTVBFUlNBTkRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRVwiXSA9IDc0XSA9IFwiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUXCJdID0gNzVdID0gXCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFXCJdID0gNzZdID0gXCJIRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VcIl0gPSA3N10gPSBcIkRFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORFwiXSA9IDc4XSA9IFwiTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORFwiO1xufSkoU3RhdGUgfHwgKFN0YXRlID0ge30pKTtcbi8vVG9rZW5pemVyIGluaXRpYWwgc3RhdGVzIGZvciBkaWZmZXJlbnQgbW9kZXNcbmV4cG9ydHMuVG9rZW5pemVyTW9kZSA9IHtcbiAgICBEQVRBOiBTdGF0ZS5EQVRBLFxuICAgIFJDREFUQTogU3RhdGUuUkNEQVRBLFxuICAgIFJBV1RFWFQ6IFN0YXRlLlJBV1RFWFQsXG4gICAgU0NSSVBUX0RBVEE6IFN0YXRlLlNDUklQVF9EQVRBLFxuICAgIFBMQUlOVEVYVDogU3RhdGUuUExBSU5URVhULFxuICAgIENEQVRBX1NFQ1RJT046IFN0YXRlLkNEQVRBX1NFQ1RJT04sXG59O1xuLy9VdGlsc1xuLy9PUFRJTUlaQVRJT046IHRoZXNlIHV0aWxpdHkgZnVuY3Rpb25zIHNob3VsZCBub3QgYmUgbW92ZWQgb3V0IG9mIHRoaXMgbW9kdWxlLiBWOCBDcmFua3NoYWZ0IHdpbGwgbm90IGlubGluZVxuLy90aGlzIGZ1bmN0aW9ucyBpZiB0aGV5IHdpbGwgYmUgc2l0dWF0ZWQgaW4gYW5vdGhlciBtb2R1bGUgZHVlIHRvIGNvbnRleHQgc3dpdGNoLlxuLy9BbHdheXMgcGVyZm9ybSBpbmxpbmluZyBjaGVjayBiZWZvcmUgbW9kaWZ5aW5nIHRoaXMgZnVuY3Rpb25zICgnbm9kZSAtLXRyYWNlLWlubGluaW5nJykuXG5mdW5jdGlvbiBpc0FzY2lpRGlnaXQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkRJR0lUXzAgJiYgY3AgPD0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkRJR0lUXzk7XG59XG5mdW5jdGlvbiBpc0FzY2lpVXBwZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxBVElOX0NBUElUQUxfQSAmJiBjcCA8PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTEFUSU5fQ0FQSVRBTF9aO1xufVxuZnVuY3Rpb24gaXNBc2NpaUxvd2VyKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MQVRJTl9TTUFMTF9BICYmIGNwIDw9IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MQVRJTl9TTUFMTF9aO1xufVxuZnVuY3Rpb24gaXNBc2NpaUxldHRlcihjcCkge1xuICAgIHJldHVybiBpc0FzY2lpTG93ZXIoY3ApIHx8IGlzQXNjaWlVcHBlcihjcCk7XG59XG5mdW5jdGlvbiBpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlMZXR0ZXIoY3ApIHx8IGlzQXNjaWlEaWdpdChjcCk7XG59XG5mdW5jdGlvbiBpc0FzY2lpVXBwZXJIZXhEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTEFUSU5fQ0FQSVRBTF9BICYmIGNwIDw9IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MQVRJTl9DQVBJVEFMX0Y7XG59XG5mdW5jdGlvbiBpc0FzY2lpTG93ZXJIZXhEaWdpdChjcCkge1xuICAgIHJldHVybiBjcCA+PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTEFUSU5fU01BTExfQSAmJiBjcCA8PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTEFUSU5fU01BTExfRjtcbn1cbmZ1bmN0aW9uIGlzQXNjaWlIZXhEaWdpdChjcCkge1xuICAgIHJldHVybiBpc0FzY2lpRGlnaXQoY3ApIHx8IGlzQXNjaWlVcHBlckhleERpZ2l0KGNwKSB8fCBpc0FzY2lpTG93ZXJIZXhEaWdpdChjcCk7XG59XG5mdW5jdGlvbiB0b0FzY2lpTG93ZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgKyAzMjtcbn1cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjcCkge1xuICAgIHJldHVybiBjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNQQUNFIHx8IGNwID09PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTElORV9GRUVEIHx8IGNwID09PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuVEFCVUxBVElPTiB8fCBjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkZPUk1fRkVFRDtcbn1cbmZ1bmN0aW9uIGlzRW50aXR5SW5BdHRyaWJ1dGVJbnZhbGlkRW5kKG5leHRDcCkge1xuICAgIHJldHVybiBuZXh0Q3AgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FUVVBTFNfU0lHTiB8fCBpc0FzY2lpQWxwaGFOdW1lcmljKG5leHRDcCk7XG59XG5mdW5jdGlvbiBpc1NjcmlwdERhdGFEb3VibGVFc2NhcGVTZXF1ZW5jZUVuZChjcCkge1xuICAgIHJldHVybiBpc1doaXRlc3BhY2UoY3ApIHx8IGNwID09PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU09MSURVUyB8fCBjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOO1xufVxuLy9Ub2tlbml6ZXJcbmNsYXNzIFRva2VuaXplciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgaGFuZGxlcikge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgICAgICAvKiogRW5zdXJlcyB0aGF0IHRoZSBwYXJzaW5nIGxvb3AgaXNuJ3QgcnVuIG11bHRpcGxlIHRpbWVzIGF0IG9uY2UuICovXG4gICAgICAgIHRoaXMuaW5Mb29wID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBhZGp1c3RlZCBub2RlIGV4aXN0cywgaXMgbm90IGFuIGVsZW1lbnQgaW4gdGhlIEhUTUwgbmFtZXNwYWNlLFxuICAgICAgICAgKiBhbmQgdGhhdCBpdCBpcyBub3QgYW4gaW50ZWdyYXRpb24gcG9pbnQgZm9yIGVpdGhlciBNYXRoTUwgb3IgSFRNTC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3RyZWUtY29uc3RydWN0aW9ufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pbkZvcmVpZ25Ob2RlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9ICcnO1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSAtMTtcbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAtMTtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSBudWxsO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudEF0dHIgPSB7IG5hbWU6ICcnLCB2YWx1ZTogJycgfTtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IgPSBuZXcgcHJlcHJvY2Vzc29yX2pzXzEuUHJlcHJvY2Vzc29yKGhhbmRsZXIpO1xuICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKC0xKTtcbiAgICB9XG4gICAgLy9FcnJvcnNcbiAgICBfZXJyKGNvZGUpIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy5oYW5kbGVyKS5vblBhcnNlRXJyb3IpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB0aGlzLnByZXByb2Nlc3Nvci5nZXRFcnJvcihjb2RlKSk7XG4gICAgfVxuICAgIC8vIE5PVEU6IGBvZmZzZXRgIG1heSBuZXZlciBydW4gYWNyb3NzIGxpbmUgYm91bmRhcmllcy5cbiAgICBnZXRDdXJyZW50TG9jYXRpb24ob2Zmc2V0KSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8pIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGFydExpbmU6IHRoaXMucHJlcHJvY2Vzc29yLmxpbmUsXG4gICAgICAgICAgICBzdGFydENvbDogdGhpcy5wcmVwcm9jZXNzb3IuY29sIC0gb2Zmc2V0LFxuICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IHRoaXMucHJlcHJvY2Vzc29yLm9mZnNldCAtIG9mZnNldCxcbiAgICAgICAgICAgIGVuZExpbmU6IC0xLFxuICAgICAgICAgICAgZW5kQ29sOiAtMSxcbiAgICAgICAgICAgIGVuZE9mZnNldDogLTEsXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9ydW5QYXJzaW5nTG9vcCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5Mb29wKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmluTG9vcCA9IHRydWU7XG4gICAgICAgIHdoaWxlICh0aGlzLmFjdGl2ZSAmJiAhdGhpcy5wYXVzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90ID0gMDtcbiAgICAgICAgICAgIGNvbnN0IGNwID0gdGhpcy5fY29uc3VtZSgpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FsbFN0YXRlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluTG9vcCA9IGZhbHNlO1xuICAgIH1cbiAgICAvL0FQSVxuICAgIHBhdXNlKCkge1xuICAgICAgICB0aGlzLnBhdXNlZCA9IHRydWU7XG4gICAgfVxuICAgIHJlc3VtZSh3cml0ZUNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXVzZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyc2VyIHdhcyBhbHJlYWR5IHJlc3VtZWQnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgICAgICAvLyBOZWNlc3NhcnkgZm9yIHN5bmNocm9ub3VzIHJlc3VtZS5cbiAgICAgICAgaWYgKHRoaXMuaW5Mb29wKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLl9ydW5QYXJzaW5nTG9vcCgpO1xuICAgICAgICBpZiAoIXRoaXMucGF1c2VkKSB7XG4gICAgICAgICAgICB3cml0ZUNhbGxiYWNrID09PSBudWxsIHx8IHdyaXRlQ2FsbGJhY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHdyaXRlQ2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB3cml0ZShjaHVuaywgaXNMYXN0Q2h1bmssIHdyaXRlQ2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci53cml0ZShjaHVuaywgaXNMYXN0Q2h1bmspO1xuICAgICAgICB0aGlzLl9ydW5QYXJzaW5nTG9vcCgpO1xuICAgICAgICBpZiAoIXRoaXMucGF1c2VkKSB7XG4gICAgICAgICAgICB3cml0ZUNhbGxiYWNrID09PSBudWxsIHx8IHdyaXRlQ2FsbGJhY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHdyaXRlQ2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnNlcnRIdG1sQXRDdXJyZW50UG9zKGNodW5rKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyhjaHVuayk7XG4gICAgICAgIHRoaXMuX3J1blBhcnNpbmdMb29wKCk7XG4gICAgfVxuICAgIC8vSGliZXJuYXRpb25cbiAgICBfZW5zdXJlSGliZXJuYXRpb24oKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXByb2Nlc3Nvci5lbmRPZkNodW5rSGl0KSB7XG4gICAgICAgICAgICB0aGlzLl91bmNvbnN1bWUodGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QpO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy9Db25zdW1wdGlvblxuICAgIF9jb25zdW1lKCkge1xuICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCsrO1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVwcm9jZXNzb3IuYWR2YW5jZSgpO1xuICAgIH1cbiAgICBfdW5jb25zdW1lKGNvdW50KSB7XG4gICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90IC09IGNvdW50O1xuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5yZXRyZWF0KGNvdW50KTtcbiAgICB9XG4gICAgX3JlY29uc3VtZUluU3RhdGUoc3RhdGUsIGNwKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5fY2FsbFN0YXRlKGNwKTtcbiAgICB9XG4gICAgX2FkdmFuY2VCeShjb3VudCkge1xuICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCArPSBjb3VudDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5hZHZhbmNlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2gocGF0dGVybiwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICBpZiAodGhpcy5wcmVwcm9jZXNzb3Iuc3RhcnRzV2l0aChwYXR0ZXJuLCBjYXNlU2Vuc2l0aXZlKSkge1xuICAgICAgICAgICAgLy8gV2Ugd2lsbCBhbHJlYWR5IGhhdmUgY29uc3VtZWQgb25lIGNoYXJhY3RlciBiZWZvcmUgY2FsbGluZyB0aGlzIG1ldGhvZC5cbiAgICAgICAgICAgIHRoaXMuX2FkdmFuY2VCeShwYXR0ZXJuLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvL1Rva2VuIGNyZWF0aW9uXG4gICAgX2NyZWF0ZVN0YXJ0VGFnVG9rZW4oKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0ge1xuICAgICAgICAgICAgdHlwZTogdG9rZW5fanNfMS5Ub2tlblR5cGUuU1RBUlRfVEFHLFxuICAgICAgICAgICAgdGFnTmFtZTogJycsXG4gICAgICAgICAgICB0YWdJRDogaHRtbF9qc18xLlRBR19JRC5VTktOT1dOLFxuICAgICAgICAgICAgc2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYWNrU2VsZkNsb3Npbmc6IGZhbHNlLFxuICAgICAgICAgICAgYXR0cnM6IFtdLFxuICAgICAgICAgICAgbG9jYXRpb246IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKDEpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfY3JlYXRlRW5kVGFnVG9rZW4oKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0ge1xuICAgICAgICAgICAgdHlwZTogdG9rZW5fanNfMS5Ub2tlblR5cGUuRU5EX1RBRyxcbiAgICAgICAgICAgIHRhZ05hbWU6ICcnLFxuICAgICAgICAgICAgdGFnSUQ6IGh0bWxfanNfMS5UQUdfSUQuVU5LTk9XTixcbiAgICAgICAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGFja1NlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJzOiBbXSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbigyKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2NyZWF0ZUNvbW1lbnRUb2tlbihvZmZzZXQpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB7XG4gICAgICAgICAgICB0eXBlOiB0b2tlbl9qc18xLlRva2VuVHlwZS5DT01NRU5ULFxuICAgICAgICAgICAgZGF0YTogJycsXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5nZXRDdXJyZW50TG9jYXRpb24ob2Zmc2V0KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2NyZWF0ZURvY3R5cGVUb2tlbihpbml0aWFsTmFtZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IHRva2VuX2pzXzEuVG9rZW5UeXBlLkRPQ1RZUEUsXG4gICAgICAgICAgICBuYW1lOiBpbml0aWFsTmFtZSxcbiAgICAgICAgICAgIGZvcmNlUXVpcmtzOiBmYWxzZSxcbiAgICAgICAgICAgIHB1YmxpY0lkOiBudWxsLFxuICAgICAgICAgICAgc3lzdGVtSWQ6IG51bGwsXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9jcmVhdGVDaGFyYWN0ZXJUb2tlbih0eXBlLCBjaGFycykge1xuICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBjaGFycyxcbiAgICAgICAgICAgIGxvY2F0aW9uOiB0aGlzLmN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy9UYWcgYXR0cmlidXRlc1xuICAgIF9jcmVhdGVBdHRyKGF0dHJOYW1lRmlyc3RDaCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyID0ge1xuICAgICAgICAgICAgbmFtZTogYXR0ck5hbWVGaXJzdENoLFxuICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKDApO1xuICAgIH1cbiAgICBfbGVhdmVBdHRyTmFtZSgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIGlmICgoMCwgdG9rZW5fanNfMS5nZXRUb2tlbkF0dHIpKHRva2VuLCB0aGlzLmN1cnJlbnRBdHRyLm5hbWUpID09PSBudWxsKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRycy5wdXNoKHRoaXMuY3VycmVudEF0dHIpO1xuICAgICAgICAgICAgaWYgKHRva2VuLmxvY2F0aW9uICYmIHRoaXMuY3VycmVudExvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0ckxvY2F0aW9ucyA9ICgoX2EgPSAoX2IgPSB0b2tlbi5sb2NhdGlvbikuYXR0cnMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IChfYi5hdHRycyA9IE9iamVjdC5jcmVhdGUobnVsbCkpKTtcbiAgICAgICAgICAgICAgICBhdHRyTG9jYXRpb25zW3RoaXMuY3VycmVudEF0dHIubmFtZV0gPSB0aGlzLmN1cnJlbnRMb2NhdGlvbjtcbiAgICAgICAgICAgICAgICAvLyBTZXQgZW5kIGxvY2F0aW9uXG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5kdXBsaWNhdGVBdHRyaWJ1dGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9sZWF2ZUF0dHJWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudExvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbi5lbmRMaW5lID0gdGhpcy5wcmVwcm9jZXNzb3IubGluZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uLmVuZENvbCA9IHRoaXMucHJlcHJvY2Vzc29yLmNvbDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uLmVuZE9mZnNldCA9IHRoaXMucHJlcHJvY2Vzc29yLm9mZnNldDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL1Rva2VuIGVtaXNzaW9uXG4gICAgcHJlcGFyZVRva2VuKGN0KSB7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4oY3QubG9jYXRpb24pO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgICAgIGlmIChjdC5sb2NhdGlvbikge1xuICAgICAgICAgICAgY3QubG9jYXRpb24uZW5kTGluZSA9IHRoaXMucHJlcHJvY2Vzc29yLmxpbmU7XG4gICAgICAgICAgICBjdC5sb2NhdGlvbi5lbmRDb2wgPSB0aGlzLnByZXByb2Nlc3Nvci5jb2wgKyAxO1xuICAgICAgICAgICAgY3QubG9jYXRpb24uZW5kT2Zmc2V0ID0gdGhpcy5wcmVwcm9jZXNzb3Iub2Zmc2V0ICsgMTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKC0xKTtcbiAgICB9XG4gICAgZW1pdEN1cnJlbnRUYWdUb2tlbigpIHtcbiAgICAgICAgY29uc3QgY3QgPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgdGhpcy5wcmVwYXJlVG9rZW4oY3QpO1xuICAgICAgICBjdC50YWdJRCA9ICgwLCBodG1sX2pzXzEuZ2V0VGFnSUQpKGN0LnRhZ05hbWUpO1xuICAgICAgICBpZiAoY3QudHlwZSA9PT0gdG9rZW5fanNfMS5Ub2tlblR5cGUuU1RBUlRfVEFHKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RTdGFydFRhZ05hbWUgPSBjdC50YWdOYW1lO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVyLm9uU3RhcnRUYWcoY3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGN0LmF0dHJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW5kVGFnV2l0aEF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN0LnNlbGZDbG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVuZFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5oYW5kbGVyLm9uRW5kVGFnKGN0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5kcm9wUGFyc2VkQ2h1bmsoKTtcbiAgICB9XG4gICAgZW1pdEN1cnJlbnRDb21tZW50KGN0KSB7XG4gICAgICAgIHRoaXMucHJlcGFyZVRva2VuKGN0KTtcbiAgICAgICAgdGhpcy5oYW5kbGVyLm9uQ29tbWVudChjdCk7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuICAgIH1cbiAgICBlbWl0Q3VycmVudERvY3R5cGUoY3QpIHtcbiAgICAgICAgdGhpcy5wcmVwYXJlVG9rZW4oY3QpO1xuICAgICAgICB0aGlzLmhhbmRsZXIub25Eb2N0eXBlKGN0KTtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG4gICAgfVxuICAgIF9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKG5leHRMb2NhdGlvbikge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBhIHBlbmRpbmcgY2hhcmFjdGVyIHRva2VuLCBtYWtlIGl0J3MgZW5kIGxvY2F0aW9uIGVxdWFsIHRvIHRoZVxuICAgICAgICAgICAgLy9jdXJyZW50IHRva2VuJ3Mgc3RhcnQgbG9jYXRpb24uXG4gICAgICAgICAgICBpZiAobmV4dExvY2F0aW9uICYmIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24uZW5kTGluZSA9IG5leHRMb2NhdGlvbi5zdGFydExpbmU7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24uZW5kQ29sID0gbmV4dExvY2F0aW9uLnN0YXJ0Q29sO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9IG5leHRMb2NhdGlvbi5zdGFydE9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdG9rZW5fanNfMS5Ub2tlblR5cGUuQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vbkNoYXJhY3Rlcih0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIHRva2VuX2pzXzEuVG9rZW5UeXBlLk5VTExfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vbk51bGxDaGFyYWN0ZXIodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZXIub25XaGl0ZXNwYWNlQ2hhcmFjdGVyKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9lbWl0RU9GVG9rZW4oKSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRDdXJyZW50TG9jYXRpb24oMCk7XG4gICAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICAgICAgbG9jYXRpb24uZW5kTGluZSA9IGxvY2F0aW9uLnN0YXJ0TGluZTtcbiAgICAgICAgICAgIGxvY2F0aW9uLmVuZENvbCA9IGxvY2F0aW9uLnN0YXJ0Q29sO1xuICAgICAgICAgICAgbG9jYXRpb24uZW5kT2Zmc2V0ID0gbG9jYXRpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbihsb2NhdGlvbik7XG4gICAgICAgIHRoaXMuaGFuZGxlci5vbkVvZih7IHR5cGU6IHRva2VuX2pzXzEuVG9rZW5UeXBlLkVPRiwgbG9jYXRpb24gfSk7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIC8vQ2hhcmFjdGVycyBlbWlzc2lvblxuICAgIC8vT1BUSU1JWkFUSU9OOiBzcGVjaWZpY2F0aW9uIHVzZXMgb25seSBvbmUgdHlwZSBvZiBjaGFyYWN0ZXIgdG9rZW5zIChvbmUgdG9rZW4gcGVyIGNoYXJhY3RlcikuXG4gICAgLy9UaGlzIGNhdXNlcyBhIGh1Z2UgbWVtb3J5IG92ZXJoZWFkIGFuZCBhIGxvdCBvZiB1bm5lY2Vzc2FyeSBwYXJzZXIgbG9vcHMuIHBhcnNlNSB1c2VzIDMgZ3JvdXBzIG9mIGNoYXJhY3RlcnMuXG4gICAgLy9JZiB3ZSBoYXZlIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSBncm91cCwgdGhlIHBhcnNlciBjYW4gcHJvY2VzcyBpdFxuICAgIC8vYXMgYSBzaW5nbGUgc29saWQgY2hhcmFjdGVyIHRva2VuLlxuICAgIC8vU28sIHRoZXJlIGFyZSAzIHR5cGVzIG9mIGNoYXJhY3RlciB0b2tlbnMgaW4gcGFyc2U1OlxuICAgIC8vMSlUb2tlblR5cGUuTlVMTF9DSEFSQUNURVIgLSBcXHUwMDAwLWNoYXJhY3RlciBzZXF1ZW5jZXMgKGUuZy4gJ1xcdTAwMDBcXHUwMDAwXFx1MDAwMCcpXG4gICAgLy8yKVRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUiAtIGFueSB3aGl0ZXNwYWNlL25ldy1saW5lIGNoYXJhY3RlciBzZXF1ZW5jZXMgKGUuZy4gJ1xcbiAgXFxyXFx0ICAgXFxmJylcbiAgICAvLzMpVG9rZW5UeXBlLkNIQVJBQ1RFUiAtIGFueSBjaGFyYWN0ZXIgc2VxdWVuY2Ugd2hpY2ggZG9uJ3QgYmVsb25nIHRvIGdyb3VwcyAxIGFuZCAyIChlLmcuICdhYmNkZWYxMjM0QEAjJCVeJylcbiAgICBfYXBwZW5kQ2hhclRvQ3VycmVudENoYXJhY3RlclRva2VuKHR5cGUsIGNoKSB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLnR5cGUgIT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKDApO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4odGhpcy5jdXJyZW50TG9jYXRpb24pO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4uY2hhcnMgKz0gY2g7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NyZWF0ZUNoYXJhY3RlclRva2VuKHR5cGUsIGNoKTtcbiAgICB9XG4gICAgX2VtaXRDb2RlUG9pbnQoY3ApIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IGlzV2hpdGVzcGFjZShjcClcbiAgICAgICAgICAgID8gdG9rZW5fanNfMS5Ub2tlblR5cGUuV0hJVEVTUEFDRV9DSEFSQUNURVJcbiAgICAgICAgICAgIDogY3AgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5OVUxMXG4gICAgICAgICAgICAgICAgPyB0b2tlbl9qc18xLlRva2VuVHlwZS5OVUxMX0NIQVJBQ1RFUlxuICAgICAgICAgICAgICAgIDogdG9rZW5fanNfMS5Ub2tlblR5cGUuQ0hBUkFDVEVSO1xuICAgICAgICB0aGlzLl9hcHBlbmRDaGFyVG9DdXJyZW50Q2hhcmFjdGVyVG9rZW4odHlwZSwgU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApKTtcbiAgICB9XG4gICAgLy9OT1RFOiB1c2VkIHdoZW4gd2UgZW1pdCBjaGFyYWN0ZXJzIGV4cGxpY2l0bHkuXG4gICAgLy9UaGlzIGlzIGFsd2F5cyBmb3Igbm9uLXdoaXRlc3BhY2UgYW5kIG5vbi1udWxsIGNoYXJhY3RlcnMsIHdoaWNoIGFsbG93cyB1cyB0byBhdm9pZCBhZGRpdGlvbmFsIGNoZWNrcy5cbiAgICBfZW1pdENoYXJzKGNoKSB7XG4gICAgICAgIHRoaXMuX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbih0b2tlbl9qc18xLlRva2VuVHlwZS5DSEFSQUNURVIsIGNoKTtcbiAgICB9XG4gICAgLy8gQ2hhcmFjdGVyIHJlZmVyZW5jZSBoZWxwZXJzXG4gICAgX21hdGNoTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XG4gICAgICAgIGxldCBleGNlc3MgPSAwO1xuICAgICAgICBsZXQgd2l0aG91dFNlbWljb2xvbiA9IGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgY3VycmVudCA9IGRlY29kZV9qc18xLmh0bWxEZWNvZGVUcmVlWzBdOyBpID49IDA7IGNwID0gdGhpcy5fY29uc3VtZSgpKSB7XG4gICAgICAgICAgICBpID0gKDAsIGRlY29kZV9qc18xLmRldGVybWluZUJyYW5jaCkoZGVjb2RlX2pzXzEuaHRtbERlY29kZVRyZWUsIGN1cnJlbnQsIGkgKyAxLCBjcCk7XG4gICAgICAgICAgICBpZiAoaSA8IDApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBleGNlc3MgKz0gMTtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBkZWNvZGVfanNfMS5odG1sRGVjb2RlVHJlZVtpXTtcbiAgICAgICAgICAgIGNvbnN0IG1hc2tlZCA9IGN1cnJlbnQgJiBkZWNvZGVfanNfMS5CaW5UcmllRmxhZ3MuVkFMVUVfTEVOR1RIO1xuICAgICAgICAgICAgLy8gSWYgdGhlIGJyYW5jaCBpcyBhIHZhbHVlLCBzdG9yZSBpdCBhbmQgY29udGludWVcbiAgICAgICAgICAgIGlmIChtYXNrZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgbWFzayBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSB2YWx1ZSwgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGJ5dGUuXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVMZW5ndGggPSAobWFza2VkID4+IDE0KSAtIDE7XG4gICAgICAgICAgICAgICAgLy8gQXR0cmlidXRlIHZhbHVlcyB0aGF0IGFyZW4ndCB0ZXJtaW5hdGVkIHByb3Blcmx5IGFyZW4ndCBwYXJzZWQsIGFuZCBzaG91bGRuJ3QgbGVhZCB0byBhIHBhcnNlciBlcnJvci5cbiAgICAgICAgICAgICAgICAvLyBTZWUgdGhlIGV4YW1wbGUgaW4gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI25hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2Utc3RhdGVcbiAgICAgICAgICAgICAgICBpZiAoY3AgIT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TRU1JQ09MT04gJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpICYmXG4gICAgICAgICAgICAgICAgICAgIGlzRW50aXR5SW5BdHRyaWJ1dGVJbnZhbGlkRW5kKHRoaXMucHJlcHJvY2Vzc29yLnBlZWsoMSkpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vTk9URTogd2UgZG9uJ3QgZmx1c2ggYWxsIGNvbnN1bWVkIGNvZGUgcG9pbnRzIGhlcmUsIGFuZCBpbnN0ZWFkIHN3aXRjaCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzdGF0ZSBhZnRlclxuICAgICAgICAgICAgICAgICAgICAvL2VtaXR0aW5nIGFuIGFtcGVyc2FuZC4gVGhpcyBpcyBmaW5lLCBhcyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3b24ndCBiZSBwYXJzZWQgZGlmZmVyZW50bHkgaW4gYXR0cmlidXRlcy5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW3VuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5BTVBFUlNBTkRdO1xuICAgICAgICAgICAgICAgICAgICAvLyBTa2lwIG92ZXIgdGhlIHZhbHVlLlxuICAgICAgICAgICAgICAgICAgICBpICs9IHZhbHVlTGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHN1cnJvZ2F0ZSBwYWlyLCBjb25zdW1lIHRoZSBuZXh0IHR3byBieXRlcy5cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBbZGVjb2RlX2pzXzEuaHRtbERlY29kZVRyZWVbaV0gJiB+ZGVjb2RlX2pzXzEuQmluVHJpZUZsYWdzLlZBTFVFX0xFTkdUSF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlTGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gW2RlY29kZV9qc18xLmh0bWxEZWNvZGVUcmVlWysraV1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogW2RlY29kZV9qc18xLmh0bWxEZWNvZGVUcmVlWysraV0sIGRlY29kZV9qc18xLmh0bWxEZWNvZGVUcmVlWysraV1dO1xuICAgICAgICAgICAgICAgICAgICBleGNlc3MgPSAwO1xuICAgICAgICAgICAgICAgICAgICB3aXRob3V0U2VtaWNvbG9uID0gY3AgIT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TRU1JQ09MT047XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZUxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgemVyby1sZW5ndGgsIHdlJ3JlIGRvbmUuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnN1bWUoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VuY29uc3VtZShleGNlc3MpO1xuICAgICAgICBpZiAod2l0aG91dFNlbWljb2xvbiAmJiAhdGhpcy5wcmVwcm9jZXNzb3IuZW5kT2ZDaHVua0hpdCkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2Ugd2FudCB0byBlbWl0IHRoZSBlcnJvciBhYm92ZSBvbiB0aGUgY29kZSBwb2ludCBhZnRlciB0aGUgZW50aXR5LlxuICAgICAgICAvLyBXZSBhbHdheXMgY29uc3VtZSBvbmUgY29kZSBwb2ludCB0b28gbWFueSBpbiB0aGUgbG9vcCwgYW5kIHdlIHdhaXQgdG9cbiAgICAgICAgLy8gdW5jb25zdW1lIGl0IHVudGlsIGFmdGVyIHRoZSBlcnJvciBpcyBlbWl0dGVkLlxuICAgICAgICB0aGlzLl91bmNvbnN1bWUoMSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIF9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMucmV0dXJuU3RhdGUgPT09IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEIHx8XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID09PSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRCB8fFxuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9PT0gU3RhdGUuQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEKTtcbiAgICB9XG4gICAgX2ZsdXNoQ29kZVBvaW50Q29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZShjcCkge1xuICAgICAgICBpZiAodGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENhbGxpbmcgc3RhdGVzIHRoaXMgd2F5IHR1cm5zIG91dCB0byBiZSBtdWNoIGZhc3RlciB0aGFuIGFueSBvdGhlciBhcHByb2FjaC5cbiAgICBfY2FsbFN0YXRlKGNwKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSBTdGF0ZS5EQVRBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVEYXRhKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUkNEQVRBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGEoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQVdURVhUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5QTEFJTlRFWFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVBsYWludGV4dChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlRBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVFbmRUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuVEFHX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVRhZ05hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQ0RBVEFfTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YUxlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJDREFUQV9FTkRfVEFHX09QRU46IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YUVuZFRhZ09wZW4oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQ0RBVEFfRU5EX1RBR19OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGFFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUkFXVEVYVF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dExlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJBV1RFWFRfRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0RW5kVGFnT3BlbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJBV1RFWFRfRU5EX1RBR19OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0RW5kVGFnTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhTGVzc1RoYW5TaWduKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRW5kVGFnT3BlbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ05hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVTdGFydChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ24oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQVRUUklCVVRFX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9WQUxVRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlVmFsdWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfVU5RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0VMRl9DTE9TSU5HX1NUQVJUX1RBRzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2VsZkNsb3NpbmdTdGFydFRhZyhjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJPR1VTX0NPTU1FTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzQ29tbWVudChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLk1BUktVUF9ERUNMQVJBVElPTl9PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVNYXJrdXBEZWNsYXJhdGlvbk9wZW4oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX1NUQVJUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50U3RhcnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX1NUQVJUX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRTdGFydERhc2goY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFORzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmcoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmdEYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmdEYXNoRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNPTU1FTlRfRU5EX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRFbmREYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9FTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRFbmQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX0VORF9CQU5HOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50RW5kQmFuZyhjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURvY3R5cGUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVEb2N0eXBlTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9ET0NUWVBFX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVEb2N0eXBlUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckRvY3R5cGVQdWJsaWNJZGVudGlmaWVyKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJPR1VTX0RPQ1RZUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNEQVRBX1NFQ1RJT046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNkYXRhU2VjdGlvbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNEQVRBX1NFQ1RJT05fQlJBQ0tFVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ2RhdGFTZWN0aW9uQnJhY2tldChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNEQVRBX1NFQ1RJT05fRU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDZGF0YVNlY3Rpb25FbmQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DSEFSQUNURVJfUkVGRVJFTkNFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5OQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkFNQklHVU9VU19BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFtYmlndW91c0FtcGVyc2FuZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkhFWEFERU1JQ0FMX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfU1RBUlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUhleGFkZW1pY2FsQ2hhcmFjdGVyUmVmZXJlbmNlU3RhcnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5IRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVIZXhhZGVtaWNhbENoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRFQ0lNQUxfQ0hBUkFDVEVSX1JFRkVSRU5DRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRGVjaW1hbENoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2VFbmQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBzdGF0ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFN0YXRlIG1hY2hpbmVcbiAgICAvLyBEYXRhIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEYXRhKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlRBR19PUEVOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuQU1QRVJTQU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNIQVJBQ1RFUl9SRUZFUkVOQ0U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vICBSQ0RBVEEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVJjZGF0YShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gU3RhdGUuUkNEQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DSEFSQUNURVJfUkVGRVJFTkNFO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkNEQVRBX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGVfanNfMS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkFXVEVYVCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmF3dGV4dChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQVdURVhUX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGVfanNfMS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGEoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR047XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBQTEFJTlRFWFQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVBsYWludGV4dChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUYWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlVGFnT3BlbihjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVN0YXJ0VGFnVG9rZW4oKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5UQUdfTkFNRTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVYQ0xBTUFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLk1BUktVUF9ERUNMQVJBVElPTl9PUEVOO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU09MSURVUzoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRU5EX1RBR19PUEVOO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuUVVFU1RJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZFF1ZXN0aW9uTWFya0luc3RlYWRPZlRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oMSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19DT01NRU5UO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzQ29tbWVudChjcCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkJlZm9yZVRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5pbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRGF0YShjcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvLyBFbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlRBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdFbmRUYWdOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkJlZm9yZVRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuaW52YWxpZEZpcnN0Q2hhcmFjdGVyT2ZUYWdOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKDIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfQ09NTUVOVDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0NvbW1lbnQoY3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgLy8gVGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVRhZ05hbWUoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNPTElEVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0VMRl9DTE9TSU5HX1NUQVJUX1RBRztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi50YWdOYW1lICs9IHVuaWNvZGVfanNfMS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLnRhZ05hbWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoaXNBc2NpaVVwcGVyKGNwKSA/IHRvQXNjaWlMb3dlcihjcCkgOiBjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkNEQVRBIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVSY2RhdGFMZXNzVGhhblNpZ24oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJDREFUQV9FTkRfVEFHX09QRU47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkNEQVRBIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmNkYXRhRW5kVGFnT3BlbihjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEFfRU5EX1RBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGFFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaGFuZGxlU3BlY2lhbEVuZFRhZyhfY3ApIHtcbiAgICAgICAgaWYgKCF0aGlzLnByZXByb2Nlc3Nvci5zdGFydHNXaXRoKHRoaXMubGFzdFN0YXJ0VGFnTmFtZSwgZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgdG9rZW4udGFnTmFtZSA9IHRoaXMubGFzdFN0YXJ0VGFnTmFtZTtcbiAgICAgICAgY29uc3QgY3AgPSB0aGlzLnByZXByb2Nlc3Nvci5wZWVrKHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZHZhbmNlQnkodGhpcy5sYXN0U3RhcnRUYWdOYW1lLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWR2YW5jZUJ5KHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TRUxGX0NMT1NJTkdfU1RBUlRfVEFHO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWR2YW5jZUJ5KHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRUYWdUb2tlbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkNEQVRBIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmNkYXRhRW5kVGFnTmFtZShjcCkge1xuICAgICAgICBpZiAodGhpcy5oYW5kbGVTcGVjaWFsRW5kVGFnKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJDREFUQTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlUmNkYXRhKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSQVdURVhUIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVSYXd0ZXh0TGVzc1RoYW5TaWduKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQVdURVhUX0VORF9UQUdfT1BFTjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJBV1RFWFQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJhd3RleHQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFJBV1RFWFQgZW5kIHRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVSYXd0ZXh0RW5kVGFnT3BlbihjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQVdURVhUX0VORF9UQUdfTkFNRTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dEVuZFRhZ05hbWUoY3ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJBV1RFWFQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJhd3RleHQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFJBV1RFWFQgZW5kIHRhZyBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVSYXd0ZXh0RW5kVGFnTmFtZShjcCkge1xuICAgICAgICBpZiAodGhpcy5oYW5kbGVTcGVjaWFsRW5kVGFnKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJBV1RFWFQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJhd3RleHQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhTGVzc1RoYW5TaWduKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNPTElEVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRVhDTEFNQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8IScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRW5kVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ05hbWUoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlU3BlY2lhbEVuZFRhZyhjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnQoY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUX0RBU0g7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFFc2NhcGVTdGFydERhc2goY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0g7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR047XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRGFzaChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIX0RBU0g7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGVfanNfMS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2goY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc+Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBpZiAoY3AgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydChjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlbihjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBlbmQgdGFnIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZShjcCkge1xuICAgICAgICBpZiAodGhpcy5oYW5kbGVTcGVjaWFsRW5kVGFnKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnQoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMucHJlcHJvY2Vzc29yLnN0YXJ0c1dpdGgodW5pY29kZV9qc18xLlNFUVVFTkNFUy5TQ1JJUFQsIGZhbHNlKSAmJlxuICAgICAgICAgICAgaXNTY3JpcHREYXRhRG91YmxlRXNjYXBlU2VxdWVuY2VFbmQodGhpcy5wcmVwcm9jZXNzb3IucGVlayh1bmljb2RlX2pzXzEuU0VRVUVOQ0VTLlNDUklQVC5sZW5ndGgpKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaWNvZGVfanNfMS5TRVFVRU5DRVMuU0NSSVBULmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludCh0aGlzLl9jb25zdW1lKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGRvdWJsZSBlc2NhcGVkIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKHVuaWNvZGVfanNfMS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0g7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgZGFzaCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfTEVTU19USEFOX1NJR047XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJz4nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnModW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORDtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZSBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmQoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMucHJlcHJvY2Vzc29yLnN0YXJ0c1dpdGgodW5pY29kZV9qc18xLlNFUVVFTkNFUy5TQ1JJUFQsIGZhbHNlKSAmJlxuICAgICAgICAgICAgaXNTY3JpcHREYXRhRG91YmxlRXNjYXBlU2VxdWVuY2VFbmQodGhpcy5wcmVwcm9jZXNzb3IucGVlayh1bmljb2RlX2pzXzEuU0VRVUVOQ0VTLlNDUklQVC5sZW5ndGgpKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaWNvZGVfanNfMS5TRVFVRU5DRVMuU0NSSVBULmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludCh0aGlzLl9jb25zdW1lKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJlZm9yZSBhdHRyaWJ1dGUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU09MSURVUzpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFGVEVSX0FUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVRVUFMU19TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWRFcXVhbHNTaWduQmVmb3JlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignPScpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBdHRyaWJ1dGUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQXR0cmlidXRlTmFtZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5GT1JNX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TT0xJRFVTOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFGVEVSX0FUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVRVUFMU19TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyTmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX1ZBTFVFO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuUVVPVEFUSU9OX01BUks6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5BUE9TVFJPUEhFOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSB1bmljb2RlX2pzXzEuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIubmFtZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChpc0FzY2lpVXBwZXIoY3ApID8gdG9Bc2NpaUxvd2VyKGNwKSA6IGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBhdHRyaWJ1dGUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVOYW1lKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNFTEZfQ0xPU0lOR19TVEFSVF9UQUc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FUVVBTFNfU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX1ZBTFVFO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQmVmb3JlIGF0dHJpYnV0ZSB2YWx1ZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQmVmb3JlQXR0cmlidXRlVmFsdWUoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdBdHRyaWJ1dGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gU3RhdGUuQVRUUklCVVRFX1ZBTFVFX0RPVUJMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNIQVJBQ1RFUl9SRUZFUkVOQ0U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IHVuaWNvZGVfanNfMS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAoc2luZ2xlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkFNUEVSU0FORDoge1xuICAgICAgICAgICAgICAgIHRoaXMucmV0dXJuU3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0hBUkFDVEVSX1JFRkVSRU5DRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQXR0cmlidXRlIHZhbHVlICh1bnF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuQU1QRVJTQU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRDtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0hBUkFDVEVSX1JFRkVSRU5DRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gdW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlFVT1RBVElPTl9NQVJLOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuQVBPU1RST1BIRTpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxFU1NfVEhBTl9TSUdOOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRVFVQUxTX1NJR046XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkFWRV9BQ0NFTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZENoYXJhY3RlckluVW5xdW90ZWRBdHRyaWJ1dGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIGF0dHJpYnV0ZSB2YWx1ZSAocXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0VMRl9DTE9TSU5HX1NUQVJUX1RBRztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTZWxmLWNsb3Npbmcgc3RhcnQgdGFnIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTZWxmQ2xvc2luZ1N0YXJ0VGFnKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbi5zZWxmQ2xvc2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi51bmV4cGVjdGVkU29saWR1c0luVGFnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQm9ndXMgY29tbWVudCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQm9ndXNDb21tZW50KGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSB1bmljb2RlX2pzXzEuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIE1hcmt1cCBkZWNsYXJhdGlvbiBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVNYXJrdXBEZWNsYXJhdGlvbk9wZW4oY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbnN1bWVTZXF1ZW5jZUlmTWF0Y2godW5pY29kZV9qc18xLlNFUVVFTkNFUy5EQVNIX0RBU0gsIHRydWUpKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4odW5pY29kZV9qc18xLlNFUVVFTkNFUy5EQVNIX0RBU0gubGVuZ3RoICsgMSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9TVEFSVDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKHVuaWNvZGVfanNfMS5TRVFVRU5DRVMuRE9DVFlQRSwgZmFsc2UpKSB7XG4gICAgICAgICAgICAvLyBOT1RFOiBEb2N0eXBlcyB0b2tlbnMgYXJlIGNyZWF0ZWQgd2l0aG91dCBmaXhlZCBvZmZzZXRzLiBXZSBrZWVwIHRyYWNrIG9mIHRoZSBtb21lbnQgYSBkb2N0eXBlICptaWdodCogc3RhcnQgaGVyZS5cbiAgICAgICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uID0gdGhpcy5nZXRDdXJyZW50TG9jYXRpb24odW5pY29kZV9qc18xLlNFUVVFTkNFUy5ET0NUWVBFLmxlbmd0aCArIDEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCh1bmljb2RlX2pzXzEuU0VRVUVOQ0VTLkNEQVRBX1NUQVJULCB0cnVlKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5Gb3JlaWduTm9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DREFUQV9TRUNUSU9OO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmNkYXRhSW5IdG1sQ29udGVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQ29tbWVudFRva2VuKHVuaWNvZGVfanNfMS5TRVFVRU5DRVMuQ0RBVEFfU1RBUlQubGVuZ3RoICsgMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4uZGF0YSA9ICdbQ0RBVEFbJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfQ09NTUVOVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IFNlcXVlbmNlIGxvb2t1cHMgY2FuIGJlIGFicnVwdGVkIGJ5IGhpYmVybmF0aW9uLiBJbiB0aGF0IGNhc2UsIGxvb2t1cFxuICAgICAgICAvL3Jlc3VsdHMgYXJlIG5vIGxvbmdlciB2YWxpZCBhbmQgd2Ugd2lsbCBuZWVkIHRvIHN0YXJ0IG92ZXIuXG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigyKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19DT01NRU5UO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0NvbW1lbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRTdGFydChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9TVEFSVF9EQVNIO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgc3RhcnQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudFN0YXJ0RGFzaChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5hYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfRU5EX0RBU0g7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJzwnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSB1bmljb2RlX2pzXzEuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ24oY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRVhDTEFNQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJyEnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJzwnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ29tbWVudCBsZXNzLXRoYW4gc2lnbiBiYW5nIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50TGVzc1RoYW5TaWduQmFuZyhjcCkge1xuICAgICAgICBpZiAoY3AgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIGJhbmcgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmdEYXNoKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIX0RBU0g7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkRfREFTSDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudEVuZERhc2goY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgbGVzcy10aGFuIHNpZ24gYmFuZyBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ25CYW5nRGFzaERhc2goY3ApIHtcbiAgICAgICAgaWYgKGNwICE9PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR04gJiYgY3AgIT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0YpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5uZXN0ZWRDb21tZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkQ7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudEVuZChjcCk7XG4gICAgfVxuICAgIC8vIENvbW1lbnQgZW5kIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRFbmREYXNoKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgZW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50RW5kKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRVhDTEFNQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORF9CQU5HO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnLSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5Db21tZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnLS0nO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ29tbWVudCBlbmQgYmFuZyBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudEVuZEJhbmcoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnLS0hJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkRfREFTSDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmluY29ycmVjdGx5Q2xvc2VkQ29tbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJy0tISc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEb2N0eXBlKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9OQU1FO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0RPQ1RZUEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJlZm9yZURvY3R5cGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbihudWxsKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmVmb3JlRG9jdHlwZU5hbWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJlZm9yZSBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJlZm9yZURvY3R5cGVOYW1lKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpVXBwZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4oU3RyaW5nLmZyb21DaGFyQ29kZSh0b0FzY2lpTG93ZXIoY3ApKSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9OQU1FO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TUEFDRTpcbiAgICAgICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuVEFCVUxBVElPTjpcbiAgICAgICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEw6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKHVuaWNvZGVfanNfMS5SRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9OQU1FO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbihudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlRG9jdHlwZVRva2VuKFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURvY3R5cGVOYW1lKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLm5hbWUgKz0gdW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4ubmFtZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChpc0FzY2lpVXBwZXIoY3ApID8gdG9Bc2NpaUxvd2VyKGNwKSA6IGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBET0NUWVBFIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyRG9jdHlwZU5hbWUoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fY29uc3VtZVNlcXVlbmNlSWZNYXRjaCh1bmljb2RlX2pzXzEuU0VRVUVOQ0VTLlBVQkxJQywgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKHVuaWNvZGVfanNfMS5TRVFVRU5DRVMuU1lTVEVNLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0tFWVdPUkQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vTk9URTogc2VxdWVuY2UgbG9va3VwIGNhbiBiZSBhYnJ1cHRlZCBieSBoaWJlcm5hdGlvbi4gSW4gdGhhdCBjYXNlIGxvb2t1cFxuICAgICAgICAgICAgICAgIC8vcmVzdWx0cyBhcmUgbm8gbG9uZ2VyIHZhbGlkIGFuZCB3ZSB3aWxsIG5lZWQgdG8gc3RhcnQgb3Zlci5cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuaW52YWxpZENoYXJhY3RlclNlcXVlbmNlQWZ0ZXJEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJPR1VTX0RPQ1RZUEU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBwdWJsaWMga2V5d29yZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5taXNzaW5nV2hpdGVzcGFjZUFmdGVyRG9jdHlwZVB1YmxpY0tleXdvcmQpO1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIubWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5taXNzaW5nRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCZWZvcmUgRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdEb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJPR1VTX0RPQ1RZUEU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0RvY3R5cGUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgKGRvdWJsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEb2N0eXBlUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgKz0gdW5pY29kZV9qc18xLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmFicnVwdERvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5wdWJsaWNJZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciAoc2luZ2xlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkICs9IHVuaWNvZGVfanNfMS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5hYnJ1cHREb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIERPQ1RZUEUgcHVibGljIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIubWlzc2luZ1doaXRlc3BhY2VCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVycyk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQmV0d2VlbiBET0NUWVBFIHB1YmxpYyBhbmQgc3lzdGVtIGlkZW50aWZpZXJzIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJPR1VTX0RPQ1RZUEU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0RvY3R5cGUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIERPQ1RZUEUgc3lzdGVtIGtleXdvcmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyRG9jdHlwZVN5c3RlbUtleXdvcmQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIubWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZCk7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIubWlzc2luZ0RvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQmVmb3JlIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5taXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIChkb3VibGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkICs9IHVuaWNvZGVfanNfMS5SRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5hYnJ1cHREb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEb2N0eXBlU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCArPSB1bmljb2RlX2pzXzEuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuYWJydXB0RG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQm9ndXMgRE9DVFlQRSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQm9ndXNEb2N0eXBlKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENEQVRBIHNlY3Rpb24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNkYXRhU2VjdGlvbihjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5SSUdIVF9TUVVBUkVfQlJBQ0tFVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DREFUQV9TRUNUSU9OX0JSQUNLRVQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5DZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ0RBVEEgc2VjdGlvbiBicmFja2V0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDZGF0YVNlY3Rpb25CcmFja2V0KGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlJJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0RBVEFfU0VDVElPTl9FTkQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJ10nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DREFUQV9TRUNUSU9OO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVDZGF0YVNlY3Rpb24oY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENEQVRBIHNlY3Rpb24gZW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDZGF0YVNlY3Rpb25FbmQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlJJR0hUX1NRVUFSRV9CUkFDS0VUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCddJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCddXScpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DREFUQV9TRUNUSU9OO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ2RhdGFTZWN0aW9uKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVNQkVSX1NJR04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5OVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBc2NpaUFscGhhTnVtZXJpYyhjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5OQU1FRF9DSEFSQUNURVJfUkVGRVJFTkNFO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UodW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkFNUEVSU0FORCk7XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUsIGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBOYW1lZCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZShjcCkge1xuICAgICAgICBjb25zdCBtYXRjaFJlc3VsdCA9IHRoaXMuX21hdGNoTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApO1xuICAgICAgICAvL05PVEU6IE1hdGNoaW5nIGNhbiBiZSBhYnJ1cHRlZCBieSBoaWJlcm5hdGlvbi4gSW4gdGhhdCBjYXNlLCBtYXRjaFxuICAgICAgICAvL3Jlc3VsdHMgYXJlIG5vIGxvbmdlciB2YWxpZCBhbmQgd2Ugd2lsbCBuZWVkIHRvIHN0YXJ0IG92ZXIuXG4gICAgICAgIGlmICh0aGlzLl9lbnN1cmVIaWJlcm5hdGlvbigpKSB7XG4gICAgICAgICAgICAvLyBTdGF5IGluIHRoZSBzdGF0ZSwgdHJ5IGFnYWluLlxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1hdGNoUmVzdWx0KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoUmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKG1hdGNoUmVzdWx0W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLnJldHVyblN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5BTVBFUlNBTkQpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFNQklHVU9VU19BTVBFUlNBTkQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQW1iaWd1b3MgYW1wZXJzYW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBbWJpZ3VvdXNBbXBlcnNhbmQoY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlBbHBoYU51bWVyaWMoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNwID09PSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuU0VNSUNPTE9OKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnVua25vd25OYW1lZENoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9yZWNvbnN1bWVJblN0YXRlKHRoaXMucmV0dXJuU3RhdGUsIGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBOdW1lcmljIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApIHtcbiAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IDA7XG4gICAgICAgIGlmIChjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkxBVElOX1NNQUxMX1ggfHwgY3AgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5MQVRJTl9DQVBJVEFMX1gpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5IRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFX1NUQVJUO1xuICAgICAgICB9XG4gICAgICAgIC8vIElubGluZWQgZGVjaW1hbCBjaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXJ0IHN0YXRlXG4gICAgICAgIGVsc2UgaWYgKGlzQXNjaWlEaWdpdChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ERUNJTUFMX0NIQVJBQ1RFUl9SRUZFUkVOQ0U7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZURlY2ltYWxDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLmFic2VuY2VPZkRpZ2l0c0luTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UodW5pY29kZV9qc18xLkNPREVfUE9JTlRTLkFNUEVSU0FORCk7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UodW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTUJFUl9TSUdOKTtcbiAgICAgICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUodGhpcy5yZXR1cm5TdGF0ZSwgY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEhleGFkZW1pY2FsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUhleGFkZW1pY2FsQ2hhcmFjdGVyUmVmZXJlbmNlU3RhcnQoY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlIZXhEaWdpdChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5IRVhBREVNSUNBTF9DSEFSQUNURVJfUkVGRVJFTkNFO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVIZXhhZGVtaWNhbENoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50Q29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSh1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuQU1QRVJTQU5EKTtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50Q29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZSh1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuTlVNQkVSX1NJR04pO1xuICAgICAgICAgICAgdGhpcy5fdW5jb25zdW1lKDIpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMucmV0dXJuU3RhdGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gSGV4YWRlbWljYWwgY2hhcmFjdGVyIHJlZmVyZW5jZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlSGV4YWRlbWljYWxDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlckhleERpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IHRoaXMuY2hhclJlZkNvZGUgKiAxNiArIGNwIC0gMHgzNztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc0FzY2lpTG93ZXJIZXhEaWdpdChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSB0aGlzLmNoYXJSZWZDb2RlICogMTYgKyBjcCAtIDB4NTc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNBc2NpaURpZ2l0KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5jaGFyUmVmQ29kZSA9IHRoaXMuY2hhclJlZkNvZGUgKiAxNiArIGNwIC0gMHgzMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjcCA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLk5VTUVSSUNfQ0hBUkFDVEVSX1JFRkVSRU5DRV9FTkQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIubWlzc2luZ1NlbWljb2xvbkFmdGVyQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5OVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlRW5kKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBEZWNpbWFsIGNoYXJhY3RlciByZWZlcmVuY2Ugc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURlY2ltYWxDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlEaWdpdChjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSB0aGlzLmNoYXJSZWZDb2RlICogMTAgKyBjcCAtIDB4MzA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY3AgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5TRU1JQ09MT04pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5OVU1FUklDX0NIQVJBQ1RFUl9SRUZFUkVOQ0VfRU5EO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3NpbmdTZW1pY29sb25BZnRlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuTlVNRVJJQ19DSEFSQUNURVJfUkVGRVJFTkNFX0VORDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZUVuZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gTnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlIGVuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZUVuZChjcCkge1xuICAgICAgICBpZiAodGhpcy5jaGFyUmVmQ29kZSA9PT0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLk5VTEwpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5udWxsQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSB1bmljb2RlX2pzXzEuQ09ERV9QT0lOVFMuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuY2hhclJlZkNvZGUgPiAxMTE0MTExKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3JfY29kZXNfanNfMS5FUlIuY2hhcmFjdGVyUmVmZXJlbmNlT3V0c2lkZVVuaWNvZGVSYW5nZSk7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoMCwgdW5pY29kZV9qc18xLmlzU3Vycm9nYXRlKSh0aGlzLmNoYXJSZWZDb2RlKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLnN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgICAgICB0aGlzLmNoYXJSZWZDb2RlID0gdW5pY29kZV9qc18xLkNPREVfUE9JTlRTLlJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoMCwgdW5pY29kZV9qc18xLmlzVW5kZWZpbmVkQ29kZVBvaW50KSh0aGlzLmNoYXJSZWZDb2RlKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKGVycm9yX2NvZGVzX2pzXzEuRVJSLm5vbmNoYXJhY3RlckNoYXJhY3RlclJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKDAsIHVuaWNvZGVfanNfMS5pc0NvbnRyb2xDb2RlUG9pbnQpKHRoaXMuY2hhclJlZkNvZGUpIHx8IHRoaXMuY2hhclJlZkNvZGUgPT09IHVuaWNvZGVfanNfMS5DT0RFX1BPSU5UUy5DQVJSSUFHRV9SRVRVUk4pIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihlcnJvcl9jb2Rlc19qc18xLkVSUi5jb250cm9sQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gQzFfQ09OVFJPTFNfUkVGRVJFTkNFX1JFUExBQ0VNRU5UUy5nZXQodGhpcy5jaGFyUmVmQ29kZSk7XG4gICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhclJlZkNvZGUgPSByZXBsYWNlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UodGhpcy5jaGFyUmVmQ29kZSk7XG4gICAgICAgIHRoaXMuX3JlY29uc3VtZUluU3RhdGUodGhpcy5yZXR1cm5TdGF0ZSwgY3ApO1xuICAgIH1cbn1cbmV4cG9ydHMuVG9rZW5pemVyID0gVG9rZW5pemVyO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5PcGVuRWxlbWVudFN0YWNrID0gdm9pZCAwO1xuY29uc3QgaHRtbF9qc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9odG1sLmpzXCIpO1xuLy9FbGVtZW50IHV0aWxzXG5jb25zdCBJTVBMSUNJVF9FTkRfVEFHX1JFUVVJUkVEID0gbmV3IFNldChbaHRtbF9qc18xLlRBR19JRC5ERCwgaHRtbF9qc18xLlRBR19JRC5EVCwgaHRtbF9qc18xLlRBR19JRC5MSSwgaHRtbF9qc18xLlRBR19JRC5PUFRHUk9VUCwgaHRtbF9qc18xLlRBR19JRC5PUFRJT04sIGh0bWxfanNfMS5UQUdfSUQuUCwgaHRtbF9qc18xLlRBR19JRC5SQiwgaHRtbF9qc18xLlRBR19JRC5SUCwgaHRtbF9qc18xLlRBR19JRC5SVCwgaHRtbF9qc18xLlRBR19JRC5SVENdKTtcbmNvbnN0IElNUExJQ0lUX0VORF9UQUdfUkVRVUlSRURfVEhPUk9VR0hMWSA9IG5ldyBTZXQoW1xuICAgIC4uLklNUExJQ0lUX0VORF9UQUdfUkVRVUlSRUQsXG4gICAgaHRtbF9qc18xLlRBR19JRC5DQVBUSU9OLFxuICAgIGh0bWxfanNfMS5UQUdfSUQuQ09MR1JPVVAsXG4gICAgaHRtbF9qc18xLlRBR19JRC5UQk9EWSxcbiAgICBodG1sX2pzXzEuVEFHX0lELlRELFxuICAgIGh0bWxfanNfMS5UQUdfSUQuVEZPT1QsXG4gICAgaHRtbF9qc18xLlRBR19JRC5USCxcbiAgICBodG1sX2pzXzEuVEFHX0lELlRIRUFELFxuICAgIGh0bWxfanNfMS5UQUdfSUQuVFIsXG5dKTtcbmNvbnN0IFNDT1BJTkdfRUxFTUVOVF9OUyA9IG5ldyBNYXAoW1xuICAgIFtodG1sX2pzXzEuVEFHX0lELkFQUExFVCwgaHRtbF9qc18xLk5TLkhUTUxdLFxuICAgIFtodG1sX2pzXzEuVEFHX0lELkNBUFRJT04sIGh0bWxfanNfMS5OUy5IVE1MXSxcbiAgICBbaHRtbF9qc18xLlRBR19JRC5IVE1MLCBodG1sX2pzXzEuTlMuSFRNTF0sXG4gICAgW2h0bWxfanNfMS5UQUdfSUQuTUFSUVVFRSwgaHRtbF9qc18xLk5TLkhUTUxdLFxuICAgIFtodG1sX2pzXzEuVEFHX0lELk9CSkVDVCwgaHRtbF9qc18xLk5TLkhUTUxdLFxuICAgIFtodG1sX2pzXzEuVEFHX0lELlRBQkxFLCBodG1sX2pzXzEuTlMuSFRNTF0sXG4gICAgW2h0bWxfanNfMS5UQUdfSUQuVEQsIGh0bWxfanNfMS5OUy5IVE1MXSxcbiAgICBbaHRtbF9qc18xLlRBR19JRC5URU1QTEFURSwgaHRtbF9qc18xLk5TLkhUTUxdLFxuICAgIFtodG1sX2pzXzEuVEFHX0lELlRILCBodG1sX2pzXzEuTlMuSFRNTF0sXG4gICAgW2h0bWxfanNfMS5UQUdfSUQuQU5OT1RBVElPTl9YTUwsIGh0bWxfanNfMS5OUy5NQVRITUxdLFxuICAgIFtodG1sX2pzXzEuVEFHX0lELk1JLCBodG1sX2pzXzEuTlMuTUFUSE1MXSxcbiAgICBbaHRtbF9qc18xLlRBR19JRC5NTiwgaHRtbF9qc18xLk5TLk1BVEhNTF0sXG4gICAgW2h0bWxfanNfMS5UQUdfSUQuTU8sIGh0bWxfanNfMS5OUy5NQVRITUxdLFxuICAgIFtodG1sX2pzXzEuVEFHX0lELk1TLCBodG1sX2pzXzEuTlMuTUFUSE1MXSxcbiAgICBbaHRtbF9qc18xLlRBR19JRC5NVEVYVCwgaHRtbF9qc18xLk5TLk1BVEhNTF0sXG4gICAgW2h0bWxfanNfMS5UQUdfSUQuREVTQywgaHRtbF9qc18xLk5TLlNWR10sXG4gICAgW2h0bWxfanNfMS5UQUdfSUQuRk9SRUlHTl9PQkpFQ1QsIGh0bWxfanNfMS5OUy5TVkddLFxuICAgIFtodG1sX2pzXzEuVEFHX0lELlRJVExFLCBodG1sX2pzXzEuTlMuU1ZHXSxcbl0pO1xuY29uc3QgTkFNRURfSEVBREVSUyA9IFtodG1sX2pzXzEuVEFHX0lELkgxLCBodG1sX2pzXzEuVEFHX0lELkgyLCBodG1sX2pzXzEuVEFHX0lELkgzLCBodG1sX2pzXzEuVEFHX0lELkg0LCBodG1sX2pzXzEuVEFHX0lELkg1LCBodG1sX2pzXzEuVEFHX0lELkg2XTtcbmNvbnN0IFRBQkxFX1JPV19DT05URVhUID0gW2h0bWxfanNfMS5UQUdfSUQuVFIsIGh0bWxfanNfMS5UQUdfSUQuVEVNUExBVEUsIGh0bWxfanNfMS5UQUdfSUQuSFRNTF07XG5jb25zdCBUQUJMRV9CT0RZX0NPTlRFWFQgPSBbaHRtbF9qc18xLlRBR19JRC5UQk9EWSwgaHRtbF9qc18xLlRBR19JRC5URk9PVCwgaHRtbF9qc18xLlRBR19JRC5USEVBRCwgaHRtbF9qc18xLlRBR19JRC5URU1QTEFURSwgaHRtbF9qc18xLlRBR19JRC5IVE1MXTtcbmNvbnN0IFRBQkxFX0NPTlRFWFQgPSBbaHRtbF9qc18xLlRBR19JRC5UQUJMRSwgaHRtbF9qc18xLlRBR19JRC5URU1QTEFURSwgaHRtbF9qc18xLlRBR19JRC5IVE1MXTtcbmNvbnN0IFRBQkxFX0NFTExTID0gW2h0bWxfanNfMS5UQUdfSUQuVEQsIGh0bWxfanNfMS5UQUdfSUQuVEhdO1xuLy9TdGFjayBvZiBvcGVuIGVsZW1lbnRzXG5jbGFzcyBPcGVuRWxlbWVudFN0YWNrIHtcbiAgICBnZXQgY3VycmVudFRtcGxDb250ZW50T3JOb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJblRlbXBsYXRlKCkgPyB0aGlzLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudCh0aGlzLmN1cnJlbnQpIDogdGhpcy5jdXJyZW50O1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCwgdHJlZUFkYXB0ZXIsIGhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlciA9IHRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICB0aGlzLml0ZW1zID0gW107XG4gICAgICAgIHRoaXMudGFnSURzID0gW107XG4gICAgICAgIHRoaXMuc3RhY2tUb3AgPSAtMTtcbiAgICAgICAgdGhpcy50bXBsQ291bnQgPSAwO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWdJZCA9IGh0bWxfanNfMS5UQUdfSUQuVU5LTk9XTjtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gZG9jdW1lbnQ7XG4gICAgfVxuICAgIC8vSW5kZXggb2YgZWxlbWVudFxuICAgIF9pbmRleE9mKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXMubGFzdEluZGV4T2YoZWxlbWVudCwgdGhpcy5zdGFja1RvcCk7XG4gICAgfVxuICAgIC8vVXBkYXRlIGN1cnJlbnQgZWxlbWVudFxuICAgIF9pc0luVGVtcGxhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRUYWdJZCA9PT0gaHRtbF9qc18xLlRBR19JRC5URU1QTEFURSAmJiB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLmN1cnJlbnQpID09PSBodG1sX2pzXzEuTlMuSFRNTDtcbiAgICB9XG4gICAgX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCkge1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLml0ZW1zW3RoaXMuc3RhY2tUb3BdO1xuICAgICAgICB0aGlzLmN1cnJlbnRUYWdJZCA9IHRoaXMudGFnSURzW3RoaXMuc3RhY2tUb3BdO1xuICAgIH1cbiAgICAvL011dGF0aW9uc1xuICAgIHB1c2goZWxlbWVudCwgdGFnSUQpIHtcbiAgICAgICAgdGhpcy5zdGFja1RvcCsrO1xuICAgICAgICB0aGlzLml0ZW1zW3RoaXMuc3RhY2tUb3BdID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy50YWdJRHNbdGhpcy5zdGFja1RvcF0gPSB0YWdJRDtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnSWQgPSB0YWdJRDtcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRtcGxDb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlci5vbkl0ZW1QdXNoKGVsZW1lbnQsIHRhZ0lELCB0cnVlKTtcbiAgICB9XG4gICAgcG9wKCkge1xuICAgICAgICBjb25zdCBwb3BwZWQgPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgIGlmICh0aGlzLnRtcGxDb3VudCA+IDAgJiYgdGhpcy5faXNJblRlbXBsYXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMudG1wbENvdW50LS07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGFja1RvcC0tO1xuICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUG9wKHBvcHBlZCwgdHJ1ZSk7XG4gICAgfVxuICAgIHJlcGxhY2Uob2xkRWxlbWVudCwgbmV3RWxlbWVudCkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mKG9sZEVsZW1lbnQpO1xuICAgICAgICB0aGlzLml0ZW1zW2lkeF0gPSBuZXdFbGVtZW50O1xuICAgICAgICBpZiAoaWR4ID09PSB0aGlzLnN0YWNrVG9wKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBuZXdFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc2VydEFmdGVyKHJlZmVyZW5jZUVsZW1lbnQsIG5ld0VsZW1lbnQsIG5ld0VsZW1lbnRJRCkge1xuICAgICAgICBjb25zdCBpbnNlcnRpb25JZHggPSB0aGlzLl9pbmRleE9mKHJlZmVyZW5jZUVsZW1lbnQpICsgMTtcbiAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5zZXJ0aW9uSWR4LCAwLCBuZXdFbGVtZW50KTtcbiAgICAgICAgdGhpcy50YWdJRHMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3RWxlbWVudElEKTtcbiAgICAgICAgdGhpcy5zdGFja1RvcCsrO1xuICAgICAgICBpZiAoaW5zZXJ0aW9uSWR4ID09PSB0aGlzLnN0YWNrVG9wKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlci5vbkl0ZW1QdXNoKHRoaXMuY3VycmVudCwgdGhpcy5jdXJyZW50VGFnSWQsIGluc2VydGlvbklkeCA9PT0gdGhpcy5zdGFja1RvcCk7XG4gICAgfVxuICAgIHBvcFVudGlsVGFnTmFtZVBvcHBlZCh0YWdOYW1lKSB7XG4gICAgICAgIGxldCB0YXJnZXRJZHggPSB0aGlzLnN0YWNrVG9wICsgMTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdGFyZ2V0SWR4ID0gdGhpcy50YWdJRHMubGFzdEluZGV4T2YodGFnTmFtZSwgdGFyZ2V0SWR4IC0gMSk7XG4gICAgICAgIH0gd2hpbGUgKHRhcmdldElkeCA+IDAgJiYgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1t0YXJnZXRJZHhdKSAhPT0gaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICB0aGlzLnNob3J0ZW5Ub0xlbmd0aCh0YXJnZXRJZHggPCAwID8gMCA6IHRhcmdldElkeCk7XG4gICAgfVxuICAgIHNob3J0ZW5Ub0xlbmd0aChpZHgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPj0gaWR4KSB7XG4gICAgICAgICAgICBjb25zdCBwb3BwZWQgPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAodGhpcy50bXBsQ291bnQgPiAwICYmIHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50bXBsQ291bnQgLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUG9wKHBvcHBlZCwgdGhpcy5zdGFja1RvcCA8IGlkeCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcG9wVW50aWxFbGVtZW50UG9wcGVkKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KTtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoaWR4IDwgMCA/IDAgOiBpZHgpO1xuICAgIH1cbiAgICBwb3BVbnRpbFBvcHBlZCh0YWdOYW1lcywgdGFyZ2V0TlMpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZlRhZ05hbWVzKHRhZ05hbWVzLCB0YXJnZXROUyk7XG4gICAgICAgIHRoaXMuc2hvcnRlblRvTGVuZ3RoKGlkeCA8IDAgPyAwIDogaWR4KTtcbiAgICB9XG4gICAgcG9wVW50aWxOdW1iZXJlZEhlYWRlclBvcHBlZCgpIHtcbiAgICAgICAgdGhpcy5wb3BVbnRpbFBvcHBlZChOQU1FRF9IRUFERVJTLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgfVxuICAgIHBvcFVudGlsVGFibGVDZWxsUG9wcGVkKCkge1xuICAgICAgICB0aGlzLnBvcFVudGlsUG9wcGVkKFRBQkxFX0NFTExTLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgfVxuICAgIHBvcEFsbFVwVG9IdG1sRWxlbWVudCgpIHtcbiAgICAgICAgLy9OT1RFOiBoZXJlIHdlIGFzc3VtZSB0aGF0IHRoZSByb290IDxodG1sPiBlbGVtZW50IGlzIGFsd2F5cyBmaXJzdCBpbiB0aGUgb3BlbiBlbGVtZW50IHN0YWNrLCBzb1xuICAgICAgICAvL3dlIHBlcmZvcm0gdGhpcyBmYXN0IHN0YWNrIGNsZWFuIHVwLlxuICAgICAgICB0aGlzLnRtcGxDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuc2hvcnRlblRvTGVuZ3RoKDEpO1xuICAgIH1cbiAgICBfaW5kZXhPZlRhZ05hbWVzKHRhZ05hbWVzLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGFnTmFtZXMuaW5jbHVkZXModGhpcy50YWdJRHNbaV0pICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pID09PSBuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGNsZWFyQmFja1RvKHRhZ05hbWVzLCB0YXJnZXROUykge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mVGFnTmFtZXModGFnTmFtZXMsIHRhcmdldE5TKTtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoaWR4ICsgMSk7XG4gICAgfVxuICAgIGNsZWFyQmFja1RvVGFibGVDb250ZXh0KCkge1xuICAgICAgICB0aGlzLmNsZWFyQmFja1RvKFRBQkxFX0NPTlRFWFQsIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICB9XG4gICAgY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCkge1xuICAgICAgICB0aGlzLmNsZWFyQmFja1RvKFRBQkxFX0JPRFlfQ09OVEVYVCwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgIH1cbiAgICBjbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpIHtcbiAgICAgICAgdGhpcy5jbGVhckJhY2tUbyhUQUJMRV9ST1dfQ09OVEVYVCwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgIH1cbiAgICByZW1vdmUoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLl9pbmRleE9mKGVsZW1lbnQpO1xuICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICAgIGlmIChpZHggPT09IHRoaXMuc3RhY2tUb3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRhZ0lEcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrVG9wLS07XG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUG9wKGVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvL1NlYXJjaFxuICAgIHRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCkge1xuICAgICAgICAvL1Byb3Blcmx5IG5lc3RlZCA8Ym9keT4gZWxlbWVudCAoc2hvdWxkIGJlIHNlY29uZCBlbGVtZW50IGluIHN0YWNrKS5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tUb3AgPj0gMSAmJiB0aGlzLnRhZ0lEc1sxXSA9PT0gaHRtbF9qc18xLlRBR19JRC5CT0RZID8gdGhpcy5pdGVtc1sxXSA6IG51bGw7XG4gICAgfVxuICAgIGNvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4T2YoZWxlbWVudCkgPiAtMTtcbiAgICB9XG4gICAgZ2V0Q29tbW9uQW5jZXN0b3IoZWxlbWVudCkge1xuICAgICAgICBjb25zdCBlbGVtZW50SWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KSAtIDE7XG4gICAgICAgIHJldHVybiBlbGVtZW50SWR4ID49IDAgPyB0aGlzLml0ZW1zW2VsZW1lbnRJZHhdIDogbnVsbDtcbiAgICB9XG4gICAgaXNSb290SHRtbEVsZW1lbnRDdXJyZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLnRhZ0lEc1swXSA9PT0gaHRtbF9qc18xLlRBR19JRC5IVE1MO1xuICAgIH1cbiAgICAvL0VsZW1lbnQgaW4gc2NvcGVcbiAgICBoYXNJblNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudGFnSURzW2ldO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSAmJiBucyA9PT0gaHRtbF9qc18xLk5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChTQ09QSU5HX0VMRU1FTlRfTlMuZ2V0KHRuKSA9PT0gbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGhhc051bWJlcmVkSGVhZGVySW5TY29wZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCB0biA9IHRoaXMudGFnSURzW2ldO1xuICAgICAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKTtcbiAgICAgICAgICAgIGlmICgoMCwgaHRtbF9qc18xLmlzTnVtYmVyZWRIZWFkZXIpKHRuKSAmJiBucyA9PT0gaHRtbF9qc18xLk5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChTQ09QSU5HX0VMRU1FTlRfTlMuZ2V0KHRuKSA9PT0gbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGhhc0luTGlzdEl0ZW1TY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRhZ0lEc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUgJiYgbnMgPT09IGh0bWxfanNfMS5OUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKCh0biA9PT0gaHRtbF9qc18xLlRBR19JRC5VTCB8fCB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5PTCkgJiYgbnMgPT09IGh0bWxfanNfMS5OUy5IVE1MKSB8fCBTQ09QSU5HX0VMRU1FTlRfTlMuZ2V0KHRuKSA9PT0gbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGhhc0luQnV0dG9uU2NvcGUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50YWdJRHNbaV07XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgaWYgKHRuID09PSB0YWdOYW1lICYmIG5zID09PSBodG1sX2pzXzEuTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh0biA9PT0gaHRtbF9qc18xLlRBR19JRC5CVVRUT04gJiYgbnMgPT09IGh0bWxfanNfMS5OUy5IVE1MKSB8fCBTQ09QSU5HX0VMRU1FTlRfTlMuZ2V0KHRuKSA9PT0gbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGhhc0luVGFibGVTY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRhZ0lEc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBpZiAobnMgIT09IGh0bWxfanNfMS5OUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0biA9PT0gaHRtbF9qc18xLlRBR19JRC5UQUJMRSB8fCB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5URU1QTEFURSB8fCB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5IVE1MKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBoYXNUYWJsZUJvZHlDb250ZXh0SW5UYWJsZVNjb3BlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50YWdJRHNbaV07XG4gICAgICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICAgICAgaWYgKG5zICE9PSBodG1sX2pzXzEuTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRCT0RZIHx8IHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRIRUFEIHx8IHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRGT09UKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG4gPT09IGh0bWxfanNfMS5UQUdfSUQuVEFCTEUgfHwgdG4gPT09IGh0bWxfanNfMS5UQUdfSUQuSFRNTCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaGFzSW5TZWxlY3RTY29wZSh0YWdOYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRhZ0lEc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IG5zID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSk7XG4gICAgICAgICAgICBpZiAobnMgIT09IGh0bWxfanNfMS5OUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG4gPT09IHRhZ05hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0biAhPT0gaHRtbF9qc18xLlRBR19JRC5PUFRJT04gJiYgdG4gIT09IGh0bWxfanNfMS5UQUdfSUQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vSW1wbGllZCBlbmQgdGFnc1xuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKSB7XG4gICAgICAgIHdoaWxlIChJTVBMSUNJVF9FTkRfVEFHX1JFUVVJUkVELmhhcyh0aGlzLmN1cnJlbnRUYWdJZCkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkoKSB7XG4gICAgICAgIHdoaWxlIChJTVBMSUNJVF9FTkRfVEFHX1JFUVVJUkVEX1RIT1JPVUdITFkuaGFzKHRoaXMuY3VycmVudFRhZ0lkKSkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihleGNsdXNpb25JZCkge1xuICAgICAgICB3aGlsZSAodGhpcy5jdXJyZW50VGFnSWQgIT09IGV4Y2x1c2lvbklkICYmIElNUExJQ0lUX0VORF9UQUdfUkVRVUlSRURfVEhPUk9VR0hMWS5oYXModGhpcy5jdXJyZW50VGFnSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5PcGVuRWxlbWVudFN0YWNrID0gT3BlbkVsZW1lbnRTdGFjaztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW9wZW4tZWxlbWVudC1zdGFjay5qcy5tYXAiLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkZvcm1hdHRpbmdFbGVtZW50TGlzdCA9IGV4cG9ydHMuRW50cnlUeXBlID0gdm9pZCAwO1xuLy9Db25zdFxuY29uc3QgTk9BSF9BUktfQ0FQQUNJVFkgPSAzO1xudmFyIEVudHJ5VHlwZTtcbihmdW5jdGlvbiAoRW50cnlUeXBlKSB7XG4gICAgRW50cnlUeXBlW0VudHJ5VHlwZVtcIk1hcmtlclwiXSA9IDBdID0gXCJNYXJrZXJcIjtcbiAgICBFbnRyeVR5cGVbRW50cnlUeXBlW1wiRWxlbWVudFwiXSA9IDFdID0gXCJFbGVtZW50XCI7XG59KShFbnRyeVR5cGUgPSBleHBvcnRzLkVudHJ5VHlwZSB8fCAoZXhwb3J0cy5FbnRyeVR5cGUgPSB7fSkpO1xuY29uc3QgTUFSS0VSID0geyB0eXBlOiBFbnRyeVR5cGUuTWFya2VyIH07XG4vL0xpc3Qgb2YgZm9ybWF0dGluZyBlbGVtZW50c1xuY2xhc3MgRm9ybWF0dGluZ0VsZW1lbnRMaXN0IHtcbiAgICBjb25zdHJ1Y3Rvcih0cmVlQWRhcHRlcikge1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdHJlZUFkYXB0ZXI7XG4gICAgICAgIHRoaXMuZW50cmllcyA9IFtdO1xuICAgICAgICB0aGlzLmJvb2ttYXJrID0gbnVsbDtcbiAgICB9XG4gICAgLy9Ob2FoIEFyaydzIGNvbmRpdGlvblxuICAgIC8vT1BUSU1JWkFUSU9OOiBhdCBmaXJzdCB3ZSB0cnkgdG8gZmluZCBwb3NzaWJsZSBjYW5kaWRhdGVzIGZvciBleGNsdXNpb24gdXNpbmdcbiAgICAvL2xpZ2h0d2VpZ2h0IGhldXJpc3RpY3Mgd2l0aG91dCB0aG9yb3VnaCBhdHRyaWJ1dGVzIGNoZWNrLlxuICAgIF9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyhuZXdFbGVtZW50LCBuZUF0dHJzKSB7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXTtcbiAgICAgICAgY29uc3QgbmVBdHRyc0xlbmd0aCA9IG5lQXR0cnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBuZVRhZ05hbWUgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobmV3RWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG5lTmFtZXNwYWNlVVJJID0gdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkobmV3RWxlbWVudCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5lbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllc1tpXTtcbiAgICAgICAgICAgIGlmIChlbnRyeS50eXBlID09PSBFbnRyeVR5cGUuTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IGVsZW1lbnQgfSA9IGVudHJ5O1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gbmVUYWdOYW1lICYmXG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudCkgPT09IG5lTmFtZXNwYWNlVVJJKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudEF0dHJzID0gdGhpcy50cmVlQWRhcHRlci5nZXRBdHRyTGlzdChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEF0dHJzLmxlbmd0aCA9PT0gbmVBdHRyc0xlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goeyBpZHg6IGksIGF0dHJzOiBlbGVtZW50QXR0cnMgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYW5kaWRhdGVzO1xuICAgIH1cbiAgICBfZW5zdXJlTm9haEFya0NvbmRpdGlvbihuZXdFbGVtZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmVudHJpZXMubGVuZ3RoIDwgTk9BSF9BUktfQ0FQQUNJVFkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5lQXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KG5ld0VsZW1lbnQpO1xuICAgICAgICBjb25zdCBjYW5kaWRhdGVzID0gdGhpcy5fZ2V0Tm9haEFya0NvbmRpdGlvbkNhbmRpZGF0ZXMobmV3RWxlbWVudCwgbmVBdHRycyk7XG4gICAgICAgIGlmIChjYW5kaWRhdGVzLmxlbmd0aCA8IE5PQUhfQVJLX0NBUEFDSVRZKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAvL05PVEU6IGJ1aWxkIGF0dHJzIG1hcCBmb3IgdGhlIG5ldyBlbGVtZW50LCBzbyB3ZSBjYW4gcGVyZm9ybSBmYXN0IGxvb2t1cHNcbiAgICAgICAgY29uc3QgbmVBdHRyc01hcCA9IG5ldyBNYXAobmVBdHRycy5tYXAoKG5lQXR0cikgPT4gW25lQXR0ci5uYW1lLCBuZUF0dHIudmFsdWVdKSk7XG4gICAgICAgIGxldCB2YWxpZENhbmRpZGF0ZXMgPSAwO1xuICAgICAgICAvL05PVEU6IHJlbW92ZSBib3R0b21tb3N0IGNhbmRpZGF0ZXMsIHVudGlsIE5vYWgncyBBcmsgY29uZGl0aW9uIHdpbGwgbm90IGJlIG1ldFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbmRpZGF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZXNbaV07XG4gICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgYGNhbmRpZGF0ZS5hdHRycy5sZW5ndGggPT09IG5lQXR0cnMubGVuZ3RoYFxuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5hdHRycy5ldmVyeSgoY0F0dHIpID0+IG5lQXR0cnNNYXAuZ2V0KGNBdHRyLm5hbWUpID09PSBjQXR0ci52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWxpZENhbmRpZGF0ZXMgKz0gMTtcbiAgICAgICAgICAgICAgICBpZiAodmFsaWRDYW5kaWRhdGVzID49IE5PQUhfQVJLX0NBUEFDSVRZKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoY2FuZGlkYXRlLmlkeCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vTXV0YXRpb25zXG4gICAgaW5zZXJ0TWFya2VyKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMudW5zaGlmdChNQVJLRVIpO1xuICAgIH1cbiAgICBwdXNoRWxlbWVudChlbGVtZW50LCB0b2tlbikge1xuICAgICAgICB0aGlzLl9lbnN1cmVOb2FoQXJrQ29uZGl0aW9uKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLmVudHJpZXMudW5zaGlmdCh7XG4gICAgICAgICAgICB0eXBlOiBFbnRyeVR5cGUuRWxlbWVudCxcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICB0b2tlbixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluc2VydEVsZW1lbnRBZnRlckJvb2ttYXJrKGVsZW1lbnQsIHRva2VuKSB7XG4gICAgICAgIGNvbnN0IGJvb2ttYXJrSWR4ID0gdGhpcy5lbnRyaWVzLmluZGV4T2YodGhpcy5ib29rbWFyayk7XG4gICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoYm9va21hcmtJZHgsIDAsIHtcbiAgICAgICAgICAgIHR5cGU6IEVudHJ5VHlwZS5FbGVtZW50LFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVtb3ZlRW50cnkoZW50cnkpIHtcbiAgICAgICAgY29uc3QgZW50cnlJbmRleCA9IHRoaXMuZW50cmllcy5pbmRleE9mKGVudHJ5KTtcbiAgICAgICAgaWYgKGVudHJ5SW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZShlbnRyeUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDbGVhcnMgdGhlIGxpc3Qgb2YgZm9ybWF0dGluZyBlbGVtZW50cyB1cCB0byB0aGUgbGFzdCBtYXJrZXIuXG4gICAgICpcbiAgICAgKiBAc2VlIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNjbGVhci10aGUtbGlzdC1vZi1hY3RpdmUtZm9ybWF0dGluZy1lbGVtZW50cy11cC10by10aGUtbGFzdC1tYXJrZXJcbiAgICAgKi9cbiAgICBjbGVhclRvTGFzdE1hcmtlcigpIHtcbiAgICAgICAgY29uc3QgbWFya2VySWR4ID0gdGhpcy5lbnRyaWVzLmluZGV4T2YoTUFSS0VSKTtcbiAgICAgICAgaWYgKG1hcmtlcklkeCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc3BsaWNlKDAsIG1hcmtlcklkeCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLmxlbmd0aCA9IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9TZWFyY2hcbiAgICBnZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUodGFnTmFtZSkge1xuICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuZW50cmllcy5maW5kKChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gRW50cnlUeXBlLk1hcmtlciB8fCB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZW50cnkuZWxlbWVudCkgPT09IHRhZ05hbWUpO1xuICAgICAgICByZXR1cm4gZW50cnkgJiYgZW50cnkudHlwZSA9PT0gRW50cnlUeXBlLkVsZW1lbnQgPyBlbnRyeSA6IG51bGw7XG4gICAgfVxuICAgIGdldEVsZW1lbnRFbnRyeShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMuZmluZCgoZW50cnkpID0+IGVudHJ5LnR5cGUgPT09IEVudHJ5VHlwZS5FbGVtZW50ICYmIGVudHJ5LmVsZW1lbnQgPT09IGVsZW1lbnQpO1xuICAgIH1cbn1cbmV4cG9ydHMuRm9ybWF0dGluZ0VsZW1lbnRMaXN0ID0gRm9ybWF0dGluZ0VsZW1lbnRMaXN0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm9ybWF0dGluZy1lbGVtZW50LWxpc3QuanMubWFwIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5kZWZhdWx0VHJlZUFkYXB0ZXIgPSB2b2lkIDA7XG5jb25zdCBodG1sX2pzXzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL2h0bWwuanNcIik7XG5mdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVOYW1lOiAnI3RleHQnLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICB9O1xufVxuZXhwb3J0cy5kZWZhdWx0VHJlZUFkYXB0ZXIgPSB7XG4gICAgLy9Ob2RlIGNvbnN0cnVjdGlvblxuICAgIGNyZWF0ZURvY3VtZW50KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQnLFxuICAgICAgICAgICAgbW9kZTogaHRtbF9qc18xLkRPQ1VNRU5UX01PREUuTk9fUVVJUktTLFxuICAgICAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQtZnJhZ21lbnQnLFxuICAgICAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjcmVhdGVFbGVtZW50KHRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgYXR0cnMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVOYW1lOiB0YWdOYW1lLFxuICAgICAgICAgICAgdGFnTmFtZSxcbiAgICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgICAgbmFtZXNwYWNlVVJJLFxuICAgICAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgICAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY3JlYXRlQ29tbWVudE5vZGUoZGF0YSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZU5hbWU6ICcjY29tbWVudCcsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8vVHJlZSBtdXRhdGlvblxuICAgIGFwcGVuZENoaWxkKHBhcmVudE5vZGUsIG5ld05vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnB1c2gobmV3Tm9kZSk7XG4gICAgICAgIG5ld05vZGUucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgfSxcbiAgICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgbmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuICAgICAgICBjb25zdCBpbnNlcnRpb25JZHggPSBwYXJlbnROb2RlLmNoaWxkTm9kZXMuaW5kZXhPZihyZWZlcmVuY2VOb2RlKTtcbiAgICAgICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnNwbGljZShpbnNlcnRpb25JZHgsIDAsIG5ld05vZGUpO1xuICAgICAgICBuZXdOb2RlLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICAgIH0sXG4gICAgc2V0VGVtcGxhdGVDb250ZW50KHRlbXBsYXRlRWxlbWVudCwgY29udGVudEVsZW1lbnQpIHtcbiAgICAgICAgdGVtcGxhdGVFbGVtZW50LmNvbnRlbnQgPSBjb250ZW50RWxlbWVudDtcbiAgICB9LFxuICAgIGdldFRlbXBsYXRlQ29udGVudCh0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlRWxlbWVudC5jb250ZW50O1xuICAgIH0sXG4gICAgc2V0RG9jdW1lbnRUeXBlKGRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICAgICAgY29uc3QgZG9jdHlwZU5vZGUgPSBkb2N1bWVudC5jaGlsZE5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUubm9kZU5hbWUgPT09ICcjZG9jdW1lbnRUeXBlJyk7XG4gICAgICAgIGlmIChkb2N0eXBlTm9kZSkge1xuICAgICAgICAgICAgZG9jdHlwZU5vZGUubmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBkb2N0eXBlTm9kZS5wdWJsaWNJZCA9IHB1YmxpY0lkO1xuICAgICAgICAgICAgZG9jdHlwZU5vZGUuc3lzdGVtSWQgPSBzeXN0ZW1JZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICAgICAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnRUeXBlJyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIHB1YmxpY0lkLFxuICAgICAgICAgICAgICAgIHN5c3RlbUlkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZXhwb3J0cy5kZWZhdWx0VHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBzZXREb2N1bWVudE1vZGUoZG9jdW1lbnQsIG1vZGUpIHtcbiAgICAgICAgZG9jdW1lbnQubW9kZSA9IG1vZGU7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudE1vZGUoZG9jdW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50Lm1vZGU7XG4gICAgfSxcbiAgICBkZXRhY2hOb2RlKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gbm9kZS5wYXJlbnROb2RlLmNoaWxkTm9kZXMuaW5kZXhPZihub2RlKTtcbiAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgbm9kZS5wYXJlbnROb2RlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaW5zZXJ0VGV4dChwYXJlbnROb2RlLCB0ZXh0KSB7XG4gICAgICAgIGlmIChwYXJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcHJldk5vZGUgPSBwYXJlbnROb2RlLmNoaWxkTm9kZXNbcGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgaWYgKGV4cG9ydHMuZGVmYXVsdFRyZWVBZGFwdGVyLmlzVGV4dE5vZGUocHJldk5vZGUpKSB7XG4gICAgICAgICAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXhwb3J0cy5kZWZhdWx0VHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuICAgIH0sXG4gICAgaW5zZXJ0VGV4dEJlZm9yZShwYXJlbnROb2RlLCB0ZXh0LCByZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgIGNvbnN0IHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzW3BhcmVudE5vZGUuY2hpbGROb2Rlcy5pbmRleE9mKHJlZmVyZW5jZU5vZGUpIC0gMV07XG4gICAgICAgIGlmIChwcmV2Tm9kZSAmJiBleHBvcnRzLmRlZmF1bHRUcmVlQWRhcHRlci5pc1RleHROb2RlKHByZXZOb2RlKSkge1xuICAgICAgICAgICAgcHJldk5vZGUudmFsdWUgKz0gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGV4cG9ydHMuZGVmYXVsdFRyZWVBZGFwdGVyLmluc2VydEJlZm9yZShwYXJlbnROb2RlLCBjcmVhdGVUZXh0Tm9kZSh0ZXh0KSwgcmVmZXJlbmNlTm9kZSk7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFkb3B0QXR0cmlidXRlcyhyZWNpcGllbnQsIGF0dHJzKSB7XG4gICAgICAgIGNvbnN0IHJlY2lwaWVudEF0dHJzTWFwID0gbmV3IFNldChyZWNpcGllbnQuYXR0cnMubWFwKChhdHRyKSA9PiBhdHRyLm5hbWUpKTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgaWYgKCFyZWNpcGllbnRBdHRyc01hcC5oYXMoYXR0cnNbal0ubmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZWNpcGllbnQuYXR0cnMucHVzaChhdHRyc1tqXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIC8vVHJlZSB0cmF2ZXJzaW5nXG4gICAgZ2V0Rmlyc3RDaGlsZChub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXNbMF07XG4gICAgfSxcbiAgICBnZXRDaGlsZE5vZGVzKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGROb2RlcztcbiAgICB9LFxuICAgIGdldFBhcmVudE5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5wYXJlbnROb2RlO1xuICAgIH0sXG4gICAgZ2V0QXR0ckxpc3QoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5hdHRycztcbiAgICB9LFxuICAgIC8vTm9kZSBkYXRhXG4gICAgZ2V0VGFnTmFtZShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnRhZ05hbWU7XG4gICAgfSxcbiAgICBnZXROYW1lc3BhY2VVUkkoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5uYW1lc3BhY2VVUkk7XG4gICAgfSxcbiAgICBnZXRUZXh0Tm9kZUNvbnRlbnQodGV4dE5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRleHROb2RlLnZhbHVlO1xuICAgIH0sXG4gICAgZ2V0Q29tbWVudE5vZGVDb250ZW50KGNvbW1lbnROb2RlKSB7XG4gICAgICAgIHJldHVybiBjb21tZW50Tm9kZS5kYXRhO1xuICAgIH0sXG4gICAgZ2V0RG9jdW1lbnRUeXBlTm9kZU5hbWUoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGRvY3R5cGVOb2RlLm5hbWU7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudFR5cGVOb2RlUHVibGljSWQoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIGRvY3R5cGVOb2RlLnB1YmxpY0lkO1xuICAgIH0sXG4gICAgZ2V0RG9jdW1lbnRUeXBlTm9kZVN5c3RlbUlkKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIHJldHVybiBkb2N0eXBlTm9kZS5zeXN0ZW1JZDtcbiAgICB9LFxuICAgIC8vTm9kZSB0eXBlc1xuICAgIGlzVGV4dE5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlTmFtZSA9PT0gJyN0ZXh0JztcbiAgICB9LFxuICAgIGlzQ29tbWVudE5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlTmFtZSA9PT0gJyNjb21tZW50JztcbiAgICB9LFxuICAgIGlzRG9jdW1lbnRUeXBlTm9kZShub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLm5vZGVOYW1lID09PSAnI2RvY3VtZW50VHlwZSc7XG4gICAgfSxcbiAgICBpc0VsZW1lbnROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChub2RlLCAndGFnTmFtZScpO1xuICAgIH0sXG4gICAgLy8gU291cmNlIGNvZGUgbG9jYXRpb25cbiAgICBzZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUsIGxvY2F0aW9uKSB7XG4gICAgICAgIG5vZGUuc291cmNlQ29kZUxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgfSxcbiAgICBnZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuc291cmNlQ29kZUxvY2F0aW9uO1xuICAgIH0sXG4gICAgdXBkYXRlTm9kZVNvdXJjZUNvZGVMb2NhdGlvbihub2RlLCBlbmRMb2NhdGlvbikge1xuICAgICAgICBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbm9kZS5zb3VyY2VDb2RlTG9jYXRpb24pLCBlbmRMb2NhdGlvbik7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWZhdWx0LmpzLm1hcCIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuZ2V0RG9jdW1lbnRNb2RlID0gZXhwb3J0cy5pc0NvbmZvcm1pbmcgPSB2b2lkIDA7XG5jb25zdCBodG1sX2pzXzEgPSByZXF1aXJlKFwiLi9odG1sLmpzXCIpO1xuLy9Db25zdFxuY29uc3QgVkFMSURfRE9DVFlQRV9OQU1FID0gJ2h0bWwnO1xuY29uc3QgVkFMSURfU1lTVEVNX0lEID0gJ2Fib3V0OmxlZ2FjeS1jb21wYXQnO1xuY29uc3QgUVVJUktTX01PREVfU1lTVEVNX0lEID0gJ2h0dHA6Ly93d3cuaWJtLmNvbS9kYXRhL2R0ZC92MTEvaWJteGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnO1xuY29uc3QgUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTID0gW1xuICAgICcrLy9zaWxtYXJpbC8vZHRkIGh0bWwgcHJvIHYwcjExIDE5OTcwMTAxLy8nLFxuICAgICctLy9hcy8vZHRkIGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy8nLFxuICAgICctLy9hZHZhc29mdCBsdGQvL2R0ZCBodG1sIDMuMCBhc3dlZGl0ICsgZXh0ZW5zaW9ucy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0IGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QgbGV2ZWwgMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjFlLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMuMiBmaW5hbC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4yLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAwLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAxLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAzLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0Ly8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbC8vJyxcbiAgICAnLS8vbWV0cml1cy8vZHRkIG1ldHJpdXMgcHJlc2VudGF0aW9uYWwvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCBodG1sIHN0cmljdC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIGh0bWwvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCB0YWJsZXMvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCBodG1sIHN0cmljdC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0bWwvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCB0YWJsZXMvLycsXG4gICAgJy0vL25ldHNjYXBlIGNvbW0uIGNvcnAuLy9kdGQgaHRtbC8vJyxcbiAgICAnLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBzdHJpY3QgaHRtbC8vJyxcbiAgICBcIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCAyLjAvL1wiLFxuICAgIFwiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIGV4dGVuZGVkIDEuMC8vXCIsXG4gICAgXCItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgZXh0ZW5kZWQgcmVsYXhlZCAxLjAvL1wiLFxuICAgICctLy9zcS8vZHRkIGh0bWwgMi4wIGhvdG1ldGFsICsgZXh0ZW5zaW9ucy8vJyxcbiAgICAnLS8vc29mdHF1YWQgc29mdHdhcmUvL2R0ZCBob3RtZXRhbCBwcm8gNi4wOjoxOTk5MDYwMTo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vJyxcbiAgICAnLS8vc29mdHF1YWQvL2R0ZCBob3RtZXRhbCBwcm8gNC4wOjoxOTk3MTAxMDo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vJyxcbiAgICAnLS8vc3B5Z2xhc3MvL2R0ZCBodG1sIDIuMCBleHRlbmRlZC8vJyxcbiAgICAnLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8vZHRkIGhvdGphdmEgaHRtbC8vJyxcbiAgICAnLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8vZHRkIGhvdGphdmEgc3RyaWN0IGh0bWwvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMyAxOTk1LTAzLTI0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMiBkcmFmdC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjIgZmluYWwvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMnMgZHJhZnQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wIGZyYW1lc2V0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgZXhwZXJpbWVudGFsIDE5OTYwNzEyLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIGV4cGVyaW1lbnRhbCA5NzA0MjEvLycsXG4gICAgJy0vL3czYy8vZHRkIHczIGh0bWwvLycsXG4gICAgJy0vL3czby8vZHRkIHczIGh0bWwgMy4wLy8nLFxuICAgICctLy93ZWJ0ZWNocy8vZHRkIG1vemlsbGEgaHRtbCAyLjAvLycsXG4gICAgJy0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1sLy8nLFxuXTtcbmNvbnN0IFFVSVJLU19NT0RFX05PX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBbXG4gICAgLi4uUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0aW9uYWwvLycsXG5dO1xuY29uc3QgUVVJUktTX01PREVfUFVCTElDX0lEUyA9IG5ldyBTZXQoW1xuICAgICctLy93M28vL2R0ZCB3MyBodG1sIHN0cmljdCAzLjAvL2VuLy8nLFxuICAgICctL3czYy9kdGQgaHRtbCA0LjAgdHJhbnNpdGlvbmFsL2VuJyxcbiAgICAnaHRtbCcsXG5dKTtcbmNvbnN0IExJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyA9IFsnLS8vdzNjLy9kdGQgeGh0bWwgMS4wIGZyYW1lc2V0Ly8nLCAnLS8vdzNjLy9kdGQgeGh0bWwgMS4wIHRyYW5zaXRpb25hbC8vJ107XG5jb25zdCBMSU1JVEVEX1FVSVJLU19XSVRIX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBbXG4gICAgLi4uTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0aW9uYWwvLycsXG5dO1xuLy9VdGlsc1xuZnVuY3Rpb24gaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykge1xuICAgIHJldHVybiBwcmVmaXhlcy5zb21lKChwcmVmaXgpID0+IHB1YmxpY0lkLnN0YXJ0c1dpdGgocHJlZml4KSk7XG59XG4vL0FQSVxuZnVuY3Rpb24gaXNDb25mb3JtaW5nKHRva2VuKSB7XG4gICAgcmV0dXJuICh0b2tlbi5uYW1lID09PSBWQUxJRF9ET0NUWVBFX05BTUUgJiZcbiAgICAgICAgdG9rZW4ucHVibGljSWQgPT09IG51bGwgJiZcbiAgICAgICAgKHRva2VuLnN5c3RlbUlkID09PSBudWxsIHx8IHRva2VuLnN5c3RlbUlkID09PSBWQUxJRF9TWVNURU1fSUQpKTtcbn1cbmV4cG9ydHMuaXNDb25mb3JtaW5nID0gaXNDb25mb3JtaW5nO1xuZnVuY3Rpb24gZ2V0RG9jdW1lbnRNb2RlKHRva2VuKSB7XG4gICAgaWYgKHRva2VuLm5hbWUgIT09IFZBTElEX0RPQ1RZUEVfTkFNRSkge1xuICAgICAgICByZXR1cm4gaHRtbF9qc18xLkRPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgIH1cbiAgICBjb25zdCB7IHN5c3RlbUlkIH0gPSB0b2tlbjtcbiAgICBpZiAoc3lzdGVtSWQgJiYgc3lzdGVtSWQudG9Mb3dlckNhc2UoKSA9PT0gUVVJUktTX01PREVfU1lTVEVNX0lEKSB7XG4gICAgICAgIHJldHVybiBodG1sX2pzXzEuRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG4gICAgfVxuICAgIGxldCB7IHB1YmxpY0lkIH0gPSB0b2tlbjtcbiAgICBpZiAocHVibGljSWQgIT09IG51bGwpIHtcbiAgICAgICAgcHVibGljSWQgPSBwdWJsaWNJZC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoUVVJUktTX01PREVfUFVCTElDX0lEUy5oYXMocHVibGljSWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbF9qc18xLkRPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcmVmaXhlcyA9IHN5c3RlbUlkID09PSBudWxsID8gUVVJUktTX01PREVfTk9fU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyA6IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUztcbiAgICAgICAgaWYgKGhhc1ByZWZpeChwdWJsaWNJZCwgcHJlZml4ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbF9qc18xLkRPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgICAgICB9XG4gICAgICAgIHByZWZpeGVzID1cbiAgICAgICAgICAgIHN5c3RlbUlkID09PSBudWxsID8gTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTIDogTElNSVRFRF9RVUlSS1NfV0lUSF9TWVNURU1fSURfUFVCTElDX0lEX1BSRUZJWEVTO1xuICAgICAgICBpZiAoaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBodG1sX2pzXzEuRE9DVU1FTlRfTU9ERS5MSU1JVEVEX1FVSVJLUztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaHRtbF9qc18xLkRPQ1VNRU5UX01PREUuTk9fUVVJUktTO1xufVxuZXhwb3J0cy5nZXREb2N1bWVudE1vZGUgPSBnZXREb2N1bWVudE1vZGU7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kb2N0eXBlLmpzLm1hcCIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNJbnRlZ3JhdGlvblBvaW50ID0gZXhwb3J0cy5hZGp1c3RUb2tlblNWR1RhZ05hbWUgPSBleHBvcnRzLmFkanVzdFRva2VuWE1MQXR0cnMgPSBleHBvcnRzLmFkanVzdFRva2VuU1ZHQXR0cnMgPSBleHBvcnRzLmFkanVzdFRva2VuTWF0aE1MQXR0cnMgPSBleHBvcnRzLmNhdXNlc0V4aXQgPSBleHBvcnRzLlNWR19UQUdfTkFNRVNfQURKVVNUTUVOVF9NQVAgPSB2b2lkIDA7XG5jb25zdCBodG1sX2pzXzEgPSByZXF1aXJlKFwiLi9odG1sLmpzXCIpO1xuLy9NSU1FIHR5cGVzXG5jb25zdCBNSU1FX1RZUEVTID0ge1xuICAgIFRFWFRfSFRNTDogJ3RleHQvaHRtbCcsXG4gICAgQVBQTElDQVRJT05fWE1MOiAnYXBwbGljYXRpb24veGh0bWwreG1sJyxcbn07XG4vL0F0dHJpYnV0ZXNcbmNvbnN0IERFRklOSVRJT05fVVJMX0FUVFIgPSAnZGVmaW5pdGlvbnVybCc7XG5jb25zdCBBREpVU1RFRF9ERUZJTklUSU9OX1VSTF9BVFRSID0gJ2RlZmluaXRpb25VUkwnO1xuY29uc3QgU1ZHX0FUVFJTX0FESlVTVE1FTlRfTUFQID0gbmV3IE1hcChbXG4gICAgJ2F0dHJpYnV0ZU5hbWUnLFxuICAgICdhdHRyaWJ1dGVUeXBlJyxcbiAgICAnYmFzZUZyZXF1ZW5jeScsXG4gICAgJ2Jhc2VQcm9maWxlJyxcbiAgICAnY2FsY01vZGUnLFxuICAgICdjbGlwUGF0aFVuaXRzJyxcbiAgICAnZGlmZnVzZUNvbnN0YW50JyxcbiAgICAnZWRnZU1vZGUnLFxuICAgICdmaWx0ZXJVbml0cycsXG4gICAgJ2dseXBoUmVmJyxcbiAgICAnZ3JhZGllbnRUcmFuc2Zvcm0nLFxuICAgICdncmFkaWVudFVuaXRzJyxcbiAgICAna2VybmVsTWF0cml4JyxcbiAgICAna2VybmVsVW5pdExlbmd0aCcsXG4gICAgJ2tleVBvaW50cycsXG4gICAgJ2tleVNwbGluZXMnLFxuICAgICdrZXlUaW1lcycsXG4gICAgJ2xlbmd0aEFkanVzdCcsXG4gICAgJ2xpbWl0aW5nQ29uZUFuZ2xlJyxcbiAgICAnbWFya2VySGVpZ2h0JyxcbiAgICAnbWFya2VyVW5pdHMnLFxuICAgICdtYXJrZXJXaWR0aCcsXG4gICAgJ21hc2tDb250ZW50VW5pdHMnLFxuICAgICdtYXNrVW5pdHMnLFxuICAgICdudW1PY3RhdmVzJyxcbiAgICAncGF0aExlbmd0aCcsXG4gICAgJ3BhdHRlcm5Db250ZW50VW5pdHMnLFxuICAgICdwYXR0ZXJuVHJhbnNmb3JtJyxcbiAgICAncGF0dGVyblVuaXRzJyxcbiAgICAncG9pbnRzQXRYJyxcbiAgICAncG9pbnRzQXRZJyxcbiAgICAncG9pbnRzQXRaJyxcbiAgICAncHJlc2VydmVBbHBoYScsXG4gICAgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuICAgICdwcmltaXRpdmVVbml0cycsXG4gICAgJ3JlZlgnLFxuICAgICdyZWZZJyxcbiAgICAncmVwZWF0Q291bnQnLFxuICAgICdyZXBlYXREdXInLFxuICAgICdyZXF1aXJlZEV4dGVuc2lvbnMnLFxuICAgICdyZXF1aXJlZEZlYXR1cmVzJyxcbiAgICAnc3BlY3VsYXJDb25zdGFudCcsXG4gICAgJ3NwZWN1bGFyRXhwb25lbnQnLFxuICAgICdzcHJlYWRNZXRob2QnLFxuICAgICdzdGFydE9mZnNldCcsXG4gICAgJ3N0ZERldmlhdGlvbicsXG4gICAgJ3N0aXRjaFRpbGVzJyxcbiAgICAnc3VyZmFjZVNjYWxlJyxcbiAgICAnc3lzdGVtTGFuZ3VhZ2UnLFxuICAgICd0YWJsZVZhbHVlcycsXG4gICAgJ3RhcmdldFgnLFxuICAgICd0YXJnZXRZJyxcbiAgICAndGV4dExlbmd0aCcsXG4gICAgJ3ZpZXdCb3gnLFxuICAgICd2aWV3VGFyZ2V0JyxcbiAgICAneENoYW5uZWxTZWxlY3RvcicsXG4gICAgJ3lDaGFubmVsU2VsZWN0b3InLFxuICAgICd6b29tQW5kUGFuJyxcbl0ubWFwKChhdHRyKSA9PiBbYXR0ci50b0xvd2VyQ2FzZSgpLCBhdHRyXSkpO1xuY29uc3QgWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQID0gbmV3IE1hcChbXG4gICAgWyd4bGluazphY3R1YXRlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdhY3R1YXRlJywgbmFtZXNwYWNlOiBodG1sX2pzXzEuTlMuWExJTksgfV0sXG4gICAgWyd4bGluazphcmNyb2xlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdhcmNyb2xlJywgbmFtZXNwYWNlOiBodG1sX2pzXzEuTlMuWExJTksgfV0sXG4gICAgWyd4bGluazpocmVmJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdocmVmJywgbmFtZXNwYWNlOiBodG1sX2pzXzEuTlMuWExJTksgfV0sXG4gICAgWyd4bGluazpyb2xlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdyb2xlJywgbmFtZXNwYWNlOiBodG1sX2pzXzEuTlMuWExJTksgfV0sXG4gICAgWyd4bGluazpzaG93JywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdzaG93JywgbmFtZXNwYWNlOiBodG1sX2pzXzEuTlMuWExJTksgfV0sXG4gICAgWyd4bGluazp0aXRsZScsIHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAndGl0bGUnLCBuYW1lc3BhY2U6IGh0bWxfanNfMS5OUy5YTElOSyB9XSxcbiAgICBbJ3hsaW5rOnR5cGUnLCB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ3R5cGUnLCBuYW1lc3BhY2U6IGh0bWxfanNfMS5OUy5YTElOSyB9XSxcbiAgICBbJ3htbDpiYXNlJywgeyBwcmVmaXg6ICd4bWwnLCBuYW1lOiAnYmFzZScsIG5hbWVzcGFjZTogaHRtbF9qc18xLk5TLlhNTCB9XSxcbiAgICBbJ3htbDpsYW5nJywgeyBwcmVmaXg6ICd4bWwnLCBuYW1lOiAnbGFuZycsIG5hbWVzcGFjZTogaHRtbF9qc18xLk5TLlhNTCB9XSxcbiAgICBbJ3htbDpzcGFjZScsIHsgcHJlZml4OiAneG1sJywgbmFtZTogJ3NwYWNlJywgbmFtZXNwYWNlOiBodG1sX2pzXzEuTlMuWE1MIH1dLFxuICAgIFsneG1sbnMnLCB7IHByZWZpeDogJycsIG5hbWU6ICd4bWxucycsIG5hbWVzcGFjZTogaHRtbF9qc18xLk5TLlhNTE5TIH1dLFxuICAgIFsneG1sbnM6eGxpbmsnLCB7IHByZWZpeDogJ3htbG5zJywgbmFtZTogJ3hsaW5rJywgbmFtZXNwYWNlOiBodG1sX2pzXzEuTlMuWE1MTlMgfV0sXG5dKTtcbi8vU1ZHIHRhZyBuYW1lcyBhZGp1c3RtZW50IG1hcFxuZXhwb3J0cy5TVkdfVEFHX05BTUVTX0FESlVTVE1FTlRfTUFQID0gbmV3IE1hcChbXG4gICAgJ2FsdEdseXBoJyxcbiAgICAnYWx0R2x5cGhEZWYnLFxuICAgICdhbHRHbHlwaEl0ZW0nLFxuICAgICdhbmltYXRlQ29sb3InLFxuICAgICdhbmltYXRlTW90aW9uJyxcbiAgICAnYW5pbWF0ZVRyYW5zZm9ybScsXG4gICAgJ2NsaXBQYXRoJyxcbiAgICAnZmVCbGVuZCcsXG4gICAgJ2ZlQ29sb3JNYXRyaXgnLFxuICAgICdmZUNvbXBvbmVudFRyYW5zZmVyJyxcbiAgICAnZmVDb21wb3NpdGUnLFxuICAgICdmZUNvbnZvbHZlTWF0cml4JyxcbiAgICAnZmVEaWZmdXNlTGlnaHRpbmcnLFxuICAgICdmZURpc3BsYWNlbWVudE1hcCcsXG4gICAgJ2ZlRGlzdGFudExpZ2h0JyxcbiAgICAnZmVGbG9vZCcsXG4gICAgJ2ZlRnVuY0EnLFxuICAgICdmZUZ1bmNCJyxcbiAgICAnZmVGdW5jRycsXG4gICAgJ2ZlRnVuY1InLFxuICAgICdmZUdhdXNzaWFuQmx1cicsXG4gICAgJ2ZlSW1hZ2UnLFxuICAgICdmZU1lcmdlJyxcbiAgICAnZmVNZXJnZU5vZGUnLFxuICAgICdmZU1vcnBob2xvZ3knLFxuICAgICdmZU9mZnNldCcsXG4gICAgJ2ZlUG9pbnRMaWdodCcsXG4gICAgJ2ZlU3BlY3VsYXJMaWdodGluZycsXG4gICAgJ2ZlU3BvdExpZ2h0JyxcbiAgICAnZmVUaWxlJyxcbiAgICAnZmVUdXJidWxlbmNlJyxcbiAgICAnZm9yZWlnbk9iamVjdCcsXG4gICAgJ2dseXBoUmVmJyxcbiAgICAnbGluZWFyR3JhZGllbnQnLFxuICAgICdyYWRpYWxHcmFkaWVudCcsXG4gICAgJ3RleHRQYXRoJyxcbl0ubWFwKCh0bikgPT4gW3RuLnRvTG93ZXJDYXNlKCksIHRuXSkpO1xuLy9UYWdzIHRoYXQgY2F1c2VzIGV4aXQgZnJvbSBmb3JlaWduIGNvbnRlbnRcbmNvbnN0IEVYSVRTX0ZPUkVJR05fQ09OVEVOVCA9IG5ldyBTZXQoW1xuICAgIGh0bWxfanNfMS5UQUdfSUQuQixcbiAgICBodG1sX2pzXzEuVEFHX0lELkJJRyxcbiAgICBodG1sX2pzXzEuVEFHX0lELkJMT0NLUVVPVEUsXG4gICAgaHRtbF9qc18xLlRBR19JRC5CT0RZLFxuICAgIGh0bWxfanNfMS5UQUdfSUQuQlIsXG4gICAgaHRtbF9qc18xLlRBR19JRC5DRU5URVIsXG4gICAgaHRtbF9qc18xLlRBR19JRC5DT0RFLFxuICAgIGh0bWxfanNfMS5UQUdfSUQuREQsXG4gICAgaHRtbF9qc18xLlRBR19JRC5ESVYsXG4gICAgaHRtbF9qc18xLlRBR19JRC5ETCxcbiAgICBodG1sX2pzXzEuVEFHX0lELkRULFxuICAgIGh0bWxfanNfMS5UQUdfSUQuRU0sXG4gICAgaHRtbF9qc18xLlRBR19JRC5FTUJFRCxcbiAgICBodG1sX2pzXzEuVEFHX0lELkgxLFxuICAgIGh0bWxfanNfMS5UQUdfSUQuSDIsXG4gICAgaHRtbF9qc18xLlRBR19JRC5IMyxcbiAgICBodG1sX2pzXzEuVEFHX0lELkg0LFxuICAgIGh0bWxfanNfMS5UQUdfSUQuSDUsXG4gICAgaHRtbF9qc18xLlRBR19JRC5INixcbiAgICBodG1sX2pzXzEuVEFHX0lELkhFQUQsXG4gICAgaHRtbF9qc18xLlRBR19JRC5IUixcbiAgICBodG1sX2pzXzEuVEFHX0lELkksXG4gICAgaHRtbF9qc18xLlRBR19JRC5JTUcsXG4gICAgaHRtbF9qc18xLlRBR19JRC5MSSxcbiAgICBodG1sX2pzXzEuVEFHX0lELkxJU1RJTkcsXG4gICAgaHRtbF9qc18xLlRBR19JRC5NRU5VLFxuICAgIGh0bWxfanNfMS5UQUdfSUQuTUVUQSxcbiAgICBodG1sX2pzXzEuVEFHX0lELk5PQlIsXG4gICAgaHRtbF9qc18xLlRBR19JRC5PTCxcbiAgICBodG1sX2pzXzEuVEFHX0lELlAsXG4gICAgaHRtbF9qc18xLlRBR19JRC5QUkUsXG4gICAgaHRtbF9qc18xLlRBR19JRC5SVUJZLFxuICAgIGh0bWxfanNfMS5UQUdfSUQuUyxcbiAgICBodG1sX2pzXzEuVEFHX0lELlNNQUxMLFxuICAgIGh0bWxfanNfMS5UQUdfSUQuU1BBTixcbiAgICBodG1sX2pzXzEuVEFHX0lELlNUUk9ORyxcbiAgICBodG1sX2pzXzEuVEFHX0lELlNUUklLRSxcbiAgICBodG1sX2pzXzEuVEFHX0lELlNVQixcbiAgICBodG1sX2pzXzEuVEFHX0lELlNVUCxcbiAgICBodG1sX2pzXzEuVEFHX0lELlRBQkxFLFxuICAgIGh0bWxfanNfMS5UQUdfSUQuVFQsXG4gICAgaHRtbF9qc18xLlRBR19JRC5VLFxuICAgIGh0bWxfanNfMS5UQUdfSUQuVUwsXG4gICAgaHRtbF9qc18xLlRBR19JRC5WQVIsXG5dKTtcbi8vQ2hlY2sgZXhpdCBmcm9tIGZvcmVpZ24gY29udGVudFxuZnVuY3Rpb24gY2F1c2VzRXhpdChzdGFydFRhZ1Rva2VuKSB7XG4gICAgY29uc3QgdG4gPSBzdGFydFRhZ1Rva2VuLnRhZ0lEO1xuICAgIGNvbnN0IGlzRm9udFdpdGhBdHRycyA9IHRuID09PSBodG1sX2pzXzEuVEFHX0lELkZPTlQgJiZcbiAgICAgICAgc3RhcnRUYWdUb2tlbi5hdHRycy5zb21lKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gaHRtbF9qc18xLkFUVFJTLkNPTE9SIHx8IG5hbWUgPT09IGh0bWxfanNfMS5BVFRSUy5TSVpFIHx8IG5hbWUgPT09IGh0bWxfanNfMS5BVFRSUy5GQUNFKTtcbiAgICByZXR1cm4gaXNGb250V2l0aEF0dHJzIHx8IEVYSVRTX0ZPUkVJR05fQ09OVEVOVC5oYXModG4pO1xufVxuZXhwb3J0cy5jYXVzZXNFeGl0ID0gY2F1c2VzRXhpdDtcbi8vVG9rZW4gYWRqdXN0bWVudHNcbmZ1bmN0aW9uIGFkanVzdFRva2VuTWF0aE1MQXR0cnModG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbi5hdHRyc1tpXS5uYW1lID09PSBERUZJTklUSU9OX1VSTF9BVFRSKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzID0gYWRqdXN0VG9rZW5NYXRoTUxBdHRycztcbmZ1bmN0aW9uIGFkanVzdFRva2VuU1ZHQXR0cnModG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ck5hbWUgPSBTVkdfQVRUUlNfQURKVVNUTUVOVF9NQVAuZ2V0KHRva2VuLmF0dHJzW2ldLm5hbWUpO1xuICAgICAgICBpZiAoYWRqdXN0ZWRBdHRyTmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gYWRqdXN0ZWRBdHRyTmFtZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuYWRqdXN0VG9rZW5TVkdBdHRycyA9IGFkanVzdFRva2VuU1ZHQXR0cnM7XG5mdW5jdGlvbiBhZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbi5hdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBhZGp1c3RlZEF0dHJFbnRyeSA9IFhNTF9BVFRSU19BREpVU1RNRU5UX01BUC5nZXQodG9rZW4uYXR0cnNbaV0ubmFtZSk7XG4gICAgICAgIGlmIChhZGp1c3RlZEF0dHJFbnRyeSkge1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ucHJlZml4ID0gYWRqdXN0ZWRBdHRyRW50cnkucHJlZml4O1xuICAgICAgICAgICAgdG9rZW4uYXR0cnNbaV0ubmFtZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWU7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lc3BhY2UgPSBhZGp1c3RlZEF0dHJFbnRyeS5uYW1lc3BhY2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLmFkanVzdFRva2VuWE1MQXR0cnMgPSBhZGp1c3RUb2tlblhNTEF0dHJzO1xuZnVuY3Rpb24gYWRqdXN0VG9rZW5TVkdUYWdOYW1lKHRva2VuKSB7XG4gICAgY29uc3QgYWRqdXN0ZWRUYWdOYW1lID0gZXhwb3J0cy5TVkdfVEFHX05BTUVTX0FESlVTVE1FTlRfTUFQLmdldCh0b2tlbi50YWdOYW1lKTtcbiAgICBpZiAoYWRqdXN0ZWRUYWdOYW1lICE9IG51bGwpIHtcbiAgICAgICAgdG9rZW4udGFnTmFtZSA9IGFkanVzdGVkVGFnTmFtZTtcbiAgICAgICAgdG9rZW4udGFnSUQgPSAoMCwgaHRtbF9qc18xLmdldFRhZ0lEKSh0b2tlbi50YWdOYW1lKTtcbiAgICB9XG59XG5leHBvcnRzLmFkanVzdFRva2VuU1ZHVGFnTmFtZSA9IGFkanVzdFRva2VuU1ZHVGFnTmFtZTtcbi8vSW50ZWdyYXRpb24gcG9pbnRzXG5mdW5jdGlvbiBpc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KHRuLCBucykge1xuICAgIHJldHVybiBucyA9PT0gaHRtbF9qc18xLk5TLk1BVEhNTCAmJiAodG4gPT09IGh0bWxfanNfMS5UQUdfSUQuTUkgfHwgdG4gPT09IGh0bWxfanNfMS5UQUdfSUQuTU8gfHwgdG4gPT09IGh0bWxfanNfMS5UQUdfSUQuTU4gfHwgdG4gPT09IGh0bWxfanNfMS5UQUdfSUQuTVMgfHwgdG4gPT09IGh0bWxfanNfMS5UQUdfSUQuTVRFWFQpO1xufVxuZnVuY3Rpb24gaXNIdG1sSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzKSB7XG4gICAgaWYgKG5zID09PSBodG1sX2pzXzEuTlMuTUFUSE1MICYmIHRuID09PSBodG1sX2pzXzEuVEFHX0lELkFOTk9UQVRJT05fWE1MKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChhdHRyc1tpXS5uYW1lID09PSBodG1sX2pzXzEuQVRUUlMuRU5DT0RJTkcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHJzW2ldLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID09PSBNSU1FX1RZUEVTLlRFWFRfSFRNTCB8fCB2YWx1ZSA9PT0gTUlNRV9UWVBFUy5BUFBMSUNBVElPTl9YTUw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5zID09PSBodG1sX2pzXzEuTlMuU1ZHICYmICh0biA9PT0gaHRtbF9qc18xLlRBR19JRC5GT1JFSUdOX09CSkVDVCB8fCB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5ERVNDIHx8IHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRJVExFKTtcbn1cbmZ1bmN0aW9uIGlzSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzLCBmb3JlaWduTlMpIHtcbiAgICByZXR1cm4gKCgoIWZvcmVpZ25OUyB8fCBmb3JlaWduTlMgPT09IGh0bWxfanNfMS5OUy5IVE1MKSAmJiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpKSB8fFxuICAgICAgICAoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBodG1sX2pzXzEuTlMuTUFUSE1MKSAmJiBpc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KHRuLCBucykpKTtcbn1cbmV4cG9ydHMuaXNJbnRlZ3JhdGlvblBvaW50ID0gaXNJbnRlZ3JhdGlvblBvaW50O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm9yZWlnbi1jb250ZW50LmpzLm1hcCIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUGFyc2VyID0gdm9pZCAwO1xuY29uc3QgaW5kZXhfanNfMSA9IHJlcXVpcmUoXCIuLi90b2tlbml6ZXIvaW5kZXguanNcIik7XG5jb25zdCBvcGVuX2VsZW1lbnRfc3RhY2tfanNfMSA9IHJlcXVpcmUoXCIuL29wZW4tZWxlbWVudC1zdGFjay5qc1wiKTtcbmNvbnN0IGZvcm1hdHRpbmdfZWxlbWVudF9saXN0X2pzXzEgPSByZXF1aXJlKFwiLi9mb3JtYXR0aW5nLWVsZW1lbnQtbGlzdC5qc1wiKTtcbmNvbnN0IGRlZmF1bHRfanNfMSA9IHJlcXVpcmUoXCIuLi90cmVlLWFkYXB0ZXJzL2RlZmF1bHQuanNcIik7XG5jb25zdCBkb2N0eXBlID0gcmVxdWlyZShcIi4uL2NvbW1vbi9kb2N0eXBlLmpzXCIpO1xuY29uc3QgZm9yZWlnbkNvbnRlbnQgPSByZXF1aXJlKFwiLi4vY29tbW9uL2ZvcmVpZ24tY29udGVudC5qc1wiKTtcbmNvbnN0IGVycm9yX2NvZGVzX2pzXzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL2Vycm9yLWNvZGVzLmpzXCIpO1xuY29uc3QgdW5pY29kZSA9IHJlcXVpcmUoXCIuLi9jb21tb24vdW5pY29kZS5qc1wiKTtcbmNvbnN0IGh0bWxfanNfMSA9IHJlcXVpcmUoXCIuLi9jb21tb24vaHRtbC5qc1wiKTtcbmNvbnN0IHRva2VuX2pzXzEgPSByZXF1aXJlKFwiLi4vY29tbW9uL3Rva2VuLmpzXCIpO1xuLy9NaXNjIGNvbnN0YW50c1xuY29uc3QgSElEREVOX0lOUFVUX1RZUEUgPSAnaGlkZGVuJztcbi8vQWRvcHRpb24gYWdlbmN5IGxvb3BzIGl0ZXJhdGlvbiBjb3VudFxuY29uc3QgQUFfT1VURVJfTE9PUF9JVEVSID0gODtcbmNvbnN0IEFBX0lOTkVSX0xPT1BfSVRFUiA9IDM7XG4vL0luc2VydGlvbiBtb2Rlc1xudmFyIEluc2VydGlvbk1vZGU7XG4oZnVuY3Rpb24gKEluc2VydGlvbk1vZGUpIHtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTklUSUFMXCJdID0gMF0gPSBcIklOSVRJQUxcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJCRUZPUkVfSFRNTFwiXSA9IDFdID0gXCJCRUZPUkVfSFRNTFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkJFRk9SRV9IRUFEXCJdID0gMl0gPSBcIkJFRk9SRV9IRUFEXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fSEVBRFwiXSA9IDNdID0gXCJJTl9IRUFEXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fSEVBRF9OT19TQ1JJUFRcIl0gPSA0XSA9IFwiSU5fSEVBRF9OT19TQ1JJUFRcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJBRlRFUl9IRUFEXCJdID0gNV0gPSBcIkFGVEVSX0hFQURcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9CT0RZXCJdID0gNl0gPSBcIklOX0JPRFlcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJURVhUXCJdID0gN10gPSBcIlRFWFRcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9UQUJMRVwiXSA9IDhdID0gXCJJTl9UQUJMRVwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1RBQkxFX1RFWFRcIl0gPSA5XSA9IFwiSU5fVEFCTEVfVEVYVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0NBUFRJT05cIl0gPSAxMF0gPSBcIklOX0NBUFRJT05cIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9DT0xVTU5fR1JPVVBcIl0gPSAxMV0gPSBcIklOX0NPTFVNTl9HUk9VUFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1RBQkxFX0JPRFlcIl0gPSAxMl0gPSBcIklOX1RBQkxFX0JPRFlcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9ST1dcIl0gPSAxM10gPSBcIklOX1JPV1wiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0NFTExcIl0gPSAxNF0gPSBcIklOX0NFTExcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9TRUxFQ1RcIl0gPSAxNV0gPSBcIklOX1NFTEVDVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1NFTEVDVF9JTl9UQUJMRVwiXSA9IDE2XSA9IFwiSU5fU0VMRUNUX0lOX1RBQkxFXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fVEVNUExBVEVcIl0gPSAxN10gPSBcIklOX1RFTVBMQVRFXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiQUZURVJfQk9EWVwiXSA9IDE4XSA9IFwiQUZURVJfQk9EWVwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0ZSQU1FU0VUXCJdID0gMTldID0gXCJJTl9GUkFNRVNFVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkFGVEVSX0ZSQU1FU0VUXCJdID0gMjBdID0gXCJBRlRFUl9GUkFNRVNFVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkFGVEVSX0FGVEVSX0JPRFlcIl0gPSAyMV0gPSBcIkFGVEVSX0FGVEVSX0JPRFlcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJBRlRFUl9BRlRFUl9GUkFNRVNFVFwiXSA9IDIyXSA9IFwiQUZURVJfQUZURVJfRlJBTUVTRVRcIjtcbn0pKEluc2VydGlvbk1vZGUgfHwgKEluc2VydGlvbk1vZGUgPSB7fSkpO1xuY29uc3QgQkFTRV9MT0MgPSB7XG4gICAgc3RhcnRMaW5lOiAtMSxcbiAgICBzdGFydENvbDogLTEsXG4gICAgc3RhcnRPZmZzZXQ6IC0xLFxuICAgIGVuZExpbmU6IC0xLFxuICAgIGVuZENvbDogLTEsXG4gICAgZW5kT2Zmc2V0OiAtMSxcbn07XG5jb25zdCBUQUJMRV9TVFJVQ1RVUkVfVEFHUyA9IG5ldyBTZXQoW2h0bWxfanNfMS5UQUdfSUQuVEFCTEUsIGh0bWxfanNfMS5UQUdfSUQuVEJPRFksIGh0bWxfanNfMS5UQUdfSUQuVEZPT1QsIGh0bWxfanNfMS5UQUdfSUQuVEhFQUQsIGh0bWxfanNfMS5UQUdfSUQuVFJdKTtcbmNvbnN0IGRlZmF1bHRQYXJzZXJPcHRpb25zID0ge1xuICAgIHNjcmlwdGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogZmFsc2UsXG4gICAgdHJlZUFkYXB0ZXI6IGRlZmF1bHRfanNfMS5kZWZhdWx0VHJlZUFkYXB0ZXIsXG4gICAgb25QYXJzZUVycm9yOiBudWxsLFxufTtcbi8vUGFyc2VyXG5jbGFzcyBQYXJzZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGRvY3VtZW50LCBmcmFnbWVudENvbnRleHQgPSBudWxsLCBzY3JpcHRIYW5kbGVyID0gbnVsbCkge1xuICAgICAgICB0aGlzLmZyYWdtZW50Q29udGV4dCA9IGZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgdGhpcy5zY3JpcHRIYW5kbGVyID0gc2NyaXB0SGFuZGxlcjtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSBudWxsO1xuICAgICAgICB0aGlzLnN0b3BwZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTklUSUFMO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5JVElBTDtcbiAgICAgICAgdGhpcy5oZWFkRWxlbWVudCA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnQgPSBudWxsO1xuICAgICAgICAvKiogSW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQgbm9kZSBpcyBub3QgYW4gZWxlbWVudCBpbiB0aGUgSFRNTCBuYW1lc3BhY2UgKi9cbiAgICAgICAgdGhpcy5jdXJyZW50Tm90SW5IVE1MID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgdGVtcGxhdGUgaW5zZXJ0aW9uIG1vZGUgc3RhY2sgaXMgbWFpbnRhaW5lZCBmcm9tIHRoZSBsZWZ0LlxuICAgICAgICAgKiBJZS4gdGhlIHRvcG1vc3QgZWxlbWVudCB3aWxsIGFsd2F5cyBoYXZlIGluZGV4IDAuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2sgPSBbXTtcbiAgICAgICAgdGhpcy5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zID0gW107XG4gICAgICAgIHRoaXMuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZyYW1lc2V0T2sgPSB0cnVlO1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0UGFyc2VyT3B0aW9ucyksIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdGhpcy5vcHRpb25zLnRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLm9uUGFyc2VFcnJvciA9IHRoaXMub3B0aW9ucy5vblBhcnNlRXJyb3I7XG4gICAgICAgIC8vIEFsd2F5cyBlbmFibGUgbG9jYXRpb24gaW5mbyBpZiB3ZSByZXBvcnQgcGFyc2UgZXJyb3JzLlxuICAgICAgICBpZiAodGhpcy5vblBhcnNlRXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQgIT09IG51bGwgJiYgZG9jdW1lbnQgIT09IHZvaWQgMCA/IGRvY3VtZW50IDogdGhpcy50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudCgpO1xuICAgICAgICB0aGlzLnRva2VuaXplciA9IG5ldyBpbmRleF9qc18xLlRva2VuaXplcih0aGlzLm9wdGlvbnMsIHRoaXMpO1xuICAgICAgICB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cyA9IG5ldyBmb3JtYXR0aW5nX2VsZW1lbnRfbGlzdF9qc18xLkZvcm1hdHRpbmdFbGVtZW50TGlzdCh0aGlzLnRyZWVBZGFwdGVyKTtcbiAgICAgICAgdGhpcy5mcmFnbWVudENvbnRleHRJRCA9IGZyYWdtZW50Q29udGV4dCA/ICgwLCBodG1sX2pzXzEuZ2V0VGFnSUQpKHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShmcmFnbWVudENvbnRleHQpKSA6IGh0bWxfanNfMS5UQUdfSUQuVU5LTk9XTjtcbiAgICAgICAgdGhpcy5fc2V0Q29udGV4dE1vZGVzKGZyYWdtZW50Q29udGV4dCAhPT0gbnVsbCAmJiBmcmFnbWVudENvbnRleHQgIT09IHZvaWQgMCA/IGZyYWdtZW50Q29udGV4dCA6IHRoaXMuZG9jdW1lbnQsIHRoaXMuZnJhZ21lbnRDb250ZXh0SUQpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cyA9IG5ldyBvcGVuX2VsZW1lbnRfc3RhY2tfanNfMS5PcGVuRWxlbWVudFN0YWNrKHRoaXMuZG9jdW1lbnQsIHRoaXMudHJlZUFkYXB0ZXIsIHRoaXMpO1xuICAgIH1cbiAgICAvLyBBUElcbiAgICBzdGF0aWMgcGFyc2UoaHRtbCwgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBwYXJzZXIgPSBuZXcgdGhpcyhvcHRpb25zKTtcbiAgICAgICAgcGFyc2VyLnRva2VuaXplci53cml0ZShodG1sLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlci5kb2N1bWVudDtcbiAgICB9XG4gICAgc3RhdGljIGdldEZyYWdtZW50UGFyc2VyKGZyYWdtZW50Q29udGV4dCwgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0UGFyc2VyT3B0aW9ucyksIG9wdGlvbnMpO1xuICAgICAgICAvL05PVEU6IHVzZSBhIDx0ZW1wbGF0ZT4gZWxlbWVudCBhcyB0aGUgZnJhZ21lbnQgY29udGV4dCBpZiBubyBjb250ZXh0IGVsZW1lbnQgd2FzIHByb3ZpZGVkLFxuICAgICAgICAvL3NvIHdlIHdpbGwgcGFyc2UgaW4gYSBcImZvcmdpdmluZ1wiIG1hbm5lclxuICAgICAgICBmcmFnbWVudENvbnRleHQgIT09IG51bGwgJiYgZnJhZ21lbnRDb250ZXh0ICE9PSB2b2lkIDAgPyBmcmFnbWVudENvbnRleHQgOiAoZnJhZ21lbnRDb250ZXh0ID0gb3B0cy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KGh0bWxfanNfMS5UQUdfTkFNRVMuVEVNUExBVEUsIGh0bWxfanNfMS5OUy5IVE1MLCBbXSkpO1xuICAgICAgICAvL05PVEU6IGNyZWF0ZSBhIGZha2UgZWxlbWVudCB3aGljaCB3aWxsIGJlIHVzZWQgYXMgdGhlIGBkb2N1bWVudGAgZm9yIGZyYWdtZW50IHBhcnNpbmcuXG4gICAgICAgIC8vVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGpzZG9tLCB3aGVyZSBhIG5ldyBgZG9jdW1lbnRgIGNhbm5vdCBiZSBjcmVhdGVkLiBUaGlzIGxlZCB0b1xuICAgICAgICAvL2ZyYWdtZW50IHBhcnNpbmcgbWVzc2luZyB3aXRoIHRoZSBtYWluIGBkb2N1bWVudGAuXG4gICAgICAgIGNvbnN0IGRvY3VtZW50TW9jayA9IG9wdHMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCgnZG9jdW1lbnRtb2NrJywgaHRtbF9qc18xLk5TLkhUTUwsIFtdKTtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IHRoaXMob3B0cywgZG9jdW1lbnRNb2NrLCBmcmFnbWVudENvbnRleHQpO1xuICAgICAgICBpZiAocGFyc2VyLmZyYWdtZW50Q29udGV4dElEID09PSBodG1sX2pzXzEuVEFHX0lELlRFTVBMQVRFKSB7XG4gICAgICAgICAgICBwYXJzZXIudG1wbEluc2VydGlvbk1vZGVTdGFjay51bnNoaWZ0KEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEUpO1xuICAgICAgICB9XG4gICAgICAgIHBhcnNlci5faW5pdFRva2VuaXplckZvckZyYWdtZW50UGFyc2luZygpO1xuICAgICAgICBwYXJzZXIuX2luc2VydEZha2VSb290RWxlbWVudCgpO1xuICAgICAgICBwYXJzZXIuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwYXJzZXIuX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQoKTtcbiAgICAgICAgcmV0dXJuIHBhcnNlcjtcbiAgICB9XG4gICAgZ2V0RnJhZ21lbnQoKSB7XG4gICAgICAgIGNvbnN0IHJvb3RFbGVtZW50ID0gdGhpcy50cmVlQWRhcHRlci5nZXRGaXJzdENoaWxkKHRoaXMuZG9jdW1lbnQpO1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICB0aGlzLl9hZG9wdE5vZGVzKHJvb3RFbGVtZW50LCBmcmFnbWVudCk7XG4gICAgICAgIHJldHVybiBmcmFnbWVudDtcbiAgICB9XG4gICAgLy9FcnJvcnNcbiAgICBfZXJyKHRva2VuLCBjb2RlLCBiZWZvcmVUb2tlbikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghdGhpcy5vblBhcnNlRXJyb3IpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxvYyA9IChfYSA9IHRva2VuLmxvY2F0aW9uKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBCQVNFX0xPQztcbiAgICAgICAgY29uc3QgZXJyID0ge1xuICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgIHN0YXJ0TGluZTogbG9jLnN0YXJ0TGluZSxcbiAgICAgICAgICAgIHN0YXJ0Q29sOiBsb2Muc3RhcnRDb2wsXG4gICAgICAgICAgICBzdGFydE9mZnNldDogbG9jLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgZW5kTGluZTogYmVmb3JlVG9rZW4gPyBsb2Muc3RhcnRMaW5lIDogbG9jLmVuZExpbmUsXG4gICAgICAgICAgICBlbmRDb2w6IGJlZm9yZVRva2VuID8gbG9jLnN0YXJ0Q29sIDogbG9jLmVuZENvbCxcbiAgICAgICAgICAgIGVuZE9mZnNldDogYmVmb3JlVG9rZW4gPyBsb2Muc3RhcnRPZmZzZXQgOiBsb2MuZW5kT2Zmc2V0LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9uUGFyc2VFcnJvcihlcnIpO1xuICAgIH1cbiAgICAvL1N0YWNrIGV2ZW50c1xuICAgIG9uSXRlbVB1c2gobm9kZSwgdGlkLCBpc1RvcCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLnRyZWVBZGFwdGVyKS5vbkl0ZW1QdXNoKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSwgbm9kZSk7XG4gICAgICAgIGlmIChpc1RvcCAmJiB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCA+IDApXG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZXh0TW9kZXMobm9kZSwgdGlkKTtcbiAgICB9XG4gICAgb25JdGVtUG9wKG5vZGUsIGlzVG9wKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgdGhpcy5fc2V0RW5kTG9jYXRpb24obm9kZSwgdGhpcy5jdXJyZW50VG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIChfYiA9IChfYSA9IHRoaXMudHJlZUFkYXB0ZXIpLm9uSXRlbVBvcCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIG5vZGUsIHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQpO1xuICAgICAgICBpZiAoaXNUb3ApIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50O1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRUYWdJZDtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLmZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgICAgICAgICBjdXJyZW50VGFnSWQgPSB0aGlzLmZyYWdtZW50Q29udGV4dElEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgKHsgY3VycmVudCwgY3VycmVudFRhZ0lkIH0gPSB0aGlzLm9wZW5FbGVtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZXh0TW9kZXMoY3VycmVudCwgY3VycmVudFRhZ0lkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfc2V0Q29udGV4dE1vZGVzKGN1cnJlbnQsIHRpZCkge1xuICAgICAgICBjb25zdCBpc0hUTUwgPSBjdXJyZW50ID09PSB0aGlzLmRvY3VtZW50IHx8IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpID09PSBodG1sX2pzXzEuTlMuSFRNTDtcbiAgICAgICAgdGhpcy5jdXJyZW50Tm90SW5IVE1MID0gIWlzSFRNTDtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSA9ICFpc0hUTUwgJiYgIXRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludCh0aWQsIGN1cnJlbnQpO1xuICAgIH1cbiAgICBfc3dpdGNoVG9UZXh0UGFyc2luZyhjdXJyZW50VG9rZW4sIG5leHRUb2tlbml6ZXJTdGF0ZSkge1xuICAgICAgICB0aGlzLl9pbnNlcnRFbGVtZW50KGN1cnJlbnRUb2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IG5leHRUb2tlbml6ZXJTdGF0ZTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSB0aGlzLmluc2VydGlvbk1vZGU7XG4gICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuVEVYVDtcbiAgICB9XG4gICAgc3dpdGNoVG9QbGFpbnRleHRQYXJzaW5nKCkge1xuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLlRFWFQ7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IGluZGV4X2pzXzEuVG9rZW5pemVyTW9kZS5QTEFJTlRFWFQ7XG4gICAgfVxuICAgIC8vRnJhZ21lbnQgcGFyc2luZ1xuICAgIF9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPT09IDAgJiYgdGhpcy5mcmFnbWVudENvbnRleHRcbiAgICAgICAgICAgID8gdGhpcy5mcmFnbWVudENvbnRleHRcbiAgICAgICAgICAgIDogdGhpcy5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICB9XG4gICAgX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQoKSB7XG4gICAgICAgIGxldCBub2RlID0gdGhpcy5mcmFnbWVudENvbnRleHQ7XG4gICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5vZGUpID09PSBodG1sX2pzXzEuVEFHX05BTUVTLkZPUk0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50ID0gbm9kZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFBhcmVudE5vZGUobm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2luaXRUb2tlbml6ZXJGb3JGcmFnbWVudFBhcnNpbmcoKSB7XG4gICAgICAgIGlmICghdGhpcy5mcmFnbWVudENvbnRleHQgfHwgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5mcmFnbWVudENvbnRleHQpICE9PSBodG1sX2pzXzEuTlMuSFRNTCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAodGhpcy5mcmFnbWVudENvbnRleHRJRCkge1xuICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRJVExFOlxuICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRFWFRBUkVBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBpbmRleF9qc18xLlRva2VuaXplck1vZGUuUkNEQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNUWUxFOlxuICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlhNUDpcbiAgICAgICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5JRlJBTUU6XG4gICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTk9FTUJFRDpcbiAgICAgICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT0ZSQU1FUzpcbiAgICAgICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT1NDUklQVDoge1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLnN0YXRlID0gaW5kZXhfanNfMS5Ub2tlbml6ZXJNb2RlLlJBV1RFWFQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuU0NSSVBUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBpbmRleF9qc18xLlRva2VuaXplck1vZGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuUExBSU5URVhUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBpbmRleF9qc18xLlRva2VuaXplck1vZGUuUExBSU5URVhUO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL1RyZWUgbXV0YXRpb25cbiAgICBfc2V0RG9jdW1lbnRUeXBlKHRva2VuKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0b2tlbi5uYW1lIHx8ICcnO1xuICAgICAgICBjb25zdCBwdWJsaWNJZCA9IHRva2VuLnB1YmxpY0lkIHx8ICcnO1xuICAgICAgICBjb25zdCBzeXN0ZW1JZCA9IHRva2VuLnN5c3RlbUlkIHx8ICcnO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldERvY3VtZW50VHlwZSh0aGlzLmRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpO1xuICAgICAgICBpZiAodG9rZW4ubG9jYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50Q2hpbGRyZW4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXModGhpcy5kb2N1bWVudCk7XG4gICAgICAgICAgICBjb25zdCBkb2NUeXBlTm9kZSA9IGRvY3VtZW50Q2hpbGRyZW4uZmluZCgobm9kZSkgPT4gdGhpcy50cmVlQWRhcHRlci5pc0RvY3VtZW50VHlwZU5vZGUobm9kZSkpO1xuICAgICAgICAgICAgaWYgKGRvY1R5cGVOb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGRvY1R5cGVOb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCwgbG9jYXRpb24pIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICBjb25zdCBsb2MgPSBsb2NhdGlvbiAmJiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGxvY2F0aW9uKSwgeyBzdGFydFRhZzogbG9jYXRpb24gfSk7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZWxlbWVudCwgbG9jKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5fZm9zdGVyUGFyZW50RWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudE9yTm9kZTtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfYXBwZW5kRWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbmFtZXNwYWNlVVJJLCB0b2tlbi5hdHRycyk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCwgdG9rZW4ubG9jYXRpb24pO1xuICAgIH1cbiAgICBfaW5zZXJ0RWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbmFtZXNwYWNlVVJJLCB0b2tlbi5hdHRycyk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCwgdG9rZW4ubG9jYXRpb24pO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQsIHRva2VuLnRhZ0lEKTtcbiAgICB9XG4gICAgX2luc2VydEZha2VFbGVtZW50KHRhZ05hbWUsIHRhZ0lEKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodGFnTmFtZSwgaHRtbF9qc18xLk5TLkhUTUwsIFtdKTtcbiAgICAgICAgdGhpcy5fYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50LCBudWxsKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucHVzaChlbGVtZW50LCB0YWdJRCk7XG4gICAgfVxuICAgIF9pbnNlcnRUZW1wbGF0ZSh0b2tlbikge1xuICAgICAgICBjb25zdCB0bXBsID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIGh0bWxfanNfMS5OUy5IVE1MLCB0b2tlbi5hdHRycyk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXRUZW1wbGF0ZUNvbnRlbnQodG1wbCwgY29udGVudCk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUodG1wbCwgdG9rZW4ubG9jYXRpb24pO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKHRtcGwsIHRva2VuLnRhZ0lEKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKVxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGNvbnRlbnQsIG51bGwpO1xuICAgIH1cbiAgICBfaW5zZXJ0RmFrZVJvb3RFbGVtZW50KCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KGh0bWxfanNfMS5UQUdfTkFNRVMuSFRNTCwgaHRtbF9qc18xLk5TLkhUTUwsIFtdKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKVxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGVsZW1lbnQsIG51bGwpO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQsIGVsZW1lbnQpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQsIGh0bWxfanNfMS5UQUdfSUQuSFRNTCk7XG4gICAgfVxuICAgIF9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVDb21tZW50Tm9kZSh0b2tlbi5kYXRhKTtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChwYXJlbnQsIGNvbW1lbnROb2RlKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oY29tbWVudE5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfaW5zZXJ0Q2hhcmFjdGVycyh0b2tlbikge1xuICAgICAgICBsZXQgcGFyZW50O1xuICAgICAgICBsZXQgYmVmb3JlRWxlbWVudDtcbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uKCkpIHtcbiAgICAgICAgICAgICh7IHBhcmVudCwgYmVmb3JlRWxlbWVudCB9ID0gdGhpcy5fZmluZEZvc3RlclBhcmVudGluZ0xvY2F0aW9uKCkpO1xuICAgICAgICAgICAgaWYgKGJlZm9yZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHRCZWZvcmUocGFyZW50LCB0b2tlbi5jaGFycywgYmVmb3JlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHQocGFyZW50LCB0b2tlbi5jaGFycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwYXJlbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50VG1wbENvbnRlbnRPck5vZGU7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmluc2VydFRleHQocGFyZW50LCB0b2tlbi5jaGFycyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0b2tlbi5sb2NhdGlvbilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3Qgc2libGluZ3MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXMocGFyZW50KTtcbiAgICAgICAgY29uc3QgdGV4dE5vZGVJZHggPSBiZWZvcmVFbGVtZW50ID8gc2libGluZ3MubGFzdEluZGV4T2YoYmVmb3JlRWxlbWVudCkgOiBzaWJsaW5ncy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHRleHROb2RlID0gc2libGluZ3NbdGV4dE5vZGVJZHggLSAxXTtcbiAgICAgICAgLy9OT1RFOiBpZiB3ZSBoYXZlIGEgbG9jYXRpb24gYXNzaWduZWQgYnkgYW5vdGhlciB0b2tlbiwgdGhlbiBqdXN0IHVwZGF0ZSB0aGUgZW5kIHBvc2l0aW9uXG4gICAgICAgIGNvbnN0IHRuTG9jID0gdGhpcy50cmVlQWRhcHRlci5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlKTtcbiAgICAgICAgaWYgKHRuTG9jKSB7XG4gICAgICAgICAgICBjb25zdCB7IGVuZExpbmUsIGVuZENvbCwgZW5kT2Zmc2V0IH0gPSB0b2tlbi5sb2NhdGlvbjtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIudXBkYXRlTm9kZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXh0Tm9kZSwgeyBlbmRMaW5lLCBlbmRDb2wsIGVuZE9mZnNldCB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbykge1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2Fkb3B0Tm9kZXMoZG9ub3IsIHJlY2lwaWVudCkge1xuICAgICAgICBmb3IgKGxldCBjaGlsZCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Rmlyc3RDaGlsZChkb25vcik7IGNoaWxkOyBjaGlsZCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Rmlyc3RDaGlsZChkb25vcikpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShjaGlsZCk7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHJlY2lwaWVudCwgY2hpbGQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9zZXRFbmRMb2NhdGlvbihlbGVtZW50LCBjbG9zaW5nVG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihlbGVtZW50KSAmJiBjbG9zaW5nVG9rZW4ubG9jYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGN0TG9jID0gY2xvc2luZ1Rva2VuLmxvY2F0aW9uO1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBlbmRMb2MgPSBcbiAgICAgICAgICAgIC8vIE5PVEU6IEZvciBjYXNlcyBsaWtlIDxwPiA8cD4gPC9wPiAtIEZpcnN0ICdwJyBjbG9zZXMgd2l0aG91dCBhIGNsb3NpbmdcbiAgICAgICAgICAgIC8vIHRhZyBhbmQgZm9yIGNhc2VzIGxpa2UgPHRkPiA8cD4gPC90ZD4gLSAncCcgY2xvc2VzIHdpdGhvdXQgYSBjbG9zaW5nIHRhZy5cbiAgICAgICAgICAgIGNsb3NpbmdUb2tlbi50eXBlID09PSB0b2tlbl9qc18xLlRva2VuVHlwZS5FTkRfVEFHICYmIHRuID09PSBjbG9zaW5nVG9rZW4udGFnTmFtZVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICBlbmRUYWc6IE9iamVjdC5hc3NpZ24oe30sIGN0TG9jKSxcbiAgICAgICAgICAgICAgICAgICAgZW5kTGluZTogY3RMb2MuZW5kTGluZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kQ29sOiBjdExvYy5lbmRDb2wsXG4gICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogY3RMb2MuZW5kT2Zmc2V0LFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgZW5kTGluZTogY3RMb2Muc3RhcnRMaW5lLFxuICAgICAgICAgICAgICAgICAgICBlbmRDb2w6IGN0TG9jLnN0YXJ0Q29sLFxuICAgICAgICAgICAgICAgICAgICBlbmRPZmZzZXQ6IGN0TG9jLnN0YXJ0T2Zmc2V0LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnVwZGF0ZU5vZGVTb3VyY2VDb2RlTG9jYXRpb24oZWxlbWVudCwgZW5kTG9jKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL1Rva2VuIHByb2Nlc3NpbmdcbiAgICBzaG91bGRQcm9jZXNzU3RhcnRUYWdUb2tlbkluRm9yZWlnbkNvbnRlbnQodG9rZW4pIHtcbiAgICAgICAgLy8gQ2hlY2sgdGhhdCBuZWl0aGVyIGN1cnJlbnQgPT09IGRvY3VtZW50LCBvciBucyA9PT0gTlMuSFRNTFxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudE5vdEluSFRNTClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgbGV0IGN1cnJlbnQ7XG4gICAgICAgIGxldCBjdXJyZW50VGFnSWQ7XG4gICAgICAgIGlmICh0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCA9PT0gMCAmJiB0aGlzLmZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAgICAgY3VycmVudCA9IHRoaXMuZnJhZ21lbnRDb250ZXh0O1xuICAgICAgICAgICAgY3VycmVudFRhZ0lkID0gdGhpcy5mcmFnbWVudENvbnRleHRJRDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICh7IGN1cnJlbnQsIGN1cnJlbnRUYWdJZCB9ID0gdGhpcy5vcGVuRWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbi50YWdJRCA9PT0gaHRtbF9qc18xLlRBR19JRC5TVkcgJiZcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShjdXJyZW50KSA9PT0gaHRtbF9qc18xLlRBR19OQU1FUy5BTk5PVEFUSU9OX1hNTCAmJlxuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY3VycmVudCkgPT09IGh0bWxfanNfMS5OUy5NQVRITUwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAvLyBDaGVjayB0aGF0IGBjdXJyZW50YCBpcyBub3QgYW4gaW50ZWdyYXRpb24gcG9pbnQgZm9yIEhUTUwgb3IgTWF0aE1MIGVsZW1lbnRzLlxuICAgICAgICB0aGlzLnRva2VuaXplci5pbkZvcmVpZ25Ob2RlIHx8XG4gICAgICAgICAgICAvLyBJZiBpdCBfaXNfIGFuIGludGVncmF0aW9uIHBvaW50LCB0aGVuIHdlIG1pZ2h0IGhhdmUgdG8gY2hlY2sgdGhhdCBpdCBpcyBub3QgYW4gSFRNTFxuICAgICAgICAgICAgLy8gaW50ZWdyYXRpb24gcG9pbnQuXG4gICAgICAgICAgICAoKHRva2VuLnRhZ0lEID09PSBodG1sX2pzXzEuVEFHX0lELk1HTFlQSCB8fCB0b2tlbi50YWdJRCA9PT0gaHRtbF9qc18xLlRBR19JRC5NQUxJR05NQVJLKSAmJlxuICAgICAgICAgICAgICAgICF0aGlzLl9pc0ludGVncmF0aW9uUG9pbnQoY3VycmVudFRhZ0lkLCBjdXJyZW50LCBodG1sX2pzXzEuTlMuSFRNTCkpKTtcbiAgICB9XG4gICAgX3Byb2Nlc3NUb2tlbih0b2tlbikge1xuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgdG9rZW5fanNfMS5Ub2tlblR5cGUuQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYXJhY3Rlcih0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHRva2VuX2pzXzEuVG9rZW5UeXBlLk5VTExfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk51bGxDaGFyYWN0ZXIodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5DT01NRU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5ET0NUWVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5TVEFSVF9UQUc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzU3RhcnRUYWcodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5FTkRfVEFHOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZFRhZyh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHRva2VuX2pzXzEuVG9rZW5UeXBlLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25Fb2YodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25XaGl0ZXNwYWNlQ2hhcmFjdGVyKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvL0ludGVncmF0aW9uIHBvaW50c1xuICAgIF9pc0ludGVncmF0aW9uUG9pbnQodGlkLCBlbGVtZW50LCBmb3JlaWduTlMpIHtcbiAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KTtcbiAgICAgICAgY29uc3QgYXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZm9yZWlnbkNvbnRlbnQuaXNJbnRlZ3JhdGlvblBvaW50KHRpZCwgbnMsIGF0dHJzLCBmb3JlaWduTlMpO1xuICAgIH1cbiAgICAvL0FjdGl2ZSBmb3JtYXR0aW5nIGVsZW1lbnRzIHJlY29uc3RydWN0aW9uXG4gICAgX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCkge1xuICAgICAgICBjb25zdCBsaXN0TGVuZ3RoID0gdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZW50cmllcy5sZW5ndGg7XG4gICAgICAgIGlmIChsaXN0TGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBlbmRJbmRleCA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmVudHJpZXMuZmluZEluZGV4KChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gZm9ybWF0dGluZ19lbGVtZW50X2xpc3RfanNfMS5FbnRyeVR5cGUuTWFya2VyIHx8IHRoaXMub3BlbkVsZW1lbnRzLmNvbnRhaW5zKGVudHJ5LmVsZW1lbnQpKTtcbiAgICAgICAgICAgIGNvbnN0IHVub3BlbklkeCA9IGVuZEluZGV4IDwgMCA/IGxpc3RMZW5ndGggLSAxIDogZW5kSW5kZXggLSAxO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHVub3BlbklkeDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmVudHJpZXNbaV07XG4gICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0RWxlbWVudChlbnRyeS50b2tlbiwgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZW50cnkuZWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIGVudHJ5LmVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vQ2xvc2UgZWxlbWVudHNcbiAgICBfY2xvc2VUYWJsZUNlbGwoKSB7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucG9wVW50aWxUYWJsZUNlbGxQb3BwZWQoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9ST1c7XG4gICAgfVxuICAgIF9jbG9zZVBFbGVtZW50KCkge1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihodG1sX2pzXzEuVEFHX0lELlApO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoaHRtbF9qc18xLlRBR19JRC5QKTtcbiAgICB9XG4gICAgLy9JbnNlcnRpb24gbW9kZXNcbiAgICBfcmVzZXRJbnNlcnRpb25Nb2RlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAvL0luc2VydGlvbiBtb2RlIHJlc2V0IG1hcFxuICAgICAgICAgICAgc3dpdGNoIChpID09PSAwICYmIHRoaXMuZnJhZ21lbnRDb250ZXh0ID8gdGhpcy5mcmFnbWVudENvbnRleHRJRCA6IHRoaXMub3BlbkVsZW1lbnRzLnRhZ0lEc1tpXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UUjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1JPVztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEJPRFk6XG4gICAgICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIRUFEOlxuICAgICAgICAgICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URk9PVDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNBUFRJT046IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0xHUk9VUDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEFCTEU6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQk9EWToge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNFTEVDVDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldEluc2VydGlvbk1vZGVGb3JTZWxlY3QoaSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFja1swXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSFRNTDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSB0aGlzLmhlYWRFbGVtZW50ID8gSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEIDogSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEQ6XG4gICAgICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DRUxMO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSEVBRDoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fSEVBRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgIH1cbiAgICBfcmVzZXRJbnNlcnRpb25Nb2RlRm9yU2VsZWN0KHNlbGVjdElkeCkge1xuICAgICAgICBpZiAoc2VsZWN0SWR4ID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdElkeCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0biA9IHRoaXMub3BlbkVsZW1lbnRzLnRhZ0lEc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAodG4gPT09IGh0bWxfanNfMS5UQUdfSUQuVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fU0VMRUNUX0lOX1RBQkxFO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fU0VMRUNUO1xuICAgIH1cbiAgICAvL0Zvc3RlciBwYXJlbnRpbmdcbiAgICBfaXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nKHRuKSB7XG4gICAgICAgIHJldHVybiBUQUJMRV9TVFJVQ1RVUkVfVEFHUy5oYXModG4pO1xuICAgIH1cbiAgICBfc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgJiYgdGhpcy5faXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nKHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCk7XG4gICAgfVxuICAgIF9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IG9wZW5FbGVtZW50ID0gdGhpcy5vcGVuRWxlbWVudHMuaXRlbXNbaV07XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMub3BlbkVsZW1lbnRzLnRhZ0lEc1tpXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URU1QTEFURToge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkob3BlbkVsZW1lbnQpID09PSBodG1sX2pzXzEuTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFyZW50OiB0aGlzLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChvcGVuRWxlbWVudCksIGJlZm9yZUVsZW1lbnQ6IG51bGwgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRBQkxFOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0UGFyZW50Tm9kZShvcGVuRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhcmVudCwgYmVmb3JlRWxlbWVudDogb3BlbkVsZW1lbnQgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBwYXJlbnQ6IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zW2kgLSAxXSwgYmVmb3JlRWxlbWVudDogbnVsbCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBwYXJlbnQ6IHRoaXMub3BlbkVsZW1lbnRzLml0ZW1zWzBdLCBiZWZvcmVFbGVtZW50OiBudWxsIH07XG4gICAgfVxuICAgIF9mb3N0ZXJQYXJlbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKTtcbiAgICAgICAgaWYgKGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0QmVmb3JlKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCwgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9TcGVjaWFsIGVsZW1lbnRzXG4gICAgX2lzU3BlY2lhbEVsZW1lbnQoZWxlbWVudCwgaWQpIHtcbiAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGh0bWxfanNfMS5TUEVDSUFMX0VMRU1FTlRTW25zXS5oYXMoaWQpO1xuICAgIH1cbiAgICBvbkNoYXJhY3Rlcih0b2tlbikge1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSkge1xuICAgICAgICAgICAgY2hhcmFjdGVySW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTklUSUFMOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkluaXRpYWxNb2RlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDoge1xuICAgICAgICAgICAgICAgIHRva2VuQmVmb3JlSHRtbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkJlZm9yZUhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSGVhZE5vU2NyaXB0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DRUxMOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgY2hhcmFjdGVySW5Cb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5URVhUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1RfSU5fVEFCTEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1JPVzoge1xuICAgICAgICAgICAgICAgIGNoYXJhY3RlckluVGFibGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX1RFWFQ6IHtcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkNvbHVtbkdyb3VwKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgb25OdWxsQ2hhcmFjdGVyKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRva2VuaXplci5pbkZvcmVpZ25Ob2RlKSB7XG4gICAgICAgICAgICBudWxsQ2hhcmFjdGVySW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTklUSUFMOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkluaXRpYWxNb2RlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDoge1xuICAgICAgICAgICAgICAgIHRva2VuQmVmb3JlSHRtbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkJlZm9yZUhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSGVhZE5vU2NyaXB0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLlRFWFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1JPVzoge1xuICAgICAgICAgICAgICAgIGNoYXJhY3RlckluVGFibGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5Db2x1bW5Hcm91cCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckFmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uQ29tbWVudCh0b2tlbikge1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Tm90SW5IVE1MKSB7XG4gICAgICAgICAgICBhcHBlbmRDb21tZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEU6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9ST1c6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0VMTDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1Q6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUX0lOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0ZSQU1FU0VUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgYXBwZW5kQ29tbWVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZVRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBhcHBlbmRDb21tZW50VG9Sb290SHRtbEVsZW1lbnQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBhcHBlbmRDb21tZW50VG9Eb2N1bWVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uRG9jdHlwZSh0b2tlbikge1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6IHtcbiAgICAgICAgICAgICAgICBkb2N0eXBlSW5Jbml0aWFsTW9kZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKHRva2VuLCBlcnJvcl9jb2Rlc19qc18xLkVSUi5taXNwbGFjZWREb2N0eXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9URVhUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uU3RhcnRUYWcodG9rZW4pIHtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jdXJyZW50VG9rZW4gPSB0b2tlbjtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTtcbiAgICAgICAgaWYgKHRva2VuLnNlbGZDbG9zaW5nICYmICF0b2tlbi5hY2tTZWxmQ2xvc2luZykge1xuICAgICAgICAgICAgdGhpcy5fZXJyKHRva2VuLCBlcnJvcl9jb2Rlc19qc18xLkVSUi5ub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyBhIGdpdmVuIHN0YXJ0IHRhZy5cbiAgICAgKlxuICAgICAqIGBvblN0YXJ0VGFnYCBjaGVja3MgaWYgYSBzZWxmLWNsb3NpbmcgdGFnIHdhcyByZWNvZ25pemVkLiBXaGVuIGEgdG9rZW5cbiAgICAgKiBpcyBtb3ZlZCBpbmJldHdlZW4gbXVsdGlwbGUgaW5zZXJ0aW9uIG1vZGVzLCB0aGlzIGNoZWNrIGZvciBzZWxmLWNsb3NpbmdcbiAgICAgKiBjb3VsZCBsZWFkIHRvIGZhbHNlIHBvc2l0aXZlcy4gVG8gYXZvaWQgdGhpcywgYF9wcm9jZXNzU3RhcnRUYWdgIGlzIHVzZWRcbiAgICAgKiBmb3IgbmVzdGVkIGNhbGxzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRva2VuIFRoZSB0b2tlbiB0byBwcm9jZXNzLlxuICAgICAqL1xuICAgIF9wcm9jZXNzU3RhcnRUYWcodG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkUHJvY2Vzc1N0YXJ0VGFnVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSkge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfc3RhcnRUYWdPdXRzaWRlRm9yZWlnbkNvbnRlbnQodG9rZW4pIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTklUSUFMOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkluaXRpYWxNb2RlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnQmVmb3JlSHRtbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0JlZm9yZUhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luSGVhZE5vU2NyaXB0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdBZnRlckhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEU6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luVGFibGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX1RFWFQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGVUZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkNhcHRpb24odGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5Db2x1bW5Hcm91cCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWToge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZUJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1JPVzoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5Sb3codGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luQ2VsbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblNlbGVjdCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUX0lOX1RBQkxFOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblNlbGVjdEluVGFibGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblRlbXBsYXRlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdBZnRlckJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkZyYW1lc2V0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnQWZ0ZXJGcmFtZXNldCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnQWZ0ZXJBZnRlckJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdBZnRlckFmdGVyRnJhbWVzZXQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkVuZFRhZyh0b2tlbikge1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Tm90SW5IVE1MKSB7XG4gICAgICAgICAgICBlbmRUYWdJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VuZFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX2VuZFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSW5pdGlhbE1vZGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnQmVmb3JlSHRtbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdCZWZvcmVIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5IZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luSGVhZE5vU2NyaXB0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnQWZ0ZXJIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5Cb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5URVhUOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luVGFibGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX1RFWFQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGVUZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5DYXB0aW9uKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkNvbHVtbkdyb3VwKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UYWJsZUJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1JPVzoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luUm93KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DRUxMOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5DZWxsKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1Q6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblNlbGVjdCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUX0lOX1RBQkxFOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5TZWxlY3RJblRhYmxlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9URU1QTEFURToge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luVGVtcGxhdGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdBZnRlckJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5GcmFtZXNldCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdBZnRlckZyYW1lc2V0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckFmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uRW9mKHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5Jbml0aWFsTW9kZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkJlZm9yZUh0bWwodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkhlYWROb1NjcmlwdCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT046XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIGVvZkluQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuVEVYVDoge1xuICAgICAgICAgICAgICAgIGVvZkluVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZVRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgZW9mSW5UZW1wbGF0ZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgc3RvcFBhcnNpbmcodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbldoaXRlc3BhY2VDaGFyYWN0ZXIodG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMuc2tpcE5leHROZXdMaW5lKSB7XG4gICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRva2VuLmNoYXJzLmNoYXJDb2RlQXQoMCkgPT09IHVuaWNvZGUuQ09ERV9QT0lOVFMuTElORV9GRUVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLmNoYXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRva2VuLmNoYXJzID0gdG9rZW4uY2hhcnMuc3Vic3RyKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRva2VuaXplci5pbkZvcmVpZ25Ob2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5URVhUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1Q6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUX0lOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0ZSQU1FU0VUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEU6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9ST1c6IHtcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJblRhYmxlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9URVhUOiB7XG4gICAgICAgICAgICAgICAgd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLlBhcnNlciA9IFBhcnNlcjtcbi8vQWRvcHRpb24gYWdlbmN5IGFsZ29yaXRobVxuLy8oc2VlOiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1sI2Fkb3B0aW9uQWdlbmN5KVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vU3RlcHMgNS04IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeShwLCB0b2tlbikge1xuICAgIGxldCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKHRva2VuLnRhZ05hbWUpO1xuICAgIGlmIChmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgICAgIGlmICghcC5vcGVuRWxlbWVudHMuY29udGFpbnMoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KSkge1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucmVtb3ZlRW50cnkoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG4gICAgICAgICAgICBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghcC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0b2tlbi50YWdJRCkpIHtcbiAgICAgICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG59XG4vL1N0ZXBzIDkgYW5kIDEwIG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhT2J0YWluRnVydGhlc3RCbG9jayhwLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgbGV0IGZ1cnRoZXN0QmxvY2sgPSBudWxsO1xuICAgIGxldCBpZHggPSBwLm9wZW5FbGVtZW50cy5zdGFja1RvcDtcbiAgICBmb3IgKDsgaWR4ID49IDA7IGlkeC0tKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpZHhdO1xuICAgICAgICBpZiAoZWxlbWVudCA9PT0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAocC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50LCBwLm9wZW5FbGVtZW50cy50YWdJRHNbaWR4XSkpIHtcbiAgICAgICAgICAgIGZ1cnRoZXN0QmxvY2sgPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICghZnVydGhlc3RCbG9jaykge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5zaG9ydGVuVG9MZW5ndGgoaWR4IDwgMCA/IDAgOiBpZHgpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1cnRoZXN0QmxvY2s7XG59XG4vL1N0ZXAgMTMgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFJbm5lckxvb3AocCwgZnVydGhlc3RCbG9jaywgZm9ybWF0dGluZ0VsZW1lbnQpIHtcbiAgICBsZXQgbGFzdEVsZW1lbnQgPSBmdXJ0aGVzdEJsb2NrO1xuICAgIGxldCBuZXh0RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZ1cnRoZXN0QmxvY2spO1xuICAgIGZvciAobGV0IGkgPSAwLCBlbGVtZW50ID0gbmV4dEVsZW1lbnQ7IGVsZW1lbnQgIT09IGZvcm1hdHRpbmdFbGVtZW50OyBpKyssIGVsZW1lbnQgPSBuZXh0RWxlbWVudCkge1xuICAgICAgICAvL05PVEU6IHN0b3JlIHRoZSBuZXh0IGVsZW1lbnQgZm9yIHRoZSBuZXh0IGxvb3AgaXRlcmF0aW9uIChpdCBtYXkgYmUgZGVsZXRlZCBmcm9tIHRoZSBzdGFjayBieSBzdGVwIDkuNSlcbiAgICAgICAgbmV4dEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5nZXRDb21tb25BbmNlc3RvcihlbGVtZW50KTtcbiAgICAgICAgY29uc3QgZWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb3VudGVyT3ZlcmZsb3cgPSBlbGVtZW50RW50cnkgJiYgaSA+PSBBQV9JTk5FUl9MT09QX0lURVI7XG4gICAgICAgIGNvbnN0IHNob3VsZFJlbW92ZUZyb21PcGVuRWxlbWVudHMgPSAhZWxlbWVudEVudHJ5IHx8IGNvdW50ZXJPdmVyZmxvdztcbiAgICAgICAgaWYgKHNob3VsZFJlbW92ZUZyb21PcGVuRWxlbWVudHMpIHtcbiAgICAgICAgICAgIGlmIChjb3VudGVyT3ZlcmZsb3cpIHtcbiAgICAgICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShlbGVtZW50RW50cnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZWxlbWVudCA9IGFhUmVjcmVhdGVFbGVtZW50RnJvbUVudHJ5KHAsIGVsZW1lbnRFbnRyeSk7XG4gICAgICAgICAgICBpZiAobGFzdEVsZW1lbnQgPT09IGZ1cnRoZXN0QmxvY2spIHtcbiAgICAgICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5ib29rbWFyayA9IGVsZW1lbnRFbnRyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShsYXN0RWxlbWVudCk7XG4gICAgICAgICAgICBwLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGVsZW1lbnQsIGxhc3RFbGVtZW50KTtcbiAgICAgICAgICAgIGxhc3RFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbGFzdEVsZW1lbnQ7XG59XG4vL1N0ZXAgMTMuNyBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlY3JlYXRlRWxlbWVudEZyb21FbnRyeShwLCBlbGVtZW50RW50cnkpIHtcbiAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnRFbnRyeS5lbGVtZW50KTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KGVsZW1lbnRFbnRyeS50b2tlbi50YWdOYW1lLCBucywgZWxlbWVudEVudHJ5LnRva2VuLmF0dHJzKTtcbiAgICBwLm9wZW5FbGVtZW50cy5yZXBsYWNlKGVsZW1lbnRFbnRyeS5lbGVtZW50LCBuZXdFbGVtZW50KTtcbiAgICBlbGVtZW50RW50cnkuZWxlbWVudCA9IG5ld0VsZW1lbnQ7XG4gICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG59XG4vL1N0ZXAgMTQgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFJbnNlcnRMYXN0Tm9kZUluQ29tbW9uQW5jZXN0b3IocCwgY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KSB7XG4gICAgY29uc3QgdG4gPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY29tbW9uQW5jZXN0b3IpO1xuICAgIGNvbnN0IHRpZCA9ICgwLCBodG1sX2pzXzEuZ2V0VGFnSUQpKHRuKTtcbiAgICBpZiAocC5faXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nKHRpZCkpIHtcbiAgICAgICAgcC5fZm9zdGVyUGFyZW50RWxlbWVudChsYXN0RWxlbWVudCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGNvbW1vbkFuY2VzdG9yKTtcbiAgICAgICAgaWYgKHRpZCA9PT0gaHRtbF9qc18xLlRBR19JRC5URU1QTEFURSAmJiBucyA9PT0gaHRtbF9qc18xLk5TLkhUTUwpIHtcbiAgICAgICAgICAgIGNvbW1vbkFuY2VzdG9yID0gcC50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoY29tbW9uQW5jZXN0b3IsIGxhc3RFbGVtZW50KTtcbiAgICB9XG59XG4vL1N0ZXBzIDE1LTE5IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhUmVwbGFjZUZvcm1hdHRpbmdFbGVtZW50KHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICBjb25zdCBucyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgY29uc3QgeyB0b2tlbiB9ID0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gcC50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5zLCB0b2tlbi5hdHRycyk7XG4gICAgcC5fYWRvcHROb2RlcyhmdXJ0aGVzdEJsb2NrLCBuZXdFbGVtZW50KTtcbiAgICBwLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGZ1cnRoZXN0QmxvY2ssIG5ld0VsZW1lbnQpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydEVsZW1lbnRBZnRlckJvb2ttYXJrKG5ld0VsZW1lbnQsIHRva2VuKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KTtcbiAgICBwLm9wZW5FbGVtZW50cy5pbnNlcnRBZnRlcihmdXJ0aGVzdEJsb2NrLCBuZXdFbGVtZW50LCB0b2tlbi50YWdJRCk7XG59XG4vL0FsZ29yaXRobSBlbnRyeSBwb2ludFxuZnVuY3Rpb24gY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBBQV9PVVRFUl9MT09QX0lURVI7IGkrKykge1xuICAgICAgICBjb25zdCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5ID0gYWFPYnRhaW5Gb3JtYXR0aW5nRWxlbWVudEVudHJ5KHAsIHRva2VuKTtcbiAgICAgICAgaWYgKCFmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmdXJ0aGVzdEJsb2NrID0gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgICAgICBpZiAoIWZ1cnRoZXN0QmxvY2spIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmJvb2ttYXJrID0gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcbiAgICAgICAgY29uc3QgbGFzdEVsZW1lbnQgPSBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21tb25BbmNlc3RvciA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShsYXN0RWxlbWVudCk7XG4gICAgICAgIGlmIChjb21tb25BbmNlc3RvcilcbiAgICAgICAgICAgIGFhSW5zZXJ0TGFzdE5vZGVJbkNvbW1vbkFuY2VzdG9yKHAsIGNvbW1vbkFuY2VzdG9yLCBsYXN0RWxlbWVudCk7XG4gICAgICAgIGFhUmVwbGFjZUZvcm1hdHRpbmdFbGVtZW50KHAsIGZ1cnRoZXN0QmxvY2ssIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgIH1cbn1cbi8vR2VuZXJpYyB0b2tlbiBoYW5kbGVyc1xuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnQocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcC5vcGVuRWxlbWVudHMuY3VycmVudFRtcGxDb250ZW50T3JOb2RlKTtcbn1cbmZ1bmN0aW9uIGFwcGVuZENvbW1lbnRUb1Jvb3RIdG1sRWxlbWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLm9wZW5FbGVtZW50cy5pdGVtc1swXSk7XG59XG5mdW5jdGlvbiBhcHBlbmRDb21tZW50VG9Eb2N1bWVudChwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZENvbW1lbnROb2RlKHRva2VuLCBwLmRvY3VtZW50KTtcbn1cbmZ1bmN0aW9uIHN0b3BQYXJzaW5nKHAsIHRva2VuKSB7XG4gICAgcC5zdG9wcGVkID0gdHJ1ZTtcbiAgICAvLyBOT1RFOiBTZXQgZW5kIGxvY2F0aW9ucyBmb3IgZWxlbWVudHMgdGhhdCByZW1haW4gb24gdGhlIG9wZW4gZWxlbWVudCBzdGFjay5cbiAgICBpZiAodG9rZW4ubG9jYXRpb24pIHtcbiAgICAgICAgLy8gTk9URTogSWYgd2UgYXJlIG5vdCBpbiBhIGZyYWdtZW50LCBgaHRtbGAgYW5kIGBib2R5YCB3aWxsIHN0YXkgb24gdGhlIHN0YWNrLlxuICAgICAgICAvLyBUaGlzIGlzIGEgcHJvYmxlbSwgYXMgd2UgbWlnaHQgb3ZlcndyaXRlIHRoZWlyIGVuZCBwb3NpdGlvbiBoZXJlLlxuICAgICAgICBjb25zdCB0YXJnZXQgPSBwLmZyYWdtZW50Q29udGV4dCA/IDAgOiAyO1xuICAgICAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gdGFyZ2V0OyBpLS0pIHtcbiAgICAgICAgICAgIHAuX3NldEVuZExvY2F0aW9uKHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSGFuZGxlIGBodG1sYCBhbmQgYGJvZHlgXG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQgJiYgcC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgaHRtbEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1swXTtcbiAgICAgICAgICAgIGNvbnN0IGh0bWxMb2NhdGlvbiA9IHAudHJlZUFkYXB0ZXIuZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihodG1sRWxlbWVudCk7XG4gICAgICAgICAgICBpZiAoaHRtbExvY2F0aW9uICYmICFodG1sTG9jYXRpb24uZW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgcC5fc2V0RW5kTG9jYXRpb24oaHRtbEVsZW1lbnQsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPj0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zWzFdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib2R5TG9jYXRpb24gPSBwLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oYm9keUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYm9keUxvY2F0aW9uICYmICFib2R5TG9jYXRpb24uZW5kVGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLl9zZXRFbmRMb2NhdGlvbihib2R5RWxlbWVudCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlIFwiaW5pdGlhbFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gZG9jdHlwZUluSW5pdGlhbE1vZGUocCwgdG9rZW4pIHtcbiAgICBwLl9zZXREb2N1bWVudFR5cGUodG9rZW4pO1xuICAgIGNvbnN0IG1vZGUgPSB0b2tlbi5mb3JjZVF1aXJrcyA/IGh0bWxfanNfMS5ET0NVTUVOVF9NT0RFLlFVSVJLUyA6IGRvY3R5cGUuZ2V0RG9jdW1lbnRNb2RlKHRva2VuKTtcbiAgICBpZiAoIWRvY3R5cGUuaXNDb25mb3JtaW5nKHRva2VuKSkge1xuICAgICAgICBwLl9lcnIodG9rZW4sIGVycm9yX2NvZGVzX2pzXzEuRVJSLm5vbkNvbmZvcm1pbmdEb2N0eXBlKTtcbiAgICB9XG4gICAgcC50cmVlQWRhcHRlci5zZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCwgbW9kZSk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDtcbn1cbmZ1bmN0aW9uIHRva2VuSW5Jbml0aWFsTW9kZShwLCB0b2tlbikge1xuICAgIHAuX2Vycih0b2tlbiwgZXJyb3JfY29kZXNfanNfMS5FUlIubWlzc2luZ0RvY3R5cGUsIHRydWUpO1xuICAgIHAudHJlZUFkYXB0ZXIuc2V0RG9jdW1lbnRNb2RlKHAuZG9jdW1lbnQsIGh0bWxfanNfMS5ET0NVTUVOVF9NT0RFLlFVSVJLUyk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuLy8gVGhlIFwiYmVmb3JlIGh0bWxcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gaHRtbF9qc18xLlRBR19JRC5IVE1MKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHRuID09PSBodG1sX2pzXzEuVEFHX0lELkhUTUwgfHwgdG4gPT09IGh0bWxfanNfMS5UQUdfSUQuSEVBRCB8fCB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5CT0RZIHx8IHRuID09PSBodG1sX2pzXzEuVEFHX0lELkJSKSB7XG4gICAgICAgIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZVJvb3RFbGVtZW50KCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuLy8gVGhlIFwiYmVmb3JlIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IRUFEOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgICAgICAgICBwLmhlYWRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fSEVBRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdCZWZvcmVIZWFkKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAodG4gPT09IGh0bWxfanNfMS5UQUdfSUQuSEVBRCB8fCB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5CT0RZIHx8IHRuID09PSBodG1sX2pzXzEuVEFHX0lELkhUTUwgfHwgdG4gPT09IGh0bWxfanNfMS5UQUdfSUQuQlIpIHtcbiAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHAuX2Vycih0b2tlbiwgZXJyb3JfY29kZXNfanNfMS5FUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KGh0bWxfanNfMS5UQUdfTkFNRVMuSEVBRCwgaHRtbF9qc18xLlRBR19JRC5IRUFEKTtcbiAgICBwLmhlYWRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cbi8vIFRoZSBcImluIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJBU0U6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CQVNFRk9OVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJHU09VTkQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5MSU5LOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTUVUQToge1xuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRJVExFOiB7XG4gICAgICAgICAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBpbmRleF9qc18xLlRva2VuaXplck1vZGUuUkNEQVRBKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT1NDUklQVDoge1xuICAgICAgICAgICAgaWYgKHAub3B0aW9ucy5zY3JpcHRpbmdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgaW5kZXhfanNfMS5Ub2tlbml6ZXJNb2RlLlJBV1RFWFQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTk9GUkFNRVM6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5TVFlMRToge1xuICAgICAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgaW5kZXhfanNfMS5Ub2tlbml6ZXJNb2RlLlJBV1RFWFQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNDUklQVDoge1xuICAgICAgICAgICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgaW5kZXhfanNfMS5Ub2tlbml6ZXJNb2RlLlNDUklQVF9EQVRBKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URU1QTEFURToge1xuICAgICAgICAgICAgcC5faW5zZXJ0VGVtcGxhdGUodG9rZW4pO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2sudW5zaGlmdChJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IRUFEOiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3BsYWNlZFN0YXJ0VGFnRm9ySGVhZEVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5JbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSEVBRDoge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQk9EWTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJSOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSFRNTDoge1xuICAgICAgICAgICAgdG9rZW5JbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIGVycm9yX2NvZGVzX2pzXzEuRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHRlbXBsYXRlRW5kVGFnSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDApIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkoKTtcbiAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCAhPT0gaHRtbF9qc18xLlRBR19JRC5URU1QTEFURSkge1xuICAgICAgICAgICAgcC5fZXJyKHRva2VuLCBlcnJvcl9jb2Rlc19qc18xLkVSUi5jbG9zaW5nT2ZFbGVtZW50V2l0aE9wZW5DaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoaHRtbF9qc18xLlRBR19JRC5URU1QTEFURSk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFjay5zaGlmdCgpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHAuX2Vycih0b2tlbiwgZXJyb3JfY29kZXNfanNfMS5FUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuSW5IZWFkKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG4vLyBUaGUgXCJpbiBoZWFkIG5vIHNjcmlwdFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CQVNFRk9OVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJHU09VTkQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IRUFEOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTElOSzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk1FVEE6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT0ZSQU1FUzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNUWUxFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgZXJyb3JfY29kZXNfanNfMS5FUlIubmVzdGVkTm9zY3JpcHRJbkhlYWQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5JbkhlYWROb1NjcmlwdChwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJbkhlYWROb1NjcmlwdChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk5PU0NSSVBUOiB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fSEVBRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CUjoge1xuICAgICAgICAgICAgdG9rZW5JbkhlYWROb1NjcmlwdChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIGVycm9yX2NvZGVzX2pzXzEuRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pIHtcbiAgICBjb25zdCBlcnJDb2RlID0gdG9rZW4udHlwZSA9PT0gdG9rZW5fanNfMS5Ub2tlblR5cGUuRU9GID8gZXJyb3JfY29kZXNfanNfMS5FUlIub3BlbkVsZW1lbnRzTGVmdEFmdGVyRW9mIDogZXJyb3JfY29kZXNfanNfMS5FUlIuZGlzYWxsb3dlZENvbnRlbnRJbk5vc2NyaXB0SW5IZWFkO1xuICAgIHAuX2Vycih0b2tlbiwgZXJyQ29kZSk7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG4vLyBUaGUgXCJhZnRlciBoZWFkXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVySGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CT0RZOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5GUkFNRVNFVDoge1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CQVNFOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CR1NPVU5EOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTElOSzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk1FVEE6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT0ZSQU1FUzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNDUklQVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNUWUxFOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEVNUExBVEU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5USVRMRToge1xuICAgICAgICAgICAgcC5fZXJyKHRva2VuLCBlcnJvcl9jb2Rlc19qc18xLkVSUi5hYmFuZG9uZWRIZWFkRWxlbWVudENoaWxkKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnB1c2gocC5oZWFkRWxlbWVudCwgaHRtbF9qc18xLlRBR19JRC5IRUFEKTtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShwLmhlYWRFbGVtZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IRUFEOiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIGVycm9yX2NvZGVzX2pzXzEuRVJSLm1pc3BsYWNlZFN0YXJ0VGFnRm9ySGVhZEVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQk9EWTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhUTUw6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CUjoge1xuICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIGVycm9yX2NvZGVzX2pzXzEuRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoaHRtbF9qc18xLlRBR19OQU1FUy5CT0RZLCBodG1sX2pzXzEuVEFHX0lELkJPRFkpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICBtb2RlSW5Cb2R5KHAsIHRva2VuKTtcbn1cbi8vIFRoZSBcImluIGJvZHlcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIG1vZGVJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5DSEFSQUNURVI6IHtcbiAgICAgICAgICAgIGNoYXJhY3RlckluQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIHRva2VuX2pzXzEuVG9rZW5UeXBlLldISVRFU1BBQ0VfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgdG9rZW5fanNfMS5Ub2tlblR5cGUuQ09NTUVOVDoge1xuICAgICAgICAgICAgYXBwZW5kQ29tbWVudChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIHRva2VuX2pzXzEuVG9rZW5UeXBlLlNUQVJUX1RBRzoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5FTkRfVEFHOiB7XG4gICAgICAgICAgICBlbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5FT0Y6IHtcbiAgICAgICAgICAgIGVvZkluQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgfVxufVxuZnVuY3Rpb24gd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gaHRtbFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMCkge1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmFkb3B0QXR0cmlidXRlcyhwLm9wZW5FbGVtZW50cy5pdGVtc1swXSwgdG9rZW4uYXR0cnMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGJvZHlTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMudHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKTtcbiAgICBpZiAoYm9keUVsZW1lbnQgJiYgcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID09PSAwKSB7XG4gICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmFkb3B0QXR0cmlidXRlcyhib2R5RWxlbWVudCwgdG9rZW4uYXR0cnMpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGZyYW1lc2V0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLnRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCk7XG4gICAgaWYgKHAuZnJhbWVzZXRPayAmJiBib2R5RWxlbWVudCkge1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUoYm9keUVsZW1lbnQpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BBbGxVcFRvSHRtbEVsZW1lbnQoKTtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0ZSQU1FU0VUO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKGh0bWxfanNfMS5UQUdfSUQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoaHRtbF9qc18xLlRBR19JRC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIGlmICgoMCwgaHRtbF9qc18xLmlzTnVtYmVyZWRIZWFkZXIpKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoaHRtbF9qc18xLlRBR19JRC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICAvL05PVEU6IElmIHRoZSBuZXh0IHRva2VuIGlzIGEgVSswMDBBIExJTkUgRkVFRCAoTEYpIGNoYXJhY3RlciB0b2tlbiwgdGhlbiBpZ25vcmUgdGhhdCB0b2tlbiBhbmQgbW92ZVxuICAgIC8vb24gdG8gdGhlIG5leHQgb25lLiAoTmV3bGluZXMgYXQgdGhlIHN0YXJ0IG9mIHByZSBibG9ja3MgYXJlIGlnbm9yZWQgYXMgYW4gYXV0aG9yaW5nIGNvbnZlbmllbmNlLilcbiAgICBwLnNraXBOZXh0TmV3TGluZSA9IHRydWU7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5mdW5jdGlvbiBmb3JtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCBpblRlbXBsYXRlID0gcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMDtcbiAgICBpZiAoIXAuZm9ybUVsZW1lbnQgfHwgaW5UZW1wbGF0ZSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZShodG1sX2pzXzEuVEFHX0lELlApKSB7XG4gICAgICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICBpZiAoIWluVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHAuZm9ybUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gbGlzdEl0ZW1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICBjb25zdCBlbGVtZW50SWQgPSBwLm9wZW5FbGVtZW50cy50YWdJRHNbaV07XG4gICAgICAgIGlmICgodG4gPT09IGh0bWxfanNfMS5UQUdfSUQuTEkgJiYgZWxlbWVudElkID09PSBodG1sX2pzXzEuVEFHX0lELkxJKSB8fFxuICAgICAgICAgICAgKCh0biA9PT0gaHRtbF9qc18xLlRBR19JRC5ERCB8fCB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5EVCkgJiYgKGVsZW1lbnRJZCA9PT0gaHRtbF9qc18xLlRBR19JRC5ERCB8fCBlbGVtZW50SWQgPT09IGh0bWxfanNfMS5UQUdfSUQuRFQpKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oZWxlbWVudElkKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChlbGVtZW50SWQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRJZCAhPT0gaHRtbF9qc18xLlRBR19JRC5BRERSRVNTICYmXG4gICAgICAgICAgICBlbGVtZW50SWQgIT09IGh0bWxfanNfMS5UQUdfSUQuRElWICYmXG4gICAgICAgICAgICBlbGVtZW50SWQgIT09IGh0bWxfanNfMS5UQUdfSUQuUCAmJlxuICAgICAgICAgICAgcC5faXNTcGVjaWFsRWxlbWVudChwLm9wZW5FbGVtZW50cy5pdGVtc1tpXSwgZWxlbWVudElkKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoaHRtbF9qc18xLlRBR19JRC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIHBsYWludGV4dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoaHRtbF9qc18xLlRBR19JRC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IGluZGV4X2pzXzEuVG9rZW5pemVyTW9kZS5QTEFJTlRFWFQ7XG59XG5mdW5jdGlvbiBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKGh0bWxfanNfMS5UQUdfSUQuQlVUVE9OKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChodG1sX2pzXzEuVEFHX0lELkJVVFRPTik7XG4gICAgfVxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudEVudHJ5ID0gcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZ2V0RWxlbWVudEVudHJ5SW5TY29wZVdpdGhUYWdOYW1lKGh0bWxfanNfMS5UQUdfTkFNRVMuQSk7XG4gICAgaWYgKGFjdGl2ZUVsZW1lbnRFbnRyeSkge1xuICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoYWN0aXZlRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShhY3RpdmVFbGVtZW50RW50cnkpO1xuICAgIH1cbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XG59XG5mdW5jdGlvbiBiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5wdXNoRWxlbWVudChwLm9wZW5FbGVtZW50cy5jdXJyZW50LCB0b2tlbik7XG59XG5mdW5jdGlvbiBub2JyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKGh0bWxfanNfMS5UQUdfSUQuTk9CUikpIHtcbiAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnB1c2hFbGVtZW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQsIHRva2VuKTtcbn1cbmZ1bmN0aW9uIGFwcGxldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5mdW5jdGlvbiB0YWJsZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAudHJlZUFkYXB0ZXIuZ2V0RG9jdW1lbnRNb2RlKHAuZG9jdW1lbnQpICE9PSBodG1sX2pzXzEuRE9DVU1FTlRfTU9ERS5RVUlSS1MgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZShodG1sX2pzXzEuVEFHX0lELlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG59XG5mdW5jdGlvbiBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5mdW5jdGlvbiBpc0hpZGRlbklucHV0KHRva2VuKSB7XG4gICAgY29uc3QgaW5wdXRUeXBlID0gKDAsIHRva2VuX2pzXzEuZ2V0VG9rZW5BdHRyKSh0b2tlbiwgaHRtbF9qc18xLkFUVFJTLlRZUEUpO1xuICAgIHJldHVybiBpbnB1dFR5cGUgIT0gbnVsbCAmJiBpbnB1dFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gSElEREVOX0lOUFVUX1RZUEU7XG59XG5mdW5jdGlvbiBpbnB1dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgaWYgKCFpc0hpZGRlbklucHV0KHRva2VuKSkge1xuICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICB9XG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gcGFyYW1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5mdW5jdGlvbiBoclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoaHRtbF9qc18xLlRBR19JRC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5mdW5jdGlvbiBpbWFnZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgdG9rZW4udGFnTmFtZSA9IGh0bWxfanNfMS5UQUdfTkFNRVMuSU1HO1xuICAgIHRva2VuLnRhZ0lEID0gaHRtbF9qc18xLlRBR19JRC5JTUc7XG4gICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbn1cbmZ1bmN0aW9uIHRleHRhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiB0ZXh0YXJlYSBlbGVtZW50cyBhcmUgaWdub3JlZCBhcyBhbiBhdXRob3JpbmcgY29udmVuaWVuY2UuKVxuICAgIHAuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IGluZGV4X2pzXzEuVG9rZW5pemVyTW9kZS5SQ0RBVEE7XG4gICAgcC5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBwLmluc2VydGlvbk1vZGU7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5URVhUO1xufVxuZnVuY3Rpb24geG1wU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZShodG1sX2pzXzEuVEFHX0lELlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBpbmRleF9qc18xLlRva2VuaXplck1vZGUuUkFXVEVYVCk7XG59XG5mdW5jdGlvbiBpZnJhbWVTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIGluZGV4X2pzXzEuVG9rZW5pemVyTW9kZS5SQVdURVhUKTtcbn1cbi8vTk9URTogaGVyZSB3ZSBhc3N1bWUgdGhhdCB3ZSBhbHdheXMgYWN0IGFzIGFuIHVzZXIgYWdlbnQgd2l0aCBlbmFibGVkIHBsdWdpbnMsIHNvIHdlIHBhcnNlXG4vLzxub2VtYmVkPiBhcyByYXd0ZXh0LlxuZnVuY3Rpb24gbm9lbWJlZFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgaW5kZXhfanNfMS5Ub2tlbml6ZXJNb2RlLlJBV1RFWFQpO1xufVxuZnVuY3Rpb24gc2VsZWN0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBwLmluc2VydGlvbk1vZGUgPVxuICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IEluc2VydGlvbk1vZGUuSU5fVEFCTEUgfHxcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OIHx8XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWSB8fFxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID09PSBJbnNlcnRpb25Nb2RlLklOX1JPVyB8fFxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID09PSBJbnNlcnRpb25Nb2RlLklOX0NFTExcbiAgICAgICAgICAgID8gSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1RfSU5fVEFCTEVcbiAgICAgICAgICAgIDogSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1Q7XG59XG5mdW5jdGlvbiBvcHRncm91cFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gaHRtbF9qc18xLlRBR19JRC5PUFRJT04pIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xufVxuZnVuY3Rpb24gcmJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKGh0bWxfanNfMS5UQUdfSUQuUlVCWSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgIH1cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoaHRtbF9qc18xLlRBR19JRC5SVUJZKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihodG1sX2pzXzEuVEFHX0lELlJUQyk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIG1hdGhTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG4gICAgaWYgKHRva2VuLnNlbGZDbG9zaW5nKSB7XG4gICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5NQVRITUwpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLk1BVEhNTCk7XG4gICAgfVxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLlNWRyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuU1ZHKTtcbiAgICB9XG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gZ2VuZXJpY1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBzdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkk6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5TOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5FTTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRUOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQklHOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQ09ERTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZPTlQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5TTUFMTDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNUUklLRTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNUUk9ORzoge1xuICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5BOiB7XG4gICAgICAgICAgICBhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkgxOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSDI6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IMzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkg0OlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSDU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5INjoge1xuICAgICAgICAgICAgbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuUDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkRMOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuT0w6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5VTDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkRJVjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkRJUjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk5BVjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk1BSU46XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5NRU5VOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQVNJREU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DRU5URVI6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5GSUdVUkU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5GT09URVI6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IRUFERVI6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IR1JPVVA6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5ESUFMT0c6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5ERVRBSUxTOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQUREUkVTUzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkFSVElDTEU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5TRUNUSU9OOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuU1VNTUFSWTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZJRUxEU0VUOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQkxPQ0tRVU9URTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZJR0NBUFRJT046IHtcbiAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTEk6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5ERDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkRUOiB7XG4gICAgICAgICAgICBsaXN0SXRlbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CUjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELklNRzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELldCUjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkFSRUE6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5FTUJFRDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELktFWUdFTjoge1xuICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IUjoge1xuICAgICAgICAgICAgaHJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuUkI6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5SVEM6IHtcbiAgICAgICAgICAgIHJiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlJUOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuUlA6IHtcbiAgICAgICAgICAgIHJ0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlBSRTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkxJU1RJTkc6IHtcbiAgICAgICAgICAgIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5YTVA6IHtcbiAgICAgICAgICAgIHhtcFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5TVkc6IHtcbiAgICAgICAgICAgIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IVE1MOiB7XG4gICAgICAgICAgICBodG1sU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJBU0U6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5MSU5LOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTUVUQTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNUWUxFOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVElUTEU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5TQ1JJUFQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CR1NPVU5EOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URU1QTEFURToge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJPRFk6IHtcbiAgICAgICAgICAgIGJvZHlTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuRk9STToge1xuICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT0JSOiB7XG4gICAgICAgICAgICBub2JyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk1BVEg6IHtcbiAgICAgICAgICAgIG1hdGhTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEFCTEU6IHtcbiAgICAgICAgICAgIHRhYmxlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELklOUFVUOiB7XG4gICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5QQVJBTTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRSQUNLOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuU09VUkNFOiB7XG4gICAgICAgICAgICBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5JTUFHRToge1xuICAgICAgICAgICAgaW1hZ2VTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQlVUVE9OOiB7XG4gICAgICAgICAgICBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQVBQTEVUOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuT0JKRUNUOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTUFSUVVFRToge1xuICAgICAgICAgICAgYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELklGUkFNRToge1xuICAgICAgICAgICAgaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNFTEVDVDoge1xuICAgICAgICAgICAgc2VsZWN0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk9QVElPTjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk9QVEdST1VQOiB7XG4gICAgICAgICAgICBvcHRncm91cFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT0VNQkVEOiB7XG4gICAgICAgICAgICBub2VtYmVkU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZSQU1FU0VUOiB7XG4gICAgICAgICAgICBmcmFtZXNldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URVhUQVJFQToge1xuICAgICAgICAgICAgdGV4dGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIG5vZW1iZWRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlBMQUlOVEVYVDoge1xuICAgICAgICAgICAgcGxhaW50ZXh0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UUjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhFQUQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5GUkFNRTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRCT0RZOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEZPT1Q6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5USEVBRDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNBUFRJT046XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0xHUk9VUDoge1xuICAgICAgICAgICAgLy8gSWdub3JlIHRva2VuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBnZW5lcmljU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gYm9keUVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKGh0bWxfanNfMS5UQUdfSUQuQk9EWSkpIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZO1xuICAgICAgICAvL05PVEU6IDxib2R5PiBpcyBuZXZlciBwb3BwZWQgZnJvbSB0aGUgc3RhY2ssIHNvIHdlIG5lZWQgdG8gdXBkYXRlZFxuICAgICAgICAvL3RoZSBlbmQgbG9jYXRpb24gZXhwbGljaXRseS5cbiAgICAgICAgaWYgKHAub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICBjb25zdCBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLnRyeVBlZWtQcm9wZXJseU5lc3RlZEJvZHlFbGVtZW50KCk7XG4gICAgICAgICAgICBpZiAoYm9keUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwLl9zZXRFbmRMb2NhdGlvbihib2R5RWxlbWVudCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKGh0bWxfanNfMS5UQUdfSUQuQk9EWSkpIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZO1xuICAgICAgICBlbmRUYWdBZnRlckJvZHkocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRuKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCh0bik7XG4gICAgfVxufVxuZnVuY3Rpb24gZm9ybUVuZFRhZ0luQm9keShwKSB7XG4gICAgY29uc3QgaW5UZW1wbGF0ZSA9IHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA+IDA7XG4gICAgY29uc3QgeyBmb3JtRWxlbWVudCB9ID0gcDtcbiAgICBpZiAoIWluVGVtcGxhdGUpIHtcbiAgICAgICAgcC5mb3JtRWxlbWVudCA9IG51bGw7XG4gICAgfVxuICAgIGlmICgoZm9ybUVsZW1lbnQgfHwgaW5UZW1wbGF0ZSkgJiYgcC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZShodG1sX2pzXzEuVEFHX0lELkZPUk0pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgaWYgKGluVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChodG1sX2pzXzEuVEFHX0lELkZPUk0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZvcm1FbGVtZW50KSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZm9ybUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gcEVuZFRhZ0luQm9keShwKSB7XG4gICAgaWYgKCFwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKGh0bWxfanNfMS5UQUdfSUQuUCkpIHtcbiAgICAgICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoaHRtbF9qc18xLlRBR19OQU1FUy5QLCBodG1sX2pzXzEuVEFHX0lELlApO1xuICAgIH1cbiAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG59XG5mdW5jdGlvbiBsaUVuZFRhZ0luQm9keShwKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luTGlzdEl0ZW1TY29wZShodG1sX2pzXzEuVEFHX0lELkxJKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihodG1sX2pzXzEuVEFHX0lELkxJKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKGh0bWxfanNfMS5UQUdfSUQuTEkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24odG4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG51bWJlcmVkSGVhZGVyRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gYXBwbGV0RW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGJyRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KGh0bWxfanNfMS5UQUdfTkFNRVMuQlIsIGh0bWxfanNfMS5UQUdfSUQuQlIpO1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnTmFtZTtcbiAgICBjb25zdCB0aWQgPSB0b2tlbi50YWdJRDtcbiAgICBmb3IgKGxldCBpID0gcC5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2ldO1xuICAgICAgICBjb25zdCBlbGVtZW50SWQgPSBwLm9wZW5FbGVtZW50cy50YWdJRHNbaV07XG4gICAgICAgIC8vIENvbXBhcmUgdGhlIHRhZyBuYW1lIGhlcmUsIGFzIHRoZSB0YWcgbWlnaHQgbm90IGJlIGEga25vd24gdGFnIHdpdGggYW4gSUQuXG4gICAgICAgIGlmICh0aWQgPT09IGVsZW1lbnRJZCAmJiAodGlkICE9PSBodG1sX2pzXzEuVEFHX0lELlVOS05PV04gfHwgcC50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpID09PSB0bikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKHRpZCk7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPj0gaSlcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5zaG9ydGVuVG9MZW5ndGgoaSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAocC5faXNTcGVjaWFsRWxlbWVudChlbGVtZW50LCBlbGVtZW50SWQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkE6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5COlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlM6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5VOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuRU06XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJJRzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPREU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5GT05UOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTk9CUjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNNQUxMOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuU1RSSUtFOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuU1RST05HOiB7XG4gICAgICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlA6IHtcbiAgICAgICAgICAgIHBFbmRUYWdJbkJvZHkocCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuREw6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5VTDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk9MOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuRElSOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuRElWOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTkFWOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuUFJFOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTUFJTjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk1FTlU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5BU0lERTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJVVFRPTjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNFTlRFUjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZJR1VSRTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZPT1RFUjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhFQURFUjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhHUk9VUDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkRJQUxPRzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkFERFJFU1M6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5BUlRJQ0xFOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuREVUQUlMUzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNFQ1RJT046XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5TVU1NQVJZOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTElTVElORzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZJRUxEU0VUOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQkxPQ0tRVU9URTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZJR0NBUFRJT046IHtcbiAgICAgICAgICAgIGFkZHJlc3NFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkxJOiB7XG4gICAgICAgICAgICBsaUVuZFRhZ0luQm9keShwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5ERDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkRUOiB7XG4gICAgICAgICAgICBkZEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSDE6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IMjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkgzOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSDQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5INTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkg2OiB7XG4gICAgICAgICAgICBudW1iZXJlZEhlYWRlckVuZFRhZ0luQm9keShwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CUjoge1xuICAgICAgICAgICAgYnJFbmRUYWdJbkJvZHkocCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQk9EWToge1xuICAgICAgICAgICAgYm9keUVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSFRNTDoge1xuICAgICAgICAgICAgaHRtbEVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuRk9STToge1xuICAgICAgICAgICAgZm9ybUVuZFRhZ0luQm9keShwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5BUFBMRVQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5PQkpFQ1Q6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5NQVJRVUVFOiB7XG4gICAgICAgICAgICBhcHBsZXRFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBnZW5lcmljRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVvZkluQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICBlb2ZJblRlbXBsYXRlKHAsIHRva2VuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0b3BQYXJzaW5nKHAsIHRva2VuKTtcbiAgICB9XG59XG4vLyBUaGUgXCJ0ZXh0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBlbmRUYWdJblRleHQocCwgdG9rZW4pIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSBodG1sX2pzXzEuVEFHX0lELlNDUklQVCkge1xuICAgICAgICAoX2EgPSBwLnNjcmlwdEhhbmRsZXIpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHAsIHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpO1xuICAgIH1cbiAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZTtcbn1cbmZ1bmN0aW9uIGVvZkluVGV4dChwLCB0b2tlbikge1xuICAgIHAuX2Vycih0b2tlbiwgZXJyb3JfY29kZXNfanNfMS5FUlIuZW9mSW5FbGVtZW50VGhhdENhbkNvbnRhaW5Pbmx5VGV4dCk7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gcC5vcmlnaW5hbEluc2VydGlvbk1vZGU7XG4gICAgcC5vbkVvZih0b2tlbik7XG59XG4vLyBUaGUgXCJpbiB0YWJsZVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gY2hhcmFjdGVySW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmIChUQUJMRV9TVFJVQ1RVUkVfVEFHUy5oYXMocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkKSkge1xuICAgICAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoID0gMDtcbiAgICAgICAgcC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gZmFsc2U7XG4gICAgICAgIHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gcC5pbnNlcnRpb25Nb2RlO1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX1RFWFQ7XG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICAgICAgY2FzZSB0b2tlbl9qc18xLlRva2VuVHlwZS5DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIHRva2VuX2pzXzEuVG9rZW5UeXBlLldISVRFU1BBQ0VfQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0KHAsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElnbm9yZSBudWxsXG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gY2FwdGlvblN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjtcbn1cbmZ1bmN0aW9uIGNvbGdyb3VwU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA7XG59XG5mdW5jdGlvbiBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KGh0bWxfanNfMS5UQUdfTkFNRVMuQ09MR1JPVVAsIGh0bWxfanNfMS5UQUdfSUQuQ09MR1JPVVApO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQO1xuICAgIHN0YXJ0VGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbik7XG59XG5mdW5jdGlvbiB0Ym9keVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbn1cbmZ1bmN0aW9uIHRkU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRGYWtlRWxlbWVudChodG1sX2pzXzEuVEFHX05BTUVTLlRCT0RZLCBodG1sX2pzXzEuVEFHX0lELlRCT0RZKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgc3RhcnRUYWdJblRhYmxlQm9keShwLCB0b2tlbik7XG59XG5mdW5jdGlvbiB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoaHRtbF9qc18xLlRBR19JRC5UQUJMRSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKGh0bWxfanNfMS5UQUdfSUQuVEFCTEUpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmIChpc0hpZGRlbklucHV0KHRva2VuKSkge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5mdW5jdGlvbiBmb3JtU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgaWYgKCFwLmZvcm1FbGVtZW50ICYmIHAub3BlbkVsZW1lbnRzLnRtcGxDb3VudCA9PT0gMCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgICAgIHAuZm9ybUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICB9XG59XG5mdW5jdGlvbiBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVFI6IHtcbiAgICAgICAgICAgIHRkU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5TVFlMRTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNDUklQVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRFTVBMQVRFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQ09MOiB7XG4gICAgICAgICAgICBjb2xTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZPUk06IHtcbiAgICAgICAgICAgIGZvcm1TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRBQkxFOiB7XG4gICAgICAgICAgICB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEJPRFk6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URk9PVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIRUFEOiB7XG4gICAgICAgICAgICB0Ym9keVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSU5QVVQ6IHtcbiAgICAgICAgICAgIGlucHV0U3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DQVBUSU9OOiB7XG4gICAgICAgICAgICBjYXB0aW9uU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0xHUk9VUDoge1xuICAgICAgICAgICAgY29sZ3JvdXBTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UQUJMRToge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZShodG1sX2pzXzEuVEFHX0lELlRBQkxFKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChodG1sX2pzXzEuVEFHX0lELlRBQkxFKTtcbiAgICAgICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URU1QTEFURToge1xuICAgICAgICAgICAgdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJPRFk6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DQVBUSU9OOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQ09MOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IVE1MOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEJPRFk6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRGT09UOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEg6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5USEVBRDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRSOiB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgdG9rZW5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkluVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCBzYXZlZEZvc3RlclBhcmVudGluZ1N0YXRlID0gcC5mb3N0ZXJQYXJlbnRpbmdFbmFibGVkO1xuICAgIHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IHRydWU7XG4gICAgLy8gUHJvY2VzcyB0b2tlbiBpbiBgSW4gQm9keWAgbW9kZVxuICAgIG1vZGVJbkJvZHkocCwgdG9rZW4pO1xuICAgIHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZCA9IHNhdmVkRm9zdGVyUGFyZW50aW5nU3RhdGU7XG59XG4vLyBUaGUgXCJpbiB0YWJsZSB0ZXh0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5UYWJsZVRleHQocCwgdG9rZW4pIHtcbiAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMucHVzaCh0b2tlbik7XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5wdXNoKHRva2VuKTtcbiAgICBwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSB0cnVlO1xufVxuZnVuY3Rpb24gdG9rZW5JblRhYmxlVGV4dChwLCB0b2tlbikge1xuICAgIGxldCBpID0gMDtcbiAgICBpZiAocC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuKSB7XG4gICAgICAgIGZvciAoOyBpIDwgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0b2tlbkluVGFibGUocCwgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZm9yICg7IGkgPCBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHAuX2luc2VydENoYXJhY3RlcnMocC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwLmluc2VydGlvbk1vZGUgPSBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZTtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuLy8gVGhlIFwiaW4gY2FwdGlvblwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuY29uc3QgVEFCTEVfVk9JRF9FTEVNRU5UUyA9IG5ldyBTZXQoW2h0bWxfanNfMS5UQUdfSUQuQ0FQVElPTiwgaHRtbF9qc18xLlRBR19JRC5DT0wsIGh0bWxfanNfMS5UQUdfSUQuQ09MR1JPVVAsIGh0bWxfanNfMS5UQUdfSUQuVEJPRFksIGh0bWxfanNfMS5UQUdfSUQuVEQsIGh0bWxfanNfMS5UQUdfSUQuVEZPT1QsIGh0bWxfanNfMS5UQUdfSUQuVEgsIGh0bWxfanNfMS5UQUdfSUQuVEhFQUQsIGh0bWxfanNfMS5UQUdfSUQuVFJdKTtcbmZ1bmN0aW9uIHN0YXJ0VGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAoVEFCTEVfVk9JRF9FTEVNRU5UUy5oYXModG4pKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoaHRtbF9qc18xLlRBR19JRC5DQVBUSU9OKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKGh0bWxfanNfMS5UQUdfSUQuQ0FQVElPTik7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJbkNhcHRpb24ocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIHN3aXRjaCAodG4pIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNBUFRJT046XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UQUJMRToge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZShodG1sX2pzXzEuVEFHX0lELkNBUFRJT04pKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChodG1sX2pzXzEuVEFHX0lELkNBUFRJT04pO1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgICAgICBpZiAodG4gPT09IGh0bWxfanNfMS5UQUdfSUQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkJPRFk6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0w6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhUTUw6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UQk9EWTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlREOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEZPT1Q6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5USDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIRUFEOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVFI6IHtcbiAgICAgICAgICAgIC8vIElnbm9yZSB0b2tlblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSBcImluIGNvbHVtbiBncm91cFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTDoge1xuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRFTVBMQVRFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTEdST1VQOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSBodG1sX2pzXzEuVEFHX0lELkNPTEdST1VQKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URU1QTEFURToge1xuICAgICAgICAgICAgdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTDoge1xuICAgICAgICAgICAgLy8gSWdub3JlIHRva2VuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gaHRtbF9qc18xLlRBR19JRC5DT0xHUk9VUCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9XG59XG4vLyBUaGUgXCJpbiB0YWJsZSBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVFI6IHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9ST1c7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEg6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URDoge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgICAgICBwLl9pbnNlcnRGYWtlRWxlbWVudChodG1sX2pzXzEuVEFHX05BTUVTLlRSLCBodG1sX2pzXzEuVEFHX0lELlRSKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgICAgICAgICAgc3RhcnRUYWdJblJvdyhwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTEdST1VQOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEJPRFk6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URk9PVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIRUFEOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UQk9EWTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRGT09UOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEhFQUQ6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UQUJMRToge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc1RhYmxlQm9keUNvbnRleHRJblRhYmxlU2NvcGUoKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQk9EWTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNBUFRJT046XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0w6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhUTUw6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVFI6IHtcbiAgICAgICAgICAgIC8vIElnbm9yZSB0b2tlblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBUaGUgXCJpbiByb3dcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Sb3cocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5USDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlREOiB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgaHRtbF9qc18xLk5TLkhUTUwpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DRUxMO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTEdST1VQOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEJPRFk6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URk9PVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIRUFEOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVFI6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoaHRtbF9qc18xLlRBR19JRC5UUikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJblJvdyhwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRSOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKGh0bWxfanNfMS5UQUdfSUQuVFIpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZVJvd0NvbnRleHQoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEFCTEU6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoaHRtbF9qc18xLlRBR19JRC5UUikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRhYmxlQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEJPRFk6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URk9PVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIRUFEOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRva2VuLnRhZ0lEKSB8fCBwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoaHRtbF9qc18xLlRBR19JRC5UUikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRhYmxlQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQk9EWTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNBUFRJT046XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0w6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhUTUw6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIOiB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgZW5kIHRhZ1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBUaGUgXCJpbiBjZWxsXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luQ2VsbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKFRBQkxFX1ZPSURfRUxFTUVOVFMuaGFzKHRuKSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKGh0bWxfanNfMS5UQUdfSUQuVEQpIHx8IHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZShodG1sX2pzXzEuVEFHX0lELlRIKSkge1xuICAgICAgICAgICAgcC5fY2xvc2VUYWJsZUNlbGwoKTtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Sb3cocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5DZWxsKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBzd2l0Y2ggKHRuKSB7XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRIOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9ST1c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEFCTEU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UQk9EWTpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRGT09UOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEhFQUQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5UUjoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSh0bikpIHtcbiAgICAgICAgICAgICAgICBwLl9jbG9zZVRhYmxlQ2VsbCgpO1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luUm93KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CT0RZOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTEdST1VQOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSFRNTDoge1xuICAgICAgICAgICAgLy8gSWdub3JlIHRva2VuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBlbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlIFwiaW4gc2VsZWN0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luU2VsZWN0KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk9QVElPTjoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gaHRtbF9qc18xLlRBR19JRC5PUFRJT04pIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5PUFRHUk9VUDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gaHRtbF9qc18xLlRBR19JRC5PUFRJT04pIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09IGh0bWxfanNfMS5UQUdfSUQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5JTlBVVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELktFWUdFTjpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRFWFRBUkVBOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuU0VMRUNUOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TZWxlY3RTY29wZShodG1sX2pzXzEuVEFHX0lELlNFTEVDVCkpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoaHRtbF9qc18xLlRBR19JRC5TRUxFQ1QpO1xuICAgICAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbi50YWdJRCAhPT0gaHRtbF9qc18xLlRBR19JRC5TRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5fcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuU0NSSVBUOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJblNlbGVjdChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk9QVEdST1VQOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPiAwICYmXG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSBodG1sX2pzXzEuVEFHX0lELk9QVElPTiAmJlxuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnRhZ0lEc1twLm9wZW5FbGVtZW50cy5zdGFja1RvcCAtIDFdID09PSBodG1sX2pzXzEuVEFHX0lELk9QVEdST1VQKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSBodG1sX2pzXzEuVEFHX0lELk9QVEdST1VQKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuT1BUSU9OOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSBodG1sX2pzXzEuVEFHX0lELk9QVElPTikge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNFTEVDVDoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2VsZWN0U2NvcGUoaHRtbF9qc18xLlRBR19JRC5TRUxFQ1QpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKGh0bWxfanNfMS5UQUdfSUQuU0VMRUNUKTtcbiAgICAgICAgICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5URU1QTEFURToge1xuICAgICAgICAgICAgdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH1cbn1cbi8vIFRoZSBcImluIHNlbGVjdCBpbiB0YWJsZVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblNlbGVjdEluVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmICh0biA9PT0gaHRtbF9qc18xLlRBR19JRC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRBQkxFIHx8XG4gICAgICAgIHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRCT0RZIHx8XG4gICAgICAgIHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRGT09UIHx8XG4gICAgICAgIHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRIRUFEIHx8XG4gICAgICAgIHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRSIHx8XG4gICAgICAgIHRuID09PSBodG1sX2pzXzEuVEFHX0lELlREIHx8XG4gICAgICAgIHRuID09PSBodG1sX2pzXzEuVEFHX0lELlRIKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZChodG1sX2pzXzEuVEFHX0lELlNFTEVDVCk7XG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLl9wcm9jZXNzU3RhcnRUYWcodG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3RhcnRUYWdJblNlbGVjdChwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5TZWxlY3RJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAodG4gPT09IGh0bWxfanNfMS5UQUdfSUQuQ0FQVElPTiB8fFxuICAgICAgICB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5UQUJMRSB8fFxuICAgICAgICB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5UQk9EWSB8fFxuICAgICAgICB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5URk9PVCB8fFxuICAgICAgICB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5USEVBRCB8fFxuICAgICAgICB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5UUiB8fFxuICAgICAgICB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5URCB8fFxuICAgICAgICB0biA9PT0gaHRtbF9qc18xLlRBR19JRC5USCkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKGh0bWxfanNfMS5UQUdfSUQuU0VMRUNUKTtcbiAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICAgICAgcC5vbkVuZFRhZyh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGVuZFRhZ0luU2VsZWN0KHAsIHRva2VuKTtcbiAgICB9XG59XG4vLyBUaGUgXCJpbiB0ZW1wbGF0ZVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJblRlbXBsYXRlKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICAvLyBGaXJzdCwgaGFuZGxlIHRhZ3MgdGhhdCBjYW4gc3RhcnQgd2l0aG91dCBhIG1vZGUgY2hhbmdlXG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CQVNFOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5CR1NPVU5EOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTElOSzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELk1FVEE6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT0ZSQU1FUzpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNDUklQVDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlNUWUxFOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEVNUExBVEU6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5USVRMRToge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmUtcHJvY2VzcyB0aGUgdG9rZW4gaW4gdGhlIGFwcHJvcHJpYXRlIG1vZGVcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNBUFRJT046XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlRCT0RZOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEZPT1Q6XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5USEVBRDoge1xuICAgICAgICAgICAgcC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrWzBdID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkNPTDoge1xuICAgICAgICAgICAgcC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrWzBdID0gSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVFI6IHtcbiAgICAgICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFja1swXSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELlREOlxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuVEg6IHtcbiAgICAgICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFja1swXSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9ST1c7XG4gICAgICAgICAgICBzdGFydFRhZ0luUm93KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFja1swXSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luVGVtcGxhdGUocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09IGh0bWxfanNfMS5UQUdfSUQuVEVNUExBVEUpIHtcbiAgICAgICAgdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVvZkluVGVtcGxhdGUocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoaHRtbF9qc18xLlRBR19JRC5URU1QTEFURSk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFjay5zaGlmdCgpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5vbkVvZih0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdG9wUGFyc2luZyhwLCB0b2tlbik7XG4gICAgfVxufVxuLy8gVGhlIFwiYWZ0ZXIgYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09IGh0bWxfanNfMS5UQUdfSUQuSFRNTCkge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0b2tlbkFmdGVyQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gaHRtbF9qc18xLlRBR19JRC5IVE1MKSB7XG4gICAgICAgIGlmICghcC5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWTtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IDxodG1sPiBpcyBuZXZlciBwb3BwZWQgZnJvbSB0aGUgc3RhY2ssIHNvIHdlIG5lZWQgdG8gdXBkYXRlZFxuICAgICAgICAvL3RoZSBlbmQgbG9jYXRpb24gZXhwbGljaXRseS5cbiAgICAgICAgaWYgKHAub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvICYmIHAub3BlbkVsZW1lbnRzLnRhZ0lEc1swXSA9PT0gaHRtbF9qc18xLlRBR19JRC5IVE1MKSB7XG4gICAgICAgICAgICBwLl9zZXRFbmRMb2NhdGlvbihwLm9wZW5FbGVtZW50cy5pdGVtc1swXSwgdG9rZW4pO1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBib2R5IGVsZW1lbnQsIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbiBlbmQgdGFnXG4gICAgICAgICAgICBjb25zdCBib2R5RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zWzFdO1xuICAgICAgICAgICAgaWYgKGJvZHlFbGVtZW50ICYmICEoKF9hID0gcC50cmVlQWRhcHRlci5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGJvZHlFbGVtZW50KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVuZFRhZykpIHtcbiAgICAgICAgICAgICAgICBwLl9zZXRFbmRMb2NhdGlvbihib2R5RWxlbWVudCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0b2tlbkFmdGVyQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5BZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgbW9kZUluQm9keShwLCB0b2tlbik7XG59XG4vLyBUaGUgXCJpbiBmcmFtZXNldFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gc3RhcnRUYWdJbkZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuSFRNTDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkZSQU1FU0VUOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBodG1sX2pzXzEuTlMuSFRNTCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuRlJBTUU6IHtcbiAgICAgICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIGh0bWxfanNfMS5OUy5IVE1MKTtcbiAgICAgICAgICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT0ZSQU1FUzoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09IGh0bWxfanNfMS5UQUdfSUQuRlJBTUVTRVQgJiYgIXAub3BlbkVsZW1lbnRzLmlzUm9vdEh0bWxFbGVtZW50Q3VycmVudCgpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICBpZiAoIXAuZnJhZ21lbnRDb250ZXh0ICYmIHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCAhPT0gaHRtbF9qc18xLlRBR19JRC5GUkFNRVNFVCkge1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSBcImFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5IVE1MOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIGh0bWxfanNfMS5UQUdfSUQuTk9GUkFNRVM6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdBZnRlckZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSBodG1sX2pzXzEuVEFHX0lELkhUTUwpIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9GUkFNRVNFVDtcbiAgICB9XG59XG4vLyBUaGUgXCJhZnRlciBhZnRlciBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSBodG1sX2pzXzEuVEFHX0lELkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdG9rZW5BZnRlckFmdGVyQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5BZnRlckFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICBtb2RlSW5Cb2R5KHAsIHRva2VuKTtcbn1cbi8vIFRoZSBcImFmdGVyIGFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyQWZ0ZXJGcmFtZXNldChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSBodG1sX2pzXzEuVEFHX0lELkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgaHRtbF9qc18xLlRBR19JRC5OT0ZSQU1FUzoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH1cbn1cbi8vIFRoZSBydWxlcyBmb3IgcGFyc2luZyB0b2tlbnMgaW4gZm9yZWlnbiBjb250ZW50XG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gbnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICB0b2tlbi5jaGFycyA9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xufVxuZnVuY3Rpb24gY2hhcmFjdGVySW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gcG9wVW50aWxIdG1sT3JJbnRlZ3JhdGlvblBvaW50KHApIHtcbiAgICB3aGlsZSAocC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkocC5vcGVuRWxlbWVudHMuY3VycmVudCkgIT09IGh0bWxfanNfMS5OUy5IVE1MICYmXG4gICAgICAgICFwLl9pc0ludGVncmF0aW9uUG9pbnQocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkLCBwLm9wZW5FbGVtZW50cy5jdXJyZW50KSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICB9XG59XG5mdW5jdGlvbiBzdGFydFRhZ0luRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICBpZiAoZm9yZWlnbkNvbnRlbnQuY2F1c2VzRXhpdCh0b2tlbikpIHtcbiAgICAgICAgcG9wVW50aWxIdG1sT3JJbnRlZ3JhdGlvblBvaW50KHApO1xuICAgICAgICBwLl9zdGFydFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcC5fZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50TnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KTtcbiAgICAgICAgaWYgKGN1cnJlbnROcyA9PT0gaHRtbF9qc18xLk5TLk1BVEhNTCkge1xuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY3VycmVudE5zID09PSBodG1sX2pzXzEuTlMuU1ZHKSB7XG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR1RhZ05hbWUodG9rZW4pO1xuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5TVkdBdHRycyh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG4gICAgICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZykge1xuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgY3VycmVudE5zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGN1cnJlbnROcyk7XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09IGh0bWxfanNfMS5UQUdfSUQuUCB8fCB0b2tlbi50YWdJRCA9PT0gaHRtbF9qc18xLlRBR19JRC5CUikge1xuICAgICAgICBwb3BVbnRpbEh0bWxPckludGVncmF0aW9uUG9pbnQocCk7XG4gICAgICAgIHAuX2VuZFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcbiAgICAgICAgaWYgKHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpID09PSBodG1sX2pzXzEuTlMuSFRNTCkge1xuICAgICAgICAgICAgcC5fZW5kVGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhZ05hbWUgPSBwLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgIGlmICh0YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IHRva2VuLnRhZ05hbWUpIHtcbiAgICAgICAgICAgIC8vTk9URTogdXBkYXRlIHRoZSB0b2tlbiB0YWcgbmFtZSBmb3IgYF9zZXRFbmRMb2NhdGlvbmAuXG4gICAgICAgICAgICB0b2tlbi50YWdOYW1lID0gdGFnTmFtZTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnNob3J0ZW5Ub0xlbmd0aChpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwgbnVsbCwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5zZXJpYWxpemVPdXRlciA9IGV4cG9ydHMuc2VyaWFsaXplID0gdm9pZCAwO1xuY29uc3QgaHRtbF9qc18xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9odG1sLmpzXCIpO1xuY29uc3QgZXNjYXBlX2pzXzEgPSByZXF1aXJlKFwiZW50aXRpZXMvbGliL2VzY2FwZS5qc1wiKTtcbmNvbnN0IGRlZmF1bHRfanNfMSA9IHJlcXVpcmUoXCIuLi90cmVlLWFkYXB0ZXJzL2RlZmF1bHQuanNcIik7XG4vLyBTZXRzXG5jb25zdCBWT0lEX0VMRU1FTlRTID0gbmV3IFNldChbXG4gICAgaHRtbF9qc18xLlRBR19OQU1FUy5BUkVBLFxuICAgIGh0bWxfanNfMS5UQUdfTkFNRVMuQkFTRSxcbiAgICBodG1sX2pzXzEuVEFHX05BTUVTLkJBU0VGT05ULFxuICAgIGh0bWxfanNfMS5UQUdfTkFNRVMuQkdTT1VORCxcbiAgICBodG1sX2pzXzEuVEFHX05BTUVTLkJSLFxuICAgIGh0bWxfanNfMS5UQUdfTkFNRVMuQ09MLFxuICAgIGh0bWxfanNfMS5UQUdfTkFNRVMuRU1CRUQsXG4gICAgaHRtbF9qc18xLlRBR19OQU1FUy5GUkFNRSxcbiAgICBodG1sX2pzXzEuVEFHX05BTUVTLkhSLFxuICAgIGh0bWxfanNfMS5UQUdfTkFNRVMuSU1HLFxuICAgIGh0bWxfanNfMS5UQUdfTkFNRVMuSU5QVVQsXG4gICAgaHRtbF9qc18xLlRBR19OQU1FUy5LRVlHRU4sXG4gICAgaHRtbF9qc18xLlRBR19OQU1FUy5MSU5LLFxuICAgIGh0bWxfanNfMS5UQUdfTkFNRVMuTUVUQSxcbiAgICBodG1sX2pzXzEuVEFHX05BTUVTLlBBUkFNLFxuICAgIGh0bWxfanNfMS5UQUdfTkFNRVMuU09VUkNFLFxuICAgIGh0bWxfanNfMS5UQUdfTkFNRVMuVFJBQ0ssXG4gICAgaHRtbF9qc18xLlRBR19OQU1FUy5XQlIsXG5dKTtcbmZ1bmN0aW9uIGlzVm9pZEVsZW1lbnQobm9kZSwgb3B0aW9ucykge1xuICAgIHJldHVybiAob3B0aW9ucy50cmVlQWRhcHRlci5pc0VsZW1lbnROb2RlKG5vZGUpICYmXG4gICAgICAgIG9wdGlvbnMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKG5vZGUpID09PSBodG1sX2pzXzEuTlMuSFRNTCAmJlxuICAgICAgICBWT0lEX0VMRU1FTlRTLmhhcyhvcHRpb25zLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobm9kZSkpKTtcbn1cbmNvbnN0IGRlZmF1bHRPcHRzID0geyB0cmVlQWRhcHRlcjogZGVmYXVsdF9qc18xLmRlZmF1bHRUcmVlQWRhcHRlciwgc2NyaXB0aW5nRW5hYmxlZDogdHJ1ZSB9O1xuLyoqXG4gKiBTZXJpYWxpemVzIGFuIEFTVCBub2RlIHRvIGFuIEhUTUwgc3RyaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBhcnNlNSA9IHJlcXVpcmUoJ3BhcnNlNScpO1xuICpcbiAqIGNvbnN0IGRvY3VtZW50ID0gcGFyc2U1LnBhcnNlKCc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+SGkgdGhlcmUhPC9ib2R5PjwvaHRtbD4nKTtcbiAqXG4gKiAvLyBTZXJpYWxpemVzIGEgZG9jdW1lbnQuXG4gKiBjb25zdCBodG1sID0gcGFyc2U1LnNlcmlhbGl6ZShkb2N1bWVudCk7XG4gKlxuICogLy8gU2VyaWFsaXplcyB0aGUgPGh0bWw+IGVsZW1lbnQgY29udGVudC5cbiAqIGNvbnN0IHN0ciA9IHBhcnNlNS5zZXJpYWxpemUoZG9jdW1lbnQuY2hpbGROb2Rlc1sxXSk7XG4gKlxuICogY29uc29sZS5sb2coc3RyKTsgLy8+ICc8aGVhZD48L2hlYWQ+PGJvZHk+SGkgdGhlcmUhPC9ib2R5PidcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gc2VyaWFsaXplLlxuICogQHBhcmFtIG9wdGlvbnMgU2VyaWFsaXphdGlvbiBvcHRpb25zLlxuICovXG5mdW5jdGlvbiBzZXJpYWxpemUobm9kZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRzKSwgb3B0aW9ucyk7XG4gICAgaWYgKGlzVm9pZEVsZW1lbnQobm9kZSwgb3B0cykpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gc2VyaWFsaXplQ2hpbGROb2Rlcyhub2RlLCBvcHRzKTtcbn1cbmV4cG9ydHMuc2VyaWFsaXplID0gc2VyaWFsaXplO1xuLyoqXG4gKiBTZXJpYWxpemVzIGFuIEFTVCBlbGVtZW50IG5vZGUgdG8gYW4gSFRNTCBzdHJpbmcsIGluY2x1ZGluZyB0aGUgZWxlbWVudCBub2RlLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBhcnNlNSA9IHJlcXVpcmUoJ3BhcnNlNScpO1xuICpcbiAqIGNvbnN0IGRvY3VtZW50ID0gcGFyc2U1LnBhcnNlRnJhZ21lbnQoJzxkaXY+SGVsbG8sIDxiPndvcmxkPC9iPiE8L2Rpdj4nKTtcbiAqXG4gKiAvLyBTZXJpYWxpemVzIHRoZSA8ZGl2PiBlbGVtZW50LlxuICogY29uc3QgaHRtbCA9IHBhcnNlNS5zZXJpYWxpemVPdXRlcihkb2N1bWVudC5jaGlsZE5vZGVzWzBdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhzdHIpOyAvLz4gJzxkaXY+SGVsbG8sIDxiPndvcmxkPC9iPiE8L2Rpdj4nXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIHNlcmlhbGl6ZS5cbiAqIEBwYXJhbSBvcHRpb25zIFNlcmlhbGl6YXRpb24gb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gc2VyaWFsaXplT3V0ZXIobm9kZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRzKSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUobm9kZSwgb3B0cyk7XG59XG5leHBvcnRzLnNlcmlhbGl6ZU91dGVyID0gc2VyaWFsaXplT3V0ZXI7XG5mdW5jdGlvbiBzZXJpYWxpemVDaGlsZE5vZGVzKHBhcmVudE5vZGUsIG9wdGlvbnMpIHtcbiAgICBsZXQgaHRtbCA9ICcnO1xuICAgIC8vIEdldCBjb250YWluZXIgb2YgdGhlIGNoaWxkIG5vZGVzXG4gICAgY29uc3QgY29udGFpbmVyID0gb3B0aW9ucy50cmVlQWRhcHRlci5pc0VsZW1lbnROb2RlKHBhcmVudE5vZGUpICYmXG4gICAgICAgIG9wdGlvbnMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShwYXJlbnROb2RlKSA9PT0gaHRtbF9qc18xLlRBR19OQU1FUy5URU1QTEFURSAmJlxuICAgICAgICBvcHRpb25zLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShwYXJlbnROb2RlKSA9PT0gaHRtbF9qc18xLk5TLkhUTUxcbiAgICAgICAgPyBvcHRpb25zLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChwYXJlbnROb2RlKVxuICAgICAgICA6IHBhcmVudE5vZGU7XG4gICAgY29uc3QgY2hpbGROb2RlcyA9IG9wdGlvbnMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2Rlcyhjb250YWluZXIpO1xuICAgIGlmIChjaGlsZE5vZGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY3VycmVudE5vZGUgb2YgY2hpbGROb2Rlcykge1xuICAgICAgICAgICAgaHRtbCArPSBzZXJpYWxpemVOb2RlKGN1cnJlbnROb2RlLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaHRtbDtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZU5vZGUobm9kZSwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnRyZWVBZGFwdGVyLmlzRWxlbWVudE5vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZUVsZW1lbnQobm9kZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRyZWVBZGFwdGVyLmlzVGV4dE5vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVRleHROb2RlKG5vZGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50cmVlQWRhcHRlci5pc0NvbW1lbnROb2RlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVDb21tZW50Tm9kZShub2RlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHJlZUFkYXB0ZXIuaXNEb2N1bWVudFR5cGVOb2RlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVEb2N1bWVudFR5cGVOb2RlKG5vZGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGZvciB1bmtub3duIG5vZGVzXG4gICAgcmV0dXJuICcnO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplRWxlbWVudChub2RlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdG4gPSBvcHRpb25zLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobm9kZSk7XG4gICAgcmV0dXJuIGA8JHt0bn0ke3NlcmlhbGl6ZUF0dHJpYnV0ZXMobm9kZSwgb3B0aW9ucyl9PiR7aXNWb2lkRWxlbWVudChub2RlLCBvcHRpb25zKSA/ICcnIDogYCR7c2VyaWFsaXplQ2hpbGROb2Rlcyhub2RlLCBvcHRpb25zKX08LyR7dG59PmB9YDtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUF0dHJpYnV0ZXMobm9kZSwgeyB0cmVlQWRhcHRlciB9KSB7XG4gICAgbGV0IGh0bWwgPSAnJztcbiAgICBmb3IgKGNvbnN0IGF0dHIgb2YgdHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3Qobm9kZSkpIHtcbiAgICAgICAgaHRtbCArPSAnICc7XG4gICAgICAgIGlmICghYXR0ci5uYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIGh0bWwgKz0gYXR0ci5uYW1lO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN3aXRjaCAoYXR0ci5uYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5OUy5YTUw6IHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBgeG1sOiR7YXR0ci5uYW1lfWA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIGh0bWxfanNfMS5OUy5YTUxOUzoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ci5uYW1lICE9PSAneG1sbnMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICd4bWxuczonO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYXR0ci5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBodG1sX2pzXzEuTlMuWExJTks6IHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBgeGxpbms6JHthdHRyLm5hbWV9YDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBgJHthdHRyLnByZWZpeH06JHthdHRyLm5hbWV9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIGh0bWwgKz0gYD1cIiR7KDAsIGVzY2FwZV9qc18xLmVzY2FwZUF0dHJpYnV0ZSkoYXR0ci52YWx1ZSl9XCJgO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbDtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZVRleHROb2RlKG5vZGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHRyZWVBZGFwdGVyIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0cmVlQWRhcHRlci5nZXRUZXh0Tm9kZUNvbnRlbnQobm9kZSk7XG4gICAgY29uc3QgcGFyZW50ID0gdHJlZUFkYXB0ZXIuZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgICBjb25zdCBwYXJlbnRUbiA9IHBhcmVudCAmJiB0cmVlQWRhcHRlci5pc0VsZW1lbnROb2RlKHBhcmVudCkgJiYgdHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShwYXJlbnQpO1xuICAgIHJldHVybiBwYXJlbnRUbiAmJlxuICAgICAgICB0cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkocGFyZW50KSA9PT0gaHRtbF9qc18xLk5TLkhUTUwgJiZcbiAgICAgICAgKDAsIGh0bWxfanNfMS5oYXNVbmVzY2FwZWRUZXh0KShwYXJlbnRUbiwgb3B0aW9ucy5zY3JpcHRpbmdFbmFibGVkKVxuICAgICAgICA/IGNvbnRlbnRcbiAgICAgICAgOiAoMCwgZXNjYXBlX2pzXzEuZXNjYXBlVGV4dCkoY29udGVudCk7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVDb21tZW50Tm9kZShub2RlLCB7IHRyZWVBZGFwdGVyIH0pIHtcbiAgICByZXR1cm4gYDwhLS0ke3RyZWVBZGFwdGVyLmdldENvbW1lbnROb2RlQ29udGVudChub2RlKX0tLT5gO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplRG9jdW1lbnRUeXBlTm9kZShub2RlLCB7IHRyZWVBZGFwdGVyIH0pIHtcbiAgICByZXR1cm4gYDwhRE9DVFlQRSAke3RyZWVBZGFwdGVyLmdldERvY3VtZW50VHlwZU5vZGVOYW1lKG5vZGUpfT5gO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZUZyYWdtZW50ID0gZXhwb3J0cy5wYXJzZSA9IGV4cG9ydHMuVG9rZW5pemVyTW9kZSA9IGV4cG9ydHMuVG9rZW5pemVyID0gZXhwb3J0cy5Ub2tlbiA9IGV4cG9ydHMuaHRtbCA9IGV4cG9ydHMuZm9yZWlnbkNvbnRlbnQgPSBleHBvcnRzLkVycm9yQ29kZXMgPSBleHBvcnRzLnNlcmlhbGl6ZU91dGVyID0gZXhwb3J0cy5zZXJpYWxpemUgPSBleHBvcnRzLlBhcnNlciA9IGV4cG9ydHMuZGVmYXVsdFRyZWVBZGFwdGVyID0gdm9pZCAwO1xuY29uc3QgaW5kZXhfanNfMSA9IHJlcXVpcmUoXCIuL3BhcnNlci9pbmRleC5qc1wiKTtcbnZhciBkZWZhdWx0X2pzXzEgPSByZXF1aXJlKFwiLi90cmVlLWFkYXB0ZXJzL2RlZmF1bHQuanNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0VHJlZUFkYXB0ZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRlZmF1bHRfanNfMS5kZWZhdWx0VHJlZUFkYXB0ZXI7IH0gfSk7XG52YXIgaW5kZXhfanNfMiA9IHJlcXVpcmUoXCIuL3BhcnNlci9pbmRleC5qc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBhcnNlclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gaW5kZXhfanNfMi5QYXJzZXI7IH0gfSk7XG52YXIgaW5kZXhfanNfMyA9IHJlcXVpcmUoXCIuL3NlcmlhbGl6ZXIvaW5kZXguanNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJzZXJpYWxpemVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGluZGV4X2pzXzMuc2VyaWFsaXplOyB9IH0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwic2VyaWFsaXplT3V0ZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGluZGV4X2pzXzMuc2VyaWFsaXplT3V0ZXI7IH0gfSk7XG52YXIgZXJyb3JfY29kZXNfanNfMSA9IHJlcXVpcmUoXCIuL2NvbW1vbi9lcnJvci1jb2Rlcy5qc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkVycm9yQ29kZXNcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVycm9yX2NvZGVzX2pzXzEuRVJSOyB9IH0pO1xuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0cy5mb3JlaWduQ29udGVudCA9IHJlcXVpcmUoXCIuL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQuanNcIik7XG4vKiogQGludGVybmFsICovXG5leHBvcnRzLmh0bWwgPSByZXF1aXJlKFwiLi9jb21tb24vaHRtbC5qc1wiKTtcbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydHMuVG9rZW4gPSByZXF1aXJlKFwiLi9jb21tb24vdG9rZW4uanNcIik7XG4vKiogQGludGVybmFsICovXG52YXIgaW5kZXhfanNfNCA9IHJlcXVpcmUoXCIuL3Rva2VuaXplci9pbmRleC5qc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRva2VuaXplclwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gaW5kZXhfanNfNC5Ub2tlbml6ZXI7IH0gfSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUb2tlbml6ZXJNb2RlXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBpbmRleF9qc180LlRva2VuaXplck1vZGU7IH0gfSk7XG4vLyBTaG9ydGhhbmRzXG4vKipcbiAqIFBhcnNlcyBhbiBIVE1MIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gaHRtbCBJbnB1dCBIVE1MIHN0cmluZy5cbiAqIEBwYXJhbSBvcHRpb25zIFBhcnNpbmcgb3B0aW9ucy5cbiAqIEByZXR1cm5zIERvY3VtZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGFyc2U1ID0gcmVxdWlyZSgncGFyc2U1Jyk7XG4gKlxuICogY29uc3QgZG9jdW1lbnQgPSBwYXJzZTUucGFyc2UoJzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT5IaSB0aGVyZSE8L2JvZHk+PC9odG1sPicpO1xuICpcbiAqIGNvbnNvbGUubG9nKGRvY3VtZW50LmNoaWxkTm9kZXNbMV0udGFnTmFtZSk7IC8vPiAnaHRtbCdcbiAqYGBgXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKGh0bWwsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaW5kZXhfanNfMS5QYXJzZXIucGFyc2UoaHRtbCwgb3B0aW9ucyk7XG59XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5mdW5jdGlvbiBwYXJzZUZyYWdtZW50KGZyYWdtZW50Q29udGV4dCwgaHRtbCwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgZnJhZ21lbnRDb250ZXh0ID09PSAnc3RyaW5nJykge1xuICAgICAgICBvcHRpb25zID0gaHRtbDtcbiAgICAgICAgaHRtbCA9IGZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgZnJhZ21lbnRDb250ZXh0ID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VyID0gaW5kZXhfanNfMS5QYXJzZXIuZ2V0RnJhZ21lbnRQYXJzZXIoZnJhZ21lbnRDb250ZXh0LCBvcHRpb25zKTtcbiAgICBwYXJzZXIudG9rZW5pemVyLndyaXRlKGh0bWwsIHRydWUpO1xuICAgIHJldHVybiBwYXJzZXIuZ2V0RnJhZ21lbnQoKTtcbn1cbmV4cG9ydHMucGFyc2VGcmFnbWVudCA9IHBhcnNlRnJhZ21lbnQ7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY2xvbmVOb2RlID0gZXhwb3J0cy5oYXNDaGlsZHJlbiA9IGV4cG9ydHMuaXNEb2N1bWVudCA9IGV4cG9ydHMuaXNEaXJlY3RpdmUgPSBleHBvcnRzLmlzQ29tbWVudCA9IGV4cG9ydHMuaXNUZXh0ID0gZXhwb3J0cy5pc0NEQVRBID0gZXhwb3J0cy5pc1RhZyA9IGV4cG9ydHMuRWxlbWVudCA9IGV4cG9ydHMuRG9jdW1lbnQgPSBleHBvcnRzLkNEQVRBID0gZXhwb3J0cy5Ob2RlV2l0aENoaWxkcmVuID0gZXhwb3J0cy5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBleHBvcnRzLkNvbW1lbnQgPSBleHBvcnRzLlRleHQgPSBleHBvcnRzLkRhdGFOb2RlID0gZXhwb3J0cy5Ob2RlID0gdm9pZCAwO1xudmFyIGRvbWVsZW1lbnR0eXBlXzEgPSByZXF1aXJlKFwiZG9tZWxlbWVudHR5cGVcIik7XG4vKipcbiAqIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBhcyB0aGUgcHJvdG90eXBlIGZvciBOb2RlcyB3aGVuIGNyZWF0aW5nIGFcbiAqIERPTS1MZXZlbC0xLWNvbXBsaWFudCBzdHJ1Y3R1cmUuXG4gKi9cbnZhciBOb2RlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vZGUoKSB7XG4gICAgICAgIC8qKiBQYXJlbnQgb2YgdGhlIG5vZGUgKi9cbiAgICAgICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICAgICAgICAvKiogUHJldmlvdXMgc2libGluZyAqL1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgICAgICAvKiogTmV4dCBzaWJsaW5nICovXG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIC8qKiBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIG5vZGUuIFJlcXVpcmVzIGB3aXRoU3RhcnRJbmRpY2VzYCBvbiB0aGUgaGFuZGxlciB0byBiZSBgdHJ1ZS4gKi9cbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gbnVsbDtcbiAgICAgICAgLyoqIFRoZSBlbmQgaW5kZXggb2YgdGhlIG5vZGUuIFJlcXVpcmVzIGB3aXRoRW5kSW5kaWNlc2Agb24gdGhlIGhhbmRsZXIgdG8gYmUgYHRydWUuICovXG4gICAgICAgIHRoaXMuZW5kSW5kZXggPSBudWxsO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsIFwicGFyZW50Tm9kZVwiLCB7XG4gICAgICAgIC8vIFJlYWQtd3JpdGUgYWxpYXNlcyBmb3IgcHJvcGVydGllc1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgcGFyZW50fS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgXCJwcmV2aW91c1NpYmxpbmdcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgcHJldn0uXG4gICAgICAgICAqIFtET00gc3BlY10oaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnKS1jb21wYXRpYmxlIGFsaWFzLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmV2O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChwcmV2KSB7XG4gICAgICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCBcIm5leHRTaWJsaW5nXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIG5leHR9LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV4dCkge1xuICAgICAgICAgICAgdGhpcy5uZXh0ID0gbmV4dDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIENsb25lIHRoaXMgbm9kZSwgYW5kIG9wdGlvbmFsbHkgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY3Vyc2l2ZSBDbG9uZSBjaGlsZCBub2RlcyBhcyB3ZWxsLlxuICAgICAqIEByZXR1cm5zIEEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gICAgICovXG4gICAgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlID0gZnVuY3Rpb24gKHJlY3Vyc2l2ZSkge1xuICAgICAgICBpZiAocmVjdXJzaXZlID09PSB2b2lkIDApIHsgcmVjdXJzaXZlID0gZmFsc2U7IH1cbiAgICAgICAgcmV0dXJuIGNsb25lTm9kZSh0aGlzLCByZWN1cnNpdmUpO1xuICAgIH07XG4gICAgcmV0dXJuIE5vZGU7XG59KCkpO1xuZXhwb3J0cy5Ob2RlID0gTm9kZTtcbi8qKlxuICogQSBub2RlIHRoYXQgY29udGFpbnMgc29tZSBkYXRhLlxuICovXG52YXIgRGF0YU5vZGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKERhdGFOb2RlLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRhIFRoZSBjb250ZW50IG9mIHRoZSBkYXRhIG5vZGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBEYXRhTm9kZShkYXRhKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhTm9kZS5wcm90b3R5cGUsIFwibm9kZVZhbHVlXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIGRhdGF9LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBEYXRhTm9kZTtcbn0oTm9kZSkpO1xuZXhwb3J0cy5EYXRhTm9kZSA9IERhdGFOb2RlO1xuLyoqXG4gKiBUZXh0IHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gKi9cbnZhciBUZXh0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUZXh0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRleHQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UZXh0O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZXh0LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gVGV4dDtcbn0oRGF0YU5vZGUpKTtcbmV4cG9ydHMuVGV4dCA9IFRleHQ7XG4vKipcbiAqIENvbW1lbnRzIHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gKi9cbnZhciBDb21tZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb21tZW50LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbW1lbnQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Db21tZW50O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tZW50LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gQ29tbWVudDtcbn0oRGF0YU5vZGUpKTtcbmV4cG9ydHMuQ29tbWVudCA9IENvbW1lbnQ7XG4vKipcbiAqIFByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLCBpbmNsdWRpbmcgZG9jIHR5cGVzLlxuICovXG52YXIgUHJvY2Vzc2luZ0luc3RydWN0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5hbWUsIGRhdGEpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIF90aGlzLnR5cGUgPSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUHJvY2Vzc2luZ0luc3RydWN0aW9uLnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gUHJvY2Vzc2luZ0luc3RydWN0aW9uO1xufShEYXRhTm9kZSkpO1xuZXhwb3J0cy5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247XG4vKipcbiAqIEEgYE5vZGVgIHRoYXQgY2FuIGhhdmUgY2hpbGRyZW4uXG4gKi9cbnZhciBOb2RlV2l0aENoaWxkcmVuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhOb2RlV2l0aENoaWxkcmVuLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjaGlsZHJlbiBDaGlsZHJlbiBvZiB0aGUgbm9kZS4gT25seSBjZXJ0YWluIG5vZGUgdHlwZXMgY2FuIGhhdmUgY2hpbGRyZW4uXG4gICAgICovXG4gICAgZnVuY3Rpb24gTm9kZVdpdGhDaGlsZHJlbihjaGlsZHJlbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlV2l0aENoaWxkcmVuLnByb3RvdHlwZSwgXCJmaXJzdENoaWxkXCIsIHtcbiAgICAgICAgLy8gQWxpYXNlc1xuICAgICAgICAvKiogRmlyc3QgY2hpbGQgb2YgdGhlIG5vZGUuICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuY2hpbGRyZW5bMF0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZVdpdGhDaGlsZHJlbi5wcm90b3R5cGUsIFwibGFzdENoaWxkXCIsIHtcbiAgICAgICAgLyoqIExhc3QgY2hpbGQgb2YgdGhlIG5vZGUuICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGVXaXRoQ2hpbGRyZW4ucHJvdG90eXBlLCBcImNoaWxkTm9kZXNcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgY2hpbGRyZW59LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW47XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gTm9kZVdpdGhDaGlsZHJlbjtcbn0oTm9kZSkpO1xuZXhwb3J0cy5Ob2RlV2l0aENoaWxkcmVuID0gTm9kZVdpdGhDaGlsZHJlbjtcbnZhciBDREFUQSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ0RBVEEsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ0RBVEEoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5DREFUQTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ0RBVEEucHJvdG90eXBlLCBcIm5vZGVUeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBDREFUQTtcbn0oTm9kZVdpdGhDaGlsZHJlbikpO1xuZXhwb3J0cy5DREFUQSA9IENEQVRBO1xuLyoqXG4gKiBUaGUgcm9vdCBub2RlIG9mIHRoZSBkb2N1bWVudC5cbiAqL1xudmFyIERvY3VtZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEb2N1bWVudCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlJvb3Q7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gRG9jdW1lbnQ7XG59KE5vZGVXaXRoQ2hpbGRyZW4pKTtcbmV4cG9ydHMuRG9jdW1lbnQgPSBEb2N1bWVudDtcbi8qKlxuICogQW4gZWxlbWVudCB3aXRoaW4gdGhlIERPTS5cbiAqL1xudmFyIEVsZW1lbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsZW1lbnQsIF9zdXBlcik7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgdGFnLCBlZy4gYGRpdmAsIGBzcGFuYC5cbiAgICAgKiBAcGFyYW0gYXR0cmlicyBPYmplY3QgbWFwcGluZyBhdHRyaWJ1dGUgbmFtZXMgdG8gYXR0cmlidXRlIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0gY2hpbGRyZW4gQ2hpbGRyZW4gb2YgdGhlIG5vZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gRWxlbWVudChuYW1lLCBhdHRyaWJzLCBjaGlsZHJlbiwgdHlwZSkge1xuICAgICAgICBpZiAoY2hpbGRyZW4gPT09IHZvaWQgMCkgeyBjaGlsZHJlbiA9IFtdOyB9XG4gICAgICAgIGlmICh0eXBlID09PSB2b2lkIDApIHsgdHlwZSA9IG5hbWUgPT09IFwic2NyaXB0XCJcbiAgICAgICAgICAgID8gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5TY3JpcHRcbiAgICAgICAgICAgIDogbmFtZSA9PT0gXCJzdHlsZVwiXG4gICAgICAgICAgICAgICAgPyBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlN0eWxlXG4gICAgICAgICAgICAgICAgOiBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlRhZzsgfVxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBjaGlsZHJlbikgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIF90aGlzLmF0dHJpYnMgPSBhdHRyaWJzO1xuICAgICAgICBfdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIFwibm9kZVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCBcInRhZ05hbWVcIiwge1xuICAgICAgICAvLyBET00gTGV2ZWwgMSBhbGlhc2VzXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTYW1lIGFzIHtAbGluayBuYW1lfS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIFwiYXR0cmlidXRlc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmF0dHJpYnMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdGhpcy5hdHRyaWJzW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IChfYSA9IF90aGlzW1wieC1hdHRyaWJzTmFtZXNwYWNlXCJdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbbmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeDogKF9iID0gX3RoaXNbXCJ4LWF0dHJpYnNQcmVmaXhcIl0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYltuYW1lXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIEVsZW1lbnQ7XG59KE5vZGVXaXRoQ2hpbGRyZW4pKTtcbmV4cG9ydHMuRWxlbWVudCA9IEVsZW1lbnQ7XG4vKipcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaXMgYSBgRWxlbWVudGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1RhZyhub2RlKSB7XG4gICAgcmV0dXJuICgwLCBkb21lbGVtZW50dHlwZV8xLmlzVGFnKShub2RlKTtcbn1cbmV4cG9ydHMuaXNUYWcgPSBpc1RhZztcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYENEQVRBYCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGlzQ0RBVEEobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ0RBVEE7XG59XG5leHBvcnRzLmlzQ0RBVEEgPSBpc0NEQVRBO1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgVGV4dGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1RleHQobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuVGV4dDtcbn1cbmV4cG9ydHMuaXNUZXh0ID0gaXNUZXh0O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgQ29tbWVudGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0NvbW1lbnQobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ29tbWVudDtcbn1cbmV4cG9ydHMuaXNDb21tZW50ID0gaXNDb21tZW50O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgUHJvY2Vzc2luZ0luc3RydWN0aW9uYCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGlzRGlyZWN0aXZlKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbn1cbmV4cG9ydHMuaXNEaXJlY3RpdmUgPSBpc0RpcmVjdGl2ZTtcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYFByb2Nlc3NpbmdJbnN0cnVjdGlvbmAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0RvY3VtZW50KG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlJvb3Q7XG59XG5leHBvcnRzLmlzRG9jdW1lbnQgPSBpc0RvY3VtZW50O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyBjaGlsZHJlbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGhhc0NoaWxkcmVuKG5vZGUpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5vZGUsIFwiY2hpbGRyZW5cIik7XG59XG5leHBvcnRzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW47XG4vKipcbiAqIENsb25lIGEgbm9kZSwgYW5kIG9wdGlvbmFsbHkgaXRzIGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSByZWN1cnNpdmUgQ2xvbmUgY2hpbGQgbm9kZXMgYXMgd2VsbC5cbiAqIEByZXR1cm5zIEEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGNsb25lTm9kZShub2RlLCByZWN1cnNpdmUpIHtcbiAgICBpZiAocmVjdXJzaXZlID09PSB2b2lkIDApIHsgcmVjdXJzaXZlID0gZmFsc2U7IH1cbiAgICB2YXIgcmVzdWx0O1xuICAgIGlmIChpc1RleHQobm9kZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IFRleHQobm9kZS5kYXRhKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNDb21tZW50KG5vZGUpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBDb21tZW50KG5vZGUuZGF0YSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzVGFnKG5vZGUpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHJlY3Vyc2l2ZSA/IGNsb25lQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikgOiBbXTtcbiAgICAgICAgdmFyIGNsb25lXzEgPSBuZXcgRWxlbWVudChub2RlLm5hbWUsIF9fYXNzaWduKHt9LCBub2RlLmF0dHJpYnMpLCBjaGlsZHJlbik7XG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7IHJldHVybiAoY2hpbGQucGFyZW50ID0gY2xvbmVfMSk7IH0pO1xuICAgICAgICBpZiAobm9kZS5uYW1lc3BhY2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgY2xvbmVfMS5uYW1lc3BhY2UgPSBub2RlLm5hbWVzcGFjZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSkge1xuICAgICAgICAgICAgY2xvbmVfMVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSA9IF9fYXNzaWduKHt9LCBub2RlW1wieC1hdHRyaWJzTmFtZXNwYWNlXCJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVtcIngtYXR0cmlic1ByZWZpeFwiXSkge1xuICAgICAgICAgICAgY2xvbmVfMVtcIngtYXR0cmlic1ByZWZpeFwiXSA9IF9fYXNzaWduKHt9LCBub2RlW1wieC1hdHRyaWJzUHJlZml4XCJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBjbG9uZV8xO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0NEQVRBKG5vZGUpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHJlY3Vyc2l2ZSA/IGNsb25lQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikgOiBbXTtcbiAgICAgICAgdmFyIGNsb25lXzIgPSBuZXcgQ0RBVEEoY2hpbGRyZW4pO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gKGNoaWxkLnBhcmVudCA9IGNsb25lXzIpOyB9KTtcbiAgICAgICAgcmVzdWx0ID0gY2xvbmVfMjtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNEb2N1bWVudChub2RlKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSByZWN1cnNpdmUgPyBjbG9uZUNoaWxkcmVuKG5vZGUuY2hpbGRyZW4pIDogW107XG4gICAgICAgIHZhciBjbG9uZV8zID0gbmV3IERvY3VtZW50KGNoaWxkcmVuKTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIChjaGlsZC5wYXJlbnQgPSBjbG9uZV8zKTsgfSk7XG4gICAgICAgIGlmIChub2RlW1wieC1tb2RlXCJdKSB7XG4gICAgICAgICAgICBjbG9uZV8zW1wieC1tb2RlXCJdID0gbm9kZVtcIngtbW9kZVwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBjbG9uZV8zO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0RpcmVjdGl2ZShub2RlKSkge1xuICAgICAgICB2YXIgaW5zdHJ1Y3Rpb24gPSBuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5vZGUubmFtZSwgbm9kZS5kYXRhKTtcbiAgICAgICAgaWYgKG5vZGVbXCJ4LW5hbWVcIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bXCJ4LW5hbWVcIl0gPSBub2RlW1wieC1uYW1lXCJdO1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bXCJ4LXB1YmxpY0lkXCJdID0gbm9kZVtcIngtcHVibGljSWRcIl07XG4gICAgICAgICAgICBpbnN0cnVjdGlvbltcIngtc3lzdGVtSWRcIl0gPSBub2RlW1wieC1zeXN0ZW1JZFwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBpbnN0cnVjdGlvbjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZCB5ZXQ6IFwiLmNvbmNhdChub2RlLnR5cGUpKTtcbiAgICB9XG4gICAgcmVzdWx0LnN0YXJ0SW5kZXggPSBub2RlLnN0YXJ0SW5kZXg7XG4gICAgcmVzdWx0LmVuZEluZGV4ID0gbm9kZS5lbmRJbmRleDtcbiAgICBpZiAobm9kZS5zb3VyY2VDb2RlTG9jYXRpb24gIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQuc291cmNlQ29kZUxvY2F0aW9uID0gbm9kZS5zb3VyY2VDb2RlTG9jYXRpb247XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLmNsb25lTm9kZSA9IGNsb25lTm9kZTtcbmZ1bmN0aW9uIGNsb25lQ2hpbGRyZW4oY2hpbGRzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gY2hpbGRzLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIGNsb25lTm9kZShjaGlsZCwgdHJ1ZSk7IH0pO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hpbGRyZW5baV0ucHJldiA9IGNoaWxkcmVuW2kgLSAxXTtcbiAgICAgICAgY2hpbGRyZW5baSAtIDFdLm5leHQgPSBjaGlsZHJlbltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRvbUhhbmRsZXIgPSB2b2lkIDA7XG52YXIgZG9tZWxlbWVudHR5cGVfMSA9IHJlcXVpcmUoXCJkb21lbGVtZW50dHlwZVwiKTtcbnZhciBub2RlX2pzXzEgPSByZXF1aXJlKFwiLi9ub2RlLmpzXCIpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL25vZGUuanNcIiksIGV4cG9ydHMpO1xuLy8gRGVmYXVsdCBvcHRpb25zXG52YXIgZGVmYXVsdE9wdHMgPSB7XG4gICAgd2l0aFN0YXJ0SW5kaWNlczogZmFsc2UsXG4gICAgd2l0aEVuZEluZGljZXM6IGZhbHNlLFxuICAgIHhtbE1vZGU6IGZhbHNlLFxufTtcbnZhciBEb21IYW5kbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsZWQgb25jZSBwYXJzaW5nIGhhcyBjb21wbGV0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgU2V0dGluZ3MgZm9yIHRoZSBoYW5kbGVyLlxuICAgICAqIEBwYXJhbSBlbGVtZW50Q0IgQ2FsbGJhY2sgd2hlbmV2ZXIgYSB0YWcgaXMgY2xvc2VkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIERvbUhhbmRsZXIoY2FsbGJhY2ssIG9wdGlvbnMsIGVsZW1lbnRDQikge1xuICAgICAgICAvKiogVGhlIGVsZW1lbnRzIG9mIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5kb20gPSBbXTtcbiAgICAgICAgLyoqIFRoZSByb290IGVsZW1lbnQgZm9yIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5yb290ID0gbmV3IG5vZGVfanNfMS5Eb2N1bWVudCh0aGlzLmRvbSk7XG4gICAgICAgIC8qKiBJbmRpY2F0ZWQgd2hldGhlciBwYXJzaW5nIGhhcyBiZWVuIGNvbXBsZXRlZC4gKi9cbiAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIC8qKiBTdGFjayBvZiBvcGVuIHRhZ3MuICovXG4gICAgICAgIHRoaXMudGFnU3RhY2sgPSBbdGhpcy5yb290XTtcbiAgICAgICAgLyoqIEEgZGF0YSBub2RlIHRoYXQgaXMgc3RpbGwgYmVpbmcgd3JpdHRlbiB0by4gKi9cbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHBhcnNlciBpbnN0YW5jZS4gVXNlZCBmb3IgbG9jYXRpb24gaW5mb3JtYXRpb24uICovXG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICAgICAgLy8gTWFrZSBpdCBwb3NzaWJsZSB0byBza2lwIGFyZ3VtZW50cywgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBlbGVtZW50Q0IgPSBvcHRpb25zO1xuICAgICAgICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBjYWxsYmFjaztcbiAgICAgICAgICAgIGNhbGxiYWNrID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjayAhPT0gbnVsbCAmJiBjYWxsYmFjayAhPT0gdm9pZCAwID8gY2FsbGJhY2sgOiBudWxsO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCA/IG9wdGlvbnMgOiBkZWZhdWx0T3B0cztcbiAgICAgICAgdGhpcy5lbGVtZW50Q0IgPSBlbGVtZW50Q0IgIT09IG51bGwgJiYgZWxlbWVudENCICE9PSB2b2lkIDAgPyBlbGVtZW50Q0IgOiBudWxsO1xuICAgIH1cbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnBhcnNlcmluaXQgPSBmdW5jdGlvbiAocGFyc2VyKSB7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgIH07XG4gICAgLy8gUmVzZXRzIHRoZSBoYW5kbGVyIGJhY2sgdG8gc3RhcnRpbmcgc3RhdGVcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmRvbSA9IFtdO1xuICAgICAgICB0aGlzLnJvb3QgPSBuZXcgbm9kZV9qc18xLkRvY3VtZW50KHRoaXMuZG9tKTtcbiAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGFnU3RhY2sgPSBbdGhpcy5yb290XTtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICB9O1xuICAgIC8vIFNpZ25hbHMgdGhlIGhhbmRsZXIgdGhhdCBwYXJzaW5nIGlzIGRvbmVcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmhhbmRsZUNhbGxiYWNrKG51bGwpO1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25lcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICB0aGlzLmhhbmRsZUNhbGxiYWNrKGVycm9yKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY2xvc2V0YWcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgICAgICB2YXIgZWxlbSA9IHRoaXMudGFnU3RhY2sucG9wKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aEVuZEluZGljZXMpIHtcbiAgICAgICAgICAgIGVsZW0uZW5kSW5kZXggPSB0aGlzLnBhcnNlci5lbmRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbGVtZW50Q0IpXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRDQihlbGVtKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9ub3BlbnRhZyA9IGZ1bmN0aW9uIChuYW1lLCBhdHRyaWJzKSB7XG4gICAgICAgIHZhciB0eXBlID0gdGhpcy5vcHRpb25zLnhtbE1vZGUgPyBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlRhZyA6IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBuZXcgbm9kZV9qc18xLkVsZW1lbnQobmFtZSwgYXR0cmlicywgdW5kZWZpbmVkLCB0eXBlKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRhZ1N0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnRleHQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgbGFzdE5vZGUgPSB0aGlzLmxhc3ROb2RlO1xuICAgICAgICBpZiAobGFzdE5vZGUgJiYgbGFzdE5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UZXh0KSB7XG4gICAgICAgICAgICBsYXN0Tm9kZS5kYXRhICs9IGRhdGE7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhFbmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgICAgbGFzdE5vZGUuZW5kSW5kZXggPSB0aGlzLnBhcnNlci5lbmRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gbmV3IG5vZGVfanNfMS5UZXh0KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY29tbWVudCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmxhc3ROb2RlICYmIHRoaXMubGFzdE5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Db21tZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3ROb2RlLmRhdGEgKz0gZGF0YTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuQ29tbWVudChkYXRhKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICB0aGlzLmxhc3ROb2RlID0gbm9kZTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY29tbWVudGVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmNkYXRhc3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0ZXh0ID0gbmV3IG5vZGVfanNfMS5UZXh0KFwiXCIpO1xuICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuQ0RBVEEoW3RleHRdKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICB0ZXh0LnBhcmVudCA9IG5vZGU7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSB0ZXh0O1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25jZGF0YWVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbiA9IGZ1bmN0aW9uIChuYW1lLCBkYXRhKSB7XG4gICAgICAgIHZhciBub2RlID0gbmV3IG5vZGVfanNfMS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obmFtZSwgZGF0YSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLmhhbmRsZUNhbGxiYWNrID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrKGVycm9yLCB0aGlzLmRvbSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5hZGROb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMudGFnU3RhY2tbdGhpcy50YWdTdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgdmFyIHByZXZpb3VzU2libGluZyA9IHBhcmVudC5jaGlsZHJlbltwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aFN0YXJ0SW5kaWNlcykge1xuICAgICAgICAgICAgbm9kZS5zdGFydEluZGV4ID0gdGhpcy5wYXJzZXIuc3RhcnRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhFbmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBub2RlLmVuZEluZGV4ID0gdGhpcy5wYXJzZXIuZW5kSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgIGlmIChwcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgICAgIG5vZGUucHJldiA9IHByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIHByZXZpb3VzU2libGluZy5uZXh0ID0gbm9kZTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gRG9tSGFuZGxlcjtcbn0oKSk7XG5leHBvcnRzLkRvbUhhbmRsZXIgPSBEb21IYW5kbGVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gRG9tSGFuZGxlcjtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYWRhcHRlciA9IGV4cG9ydHMuc2VyaWFsaXplRG9jdHlwZUNvbnRlbnQgPSB2b2lkIDA7XG5jb25zdCBwYXJzZTVfMSA9IHJlcXVpcmUoXCJwYXJzZTVcIik7XG5jb25zdCBkb21oYW5kbGVyXzEgPSByZXF1aXJlKFwiZG9taGFuZGxlclwiKTtcbmZ1bmN0aW9uIGNyZWF0ZVRleHROb2RlKHZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBkb21oYW5kbGVyXzEuVGV4dCh2YWx1ZSk7XG59XG5mdW5jdGlvbiBlbnF1b3RlRG9jdHlwZUlkKGlkKSB7XG4gICAgY29uc3QgcXVvdGUgPSBpZC5pbmNsdWRlcygnXCInKSA/IFwiJ1wiIDogJ1wiJztcbiAgICByZXR1cm4gcXVvdGUgKyBpZCArIHF1b3RlO1xufVxuLyoqIEBpbnRlcm5hbCAqL1xuZnVuY3Rpb24gc2VyaWFsaXplRG9jdHlwZUNvbnRlbnQobmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKSB7XG4gICAgbGV0IHN0ciA9ICchRE9DVFlQRSAnO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICAgIHN0ciArPSBuYW1lO1xuICAgIH1cbiAgICBpZiAocHVibGljSWQpIHtcbiAgICAgICAgc3RyICs9IGAgUFVCTElDICR7ZW5xdW90ZURvY3R5cGVJZChwdWJsaWNJZCl9YDtcbiAgICB9XG4gICAgZWxzZSBpZiAoc3lzdGVtSWQpIHtcbiAgICAgICAgc3RyICs9ICcgU1lTVEVNJztcbiAgICB9XG4gICAgaWYgKHN5c3RlbUlkKSB7XG4gICAgICAgIHN0ciArPSBgICR7ZW5xdW90ZURvY3R5cGVJZChzeXN0ZW1JZCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn1cbmV4cG9ydHMuc2VyaWFsaXplRG9jdHlwZUNvbnRlbnQgPSBzZXJpYWxpemVEb2N0eXBlQ29udGVudDtcbmV4cG9ydHMuYWRhcHRlciA9IHtcbiAgICAvLyBSZS1leHBvcnRzIGZyb20gZG9taGFuZGxlclxuICAgIGlzQ29tbWVudE5vZGU6IGRvbWhhbmRsZXJfMS5pc0NvbW1lbnQsXG4gICAgaXNFbGVtZW50Tm9kZTogZG9taGFuZGxlcl8xLmlzVGFnLFxuICAgIGlzVGV4dE5vZGU6IGRvbWhhbmRsZXJfMS5pc1RleHQsXG4gICAgLy9Ob2RlIGNvbnN0cnVjdGlvblxuICAgIGNyZWF0ZURvY3VtZW50KCkge1xuICAgICAgICBjb25zdCBub2RlID0gbmV3IGRvbWhhbmRsZXJfMS5Eb2N1bWVudChbXSk7XG4gICAgICAgIG5vZGVbJ3gtbW9kZSddID0gcGFyc2U1XzEuaHRtbC5ET0NVTUVOVF9NT0RFLk5PX1FVSVJLUztcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfSxcbiAgICBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCkge1xuICAgICAgICByZXR1cm4gbmV3IGRvbWhhbmRsZXJfMS5Eb2N1bWVudChbXSk7XG4gICAgfSxcbiAgICBjcmVhdGVFbGVtZW50KHRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgYXR0cnMpIHtcbiAgICAgICAgY29uc3QgYXR0cmlicyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGNvbnN0IGF0dHJpYnNOYW1lc3BhY2UgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBjb25zdCBhdHRyaWJzUHJlZml4ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgYXR0ck5hbWUgPSBhdHRyc1tpXS5uYW1lO1xuICAgICAgICAgICAgYXR0cmlic1thdHRyTmFtZV0gPSBhdHRyc1tpXS52YWx1ZTtcbiAgICAgICAgICAgIGF0dHJpYnNOYW1lc3BhY2VbYXR0ck5hbWVdID0gYXR0cnNbaV0ubmFtZXNwYWNlO1xuICAgICAgICAgICAgYXR0cmlic1ByZWZpeFthdHRyTmFtZV0gPSBhdHRyc1tpXS5wcmVmaXg7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBkb21oYW5kbGVyXzEuRWxlbWVudCh0YWdOYW1lLCBhdHRyaWJzLCBbXSk7XG4gICAgICAgIG5vZGUubmFtZXNwYWNlID0gbmFtZXNwYWNlVVJJO1xuICAgICAgICBub2RlWyd4LWF0dHJpYnNOYW1lc3BhY2UnXSA9IGF0dHJpYnNOYW1lc3BhY2U7XG4gICAgICAgIG5vZGVbJ3gtYXR0cmlic1ByZWZpeCddID0gYXR0cmlic1ByZWZpeDtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfSxcbiAgICBjcmVhdGVDb21tZW50Tm9kZShkYXRhKSB7XG4gICAgICAgIHJldHVybiBuZXcgZG9taGFuZGxlcl8xLkNvbW1lbnQoZGF0YSk7XG4gICAgfSxcbiAgICAvL1RyZWUgbXV0YXRpb25cbiAgICBhcHBlbmRDaGlsZChwYXJlbnROb2RlLCBuZXdOb2RlKSB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBwYXJlbnROb2RlLmNoaWxkcmVuW3BhcmVudE5vZGUuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICBwcmV2Lm5leHQgPSBuZXdOb2RlO1xuICAgICAgICAgICAgbmV3Tm9kZS5wcmV2ID0gcHJldjtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnROb2RlLmNoaWxkcmVuLnB1c2gobmV3Tm9kZSk7XG4gICAgICAgIG5ld05vZGUucGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICB9LFxuICAgIGluc2VydEJlZm9yZShwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgIGNvbnN0IGluc2VydGlvbklkeCA9IHBhcmVudE5vZGUuY2hpbGRyZW4uaW5kZXhPZihyZWZlcmVuY2VOb2RlKTtcbiAgICAgICAgY29uc3QgeyBwcmV2IH0gPSByZWZlcmVuY2VOb2RlO1xuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgcHJldi5uZXh0ID0gbmV3Tm9kZTtcbiAgICAgICAgICAgIG5ld05vZGUucHJldiA9IHByZXY7XG4gICAgICAgIH1cbiAgICAgICAgcmVmZXJlbmNlTm9kZS5wcmV2ID0gbmV3Tm9kZTtcbiAgICAgICAgbmV3Tm9kZS5uZXh0ID0gcmVmZXJlbmNlTm9kZTtcbiAgICAgICAgcGFyZW50Tm9kZS5jaGlsZHJlbi5zcGxpY2UoaW5zZXJ0aW9uSWR4LCAwLCBuZXdOb2RlKTtcbiAgICAgICAgbmV3Tm9kZS5wYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgIH0sXG4gICAgc2V0VGVtcGxhdGVDb250ZW50KHRlbXBsYXRlRWxlbWVudCwgY29udGVudEVsZW1lbnQpIHtcbiAgICAgICAgZXhwb3J0cy5hZGFwdGVyLmFwcGVuZENoaWxkKHRlbXBsYXRlRWxlbWVudCwgY29udGVudEVsZW1lbnQpO1xuICAgIH0sXG4gICAgZ2V0VGVtcGxhdGVDb250ZW50KHRlbXBsYXRlRWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGVtcGxhdGVFbGVtZW50LmNoaWxkcmVuWzBdO1xuICAgIH0sXG4gICAgc2V0RG9jdW1lbnRUeXBlKGRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHNlcmlhbGl6ZURvY3R5cGVDb250ZW50KG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCk7XG4gICAgICAgIGxldCBkb2N0eXBlTm9kZSA9IGRvY3VtZW50LmNoaWxkcmVuLmZpbmQoKG5vZGUpID0+ICgwLCBkb21oYW5kbGVyXzEuaXNEaXJlY3RpdmUpKG5vZGUpICYmIG5vZGUubmFtZSA9PT0gJyFkb2N0eXBlJyk7XG4gICAgICAgIGlmIChkb2N0eXBlTm9kZSkge1xuICAgICAgICAgICAgZG9jdHlwZU5vZGUuZGF0YSA9IGRhdGEgIT09IG51bGwgJiYgZGF0YSAhPT0gdm9pZCAwID8gZGF0YSA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkb2N0eXBlTm9kZSA9IG5ldyBkb21oYW5kbGVyXzEuUHJvY2Vzc2luZ0luc3RydWN0aW9uKCchZG9jdHlwZScsIGRhdGEpO1xuICAgICAgICAgICAgZXhwb3J0cy5hZGFwdGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LCBkb2N0eXBlTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZG9jdHlwZU5vZGVbJ3gtbmFtZSddID0gbmFtZSAhPT0gbnVsbCAmJiBuYW1lICE9PSB2b2lkIDAgPyBuYW1lIDogdW5kZWZpbmVkO1xuICAgICAgICBkb2N0eXBlTm9kZVsneC1wdWJsaWNJZCddID0gcHVibGljSWQgIT09IG51bGwgJiYgcHVibGljSWQgIT09IHZvaWQgMCA/IHB1YmxpY0lkIDogdW5kZWZpbmVkO1xuICAgICAgICBkb2N0eXBlTm9kZVsneC1zeXN0ZW1JZCddID0gc3lzdGVtSWQgIT09IG51bGwgJiYgc3lzdGVtSWQgIT09IHZvaWQgMCA/IHN5c3RlbUlkIDogdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgc2V0RG9jdW1lbnRNb2RlKGRvY3VtZW50LCBtb2RlKSB7XG4gICAgICAgIGRvY3VtZW50Wyd4LW1vZGUnXSA9IG1vZGU7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudE1vZGUoZG9jdW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50Wyd4LW1vZGUnXTtcbiAgICB9LFxuICAgIGRldGFjaE5vZGUobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5wYXJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IG5vZGUucGFyZW50LmNoaWxkcmVuLmluZGV4T2Yobm9kZSk7XG4gICAgICAgICAgICBjb25zdCB7IHByZXYsIG5leHQgfSA9IG5vZGU7XG4gICAgICAgICAgICBub2RlLnByZXYgPSBudWxsO1xuICAgICAgICAgICAgbm9kZS5uZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICAgICAgcHJldi5uZXh0ID0gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgICAgICAgbmV4dC5wcmV2ID0gcHJldjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUucGFyZW50LmNoaWxkcmVuLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgbm9kZS5wYXJlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBpbnNlcnRUZXh0KHBhcmVudE5vZGUsIHRleHQpIHtcbiAgICAgICAgY29uc3QgbGFzdENoaWxkID0gcGFyZW50Tm9kZS5jaGlsZHJlbltwYXJlbnROb2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAobGFzdENoaWxkICYmICgwLCBkb21oYW5kbGVyXzEuaXNUZXh0KShsYXN0Q2hpbGQpKSB7XG4gICAgICAgICAgICBsYXN0Q2hpbGQuZGF0YSArPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZXhwb3J0cy5hZGFwdGVyLmFwcGVuZENoaWxkKHBhcmVudE5vZGUsIGNyZWF0ZVRleHROb2RlKHRleHQpKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaW5zZXJ0VGV4dEJlZm9yZShwYXJlbnROb2RlLCB0ZXh0LCByZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgIGNvbnN0IHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZHJlbltwYXJlbnROb2RlLmNoaWxkcmVuLmluZGV4T2YocmVmZXJlbmNlTm9kZSkgLSAxXTtcbiAgICAgICAgaWYgKHByZXZOb2RlICYmICgwLCBkb21oYW5kbGVyXzEuaXNUZXh0KShwcmV2Tm9kZSkpIHtcbiAgICAgICAgICAgIHByZXZOb2RlLmRhdGEgKz0gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGV4cG9ydHMuYWRhcHRlci5pbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgY3JlYXRlVGV4dE5vZGUodGV4dCksIHJlZmVyZW5jZU5vZGUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhZG9wdEF0dHJpYnV0ZXMocmVjaXBpZW50LCBhdHRycykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRyTmFtZSA9IGF0dHJzW2ldLm5hbWU7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlY2lwaWVudC5hdHRyaWJzW2F0dHJOYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByZWNpcGllbnQuYXR0cmlic1thdHRyTmFtZV0gPSBhdHRyc1tpXS52YWx1ZTtcbiAgICAgICAgICAgICAgICByZWNpcGllbnRbJ3gtYXR0cmlic05hbWVzcGFjZSddW2F0dHJOYW1lXSA9IGF0dHJzW2ldLm5hbWVzcGFjZTtcbiAgICAgICAgICAgICAgICByZWNpcGllbnRbJ3gtYXR0cmlic1ByZWZpeCddW2F0dHJOYW1lXSA9IGF0dHJzW2ldLnByZWZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgLy9UcmVlIHRyYXZlcnNpbmdcbiAgICBnZXRGaXJzdENoaWxkKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW5bMF07XG4gICAgfSxcbiAgICBnZXRDaGlsZE5vZGVzKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW47XG4gICAgfSxcbiAgICBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUucGFyZW50O1xuICAgIH0sXG4gICAgZ2V0QXR0ckxpc3QoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5hdHRyaWJ1dGVzO1xuICAgIH0sXG4gICAgLy9Ob2RlIGRhdGFcbiAgICBnZXRUYWdOYW1lKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQubmFtZTtcbiAgICB9LFxuICAgIGdldE5hbWVzcGFjZVVSSShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50Lm5hbWVzcGFjZTtcbiAgICB9LFxuICAgIGdldFRleHROb2RlQ29udGVudCh0ZXh0Tm9kZSkge1xuICAgICAgICByZXR1cm4gdGV4dE5vZGUuZGF0YTtcbiAgICB9LFxuICAgIGdldENvbW1lbnROb2RlQ29udGVudChjb21tZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gY29tbWVudE5vZGUuZGF0YTtcbiAgICB9LFxuICAgIGdldERvY3VtZW50VHlwZU5vZGVOYW1lKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IGRvY3R5cGVOb2RlWyd4LW5hbWUnXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudFR5cGVOb2RlUHVibGljSWQoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gZG9jdHlwZU5vZGVbJ3gtcHVibGljSWQnXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudFR5cGVOb2RlU3lzdGVtSWQoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gZG9jdHlwZU5vZGVbJ3gtc3lzdGVtSWQnXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgfSxcbiAgICAvL05vZGUgdHlwZXNcbiAgICBpc0RvY3VtZW50VHlwZU5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gKDAsIGRvbWhhbmRsZXJfMS5pc0RpcmVjdGl2ZSkobm9kZSkgJiYgbm9kZS5uYW1lID09PSAnIWRvY3R5cGUnO1xuICAgIH0sXG4gICAgLy8gU291cmNlIGNvZGUgbG9jYXRpb25cbiAgICBzZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUsIGxvY2F0aW9uKSB7XG4gICAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICAgICAgbm9kZS5zdGFydEluZGV4ID0gbG9jYXRpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICBub2RlLmVuZEluZGV4ID0gbG9jYXRpb24uZW5kT2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIG5vZGUuc291cmNlQ29kZUxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgfSxcbiAgICBnZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuc291cmNlQ29kZUxvY2F0aW9uO1xuICAgIH0sXG4gICAgdXBkYXRlTm9kZVNvdXJjZUNvZGVMb2NhdGlvbihub2RlLCBlbmRMb2NhdGlvbikge1xuICAgICAgICBpZiAoZW5kTG9jYXRpb24uZW5kT2Zmc2V0ICE9IG51bGwpXG4gICAgICAgICAgICBub2RlLmVuZEluZGV4ID0gZW5kTG9jYXRpb24uZW5kT2Zmc2V0O1xuICAgICAgICBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbiA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgbm9kZS5zb3VyY2VDb2RlTG9jYXRpb24pLCBlbmRMb2NhdGlvbik7XG4gICAgfSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY2xvbmVOb2RlID0gZXhwb3J0cy5oYXNDaGlsZHJlbiA9IGV4cG9ydHMuaXNEb2N1bWVudCA9IGV4cG9ydHMuaXNEaXJlY3RpdmUgPSBleHBvcnRzLmlzQ29tbWVudCA9IGV4cG9ydHMuaXNUZXh0ID0gZXhwb3J0cy5pc0NEQVRBID0gZXhwb3J0cy5pc1RhZyA9IGV4cG9ydHMuRWxlbWVudCA9IGV4cG9ydHMuRG9jdW1lbnQgPSBleHBvcnRzLkNEQVRBID0gZXhwb3J0cy5Ob2RlV2l0aENoaWxkcmVuID0gZXhwb3J0cy5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBleHBvcnRzLkNvbW1lbnQgPSBleHBvcnRzLlRleHQgPSBleHBvcnRzLkRhdGFOb2RlID0gZXhwb3J0cy5Ob2RlID0gdm9pZCAwO1xudmFyIGRvbWVsZW1lbnR0eXBlXzEgPSByZXF1aXJlKFwiZG9tZWxlbWVudHR5cGVcIik7XG4vKipcbiAqIFRoaXMgb2JqZWN0IHdpbGwgYmUgdXNlZCBhcyB0aGUgcHJvdG90eXBlIGZvciBOb2RlcyB3aGVuIGNyZWF0aW5nIGFcbiAqIERPTS1MZXZlbC0xLWNvbXBsaWFudCBzdHJ1Y3R1cmUuXG4gKi9cbnZhciBOb2RlID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE5vZGUoKSB7XG4gICAgICAgIC8qKiBQYXJlbnQgb2YgdGhlIG5vZGUgKi9cbiAgICAgICAgdGhpcy5wYXJlbnQgPSBudWxsO1xuICAgICAgICAvKiogUHJldmlvdXMgc2libGluZyAqL1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgICAgICAvKiogTmV4dCBzaWJsaW5nICovXG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIC8qKiBUaGUgc3RhcnQgaW5kZXggb2YgdGhlIG5vZGUuIFJlcXVpcmVzIGB3aXRoU3RhcnRJbmRpY2VzYCBvbiB0aGUgaGFuZGxlciB0byBiZSBgdHJ1ZS4gKi9cbiAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gbnVsbDtcbiAgICAgICAgLyoqIFRoZSBlbmQgaW5kZXggb2YgdGhlIG5vZGUuIFJlcXVpcmVzIGB3aXRoRW5kSW5kaWNlc2Agb24gdGhlIGhhbmRsZXIgdG8gYmUgYHRydWUuICovXG4gICAgICAgIHRoaXMuZW5kSW5kZXggPSBudWxsO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZS5wcm90b3R5cGUsIFwicGFyZW50Tm9kZVwiLCB7XG4gICAgICAgIC8vIFJlYWQtd3JpdGUgYWxpYXNlcyBmb3IgcHJvcGVydGllc1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgcGFyZW50fS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAocGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlLnByb3RvdHlwZSwgXCJwcmV2aW91c1NpYmxpbmdcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgcHJldn0uXG4gICAgICAgICAqIFtET00gc3BlY10oaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnKS1jb21wYXRpYmxlIGFsaWFzLlxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcmV2O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIChwcmV2KSB7XG4gICAgICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGUucHJvdG90eXBlLCBcIm5leHRTaWJsaW5nXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIG5leHR9LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubmV4dDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAobmV4dCkge1xuICAgICAgICAgICAgdGhpcy5uZXh0ID0gbmV4dDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIC8qKlxuICAgICAqIENsb25lIHRoaXMgbm9kZSwgYW5kIG9wdGlvbmFsbHkgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY3Vyc2l2ZSBDbG9uZSBjaGlsZCBub2RlcyBhcyB3ZWxsLlxuICAgICAqIEByZXR1cm5zIEEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gICAgICovXG4gICAgTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlID0gZnVuY3Rpb24gKHJlY3Vyc2l2ZSkge1xuICAgICAgICBpZiAocmVjdXJzaXZlID09PSB2b2lkIDApIHsgcmVjdXJzaXZlID0gZmFsc2U7IH1cbiAgICAgICAgcmV0dXJuIGNsb25lTm9kZSh0aGlzLCByZWN1cnNpdmUpO1xuICAgIH07XG4gICAgcmV0dXJuIE5vZGU7XG59KCkpO1xuZXhwb3J0cy5Ob2RlID0gTm9kZTtcbi8qKlxuICogQSBub2RlIHRoYXQgY29udGFpbnMgc29tZSBkYXRhLlxuICovXG52YXIgRGF0YU5vZGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKERhdGFOb2RlLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRhIFRoZSBjb250ZW50IG9mIHRoZSBkYXRhIG5vZGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBEYXRhTm9kZShkYXRhKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlci5jYWxsKHRoaXMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLmRhdGEgPSBkYXRhO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEYXRhTm9kZS5wcm90b3R5cGUsIFwibm9kZVZhbHVlXCIsIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNhbWUgYXMge0BsaW5rIGRhdGF9LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBEYXRhTm9kZTtcbn0oTm9kZSkpO1xuZXhwb3J0cy5EYXRhTm9kZSA9IERhdGFOb2RlO1xuLyoqXG4gKiBUZXh0IHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gKi9cbnZhciBUZXh0ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhUZXh0LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIFRleHQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UZXh0O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShUZXh0LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gVGV4dDtcbn0oRGF0YU5vZGUpKTtcbmV4cG9ydHMuVGV4dCA9IFRleHQ7XG4vKipcbiAqIENvbW1lbnRzIHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gKi9cbnZhciBDb21tZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhDb21tZW50LCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIENvbW1lbnQoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Db21tZW50O1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDb21tZW50LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gQ29tbWVudDtcbn0oRGF0YU5vZGUpKTtcbmV4cG9ydHMuQ29tbWVudCA9IENvbW1lbnQ7XG4vKipcbiAqIFByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb25zLCBpbmNsdWRpbmcgZG9jIHR5cGVzLlxuICovXG52YXIgUHJvY2Vzc2luZ0luc3RydWN0aW9uID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5hbWUsIGRhdGEpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZGF0YSkgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIF90aGlzLnR5cGUgPSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUHJvY2Vzc2luZ0luc3RydWN0aW9uLnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gUHJvY2Vzc2luZ0luc3RydWN0aW9uO1xufShEYXRhTm9kZSkpO1xuZXhwb3J0cy5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247XG4vKipcbiAqIEEgYE5vZGVgIHRoYXQgY2FuIGhhdmUgY2hpbGRyZW4uXG4gKi9cbnZhciBOb2RlV2l0aENoaWxkcmVuID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhOb2RlV2l0aENoaWxkcmVuLCBfc3VwZXIpO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjaGlsZHJlbiBDaGlsZHJlbiBvZiB0aGUgbm9kZS4gT25seSBjZXJ0YWluIG5vZGUgdHlwZXMgY2FuIGhhdmUgY2hpbGRyZW4uXG4gICAgICovXG4gICAgZnVuY3Rpb24gTm9kZVdpdGhDaGlsZHJlbihjaGlsZHJlbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOb2RlV2l0aENoaWxkcmVuLnByb3RvdHlwZSwgXCJmaXJzdENoaWxkXCIsIHtcbiAgICAgICAgLy8gQWxpYXNlc1xuICAgICAgICAvKiogRmlyc3QgY2hpbGQgb2YgdGhlIG5vZGUuICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMuY2hpbGRyZW5bMF0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGw7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTm9kZVdpdGhDaGlsZHJlbi5wcm90b3R5cGUsIFwibGFzdENoaWxkXCIsIHtcbiAgICAgICAgLyoqIExhc3QgY2hpbGQgb2YgdGhlIG5vZGUuICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE5vZGVXaXRoQ2hpbGRyZW4ucHJvdG90eXBlLCBcImNoaWxkTm9kZXNcIiwge1xuICAgICAgICAvKipcbiAgICAgICAgICogU2FtZSBhcyB7QGxpbmsgY2hpbGRyZW59LlxuICAgICAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgICAgICovXG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW47XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gTm9kZVdpdGhDaGlsZHJlbjtcbn0oTm9kZSkpO1xuZXhwb3J0cy5Ob2RlV2l0aENoaWxkcmVuID0gTm9kZVdpdGhDaGlsZHJlbjtcbnZhciBDREFUQSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoQ0RBVEEsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gQ0RBVEEoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy50eXBlID0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5DREFUQTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQ0RBVEEucHJvdG90eXBlLCBcIm5vZGVUeXBlXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBDREFUQTtcbn0oTm9kZVdpdGhDaGlsZHJlbikpO1xuZXhwb3J0cy5DREFUQSA9IENEQVRBO1xuLyoqXG4gKiBUaGUgcm9vdCBub2RlIG9mIHRoZSBkb2N1bWVudC5cbiAqL1xudmFyIERvY3VtZW50ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhEb2N1bWVudCwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBEb2N1bWVudCgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyICE9PSBudWxsICYmIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gICAgICAgIF90aGlzLnR5cGUgPSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlJvb3Q7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwgXCJub2RlVHlwZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIDk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICByZXR1cm4gRG9jdW1lbnQ7XG59KE5vZGVXaXRoQ2hpbGRyZW4pKTtcbmV4cG9ydHMuRG9jdW1lbnQgPSBEb2N1bWVudDtcbi8qKlxuICogQW4gZWxlbWVudCB3aXRoaW4gdGhlIERPTS5cbiAqL1xudmFyIEVsZW1lbnQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEVsZW1lbnQsIF9zdXBlcik7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgdGFnLCBlZy4gYGRpdmAsIGBzcGFuYC5cbiAgICAgKiBAcGFyYW0gYXR0cmlicyBPYmplY3QgbWFwcGluZyBhdHRyaWJ1dGUgbmFtZXMgdG8gYXR0cmlidXRlIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0gY2hpbGRyZW4gQ2hpbGRyZW4gb2YgdGhlIG5vZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gRWxlbWVudChuYW1lLCBhdHRyaWJzLCBjaGlsZHJlbiwgdHlwZSkge1xuICAgICAgICBpZiAoY2hpbGRyZW4gPT09IHZvaWQgMCkgeyBjaGlsZHJlbiA9IFtdOyB9XG4gICAgICAgIGlmICh0eXBlID09PSB2b2lkIDApIHsgdHlwZSA9IG5hbWUgPT09IFwic2NyaXB0XCJcbiAgICAgICAgICAgID8gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5TY3JpcHRcbiAgICAgICAgICAgIDogbmFtZSA9PT0gXCJzdHlsZVwiXG4gICAgICAgICAgICAgICAgPyBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlN0eWxlXG4gICAgICAgICAgICAgICAgOiBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlRhZzsgfVxuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBjaGlsZHJlbikgfHwgdGhpcztcbiAgICAgICAgX3RoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIF90aGlzLmF0dHJpYnMgPSBhdHRyaWJzO1xuICAgICAgICBfdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIFwibm9kZVR5cGVcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnQucHJvdG90eXBlLCBcInRhZ05hbWVcIiwge1xuICAgICAgICAvLyBET00gTGV2ZWwgMSBhbGlhc2VzXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTYW1lIGFzIHtAbGluayBuYW1lfS5cbiAgICAgICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICAgICAqL1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRWxlbWVudC5wcm90b3R5cGUsIFwiYXR0cmlidXRlc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmF0dHJpYnMpLm1hcChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdGhpcy5hdHRyaWJzW25hbWVdLFxuICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IChfYSA9IF90aGlzW1wieC1hdHRyaWJzTmFtZXNwYWNlXCJdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbbmFtZV0sXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeDogKF9iID0gX3RoaXNbXCJ4LWF0dHJpYnNQcmVmaXhcIl0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYltuYW1lXSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIEVsZW1lbnQ7XG59KE5vZGVXaXRoQ2hpbGRyZW4pKTtcbmV4cG9ydHMuRWxlbWVudCA9IEVsZW1lbnQ7XG4vKipcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaXMgYSBgRWxlbWVudGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1RhZyhub2RlKSB7XG4gICAgcmV0dXJuICgwLCBkb21lbGVtZW50dHlwZV8xLmlzVGFnKShub2RlKTtcbn1cbmV4cG9ydHMuaXNUYWcgPSBpc1RhZztcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYENEQVRBYCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGlzQ0RBVEEobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ0RBVEE7XG59XG5leHBvcnRzLmlzQ0RBVEEgPSBpc0NEQVRBO1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgVGV4dGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc1RleHQobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuVGV4dDtcbn1cbmV4cG9ydHMuaXNUZXh0ID0gaXNUZXh0O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgQ29tbWVudGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0NvbW1lbnQobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IGRvbWVsZW1lbnR0eXBlXzEuRWxlbWVudFR5cGUuQ29tbWVudDtcbn1cbmV4cG9ydHMuaXNDb21tZW50ID0gaXNDb21tZW50O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyB0aGUgdHlwZSBgUHJvY2Vzc2luZ0luc3RydWN0aW9uYCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGlzRGlyZWN0aXZlKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbn1cbmV4cG9ydHMuaXNEaXJlY3RpdmUgPSBpc0RpcmVjdGl2ZTtcbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYFByb2Nlc3NpbmdJbnN0cnVjdGlvbmAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBpc0RvY3VtZW50KG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlJvb3Q7XG59XG5leHBvcnRzLmlzRG9jdW1lbnQgPSBpc0RvY3VtZW50O1xuLyoqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGNoZWNrLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGhhcyBjaGlsZHJlbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIGhhc0NoaWxkcmVuKG5vZGUpIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5vZGUsIFwiY2hpbGRyZW5cIik7XG59XG5leHBvcnRzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW47XG4vKipcbiAqIENsb25lIGEgbm9kZSwgYW5kIG9wdGlvbmFsbHkgaXRzIGNoaWxkcmVuLlxuICpcbiAqIEBwYXJhbSByZWN1cnNpdmUgQ2xvbmUgY2hpbGQgbm9kZXMgYXMgd2VsbC5cbiAqIEByZXR1cm5zIEEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGNsb25lTm9kZShub2RlLCByZWN1cnNpdmUpIHtcbiAgICBpZiAocmVjdXJzaXZlID09PSB2b2lkIDApIHsgcmVjdXJzaXZlID0gZmFsc2U7IH1cbiAgICB2YXIgcmVzdWx0O1xuICAgIGlmIChpc1RleHQobm9kZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IFRleHQobm9kZS5kYXRhKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNDb21tZW50KG5vZGUpKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBDb21tZW50KG5vZGUuZGF0YSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzVGFnKG5vZGUpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHJlY3Vyc2l2ZSA/IGNsb25lQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikgOiBbXTtcbiAgICAgICAgdmFyIGNsb25lXzEgPSBuZXcgRWxlbWVudChub2RlLm5hbWUsIF9fYXNzaWduKHt9LCBub2RlLmF0dHJpYnMpLCBjaGlsZHJlbik7XG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7IHJldHVybiAoY2hpbGQucGFyZW50ID0gY2xvbmVfMSk7IH0pO1xuICAgICAgICBpZiAobm9kZS5uYW1lc3BhY2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgY2xvbmVfMS5uYW1lc3BhY2UgPSBub2RlLm5hbWVzcGFjZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSkge1xuICAgICAgICAgICAgY2xvbmVfMVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSA9IF9fYXNzaWduKHt9LCBub2RlW1wieC1hdHRyaWJzTmFtZXNwYWNlXCJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZVtcIngtYXR0cmlic1ByZWZpeFwiXSkge1xuICAgICAgICAgICAgY2xvbmVfMVtcIngtYXR0cmlic1ByZWZpeFwiXSA9IF9fYXNzaWduKHt9LCBub2RlW1wieC1hdHRyaWJzUHJlZml4XCJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBjbG9uZV8xO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0NEQVRBKG5vZGUpKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IHJlY3Vyc2l2ZSA/IGNsb25lQ2hpbGRyZW4obm9kZS5jaGlsZHJlbikgOiBbXTtcbiAgICAgICAgdmFyIGNsb25lXzIgPSBuZXcgQ0RBVEEoY2hpbGRyZW4pO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gKGNoaWxkLnBhcmVudCA9IGNsb25lXzIpOyB9KTtcbiAgICAgICAgcmVzdWx0ID0gY2xvbmVfMjtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNEb2N1bWVudChub2RlKSkge1xuICAgICAgICB2YXIgY2hpbGRyZW4gPSByZWN1cnNpdmUgPyBjbG9uZUNoaWxkcmVuKG5vZGUuY2hpbGRyZW4pIDogW107XG4gICAgICAgIHZhciBjbG9uZV8zID0gbmV3IERvY3VtZW50KGNoaWxkcmVuKTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIChjaGlsZC5wYXJlbnQgPSBjbG9uZV8zKTsgfSk7XG4gICAgICAgIGlmIChub2RlW1wieC1tb2RlXCJdKSB7XG4gICAgICAgICAgICBjbG9uZV8zW1wieC1tb2RlXCJdID0gbm9kZVtcIngtbW9kZVwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBjbG9uZV8zO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0RpcmVjdGl2ZShub2RlKSkge1xuICAgICAgICB2YXIgaW5zdHJ1Y3Rpb24gPSBuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9uKG5vZGUubmFtZSwgbm9kZS5kYXRhKTtcbiAgICAgICAgaWYgKG5vZGVbXCJ4LW5hbWVcIl0gIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bXCJ4LW5hbWVcIl0gPSBub2RlW1wieC1uYW1lXCJdO1xuICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bXCJ4LXB1YmxpY0lkXCJdID0gbm9kZVtcIngtcHVibGljSWRcIl07XG4gICAgICAgICAgICBpbnN0cnVjdGlvbltcIngtc3lzdGVtSWRcIl0gPSBub2RlW1wieC1zeXN0ZW1JZFwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSBpbnN0cnVjdGlvbjtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZCB5ZXQ6IFwiLmNvbmNhdChub2RlLnR5cGUpKTtcbiAgICB9XG4gICAgcmVzdWx0LnN0YXJ0SW5kZXggPSBub2RlLnN0YXJ0SW5kZXg7XG4gICAgcmVzdWx0LmVuZEluZGV4ID0gbm9kZS5lbmRJbmRleDtcbiAgICBpZiAobm9kZS5zb3VyY2VDb2RlTG9jYXRpb24gIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQuc291cmNlQ29kZUxvY2F0aW9uID0gbm9kZS5zb3VyY2VDb2RlTG9jYXRpb247XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLmNsb25lTm9kZSA9IGNsb25lTm9kZTtcbmZ1bmN0aW9uIGNsb25lQ2hpbGRyZW4oY2hpbGRzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gY2hpbGRzLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIGNsb25lTm9kZShjaGlsZCwgdHJ1ZSk7IH0pO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hpbGRyZW5baV0ucHJldiA9IGNoaWxkcmVuW2kgLSAxXTtcbiAgICAgICAgY2hpbGRyZW5baSAtIDFdLm5leHQgPSBjaGlsZHJlbltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRvbUhhbmRsZXIgPSB2b2lkIDA7XG52YXIgZG9tZWxlbWVudHR5cGVfMSA9IHJlcXVpcmUoXCJkb21lbGVtZW50dHlwZVwiKTtcbnZhciBub2RlX2pzXzEgPSByZXF1aXJlKFwiLi9ub2RlLmpzXCIpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL25vZGUuanNcIiksIGV4cG9ydHMpO1xuLy8gRGVmYXVsdCBvcHRpb25zXG52YXIgZGVmYXVsdE9wdHMgPSB7XG4gICAgd2l0aFN0YXJ0SW5kaWNlczogZmFsc2UsXG4gICAgd2l0aEVuZEluZGljZXM6IGZhbHNlLFxuICAgIHhtbE1vZGU6IGZhbHNlLFxufTtcbnZhciBEb21IYW5kbGVyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBDYWxsZWQgb25jZSBwYXJzaW5nIGhhcyBjb21wbGV0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgU2V0dGluZ3MgZm9yIHRoZSBoYW5kbGVyLlxuICAgICAqIEBwYXJhbSBlbGVtZW50Q0IgQ2FsbGJhY2sgd2hlbmV2ZXIgYSB0YWcgaXMgY2xvc2VkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIERvbUhhbmRsZXIoY2FsbGJhY2ssIG9wdGlvbnMsIGVsZW1lbnRDQikge1xuICAgICAgICAvKiogVGhlIGVsZW1lbnRzIG9mIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5kb20gPSBbXTtcbiAgICAgICAgLyoqIFRoZSByb290IGVsZW1lbnQgZm9yIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5yb290ID0gbmV3IG5vZGVfanNfMS5Eb2N1bWVudCh0aGlzLmRvbSk7XG4gICAgICAgIC8qKiBJbmRpY2F0ZWQgd2hldGhlciBwYXJzaW5nIGhhcyBiZWVuIGNvbXBsZXRlZC4gKi9cbiAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIC8qKiBTdGFjayBvZiBvcGVuIHRhZ3MuICovXG4gICAgICAgIHRoaXMudGFnU3RhY2sgPSBbdGhpcy5yb290XTtcbiAgICAgICAgLyoqIEEgZGF0YSBub2RlIHRoYXQgaXMgc3RpbGwgYmVpbmcgd3JpdHRlbiB0by4gKi9cbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHBhcnNlciBpbnN0YW5jZS4gVXNlZCBmb3IgbG9jYXRpb24gaW5mb3JtYXRpb24uICovXG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICAgICAgLy8gTWFrZSBpdCBwb3NzaWJsZSB0byBza2lwIGFyZ3VtZW50cywgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBlbGVtZW50Q0IgPSBvcHRpb25zO1xuICAgICAgICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRzO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSBjYWxsYmFjaztcbiAgICAgICAgICAgIGNhbGxiYWNrID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFjayAhPT0gbnVsbCAmJiBjYWxsYmFjayAhPT0gdm9pZCAwID8gY2FsbGJhY2sgOiBudWxsO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCA/IG9wdGlvbnMgOiBkZWZhdWx0T3B0cztcbiAgICAgICAgdGhpcy5lbGVtZW50Q0IgPSBlbGVtZW50Q0IgIT09IG51bGwgJiYgZWxlbWVudENCICE9PSB2b2lkIDAgPyBlbGVtZW50Q0IgOiBudWxsO1xuICAgIH1cbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnBhcnNlcmluaXQgPSBmdW5jdGlvbiAocGFyc2VyKSB7XG4gICAgICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICAgIH07XG4gICAgLy8gUmVzZXRzIHRoZSBoYW5kbGVyIGJhY2sgdG8gc3RhcnRpbmcgc3RhdGVcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmRvbSA9IFtdO1xuICAgICAgICB0aGlzLnJvb3QgPSBuZXcgbm9kZV9qc18xLkRvY3VtZW50KHRoaXMuZG9tKTtcbiAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGFnU3RhY2sgPSBbdGhpcy5yb290XTtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICB9O1xuICAgIC8vIFNpZ25hbHMgdGhlIGhhbmRsZXIgdGhhdCBwYXJzaW5nIGlzIGRvbmVcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMuZG9uZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBudWxsO1xuICAgICAgICB0aGlzLmhhbmRsZUNhbGxiYWNrKG51bGwpO1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25lcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICB0aGlzLmhhbmRsZUNhbGxiYWNrKGVycm9yKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY2xvc2V0YWcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgICAgICB2YXIgZWxlbSA9IHRoaXMudGFnU3RhY2sucG9wKCk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aEVuZEluZGljZXMpIHtcbiAgICAgICAgICAgIGVsZW0uZW5kSW5kZXggPSB0aGlzLnBhcnNlci5lbmRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbGVtZW50Q0IpXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRDQihlbGVtKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9ub3BlbnRhZyA9IGZ1bmN0aW9uIChuYW1lLCBhdHRyaWJzKSB7XG4gICAgICAgIHZhciB0eXBlID0gdGhpcy5vcHRpb25zLnhtbE1vZGUgPyBkb21lbGVtZW50dHlwZV8xLkVsZW1lbnRUeXBlLlRhZyA6IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBuZXcgbm9kZV9qc18xLkVsZW1lbnQobmFtZSwgYXR0cmlicywgdW5kZWZpbmVkLCB0eXBlKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKGVsZW1lbnQpO1xuICAgICAgICB0aGlzLnRhZ1N0YWNrLnB1c2goZWxlbWVudCk7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnRleHQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgbGFzdE5vZGUgPSB0aGlzLmxhc3ROb2RlO1xuICAgICAgICBpZiAobGFzdE5vZGUgJiYgbGFzdE5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5UZXh0KSB7XG4gICAgICAgICAgICBsYXN0Tm9kZS5kYXRhICs9IGRhdGE7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhFbmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgICAgbGFzdE5vZGUuZW5kSW5kZXggPSB0aGlzLnBhcnNlci5lbmRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBub2RlID0gbmV3IG5vZGVfanNfMS5UZXh0KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY29tbWVudCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmxhc3ROb2RlICYmIHRoaXMubGFzdE5vZGUudHlwZSA9PT0gZG9tZWxlbWVudHR5cGVfMS5FbGVtZW50VHlwZS5Db21tZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3ROb2RlLmRhdGEgKz0gZGF0YTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuQ29tbWVudChkYXRhKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICB0aGlzLmxhc3ROb2RlID0gbm9kZTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLm9uY29tbWVudGVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbmNkYXRhc3RhcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB0ZXh0ID0gbmV3IG5vZGVfanNfMS5UZXh0KFwiXCIpO1xuICAgICAgICB2YXIgbm9kZSA9IG5ldyBub2RlX2pzXzEuQ0RBVEEoW3RleHRdKTtcbiAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICB0ZXh0LnBhcmVudCA9IG5vZGU7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSB0ZXh0O1xuICAgIH07XG4gICAgRG9tSGFuZGxlci5wcm90b3R5cGUub25jZGF0YWVuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5vbnByb2Nlc3NpbmdpbnN0cnVjdGlvbiA9IGZ1bmN0aW9uIChuYW1lLCBkYXRhKSB7XG4gICAgICAgIHZhciBub2RlID0gbmV3IG5vZGVfanNfMS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obmFtZSwgZGF0YSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICB9O1xuICAgIERvbUhhbmRsZXIucHJvdG90eXBlLmhhbmRsZUNhbGxiYWNrID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrKGVycm9yLCB0aGlzLmRvbSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEb21IYW5kbGVyLnByb3RvdHlwZS5hZGROb2RlID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMudGFnU3RhY2tbdGhpcy50YWdTdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgdmFyIHByZXZpb3VzU2libGluZyA9IHBhcmVudC5jaGlsZHJlbltwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aFN0YXJ0SW5kaWNlcykge1xuICAgICAgICAgICAgbm9kZS5zdGFydEluZGV4ID0gdGhpcy5wYXJzZXIuc3RhcnRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLndpdGhFbmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBub2RlLmVuZEluZGV4ID0gdGhpcy5wYXJzZXIuZW5kSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgIGlmIChwcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgICAgIG5vZGUucHJldiA9IHByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIHByZXZpb3VzU2libGluZy5uZXh0ID0gbm9kZTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gRG9tSGFuZGxlcjtcbn0oKSk7XG5leHBvcnRzLkRvbUhhbmRsZXIgPSBEb21IYW5kbGVyO1xuZXhwb3J0cy5kZWZhdWx0ID0gRG9tSGFuZGxlcjtcbiIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYXR0cmlidXRlTmFtZXMgPSBleHBvcnRzLmVsZW1lbnROYW1lcyA9IHZvaWQgMDtcbmV4cG9ydHMuZWxlbWVudE5hbWVzID0gbmV3IE1hcChbXG4gICAgXCJhbHRHbHlwaFwiLFxuICAgIFwiYWx0R2x5cGhEZWZcIixcbiAgICBcImFsdEdseXBoSXRlbVwiLFxuICAgIFwiYW5pbWF0ZUNvbG9yXCIsXG4gICAgXCJhbmltYXRlTW90aW9uXCIsXG4gICAgXCJhbmltYXRlVHJhbnNmb3JtXCIsXG4gICAgXCJjbGlwUGF0aFwiLFxuICAgIFwiZmVCbGVuZFwiLFxuICAgIFwiZmVDb2xvck1hdHJpeFwiLFxuICAgIFwiZmVDb21wb25lbnRUcmFuc2ZlclwiLFxuICAgIFwiZmVDb21wb3NpdGVcIixcbiAgICBcImZlQ29udm9sdmVNYXRyaXhcIixcbiAgICBcImZlRGlmZnVzZUxpZ2h0aW5nXCIsXG4gICAgXCJmZURpc3BsYWNlbWVudE1hcFwiLFxuICAgIFwiZmVEaXN0YW50TGlnaHRcIixcbiAgICBcImZlRHJvcFNoYWRvd1wiLFxuICAgIFwiZmVGbG9vZFwiLFxuICAgIFwiZmVGdW5jQVwiLFxuICAgIFwiZmVGdW5jQlwiLFxuICAgIFwiZmVGdW5jR1wiLFxuICAgIFwiZmVGdW5jUlwiLFxuICAgIFwiZmVHYXVzc2lhbkJsdXJcIixcbiAgICBcImZlSW1hZ2VcIixcbiAgICBcImZlTWVyZ2VcIixcbiAgICBcImZlTWVyZ2VOb2RlXCIsXG4gICAgXCJmZU1vcnBob2xvZ3lcIixcbiAgICBcImZlT2Zmc2V0XCIsXG4gICAgXCJmZVBvaW50TGlnaHRcIixcbiAgICBcImZlU3BlY3VsYXJMaWdodGluZ1wiLFxuICAgIFwiZmVTcG90TGlnaHRcIixcbiAgICBcImZlVGlsZVwiLFxuICAgIFwiZmVUdXJidWxlbmNlXCIsXG4gICAgXCJmb3JlaWduT2JqZWN0XCIsXG4gICAgXCJnbHlwaFJlZlwiLFxuICAgIFwibGluZWFyR3JhZGllbnRcIixcbiAgICBcInJhZGlhbEdyYWRpZW50XCIsXG4gICAgXCJ0ZXh0UGF0aFwiLFxuXS5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gW3ZhbC50b0xvd2VyQ2FzZSgpLCB2YWxdOyB9KSk7XG5leHBvcnRzLmF0dHJpYnV0ZU5hbWVzID0gbmV3IE1hcChbXG4gICAgXCJkZWZpbml0aW9uVVJMXCIsXG4gICAgXCJhdHRyaWJ1dGVOYW1lXCIsXG4gICAgXCJhdHRyaWJ1dGVUeXBlXCIsXG4gICAgXCJiYXNlRnJlcXVlbmN5XCIsXG4gICAgXCJiYXNlUHJvZmlsZVwiLFxuICAgIFwiY2FsY01vZGVcIixcbiAgICBcImNsaXBQYXRoVW5pdHNcIixcbiAgICBcImRpZmZ1c2VDb25zdGFudFwiLFxuICAgIFwiZWRnZU1vZGVcIixcbiAgICBcImZpbHRlclVuaXRzXCIsXG4gICAgXCJnbHlwaFJlZlwiLFxuICAgIFwiZ3JhZGllbnRUcmFuc2Zvcm1cIixcbiAgICBcImdyYWRpZW50VW5pdHNcIixcbiAgICBcImtlcm5lbE1hdHJpeFwiLFxuICAgIFwia2VybmVsVW5pdExlbmd0aFwiLFxuICAgIFwia2V5UG9pbnRzXCIsXG4gICAgXCJrZXlTcGxpbmVzXCIsXG4gICAgXCJrZXlUaW1lc1wiLFxuICAgIFwibGVuZ3RoQWRqdXN0XCIsXG4gICAgXCJsaW1pdGluZ0NvbmVBbmdsZVwiLFxuICAgIFwibWFya2VySGVpZ2h0XCIsXG4gICAgXCJtYXJrZXJVbml0c1wiLFxuICAgIFwibWFya2VyV2lkdGhcIixcbiAgICBcIm1hc2tDb250ZW50VW5pdHNcIixcbiAgICBcIm1hc2tVbml0c1wiLFxuICAgIFwibnVtT2N0YXZlc1wiLFxuICAgIFwicGF0aExlbmd0aFwiLFxuICAgIFwicGF0dGVybkNvbnRlbnRVbml0c1wiLFxuICAgIFwicGF0dGVyblRyYW5zZm9ybVwiLFxuICAgIFwicGF0dGVyblVuaXRzXCIsXG4gICAgXCJwb2ludHNBdFhcIixcbiAgICBcInBvaW50c0F0WVwiLFxuICAgIFwicG9pbnRzQXRaXCIsXG4gICAgXCJwcmVzZXJ2ZUFscGhhXCIsXG4gICAgXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsXG4gICAgXCJwcmltaXRpdmVVbml0c1wiLFxuICAgIFwicmVmWFwiLFxuICAgIFwicmVmWVwiLFxuICAgIFwicmVwZWF0Q291bnRcIixcbiAgICBcInJlcGVhdER1clwiLFxuICAgIFwicmVxdWlyZWRFeHRlbnNpb25zXCIsXG4gICAgXCJyZXF1aXJlZEZlYXR1cmVzXCIsXG4gICAgXCJzcGVjdWxhckNvbnN0YW50XCIsXG4gICAgXCJzcGVjdWxhckV4cG9uZW50XCIsXG4gICAgXCJzcHJlYWRNZXRob2RcIixcbiAgICBcInN0YXJ0T2Zmc2V0XCIsXG4gICAgXCJzdGREZXZpYXRpb25cIixcbiAgICBcInN0aXRjaFRpbGVzXCIsXG4gICAgXCJzdXJmYWNlU2NhbGVcIixcbiAgICBcInN5c3RlbUxhbmd1YWdlXCIsXG4gICAgXCJ0YWJsZVZhbHVlc1wiLFxuICAgIFwidGFyZ2V0WFwiLFxuICAgIFwidGFyZ2V0WVwiLFxuICAgIFwidGV4dExlbmd0aFwiLFxuICAgIFwidmlld0JveFwiLFxuICAgIFwidmlld1RhcmdldFwiLFxuICAgIFwieENoYW5uZWxTZWxlY3RvclwiLFxuICAgIFwieUNoYW5uZWxTZWxlY3RvclwiLFxuICAgIFwiem9vbUFuZFBhblwiLFxuXS5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gW3ZhbC50b0xvd2VyQ2FzZSgpLCB2YWxdOyB9KSk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdCkgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcbn0pIDogZnVuY3Rpb24obywgdikge1xuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcbn0pO1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnJlbmRlciA9IHZvaWQgMDtcbi8qXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzXG4gKi9cbnZhciBFbGVtZW50VHlwZSA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiZG9tZWxlbWVudHR5cGVcIikpO1xudmFyIGVudGl0aWVzXzEgPSByZXF1aXJlKFwiZW50aXRpZXNcIik7XG4vKipcbiAqIE1peGVkLWNhc2UgU1ZHIGFuZCBNYXRoTUwgdGFncyAmIGF0dHJpYnV0ZXNcbiAqIHJlY29nbml6ZWQgYnkgdGhlIEhUTUwgcGFyc2VyLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbiAqL1xudmFyIGZvcmVpZ25OYW1lc19qc18xID0gcmVxdWlyZShcIi4vZm9yZWlnbk5hbWVzLmpzXCIpO1xudmFyIHVuZW5jb2RlZEVsZW1lbnRzID0gbmV3IFNldChbXG4gICAgXCJzdHlsZVwiLFxuICAgIFwic2NyaXB0XCIsXG4gICAgXCJ4bXBcIixcbiAgICBcImlmcmFtZVwiLFxuICAgIFwibm9lbWJlZFwiLFxuICAgIFwibm9mcmFtZXNcIixcbiAgICBcInBsYWludGV4dFwiLFxuICAgIFwibm9zY3JpcHRcIixcbl0pO1xuZnVuY3Rpb24gcmVwbGFjZVF1b3Rlcyh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKTtcbn1cbi8qKlxuICogRm9ybWF0IGF0dHJpYnV0ZXNcbiAqL1xuZnVuY3Rpb24gZm9ybWF0QXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBvcHRzKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICghYXR0cmlidXRlcylcbiAgICAgICAgcmV0dXJuO1xuICAgIHZhciBlbmNvZGUgPSAoKF9hID0gb3B0cy5lbmNvZGVFbnRpdGllcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogb3B0cy5kZWNvZGVFbnRpdGllcykgPT09IGZhbHNlXG4gICAgICAgID8gcmVwbGFjZVF1b3Rlc1xuICAgICAgICA6IG9wdHMueG1sTW9kZSB8fCBvcHRzLmVuY29kZUVudGl0aWVzICE9PSBcInV0ZjhcIlxuICAgICAgICAgICAgPyBlbnRpdGllc18xLmVuY29kZVhNTFxuICAgICAgICAgICAgOiBlbnRpdGllc18xLmVzY2FwZUF0dHJpYnV0ZTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYXR0cmlidXRlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHZhciB2YWx1ZSA9IChfYSA9IGF0dHJpYnV0ZXNba2V5XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogXCJcIjtcbiAgICAgICAgaWYgKG9wdHMueG1sTW9kZSA9PT0gXCJmb3JlaWduXCIpIHtcbiAgICAgICAgICAgIC8qIEZpeCB1cCBtaXhlZC1jYXNlIGF0dHJpYnV0ZSBuYW1lcyAqL1xuICAgICAgICAgICAga2V5ID0gKF9iID0gZm9yZWlnbk5hbWVzX2pzXzEuYXR0cmlidXRlTmFtZXMuZ2V0KGtleSkpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGtleTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdHMuZW1wdHlBdHRycyAmJiAhb3B0cy54bWxNb2RlICYmIHZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChrZXksIFwiPVxcXCJcIikuY29uY2F0KGVuY29kZSh2YWx1ZSksIFwiXFxcIlwiKTtcbiAgICB9KVxuICAgICAgICAuam9pbihcIiBcIik7XG59XG4vKipcbiAqIFNlbGYtZW5jbG9zaW5nIHRhZ3NcbiAqL1xudmFyIHNpbmdsZVRhZyA9IG5ldyBTZXQoW1xuICAgIFwiYXJlYVwiLFxuICAgIFwiYmFzZVwiLFxuICAgIFwiYmFzZWZvbnRcIixcbiAgICBcImJyXCIsXG4gICAgXCJjb2xcIixcbiAgICBcImNvbW1hbmRcIixcbiAgICBcImVtYmVkXCIsXG4gICAgXCJmcmFtZVwiLFxuICAgIFwiaHJcIixcbiAgICBcImltZ1wiLFxuICAgIFwiaW5wdXRcIixcbiAgICBcImlzaW5kZXhcIixcbiAgICBcImtleWdlblwiLFxuICAgIFwibGlua1wiLFxuICAgIFwibWV0YVwiLFxuICAgIFwicGFyYW1cIixcbiAgICBcInNvdXJjZVwiLFxuICAgIFwidHJhY2tcIixcbiAgICBcIndiclwiLFxuXSk7XG4vKipcbiAqIFJlbmRlcnMgYSBET00gbm9kZSBvciBhbiBhcnJheSBvZiBET00gbm9kZXMgdG8gYSBzdHJpbmcuXG4gKlxuICogQ2FuIGJlIHRob3VnaHQgb2YgYXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIGBvdXRlckhUTUxgIG9mIHRoZSBwYXNzZWQgbm9kZShzKS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGJlIHJlbmRlcmVkLlxuICogQHBhcmFtIG9wdGlvbnMgQ2hhbmdlcyBzZXJpYWxpemF0aW9uIGJlaGF2aW9yXG4gKi9cbmZ1bmN0aW9uIHJlbmRlcihub2RlLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgbm9kZXMgPSBcImxlbmd0aFwiIGluIG5vZGUgPyBub2RlIDogW25vZGVdO1xuICAgIHZhciBvdXRwdXQgPSBcIlwiO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0cHV0ICs9IHJlbmRlck5vZGUobm9kZXNbaV0sIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuZXhwb3J0cy5yZW5kZXIgPSByZW5kZXI7XG5leHBvcnRzLmRlZmF1bHQgPSByZW5kZXI7XG5mdW5jdGlvbiByZW5kZXJOb2RlKG5vZGUsIG9wdGlvbnMpIHtcbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLlJvb3Q6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyKG5vZGUuY2hpbGRyZW4sIG9wdGlvbnMpO1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFdlIGRvbid0IHVzZSBgRG9jdHlwZWAgeWV0XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuRG9jdHlwZTpcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5EaXJlY3RpdmU6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyRGlyZWN0aXZlKG5vZGUpO1xuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLkNvbW1lbnQ6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyQ29tbWVudChub2RlKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5DREFUQTpcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJDZGF0YShub2RlKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5TY3JpcHQ6XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuU3R5bGU6XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuVGFnOlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRhZyhub2RlLCBvcHRpb25zKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5UZXh0OlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHQobm9kZSwgb3B0aW9ucyk7XG4gICAgfVxufVxudmFyIGZvcmVpZ25Nb2RlSW50ZWdyYXRpb25Qb2ludHMgPSBuZXcgU2V0KFtcbiAgICBcIm1pXCIsXG4gICAgXCJtb1wiLFxuICAgIFwibW5cIixcbiAgICBcIm1zXCIsXG4gICAgXCJtdGV4dFwiLFxuICAgIFwiYW5ub3RhdGlvbi14bWxcIixcbiAgICBcImZvcmVpZ25PYmplY3RcIixcbiAgICBcImRlc2NcIixcbiAgICBcInRpdGxlXCIsXG5dKTtcbnZhciBmb3JlaWduRWxlbWVudHMgPSBuZXcgU2V0KFtcInN2Z1wiLCBcIm1hdGhcIl0pO1xuZnVuY3Rpb24gcmVuZGVyVGFnKGVsZW0sIG9wdHMpIHtcbiAgICB2YXIgX2E7XG4gICAgLy8gSGFuZGxlIFNWRyAvIE1hdGhNTCBpbiBIVE1MXG4gICAgaWYgKG9wdHMueG1sTW9kZSA9PT0gXCJmb3JlaWduXCIpIHtcbiAgICAgICAgLyogRml4IHVwIG1peGVkLWNhc2UgZWxlbWVudCBuYW1lcyAqL1xuICAgICAgICBlbGVtLm5hbWUgPSAoX2EgPSBmb3JlaWduTmFtZXNfanNfMS5lbGVtZW50TmFtZXMuZ2V0KGVsZW0ubmFtZSkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGVsZW0ubmFtZTtcbiAgICAgICAgLyogRXhpdCBmb3JlaWduIG1vZGUgYXQgaW50ZWdyYXRpb24gcG9pbnRzICovXG4gICAgICAgIGlmIChlbGVtLnBhcmVudCAmJlxuICAgICAgICAgICAgZm9yZWlnbk1vZGVJbnRlZ3JhdGlvblBvaW50cy5oYXMoZWxlbS5wYXJlbnQubmFtZSkpIHtcbiAgICAgICAgICAgIG9wdHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0cyksIHsgeG1sTW9kZTogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFvcHRzLnhtbE1vZGUgJiYgZm9yZWlnbkVsZW1lbnRzLmhhcyhlbGVtLm5hbWUpKSB7XG4gICAgICAgIG9wdHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgb3B0cyksIHsgeG1sTW9kZTogXCJmb3JlaWduXCIgfSk7XG4gICAgfVxuICAgIHZhciB0YWcgPSBcIjxcIi5jb25jYXQoZWxlbS5uYW1lKTtcbiAgICB2YXIgYXR0cmlicyA9IGZvcm1hdEF0dHJpYnV0ZXMoZWxlbS5hdHRyaWJzLCBvcHRzKTtcbiAgICBpZiAoYXR0cmlicykge1xuICAgICAgICB0YWcgKz0gXCIgXCIuY29uY2F0KGF0dHJpYnMpO1xuICAgIH1cbiAgICBpZiAoZWxlbS5jaGlsZHJlbi5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgKG9wdHMueG1sTW9kZVxuICAgICAgICAgICAgPyAvLyBJbiBYTUwgbW9kZSBvciBmb3JlaWduIG1vZGUsIGFuZCB1c2VyIGhhc24ndCBleHBsaWNpdGx5IHR1cm5lZCBvZmYgc2VsZi1jbG9zaW5nIHRhZ3NcbiAgICAgICAgICAgICAgICBvcHRzLnNlbGZDbG9zaW5nVGFncyAhPT0gZmFsc2VcbiAgICAgICAgICAgIDogLy8gVXNlciBleHBsaWNpdGx5IGFza2VkIGZvciBzZWxmLWNsb3NpbmcgdGFncywgZXZlbiBpbiBIVE1MIG1vZGVcbiAgICAgICAgICAgICAgICBvcHRzLnNlbGZDbG9zaW5nVGFncyAmJiBzaW5nbGVUYWcuaGFzKGVsZW0ubmFtZSkpKSB7XG4gICAgICAgIGlmICghb3B0cy54bWxNb2RlKVxuICAgICAgICAgICAgdGFnICs9IFwiIFwiO1xuICAgICAgICB0YWcgKz0gXCIvPlwiO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFnICs9IFwiPlwiO1xuICAgICAgICBpZiAoZWxlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0YWcgKz0gcmVuZGVyKGVsZW0uY2hpbGRyZW4sIG9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLnhtbE1vZGUgfHwgIXNpbmdsZVRhZy5oYXMoZWxlbS5uYW1lKSkge1xuICAgICAgICAgICAgdGFnICs9IFwiPC9cIi5jb25jYXQoZWxlbS5uYW1lLCBcIj5cIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhZztcbn1cbmZ1bmN0aW9uIHJlbmRlckRpcmVjdGl2ZShlbGVtKSB7XG4gICAgcmV0dXJuIFwiPFwiLmNvbmNhdChlbGVtLmRhdGEsIFwiPlwiKTtcbn1cbmZ1bmN0aW9uIHJlbmRlclRleHQoZWxlbSwgb3B0cykge1xuICAgIHZhciBfYTtcbiAgICB2YXIgZGF0YSA9IGVsZW0uZGF0YSB8fCBcIlwiO1xuICAgIC8vIElmIGVudGl0aWVzIHdlcmVuJ3QgZGVjb2RlZCwgbm8gbmVlZCB0byBlbmNvZGUgdGhlbSBiYWNrXG4gICAgaWYgKCgoX2EgPSBvcHRzLmVuY29kZUVudGl0aWVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBvcHRzLmRlY29kZUVudGl0aWVzKSAhPT0gZmFsc2UgJiZcbiAgICAgICAgISghb3B0cy54bWxNb2RlICYmXG4gICAgICAgICAgICBlbGVtLnBhcmVudCAmJlxuICAgICAgICAgICAgdW5lbmNvZGVkRWxlbWVudHMuaGFzKGVsZW0ucGFyZW50Lm5hbWUpKSkge1xuICAgICAgICBkYXRhID1cbiAgICAgICAgICAgIG9wdHMueG1sTW9kZSB8fCBvcHRzLmVuY29kZUVudGl0aWVzICE9PSBcInV0ZjhcIlxuICAgICAgICAgICAgICAgID8gKDAsIGVudGl0aWVzXzEuZW5jb2RlWE1MKShkYXRhKVxuICAgICAgICAgICAgICAgIDogKDAsIGVudGl0aWVzXzEuZXNjYXBlVGV4dCkoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xufVxuZnVuY3Rpb24gcmVuZGVyQ2RhdGEoZWxlbSkge1xuICAgIHJldHVybiBcIjwhW0NEQVRBW1wiLmNvbmNhdChlbGVtLmNoaWxkcmVuWzBdLmRhdGEsIFwiXV0+XCIpO1xufVxuZnVuY3Rpb24gcmVuZGVyQ29tbWVudChlbGVtKSB7XG4gICAgcmV0dXJuIFwiPCEtLVwiLmNvbmNhdChlbGVtLmRhdGEsIFwiLS0+XCIpO1xufVxuIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGRlYnVnO1xuXG5mdW5jdGlvbiBkZWJ1ZyhsYWJlbCkge1xuICByZXR1cm4gX2RlYnVnLmJpbmQobnVsbCwgbGFiZWwpO1xufVxuXG5mdW5jdGlvbiBfZGVidWcobGFiZWwpIHtcbiAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gIGFyZ3MudW5zaGlmdCgnWycgKyBsYWJlbCArICddJyk7XG4gIHByb2Nlc3Muc3RkZXJyLndyaXRlKGFyZ3Muam9pbignICcpICsgJ1xcbicpO1xufSIsICJ2YXIgREVCVUcgPSBmYWxzZTsgLy8gYHRydWVgIHRvIHByaW50IGRlYnVnZ2luZyBpbmZvLlxudmFyIFRJTUVSID0gZmFsc2U7IC8vIGB0cnVlYCB0byB0aW1lIGNhbGxzIHRvIGBsZXgoKWAgYW5kIHByaW50IHRoZSByZXN1bHRzLlxuXG52YXIgZGVidWcgPSByZXF1aXJlKCcuL2RlYnVnJykoJ2xleCcpO1xuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBsZXg7XG5cbi8qKlxuICogQ29udmVydCBhIENTUyBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBsZXhpY2FsIHRva2Vucy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gY3NzIENTU1xuICogQHJldHVybnMge0FycmF5fSBsZXhpY2FsIHRva2Vuc1xuICovXG5mdW5jdGlvbiBsZXgoY3NzKSB7XG4gIHZhciBzdGFydDsgLy8gRGVidWcgdGltZXIgc3RhcnQuXG5cbiAgdmFyIGJ1ZmZlciA9ICcnOyAgICAgIC8vIENoYXJhY3RlciBhY2N1bXVsYXRvclxuICB2YXIgY2g7ICAgICAgICAgICAgICAgLy8gQ3VycmVudCBjaGFyYWN0ZXJcbiAgdmFyIGNvbHVtbiA9IDA7ICAgICAgIC8vIEN1cnJlbnQgc291cmNlIGNvbHVtbiBudW1iZXJcbiAgdmFyIGN1cnNvciA9IC0xOyAgICAgIC8vIEN1cnJlbnQgc291cmNlIGN1cnNvciBwb3NpdGlvblxuICB2YXIgZGVwdGggPSAwOyAgICAgICAgLy8gQ3VycmVudCBuZXN0aW5nIGRlcHRoXG4gIHZhciBsaW5lID0gMTsgICAgICAgICAvLyBDdXJyZW50IHNvdXJjZSBsaW5lIG51bWJlclxuICB2YXIgc3RhdGUgPSAnYmVmb3JlLXNlbGVjdG9yJzsgLy8gQ3VycmVudCBzdGF0ZVxuICB2YXIgc3RhY2sgPSBbc3RhdGVdOyAgLy8gU3RhdGUgc3RhY2tcbiAgdmFyIHRva2VuID0ge307ICAgICAgIC8vIEN1cnJlbnQgdG9rZW5cbiAgdmFyIHRva2VucyA9IFtdOyAgICAgIC8vIFRva2VuIGFjY3VtdWxhdG9yXG5cbiAgLy8gU3VwcG9ydGVkIEAtcnVsZXMsIGluIHJvdWdobHkgZGVzY2VuZGluZyBvcmRlciBvZiB1c2FnZSBwcm9iYWJpbGl0eS5cbiAgdmFyIGF0UnVsZXMgPSBbXG4gICAgJ21lZGlhJyxcbiAgICAna2V5ZnJhbWVzJyxcbiAgICB7IG5hbWU6ICctd2Via2l0LWtleWZyYW1lcycsIHR5cGU6ICdrZXlmcmFtZXMnLCBwcmVmaXg6ICctd2Via2l0LScgfSxcbiAgICB7IG5hbWU6ICctbW96LWtleWZyYW1lcycsIHR5cGU6ICdrZXlmcmFtZXMnLCBwcmVmaXg6ICctbW96LScgfSxcbiAgICB7IG5hbWU6ICctbXMta2V5ZnJhbWVzJywgdHlwZTogJ2tleWZyYW1lcycsIHByZWZpeDogJy1tcy0nIH0sXG4gICAgeyBuYW1lOiAnLW8ta2V5ZnJhbWVzJywgdHlwZTogJ2tleWZyYW1lcycsIHByZWZpeDogJy1vLScgfSxcbiAgICAnZm9udC1mYWNlJyxcbiAgICB7IG5hbWU6ICdpbXBvcnQnLCBzdGF0ZTogJ2JlZm9yZS1hdC12YWx1ZScgfSxcbiAgICB7IG5hbWU6ICdjaGFyc2V0Jywgc3RhdGU6ICdiZWZvcmUtYXQtdmFsdWUnIH0sXG4gICAgJ3N1cHBvcnRzJyxcbiAgICAndmlld3BvcnQnLFxuICAgIHsgbmFtZTogJ25hbWVzcGFjZScsIHN0YXRlOiAnYmVmb3JlLWF0LXZhbHVlJyB9LFxuICAgICdkb2N1bWVudCcsXG4gICAgeyBuYW1lOiAnLW1vei1kb2N1bWVudCcsIHR5cGU6ICdkb2N1bWVudCcsIHByZWZpeDogJy1tb3otJyB9LFxuICAgICdwYWdlJ1xuICBdO1xuXG4gIC8vIC0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogQWR2YW5jZSB0aGUgY2hhcmFjdGVyIGN1cnNvciBhbmQgcmV0dXJuIHRoZSBuZXh0IGNoYXJhY3Rlci5cbiAgICpcbiAgICogQHJldHVybnMge1N0cmluZ30gVGhlIG5leHQgY2hhcmFjdGVyLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q2goKSB7XG4gICAgc2tpcCgpO1xuICAgIHJldHVybiBjc3NbY3Vyc29yXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHN0YXRlIGF0IHRoZSBnaXZlbiBpbmRleCBpbiB0aGUgc3RhY2suXG4gICAqIFRoZSBzdGFjayBpcyBMSUZPIHNvIGluZGV4aW5nIGlzIGZyb20gdGhlIHJpZ2h0LlxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gW2luZGV4PTBdIEluZGV4IHRvIHJldHVybi5cbiAgICogQHJldHVybnMge1N0cmluZ30gc3RhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFN0YXRlKGluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4ID8gc3RhY2tbc3RhY2subGVuZ3RoIC0gMSAtIGluZGV4XSA6IHN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2sgYWhlYWQgZm9yIGEgc3RyaW5nIGJlZ2lubmluZyBmcm9tIHRoZSBuZXh0IHBvc2l0aW9uLiBUaGUgc3RyaW5nXG4gICAqIGJlaW5nIGxvb2tlZCBmb3IgbXVzdCBzdGFydCBhdCB0aGUgbmV4dCBwb3NpdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0ciBUaGUgc3RyaW5nIHRvIGxvb2sgZm9yLlxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gV2hldGhlciB0aGUgc3RyaW5nIHdhcyBmb3VuZC5cbiAgICovXG4gIGZ1bmN0aW9uIGlzTmV4dFN0cmluZyhzdHIpIHtcbiAgICB2YXIgc3RhcnQgPSBjdXJzb3IgKyAxO1xuICAgIHJldHVybiAoc3RyID09PSBjc3Muc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgc3RyLmxlbmd0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIHN0YXJ0IHBvc2l0aW9uIG9mIGEgc3Vic3RyaW5nIGJlZ2lubmluZyBmcm9tIHRoZSBuZXh0XG4gICAqIHBvc2l0aW9uLiBUaGUgc3RyaW5nIGJlaW5nIGxvb2tlZCBmb3IgbWF5IGJlZ2luIGFueXdoZXJlLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBzdWJzdHJpbmcgdG8gbG9vayBmb3IuXG4gICAqIEByZXR1cm5zIHtOdW1iZXJ8ZmFsc2V9IFRoZSBwb3NpdGlvbiwgb3IgYGZhbHNlYCBpZiBub3QgZm91bmQuXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kKHN0cikge1xuICAgIHZhciBwb3MgPSBjc3Muc2xpY2UoY3Vyc29yKS5pbmRleE9mKHN0cik7XG5cbiAgICByZXR1cm4gcG9zID4gMCA/IHBvcyA6IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIGEgY2hhcmFjdGVyIGlzIG5leHQuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBjaCBDaGFyYWN0ZXIuXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSBXaGV0aGVyIHRoZSBjaGFyYWN0ZXIgaXMgbmV4dC5cbiAgICovXG4gIGZ1bmN0aW9uIGlzTmV4dENoYXIoY2gpIHtcbiAgICByZXR1cm4gY2ggPT09IHBlZWsoMSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGdpdmVuIGN1cnNvciBvZmZzZXQuIFRoZSBvZmZzZXQgaXMgcmVsYXRpdmVcbiAgICogdG8gdGhlIGN1cnNvciwgc28gbmVnYXRpdmUgdmFsdWVzIG1vdmUgYmFja3dhcmRzLlxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gW29mZnNldD0xXSBDdXJzb3Igb2Zmc2V0LlxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBDaGFyYWN0ZXIuXG4gICAqL1xuICBmdW5jdGlvbiBwZWVrKG9mZnNldCkge1xuICAgIHJldHVybiBjc3NbY3Vyc29yICsgKG9mZnNldCB8fCAxKV07XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBjdXJyZW50IHN0YXRlIGZyb20gdGhlIHN0YWNrIGFuZCBzZXQgdGhlIG5ldyBjdXJyZW50IHN0YXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVtb3ZlZCBzdGF0ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHBvcFN0YXRlKCkge1xuICAgIHZhciByZW1vdmVkID0gc3RhY2sucG9wKCk7XG4gICAgc3RhdGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcblxuICAgIHJldHVybiByZW1vdmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCBzdGF0ZSBhbmQgYWRkIGl0IHRvIHRoZSBzdGFjay5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IG5ld1N0YXRlIFRoZSBuZXcgc3RhdGUuXG4gICAqIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBuZXcgc3RhY2sgbGVuZ3RoLlxuICAgKi9cbiAgZnVuY3Rpb24gcHVzaFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICBzdGFjay5wdXNoKHN0YXRlKTtcblxuICAgIHJldHVybiBzdGFjay5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgY3VycmVudCBzdGF0ZSB3aXRoIGEgbmV3IHN0YXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gbmV3U3RhdGUgVGhlIG5ldyBzdGF0ZS5cbiAgICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlcGxhY2VkIHN0YXRlLlxuICAgKi9cbiAgZnVuY3Rpb24gcmVwbGFjZVN0YXRlKG5ld1N0YXRlKSB7XG4gICAgdmFyIHByZXZpb3VzU3RhdGUgPSBzdGF0ZTtcbiAgICBzdGFja1tzdGFjay5sZW5ndGggLSAxXSA9IHN0YXRlID0gbmV3U3RhdGU7XG5cbiAgICByZXR1cm4gcHJldmlvdXNTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIHRoZSBjaGFyYWN0ZXIgY3Vyc29yLiBQb3NpdGl2ZSBudW1iZXJzIG1vdmUgdGhlIGN1cnNvciBmb3J3YXJkLlxuICAgKiBOZWdhdGl2ZSBudW1iZXJzIGFyZSBub3Qgc3VwcG9ydGVkIVxuICAgKlxuICAgKiBAcGFyYW0ge051bWJlcn0gW249MV0gTnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2tpcC5cbiAgICovXG4gIGZ1bmN0aW9uIHNraXAobikge1xuICAgIGlmICgobiB8fCAxKSA9PSAxKSB7XG4gICAgICBpZiAoY3NzW2N1cnNvcl0gPT0gJ1xcbicpIHtcbiAgICAgICAgbGluZSsrO1xuICAgICAgICBjb2x1bW4gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sdW1uKys7XG4gICAgICB9XG4gICAgICBjdXJzb3IrKztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHNraXBTdHIgPSBjc3Muc2xpY2UoY3Vyc29yLCBjdXJzb3IgKyBuKS5zcGxpdCgnXFxuJyk7XG4gICAgICBpZiAoc2tpcFN0ci5sZW5ndGggPiAxKSB7XG4gICAgICAgIGxpbmUgKz0gc2tpcFN0ci5sZW5ndGggLSAxO1xuICAgICAgICBjb2x1bW4gPSAxO1xuICAgICAgfVxuICAgICAgY29sdW1uICs9IHNraXBTdHJbc2tpcFN0ci5sZW5ndGggLSAxXS5sZW5ndGg7XG4gICAgICBjdXJzb3IgPSBjdXJzb3IgKyBuO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgdGhlIGN1cnJlbnQgdG9rZW4gdG8gdGhlIHBpbGUgYW5kIHJlc2V0IHRoZSBidWZmZXIuXG4gICAqL1xuICBmdW5jdGlvbiBhZGRUb2tlbigpIHtcbiAgICB0b2tlbi5lbmQgPSB7XG4gICAgICBsaW5lOiBsaW5lLFxuICAgICAgY29sOiBjb2x1bW5cbiAgICB9O1xuXG4gICAgREVCVUcgJiYgZGVidWcoJ2FkZFRva2VuOicsIEpTT04uc3RyaW5naWZ5KHRva2VuLCBudWxsLCAyKSk7XG5cbiAgICB0b2tlbnMucHVzaCh0b2tlbik7XG5cbiAgICBidWZmZXIgPSAnJztcbiAgICB0b2tlbiA9IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCB0b2tlbi5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVG9rZW4gdHlwZS5cbiAgICovXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVUb2tlbih0eXBlKSB7XG4gICAgdG9rZW4gPSB7XG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgc3RhcnQ6IHtcbiAgICAgICAgbGluZTogbGluZSxcbiAgICAgICAgY29sIDogY29sdW1uXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIC0tIE1haW4gTG9vcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKlxuICBUaGUgbWFpbiBsb29wIGlzIGEgc3RhdGUgbWFjaGluZSB0aGF0IHJlYWRzIGluIG9uZSBjaGFyYWN0ZXIgYXQgYSB0aW1lLFxuICBhbmQgZGV0ZXJtaW5lcyB3aGF0IHRvIGRvIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBjaGFyYWN0ZXIuXG4gIFRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYSBzZXJpZXMgb2YgbmVzdGVkIGBzd2l0Y2hgIHN0YXRlbWVudHMgYW5kIHRoZVxuICBjYXNlIG9yZGVycyBoYXZlIGJlZW4gbWlsZGx5IG9wdGltaXplZCBiYXNlZCBvbiByb3VnaCBwcm9iYWJpbGl0aWVzXG4gIGNhbGN1bGF0ZWQgYnkgcHJvY2Vzc2luZyBhIHNtYWxsIHNhbXBsZSBvZiByZWFsLXdvcmxkIENTUy5cblxuICBGdXJ0aGVyIG9wdGltaXphdGlvbiAoc3VjaCBhcyBhIGRpc3BhdGNoIHRhYmxlKSBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5XG4gIHNpbmNlIHRoZSB0b3RhbCBudW1iZXIgb2YgY2FzZXMgaXMgdmVyeSBsb3cuXG4gICovXG5cbiAgVElNRVIgJiYgKHN0YXJ0ID0gRGF0ZS5ub3coKSk7XG5cbiAgd2hpbGUgKGNoID0gZ2V0Q2goKSkge1xuICAgIERFQlVHICYmIGRlYnVnKGNoLCBnZXRTdGF0ZSgpKTtcblxuICAgIC8vIGNvbHVtbiArPSAxO1xuXG4gICAgc3dpdGNoIChjaCkge1xuICAgIC8vIFNwYWNlXG4gICAgY2FzZSAnICc6XG4gICAgICBzd2l0Y2ggKGdldFN0YXRlKCkpIHtcbiAgICAgIGNhc2UgJ3NlbGVjdG9yJzpcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgIGNhc2UgJ3ZhbHVlLXBhcmVuJzpcbiAgICAgIGNhc2UgJ2F0LWdyb3VwJzpcbiAgICAgIGNhc2UgJ2F0LXZhbHVlJzpcbiAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgY2FzZSAnZG91YmxlLXN0cmluZyc6XG4gICAgICBjYXNlICdzaW5nbGUtc3RyaW5nJzpcbiAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgLy8gTmV3bGluZSBvciB0YWJcbiAgICBjYXNlICdcXG4nOlxuICAgIGNhc2UgJ1xcdCc6XG4gICAgY2FzZSAnXFxyJzpcbiAgICBjYXNlICdcXGYnOlxuICAgICAgc3dpdGNoIChnZXRTdGF0ZSgpKSB7XG4gICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICBjYXNlICd2YWx1ZS1wYXJlbic6XG4gICAgICBjYXNlICdhdC1ncm91cCc6XG4gICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgIGNhc2UgJ3NpbmdsZS1zdHJpbmcnOlxuICAgICAgY2FzZSAnZG91YmxlLXN0cmluZyc6XG4gICAgICBjYXNlICdzZWxlY3Rvcic6XG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2F0LXZhbHVlJzpcbiAgICAgICAgLy8gVG9rZW5pemUgYW4gQC1ydWxlIGlmIGEgc2VtaS1jb2xvbiB3YXMgb21pdHRlZC5cbiAgICAgICAgaWYgKCdcXG4nID09PSBjaCkge1xuICAgICAgICAgIHRva2VuLnZhbHVlID0gYnVmZmVyLnRyaW0oKTtcbiAgICAgICAgICBhZGRUb2tlbigpO1xuICAgICAgICAgIHBvcFN0YXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIGlmICgnXFxuJyA9PT0gY2gpIHtcbiAgICAgIC8vICAgY29sdW1uID0gMDtcbiAgICAgIC8vICAgbGluZSArPSAxO1xuICAgICAgLy8gfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICc6JzpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICAgIHRva2VuLm5hbWUgPSBidWZmZXIudHJpbSgpO1xuICAgICAgICBidWZmZXIgPSAnJztcblxuICAgICAgICByZXBsYWNlU3RhdGUoJ2JlZm9yZS12YWx1ZScpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYmVmb3JlLXNlbGVjdG9yJzpcbiAgICAgICAgYnVmZmVyICs9IGNoO1xuXG4gICAgICAgIGluaXRpYWxpemVUb2tlbignc2VsZWN0b3InKTtcbiAgICAgICAgcHVzaFN0YXRlKCdzZWxlY3RvcicpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYmVmb3JlLXZhbHVlJzpcbiAgICAgICAgcmVwbGFjZVN0YXRlKCd2YWx1ZScpO1xuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICc7JzpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICBjYXNlICdiZWZvcmUtdmFsdWUnOlxuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICAvLyBUb2tlbml6ZSBhIGRlY2xhcmF0aW9uXG4gICAgICAgIC8vIGlmIHZhbHVlIGlzIGVtcHR5IHNraXAgdGhlIGRlY2xhcmF0aW9uXG4gICAgICAgIGlmIChidWZmZXIudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0b2tlbi52YWx1ZSA9IGJ1ZmZlci50cmltKCksXG4gICAgICAgICAgYWRkVG9rZW4oKTtcbiAgICAgICAgfVxuICAgICAgICByZXBsYWNlU3RhdGUoJ2JlZm9yZS1uYW1lJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICd2YWx1ZS1wYXJlbic6XG4gICAgICAgIC8vIEluc2lnbmlmaWNhbnQgc2VtaS1jb2xvblxuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhdC12YWx1ZSc6XG4gICAgICAgIC8vIFRva2VuaXplIGFuIEAtcnVsZVxuICAgICAgICB0b2tlbi52YWx1ZSA9IGJ1ZmZlci50cmltKCk7XG4gICAgICAgIGFkZFRva2VuKCk7XG4gICAgICAgIHBvcFN0YXRlKCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiZWZvcmUtbmFtZSc6XG4gICAgICAgIC8vIEV4dHJhbmVvdXMgc2VtaS1jb2xvblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAneyc6XG4gICAgICBzd2l0Y2ggKGdldFN0YXRlKCkpIHtcbiAgICAgIGNhc2UgJ3NlbGVjdG9yJzpcbiAgICAgICAgLy8gSWYgdGhlIHNlcXVlbmNlIGlzIGBcXHtgIHRoZW4gYXNzdW1lIHRoYXQgdGhlIGJyYWNlIHNob3VsZCBiZSBlc2NhcGVkLlxuICAgICAgICBpZiAocGVlaygtMSkgPT09ICdcXFxcJykge1xuICAgICAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUb2tlbml6ZSBhIHNlbGVjdG9yXG4gICAgICAgIHRva2VuLnRleHQgPSBidWZmZXIudHJpbSgpO1xuICAgICAgICBhZGRUb2tlbigpO1xuICAgICAgICByZXBsYWNlU3RhdGUoJ2JlZm9yZS1uYW1lJyk7XG4gICAgICAgIGRlcHRoID0gZGVwdGggKyAxO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYXQtZ3JvdXAnOlxuICAgICAgICAvLyBUb2tlbml6ZSBhbiBALWdyb3VwXG4gICAgICAgIHRva2VuLm5hbWUgPSBidWZmZXIudHJpbSgpO1xuXG4gICAgICAgIC8vIFhYWDogQC1ydWxlcyBhcmUgc3RhcnRpbmcgdG8gZ2V0IGhhaXJ5XG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICBjYXNlICdmb250LWZhY2UnOlxuICAgICAgICBjYXNlICd2aWV3cG9ydCcgOlxuICAgICAgICBjYXNlICdwYWdlJyAgICAgOlxuICAgICAgICAgIHB1c2hTdGF0ZSgnYmVmb3JlLW5hbWUnKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHB1c2hTdGF0ZSgnYmVmb3JlLXNlbGVjdG9yJyk7XG4gICAgICAgIH1cblxuICAgICAgICBhZGRUb2tlbigpO1xuICAgICAgICBkZXB0aCA9IGRlcHRoICsgMTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgY2FzZSAnYXQtcnVsZSc6XG4gICAgICAgIC8vIFRva2VuaXplIGEgZGVjbGFyYXRpb24gb3IgYW4gQC1ydWxlXG4gICAgICAgIHRva2VuLm5hbWUgPSBidWZmZXIudHJpbSgpO1xuICAgICAgICBhZGRUb2tlbigpO1xuICAgICAgICBwdXNoU3RhdGUoJ2JlZm9yZS1uYW1lJyk7XG4gICAgICAgIGRlcHRoID0gZGVwdGggKyAxO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICBjYXNlICdkb3VibGUtc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3NpbmdsZS1zdHJpbmcnOlxuICAgICAgICAvLyBJZ25vcmUgYnJhY2VzIGluIGNvbW1lbnRzIGFuZCBzdHJpbmdzXG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdiZWZvcmUtdmFsdWUnOlxuICAgICAgICByZXBsYWNlU3RhdGUoJ3ZhbHVlJyk7XG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnfSc6XG4gICAgICBzd2l0Y2ggKGdldFN0YXRlKCkpIHtcbiAgICAgIGNhc2UgJ2JlZm9yZS1uYW1lJzpcbiAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgY2FzZSAnYmVmb3JlLXZhbHVlJzpcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBjb250YWlucyBhbnl0aGluZywgaXQgaXMgYSB2YWx1ZVxuICAgICAgICBpZiAoYnVmZmVyKSB7XG4gICAgICAgICAgdG9rZW4udmFsdWUgPSBidWZmZXIudHJpbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgdG9rZW4gaGFzIGEgbmFtZSBhbmQgYSB2YWx1ZSBpdCBzaG91bGQgYmUgdG9rZW5pemVkLlxuICAgICAgICBpZiAodG9rZW4ubmFtZSAmJiB0b2tlbi52YWx1ZSkge1xuICAgICAgICAgIGFkZFRva2VuKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMZWF2ZSB0aGUgYmxvY2tcbiAgICAgICAgaW5pdGlhbGl6ZVRva2VuKCdlbmQnKTtcbiAgICAgICAgYWRkVG9rZW4oKTtcbiAgICAgICAgcG9wU3RhdGUoKTtcblxuICAgICAgICAvLyBXZSBtaWdodCBuZWVkIHRvIGxlYXZlIGFnYWluLlxuICAgICAgICAvLyBYWFg6IFdoYXQgYWJvdXQgMyBsZXZlbHMgZGVlcD9cbiAgICAgICAgaWYgKCdhdC1ncm91cCcgPT09IGdldFN0YXRlKCkpIHtcbiAgICAgICAgICBpbml0aWFsaXplVG9rZW4oJ2F0LWdyb3VwLWVuZCcpO1xuICAgICAgICAgIGFkZFRva2VuKCk7XG4gICAgICAgICAgcG9wU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYgKGRlcHRoID4gMCkge1xuICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2F0LWdyb3VwJzpcbiAgICAgIGNhc2UgJ2JlZm9yZS1zZWxlY3Rvcic6XG4gICAgICBjYXNlICdzZWxlY3Rvcic6XG4gICAgICAgIC8vIElmIHRoZSBzZXF1ZW5jZSBpcyBgXFx9YCB0aGVuIGFzc3VtZSB0aGF0IHRoZSBicmFjZSBzaG91bGQgYmUgZXNjYXBlZC5cbiAgICAgICAgaWYgKHBlZWsoLTEpID09PSAnXFxcXCcpIHtcbiAgICAgICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlcHRoID4gMCkge1xuICAgICAgICAgIC8vIExlYXZlIGJsb2NrIGlmIGluIGFuIGF0LWdyb3VwXG4gICAgICAgICAgaWYgKCdhdC1ncm91cCcgPT09IGdldFN0YXRlKDEpKSB7XG4gICAgICAgICAgICBpbml0aWFsaXplVG9rZW4oJ2F0LWdyb3VwLWVuZCcpO1xuICAgICAgICAgICAgYWRkVG9rZW4oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgICAgcG9wU3RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXB0aCA+IDApIHtcbiAgICAgICAgICBkZXB0aCA9IGRlcHRoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZG91YmxlLXN0cmluZyc6XG4gICAgICBjYXNlICdzaW5nbGUtc3RyaW5nJzpcbiAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAvLyBJZ25vcmUgYnJhY2VzIGluIGNvbW1lbnRzIGFuZCBzdHJpbmdzLlxuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcblxuICAgIC8vIFN0cmluZ3NcbiAgICBjYXNlICdcIic6XG4gICAgY2FzZSBcIidcIjpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAnZG91YmxlLXN0cmluZyc6XG4gICAgICAgIGlmICgnXCInID09PSBjaCAmJiAnXFxcXCcgIT09IHBlZWsoLTEpKSB7XG4gICAgICAgICAgcG9wU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc2luZ2xlLXN0cmluZyc6XG4gICAgICAgIGlmIChcIidcIiA9PT0gY2ggJiYgJ1xcXFwnICE9PSBwZWVrKC0xKSkge1xuICAgICAgICAgIHBvcFN0YXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JlZm9yZS1hdC12YWx1ZSc6XG4gICAgICAgIHJlcGxhY2VTdGF0ZSgnYXQtdmFsdWUnKTtcbiAgICAgICAgcHVzaFN0YXRlKCdcIicgPT09IGNoID8gJ2RvdWJsZS1zdHJpbmcnIDogJ3NpbmdsZS1zdHJpbmcnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JlZm9yZS12YWx1ZSc6XG4gICAgICAgIHJlcGxhY2VTdGF0ZSgndmFsdWUnKTtcbiAgICAgICAgcHVzaFN0YXRlKCdcIicgPT09IGNoID8gJ2RvdWJsZS1zdHJpbmcnIDogJ3NpbmdsZS1zdHJpbmcnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAvLyBJZ25vcmUgc3RyaW5ncyB3aXRoaW4gY29tbWVudHMuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoJ1xcXFwnICE9PSBwZWVrKC0xKSkge1xuICAgICAgICAgIHB1c2hTdGF0ZSgnXCInID09PSBjaCA/ICdkb3VibGUtc3RyaW5nJyA6ICdzaW5nbGUtc3RyaW5nJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgYnJlYWs7XG5cbiAgICAvLyBDb21tZW50c1xuICAgIGNhc2UgJy8nOlxuICAgICAgc3dpdGNoIChnZXRTdGF0ZSgpKSB7XG4gICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgIGNhc2UgJ2RvdWJsZS1zdHJpbmcnOlxuICAgICAgY2FzZSAnc2luZ2xlLXN0cmluZyc6XG4gICAgICAgIC8vIElnbm9yZVxuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiZWZvcmUtdmFsdWUnOlxuICAgICAgY2FzZSAnc2VsZWN0b3InOlxuICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgIGlmIChpc05leHRDaGFyKCcqJykpIHtcbiAgICAgICAgICAvLyBJZ25vcmUgY29tbWVudHMgaW4gc2VsZWN0b3JzLCBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuIFRoZXkgYXJlXG4gICAgICAgICAgLy8gZGlmZmljdWx0IHRvIHJlcHJlc2VudCBpbiB0aGUgQVNULlxuICAgICAgICAgIHZhciBwb3MgPSBmaW5kKCcqLycpO1xuXG4gICAgICAgICAgaWYgKHBvcykge1xuICAgICAgICAgICAgc2tpcChwb3MgKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGdldFN0YXRlKCkgPT0gJ2JlZm9yZS12YWx1ZScpIHJlcGxhY2VTdGF0ZSgndmFsdWUnKTtcbiAgICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChpc05leHRDaGFyKCcqJykpIHtcbiAgICAgICAgICAvLyBDcmVhdGUgYSBjb21tZW50IHRva2VuXG4gICAgICAgICAgaW5pdGlhbGl6ZVRva2VuKCdjb21tZW50Jyk7XG4gICAgICAgICAgcHVzaFN0YXRlKCdjb21tZW50Jyk7XG4gICAgICAgICAgc2tpcCgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgLy8gQ29tbWVudCBlbmQgb3IgdW5pdmVyc2FsIHNlbGVjdG9yXG4gICAgY2FzZSAnKic6XG4gICAgICBzd2l0Y2ggKGdldFN0YXRlKCkpIHtcbiAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICBpZiAoaXNOZXh0Q2hhcignLycpKSB7XG4gICAgICAgICAgLy8gVG9rZW5pemUgYSBjb21tZW50XG4gICAgICAgICAgdG9rZW4udGV4dCA9IGJ1ZmZlcjsgLy8gRG9uJ3QgdHJpbSgpIVxuICAgICAgICAgIHNraXAoKTtcbiAgICAgICAgICBhZGRUb2tlbigpO1xuICAgICAgICAgIHBvcFN0YXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiZWZvcmUtc2VsZWN0b3InOlxuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGluaXRpYWxpemVUb2tlbignc2VsZWN0b3InKTtcbiAgICAgICAgcHVzaFN0YXRlKCdzZWxlY3RvcicpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYmVmb3JlLXZhbHVlJzpcbiAgICAgICAgcmVwbGFjZVN0YXRlKCd2YWx1ZScpO1xuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIC8vIEAtcnVsZXNcbiAgICBjYXNlICdAJzpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICBjYXNlICdkb3VibGUtc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3NpbmdsZS1zdHJpbmcnOlxuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmVmb3JlLXZhbHVlJzpcbiAgICAgICAgcmVwbGFjZVN0YXRlKCd2YWx1ZScpO1xuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHN1cHBvcnRlZCBALXJ1bGVzIGFuZCBhdHRlbXB0IHRvIHRva2VuaXplIG9uZS5cbiAgICAgICAgdmFyIHRva2VuaXplZCA9IGZhbHNlO1xuICAgICAgICB2YXIgbmFtZTtcbiAgICAgICAgdmFyIHJ1bGU7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDAsIGxlbiA9IGF0UnVsZXMubGVuZ3RoOyAhdG9rZW5pemVkICYmIGogPCBsZW47ICsraikge1xuICAgICAgICAgIHJ1bGUgPSBhdFJ1bGVzW2pdO1xuICAgICAgICAgIG5hbWUgPSBydWxlLm5hbWUgfHwgcnVsZTtcblxuICAgICAgICAgIGlmICghaXNOZXh0U3RyaW5nKG5hbWUpKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAgICAgICB0b2tlbml6ZWQgPSB0cnVlO1xuXG4gICAgICAgICAgaW5pdGlhbGl6ZVRva2VuKG5hbWUpO1xuICAgICAgICAgIHB1c2hTdGF0ZShydWxlLnN0YXRlIHx8ICdhdC1ncm91cCcpO1xuICAgICAgICAgIHNraXAobmFtZS5sZW5ndGgpO1xuXG4gICAgICAgICAgaWYgKHJ1bGUucHJlZml4KSB7XG4gICAgICAgICAgICB0b2tlbi5wcmVmaXggPSBydWxlLnByZWZpeDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocnVsZS50eXBlKSB7XG4gICAgICAgICAgICB0b2tlbi50eXBlID0gcnVsZS50eXBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdG9rZW5pemVkKSB7XG4gICAgICAgICAgLy8gS2VlcCBvbiB0cnVja2luJyBBbWVyaWNhIVxuICAgICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgLy8gUGFyZW50aGVzZXMgYXJlIHRyYWNrZWQgdG8gZGlzYW1iaWd1YXRlIHNlbWktY29sb25zLCBzdWNoIGFzIHdpdGhpbiBhXG4gICAgLy8gZGF0YSBVUkkuXG4gICAgY2FzZSAnKCc6XG4gICAgICBzd2l0Y2ggKGdldFN0YXRlKCkpIHtcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgcHVzaFN0YXRlKCd2YWx1ZS1wYXJlbicpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JlZm9yZS12YWx1ZSc6XG4gICAgICAgIHJlcGxhY2VTdGF0ZSgndmFsdWUnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnKSc6XG4gICAgICBzd2l0Y2ggKGdldFN0YXRlKCkpIHtcbiAgICAgIGNhc2UgJ3ZhbHVlLXBhcmVuJzpcbiAgICAgICAgcG9wU3RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdiZWZvcmUtdmFsdWUnOlxuICAgICAgICByZXBsYWNlU3RhdGUoJ3ZhbHVlJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBidWZmZXIgKz0gY2g7XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBzd2l0Y2ggKGdldFN0YXRlKCkpIHtcbiAgICAgIGNhc2UgJ2JlZm9yZS1zZWxlY3Rvcic6XG4gICAgICAgIGluaXRpYWxpemVUb2tlbignc2VsZWN0b3InKTtcbiAgICAgICAgcHVzaFN0YXRlKCdzZWxlY3RvcicpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYmVmb3JlLW5hbWUnOlxuICAgICAgICBpbml0aWFsaXplVG9rZW4oJ3Byb3BlcnR5Jyk7XG4gICAgICAgIHJlcGxhY2VTdGF0ZSgnbmFtZScpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYmVmb3JlLXZhbHVlJzpcbiAgICAgICAgcmVwbGFjZVN0YXRlKCd2YWx1ZScpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYmVmb3JlLWF0LXZhbHVlJzpcbiAgICAgICAgcmVwbGFjZVN0YXRlKCdhdC12YWx1ZScpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgVElNRVIgJiYgZGVidWcoJ3JhbiBpbicsIChEYXRlLm5vdygpIC0gc3RhcnQpICsgJ21zJyk7XG5cbiAgcmV0dXJuIHRva2Vucztcbn1cbiIsICJ2YXIgREVCVUcgPSBmYWxzZTsgLy8gYHRydWVgIHRvIHByaW50IGRlYnVnZ2luZyBpbmZvLlxudmFyIFRJTUVSID0gZmFsc2U7IC8vIGB0cnVlYCB0byB0aW1lIGNhbGxzIHRvIGBwYXJzZSgpYCBhbmQgcHJpbnQgdGhlIHJlc3VsdHMuXG5cbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJy4vZGVidWcnKSgncGFyc2UnKTtcbnZhciBsZXggPSByZXF1aXJlKCcuL2xleGVyJyk7XG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHBhcnNlO1xuXG52YXIgX2NvbW1lbnRzOyAgIC8vIFdoZXRoZXIgY29tbWVudHMgYXJlIGFsbG93ZWQuXG52YXIgX2RlcHRoOyAgICAgIC8vIEN1cnJlbnQgYmxvY2sgbmVzdGluZyBkZXB0aC5cbnZhciBfcG9zaXRpb247ICAgLy8gV2hldGhlciB0byBpbmNsdWRlIGxpbmUvY29sdW1uIHBvc2l0aW9uLlxudmFyIF90b2tlbnM7ICAgICAvLyBBcnJheSBvZiBsZXhpY2FsIHRva2Vucy5cblxuLyoqXG4gKiBDb252ZXJ0IGEgQ1NTIHN0cmluZyBvciBhcnJheSBvZiBsZXhpY2FsIHRva2VucyBpbnRvIGEgYHN0cmluZ2lmeWAtYWJsZSBBU1QuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGNzcyBDU1Mgc3RyaW5nIG9yIGFycmF5IG9mIGxleGljYWwgdG9rZW5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuY29tbWVudHM9ZmFsc2VdIGFsbG93IGNvbW1lbnQgbm9kZXMgaW4gdGhlIEFTVFxuICogQHJldHVybnMge09iamVjdH0gYHN0cmluZ2lmeWAtYWJsZSBBU1RcbiAqL1xuZnVuY3Rpb24gcGFyc2UoY3NzLCBvcHRpb25zKSB7XG4gIHZhciBzdGFydDsgLy8gRGVidWcgdGltZXIgc3RhcnQuXG5cbiAgb3B0aW9ucyB8fCAob3B0aW9ucyA9IHt9KTtcbiAgX2NvbW1lbnRzID0gISFvcHRpb25zLmNvbW1lbnRzO1xuICBfcG9zaXRpb24gPSAhIW9wdGlvbnMucG9zaXRpb247XG5cbiAgX2RlcHRoID0gMDtcblxuICAvLyBPcGVyYXRlIG9uIGEgY29weSBvZiB0aGUgZ2l2ZW4gdG9rZW5zLCBvciB0aGUgbGV4KCknZCBDU1Mgc3RyaW5nLlxuICBfdG9rZW5zID0gQXJyYXkuaXNBcnJheShjc3MpID8gY3NzLnNsaWNlKCkgOiBsZXgoY3NzKTtcblxuICB2YXIgcnVsZTtcbiAgdmFyIHJ1bGVzID0gW107XG4gIHZhciB0b2tlbjtcblxuICBUSU1FUiAmJiAoc3RhcnQgPSBEYXRlLm5vdygpKTtcblxuICB3aGlsZSAoKHRva2VuID0gbmV4dCgpKSkge1xuICAgIHJ1bGUgPSBwYXJzZVRva2VuKHRva2VuKTtcbiAgICBydWxlICYmIHJ1bGVzLnB1c2gocnVsZSk7XG4gIH1cblxuICBUSU1FUiAmJiBkZWJ1ZygncmFuIGluJywgKERhdGUubm93KCkgLSBzdGFydCkgKyAnbXMnKTtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IFwic3R5bGVzaGVldFwiLFxuICAgIHN0eWxlc2hlZXQ6IHtcbiAgICAgIHJ1bGVzOiBydWxlc1xuICAgIH1cbiAgfTtcbn1cblxuLy8gLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQnVpbGQgYW4gQVNUIG5vZGUgZnJvbSBhIGxleGljYWwgdG9rZW4uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHRva2VuIGxleGljYWwgdG9rZW5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3ZlcnJpZGVdIG9iamVjdCBoYXNoIG9mIHByb3BlcnRpZXMgdGhhdCBvdmVycmlkZSB0aG9zZVxuICogICBhbHJlYWR5IGluIHRoZSB0b2tlbiwgb3IgdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSB0b2tlbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IEFTVCBub2RlXG4gKi9cbmZ1bmN0aW9uIGFzdE5vZGUodG9rZW4sIG92ZXJyaWRlKSB7XG4gIG92ZXJyaWRlIHx8IChvdmVycmlkZSA9IHt9KTtcblxuICB2YXIga2V5O1xuICB2YXIga2V5cyA9IFsndHlwZScsICduYW1lJywgJ3ZhbHVlJ107XG4gIHZhciBub2RlID0ge307XG5cbiAgLy8gQXZvaWRpbmcgW10uZm9yRWFjaCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcblxuICAgIGlmICh0b2tlbltrZXldKSB7XG4gICAgICBub2RlW2tleV0gPSBvdmVycmlkZVtrZXldIHx8IHRva2VuW2tleV07XG4gICAgfVxuICB9XG5cbiAga2V5cyA9IE9iamVjdC5rZXlzKG92ZXJyaWRlKTtcblxuICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgIGtleSA9IGtleXNbaV07XG5cbiAgICBpZiAoIW5vZGVba2V5XSkge1xuICAgICAgbm9kZVtrZXldID0gb3ZlcnJpZGVba2V5XTtcbiAgICB9XG4gIH1cblxuICBpZiAoX3Bvc2l0aW9uKSB7XG4gICAgbm9kZS5wb3NpdGlvbiA9IHtcbiAgICAgIHN0YXJ0OiB0b2tlbi5zdGFydCxcbiAgICAgIGVuZDogdG9rZW4uZW5kXG4gICAgfTtcbiAgfVxuXG4gIERFQlVHICYmIGRlYnVnKCdhc3ROb2RlOicsIEpTT04uc3RyaW5naWZ5KG5vZGUsIG51bGwsIDIpKTtcblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYSBsZXhpY2FsIHRva2VuIGZyb20gdGhlIHN0YWNrIGFuZCByZXR1cm4gdGhlIHJlbW92ZWQgdG9rZW4uXG4gKlxuICogQHJldHVybnMge09iamVjdH0gbGV4aWNhbCB0b2tlblxuICovXG5mdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgdG9rZW4gPSBfdG9rZW5zLnNoaWZ0KCk7XG4gIERFQlVHICYmIGRlYnVnKCduZXh0OicsIEpTT04uc3RyaW5naWZ5KHRva2VuLCBudWxsLCAyKSk7XG4gIHJldHVybiB0b2tlbjtcbn1cblxuLy8gLS0gUGFyc2UqIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIEAtZ3JvdXAgbGV4aWNhbCB0b2tlbiB0byBhbiBBU1Qgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdG9rZW4gQC1ncm91cCBsZXhpY2FsIHRva2VuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBALWdyb3VwIEFTVCBub2RlXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQXRHcm91cCh0b2tlbikge1xuICBfZGVwdGggPSBfZGVwdGggKyAxO1xuXG4gIC8vIEFzIHRoZSBALWdyb3VwIHRva2VuIGlzIGFzc2VtYmxlZCwgcmVsZXZhbnQgdG9rZW4gdmFsdWVzIGFyZSBjYXB0dXJlZCBoZXJlXG4gIC8vIHRlbXBvcmFyaWx5LiBUaGV5IHdpbGwgbGF0ZXIgYmUgdXNlZCBhcyBgdG9rZW5pemUoKWAgb3ZlcnJpZGVzLlxuICB2YXIgb3ZlcnJpZGVzID0ge307XG5cbiAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gIGNhc2UgJ2ZvbnQtZmFjZSc6XG4gIGNhc2UgJ3ZpZXdwb3J0JyA6XG4gICAgb3ZlcnJpZGVzLmRlY2xhcmF0aW9ucyA9IHBhcnNlRGVjbGFyYXRpb25zKCk7XG4gICAgYnJlYWs7XG5cbiAgY2FzZSAncGFnZSc6XG4gICAgb3ZlcnJpZGVzLnByZWZpeCA9IHRva2VuLnByZWZpeDtcbiAgICBvdmVycmlkZXMuZGVjbGFyYXRpb25zID0gcGFyc2VEZWNsYXJhdGlvbnMoKTtcbiAgICBicmVhaztcblxuICBkZWZhdWx0OlxuICAgIG92ZXJyaWRlcy5wcmVmaXggPSB0b2tlbi5wcmVmaXg7XG4gICAgb3ZlcnJpZGVzLnJ1bGVzID0gcGFyc2VSdWxlcygpO1xuICB9XG5cbiAgcmV0dXJuIGFzdE5vZGUodG9rZW4sIG92ZXJyaWRlcyk7XG59XG5cbi8qKlxuICogQ29udmVydCBhbiBAaW1wb3J0IGxleGljYWwgdG9rZW4gdG8gYW4gQVNUIG5vZGUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHRva2VuIEBpbXBvcnQgbGV4aWNhbCB0b2tlblxuICogQHJldHVybnMge09iamVjdH0gQGltcG9ydCBBU1Qgbm9kZVxuICovXG5mdW5jdGlvbiBwYXJzZUF0SW1wb3J0KHRva2VuKSB7XG4gIHJldHVybiBhc3ROb2RlKHRva2VuKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIEBjaGFyc2V0IHRva2VuIHRvIGFuIEFTVCBub2RlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b2tlbiBAY2hhcnNldCBsZXhpY2FsIHRva2VuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBAY2hhcnNldCBub2RlXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQ2hhcnNldCh0b2tlbikge1xuICByZXR1cm4gYXN0Tm9kZSh0b2tlbik7XG59XG5cbi8qKlxuICogQ29udmVydCBhIGNvbW1lbnQgdG9rZW4gdG8gYW4gQVNUIE5vZGUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHRva2VuIGNvbW1lbnQgbGV4aWNhbCB0b2tlblxuICogQHJldHVybnMge09iamVjdH0gY29tbWVudCBub2RlXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQ29tbWVudCh0b2tlbikge1xuICByZXR1cm4gYXN0Tm9kZSh0b2tlbiwge3RleHQ6IHRva2VuLnRleHR9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VOYW1lc3BhY2UodG9rZW4pIHtcbiAgcmV0dXJuIGFzdE5vZGUodG9rZW4pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBwcm9wZXJ0eSBsZXhpY2FsIHRva2VuIHRvIGEgcHJvcGVydHkgQVNUIG5vZGUuXG4gKlxuICogQHJldHVybnMge09iamVjdH0gcHJvcGVydHkgbm9kZVxuICovXG5mdW5jdGlvbiBwYXJzZVByb3BlcnR5KHRva2VuKSB7XG4gIHJldHVybiBhc3ROb2RlKHRva2VuKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc2VsZWN0b3IgbGV4aWNhbCB0b2tlbiB0byBhIHNlbGVjdG9yIEFTVCBub2RlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b2tlbiBzZWxlY3RvciBsZXhpY2FsIHRva2VuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBzZWxlY3RvciBub2RlXG4gKi9cbmZ1bmN0aW9uIHBhcnNlU2VsZWN0b3IodG9rZW4pIHtcbiAgZnVuY3Rpb24gdHJpbShzdHIpIHtcbiAgICByZXR1cm4gc3RyLnRyaW0oKTtcbiAgfVxuXG4gIHJldHVybiBhc3ROb2RlKHRva2VuLCB7XG4gICAgdHlwZTogJ3J1bGUnLFxuICAgIHNlbGVjdG9yczogdG9rZW4udGV4dC5zcGxpdCgnLCcpLm1hcCh0cmltKSxcbiAgICBkZWNsYXJhdGlvbnM6IHBhcnNlRGVjbGFyYXRpb25zKHRva2VuKVxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgbGV4aWNhbCB0b2tlbiB0byBhbiBBU1Qgbm9kZS5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fHVuZGVmaW5lZH0gQVNUIG5vZGVcbiAqL1xuZnVuY3Rpb24gcGFyc2VUb2tlbih0b2tlbikge1xuICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgLy8gQ2FzZXMgYXJlIGxpc3RlZCBpbiByb3VnaGx5IGRlc2NlbmRpbmcgb3JkZXIgb2YgcHJvYmFiaWxpdHkuXG4gIGNhc2UgJ3Byb3BlcnR5JzogcmV0dXJuIHBhcnNlUHJvcGVydHkodG9rZW4pO1xuXG4gIGNhc2UgJ3NlbGVjdG9yJzogcmV0dXJuIHBhcnNlU2VsZWN0b3IodG9rZW4pO1xuXG4gIGNhc2UgJ2F0LWdyb3VwLWVuZCc6IF9kZXB0aCA9IF9kZXB0aCAtIDE7IHJldHVybjtcblxuICBjYXNlICdtZWRpYScgICAgIDpcbiAgY2FzZSAna2V5ZnJhbWVzJyA6cmV0dXJuIHBhcnNlQXRHcm91cCh0b2tlbik7XG5cbiAgY2FzZSAnY29tbWVudCc6IGlmIChfY29tbWVudHMpIHsgcmV0dXJuIHBhcnNlQ29tbWVudCh0b2tlbik7IH0gYnJlYWs7XG5cbiAgY2FzZSAnY2hhcnNldCc6IHJldHVybiBwYXJzZUNoYXJzZXQodG9rZW4pO1xuICBjYXNlICdpbXBvcnQnOiByZXR1cm4gcGFyc2VBdEltcG9ydCh0b2tlbik7XG5cbiAgY2FzZSAnbmFtZXNwYWNlJzogcmV0dXJuIHBhcnNlTmFtZXNwYWNlKHRva2VuKTtcblxuICBjYXNlICdmb250LWZhY2UnOlxuICBjYXNlICdzdXBwb3J0cycgOlxuICBjYXNlICd2aWV3cG9ydCcgOlxuICBjYXNlICdkb2N1bWVudCcgOlxuICBjYXNlICdwYWdlJyAgICAgOiByZXR1cm4gcGFyc2VBdEdyb3VwKHRva2VuKTtcbiAgfVxuXG4gIERFQlVHICYmIGRlYnVnKCdwYXJzZVRva2VuOiB1bmV4cGVjdGVkIHRva2VuOicsIEpTT04uc3RyaW5naWZ5KHRva2VuKSk7XG59XG5cbi8vIC0tIFBhcnNlIEhlbHBlciBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogSXRlcmF0aXZlbHkgcGFyc2VzIGxleGljYWwgdG9rZW5zIGZyb20gdGhlIHN0YWNrIGludG8gQVNUIG5vZGVzIHVudGlsIGFcbiAqIGNvbmRpdGlvbmFsIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCwgYXQgd2hpY2ggcG9pbnQgaXRlcmF0aW9uIHRlcm1pbmF0ZXNcbiAqIGFuZCBhbnkgQVNUIG5vZGVzIGNvbGxlY3RlZCBhcmUgcmV0dXJuZWQuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29uZGl0aW9uRm5cbiAqICAgQHBhcmFtIHtPYmplY3R9IHRva2VuIHRoZSBsZXhpY2FsIHRva2VuIGJlaW5nIHBhcnNlZFxuICogICBAcmV0dXJucyB7Qm9vbGVhbn0gYHRydWVgIGlmIHRoZSB0b2tlbiBzaG91bGQgYmUgcGFyc2VkLCBgZmFsc2VgIG90aGVyd2lzZVxuICogQHJldHVybiB7QXJyYXl9IEFTVCBub2Rlc1xuICovXG5mdW5jdGlvbiBwYXJzZVRva2Vuc1doaWxlKGNvbmRpdGlvbkZuKSB7XG4gIHZhciBub2RlO1xuICB2YXIgbm9kZXMgPSBbXTtcbiAgdmFyIHRva2VuO1xuXG4gIHdoaWxlICgodG9rZW4gPSBuZXh0KCkpICYmIChjb25kaXRpb25GbiAmJiBjb25kaXRpb25Gbih0b2tlbikpKSB7XG4gICAgbm9kZSA9IHBhcnNlVG9rZW4odG9rZW4pO1xuICAgIG5vZGUgJiYgbm9kZXMucHVzaChub2RlKTtcbiAgfVxuXG4gIC8vIFBsYWNlIGFuIHVudXNlZCBub24tYGVuZGAgbGV4aWNhbCB0b2tlbiBiYWNrIG9udG8gdGhlIHN0YWNrLlxuICBpZiAodG9rZW4gJiYgdG9rZW4udHlwZSAhPT0gJ2VuZCcpIHtcbiAgICBfdG9rZW5zLnVuc2hpZnQodG9rZW4pO1xuICB9XG5cbiAgcmV0dXJuIG5vZGVzO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBzZXJpZXMgb2YgdG9rZW5zIGludG8gYSBzZXF1ZW5jZSBvZiBkZWNsYXJhdGlvbiBBU1Qgbm9kZXMuXG4gKlxuICogQHJldHVybnMge0FycmF5fSBkZWNsYXJhdGlvbiBub2Rlc1xuICovXG5mdW5jdGlvbiBwYXJzZURlY2xhcmF0aW9ucygpIHtcbiAgcmV0dXJuIHBhcnNlVG9rZW5zV2hpbGUoZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgcmV0dXJuICh0b2tlbi50eXBlID09PSAncHJvcGVydHknIHx8IHRva2VuLnR5cGUgPT09ICdjb21tZW50Jyk7XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBzZXJpZXMgb2YgdG9rZW5zIGludG8gYSBzZXF1ZW5jZSBvZiBydWxlIG5vZGVzLlxuICpcbiAqIEByZXR1cm5zIHtBcnJheX0gcnVsZSBub2Rlc1xuICovXG5mdW5jdGlvbiBwYXJzZVJ1bGVzKCkge1xuICByZXR1cm4gcGFyc2VUb2tlbnNXaGlsZShmdW5jdGlvbiAoKSB7IHJldHVybiBfZGVwdGg7IH0pO1xufVxuIiwgInZhciBERUJVRyA9IGZhbHNlOyAvLyBgdHJ1ZWAgdG8gcHJpbnQgZGVidWdnaW5nIGluZm8uXG52YXIgVElNRVIgPSBmYWxzZTsgLy8gYHRydWVgIHRvIHRpbWUgY2FsbHMgdG8gYHN0cmluZ2lmeSgpYCBhbmQgcHJpbnQgdGhlIHJlc3VsdHMuXG5cbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJy4vZGVidWcnKSgnc3RyaW5naWZ5Jyk7XG5cbnZhciBfY29tbWVudHM7ICAgICAgLy8gV2hldGhlciBjb21tZW50cyBhcmUgYWxsb3dlZCBpbiB0aGUgc3RyaW5naWZpZWQgQ1NTLlxudmFyIF9jb21wcmVzczsgICAgICAvLyBXaGV0aGVyIHRoZSBzdHJpbmdpZmllZCBDU1Mgc2hvdWxkIGJlIGNvbXByZXNzZWQuXG52YXIgX2luZGVudGF0aW9uOyAgIC8vIEluZGVudGF0aW9uIG9wdGlvbiB2YWx1ZS5cbnZhciBfbGV2ZWw7ICAgICAgICAgLy8gQ3VycmVudCBpbmRlbnRhdGlvbiBsZXZlbC5cbnZhciBfbjsgICAgICAgICAgICAgLy8gQ29tcHJlc3Npb24tYXdhcmUgbmV3bGluZSBjaGFyYWN0ZXIuXG52YXIgX3M7ICAgICAgICAgICAgIC8vIENvbXByZXNzaW9uLWF3YXJlIHNwYWNlIGNoYXJhY3Rlci5cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gc3RyaW5naWZ5O1xuXG4vKipcbiAqIENvbnZlcnQgYSBgc3RyaW5naWZ5YC1hYmxlIEFTVCBpbnRvIGEgQ1NTIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYHN0cmluZ2lmeWAtYWJsZSBBU1RcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc11cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuY29tbWVudHM9ZmFsc2VdIGFsbG93IGNvbW1lbnRzIGluIHRoZSBDU1NcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdGlvbnMuY29tcHJlc3M9ZmFsc2VdIGNvbXByZXNzIHdoaXRlc3BhY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0aW9ucy5pbmRlbnRhdGlvbj0nJ10gaW5kZW50YXRpb24gc2VxdWVuY2VcbiAqIEByZXR1cm5zIHtTdHJpbmd9IENTU1xuICovXG5mdW5jdGlvbiBzdHJpbmdpZnkoYXN0LCBvcHRpb25zKSB7XG4gIHZhciBzdGFydDsgLy8gRGVidWcgdGltZXIgc3RhcnQuXG5cbiAgb3B0aW9ucyB8fCAob3B0aW9ucyA9IHt9KTtcbiAgX2luZGVudGF0aW9uID0gb3B0aW9ucy5pbmRlbnRhdGlvbiB8fCAnJztcbiAgX2NvbXByZXNzID0gISFvcHRpb25zLmNvbXByZXNzO1xuICBfY29tbWVudHMgPSAhIW9wdGlvbnMuY29tbWVudHM7XG4gIF9sZXZlbCA9IDE7XG5cbiAgaWYgKF9jb21wcmVzcykge1xuICAgIF9uID0gX3MgPSAnJztcbiAgfSBlbHNlIHtcbiAgICBfbiA9ICdcXG4nO1xuICAgIF9zID0gJyAnO1xuICB9XG5cbiAgVElNRVIgJiYgKHN0YXJ0ID0gRGF0ZS5ub3coKSk7XG5cbiAgdmFyIGNzcyA9IHJlZHVjZShhc3Quc3R5bGVzaGVldC5ydWxlcywgc3RyaW5naWZ5Tm9kZSkuam9pbignXFxuJykudHJpbSgpO1xuXG4gIFRJTUVSICYmIGRlYnVnKCdyYW4gaW4nLCAoRGF0ZS5ub3coKSAtIHN0YXJ0KSArICdtcycpO1xuXG4gIHJldHVybiBjc3M7XG59XG5cbi8vIC0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIE1vZGlmeSB0aGUgaW5kZW50YXRpb24gbGV2ZWwsIG9yIHJldHVybiBhIGNvbXByZXNzaW9uLWF3YXJlIHNlcXVlbmNlIG9mXG4gKiBzcGFjZXMgZXF1YWwgdG8gdGhlIGN1cnJlbnQgaW5kZW50YXRpb24gbGV2ZWwuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IFtsZXZlbD11bmRlZmluZWRdIGluZGVudGF0aW9uIGxldmVsIG1vZGlmaWVyXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBzZXF1ZW5jZSBvZiBzcGFjZXNcbiAqL1xuZnVuY3Rpb24gaW5kZW50KGxldmVsKSB7XG4gIGlmIChsZXZlbCkge1xuICAgIF9sZXZlbCArPSBsZXZlbDtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoX2NvbXByZXNzKSB7IHJldHVybiAnJzsgfVxuXG4gIHJldHVybiBBcnJheShfbGV2ZWwpLmpvaW4oX2luZGVudGF0aW9uIHx8ICcnKTtcbn1cblxuLy8gLS0gU3RyaW5naWZ5IEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBTdHJpbmdpZnkgYW4gQC1ydWxlIEFTVCBub2RlLlxuICpcbiAqIFVzZSBgc3RyaW5naWZ5QXRHcm91cCgpYCB3aGVuIGRlYWxpbmcgd2l0aCBALWdyb3VwcyB0aGF0IG1heSBjb250YWluIGJsb2Nrc1xuICogc3VjaCBhcyBAbWVkaWEuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgQC1ydWxlIHR5cGUuIEUuZy4sIGltcG9ydCwgY2hhcnNldFxuICogQHJldHVybnMge1N0cmluZ30gU3RyaW5naWZpZWQgQC1ydWxlXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeUF0UnVsZShub2RlKSB7XG4gIHJldHVybiAnQCcgKyBub2RlLnR5cGUgKyAnICcgKyBub2RlLnZhbHVlICsgJzsnICsgX247XG59XG5cbi8qKlxuICogU3RyaW5naWZ5IGFuIEAtZ3JvdXAgQVNUIG5vZGUuXG4gKlxuICogVXNlIGBzdHJpbmdpZnlBdFJ1bGUoKWAgd2hlbiBkZWFsaW5nIHdpdGggQC1ydWxlcyB0aGF0IG1heSBub3QgY29udGFpbiBibG9ja3NcbiAqIHN1Y2ggYXMgQGltcG9ydC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gbm9kZSBALWdyb3VwIEFTVCBub2RlXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlBdEdyb3VwKG5vZGUpIHtcbiAgdmFyIGxhYmVsID0gJyc7XG4gIHZhciBwcmVmaXggPSBub2RlLnByZWZpeCB8fCAnJztcblxuICBpZiAobm9kZS5uYW1lKSB7XG4gICAgbGFiZWwgPSAnICcgKyBub2RlLm5hbWU7XG4gIH1cblxuICAvLyBGSVhNRTogQC1ydWxlIGNvbmRpdGlvbmFsIGxvZ2ljIGlzIGxlYWtpbmcgZXZlcnl3aGVyZS5cbiAgdmFyIGNob21wID0gbm9kZS50eXBlICE9PSAncGFnZSc7XG5cbiAgcmV0dXJuICdAJyArIHByZWZpeCArIG5vZGUudHlwZSArIGxhYmVsICsgX3MgKyBzdHJpbmdpZnlCbG9jayhub2RlLCBjaG9tcCkgKyBfbjtcbn1cblxuLyoqXG4gKiBTdHJpbmdpZnkgYSBjb21tZW50IEFTVCBub2RlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBub2RlIGNvbW1lbnQgQVNUIG5vZGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeUNvbW1lbnQobm9kZSkge1xuICBpZiAoIV9jb21tZW50cykgeyByZXR1cm4gJyc7IH1cblxuICByZXR1cm4gJy8qJyArIChub2RlLnRleHQgfHwgJycpICsgJyovJyArIF9uO1xufVxuXG4vKipcbiAqIFN0cmluZ2lmeSBhIHJ1bGUgQVNUIG5vZGUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5vZGUgcnVsZSBBU1Qgbm9kZVxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5UnVsZShub2RlKSB7XG4gIHZhciBsYWJlbDtcblxuICBpZiAobm9kZS5zZWxlY3RvcnMpIHtcbiAgICBsYWJlbCA9IG5vZGUuc2VsZWN0b3JzLmpvaW4oJywnICsgX24pO1xuICB9IGVsc2Uge1xuICAgIGxhYmVsID0gJ0AnICsgbm9kZS50eXBlO1xuICAgIGxhYmVsICs9IG5vZGUubmFtZSA/ICcgJyArIG5vZGUubmFtZSA6ICcnO1xuICB9XG5cbiAgcmV0dXJuIGluZGVudCgpICsgbGFiZWwgKyBfcyArIHN0cmluZ2lmeUJsb2NrKG5vZGUpICsgX247XG59XG5cblxuLy8gLS0gU3RyaW5naWZ5IEhlbHBlciBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBSZWR1Y2UgYW4gYXJyYXkgYnkgYXBwbHlpbmcgYSBmdW5jdGlvbiB0byBlYWNoIGl0ZW0gYW5kIHJldGFpbmluZyB0aGUgdHJ1dGh5XG4gKiByZXN1bHRzLlxuICpcbiAqIFdoZW4gYGl0ZW0udHlwZWAgaXMgYCdjb21tZW50J2AgYHN0cmluZ2lmeUNvbW1lbnRgIHdpbGwgYmUgYXBwbGllZCBpbnN0ZWFkLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGl0ZW1zIGFycmF5IHRvIHJlZHVjZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpdGVtIGluIHRoZSBhcnJheVxuICogICBAcmV0dXJucyB7TWl4ZWR9IFRydXRoeSB2YWx1ZXMgd2lsbCBiZSByZXRhaW5lZCwgZmFsc3kgdmFsdWVzIG9taXR0ZWRcbiAqIEByZXR1cm5zIHtBcnJheX0gcmV0YWluZWQgcmVzdWx0c1xuICovXG5mdW5jdGlvbiByZWR1Y2UoaXRlbXMsIGZuKSB7XG4gIHJldHVybiBpdGVtcy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdHMsIGl0ZW0pIHtcbiAgICB2YXIgcmVzdWx0ID0gKGl0ZW0udHlwZSA9PT0gJ2NvbW1lbnQnKSA/IHN0cmluZ2lmeUNvbW1lbnQoaXRlbSkgOiBmbihpdGVtKTtcbiAgICByZXN1bHQgJiYgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH0sIFtdKTtcbn1cblxuLyoqXG4gKiBTdHJpbmdpZnkgYW4gQVNUIG5vZGUgd2l0aCB0aGUgYXNzdW1wdGlvbiB0aGF0IGl0IHJlcHJlc2VudHMgYSBibG9jayBvZlxuICogZGVjbGFyYXRpb25zIG9yIG90aGVyIEAtZ3JvdXAgY29udGVudHMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5vZGUgQVNUIG5vZGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbi8vIEZJWE1FOiBjaG9tcCBzaG91bGQgbm90IGJlIGEgbWFnaWMgYm9vbGVhbiBwYXJhbWV0ZXJcbmZ1bmN0aW9uIHN0cmluZ2lmeUJsb2NrKG5vZGUsIGNob21wKSB7XG4gIHZhciBjaGlsZHJlbiA9IG5vZGUuZGVjbGFyYXRpb25zO1xuICB2YXIgZm4gPSBzdHJpbmdpZnlEZWNsYXJhdGlvbjtcblxuICBpZiAobm9kZS5ydWxlcykge1xuICAgIGNoaWxkcmVuID0gbm9kZS5ydWxlcztcbiAgICBmbiA9IHN0cmluZ2lmeVJ1bGU7XG4gIH1cblxuICBjaGlsZHJlbiA9IHN0cmluZ2lmeUNoaWxkcmVuKGNoaWxkcmVuLCBmbik7XG4gIGNoaWxkcmVuICYmIChjaGlsZHJlbiA9IF9uICsgY2hpbGRyZW4gKyAoY2hvbXAgPyAnJyA6IF9uKSk7XG5cbiAgcmV0dXJuICd7JyArIGNoaWxkcmVuICsgaW5kZW50KCkgKyAnfSc7XG59XG5cbi8qKlxuICogU3RyaW5naWZ5IGFuIGFycmF5IG9mIGNoaWxkIEFTVCBub2RlcyBieSBjYWxsaW5nIHRoZSBnaXZlbiBzdHJpbmdpZnkgZnVuY3Rpb25cbiAqIG9uY2UgZm9yIGVhY2ggY2hpbGQsIGFuZCBjb25jYXRlbmF0aW5nIHRoZSByZXN1bHRzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGNoaWxkcmVuIGBub2RlLnJ1bGVzYCBvciBgbm9kZS5kZWNsYXJhdGlvbnNgXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBzdHJpbmdpZnkgZnVuY3Rpb25cbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeUNoaWxkcmVuKGNoaWxkcmVuLCBmbikge1xuICBpZiAoIWNoaWxkcmVuKSB7IHJldHVybiAnJzsgfVxuXG4gIGluZGVudCgxKTtcbiAgdmFyIHJlc3VsdHMgPSByZWR1Y2UoY2hpbGRyZW4sIGZuKTtcbiAgaW5kZW50KC0xKTtcblxuICBpZiAoIXJlc3VsdHMubGVuZ3RoKSB7IHJldHVybiAnJzsgfVxuXG4gIHJldHVybiByZXN1bHRzLmpvaW4oX24pO1xufVxuXG4vKipcbiAqIFN0cmluZ2lmeSBhIGRlY2xhcmF0aW9uIEFTVCBub2RlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBub2RlIGRlY2xhcmF0aW9uIEFTVCBub2RlXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlEZWNsYXJhdGlvbihub2RlKSB7XG4gIGlmIChub2RlLnR5cGUgPT09ICdwcm9wZXJ0eScpIHtcbiAgICByZXR1cm4gc3RyaW5naWZ5UHJvcGVydHkobm9kZSk7XG4gIH1cblxuICBERUJVRyAmJiBkZWJ1Zygnc3RyaW5naWZ5RGVjbGFyYXRpb246IHVuZXhwZWN0ZWQgbm9kZTonLCBKU09OLnN0cmluZ2lmeShub2RlKSk7XG59XG5cbi8qKlxuICogU3RyaW5naWZ5IGFuIEFTVCBub2RlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBub2RlIEFTVCBub2RlXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlOb2RlKG5vZGUpIHtcbiAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgLy8gQ2FzZXMgYXJlIGxpc3RlZCBpbiByb3VnaGx5IGRlc2NlbmRpbmcgb3JkZXIgb2YgcHJvYmFiaWxpdHkuXG4gIGNhc2UgJ3J1bGUnOiByZXR1cm4gc3RyaW5naWZ5UnVsZShub2RlKTtcblxuICBjYXNlICdtZWRpYScgICAgOlxuICBjYXNlICdrZXlmcmFtZXMnOiByZXR1cm4gc3RyaW5naWZ5QXRHcm91cChub2RlKTtcblxuICBjYXNlICdjb21tZW50JzogcmV0dXJuIHN0cmluZ2lmeUNvbW1lbnQobm9kZSk7XG5cbiAgY2FzZSAnaW1wb3J0JyAgIDpcbiAgY2FzZSAnY2hhcnNldCcgIDpcbiAgY2FzZSAnbmFtZXNwYWNlJzogcmV0dXJuIHN0cmluZ2lmeUF0UnVsZShub2RlKTtcblxuICBjYXNlICdmb250LWZhY2UnOlxuICBjYXNlICdzdXBwb3J0cycgOlxuICBjYXNlICd2aWV3cG9ydCcgOlxuICBjYXNlICdkb2N1bWVudCcgOlxuICBjYXNlICdwYWdlJyAgICAgOiByZXR1cm4gc3RyaW5naWZ5QXRHcm91cChub2RlKTtcbiAgfVxuXG4gIERFQlVHICYmIGRlYnVnKCdzdHJpbmdpZnlOb2RlOiB1bmV4cGVjdGVkIG5vZGU6ICcgKyBKU09OLnN0cmluZ2lmeShub2RlKSk7XG59XG5cbi8qKlxuICogU3RyaW5naWZ5IGFuIEFTVCBwcm9wZXJ0eSBub2RlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBub2RlIEFTVCBwcm9wZXJ0eSBub2RlXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlQcm9wZXJ0eShub2RlKSB7XG4gIHZhciBuYW1lID0gbm9kZS5uYW1lID8gbm9kZS5uYW1lICsgJzonICsgX3MgOiAnJztcblxuICByZXR1cm4gaW5kZW50KCkgKyBuYW1lICsgbm9kZS52YWx1ZSArICc7Jztcbn1cbiIsICJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBsZXggIDogcmVxdWlyZSgnLi9saWIvbGV4ZXInKSxcbiAgICBwYXJzZTogcmVxdWlyZSgnLi9saWIvcGFyc2VyJyksXG4gICAgc3RyaW5naWZ5OiByZXF1aXJlKCcuL2xpYi9zdHJpbmdpZnknKVxufTtcbiIsICIvKlxyXG5TbGljayBQYXJzZXJcclxuIC0gb3JpZ2luYWxseSBjcmVhdGVkIGJ5IHRoZSBhbG1pZ2h0eSBUaG9tYXMgQXlsb3R0IDxAc3VidGxlZ3JhZGllbnQ+IChodHRwOi8vc3VidGxlZ3JhZGllbnQuY29tKVxyXG4qL1widXNlIHN0cmljdFwiXHJcblxyXG4vLyBOb3RhYmxlIGNoYW5nZXMgZnJvbSBTbGljay5QYXJzZXIgMS4wLnhcclxuXHJcbi8vIFRoZSBwYXJzZXIgbm93IHVzZXMgMiBjbGFzc2VzOiBFeHByZXNzaW9ucyBhbmQgRXhwcmVzc2lvblxyXG4vLyBgbmV3IEV4cHJlc3Npb25zYCBwcm9kdWNlcyBhbiBhcnJheS1saWtlIG9iamVjdCBjb250YWluaW5nIGEgbGlzdCBvZiBFeHByZXNzaW9uIG9iamVjdHNcclxuLy8gLSBFeHByZXNzaW9uczo6dG9TdHJpbmcoKSBwcm9kdWNlcyBhIGNsZWFuZWQgdXAgZXhwcmVzc2lvbnMgc3RyaW5nXHJcbi8vIGBuZXcgRXhwcmVzc2lvbmAgcHJvZHVjZXMgYW4gYXJyYXktbGlrZSBvYmplY3RcclxuLy8gLSBFeHByZXNzaW9uOjp0b1N0cmluZygpIHByb2R1Y2VzIGEgY2xlYW5lZCB1cCBleHByZXNzaW9uIHN0cmluZ1xyXG4vLyBUaGUgb25seSBleHBvc2VkIG1ldGhvZCBpcyBwYXJzZSwgd2hpY2ggcHJvZHVjZXMgYSAoY2FjaGVkKSBgbmV3IEV4cHJlc3Npb25zYCBpbnN0YW5jZVxyXG4vLyBwYXJzZWQucmF3IGlzIG5vIGxvbmdlciBwcmVzZW50LCB1c2UgLnRvU3RyaW5nKClcclxuLy8gcGFyc2VkLmV4cHJlc3Npb24gaXMgbm93IHVzZWxlc3MsIGp1c3QgdXNlIHRoZSBpbmRpY2VzXHJcbi8vIHBhcnNlZC5yZXZlcnNlKCkgaGFzIGJlZW4gcmVtb3ZlZCBmb3Igbm93LCBkdWUgdG8gaXRzIGFwcGFyZW50IHVzZWxlc3NuZXNzXHJcbi8vIE90aGVyIGNoYW5nZXMgaW4gdGhlIEV4cHJlc3Npb25zIG9iamVjdDpcclxuLy8gLSBjbGFzc05hbWVzIGFyZSBub3cgdW5pcXVlLCBhbmQgc2F2ZSBib3RoIGVzY2FwZWQgYW5kIHVuZXNjYXBlZCB2YWx1ZXNcclxuLy8gLSBhdHRyaWJ1dGVzIG5vdyBzYXZlIGJvdGggZXNjYXBlZCBhbmQgdW5lc2NhcGVkIHZhbHVlc1xyXG4vLyAtIHBzZXVkb3Mgbm93IHNhdmUgYm90aCBlc2NhcGVkIGFuZCB1bmVzY2FwZWQgdmFsdWVzXHJcblxyXG52YXIgZXNjYXBlUmUgICA9IC8oWy0uKis/XiR7fSgpfFtcXF1cXC9cXFxcXSkvZyxcclxuICAgIHVuZXNjYXBlUmUgPSAvXFxcXC9nXHJcblxyXG52YXIgZXNjYXBlID0gZnVuY3Rpb24oc3RyaW5nKXtcclxuICAgIC8vIFhSZWdFeHAgdjIuMC4wLWJldGEtM1xyXG4gICAgLy8gXHUwMEFCIGh0dHBzOi8vZ2l0aHViLmNvbS9zbGV2aXRoYW4vWFJlZ0V4cC9ibG9iL21hc3Rlci9zcmMveHJlZ2V4cC5qc1xyXG4gICAgcmV0dXJuIChzdHJpbmcgKyBcIlwiKS5yZXBsYWNlKGVzY2FwZVJlLCAnXFxcXCQxJylcclxufVxyXG5cclxudmFyIHVuZXNjYXBlID0gZnVuY3Rpb24oc3RyaW5nKXtcclxuICAgIHJldHVybiAoc3RyaW5nICsgXCJcIikucmVwbGFjZSh1bmVzY2FwZVJlLCAnJylcclxufVxyXG5cclxudmFyIHNsaWNrUmUgPSBSZWdFeHAoXHJcbi8qXHJcbiMhL3Vzci9iaW4vZW52IHJ1YnlcclxucHV0cyBcIlxcdFxcdFwiICsgREFUQS5yZWFkLmdzdWIoL1xcKFxcP3hcXCl8XFxzKyMuKiR8XFxzK3xcXFxcJHxcXFxcbi8sJycpXHJcbl9fRU5EX19cclxuICAgIFwiKD94KV4oPzpcXFxyXG4gICAgICBcXFxccyogKCAsICkgXFxcXHMqICAgICAgICAgICAgICAgIyBTZXBhcmF0b3IgICAgICAgICAgXFxuXFxcclxuICAgIHwgXFxcXHMqICggPGNvbWJpbmF0b3I+KyApIFxcXFxzKiAgICMgQ29tYmluYXRvciAgICAgICAgIFxcblxcXHJcbiAgICB8ICAgICAgKCBcXFxccysgKSAgICAgICAgICAgICAgICAgIyBDb21iaW5hdG9yQ2hpbGRyZW4gXFxuXFxcclxuICAgIHwgICAgICAoIDx1bmljb2RlPisgfCBcXFxcKiApICAgICAjIFRhZyAgICAgICAgICAgICAgICBcXG5cXFxyXG4gICAgfCBcXFxcIyAgKCA8dW5pY29kZT4rICAgICAgICkgICAgICMgSUQgICAgICAgICAgICAgICAgIFxcblxcXHJcbiAgICB8IFxcXFwuICAoIDx1bmljb2RlPisgICAgICAgKSAgICAgIyBDbGFzc05hbWUgICAgICAgICAgXFxuXFxcclxuICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBdHRyaWJ1dGUgICAgICAgICAgXFxuXFxcclxuICAgIFxcXFxbICBcXFxyXG4gICAgICAgIFxcXFxzKiAoPHVuaWNvZGUxPispICAoPzogIFxcXHJcbiAgICAgICAgICAgIFxcXFxzKiAoWypeJCF+fF0/PSkgICg/OiAgXFxcclxuICAgICAgICAgICAgICAgIFxcXFxzKiAoPzpcXFxyXG4gICAgICAgICAgICAgICAgICAgIChbXFxcIiddPykoLio/KVxcXFw5IFxcXHJcbiAgICAgICAgICAgICAgICApXFxcclxuICAgICAgICAgICAgKSAgXFxcclxuICAgICAgICApPyAgXFxcXHMqICBcXFxyXG4gICAgXFxcXF0oPyFcXFxcXSkgXFxuXFxcclxuICAgIHwgICA6KyAoIDx1bmljb2RlPisgKSg/OlxcXHJcbiAgICBcXFxcKCAoPzpcXFxyXG4gICAgICAgICg/OihbXFxcIiddKShbXlxcXFwxMl0qKVxcXFwxMil8KCg/OlxcXFwoW14pXStcXFxcKXxbXigpXSopKylcXFxyXG4gICAgKSBcXFxcKVxcXHJcbiAgICApP1xcXHJcbiAgICApXCJcclxuKi9cclxuXCJeKD86XFxcXHMqKCwpXFxcXHMqfFxcXFxzKig8Y29tYmluYXRvcj4rKVxcXFxzKnwoXFxcXHMrKXwoPHVuaWNvZGU+K3xcXFxcKil8XFxcXCMoPHVuaWNvZGU+Kyl8XFxcXC4oPHVuaWNvZGU+Kyl8XFxcXFtcXFxccyooPHVuaWNvZGUxPispKD86XFxcXHMqKFsqXiQhfnxdPz0pKD86XFxcXHMqKD86KFtcXFwiJ10/KSguKj8pXFxcXDkpKSk/XFxcXHMqXFxcXF0oPyFcXFxcXSl8KDorKSg8dW5pY29kZT4rKSg/OlxcXFwoKD86KD86KFtcXFwiJ10pKFteXFxcXDEzXSopXFxcXDEzKXwoKD86XFxcXChbXildK1xcXFwpfFteKCldKikrKSlcXFxcKSk/KVwiXHJcbiAgICAucmVwbGFjZSgvPGNvbWJpbmF0b3I+LywgJ1snICsgZXNjYXBlKFwiPit+YCFAJCVeJj17fVxcXFw7PC9cIikgKyAnXScpXHJcbiAgICAucmVwbGFjZSgvPHVuaWNvZGU+L2csICcoPzpbXFxcXHdcXFxcdTAwYTEtXFxcXHVGRkZGLV18XFxcXFxcXFxbXlxcXFxzMC05YS1mXSknKVxyXG4gICAgLnJlcGxhY2UoLzx1bmljb2RlMT4vZywgJyg/Ols6XFxcXHdcXFxcdTAwYTEtXFxcXHVGRkZGLV18XFxcXFxcXFxbXlxcXFxzMC05YS1mXSknKVxyXG4pXHJcblxyXG4vLyBQYXJ0XHJcblxyXG52YXIgUGFydCA9IGZ1bmN0aW9uIFBhcnQoY29tYmluYXRvcil7XHJcbiAgICB0aGlzLmNvbWJpbmF0b3IgPSBjb21iaW5hdG9yIHx8IFwiIFwiXHJcbiAgICB0aGlzLnRhZyA9IFwiKlwiXHJcbn1cclxuXHJcblBhcnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcclxuXHJcbiAgICBpZiAoIXRoaXMucmF3KXtcclxuXHJcbiAgICAgICAgdmFyIHhwciA9IFwiXCIsIGssIHBhcnRcclxuXHJcbiAgICAgICAgeHByICs9IHRoaXMudGFnIHx8IFwiKlwiXHJcbiAgICAgICAgaWYgKHRoaXMuaWQpIHhwciArPSBcIiNcIiArIHRoaXMuaWRcclxuICAgICAgICBpZiAodGhpcy5jbGFzc2VzKSB4cHIgKz0gXCIuXCIgKyB0aGlzLmNsYXNzTGlzdC5qb2luKFwiLlwiKVxyXG4gICAgICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMpIGZvciAoayA9IDA7IHBhcnQgPSB0aGlzLmF0dHJpYnV0ZXNbaysrXTspe1xyXG4gICAgICAgICAgICB4cHIgKz0gXCJbXCIgKyBwYXJ0Lm5hbWUgKyAocGFydC5vcGVyYXRvciA/IHBhcnQub3BlcmF0b3IgKyAnXCInICsgcGFydC52YWx1ZSArICdcIicgOiAnJykgKyBcIl1cIlxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5wc2V1ZG9zKSBmb3IgKGsgPSAwOyBwYXJ0ID0gdGhpcy5wc2V1ZG9zW2srK107KXtcclxuICAgICAgICAgICAgeHByICs9IFwiOlwiICsgcGFydC5uYW1lXHJcbiAgICAgICAgICAgIGlmIChwYXJ0LnZhbHVlKSB4cHIgKz0gXCIoXCIgKyBwYXJ0LnZhbHVlICsgXCIpXCJcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmF3ID0geHByXHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnJhd1xyXG59XHJcblxyXG4vLyBFeHByZXNzaW9uXHJcblxyXG52YXIgRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIEV4cHJlc3Npb24oKXtcclxuICAgIHRoaXMubGVuZ3RoID0gMFxyXG59XHJcblxyXG5FeHByZXNzaW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XHJcblxyXG4gICAgaWYgKCF0aGlzLnJhdyl7XHJcblxyXG4gICAgICAgIHZhciB4cHIgPSBcIlwiXHJcblxyXG4gICAgICAgIGZvciAodmFyIGogPSAwLCBiaXQ7IGJpdCA9IHRoaXNbaisrXTspe1xyXG4gICAgICAgICAgICBpZiAoaiAhPT0gMSkgeHByICs9IFwiIFwiXHJcbiAgICAgICAgICAgIGlmIChiaXQuY29tYmluYXRvciAhPT0gXCIgXCIpIHhwciArPSBiaXQuY29tYmluYXRvciArIFwiIFwiXHJcbiAgICAgICAgICAgIHhwciArPSBiaXRcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmF3ID0geHByXHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnJhd1xyXG59XHJcblxyXG52YXIgcmVwbGFjZXIgPSBmdW5jdGlvbihcclxuICAgIHJhd01hdGNoLFxyXG5cclxuICAgIHNlcGFyYXRvcixcclxuICAgIGNvbWJpbmF0b3IsXHJcbiAgICBjb21iaW5hdG9yQ2hpbGRyZW4sXHJcblxyXG4gICAgdGFnTmFtZSxcclxuICAgIGlkLFxyXG4gICAgY2xhc3NOYW1lLFxyXG5cclxuICAgIGF0dHJpYnV0ZUtleSxcclxuICAgIGF0dHJpYnV0ZU9wZXJhdG9yLFxyXG4gICAgYXR0cmlidXRlUXVvdGUsXHJcbiAgICBhdHRyaWJ1dGVWYWx1ZSxcclxuXHJcbiAgICBwc2V1ZG9NYXJrZXIsXHJcbiAgICBwc2V1ZG9DbGFzcyxcclxuICAgIHBzZXVkb1F1b3RlLFxyXG4gICAgcHNldWRvQ2xhc3NRdW90ZWRWYWx1ZSxcclxuICAgIHBzZXVkb0NsYXNzVmFsdWVcclxuKXtcclxuXHJcbiAgICB2YXIgZXhwcmVzc2lvbiwgY3VycmVudFxyXG5cclxuICAgIGlmIChzZXBhcmF0b3IgfHwgIXRoaXMubGVuZ3RoKXtcclxuICAgICAgICBleHByZXNzaW9uID0gdGhpc1t0aGlzLmxlbmd0aCsrXSA9IG5ldyBFeHByZXNzaW9uXHJcbiAgICAgICAgaWYgKHNlcGFyYXRvcikgcmV0dXJuICcnXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFleHByZXNzaW9uKSBleHByZXNzaW9uID0gdGhpc1t0aGlzLmxlbmd0aCAtIDFdXHJcblxyXG4gICAgaWYgKGNvbWJpbmF0b3IgfHwgY29tYmluYXRvckNoaWxkcmVuIHx8ICFleHByZXNzaW9uLmxlbmd0aCl7XHJcbiAgICAgICAgY3VycmVudCA9IGV4cHJlc3Npb25bZXhwcmVzc2lvbi5sZW5ndGgrK10gPSBuZXcgUGFydChjb21iaW5hdG9yKVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghY3VycmVudCkgY3VycmVudCA9IGV4cHJlc3Npb25bZXhwcmVzc2lvbi5sZW5ndGggLSAxXVxyXG5cclxuICAgIGlmICh0YWdOYW1lKXtcclxuXHJcbiAgICAgICAgY3VycmVudC50YWcgPSB1bmVzY2FwZSh0YWdOYW1lKVxyXG5cclxuICAgIH0gZWxzZSBpZiAoaWQpe1xyXG5cclxuICAgICAgICBjdXJyZW50LmlkID0gdW5lc2NhcGUoaWQpXHJcblxyXG4gICAgfSBlbHNlIGlmIChjbGFzc05hbWUpe1xyXG5cclxuICAgICAgICB2YXIgdW5lc2NhcGVkID0gdW5lc2NhcGUoY2xhc3NOYW1lKVxyXG5cclxuICAgICAgICB2YXIgY2xhc3NlcyA9IGN1cnJlbnQuY2xhc3NlcyB8fCAoY3VycmVudC5jbGFzc2VzID0ge30pXHJcbiAgICAgICAgaWYgKCFjbGFzc2VzW3VuZXNjYXBlZF0pe1xyXG4gICAgICAgICAgICBjbGFzc2VzW3VuZXNjYXBlZF0gPSBlc2NhcGUoY2xhc3NOYW1lKVxyXG4gICAgICAgICAgICB2YXIgY2xhc3NMaXN0ID0gY3VycmVudC5jbGFzc0xpc3QgfHwgKGN1cnJlbnQuY2xhc3NMaXN0ID0gW10pXHJcbiAgICAgICAgICAgIGNsYXNzTGlzdC5wdXNoKHVuZXNjYXBlZClcclxuICAgICAgICAgICAgY2xhc3NMaXN0LnNvcnQoKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9IGVsc2UgaWYgKHBzZXVkb0NsYXNzKXtcclxuXHJcbiAgICAgICAgcHNldWRvQ2xhc3NWYWx1ZSA9IHBzZXVkb0NsYXNzVmFsdWUgfHwgcHNldWRvQ2xhc3NRdW90ZWRWYWx1ZVxyXG5cclxuICAgICAgICA7KGN1cnJlbnQucHNldWRvcyB8fCAoY3VycmVudC5wc2V1ZG9zID0gW10pKS5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZSAgICAgICAgIDogcHNldWRvTWFya2VyLmxlbmd0aCA9PSAxID8gJ2NsYXNzJyA6ICdlbGVtZW50JyxcclxuICAgICAgICAgICAgbmFtZSAgICAgICAgIDogdW5lc2NhcGUocHNldWRvQ2xhc3MpLFxyXG4gICAgICAgICAgICBlc2NhcGVkTmFtZSAgOiBlc2NhcGUocHNldWRvQ2xhc3MpLFxyXG4gICAgICAgICAgICB2YWx1ZSAgICAgICAgOiBwc2V1ZG9DbGFzc1ZhbHVlID8gdW5lc2NhcGUocHNldWRvQ2xhc3NWYWx1ZSkgOiBudWxsLFxyXG4gICAgICAgICAgICBlc2NhcGVkVmFsdWUgOiBwc2V1ZG9DbGFzc1ZhbHVlID8gZXNjYXBlKHBzZXVkb0NsYXNzVmFsdWUpIDogbnVsbFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGVLZXkpe1xyXG5cclxuICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlID8gZXNjYXBlKGF0dHJpYnV0ZVZhbHVlKSA6IG51bGxcclxuXHJcbiAgICAgICAgOyhjdXJyZW50LmF0dHJpYnV0ZXMgfHwgKGN1cnJlbnQuYXR0cmlidXRlcyA9IFtdKSkucHVzaCh7XHJcbiAgICAgICAgICAgIG9wZXJhdG9yICAgICA6IGF0dHJpYnV0ZU9wZXJhdG9yLFxyXG4gICAgICAgICAgICBuYW1lICAgICAgICAgOiB1bmVzY2FwZShhdHRyaWJ1dGVLZXkpLFxyXG4gICAgICAgICAgICBlc2NhcGVkTmFtZSAgOiBlc2NhcGUoYXR0cmlidXRlS2V5KSxcclxuICAgICAgICAgICAgdmFsdWUgICAgICAgIDogYXR0cmlidXRlVmFsdWUgPyB1bmVzY2FwZShhdHRyaWJ1dGVWYWx1ZSkgOiBudWxsLFxyXG4gICAgICAgICAgICBlc2NhcGVkVmFsdWUgOiBhdHRyaWJ1dGVWYWx1ZSA/IGVzY2FwZShhdHRyaWJ1dGVWYWx1ZSkgOiBudWxsXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnXHJcblxyXG59XHJcblxyXG4vLyBFeHByZXNzaW9uc1xyXG5cclxudmFyIEV4cHJlc3Npb25zID0gZnVuY3Rpb24gRXhwcmVzc2lvbnMoZXhwcmVzc2lvbil7XHJcbiAgICB0aGlzLmxlbmd0aCA9IDBcclxuXHJcbiAgICB2YXIgc2VsZiA9IHRoaXNcclxuXHJcbiAgICB2YXIgb3JpZ2luYWwgPSBleHByZXNzaW9uLCByZXBsYWNlZFxyXG5cclxuICAgIHdoaWxlIChleHByZXNzaW9uKXtcclxuICAgICAgICByZXBsYWNlZCA9IGV4cHJlc3Npb24ucmVwbGFjZShzbGlja1JlLCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZXIuYXBwbHkoc2VsZiwgYXJndW1lbnRzKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgaWYgKHJlcGxhY2VkID09PSBleHByZXNzaW9uKSB0aHJvdyBuZXcgRXJyb3Iob3JpZ2luYWwgKyAnIGlzIGFuIGludmFsaWQgZXhwcmVzc2lvbicpXHJcbiAgICAgICAgZXhwcmVzc2lvbiA9IHJlcGxhY2VkXHJcbiAgICB9XHJcbn1cclxuXHJcbkV4cHJlc3Npb25zLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XHJcbiAgICBpZiAoIXRoaXMucmF3KXtcclxuICAgICAgICB2YXIgZXhwcmVzc2lvbnMgPSBbXVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBleHByZXNzaW9uOyBleHByZXNzaW9uID0gdGhpc1tpKytdOykgZXhwcmVzc2lvbnMucHVzaChleHByZXNzaW9uKVxyXG4gICAgICAgIHRoaXMucmF3ID0gZXhwcmVzc2lvbnMuam9pbihcIiwgXCIpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucmF3XHJcbn1cclxuXHJcbnZhciBjYWNoZSA9IHt9XHJcblxyXG52YXIgcGFyc2UgPSBmdW5jdGlvbihleHByZXNzaW9uKXtcclxuICAgIGlmIChleHByZXNzaW9uID09IG51bGwpIHJldHVybiBudWxsXHJcbiAgICBleHByZXNzaW9uID0gKCcnICsgZXhwcmVzc2lvbikucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpXHJcbiAgICByZXR1cm4gY2FjaGVbZXhwcmVzc2lvbl0gfHwgKGNhY2hlW2V4cHJlc3Npb25dID0gbmV3IEV4cHJlc3Npb25zKGV4cHJlc3Npb24pKVxyXG59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlXHJcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBwYXJzZXIgPSByZXF1aXJlKCdzbGljay9wYXJzZXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gU2VsZWN0b3I7XG5cbi8qKlxuICogQ1NTIHNlbGVjdG9yIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3RvciB0ZXh0XG4gKiBAcGFyYW0ge0FycmF5fSBvcHRpb25hbGx5LCBwcmVjYWxjdWxhdGVkIHNwZWNpZmljaXR5XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIFNlbGVjdG9yKHRleHQsIHN0eWxlQXR0cmlidXRlKSB7XG4gIHRoaXMudGV4dCA9IHRleHQ7XG4gIHRoaXMuc3BlYyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5zdHlsZUF0dHJpYnV0ZSA9IHN0eWxlQXR0cmlidXRlIHx8IGZhbHNlO1xufVxuXG4vKipcbiAqIEdldCBwYXJzZWQgc2VsZWN0b3IuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5TZWxlY3Rvci5wcm90b3R5cGUucGFyc2VkID0gZnVuY3Rpb24oKSB7XG4gIGlmICghdGhpcy50b2tlbnMpIHsgdGhpcy50b2tlbnMgPSBwYXJzZSh0aGlzLnRleHQpOyB9XG4gIHJldHVybiB0aGlzLnRva2Vucztcbn07XG5cbi8qKlxuICogTGF6eSBzcGVjaWZpY2l0eSBnZXR0ZXJcbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNlbGVjdG9yLnByb3RvdHlwZS5zcGVjaWZpY2l0eSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc3R5bGVBdHRyaWJ1dGUgPSB0aGlzLnN0eWxlQXR0cmlidXRlO1xuICBpZiAoIXRoaXMuc3BlYykgeyB0aGlzLnNwZWMgPSBzcGVjaWZpY2l0eSh0aGlzLnRleHQsIHRoaXMucGFyc2VkKCkpOyB9XG4gIHJldHVybiB0aGlzLnNwZWM7XG5cbiAgZnVuY3Rpb24gc3BlY2lmaWNpdHkodGV4dCwgcGFyc2VkKSB7XG4gICAgdmFyIGV4cHJlc3Npb25zID0gcGFyc2VkIHx8IHBhcnNlKHRleHQpO1xuICAgIHZhciBzcGVjID0gW3N0eWxlQXR0cmlidXRlID8gMSA6IDAsIDAsIDAsIDBdO1xuICAgIHZhciBub3RzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cHJlc3Npb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25zW2ldO1xuICAgICAgdmFyIHBzZXVkb3MgPSBleHByZXNzaW9uLnBzZXVkb3M7XG5cbiAgICAgIC8vIGlkIGF3YXJkcyBhIHBvaW50IGluIHRoZSBzZWNvbmQgY29sdW1uXG4gICAgICBpZiAoZXhwcmVzc2lvbi5pZCkgeyBzcGVjWzFdKys7IH1cblxuICAgICAgLy8gY2xhc3NlcyBhbmQgYXR0cmlidXRlcyBhd2FyZCBhIHBvaW50IGVhY2ggaW4gdGhlIHRoaXJkIGNvbHVtblxuICAgICAgaWYgKGV4cHJlc3Npb24uYXR0cmlidXRlcykgeyBzcGVjWzJdICs9IGV4cHJlc3Npb24uYXR0cmlidXRlcy5sZW5ndGg7IH1cbiAgICAgIGlmIChleHByZXNzaW9uLmNsYXNzTGlzdCkgeyBzcGVjWzJdICs9IGV4cHJlc3Npb24uY2xhc3NMaXN0Lmxlbmd0aDsgfVxuXG4gICAgICAvLyB0YWcgYXdhcmRzIGEgcG9pbnQgaW4gdGhlIGZvdXJ0aCBjb2x1bW5cbiAgICAgIGlmIChleHByZXNzaW9uLnRhZyAmJiBleHByZXNzaW9uLnRhZyAhPT0gJyonKSB7IHNwZWNbM10rKzsgfVxuXG4gICAgICAvLyBwc2V1ZG9zIGF3YXJkIGEgcG9pbnQgZWFjaCBpbiB0aGUgZm91cnRoIGNvbHVtblxuICAgICAgaWYgKHBzZXVkb3MpIHtcbiAgICAgICAgc3BlY1szXSArPSBwc2V1ZG9zLmxlbmd0aDtcblxuICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8IHBzZXVkb3MubGVuZ3RoOyBwKyspIHtcbiAgICAgICAgICBpZiAocHNldWRvc1twXS5uYW1lID09PSAnbm90Jykge1xuICAgICAgICAgICAgbm90cy5wdXNoKHBzZXVkb3NbcF0udmFsdWUpO1xuICAgICAgICAgICAgc3BlY1szXS0tO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGlpID0gbm90cy5sZW5ndGg7IGlpLS07KSB7XG4gICAgICB2YXIgbm90ID0gc3BlY2lmaWNpdHkobm90c1tpaV0pO1xuICAgICAgZm9yICh2YXIgamogPSA0OyBqai0tOykgeyBzcGVjW2pqXSArPSBub3RbampdOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNwZWM7XG4gIH1cbn07XG5cbi8qKlxuICogUGFyc2VzIGEgc2VsZWN0b3IgYW5kIHJldHVybnMgdGhlIHRva2Vucy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VsZWN0b3JcbiAqIEBhcGkgcHJpdmF0ZS5cbiAqL1xuXG5mdW5jdGlvbiBwYXJzZSh0ZXh0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlcih0ZXh0KVswXTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuIiwgIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gUHJvcGVydHk7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbi8qKlxuICogQ1NTIHByb3BlcnR5IGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eVxuICogQHBhcmFtIHtTdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge1NlbGVjdG9yfSBzZWxlY3RvciB0aGUgcHJvcGVydHkgb3JpZ2luYXRlcyBmcm9tXG4gKiBAcGFyYW0ge0ludGVnZXJ9IHByaW9yaXR5IDAgZm9yIG5vcm1hbCBwcm9wZXJ0aWVzLCAyIGZvciAhaW1wb3J0YW50IHByb3BlcnRpZXMuXG4gKiBAcGFyYW0ge0FycmF5fSBhZGRpdGlvbmFsIGFycmF5IG9mIGludGVnZXJzIHJlcHJlc2VudGluZyBtb3JlIGRldGFpbGVkIHByaW9yaXRpZXMgKHNvcnRpbmcpXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIFByb3BlcnR5KHByb3AsIHZhbHVlLCBzZWxlY3RvciwgcHJpb3JpdHksIGFkZGl0aW9uYWxQcmlvcml0eSkge1xuICB0aGlzLnByb3AgPSBwcm9wO1xuICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIHRoaXMuc2VsZWN0b3IgPSBzZWxlY3RvcjtcbiAgdGhpcy5wcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG4gIHRoaXMuYWRkaXRpb25hbFByaW9yaXR5ID0gYWRkaXRpb25hbFByaW9yaXR5IHx8IFtdO1xufVxuXG4vKipcbiAqIENvbXBhcmVzIHdpdGggYW5vdGhlciBQcm9wZXJ0eSBiYXNlZCBvbiBTZWxlY3RvciNzcGVjaWZpY2l0eS5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblByb3BlcnR5LnByb3RvdHlwZS5jb21wYXJlRnVuYyA9IGZ1bmN0aW9uKHByb3BlcnR5KSB7XG4gIHZhciBhID0gW107XG4gIGEucHVzaC5hcHBseShhLCB0aGlzLnNlbGVjdG9yLnNwZWNpZmljaXR5KCkpO1xuICBhLnB1c2guYXBwbHkoYSwgdGhpcy5hZGRpdGlvbmFsUHJpb3JpdHkpO1xuICBhWzBdICs9IHRoaXMucHJpb3JpdHk7XG4gIHZhciBiID0gW107XG4gIGIucHVzaC5hcHBseShiLCBwcm9wZXJ0eS5zZWxlY3Rvci5zcGVjaWZpY2l0eSgpKTtcbiAgYi5wdXNoLmFwcGx5KGIsIHByb3BlcnR5LmFkZGl0aW9uYWxQcmlvcml0eSk7XG4gIGJbMF0gKz0gcHJvcGVydHkucHJpb3JpdHk7XG4gIHJldHVybiB1dGlscy5jb21wYXJlRnVuYyhhLCBiKTtcbn07XG5cblByb3BlcnR5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24ocHJvcGVydHkpIHtcbiAgdmFyIHdpbm5lciA9IHRoaXMuY29tcGFyZUZ1bmMocHJvcGVydHkpO1xuICBpZiAod2lubmVyID09PSAxKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgcmV0dXJuIHByb3BlcnR5O1xufTtcblxuXG4vKipcbiAqIFJldHVybnMgQ1NTIHByb3BlcnR5XG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5Qcm9wZXJ0eS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMucHJvcCArICc6ICcgKyB0aGlzLnZhbHVlLnJlcGxhY2UoL1snXCJdKy9nLCAnJykgKyAnOyc7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciBtZW5zY2ggPSByZXF1aXJlKCdtZW5zY2gnKTtcbnZhciBTZWxlY3RvciA9IHJlcXVpcmUoJy4vc2VsZWN0b3InKTtcbnZhciBQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vcHJvcGVydHknKTtcblxuZXhwb3J0cy5TZWxlY3RvciA9IFNlbGVjdG9yO1xuZXhwb3J0cy5Qcm9wZXJ0eSA9IFByb3BlcnR5O1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHNlbGVjdG9ycy5cbiAqXG4gKiBAbGljZW5zZSBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSAtIE1JVFxuICogQHBhcmFtIHtTdHJpbmd9IHNlbGVjdG9yVGV4dCBmcm9tIG1lbnNjaFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5leHBvcnRzLmV4dHJhY3QgPSBmdW5jdGlvbiBleHRyYWN0KHNlbGVjdG9yVGV4dCkge1xuICB2YXIgYXR0ciA9IDA7XG4gIHZhciBzZWxzID0gW107XG4gIHZhciBzZWwgPSAnJztcblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHNlbGVjdG9yVGV4dC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgYyA9IHNlbGVjdG9yVGV4dC5jaGFyQXQoaSk7XG5cbiAgICBpZiAoYXR0cikge1xuICAgICAgaWYgKCddJyA9PT0gYyB8fCAnKScgPT09IGMpIHsgYXR0ci0tOyB9XG4gICAgICBzZWwgKz0gYztcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCcsJyA9PT0gYykge1xuICAgICAgICBzZWxzLnB1c2goc2VsKTtcbiAgICAgICAgc2VsID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoJ1snID09PSBjIHx8ICcoJyA9PT0gYykgeyBhdHRyKys7IH1cbiAgICAgICAgaWYgKHNlbC5sZW5ndGggfHwgKGMgIT09ICcsJyAmJiBjICE9PSAnXFxuJyAmJiBjICE9PSAnICcpKSB7IHNlbCArPSBjOyB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHNlbC5sZW5ndGgpIHtcbiAgICBzZWxzLnB1c2goc2VsKTtcbiAgfVxuXG4gIHJldHVybiBzZWxzO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgcGFyc2UgdHJlZSBmb3IgYSBDU1Mgc291cmNlLlxuICogSWYgaXQgZW5jb3VudGVycyBtdWx0aXBsZSBzZWxlY3RvcnMgc2VwYXJhdGVkIGJ5IGEgY29tbWEsIGl0IHNwbGl0cyB0aGVcbiAqIHRyZWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGNzcyBzb3VyY2VcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZXhwb3J0cy5wYXJzZUNTUyA9IGZ1bmN0aW9uKGNzcykge1xuICB2YXIgcGFyc2VkID0gbWVuc2NoLnBhcnNlKGNzcywge3Bvc2l0aW9uOiB0cnVlLCBjb21tZW50czogdHJ1ZX0pO1xuICB2YXIgcnVsZXMgPSB0eXBlb2YgcGFyc2VkLnN0eWxlc2hlZXQgIT0gJ3VuZGVmaW5lZCcgJiYgcGFyc2VkLnN0eWxlc2hlZXQucnVsZXMgPyBwYXJzZWQuc3R5bGVzaGVldC5ydWxlcyA6IFtdO1xuICB2YXIgcmV0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBydWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAocnVsZXNbaV0udHlwZSA9PSAncnVsZScpIHtcbiAgICAgIHZhciBydWxlID0gcnVsZXNbaV07XG4gICAgICB2YXIgc2VsZWN0b3JzID0gcnVsZS5zZWxlY3RvcnM7XG5cbiAgICAgIGZvciAodmFyIGlpID0gMCwgbGwgPSBzZWxlY3RvcnMubGVuZ3RoOyBpaSA8IGxsOyBpaSsrKSB7XG4gICAgICAgIHJldC5wdXNoKFtzZWxlY3RvcnNbaWldLCBydWxlLmRlY2xhcmF0aW9uc10pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG4vKipcbiAqIFJldHVybnMgcHJlc2VydmVkIHRleHQgZm9yIGEgQ1NTIHNvdXJjZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gY3NzIHNvdXJjZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZXhwb3J0cy5nZXRQcmVzZXJ2ZWRUZXh0ID0gZnVuY3Rpb24oY3NzLCBvcHRpb25zLCBpZ25vcmVkUHNldWRvcykge1xuICB2YXIgcGFyc2VkID0gbWVuc2NoLnBhcnNlKGNzcywge3Bvc2l0aW9uOiB0cnVlLCBjb21tZW50czogdHJ1ZX0pO1xuICB2YXIgcnVsZXMgPSB0eXBlb2YgcGFyc2VkLnN0eWxlc2hlZXQgIT0gJ3VuZGVmaW5lZCcgJiYgcGFyc2VkLnN0eWxlc2hlZXQucnVsZXMgPyBwYXJzZWQuc3R5bGVzaGVldC5ydWxlcyA6IFtdO1xuICB2YXIgcHJlc2VydmVkID0gW107XG4gIHZhciBsYXN0U3RhcnQgPSBudWxsO1xuXG4gIGZvciAodmFyIGkgPSBydWxlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmICgob3B0aW9ucy5mb250RmFjZXMgJiYgcnVsZXNbaV0udHlwZSA9PT0gJ2ZvbnQtZmFjZScpIHx8XG4gICAgICAgIChvcHRpb25zLm1lZGlhUXVlcmllcyAmJiBydWxlc1tpXS50eXBlID09PSAnbWVkaWEnKSB8fFxuICAgICAgICAob3B0aW9ucy5rZXlGcmFtZXMgJiYgcnVsZXNbaV0udHlwZSA9PT0gJ2tleWZyYW1lcycpIHx8XG4gICAgICAgIChvcHRpb25zLnBzZXVkb3MgJiYgcnVsZXNbaV0uc2VsZWN0b3JzICYmIHRoaXMubWF0Y2hlc1BzZXVkbyhydWxlc1tpXS5zZWxlY3RvcnNbMF0sIGlnbm9yZWRQc2V1ZG9zKSkpIHtcbiAgICAgIHByZXNlcnZlZC51bnNoaWZ0KFxuICAgICAgICBtZW5zY2guc3RyaW5naWZ5KFxuICAgICAgICAgIHsgc3R5bGVzaGVldDogeyBydWxlczogWyBydWxlc1tpXSBdIH19LFxuICAgICAgICAgIHsgY29tbWVudHM6IGZhbHNlLCBpbmRlbnRhdGlvbjogJyAgJyB9XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIGxhc3RTdGFydCA9IHJ1bGVzW2ldLnBvc2l0aW9uLnN0YXJ0O1xuICB9XG5cbiAgaWYgKHByZXNlcnZlZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuICdcXG4nICsgcHJlc2VydmVkLmpvaW4oJ1xcbicpICsgJ1xcbic7XG59O1xuXG5leHBvcnRzLm5vcm1hbGl6ZUxpbmVFbmRpbmdzID0gZnVuY3Rpb24odGV4dCkge1xuICByZXR1cm4gdGV4dC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpLnJlcGxhY2UoL1xcbi9nLCAnXFxyXFxuJyk7XG59O1xuXG5leHBvcnRzLm1hdGNoZXNQc2V1ZG8gPSBmdW5jdGlvbihuZWVkbGUsIGhheXN0YWNrKSB7XG4gIHJldHVybiBoYXlzdGFjay5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuIG5lZWRsZS5pbmRleE9mKGVsZW1lbnQpID4gLTE7XG4gIH0pXG59XG5cbi8qKlxuICogQ29tcGFyZXMgdHdvIHNwZWNpZmljaXR5IHZlY3RvcnMsIHJldHVybmluZyB0aGUgd2lubmluZyBvbmUuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gdmVjdG9yIGFcbiAqIEBwYXJhbSB7QXJyYXl9IHZlY3RvciBiXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZXhwb3J0cy5jb21wYXJlRnVuYyA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIG1pbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICBpZiAoYVtpXSA9PT0gYltpXSkgeyBjb250aW51ZTsgfVxuICAgIGlmIChhW2ldID4gYltpXSkgeyByZXR1cm4gMTsgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHJldHVybiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xufTtcblxuZXhwb3J0cy5jb21wYXJlID0gZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gZXhwb3J0cy5jb21wYXJlRnVuYyhhLCBiKSA9PSAxID8gYSA6IGI7XG59O1xuXG5leHBvcnRzLmdldERlZmF1bHRPcHRpb25zID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgZXh0cmFDc3M6ICcnLFxuICAgIGluc2VydFByZXNlcnZlZEV4dHJhQ3NzOiB0cnVlLFxuICAgIGFwcGx5U3R5bGVUYWdzOiB0cnVlLFxuICAgIHJlbW92ZVN0eWxlVGFnczogdHJ1ZSxcbiAgICBwcmVzZXJ2ZU1lZGlhUXVlcmllczogdHJ1ZSxcbiAgICBwcmVzZXJ2ZUZvbnRGYWNlczogdHJ1ZSxcbiAgICBwcmVzZXJ2ZUtleUZyYW1lczogdHJ1ZSxcbiAgICBwcmVzZXJ2ZVBzZXVkb3M6IHRydWUsXG4gICAgYXBwbHlXaWR0aEF0dHJpYnV0ZXM6IHRydWUsXG4gICAgYXBwbHlIZWlnaHRBdHRyaWJ1dGVzOiB0cnVlLFxuICAgIGFwcGx5QXR0cmlidXRlc1RhYmxlRWxlbWVudHM6IHRydWUsXG4gICAgdXJsOiAnJ1xuICB9LCBvcHRpb25zKTtcblxuICByZXN1bHQud2ViUmVzb3VyY2VzID0gcmVzdWx0LndlYlJlc291cmNlcyB8fCB7fTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xudmFyIGNoZWVyaW8gPSByZXF1aXJlKCdjaGVlcmlvJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbnZhciBjaGVlcmlvTG9hZCA9IGZ1bmN0aW9uKGh0bWwsIG9wdGlvbnMsIGVuY29kZUVudGl0aWVzKSB7XG4gIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtkZWNvZGVFbnRpdGllczogZmFsc2UsIF91c2VIdG1sUGFyc2VyMjp0cnVlfSwgb3B0aW9ucyk7XG4gIGh0bWwgPSBlbmNvZGVFbnRpdGllcyhodG1sKTtcbiAgcmV0dXJuIGNoZWVyaW8ubG9hZChodG1sLCBvcHRpb25zKTtcbn07XG5cbnZhciBjcmVhdGVFbnRpdHlDb252ZXJ0ZXJzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY29kZUJsb2NrTG9va3VwID0gW107XG5cbiAgdmFyIGVuY29kZUNvZGVCbG9ja3MgPSBmdW5jdGlvbihodG1sKSB7XG4gICAgdmFyIGJsb2NrcyA9IG1vZHVsZS5leHBvcnRzLmNvZGVCbG9ja3M7XG4gICAgT2JqZWN0LmtleXMoYmxvY2tzKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgdmFyIHJlID0gbmV3IFJlZ0V4cChibG9ja3Nba2V5XS5zdGFydCArICcoW1xcXFxTXFxcXHNdKj8pJyArIGJsb2Nrc1trZXldLmVuZCwgJ2cnKTtcbiAgICAgIGh0bWwgPSBodG1sLnJlcGxhY2UocmUsIGZ1bmN0aW9uKG1hdGNoLCBzdWJNYXRjaCkge1xuICAgICAgICBjb2RlQmxvY2tMb29rdXAucHVzaChtYXRjaCk7XG4gICAgICAgIHJldHVybiAnSlVJQ0VfQ09ERV9CTE9DS18nICsgKGNvZGVCbG9ja0xvb2t1cC5sZW5ndGggLSAxKSArICdfJztcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBodG1sO1xuICB9O1xuXG4gIHZhciBkZWNvZGVDb2RlQmxvY2tzID0gZnVuY3Rpb24oaHRtbCkge1xuICAgIGZvcih2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNvZGVCbG9ja0xvb2t1cC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHZhciByZSA9IG5ldyBSZWdFeHAoJ0pVSUNFX0NPREVfQkxPQ0tfJyArIGluZGV4ICsgJ18oPVwiXCIpPycsICdnaScpO1xuICAgICAgaHRtbCA9IGh0bWwucmVwbGFjZShyZSwgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjb2RlQmxvY2tMb29rdXBbaW5kZXhdO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBodG1sO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZW5jb2RlRW50aXRpZXM6IGVuY29kZUNvZGVCbG9ja3MsXG4gICAgZGVjb2RlRW50aXRpZXM6IGRlY29kZUNvZGVCbG9ja3MsXG4gIH07XG59O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgaW5wdXQsIGNhbGxzIHRoZSBjYWxsYmFjayBvbiB0aGUgcGFyc2VkIERPTSwgYW5kIGdlbmVyYXRlcyB0aGUgb3V0cHV0XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGh0bWwgaW5wdXQgaHRtbCB0byBiZSBwcm9jZXNzZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIGZvciB0aGUgcGFyc2VyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIHRoZSBET01cbiAqIEBwYXJhbSB7QXJyYXl9IGNhbGxiYWNrRXh0cmFBcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBjYWxsYmFja1xuICogQHJldHVybiB7U3RyaW5nfSByZXN1bHRpbmcgaHRtbFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGh0bWwsIG9wdGlvbnMsIGNhbGxiYWNrLCBjYWxsYmFja0V4dHJhQXJndW1lbnRzKSB7XG4gIHZhciBlbnRpdHlDb252ZXJ0ZXJzID0gY3JlYXRlRW50aXR5Q29udmVydGVycygpO1xuXG4gIHZhciAkID0gY2hlZXJpb0xvYWQoaHRtbCwgb3B0aW9ucywgZW50aXR5Q29udmVydGVycy5lbmNvZGVFbnRpdGllcyk7XG4gIHZhciBhcmdzID0gWyAkIF07XG4gIGFyZ3MucHVzaC5hcHBseShhcmdzLCBjYWxsYmFja0V4dHJhQXJndW1lbnRzKTtcbiAgdmFyIGRvYyA9IGNhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJncykgfHwgJDtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnhtbE1vZGUpIHtcbiAgICByZXR1cm4gZW50aXR5Q29udmVydGVycy5kZWNvZGVFbnRpdGllcyhkb2MueG1sKCkpO1xuICB9XG4gIHJldHVybiBlbnRpdHlDb252ZXJ0ZXJzLmRlY29kZUVudGl0aWVzKGRvYy5odG1sKCkpO1xufTtcblxubW9kdWxlLmV4cG9ydHMuY29kZUJsb2NrcyA9IHtcbiAgRUpTOiB7IHN0YXJ0OiAnPCUnLCBlbmQ6ICclPicgfSxcbiAgSEJTOiB7IHN0YXJ0OiAne3snLCBlbmQ6ICd9fScgfVxufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29udmVydHMgYSBkZWNpbWFsIG51bWJlciB0byByb21hbiBudW1lcmFsLlxuICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvOTA4MzAzNy9jb252ZXJ0LWEtbnVtYmVyLWludG8tYS1yb21hbi1udW1lcmFsLWluLWphdmFzY3JpcHRcbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbnVtYmVyXG4gKiBAYXBpIHByaXZhdGUuXG4gKi9cbmV4cG9ydHMucm9tYW5pemUgPSBmdW5jdGlvbihudW0pIHtcbiAgICBpZiAoaXNOYU4obnVtKSlcbiAgICAgICAgcmV0dXJuIE5hTjtcbiAgICB2YXIgZGlnaXRzID0gU3RyaW5nKCtudW0pLnNwbGl0KFwiXCIpLFxuICAgICAgICBrZXkgPSBbXCJcIixcIkNcIixcIkNDXCIsXCJDQ0NcIixcIkNEXCIsXCJEXCIsXCJEQ1wiLFwiRENDXCIsXCJEQ0NDXCIsXCJDTVwiLFxuICAgICAgICAgICAgICAgXCJcIixcIlhcIixcIlhYXCIsXCJYWFhcIixcIlhMXCIsXCJMXCIsXCJMWFwiLFwiTFhYXCIsXCJMWFhYXCIsXCJYQ1wiLFxuICAgICAgICAgICAgICAgXCJcIixcIklcIixcIklJXCIsXCJJSUlcIixcIklWXCIsXCJWXCIsXCJWSVwiLFwiVklJXCIsXCJWSUlJXCIsXCJJWFwiXSxcbiAgICAgICAgcm9tYW4gPSBcIlwiLFxuICAgICAgICBpID0gMztcbiAgICB3aGlsZSAoaS0tKVxuICAgICAgICByb21hbiA9IChrZXlbK2RpZ2l0cy5wb3AoKSArIChpICogMTApXSB8fCBcIlwiKSArIHJvbWFuO1xuICAgIHJldHVybiBBcnJheSgrZGlnaXRzLmpvaW4oXCJcIikgKyAxKS5qb2luKFwiTVwiKSArIHJvbWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZGVjaW1hbCBudW1iZXIgdG8gYWxwaGFudW1lcmljIG51bWVyYWwuXG4gKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NTc4NzQ1OS9jb252ZXJ0LW51bWJlci10by1hbHBoYWJldC1zdHJpbmctamF2YXNjcmlwdFxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBudW1iZXJcbiAqIEBhcGkgcHJpdmF0ZS5cbiAqL1xuZXhwb3J0cy5hbHBoYW51bWVyaWMgPSBmdW5jdGlvbihudW0pIHtcbiAgICB2YXIgcyA9ICcnLCB0O1xuXG4gICAgd2hpbGUgKG51bSA+IDApIHtcbiAgICAgIHQgPSAobnVtIC0gMSkgJSAyNjtcbiAgICAgIHMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgdCkgKyBzO1xuICAgICAgbnVtID0gKG51bSAtIHQpLzI2IHwgMDtcbiAgICB9XG4gICAgcmV0dXJuIHMgfHwgdW5kZWZpbmVkO1xufSIsICIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBudW1iZXJzID0gcmVxdWlyZSgnLi9udW1iZXJzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWFrZUp1aWNlQ2xpZW50KGp1aWNlQ2xpZW50KSB7XG5cbmp1aWNlQ2xpZW50Lmlnbm9yZWRQc2V1ZG9zID0gWydob3ZlcicsICdhY3RpdmUnLCAnZm9jdXMnLCAndmlzaXRlZCcsICdsaW5rJ107XG5qdWljZUNsaWVudC53aWR0aEVsZW1lbnRzID0gWydUQUJMRScsICdURCcsICdUSCcsICdJTUcnXTtcbmp1aWNlQ2xpZW50LmhlaWdodEVsZW1lbnRzID0gWydUQUJMRScsICdURCcsICdUSCcsICdJTUcnXTtcbmp1aWNlQ2xpZW50LnRhYmxlRWxlbWVudHMgPSBbJ1RBQkxFJywgJ1RIJywgJ1RSJywgJ1REJywgJ0NBUFRJT04nLCAnQ09MR1JPVVAnLCAnQ09MJywgJ1RIRUFEJywgJ1RCT0RZJywgJ1RGT09UJ107XG5qdWljZUNsaWVudC5ub25WaXN1YWxFbGVtZW50cyA9IFsgJ0hFQUQnLCAnVElUTEUnLCAnQkFTRScsICdMSU5LJywgJ1NUWUxFJywgJ01FVEEnLCAnU0NSSVBUJywgJ05PU0NSSVBUJyBdO1xuanVpY2VDbGllbnQuc3R5bGVUb0F0dHJpYnV0ZSA9IHtcbiAgJ2JhY2tncm91bmQtY29sb3InOiAnYmdjb2xvcicsXG4gICdiYWNrZ3JvdW5kLWltYWdlJzogJ2JhY2tncm91bmQnLFxuICAndGV4dC1hbGlnbic6ICdhbGlnbicsXG4gICd2ZXJ0aWNhbC1hbGlnbic6ICd2YWxpZ24nXG59O1xuanVpY2VDbGllbnQuZXhjbHVkZWRQcm9wZXJ0aWVzID0gW107XG5cbmp1aWNlQ2xpZW50Lmp1aWNlRG9jdW1lbnQgPSBqdWljZURvY3VtZW50O1xuanVpY2VDbGllbnQuaW5saW5lRG9jdW1lbnQgPSBpbmxpbmVEb2N1bWVudDtcblxuZnVuY3Rpb24gaW5saW5lRG9jdW1lbnQoJCwgY3NzLCBvcHRpb25zKSB7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBydWxlcyA9IHV0aWxzLnBhcnNlQ1NTKGNzcyk7XG4gIHZhciBlZGl0ZWRFbGVtZW50cyA9IFtdO1xuICB2YXIgc3R5bGVBdHRyaWJ1dGVOYW1lID0gJ3N0eWxlJztcbiAgdmFyIGNvdW50ZXJzID0ge307XG5cbiAgaWYgKG9wdGlvbnMuc3R5bGVBdHRyaWJ1dGVOYW1lKSB7XG4gICAgc3R5bGVBdHRyaWJ1dGVOYW1lID0gb3B0aW9ucy5zdHlsZUF0dHJpYnV0ZU5hbWU7XG4gIH1cblxuICBydWxlcy5mb3JFYWNoKGhhbmRsZVJ1bGUpO1xuICBlZGl0ZWRFbGVtZW50cy5mb3JFYWNoKHNldFN0eWxlQXR0cnMpO1xuXG4gIGlmIChvcHRpb25zLmlubGluZVBzZXVkb0VsZW1lbnRzKSB7XG4gICAgZWRpdGVkRWxlbWVudHMuZm9yRWFjaChpbmxpbmVQc2V1ZG9FbGVtZW50cyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5hcHBseVdpZHRoQXR0cmlidXRlcykge1xuICAgIGVkaXRlZEVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZWwpIHtcbiAgICAgIHNldERpbWVuc2lvbkF0dHJzKGVsLCAnd2lkdGgnKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmFwcGx5SGVpZ2h0QXR0cmlidXRlcykge1xuICAgIGVkaXRlZEVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZWwpIHtcbiAgICAgIHNldERpbWVuc2lvbkF0dHJzKGVsLCAnaGVpZ2h0Jyk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5hcHBseUF0dHJpYnV0ZXNUYWJsZUVsZW1lbnRzKSB7XG4gICAgZWRpdGVkRWxlbWVudHMuZm9yRWFjaChzZXRBdHRyaWJ1dGVzT25UYWJsZUVsZW1lbnRzKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmluc2VydFByZXNlcnZlZEV4dHJhQ3NzICYmIG9wdGlvbnMuZXh0cmFDc3MpIHtcbiAgICB2YXIgcHJlc2VydmVkVGV4dCA9IHV0aWxzLmdldFByZXNlcnZlZFRleHQob3B0aW9ucy5leHRyYUNzcywge1xuICAgICAgbWVkaWFRdWVyaWVzOiBvcHRpb25zLnByZXNlcnZlTWVkaWFRdWVyaWVzLFxuICAgICAgZm9udEZhY2VzOiBvcHRpb25zLnByZXNlcnZlRm9udEZhY2VzLFxuICAgICAga2V5RnJhbWVzOiBvcHRpb25zLnByZXNlcnZlS2V5RnJhbWVzXG4gICAgfSk7XG4gICAgaWYgKHByZXNlcnZlZFRleHQpIHtcbiAgICAgIHZhciAkYXBwZW5kVG8gPSBudWxsO1xuICAgICAgaWYgKG9wdGlvbnMuaW5zZXJ0UHJlc2VydmVkRXh0cmFDc3MgIT09IHRydWUpIHtcbiAgICAgICAgJGFwcGVuZFRvID0gJChvcHRpb25zLmluc2VydFByZXNlcnZlZEV4dHJhQ3NzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRhcHBlbmRUbyA9ICQoJ2hlYWQnKTtcbiAgICAgICAgaWYgKCEkYXBwZW5kVG8ubGVuZ3RoKSB7ICRhcHBlbmRUbyA9ICQoJ2JvZHknKTsgfVxuICAgICAgICBpZiAoISRhcHBlbmRUby5sZW5ndGgpIHsgJGFwcGVuZFRvID0gJC5yb290KCk7IH1cbiAgICAgIH1cblxuICAgICAgJGFwcGVuZFRvLmZpcnN0KCkuYXBwZW5kKCc8c3R5bGU+JyArIHByZXNlcnZlZFRleHQgKyAnPC9zdHlsZT4nKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVSdWxlKHJ1bGUpIHtcbiAgICB2YXIgc2VsID0gcnVsZVswXTtcbiAgICB2YXIgc3R5bGUgPSBydWxlWzFdO1xuICAgIHZhciBzZWxlY3RvciA9IG5ldyB1dGlscy5TZWxlY3RvcihzZWwpO1xuICAgIHZhciBwYXJzZWRTZWxlY3RvciA9IHNlbGVjdG9yLnBhcnNlZCgpO1xuXG4gICAgaWYgKCFwYXJzZWRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwc2V1ZG9FbGVtZW50VHlwZSA9IGdldFBzZXVkb0VsZW1lbnRUeXBlKHBhcnNlZFNlbGVjdG9yKTtcblxuICAgIC8vIHNraXAgcnVsZSBpZiB0aGUgc2VsZWN0b3IgaGFzIGFueSBwc2V1ZG9zIHdoaWNoIGFyZSBpZ25vcmVkXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJzZWRTZWxlY3Rvci5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHN1YlNlbCA9IHBhcnNlZFNlbGVjdG9yW2ldO1xuICAgICAgaWYgKHN1YlNlbC5wc2V1ZG9zKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3ViU2VsLnBzZXVkb3MubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICB2YXIgc3ViU2VsUHNldWRvID0gc3ViU2VsLnBzZXVkb3Nbal07XG4gICAgICAgICAgaWYgKGp1aWNlQ2xpZW50Lmlnbm9yZWRQc2V1ZG9zLmluZGV4T2Yoc3ViU2VsUHNldWRvLm5hbWUpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHNldWRvRWxlbWVudFR5cGUpIHtcbiAgICAgIHZhciBsYXN0ID0gcGFyc2VkU2VsZWN0b3JbcGFyc2VkU2VsZWN0b3IubGVuZ3RoIC0gMV07XG4gICAgICB2YXIgcHNldWRvcyA9IGxhc3QucHNldWRvcztcbiAgICAgIGxhc3QucHNldWRvcyA9IGZpbHRlckVsZW1lbnRQc2V1ZG9zKGxhc3QucHNldWRvcyk7XG4gICAgICBzZWwgPSBwYXJzZWRTZWxlY3Rvci50b1N0cmluZygpO1xuICAgICAgbGFzdC5wc2V1ZG9zID0gcHNldWRvcztcbiAgICB9XG5cbiAgICB2YXIgZWxzO1xuICAgIHRyeSB7XG4gICAgICBlbHMgPSAkKHNlbCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBza2lwIGludmFsaWQgc2VsZWN0b3JcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbHMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlbCA9IHRoaXM7XG5cbiAgICAgIGlmIChlbC5uYW1lICYmIGp1aWNlQ2xpZW50Lm5vblZpc3VhbEVsZW1lbnRzLmluZGV4T2YoZWwubmFtZS50b1VwcGVyQ2FzZSgpKSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHBzZXVkb0VsZW1lbnRUeXBlKSB7XG4gICAgICAgIHZhciBwc2V1ZG9FbFByb3BOYW1lID0gJ3BzZXVkbycgKyBwc2V1ZG9FbGVtZW50VHlwZTtcbiAgICAgICAgdmFyIHBzZXVkb0VsID0gZWxbcHNldWRvRWxQcm9wTmFtZV07XG4gICAgICAgIGlmICghcHNldWRvRWwpIHtcbiAgICAgICAgICBwc2V1ZG9FbCA9IGVsW3BzZXVkb0VsUHJvcE5hbWVdID0gJCgnPHNwYW4gLz4nKS5nZXQoMCk7XG4gICAgICAgICAgcHNldWRvRWwucHNldWRvRWxlbWVudFR5cGUgPSBwc2V1ZG9FbGVtZW50VHlwZTtcbiAgICAgICAgICBwc2V1ZG9FbC5wc2V1ZG9FbGVtZW50UGFyZW50ID0gZWw7XG4gICAgICAgICAgcHNldWRvRWwuY291bnRlclByb3BzID0gZWwuY291bnRlclByb3BzO1xuICAgICAgICAgIGVsW3BzZXVkb0VsUHJvcE5hbWVdID0gcHNldWRvRWw7XG4gICAgICAgIH1cbiAgICAgICAgZWwgPSBwc2V1ZG9FbDtcbiAgICAgIH1cblxuICAgICAgaWYgKCFlbC5zdHlsZVByb3BzKSB7XG4gICAgICAgIGVsLnN0eWxlUHJvcHMgPSB7fTtcblxuICAgICAgICAvLyBpZiB0aGUgZWxlbWVudCBoYXMgaW5saW5lIHN0eWxlcywgZmFrZSBzZWxlY3RvciB3aXRoIHRvcG1vc3Qgc3BlY2lmaWNpdHlcbiAgICAgICAgaWYgKCQoZWwpLmF0dHIoc3R5bGVBdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgICAgIHZhciBjc3NUZXh0ID0gJyogeyAnICsgJChlbCkuYXR0cihzdHlsZUF0dHJpYnV0ZU5hbWUpICsgJyB9ICc7XG4gICAgICAgICAgYWRkUHJvcHModXRpbHMucGFyc2VDU1MoY3NzVGV4dClbMF1bMV0sIG5ldyB1dGlscy5TZWxlY3RvcignPHN0eWxlPicsIHRydWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN0b3JlIHJlZmVyZW5jZSB0byBhbiBlbGVtZW50IHdlIG5lZWQgdG8gY29tcGlsZSBzdHlsZT1cIlwiIGF0dHIgZm9yXG4gICAgICAgIGVkaXRlZEVsZW1lbnRzLnB1c2goZWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWVsLmNvdW50ZXJQcm9wcykge1xuICAgICAgICBlbC5jb3VudGVyUHJvcHMgPSBlbC5wYXJlbnQgJiYgZWwucGFyZW50LmNvdW50ZXJQcm9wc1xuICAgICAgICAgID8gT2JqZWN0LmNyZWF0ZShlbC5wYXJlbnQuY291bnRlclByb3BzKVxuICAgICAgICAgIDoge307XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHJlc2V0Q291bnRlcihlbCwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHRva2VucyA9IHZhbHVlLnNwbGl0KC9cXHMrLyk7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0b2tlbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgY291bnRlciA9IHRva2Vuc1tqXTtcbiAgICAgICAgICB2YXIgcmVzZXR2YWwgPSBwYXJzZUludCh0b2tlbnNbaisxXSwgMTApO1xuXG4gICAgICAgICAgaXNOYU4ocmVzZXR2YWwpXG4gICAgICAgICAgICA/IGVsLmNvdW50ZXJQcm9wc1tjb3VudGVyXSA9IGNvdW50ZXJzW2NvdW50ZXJdID0gMFxuICAgICAgICAgICAgOiBlbC5jb3VudGVyUHJvcHNbY291bnRlcl0gPSBjb3VudGVyc1t0b2tlbnNbaisrXV0gPSByZXNldHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBpbmNyZW1lbnRDb3VudGVyKGVsLCB2YWx1ZSkge1xuICAgICAgICB2YXIgdG9rZW5zID0gdmFsdWUuc3BsaXQoL1xccysvKTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRva2Vucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHZhciBjb3VudGVyID0gdG9rZW5zW2pdO1xuXG4gICAgICAgICAgaWYgKGVsLmNvdW50ZXJQcm9wc1tjb3VudGVyXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgaW5jcnZhbCA9IHBhcnNlSW50KHRva2Vuc1tqKzFdLCAxMCk7XG5cbiAgICAgICAgICBpc05hTihpbmNydmFsKVxuICAgICAgICAgICAgPyBlbC5jb3VudGVyUHJvcHNbY291bnRlcl0gPSBjb3VudGVyc1tjb3VudGVyXSArPSAxXG4gICAgICAgICAgICA6IGVsLmNvdW50ZXJQcm9wc1tjb3VudGVyXSA9IGNvdW50ZXJzW3Rva2Vuc1tqKytdXSArPSBpbmNydmFsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGdvIHRocm91Z2ggdGhlIHByb3BlcnRpZXNcbiAgICAgIGZ1bmN0aW9uIGFkZFByb3BzKHN0eWxlLCBzZWxlY3Rvcikge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHN0eWxlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGlmIChzdHlsZVtpXS50eXBlID09ICdwcm9wZXJ0eScpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gc3R5bGVbaV0ubmFtZTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlW2ldLnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2NvdW50ZXItcmVzZXQnKSB7XG4gICAgICAgICAgICAgIHJlc2V0Q291bnRlcihlbCwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2NvdW50ZXItaW5jcmVtZW50Jykge1xuICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKGVsLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBpbXBvcnRhbnQgPSB2YWx1ZS5tYXRjaCgvIWltcG9ydGFudCQvKSAhPT0gbnVsbDtcbiAgICAgICAgICAgIGlmIChpbXBvcnRhbnQgJiYgIW9wdGlvbnMucHJlc2VydmVJbXBvcnRhbnQpIHZhbHVlID0gcmVtb3ZlSW1wb3J0YW50KHZhbHVlKTtcbiAgICAgICAgICAgIC8vIGFkZHMgbGluZSBudW1iZXIgYW5kIGNvbHVtbiBudW1iZXIgZm9yIHRoZSBwcm9wZXJ0aWVzIGFzIFwiYWRkaXRpb25hbFByaW9yaXR5XCIgdG8gdGhlXG4gICAgICAgICAgICAvLyBwcm9wZXJ0aWVzIGJlY2F1c2UgaW4gQ1NTIHRoZSBwb3NpdGlvbiBkaXJlY3RseSBhZmZlY3QgdGhlIHByaW9yaXR5LlxuICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxQcmlvcml0eSA9IFtzdHlsZVtpXS5wb3NpdGlvbi5zdGFydC5saW5lLCBzdHlsZVtpXS5wb3NpdGlvbi5zdGFydC5jb2xdO1xuICAgICAgICAgICAgdmFyIHByb3AgPSBuZXcgdXRpbHMuUHJvcGVydHkobmFtZSwgdmFsdWUsIHNlbGVjdG9yLCBpbXBvcnRhbnQgPyAyIDogMCwgYWRkaXRpb25hbFByaW9yaXR5KTtcbiAgICAgICAgICAgIHZhciBleGlzdGluZyA9IGVsLnN0eWxlUHJvcHNbbmFtZV07XG5cbiAgICAgICAgICAgIC8vIGlmIHByb3BlcnR5IG5hbWUgaXMgbm90IGluIHRoZSBleGNsdWRlZCBwcm9wZXJ0aWVzIGFycmF5XG4gICAgICAgICAgICBpZiAoanVpY2VDbGllbnQuZXhjbHVkZWRQcm9wZXJ0aWVzLmluZGV4T2YobmFtZSkgPCAwKSB7XG4gICAgICAgICAgICAgIGlmIChleGlzdGluZyAmJiBleGlzdGluZy5jb21wYXJlKHByb3ApID09PSBwcm9wIHx8ICFleGlzdGluZykge1xuICAgICAgICAgICAgICAgIC8vIGRlbGV0aW5nIGEgcHJvcGVydHkgbGV0IHVzIGNoYW5nZSB0aGUgb3JkZXIgKG1vdmUgaXQgdG8gdGhlIGVuZCBpbiB0aGUgc2V0U3R5bGVBdHRycyBsb29wKVxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZyAmJiBleGlzdGluZy5zZWxlY3RvciAhPT0gc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbC5zdHlsZVByb3BzW25hbWVdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIG1ha2UgXCJwcm9wXCIgYSBzcGVjaWFsIGNvbXBvc2VkIHByb3BlcnR5LlxuICAgICAgICAgICAgICAgICAgcHJvcC5uZXh0UHJvcCA9IGV4aXN0aW5nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGVsLnN0eWxlUHJvcHNbbmFtZV0gPSBwcm9wO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFkZFByb3BzKHN0eWxlLCBzZWxlY3Rvcik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRTdHlsZUF0dHJzKGVsKSB7XG4gICAgdmFyIGwgPSBPYmplY3Qua2V5cyhlbC5zdHlsZVByb3BzKS5sZW5ndGg7XG4gICAgdmFyIHByb3BzID0gW107XG4gICAgLy8gSGVyZSB3ZSBsb29wIGVhY2ggcHJvcGVydHkgYW5kIG1ha2Ugc3VyZSB0byBcImV4cGFuZFwiXG4gICAgLy8gbGlua2VkIFwibmV4dFByb3BcIiBwcm9wZXJ0aWVzIGhhcHBlbmluZyB3aGVuIHRoZSBzYW1lIHByb3BlcnR5XG4gICAgLy8gaXMgZGVjbGFyZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWUgc2VsZWN0b3IuXG4gICAgT2JqZWN0LmtleXMoZWwuc3R5bGVQcm9wcykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgIHZhciBucCA9IGVsLnN0eWxlUHJvcHNba2V5XTtcbiAgICAgIHdoaWxlICh0eXBlb2YgbnAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHByb3BzLnB1c2gobnApO1xuICAgICAgICBucCA9IG5wLm5leHRQcm9wO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIHNvcnQgcHJvcGVydGllcyBieSB0aGVpciBvcmlnaW5hdGluZyBzZWxlY3RvcidzIHNwZWNpZmljaXR5IHNvIHRoYXRcbiAgICAvLyBwcm9wcyBsaWtlIFwicGFkZGluZ1wiIGFuZCBcInBhZGRpbmctYm90dG9tXCIgYXJlIHJlc29sdmVkIGFzIGV4cGVjdGVkLlxuICAgIHByb3BzLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgICAgcmV0dXJuIGEuY29tcGFyZUZ1bmMoYik7XG4gICAgfSk7XG4gICAgdmFyIHN0cmluZyA9IHByb3BzXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgICAgLy8gQ29udGVudCBiZWNvbWVzIHRoZSBpbm5lckhUTUwgb2YgcHNldWRvIGVsZW1lbnRzLCBub3QgdXNlZCBhcyBhXG4gICAgICAgIC8vIHN0eWxlIHByb3BlcnR5XG4gICAgICAgIHJldHVybiBwcm9wLnByb3AgIT09ICdjb250ZW50JztcbiAgICAgIH0pXG4gICAgICAubWFwKGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgICAgcmV0dXJuIHByb3AucHJvcCArICc6ICcgKyBwcm9wLnZhbHVlLnJlcGxhY2UoL1tcIl0vZywgJ1xcJycpICsgJzsnO1xuICAgICAgfSlcbiAgICAgIC5qb2luKCcgJyk7XG4gICAgaWYgKHN0cmluZykge1xuICAgICAgJChlbCkuYXR0cihzdHlsZUF0dHJpYnV0ZU5hbWUsIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaW5saW5lUHNldWRvRWxlbWVudHMoZWwpIHtcbiAgICBpZiAoZWwucHNldWRvRWxlbWVudFR5cGUgJiYgZWwuc3R5bGVQcm9wcy5jb250ZW50KSB7XG4gICAgICB2YXIgcGFyc2VkID0gcGFyc2VDb250ZW50KGVsKTtcbiAgICAgIGlmIChwYXJzZWQuaW1nKSB7XG4gICAgICAgIGVsLm5hbWUgPSAnaW1nJztcbiAgICAgICAgJChlbCkuYXR0cignc3JjJywgcGFyc2VkLmltZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkKGVsKS50ZXh0KHBhcnNlZCk7XG4gICAgICB9XG4gICAgICB2YXIgcGFyZW50ID0gZWwucHNldWRvRWxlbWVudFBhcmVudDtcbiAgICAgIGlmIChlbC5wc2V1ZG9FbGVtZW50VHlwZSA9PT0gJ2JlZm9yZScpIHtcbiAgICAgICAgJChwYXJlbnQpLnByZXBlbmQoZWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgJChwYXJlbnQpLmFwcGVuZChlbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0RGltZW5zaW9uQXR0cnMoZWwsIGRpbWVuc2lvbikge1xuICAgIGlmICghZWwubmFtZSkgeyByZXR1cm47IH1cbiAgICB2YXIgZWxOYW1lID0gZWwubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgIGlmIChqdWljZUNsaWVudFtkaW1lbnNpb24gKyAnRWxlbWVudHMnXS5pbmRleE9mKGVsTmFtZSkgPiAtMSkge1xuICAgICAgZm9yICh2YXIgaSBpbiBlbC5zdHlsZVByb3BzKSB7XG4gICAgICAgIGlmIChlbC5zdHlsZVByb3BzW2ldLnByb3AgPT09IGRpbWVuc2lvbikge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IGVsLnN0eWxlUHJvcHNbaV0udmFsdWU7XG4gICAgICAgICAgaWYgKG9wdGlvbnMucHJlc2VydmVJbXBvcnRhbnQpIHtcbiAgICAgICAgICAgIHZhbHVlID0gcmVtb3ZlSW1wb3J0YW50KHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbHVlLm1hdGNoKC8ocHh8YXV0bykvKSkge1xuICAgICAgICAgICAgdmFyIHNpemUgPSB2YWx1ZS5yZXBsYWNlKCdweCcsICcnKTtcbiAgICAgICAgICAgICQoZWwpLmF0dHIoZGltZW5zaW9uLCBzaXplKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGp1aWNlQ2xpZW50LnRhYmxlRWxlbWVudHMuaW5kZXhPZihlbE5hbWUpID4gLTEgJiYgdmFsdWUubWF0Y2goL1xcJS8pKSB7XG4gICAgICAgICAgICAkKGVsKS5hdHRyKGRpbWVuc2lvbiwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dHJhY3RCYWNrZ3JvdW5kVXJsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLmluZGV4T2YoJ3VybCgnKSAhPT0gMFxuICAgICAgPyB2YWx1ZVxuICAgICAgOiB2YWx1ZS5yZXBsYWNlKC9edXJsXFwoKFtcIiddKT8oW15cIiddKylcXDFcXCkkLywgJyQyJyk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRBdHRyaWJ1dGVzT25UYWJsZUVsZW1lbnRzKGVsKSB7XG4gICAgaWYgKCFlbC5uYW1lKSB7IHJldHVybjsgfVxuICAgIHZhciBlbE5hbWUgPSBlbC5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgdmFyIHN0eWxlUHJvcHMgPSBPYmplY3Qua2V5cyhqdWljZUNsaWVudC5zdHlsZVRvQXR0cmlidXRlKTtcblxuICAgIGlmIChqdWljZUNsaWVudC50YWJsZUVsZW1lbnRzLmluZGV4T2YoZWxOYW1lKSA+IC0xKSB7XG4gICAgICBmb3IgKHZhciBpIGluIGVsLnN0eWxlUHJvcHMpIHtcbiAgICAgICAgaWYgKHN0eWxlUHJvcHMuaW5kZXhPZihlbC5zdHlsZVByb3BzW2ldLnByb3ApID4gLTEpIHtcbiAgICAgICAgICB2YXIgcHJvcCA9IGp1aWNlQ2xpZW50LnN0eWxlVG9BdHRyaWJ1dGVbZWwuc3R5bGVQcm9wc1tpXS5wcm9wXTtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBlbC5zdHlsZVByb3BzW2ldLnZhbHVlO1xuICAgICAgICAgIGlmIChvcHRpb25zLnByZXNlcnZlSW1wb3J0YW50KSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHJlbW92ZUltcG9ydGFudCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcm9wID09PSAnYmFja2dyb3VuZCcpIHtcbiAgICAgICAgICAgIHZhbHVlID0gZXh0cmFjdEJhY2tncm91bmRVcmwodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoLyhsaW5lYXJ8cmFkaWFsKS1ncmFkaWVudFxcKC9pLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgJChlbCkuYXR0cihwcm9wLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlSW1wb3J0YW50KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXHMqIWltcG9ydGFudCQvLCAnJylcbn1cblxuZnVuY3Rpb24gZmluZFZhcmlhYmxlVmFsdWUoZWwsIHZhcmlhYmxlKSB7XG4gIHdoaWxlIChlbCkge1xuICAgIGlmICh2YXJpYWJsZSBpbiBlbC5zdHlsZVByb3BzKSB7XG4gICAgICByZXR1cm4gZWwuc3R5bGVQcm9wc1t2YXJpYWJsZV0udmFsdWU7XG4gICAgfVxuXG4gICAgdmFyIGVsID0gZWwucHNldWRvRWxlbWVudFBhcmVudCB8fCBlbC5wYXJlbnQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlDb3VudGVyU3R5bGUoY291bnRlciwgc3R5bGUpIHtcbiAgc3dpdGNoIChzdHlsZSkge1xuICAgIGNhc2UgJ2xvd2VyLXJvbWFuJzpcbiAgICAgIHJldHVybiBudW1iZXJzLnJvbWFuaXplKGNvdW50ZXIpLnRvTG93ZXJDYXNlKCk7XG4gICAgY2FzZSAndXBwZXItcm9tYW4nOlxuICAgICAgcmV0dXJuIG51bWJlcnMucm9tYW5pemUoY291bnRlcik7XG4gICAgY2FzZSAnbG93ZXItbGF0aW4nOlxuICAgIGNhc2UgJ2xvd2VyLWFscGhhJzpcbiAgICAgIHJldHVybiBudW1iZXJzLmFscGhhbnVtZXJpYyhjb3VudGVyKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNhc2UgJ3VwcGVyLWxhdGluJzpcbiAgICBjYXNlICd1cHBlci1hbHBoYSc6XG4gICAgICByZXR1cm4gbnVtYmVycy5hbHBoYW51bWVyaWMoY291bnRlcik7XG4gICAgLy8gVE9ETyBzdXBwb3J0IG1vcmUgY291bnRlciBzdHlsZXNcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNvdW50ZXIudG9TdHJpbmcoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUNvbnRlbnQoZWwpIHtcbiAgdmFyIGNvbnRlbnQgPSBlbC5zdHlsZVByb3BzLmNvbnRlbnQudmFsdWU7XG5cbiAgaWYgKGNvbnRlbnQgPT09ICdub25lJyB8fCBjb250ZW50ID09PSAnbm9ybWFsJykge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHZhciBpbWFnZVVybE1hdGNoID0gY29udGVudC5tYXRjaCgvXlxccyp1cmxcXHMqXFwoXFxzKiguKj8pXFxzKlxcKVxccyokL2kpO1xuICBpZiAoaW1hZ2VVcmxNYXRjaCkge1xuICAgIHZhciB1cmwgPSBpbWFnZVVybE1hdGNoWzFdLnJlcGxhY2UoL15bJ1wiXXxbJ1wiXSQvZywgJycpO1xuICAgIHJldHVybiB7IGltZzogdXJsIH07XG4gIH1cblxuICB2YXIgcGFyc2VkID0gW107XG5cbiAgdmFyIHRva2VucyA9IGNvbnRlbnQuc3BsaXQoL1snXCJdLyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRva2Vuc1tpXSA9PT0gJycpIGNvbnRpbnVlO1xuXG4gICAgdmFyIHZhck1hdGNoID0gdG9rZW5zW2ldLm1hdGNoKC92YXJcXHMqXFwoXFxzKiguKj8pXFxzKigsXFxzKiguKj8pXFxzKik/XFxzKlxcKS9pKTtcbiAgICBpZiAodmFyTWF0Y2gpIHtcbiAgICAgIHZhciB2YXJpYWJsZSA9IGZpbmRWYXJpYWJsZVZhbHVlKGVsLCB2YXJNYXRjaFsxXSkgfHwgdmFyTWF0Y2hbMl07XG4gICAgICBwYXJzZWQucHVzaCh2YXJpYWJsZS5yZXBsYWNlKC9eWydcIl18WydcIl0kL2csICcnKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY291bnRlck1hdGNoID0gdG9rZW5zW2ldLm1hdGNoKC9jb3VudGVyXFxzKlxcKFxccyooLio/KVxccyooLFxccyooLio/KVxccyopP1xccypcXCkvaSk7XG4gICAgaWYgKGNvdW50ZXJNYXRjaCAmJiBjb3VudGVyTWF0Y2hbMV0gaW4gZWwuY291bnRlclByb3BzKSB7XG4gICAgICB2YXIgY291bnRlciA9IGVsLmNvdW50ZXJQcm9wc1tjb3VudGVyTWF0Y2hbMV1dO1xuICAgICAgcGFyc2VkLnB1c2goYXBwbHlDb3VudGVyU3R5bGUoY291bnRlciwgY291bnRlck1hdGNoWzNdKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgYXR0ck1hdGNoID0gdG9rZW5zW2ldLm1hdGNoKC9hdHRyXFxzKlxcKFxccyooLio/KVxccypcXCkvaSk7XG4gICAgaWYgKGF0dHJNYXRjaCkge1xuICAgICAgdmFyIGF0dHIgPSBhdHRyTWF0Y2hbMV07XG4gICAgICBwYXJzZWQucHVzaChlbC5wc2V1ZG9FbGVtZW50UGFyZW50XG4gICAgICAgID8gZWwucHNldWRvRWxlbWVudFBhcmVudC5hdHRyaWJzW2F0dHJdXG4gICAgICAgIDogZWwuYXR0cmlic1thdHRyXVxuICAgICAgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHBhcnNlZC5wdXNoKHRva2Vuc1tpXSk7XG4gIH1cblxuICBjb250ZW50ID0gcGFyc2VkLmpvaW4oJycpO1xuICAvLyBOYWl2ZSB1bmVzY2FwZSwgYXNzdW1lIG5vIHVuaWNvZGUgY2hhciBjb2Rlc1xuICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKC9cXFxcL2csICcnKTtcbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8vIFJldHVybiBcImJlZm9yZVwiIG9yIFwiYWZ0ZXJcIiBpZiB0aGUgZ2l2ZW4gc2VsZWN0b3IgaXMgYSBwc2V1ZG8gZWxlbWVudCAoZS5nLixcbi8vIGE6OmFmdGVyKS5cbmZ1bmN0aW9uIGdldFBzZXVkb0VsZW1lbnRUeXBlKHNlbGVjdG9yKSB7XG4gIGlmIChzZWxlY3Rvci5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcHNldWRvcyA9IHNlbGVjdG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdLnBzZXVkb3M7XG4gIGlmICghcHNldWRvcykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHNldWRvcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpc1BzZXVkb0VsZW1lbnROYW1lKHBzZXVkb3NbaV0pKSB7XG4gICAgICByZXR1cm4gcHNldWRvc1tpXS5uYW1lO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1BzZXVkb0VsZW1lbnROYW1lKHBzZXVkbykge1xuICByZXR1cm4gcHNldWRvLm5hbWUgPT09ICdiZWZvcmUnIHx8IHBzZXVkby5uYW1lID09PSAnYWZ0ZXInO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJFbGVtZW50UHNldWRvcyhwc2V1ZG9zKSB7XG4gIHJldHVybiBwc2V1ZG9zLmZpbHRlcihmdW5jdGlvbihwc2V1ZG8pIHtcbiAgICByZXR1cm4gIWlzUHNldWRvRWxlbWVudE5hbWUocHNldWRvKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGp1aWNlRG9jdW1lbnQoJCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gdXRpbHMuZ2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucyk7XG4gIHZhciBjc3MgPSBleHRyYWN0Q3NzRnJvbURvY3VtZW50KCQsIG9wdGlvbnMpO1xuICBjc3MgKz0gJ1xcbicgKyBvcHRpb25zLmV4dHJhQ3NzO1xuICBpbmxpbmVEb2N1bWVudCgkLCBjc3MsIG9wdGlvbnMpO1xuICByZXR1cm4gJDtcbn1cblxuZnVuY3Rpb24gZ2V0U3R5bGVzRGF0YSgkLCBvcHRpb25zKSB7XG4gIHZhciByZXN1bHRzID0gW107XG4gIHZhciBzdHlsZXNMaXN0ID0gJCgnc3R5bGUnKTtcbiAgdmFyIHN0eWxlRGF0YUxpc3QsIHN0eWxlRGF0YSwgc3R5bGVFbGVtZW50O1xuICBzdHlsZXNMaXN0LmVhY2goZnVuY3Rpb24oKSB7XG4gICAgc3R5bGVFbGVtZW50ID0gdGhpcztcbiAgICAvLyB0aGUgQVBJIGZvciBDaGVlcmlvIHVzaW5nIHBhcnNlNSAoZGVmYXVsdCkgYW5kIGh0bWxwYXJzZXIyIGFyZSBzbGlnaHRseSBkaWZmZXJlbnRcbiAgICAvLyBkZXRlY3QgdGhpcyBieSBjaGVja2luZyBpZiAuY2hpbGROb2RlcyBleGlzdCAoYXMgb3Bwb3NlZCB0byAuY2hpbGRyZW4pXG4gICAgdmFyIHVzaW5nUGFyc2U1ID0gISFzdHlsZUVsZW1lbnQuY2hpbGROb2RlcztcbiAgICBzdHlsZURhdGFMaXN0ID0gdXNpbmdQYXJzZTUgPyBzdHlsZUVsZW1lbnQuY2hpbGROb2RlcyA6IHN0eWxlRWxlbWVudC5jaGlsZHJlbjtcbiAgICBpZiAoc3R5bGVEYXRhTGlzdC5sZW5ndGggIT09IDEpIHtcbiAgICAgIGlmIChvcHRpb25zLnJlbW92ZVN0eWxlVGFncykge1xuICAgICAgICAkKHN0eWxlRWxlbWVudCkucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0eWxlRGF0YSA9IHN0eWxlRGF0YUxpc3RbMF0uZGF0YTtcbiAgICBpZiAob3B0aW9ucy5hcHBseVN0eWxlVGFncyAmJiAkKHN0eWxlRWxlbWVudCkuYXR0cignZGF0YS1lbWJlZCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdHMucHVzaChzdHlsZURhdGEpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5yZW1vdmVTdHlsZVRhZ3MgJiYgJChzdHlsZUVsZW1lbnQpLmF0dHIoJ2RhdGEtZW1iZWQnKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgdGV4dCA9IHVzaW5nUGFyc2U1ID8gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlIDogc3R5bGVFbGVtZW50LmNoaWxkcmVuWzBdLmRhdGE7XG4gICAgICB2YXIgcHJlc2VydmVkVGV4dCA9IHV0aWxzLmdldFByZXNlcnZlZFRleHQodGV4dCwge1xuICAgICAgICBtZWRpYVF1ZXJpZXM6IG9wdGlvbnMucHJlc2VydmVNZWRpYVF1ZXJpZXMsXG4gICAgICAgIGZvbnRGYWNlczogb3B0aW9ucy5wcmVzZXJ2ZUZvbnRGYWNlcyxcbiAgICAgICAga2V5RnJhbWVzOiBvcHRpb25zLnByZXNlcnZlS2V5RnJhbWVzLFxuICAgICAgICBwc2V1ZG9zOiBvcHRpb25zLnByZXNlcnZlUHNldWRvc1xuICAgICAgfSwganVpY2VDbGllbnQuaWdub3JlZFBzZXVkb3MpO1xuICAgICAgaWYgKHByZXNlcnZlZFRleHQpIHtcbiAgICAgICAgaWYgKHVzaW5nUGFyc2U1KSB7XG4gICAgICAgICAgc3R5bGVFbGVtZW50LmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlID0gcHJlc2VydmVkVGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHlsZUVsZW1lbnQuY2hpbGRyZW5bMF0uZGF0YSA9IHByZXNlcnZlZFRleHQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICQoc3R5bGVFbGVtZW50KS5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgJChzdHlsZUVsZW1lbnQpLnJlbW92ZUF0dHIoJ2RhdGEtZW1iZWQnKTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0Q3NzRnJvbURvY3VtZW50KCQsIG9wdGlvbnMpIHtcbiAgdmFyIHJlc3VsdHMgPSBnZXRTdHlsZXNEYXRhKCQsIG9wdGlvbnMpO1xuICB2YXIgY3NzID0gcmVzdWx0cy5qb2luKCdcXG4nKTtcbiAgcmV0dXJuIGNzcztcbn1cblxucmV0dXJuIGp1aWNlQ2xpZW50O1xuXG59O1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIGNoZWVyaW8gPSByZXF1aXJlKCcuL2xpYi9jaGVlcmlvJyk7XG52YXIgbWFrZUp1aWNlQ2xpZW50ID0gcmVxdWlyZSgnLi9saWIvaW5saW5lJyk7XG5cbi8qKlxuICogTm90ZSB0aGF0IG1ha2VKdWljZUNsaWVudCB3aWxsIHRha2UgYSBiYXNlIG9iamVjdCAoaW4gdGhpcyBjYXNlIGEgZnVuY3Rpb24pIGFuZCBlbmhhbmNlIGl0XG4gKiB3aXRoIGEgbG90IG9mIHVzZWZ1bCBwcm9wZXJ0aWVzIGFuZCBmdW5jdGlvbnMuXG4gKlxuICogVGhpcyBjbGllbnQgYWRvcHRzIGNoZWVyaW8gYXMgYSBET00gcGFyc2VyIGFuZCBhZGRzIGFuIFwiaW5saW5lQ29udGVudFwiIGZ1bmN0aW9uIHRoYXQgbGV0XG4gKiB1c2VycyB0byBzcGVjaWZ5IHRoZSBDU1MgdG8gYmUgaW5saW5lZCBpbnN0ZWFkIG9mIGV4dHJhY3RpbmcgaXQgZnJvbSB0aGUgaHRtbC5cbiAqIFxuICogVGhlIHdlaXJkIFwibWFrZUp1aWNlQ2xpZW50XCIgYmVoYXZpb3VyIGlzIHRoZXJlIGluIG9yZGVyIHRvIGtlZXAgYmFja3dhcmQgQVBJIGNvbXBhdGliaWxpdHkuXG4gKi9cbnZhciBqdWljZUNsaWVudCA9IG1ha2VKdWljZUNsaWVudChmdW5jdGlvbihodG1sLG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNoZWVyaW8oaHRtbCwgeyB4bWxNb2RlOiBvcHRpb25zICYmIG9wdGlvbnMueG1sTW9kZX0sIGp1aWNlRG9jdW1lbnQsIFtvcHRpb25zXSk7XG59KTtcblxudmFyIGp1aWNlRG9jdW1lbnQgPSBmdW5jdGlvbihodG1sLCBvcHRpb25zKSB7XG4gIHJldHVybiBqdWljZUNsaWVudC5qdWljZURvY3VtZW50KGh0bWwsIG9wdGlvbnMpO1xufVxuXG5qdWljZUNsaWVudC5pbmxpbmVDb250ZW50ID0gZnVuY3Rpb24oaHRtbCwgY3NzLCBvcHRpb25zKSB7XG4gIHJldHVybiBjaGVlcmlvKGh0bWwsIHsgeG1sTW9kZTogb3B0aW9ucyAmJiBvcHRpb25zLnhtbE1vZGV9LCBqdWljZUNsaWVudC5pbmxpbmVEb2N1bWVudCwgW2Nzcywgb3B0aW9uc10pO1xufTtcblxuanVpY2VDbGllbnQuY29kZUJsb2NrcyA9IGNoZWVyaW8uY29kZUJsb2NrcztcblxubW9kdWxlLmV4cG9ydHMgPSBqdWljZUNsaWVudDtcbiIsICJ2YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGtpbmRPZih2YWwpIHtcbiAgaWYgKHZhbCA9PT0gdm9pZCAwKSByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gIGlmICh2YWwgPT09IG51bGwpIHJldHVybiAnbnVsbCc7XG5cbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsO1xuICBpZiAodHlwZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gJ2Jvb2xlYW4nO1xuICBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHJldHVybiAnc3RyaW5nJztcbiAgaWYgKHR5cGUgPT09ICdudW1iZXInKSByZXR1cm4gJ251bWJlcic7XG4gIGlmICh0eXBlID09PSAnc3ltYm9sJykgcmV0dXJuICdzeW1ib2wnO1xuICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBpc0dlbmVyYXRvckZuKHZhbCkgPyAnZ2VuZXJhdG9yZnVuY3Rpb24nIDogJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGlmIChpc0FycmF5KHZhbCkpIHJldHVybiAnYXJyYXknO1xuICBpZiAoaXNCdWZmZXIodmFsKSkgcmV0dXJuICdidWZmZXInO1xuICBpZiAoaXNBcmd1bWVudHModmFsKSkgcmV0dXJuICdhcmd1bWVudHMnO1xuICBpZiAoaXNEYXRlKHZhbCkpIHJldHVybiAnZGF0ZSc7XG4gIGlmIChpc0Vycm9yKHZhbCkpIHJldHVybiAnZXJyb3InO1xuICBpZiAoaXNSZWdleHAodmFsKSkgcmV0dXJuICdyZWdleHAnO1xuXG4gIHN3aXRjaCAoY3Rvck5hbWUodmFsKSkge1xuICAgIGNhc2UgJ1N5bWJvbCc6IHJldHVybiAnc3ltYm9sJztcbiAgICBjYXNlICdQcm9taXNlJzogcmV0dXJuICdwcm9taXNlJztcblxuICAgIC8vIFNldCwgTWFwLCBXZWFrU2V0LCBXZWFrTWFwXG4gICAgY2FzZSAnV2Vha01hcCc6IHJldHVybiAnd2Vha21hcCc7XG4gICAgY2FzZSAnV2Vha1NldCc6IHJldHVybiAnd2Vha3NldCc7XG4gICAgY2FzZSAnTWFwJzogcmV0dXJuICdtYXAnO1xuICAgIGNhc2UgJ1NldCc6IHJldHVybiAnc2V0JztcblxuICAgIC8vIDgtYml0IHR5cGVkIGFycmF5c1xuICAgIGNhc2UgJ0ludDhBcnJheSc6IHJldHVybiAnaW50OGFycmF5JztcbiAgICBjYXNlICdVaW50OEFycmF5JzogcmV0dXJuICd1aW50OGFycmF5JztcbiAgICBjYXNlICdVaW50OENsYW1wZWRBcnJheSc6IHJldHVybiAndWludDhjbGFtcGVkYXJyYXknO1xuXG4gICAgLy8gMTYtYml0IHR5cGVkIGFycmF5c1xuICAgIGNhc2UgJ0ludDE2QXJyYXknOiByZXR1cm4gJ2ludDE2YXJyYXknO1xuICAgIGNhc2UgJ1VpbnQxNkFycmF5JzogcmV0dXJuICd1aW50MTZhcnJheSc7XG5cbiAgICAvLyAzMi1iaXQgdHlwZWQgYXJyYXlzXG4gICAgY2FzZSAnSW50MzJBcnJheSc6IHJldHVybiAnaW50MzJhcnJheSc7XG4gICAgY2FzZSAnVWludDMyQXJyYXknOiByZXR1cm4gJ3VpbnQzMmFycmF5JztcbiAgICBjYXNlICdGbG9hdDMyQXJyYXknOiByZXR1cm4gJ2Zsb2F0MzJhcnJheSc7XG4gICAgY2FzZSAnRmxvYXQ2NEFycmF5JzogcmV0dXJuICdmbG9hdDY0YXJyYXknO1xuICB9XG5cbiAgaWYgKGlzR2VuZXJhdG9yT2JqKHZhbCkpIHtcbiAgICByZXR1cm4gJ2dlbmVyYXRvcic7XG4gIH1cblxuICAvLyBOb24tcGxhaW4gb2JqZWN0c1xuICB0eXBlID0gdG9TdHJpbmcuY2FsbCh2YWwpO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdbb2JqZWN0IE9iamVjdF0nOiByZXR1cm4gJ29iamVjdCc7XG4gICAgLy8gaXRlcmF0b3JzXG4gICAgY2FzZSAnW29iamVjdCBNYXAgSXRlcmF0b3JdJzogcmV0dXJuICdtYXBpdGVyYXRvcic7XG4gICAgY2FzZSAnW29iamVjdCBTZXQgSXRlcmF0b3JdJzogcmV0dXJuICdzZXRpdGVyYXRvcic7XG4gICAgY2FzZSAnW29iamVjdCBTdHJpbmcgSXRlcmF0b3JdJzogcmV0dXJuICdzdHJpbmdpdGVyYXRvcic7XG4gICAgY2FzZSAnW29iamVjdCBBcnJheSBJdGVyYXRvcl0nOiByZXR1cm4gJ2FycmF5aXRlcmF0b3InO1xuICB9XG5cbiAgLy8gb3RoZXJcbiAgcmV0dXJuIHR5cGUuc2xpY2UoOCwgLTEpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzL2csICcnKTtcbn07XG5cbmZ1bmN0aW9uIGN0b3JOYW1lKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbC5jb25zdHJ1Y3RvciA9PT0gJ2Z1bmN0aW9uJyA/IHZhbC5jb25zdHJ1Y3Rvci5uYW1lIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNBcnJheSh2YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkpIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7XG4gIHJldHVybiB2YWwgaW5zdGFuY2VvZiBBcnJheTtcbn1cblxuZnVuY3Rpb24gaXNFcnJvcih2YWwpIHtcbiAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIEVycm9yIHx8ICh0eXBlb2YgdmFsLm1lc3NhZ2UgPT09ICdzdHJpbmcnICYmIHZhbC5jb25zdHJ1Y3RvciAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLnN0YWNrVHJhY2VMaW1pdCA9PT0gJ251bWJlcicpO1xufVxuXG5mdW5jdGlvbiBpc0RhdGUodmFsKSB7XG4gIGlmICh2YWwgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIHR5cGVvZiB2YWwudG9EYXRlU3RyaW5nID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIHZhbC5nZXREYXRlID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIHZhbC5zZXREYXRlID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBpc1JlZ2V4cCh2YWwpIHtcbiAgaWYgKHZhbCBpbnN0YW5jZW9mIFJlZ0V4cCkgcmV0dXJuIHRydWU7XG4gIHJldHVybiB0eXBlb2YgdmFsLmZsYWdzID09PSAnc3RyaW5nJ1xuICAgICYmIHR5cGVvZiB2YWwuaWdub3JlQ2FzZSA9PT0gJ2Jvb2xlYW4nXG4gICAgJiYgdHlwZW9mIHZhbC5tdWx0aWxpbmUgPT09ICdib29sZWFuJ1xuICAgICYmIHR5cGVvZiB2YWwuZ2xvYmFsID09PSAnYm9vbGVhbic7XG59XG5cbmZ1bmN0aW9uIGlzR2VuZXJhdG9yRm4obmFtZSwgdmFsKSB7XG4gIHJldHVybiBjdG9yTmFtZShuYW1lKSA9PT0gJ0dlbmVyYXRvckZ1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gaXNHZW5lcmF0b3JPYmoodmFsKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsLnRocm93ID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIHZhbC5yZXR1cm4gPT09ICdmdW5jdGlvbidcbiAgICAmJiB0eXBlb2YgdmFsLm5leHQgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbCkge1xuICB0cnkge1xuICAgIGlmICh0eXBlb2YgdmFsLmxlbmd0aCA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbC5jYWxsZWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyci5tZXNzYWdlLmluZGV4T2YoJ2NhbGxlZScpICE9PSAtMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IFNhZmFyaSA1LTcgKDgtMTAgeXItb2xkIGJyb3dzZXIpLFxuICogdGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9pcy1idWZmZXJcbiAqL1xuXG5mdW5jdGlvbiBpc0J1ZmZlcih2YWwpIHtcbiAgaWYgKHZhbC5jb25zdHJ1Y3RvciAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbiIsICIvKiFcbiAqIGlzLWV4dGVuZGFibGUgPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L2lzLWV4dGVuZGFibGU+XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE1LCBKb24gU2NobGlua2VydC5cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNFeHRlbmRhYmxlKHZhbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsICE9PSBudWxsXG4gICAgJiYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJ2lzLWV4dGVuZGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBleHRlbmQoby8qLCBvYmplY3RzKi8pIHtcbiAgaWYgKCFpc09iamVjdChvKSkgeyBvID0ge307IH1cblxuICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBvYmogPSBhcmd1bWVudHNbaV07XG5cbiAgICBpZiAoaXNPYmplY3Qob2JqKSkge1xuICAgICAgYXNzaWduKG8sIG9iaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBvO1xufTtcblxuZnVuY3Rpb24gYXNzaWduKGEsIGIpIHtcbiAgZm9yICh2YXIga2V5IGluIGIpIHtcbiAgICBpZiAoaGFzT3duKGIsIGtleSkpIHtcbiAgICAgIGFba2V5XSA9IGJba2V5XTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGBrZXlgIGlzIGFuIG93biBwcm9wZXJ0eSBvZiBgb2JqYC5cbiAqL1xuXG5mdW5jdGlvbiBoYXNPd24ob2JqLCBrZXkpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdHlwZU9mID0gcmVxdWlyZSgna2luZC1vZicpO1xudmFyIGV4dGVuZCA9IHJlcXVpcmUoJ2V4dGVuZC1zaGFsbG93Jyk7XG5cbi8qKlxuICogUGFyc2Ugc2VjdGlvbnMgaW4gYGlucHV0YCB3aXRoIHRoZSBnaXZlbiBgb3B0aW9uc2AuXG4gKlxuICogYGBganNcbiAqIHZhciBzZWN0aW9ucyA9IHJlcXVpcmUoJ3slPSBuYW1lICV9Jyk7XG4gKiB2YXIgcmVzdWx0ID0gc2VjdGlvbnMoaW5wdXQsIG9wdGlvbnMpO1xuICogLy8geyBjb250ZW50OiAnQ29udGVudCBiZWZvcmUgc2VjdGlvbnMnLCBzZWN0aW9uczogW10gfVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ3xCdWZmZXJ8T2JqZWN0fSBgaW5wdXRgIElmIGlucHV0IGlzIGFuIG9iamVjdCwgaXQncyBgY29udGVudGAgcHJvcGVydHkgbXVzdCBiZSBhIHN0cmluZyBvciBidWZmZXIuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgYGNvbnRlbnRgIHN0cmluZyBhbmQgYW4gYXJyYXkgb2YgYHNlY3Rpb25zYCBvYmplY3RzLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9wdGlvbnMgPSB7IHBhcnNlOiBvcHRpb25zIH07XG4gIH1cblxuICB2YXIgZmlsZSA9IHRvT2JqZWN0KGlucHV0KTtcbiAgdmFyIGRlZmF1bHRzID0ge3NlY3Rpb25fZGVsaW1pdGVyOiAnLS0tJywgcGFyc2U6IGlkZW50aXR5fTtcbiAgdmFyIG9wdHMgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBvcHRpb25zKTtcbiAgdmFyIGRlbGltID0gb3B0cy5zZWN0aW9uX2RlbGltaXRlcjtcbiAgdmFyIGxpbmVzID0gZmlsZS5jb250ZW50LnNwbGl0KC9cXHI/XFxuLyk7XG4gIHZhciBzZWN0aW9ucyA9IG51bGw7XG4gIHZhciBzZWN0aW9uID0gY3JlYXRlU2VjdGlvbigpO1xuICB2YXIgY29udGVudCA9IFtdO1xuICB2YXIgc3RhY2sgPSBbXTtcblxuICBmdW5jdGlvbiBpbml0U2VjdGlvbnModmFsKSB7XG4gICAgZmlsZS5jb250ZW50ID0gdmFsO1xuICAgIHNlY3Rpb25zID0gW107XG4gICAgY29udGVudCA9IFtdO1xuICB9XG5cbiAgZnVuY3Rpb24gY2xvc2VTZWN0aW9uKHZhbCkge1xuICAgIGlmIChzdGFjay5sZW5ndGgpIHtcbiAgICAgIHNlY3Rpb24ua2V5ID0gZ2V0S2V5KHN0YWNrWzBdLCBkZWxpbSk7XG4gICAgICBzZWN0aW9uLmNvbnRlbnQgPSB2YWw7XG4gICAgICBvcHRzLnBhcnNlKHNlY3Rpb24sIHNlY3Rpb25zKTtcbiAgICAgIHNlY3Rpb25zLnB1c2goc2VjdGlvbik7XG4gICAgICBzZWN0aW9uID0gY3JlYXRlU2VjdGlvbigpO1xuICAgICAgY29udGVudCA9IFtdO1xuICAgICAgc3RhY2sgPSBbXTtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGxpbmUgPSBsaW5lc1tpXTtcbiAgICB2YXIgbGVuID0gc3RhY2subGVuZ3RoO1xuICAgIHZhciBsbiA9IGxpbmUudHJpbSgpO1xuXG4gICAgaWYgKGlzRGVsaW1pdGVyKGxuLCBkZWxpbSkpIHtcbiAgICAgIGlmIChsbi5sZW5ndGggPT09IDMgJiYgaSAhPT0gMCkge1xuICAgICAgICBpZiAobGVuID09PSAwIHx8IGxlbiA9PT0gMikge1xuICAgICAgICAgIGNvbnRlbnQucHVzaChsaW5lKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKGxuKTtcbiAgICAgICAgc2VjdGlvbi5kYXRhID0gY29udGVudC5qb2luKCdcXG4nKTtcbiAgICAgICAgY29udGVudCA9IFtdO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlY3Rpb25zID09PSBudWxsKSB7XG4gICAgICAgIGluaXRTZWN0aW9ucyhjb250ZW50LmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxlbiA9PT0gMikge1xuICAgICAgICBjbG9zZVNlY3Rpb24oY29udGVudC5qb2luKCdcXG4nKSk7XG4gICAgICB9XG5cbiAgICAgIHN0YWNrLnB1c2gobG4pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29udGVudC5wdXNoKGxpbmUpO1xuICB9XG5cbiAgaWYgKHNlY3Rpb25zID09PSBudWxsKSB7XG4gICAgaW5pdFNlY3Rpb25zKGNvbnRlbnQuam9pbignXFxuJykpO1xuICB9IGVsc2Uge1xuICAgIGNsb3NlU2VjdGlvbihjb250ZW50LmpvaW4oJ1xcbicpKTtcbiAgfVxuXG4gIGZpbGUuc2VjdGlvbnMgPSBzZWN0aW9ucztcbiAgcmV0dXJuIGZpbGU7XG59O1xuXG5mdW5jdGlvbiBpc0RlbGltaXRlcihsaW5lLCBkZWxpbSkge1xuICBpZiAobGluZS5zbGljZSgwLCBkZWxpbS5sZW5ndGgpICE9PSBkZWxpbSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAobGluZS5jaGFyQXQoZGVsaW0ubGVuZ3RoICsgMSkgPT09IGRlbGltLnNsaWNlKC0xKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gdG9PYmplY3QoaW5wdXQpIHtcbiAgaWYgKHR5cGVPZihpbnB1dCkgIT09ICdvYmplY3QnKSB7XG4gICAgaW5wdXQgPSB7IGNvbnRlbnQ6IGlucHV0IH07XG4gIH1cblxuICBpZiAodHlwZW9mIGlucHV0LmNvbnRlbnQgIT09ICdzdHJpbmcnICYmICFpc0J1ZmZlcihpbnB1dC5jb250ZW50KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIGEgYnVmZmVyIG9yIHN0cmluZycpO1xuICB9XG5cbiAgaW5wdXQuY29udGVudCA9IGlucHV0LmNvbnRlbnQudG9TdHJpbmcoKTtcbiAgaW5wdXQuc2VjdGlvbnMgPSBbXTtcbiAgcmV0dXJuIGlucHV0O1xufVxuXG5mdW5jdGlvbiBnZXRLZXkodmFsLCBkZWxpbSkge1xuICByZXR1cm4gdmFsID8gdmFsLnNsaWNlKGRlbGltLmxlbmd0aCkudHJpbSgpIDogJyc7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNlY3Rpb24oKSB7XG4gIHJldHVybiB7IGtleTogJycsIGRhdGE6ICcnLCBjb250ZW50OiAnJyB9O1xufVxuXG5mdW5jdGlvbiBpZGVudGl0eSh2YWwpIHtcbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gaXNCdWZmZXIodmFsKSB7XG4gIGlmICh2YWwgJiYgdmFsLmNvbnN0cnVjdG9yICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuIiwgIid1c2Ugc3RyaWN0JztcblxuXG5mdW5jdGlvbiBpc05vdGhpbmcoc3ViamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBzdWJqZWN0ID09PSAndW5kZWZpbmVkJykgfHwgKHN1YmplY3QgPT09IG51bGwpO1xufVxuXG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHN1YmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygc3ViamVjdCA9PT0gJ29iamVjdCcpICYmIChzdWJqZWN0ICE9PSBudWxsKTtcbn1cblxuXG5mdW5jdGlvbiB0b0FycmF5KHNlcXVlbmNlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHNlcXVlbmNlKSkgcmV0dXJuIHNlcXVlbmNlO1xuICBlbHNlIGlmIChpc05vdGhpbmcoc2VxdWVuY2UpKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIFsgc2VxdWVuY2UgXTtcbn1cblxuXG5mdW5jdGlvbiBleHRlbmQodGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIGluZGV4LCBsZW5ndGgsIGtleSwgc291cmNlS2V5cztcblxuICBpZiAoc291cmNlKSB7XG4gICAgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gc291cmNlS2V5cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICBrZXkgPSBzb3VyY2VLZXlzW2luZGV4XTtcbiAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuXG5mdW5jdGlvbiByZXBlYXQoc3RyaW5nLCBjb3VudCkge1xuICB2YXIgcmVzdWx0ID0gJycsIGN5Y2xlO1xuXG4gIGZvciAoY3ljbGUgPSAwOyBjeWNsZSA8IGNvdW50OyBjeWNsZSArPSAxKSB7XG4gICAgcmVzdWx0ICs9IHN0cmluZztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuZnVuY3Rpb24gaXNOZWdhdGl2ZVplcm8obnVtYmVyKSB7XG4gIHJldHVybiAobnVtYmVyID09PSAwKSAmJiAoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZID09PSAxIC8gbnVtYmVyKTtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cy5pc05vdGhpbmcgICAgICA9IGlzTm90aGluZztcbm1vZHVsZS5leHBvcnRzLmlzT2JqZWN0ICAgICAgID0gaXNPYmplY3Q7XG5tb2R1bGUuZXhwb3J0cy50b0FycmF5ICAgICAgICA9IHRvQXJyYXk7XG5tb2R1bGUuZXhwb3J0cy5yZXBlYXQgICAgICAgICA9IHJlcGVhdDtcbm1vZHVsZS5leHBvcnRzLmlzTmVnYXRpdmVaZXJvID0gaXNOZWdhdGl2ZVplcm87XG5tb2R1bGUuZXhwb3J0cy5leHRlbmQgICAgICAgICA9IGV4dGVuZDtcbiIsICIvLyBZQU1MIGVycm9yIGNsYXNzLiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzg0NTg5ODRcbi8vXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIFlBTUxFeGNlcHRpb24ocmVhc29uLCBtYXJrKSB7XG4gIC8vIFN1cGVyIGNvbnN0cnVjdG9yXG4gIEVycm9yLmNhbGwodGhpcyk7XG5cbiAgdGhpcy5uYW1lID0gJ1lBTUxFeGNlcHRpb24nO1xuICB0aGlzLnJlYXNvbiA9IHJlYXNvbjtcbiAgdGhpcy5tYXJrID0gbWFyaztcbiAgdGhpcy5tZXNzYWdlID0gKHRoaXMucmVhc29uIHx8ICcodW5rbm93biByZWFzb24pJykgKyAodGhpcy5tYXJrID8gJyAnICsgdGhpcy5tYXJrLnRvU3RyaW5nKCkgOiAnJyk7XG5cbiAgLy8gSW5jbHVkZSBzdGFjayB0cmFjZSBpbiBlcnJvciBvYmplY3RcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgLy8gQ2hyb21lIGFuZCBOb2RlSlNcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBGRiwgSUUgMTArIGFuZCBTYWZhcmkgNisuIEZhbGxiYWNrIGZvciBvdGhlcnNcbiAgICB0aGlzLnN0YWNrID0gKG5ldyBFcnJvcigpKS5zdGFjayB8fCAnJztcbiAgfVxufVxuXG5cbi8vIEluaGVyaXQgZnJvbSBFcnJvclxuWUFNTEV4Y2VwdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG5ZQU1MRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFlBTUxFeGNlcHRpb247XG5cblxuWUFNTEV4Y2VwdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyhjb21wYWN0KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLm5hbWUgKyAnOiAnO1xuXG4gIHJlc3VsdCArPSB0aGlzLnJlYXNvbiB8fCAnKHVua25vd24gcmVhc29uKSc7XG5cbiAgaWYgKCFjb21wYWN0ICYmIHRoaXMubWFyaykge1xuICAgIHJlc3VsdCArPSAnICcgKyB0aGlzLm1hcmsudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gWUFNTEV4Y2VwdGlvbjtcbiIsICIndXNlIHN0cmljdCc7XG5cblxudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG5cblxuZnVuY3Rpb24gTWFyayhuYW1lLCBidWZmZXIsIHBvc2l0aW9uLCBsaW5lLCBjb2x1bW4pIHtcbiAgdGhpcy5uYW1lICAgICA9IG5hbWU7XG4gIHRoaXMuYnVmZmVyICAgPSBidWZmZXI7XG4gIHRoaXMucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgdGhpcy5saW5lICAgICA9IGxpbmU7XG4gIHRoaXMuY29sdW1uICAgPSBjb2x1bW47XG59XG5cblxuTWFyay5wcm90b3R5cGUuZ2V0U25pcHBldCA9IGZ1bmN0aW9uIGdldFNuaXBwZXQoaW5kZW50LCBtYXhMZW5ndGgpIHtcbiAgdmFyIGhlYWQsIHN0YXJ0LCB0YWlsLCBlbmQsIHNuaXBwZXQ7XG5cbiAgaWYgKCF0aGlzLmJ1ZmZlcikgcmV0dXJuIG51bGw7XG5cbiAgaW5kZW50ID0gaW5kZW50IHx8IDQ7XG4gIG1heExlbmd0aCA9IG1heExlbmd0aCB8fCA3NTtcblxuICBoZWFkID0gJyc7XG4gIHN0YXJ0ID0gdGhpcy5wb3NpdGlvbjtcblxuICB3aGlsZSAoc3RhcnQgPiAwICYmICdcXHgwMFxcclxcblxceDg1XFx1MjAyOFxcdTIwMjknLmluZGV4T2YodGhpcy5idWZmZXIuY2hhckF0KHN0YXJ0IC0gMSkpID09PSAtMSkge1xuICAgIHN0YXJ0IC09IDE7XG4gICAgaWYgKHRoaXMucG9zaXRpb24gLSBzdGFydCA+IChtYXhMZW5ndGggLyAyIC0gMSkpIHtcbiAgICAgIGhlYWQgPSAnIC4uLiAnO1xuICAgICAgc3RhcnQgKz0gNTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHRhaWwgPSAnJztcbiAgZW5kID0gdGhpcy5wb3NpdGlvbjtcblxuICB3aGlsZSAoZW5kIDwgdGhpcy5idWZmZXIubGVuZ3RoICYmICdcXHgwMFxcclxcblxceDg1XFx1MjAyOFxcdTIwMjknLmluZGV4T2YodGhpcy5idWZmZXIuY2hhckF0KGVuZCkpID09PSAtMSkge1xuICAgIGVuZCArPSAxO1xuICAgIGlmIChlbmQgLSB0aGlzLnBvc2l0aW9uID4gKG1heExlbmd0aCAvIDIgLSAxKSkge1xuICAgICAgdGFpbCA9ICcgLi4uICc7XG4gICAgICBlbmQgLT0gNTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNuaXBwZXQgPSB0aGlzLmJ1ZmZlci5zbGljZShzdGFydCwgZW5kKTtcblxuICByZXR1cm4gY29tbW9uLnJlcGVhdCgnICcsIGluZGVudCkgKyBoZWFkICsgc25pcHBldCArIHRhaWwgKyAnXFxuJyArXG4gICAgICAgICBjb21tb24ucmVwZWF0KCcgJywgaW5kZW50ICsgdGhpcy5wb3NpdGlvbiAtIHN0YXJ0ICsgaGVhZC5sZW5ndGgpICsgJ14nO1xufTtcblxuXG5NYXJrLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKGNvbXBhY3QpIHtcbiAgdmFyIHNuaXBwZXQsIHdoZXJlID0gJyc7XG5cbiAgaWYgKHRoaXMubmFtZSkge1xuICAgIHdoZXJlICs9ICdpbiBcIicgKyB0aGlzLm5hbWUgKyAnXCIgJztcbiAgfVxuXG4gIHdoZXJlICs9ICdhdCBsaW5lICcgKyAodGhpcy5saW5lICsgMSkgKyAnLCBjb2x1bW4gJyArICh0aGlzLmNvbHVtbiArIDEpO1xuXG4gIGlmICghY29tcGFjdCkge1xuICAgIHNuaXBwZXQgPSB0aGlzLmdldFNuaXBwZXQoKTtcblxuICAgIGlmIChzbmlwcGV0KSB7XG4gICAgICB3aGVyZSArPSAnOlxcbicgKyBzbmlwcGV0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB3aGVyZTtcbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBNYXJrO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIFlBTUxFeGNlcHRpb24gPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xuXG52YXIgVFlQRV9DT05TVFJVQ1RPUl9PUFRJT05TID0gW1xuICAna2luZCcsXG4gICdyZXNvbHZlJyxcbiAgJ2NvbnN0cnVjdCcsXG4gICdpbnN0YW5jZU9mJyxcbiAgJ3ByZWRpY2F0ZScsXG4gICdyZXByZXNlbnQnLFxuICAnZGVmYXVsdFN0eWxlJyxcbiAgJ3N0eWxlQWxpYXNlcydcbl07XG5cbnZhciBZQU1MX05PREVfS0lORFMgPSBbXG4gICdzY2FsYXInLFxuICAnc2VxdWVuY2UnLFxuICAnbWFwcGluZydcbl07XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdHlsZUFsaWFzZXMobWFwKSB7XG4gIHZhciByZXN1bHQgPSB7fTtcblxuICBpZiAobWFwICE9PSBudWxsKSB7XG4gICAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgbWFwW3N0eWxlXS5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgICAgICByZXN1bHRbU3RyaW5nKGFsaWFzKV0gPSBzdHlsZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gVHlwZSh0YWcsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmIChUWVBFX0NPTlNUUlVDVE9SX09QVElPTlMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdVbmtub3duIG9wdGlvbiBcIicgKyBuYW1lICsgJ1wiIGlzIG1ldCBpbiBkZWZpbml0aW9uIG9mIFwiJyArIHRhZyArICdcIiBZQU1MIHR5cGUuJyk7XG4gICAgfVxuICB9KTtcblxuICAvLyBUT0RPOiBBZGQgdGFnIGZvcm1hdCBjaGVjay5cbiAgdGhpcy50YWcgICAgICAgICAgPSB0YWc7XG4gIHRoaXMua2luZCAgICAgICAgID0gb3B0aW9uc1sna2luZCddICAgICAgICAgfHwgbnVsbDtcbiAgdGhpcy5yZXNvbHZlICAgICAgPSBvcHRpb25zWydyZXNvbHZlJ10gICAgICB8fCBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9O1xuICB0aGlzLmNvbnN0cnVjdCAgICA9IG9wdGlvbnNbJ2NvbnN0cnVjdCddICAgIHx8IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhOyB9O1xuICB0aGlzLmluc3RhbmNlT2YgICA9IG9wdGlvbnNbJ2luc3RhbmNlT2YnXSAgIHx8IG51bGw7XG4gIHRoaXMucHJlZGljYXRlICAgID0gb3B0aW9uc1sncHJlZGljYXRlJ10gICAgfHwgbnVsbDtcbiAgdGhpcy5yZXByZXNlbnQgICAgPSBvcHRpb25zWydyZXByZXNlbnQnXSAgICB8fCBudWxsO1xuICB0aGlzLmRlZmF1bHRTdHlsZSA9IG9wdGlvbnNbJ2RlZmF1bHRTdHlsZSddIHx8IG51bGw7XG4gIHRoaXMuc3R5bGVBbGlhc2VzID0gY29tcGlsZVN0eWxlQWxpYXNlcyhvcHRpb25zWydzdHlsZUFsaWFzZXMnXSB8fCBudWxsKTtcblxuICBpZiAoWUFNTF9OT0RFX0tJTkRTLmluZGV4T2YodGhpcy5raW5kKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignVW5rbm93biBraW5kIFwiJyArIHRoaXMua2luZCArICdcIiBpcyBzcGVjaWZpZWQgZm9yIFwiJyArIHRhZyArICdcIiBZQU1MIHR5cGUuJyk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUeXBlO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuLyplc2xpbnQtZGlzYWJsZSBtYXgtbGVuKi9cblxudmFyIGNvbW1vbiAgICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbicpO1xudmFyIFlBTUxFeGNlcHRpb24gPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xudmFyIFR5cGUgICAgICAgICAgPSByZXF1aXJlKCcuL3R5cGUnKTtcblxuXG5mdW5jdGlvbiBjb21waWxlTGlzdChzY2hlbWEsIG5hbWUsIHJlc3VsdCkge1xuICB2YXIgZXhjbHVkZSA9IFtdO1xuXG4gIHNjaGVtYS5pbmNsdWRlLmZvckVhY2goZnVuY3Rpb24gKGluY2x1ZGVkU2NoZW1hKSB7XG4gICAgcmVzdWx0ID0gY29tcGlsZUxpc3QoaW5jbHVkZWRTY2hlbWEsIG5hbWUsIHJlc3VsdCk7XG4gIH0pO1xuXG4gIHNjaGVtYVtuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uIChjdXJyZW50VHlwZSkge1xuICAgIHJlc3VsdC5mb3JFYWNoKGZ1bmN0aW9uIChwcmV2aW91c1R5cGUsIHByZXZpb3VzSW5kZXgpIHtcbiAgICAgIGlmIChwcmV2aW91c1R5cGUudGFnID09PSBjdXJyZW50VHlwZS50YWcgJiYgcHJldmlvdXNUeXBlLmtpbmQgPT09IGN1cnJlbnRUeXBlLmtpbmQpIHtcbiAgICAgICAgZXhjbHVkZS5wdXNoKHByZXZpb3VzSW5kZXgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVzdWx0LnB1c2goY3VycmVudFR5cGUpO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0LmZpbHRlcihmdW5jdGlvbiAodHlwZSwgaW5kZXgpIHtcbiAgICByZXR1cm4gZXhjbHVkZS5pbmRleE9mKGluZGV4KSA9PT0gLTE7XG4gIH0pO1xufVxuXG5cbmZ1bmN0aW9uIGNvbXBpbGVNYXAoLyogbGlzdHMuLi4gKi8pIHtcbiAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgc2NhbGFyOiB7fSxcbiAgICAgICAgc2VxdWVuY2U6IHt9LFxuICAgICAgICBtYXBwaW5nOiB7fSxcbiAgICAgICAgZmFsbGJhY2s6IHt9XG4gICAgICB9LCBpbmRleCwgbGVuZ3RoO1xuXG4gIGZ1bmN0aW9uIGNvbGxlY3RUeXBlKHR5cGUpIHtcbiAgICByZXN1bHRbdHlwZS5raW5kXVt0eXBlLnRhZ10gPSByZXN1bHRbJ2ZhbGxiYWNrJ11bdHlwZS50YWddID0gdHlwZTtcbiAgfVxuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGFyZ3VtZW50c1tpbmRleF0uZm9yRWFjaChjb2xsZWN0VHlwZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5mdW5jdGlvbiBTY2hlbWEoZGVmaW5pdGlvbikge1xuICB0aGlzLmluY2x1ZGUgID0gZGVmaW5pdGlvbi5pbmNsdWRlICB8fCBbXTtcbiAgdGhpcy5pbXBsaWNpdCA9IGRlZmluaXRpb24uaW1wbGljaXQgfHwgW107XG4gIHRoaXMuZXhwbGljaXQgPSBkZWZpbml0aW9uLmV4cGxpY2l0IHx8IFtdO1xuXG4gIHRoaXMuaW1wbGljaXQuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICAgIGlmICh0eXBlLmxvYWRLaW5kICYmIHR5cGUubG9hZEtpbmQgIT09ICdzY2FsYXInKSB7XG4gICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignVGhlcmUgaXMgYSBub24tc2NhbGFyIHR5cGUgaW4gdGhlIGltcGxpY2l0IGxpc3Qgb2YgYSBzY2hlbWEuIEltcGxpY2l0IHJlc29sdmluZyBvZiBzdWNoIHR5cGVzIGlzIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgfVxuICB9KTtcblxuICB0aGlzLmNvbXBpbGVkSW1wbGljaXQgPSBjb21waWxlTGlzdCh0aGlzLCAnaW1wbGljaXQnLCBbXSk7XG4gIHRoaXMuY29tcGlsZWRFeHBsaWNpdCA9IGNvbXBpbGVMaXN0KHRoaXMsICdleHBsaWNpdCcsIFtdKTtcbiAgdGhpcy5jb21waWxlZFR5cGVNYXAgID0gY29tcGlsZU1hcCh0aGlzLmNvbXBpbGVkSW1wbGljaXQsIHRoaXMuY29tcGlsZWRFeHBsaWNpdCk7XG59XG5cblxuU2NoZW1hLkRFRkFVTFQgPSBudWxsO1xuXG5cblNjaGVtYS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGVTY2hlbWEoKSB7XG4gIHZhciBzY2hlbWFzLCB0eXBlcztcblxuICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICBjYXNlIDE6XG4gICAgICBzY2hlbWFzID0gU2NoZW1hLkRFRkFVTFQ7XG4gICAgICB0eXBlcyA9IGFyZ3VtZW50c1swXTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAyOlxuICAgICAgc2NoZW1hcyA9IGFyZ3VtZW50c1swXTtcbiAgICAgIHR5cGVzID0gYXJndW1lbnRzWzFdO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ1dyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIFNjaGVtYS5jcmVhdGUgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIHNjaGVtYXMgPSBjb21tb24udG9BcnJheShzY2hlbWFzKTtcbiAgdHlwZXMgPSBjb21tb24udG9BcnJheSh0eXBlcyk7XG5cbiAgaWYgKCFzY2hlbWFzLmV2ZXJ5KGZ1bmN0aW9uIChzY2hlbWEpIHsgcmV0dXJuIHNjaGVtYSBpbnN0YW5jZW9mIFNjaGVtYTsgfSkpIHtcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignU3BlY2lmaWVkIGxpc3Qgb2Ygc3VwZXIgc2NoZW1hcyAob3IgYSBzaW5nbGUgU2NoZW1hIG9iamVjdCkgY29udGFpbnMgYSBub24tU2NoZW1hIG9iamVjdC4nKTtcbiAgfVxuXG4gIGlmICghdHlwZXMuZXZlcnkoZnVuY3Rpb24gKHR5cGUpIHsgcmV0dXJuIHR5cGUgaW5zdGFuY2VvZiBUeXBlOyB9KSkge1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdTcGVjaWZpZWQgbGlzdCBvZiBZQU1MIHR5cGVzIChvciBhIHNpbmdsZSBUeXBlIG9iamVjdCkgY29udGFpbnMgYSBub24tVHlwZSBvYmplY3QuJyk7XG4gIH1cblxuICByZXR1cm4gbmV3IFNjaGVtYSh7XG4gICAgaW5jbHVkZTogc2NoZW1hcyxcbiAgICBleHBsaWNpdDogdHlwZXNcbiAgfSk7XG59O1xuXG5cbm1vZHVsZS5leHBvcnRzID0gU2NoZW1hO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnN0cicsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogJyc7IH1cbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnNlcScsIHtcbiAga2luZDogJ3NlcXVlbmNlJyxcbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiBbXTsgfVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6bWFwJywge1xuICBraW5kOiAnbWFwcGluZycsXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDoge307IH1cbn0pO1xuIiwgIi8vIFN0YW5kYXJkIFlBTUwncyBGYWlsc2FmZSBzY2hlbWEuXG4vLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI4MDIzNDZcblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGV4cGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9zdHInKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL3NlcScpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvbWFwJylcbiAgXVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxOdWxsKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aDtcblxuICByZXR1cm4gKG1heCA9PT0gMSAmJiBkYXRhID09PSAnficpIHx8XG4gICAgICAgICAobWF4ID09PSA0ICYmIChkYXRhID09PSAnbnVsbCcgfHwgZGF0YSA9PT0gJ051bGwnIHx8IGRhdGEgPT09ICdOVUxMJykpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sTnVsbCgpIHtcbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbChvYmplY3QpIHtcbiAgcmV0dXJuIG9iamVjdCA9PT0gbnVsbDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgVHlwZSgndGFnOnlhbWwub3JnLDIwMDI6bnVsbCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sTnVsbCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sTnVsbCxcbiAgcHJlZGljYXRlOiBpc051bGwsXG4gIHJlcHJlc2VudDoge1xuICAgIGNhbm9uaWNhbDogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ34nOyAgICB9LFxuICAgIGxvd2VyY2FzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ251bGwnOyB9LFxuICAgIHVwcGVyY2FzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ05VTEwnOyB9LFxuICAgIGNhbWVsY2FzZTogZnVuY3Rpb24gKCkgeyByZXR1cm4gJ051bGwnOyB9XG4gIH0sXG4gIGRlZmF1bHRTdHlsZTogJ2xvd2VyY2FzZSdcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sQm9vbGVhbihkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoO1xuXG4gIHJldHVybiAobWF4ID09PSA0ICYmIChkYXRhID09PSAndHJ1ZScgfHwgZGF0YSA9PT0gJ1RydWUnIHx8IGRhdGEgPT09ICdUUlVFJykpIHx8XG4gICAgICAgICAobWF4ID09PSA1ICYmIChkYXRhID09PSAnZmFsc2UnIHx8IGRhdGEgPT09ICdGYWxzZScgfHwgZGF0YSA9PT0gJ0ZBTFNFJykpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sQm9vbGVhbihkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSAndHJ1ZScgfHxcbiAgICAgICAgIGRhdGEgPT09ICdUcnVlJyB8fFxuICAgICAgICAgZGF0YSA9PT0gJ1RSVUUnO1xufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4ob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgQm9vbGVhbl0nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpib29sJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxCb29sZWFuLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxCb29sZWFuLFxuICBwcmVkaWNhdGU6IGlzQm9vbGVhbixcbiAgcmVwcmVzZW50OiB7XG4gICAgbG93ZXJjYXNlOiBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBvYmplY3QgPyAndHJ1ZScgOiAnZmFsc2UnOyB9LFxuICAgIHVwcGVyY2FzZTogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gb2JqZWN0ID8gJ1RSVUUnIDogJ0ZBTFNFJzsgfSxcbiAgICBjYW1lbGNhc2U6IGZ1bmN0aW9uIChvYmplY3QpIHsgcmV0dXJuIG9iamVjdCA/ICdUcnVlJyA6ICdGYWxzZSc7IH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgVHlwZSAgID0gcmVxdWlyZSgnLi4vdHlwZScpO1xuXG5mdW5jdGlvbiBpc0hleENvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpIHx8XG4gICAgICAgICAoKDB4NDEvKiBBICovIDw9IGMpICYmIChjIDw9IDB4NDYvKiBGICovKSkgfHxcbiAgICAgICAgICgoMHg2MS8qIGEgKi8gPD0gYykgJiYgKGMgPD0gMHg2Ni8qIGYgKi8pKTtcbn1cblxuZnVuY3Rpb24gaXNPY3RDb2RlKGMpIHtcbiAgcmV0dXJuICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzNy8qIDcgKi8pKTtcbn1cblxuZnVuY3Rpb24gaXNEZWNDb2RlKGMpIHtcbiAgcmV0dXJuICgoMHgzMC8qIDAgKi8gPD0gYykgJiYgKGMgPD0gMHgzOS8qIDkgKi8pKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxJbnRlZ2VyKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGgsXG4gICAgICBpbmRleCA9IDAsXG4gICAgICBoYXNEaWdpdHMgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIGlmICghbWF4KSByZXR1cm4gZmFsc2U7XG5cbiAgY2ggPSBkYXRhW2luZGV4XTtcblxuICAvLyBzaWduXG4gIGlmIChjaCA9PT0gJy0nIHx8IGNoID09PSAnKycpIHtcbiAgICBjaCA9IGRhdGFbKytpbmRleF07XG4gIH1cblxuICBpZiAoY2ggPT09ICcwJykge1xuICAgIC8vIDBcbiAgICBpZiAoaW5kZXggKyAxID09PSBtYXgpIHJldHVybiB0cnVlO1xuICAgIGNoID0gZGF0YVsrK2luZGV4XTtcblxuICAgIC8vIGJhc2UgMiwgYmFzZSA4LCBiYXNlIDE2XG5cbiAgICBpZiAoY2ggPT09ICdiJykge1xuICAgICAgLy8gYmFzZSAyXG4gICAgICBpbmRleCsrO1xuXG4gICAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoY2ggIT09ICcwJyAmJiBjaCAhPT0gJzEnKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzRGlnaXRzICYmIGNoICE9PSAnXyc7XG4gICAgfVxuXG5cbiAgICBpZiAoY2ggPT09ICd4Jykge1xuICAgICAgLy8gYmFzZSAxNlxuICAgICAgaW5kZXgrKztcblxuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFpc0hleENvZGUoZGF0YS5jaGFyQ29kZUF0KGluZGV4KSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09ICdfJztcbiAgICB9XG5cbiAgICAvLyBiYXNlIDhcbiAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgICBpZiAoIWlzT2N0Q29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gJ18nO1xuICB9XG5cbiAgLy8gYmFzZSAxMCAoZXhjZXB0IDApIG9yIGJhc2UgNjBcblxuICAvLyB2YWx1ZSBzaG91bGQgbm90IHN0YXJ0IHdpdGggYF9gO1xuICBpZiAoY2ggPT09ICdfJykgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgIGlmIChjaCA9PT0gJzonKSBicmVhaztcbiAgICBpZiAoIWlzRGVjQ29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICB9XG5cbiAgLy8gU2hvdWxkIGhhdmUgZGlnaXRzIGFuZCBzaG91bGQgbm90IGVuZCB3aXRoIGBfYFxuICBpZiAoIWhhc0RpZ2l0cyB8fCBjaCA9PT0gJ18nKSByZXR1cm4gZmFsc2U7XG5cbiAgLy8gaWYgIWJhc2U2MCAtIGRvbmU7XG4gIGlmIChjaCAhPT0gJzonKSByZXR1cm4gdHJ1ZTtcblxuICAvLyBiYXNlNjAgYWxtb3N0IG5vdCB1c2VkLCBubyBuZWVkcyB0byBvcHRpbWl6ZVxuICByZXR1cm4gL14oOlswLTVdP1swLTldKSskLy50ZXN0KGRhdGEuc2xpY2UoaW5kZXgpKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEludGVnZXIoZGF0YSkge1xuICB2YXIgdmFsdWUgPSBkYXRhLCBzaWduID0gMSwgY2gsIGJhc2UsIGRpZ2l0cyA9IFtdO1xuXG4gIGlmICh2YWx1ZS5pbmRleE9mKCdfJykgIT09IC0xKSB7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9fL2csICcnKTtcbiAgfVxuXG4gIGNoID0gdmFsdWVbMF07XG5cbiAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykge1xuICAgIGlmIChjaCA9PT0gJy0nKSBzaWduID0gLTE7XG4gICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTtcbiAgICBjaCA9IHZhbHVlWzBdO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnMCcpIHJldHVybiAwO1xuXG4gIGlmIChjaCA9PT0gJzAnKSB7XG4gICAgaWYgKHZhbHVlWzFdID09PSAnYicpIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIDIpO1xuICAgIGlmICh2YWx1ZVsxXSA9PT0gJ3gnKSByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLCAxNik7XG4gICAgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZSwgOCk7XG4gIH1cblxuICBpZiAodmFsdWUuaW5kZXhPZignOicpICE9PSAtMSkge1xuICAgIHZhbHVlLnNwbGl0KCc6JykuZm9yRWFjaChmdW5jdGlvbiAodikge1xuICAgICAgZGlnaXRzLnVuc2hpZnQocGFyc2VJbnQodiwgMTApKTtcbiAgICB9KTtcblxuICAgIHZhbHVlID0gMDtcbiAgICBiYXNlID0gMTtcblxuICAgIGRpZ2l0cy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgICB2YWx1ZSArPSAoZCAqIGJhc2UpO1xuICAgICAgYmFzZSAqPSA2MDtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduICogdmFsdWU7XG5cbiAgfVxuXG4gIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUsIDEwKTtcbn1cblxuZnVuY3Rpb24gaXNJbnRlZ2VyKG9iamVjdCkge1xuICByZXR1cm4gKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpKSA9PT0gJ1tvYmplY3QgTnVtYmVyXScgJiZcbiAgICAgICAgIChvYmplY3QgJSAxID09PSAwICYmICFjb21tb24uaXNOZWdhdGl2ZVplcm8ob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sSW50ZWdlcixcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sSW50ZWdlcixcbiAgcHJlZGljYXRlOiBpc0ludGVnZXIsXG4gIHJlcHJlc2VudDoge1xuICAgIGJpbmFyeTogICAgICBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogPj0gMCA/ICcwYicgKyBvYmoudG9TdHJpbmcoMikgOiAnLTBiJyArIG9iai50b1N0cmluZygyKS5zbGljZSgxKTsgfSxcbiAgICBvY3RhbDogICAgICAgZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqID49IDAgPyAnMCcgICsgb2JqLnRvU3RyaW5nKDgpIDogJy0wJyAgKyBvYmoudG9TdHJpbmcoOCkuc2xpY2UoMSk7IH0sXG4gICAgZGVjaW1hbDogICAgIGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iai50b1N0cmluZygxMCk7IH0sXG4gICAgLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuICAgIGhleGFkZWNpbWFsOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogPj0gMCA/ICcweCcgKyBvYmoudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgOiAgJy0weCcgKyBvYmoudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSk7IH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnZGVjaW1hbCcsXG4gIHN0eWxlQWxpYXNlczoge1xuICAgIGJpbmFyeTogICAgICBbIDIsICAnYmluJyBdLFxuICAgIG9jdGFsOiAgICAgICBbIDgsICAnb2N0JyBdLFxuICAgIGRlY2ltYWw6ICAgICBbIDEwLCAnZGVjJyBdLFxuICAgIGhleGFkZWNpbWFsOiBbIDE2LCAnaGV4JyBdXG4gIH1cbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIFR5cGUgICA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIFlBTUxfRkxPQVRfUEFUVEVSTiA9IG5ldyBSZWdFeHAoXG4gIC8vIDIuNWU0LCAyLjUgYW5kIGludGVnZXJzXG4gICdeKD86Wy0rXT8oPzowfFsxLTldWzAtOV9dKikoPzpcXFxcLlswLTlfXSopPyg/OltlRV1bLStdP1swLTldKyk/JyArXG4gIC8vIC4yZTQsIC4yXG4gIC8vIHNwZWNpYWwgY2FzZSwgc2VlbXMgbm90IGZyb20gc3BlY1xuICAnfFxcXFwuWzAtOV9dKyg/OltlRV1bLStdP1swLTldKyk/JyArXG4gIC8vIDIwOjU5XG4gICd8Wy0rXT9bMC05XVswLTlfXSooPzo6WzAtNV0/WzAtOV0pK1xcXFwuWzAtOV9dKicgK1xuICAvLyAuaW5mXG4gICd8Wy0rXT9cXFxcLig/OmluZnxJbmZ8SU5GKScgK1xuICAvLyAubmFuXG4gICd8XFxcXC4oPzpuYW58TmFOfE5BTikpJCcpO1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEZsb2F0KGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICBpZiAoIVlBTUxfRkxPQVRfUEFUVEVSTi50ZXN0KGRhdGEpIHx8XG4gICAgICAvLyBRdWljayBoYWNrIHRvIG5vdCBhbGxvdyBpbnRlZ2VycyBlbmQgd2l0aCBgX2BcbiAgICAgIC8vIFByb2JhYmx5IHNob3VsZCB1cGRhdGUgcmVnZXhwICYgY2hlY2sgc3BlZWRcbiAgICAgIGRhdGFbZGF0YS5sZW5ndGggLSAxXSA9PT0gJ18nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxGbG9hdChkYXRhKSB7XG4gIHZhciB2YWx1ZSwgc2lnbiwgYmFzZSwgZGlnaXRzO1xuXG4gIHZhbHVlICA9IGRhdGEucmVwbGFjZSgvXy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgc2lnbiAgID0gdmFsdWVbMF0gPT09ICctJyA/IC0xIDogMTtcbiAgZGlnaXRzID0gW107XG5cbiAgaWYgKCcrLScuaW5kZXhPZih2YWx1ZVswXSkgPj0gMCkge1xuICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSk7XG4gIH1cblxuICBpZiAodmFsdWUgPT09ICcuaW5mJykge1xuICAgIHJldHVybiAoc2lnbiA9PT0gMSkgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgOiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG5cbiAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJy5uYW4nKSB7XG4gICAgcmV0dXJuIE5hTjtcblxuICB9IGVsc2UgaWYgKHZhbHVlLmluZGV4T2YoJzonKSA+PSAwKSB7XG4gICAgdmFsdWUuc3BsaXQoJzonKS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG4gICAgICBkaWdpdHMudW5zaGlmdChwYXJzZUZsb2F0KHYsIDEwKSk7XG4gICAgfSk7XG5cbiAgICB2YWx1ZSA9IDAuMDtcbiAgICBiYXNlID0gMTtcblxuICAgIGRpZ2l0cy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgICB2YWx1ZSArPSBkICogYmFzZTtcbiAgICAgIGJhc2UgKj0gNjA7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbiAqIHZhbHVlO1xuXG4gIH1cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUZsb2F0KHZhbHVlLCAxMCk7XG59XG5cblxudmFyIFNDSUVOVElGSUNfV0lUSE9VVF9ET1QgPSAvXlstK10/WzAtOV0rZS87XG5cbmZ1bmN0aW9uIHJlcHJlc2VudFlhbWxGbG9hdChvYmplY3QsIHN0eWxlKSB7XG4gIHZhciByZXM7XG5cbiAgaWYgKGlzTmFOKG9iamVjdCkpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy5uYW4nO1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuICcuTkFOJztcbiAgICAgIGNhc2UgJ2NhbWVsY2FzZSc6IHJldHVybiAnLk5hTic7XG4gICAgfVxuICB9IGVsc2UgaWYgKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA9PT0gb2JqZWN0KSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICcuaW5mJztcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLklORic7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy5JbmYnO1xuICAgIH1cbiAgfSBlbHNlIGlmIChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPT09IG9iamVjdCkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLS5pbmYnO1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuICctLklORic7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy0uSW5mJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpIHtcbiAgICByZXR1cm4gJy0wLjAnO1xuICB9XG5cbiAgcmVzID0gb2JqZWN0LnRvU3RyaW5nKDEwKTtcblxuICAvLyBKUyBzdHJpbmdpZmllciBjYW4gYnVpbGQgc2NpZW50aWZpYyBmb3JtYXQgd2l0aG91dCBkb3RzOiA1ZS0xMDAsXG4gIC8vIHdoaWxlIFlBTUwgcmVxdXJlcyBkb3Q6IDUuZS0xMDAuIEZpeCBpdCB3aXRoIHNpbXBsZSBoYWNrXG5cbiAgcmV0dXJuIFNDSUVOVElGSUNfV0lUSE9VVF9ET1QudGVzdChyZXMpID8gcmVzLnJlcGxhY2UoJ2UnLCAnLmUnKSA6IHJlcztcbn1cblxuZnVuY3Rpb24gaXNGbG9hdChvYmplY3QpIHtcbiAgcmV0dXJuIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXScpICYmXG4gICAgICAgICAob2JqZWN0ICUgMSAhPT0gMCB8fCBjb21tb24uaXNOZWdhdGl2ZVplcm8ob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmZsb2F0Jywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxGbG9hdCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sRmxvYXQsXG4gIHByZWRpY2F0ZTogaXNGbG9hdCxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sRmxvYXQsXG4gIGRlZmF1bHRTdHlsZTogJ2xvd2VyY2FzZSdcbn0pO1xuIiwgIi8vIFN0YW5kYXJkIFlBTUwncyBKU09OIHNjaGVtYS5cbi8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwMzIzMVxuLy9cbi8vIE5PVEU6IEpTLVlBTUwgZG9lcyBub3Qgc3VwcG9ydCBzY2hlbWEtc3BlY2lmaWMgdGFnIHJlc29sdXRpb24gcmVzdHJpY3Rpb25zLlxuLy8gU28sIHRoaXMgc2NoZW1hIGlzIG5vdCBzdWNoIHN0cmljdCBhcyBkZWZpbmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uXG4vLyBJdCBhbGxvd3MgbnVtYmVycyBpbiBiaW5hcnkgbm90YWlvbiwgdXNlIGBOdWxsYCBhbmQgYE5VTExgIGFzIGBudWxsYCwgZXRjLlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgaW5jbHVkZTogW1xuICAgIHJlcXVpcmUoJy4vZmFpbHNhZmUnKVxuICBdLFxuICBpbXBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvbnVsbCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvYm9vbCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvaW50JyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9mbG9hdCcpXG4gIF1cbn0pO1xuIiwgIi8vIFN0YW5kYXJkIFlBTUwncyBDb3JlIHNjaGVtYS5cbi8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjgwNDkyM1xuLy9cbi8vIE5PVEU6IEpTLVlBTUwgZG9lcyBub3Qgc3VwcG9ydCBzY2hlbWEtc3BlY2lmaWMgdGFnIHJlc29sdXRpb24gcmVzdHJpY3Rpb25zLlxuLy8gU28sIENvcmUgc2NoZW1hIGhhcyBubyBkaXN0aW5jdGlvbnMgZnJvbSBKU09OIHNjaGVtYSBpcyBKUy1ZQU1MLlxuXG5cbid1c2Ugc3RyaWN0JztcblxuXG52YXIgU2NoZW1hID0gcmVxdWlyZSgnLi4vc2NoZW1hJyk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgU2NoZW1hKHtcbiAgaW5jbHVkZTogW1xuICAgIHJlcXVpcmUoJy4vanNvbicpXG4gIF1cbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBZQU1MX0RBVEVfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgJ14oWzAtOV1bMC05XVswLTldWzAtOV0pJyAgICAgICAgICArIC8vIFsxXSB5ZWFyXG4gICctKFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbMl0gbW9udGhcbiAgJy0oWzAtOV1bMC05XSkkJyk7ICAgICAgICAgICAgICAgICAgIC8vIFszXSBkYXlcblxudmFyIFlBTUxfVElNRVNUQU1QX1JFR0VYUCA9IG5ldyBSZWdFeHAoXG4gICdeKFswLTldWzAtOV1bMC05XVswLTldKScgICAgICAgICAgKyAvLyBbMV0geWVhclxuICAnLShbMC05XVswLTldPyknICAgICAgICAgICAgICAgICAgICsgLy8gWzJdIG1vbnRoXG4gICctKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgKyAvLyBbM10gZGF5XG4gICcoPzpbVHRdfFsgXFxcXHRdKyknICAgICAgICAgICAgICAgICArIC8vIC4uLlxuICAnKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgICsgLy8gWzRdIGhvdXJcbiAgJzooWzAtOV1bMC05XSknICAgICAgICAgICAgICAgICAgICArIC8vIFs1XSBtaW51dGVcbiAgJzooWzAtOV1bMC05XSknICAgICAgICAgICAgICAgICAgICArIC8vIFs2XSBzZWNvbmRcbiAgJyg/OlxcXFwuKFswLTldKikpPycgICAgICAgICAgICAgICAgICsgLy8gWzddIGZyYWN0aW9uXG4gICcoPzpbIFxcXFx0XSooWnwoWy0rXSkoWzAtOV1bMC05XT8pJyArIC8vIFs4XSB0eiBbOV0gdHpfc2lnbiBbMTBdIHR6X2hvdXJcbiAgJyg/OjooWzAtOV1bMC05XSkpPykpPyQnKTsgICAgICAgICAgIC8vIFsxMV0gdHpfbWludXRlXG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sVGltZXN0YW1wKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgaWYgKFlBTUxfREFURV9SRUdFWFAuZXhlYyhkYXRhKSAhPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gIGlmIChZQU1MX1RJTUVTVEFNUF9SRUdFWFAuZXhlYyhkYXRhKSAhPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbFRpbWVzdGFtcChkYXRhKSB7XG4gIHZhciBtYXRjaCwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZyYWN0aW9uID0gMCxcbiAgICAgIGRlbHRhID0gbnVsbCwgdHpfaG91ciwgdHpfbWludXRlLCBkYXRlO1xuXG4gIG1hdGNoID0gWUFNTF9EQVRFX1JFR0VYUC5leGVjKGRhdGEpO1xuICBpZiAobWF0Y2ggPT09IG51bGwpIG1hdGNoID0gWUFNTF9USU1FU1RBTVBfUkVHRVhQLmV4ZWMoZGF0YSk7XG5cbiAgaWYgKG1hdGNoID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ0RhdGUgcmVzb2x2ZSBlcnJvcicpO1xuXG4gIC8vIG1hdGNoOiBbMV0geWVhciBbMl0gbW9udGggWzNdIGRheVxuXG4gIHllYXIgPSArKG1hdGNoWzFdKTtcbiAgbW9udGggPSArKG1hdGNoWzJdKSAtIDE7IC8vIEpTIG1vbnRoIHN0YXJ0cyB3aXRoIDBcbiAgZGF5ID0gKyhtYXRjaFszXSk7XG5cbiAgaWYgKCFtYXRjaFs0XSkgeyAvLyBubyBob3VyXG4gICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgfVxuXG4gIC8vIG1hdGNoOiBbNF0gaG91ciBbNV0gbWludXRlIFs2XSBzZWNvbmQgWzddIGZyYWN0aW9uXG5cbiAgaG91ciA9ICsobWF0Y2hbNF0pO1xuICBtaW51dGUgPSArKG1hdGNoWzVdKTtcbiAgc2Vjb25kID0gKyhtYXRjaFs2XSk7XG5cbiAgaWYgKG1hdGNoWzddKSB7XG4gICAgZnJhY3Rpb24gPSBtYXRjaFs3XS5zbGljZSgwLCAzKTtcbiAgICB3aGlsZSAoZnJhY3Rpb24ubGVuZ3RoIDwgMykgeyAvLyBtaWxsaS1zZWNvbmRzXG4gICAgICBmcmFjdGlvbiArPSAnMCc7XG4gICAgfVxuICAgIGZyYWN0aW9uID0gK2ZyYWN0aW9uO1xuICB9XG5cbiAgLy8gbWF0Y2g6IFs4XSB0eiBbOV0gdHpfc2lnbiBbMTBdIHR6X2hvdXIgWzExXSB0el9taW51dGVcblxuICBpZiAobWF0Y2hbOV0pIHtcbiAgICB0el9ob3VyID0gKyhtYXRjaFsxMF0pO1xuICAgIHR6X21pbnV0ZSA9ICsobWF0Y2hbMTFdIHx8IDApO1xuICAgIGRlbHRhID0gKHR6X2hvdXIgKiA2MCArIHR6X21pbnV0ZSkgKiA2MDAwMDsgLy8gZGVsdGEgaW4gbWlsaS1zZWNvbmRzXG4gICAgaWYgKG1hdGNoWzldID09PSAnLScpIGRlbHRhID0gLWRlbHRhO1xuICB9XG5cbiAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBmcmFjdGlvbikpO1xuXG4gIGlmIChkZWx0YSkgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpIC0gZGVsdGEpO1xuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRZYW1sVGltZXN0YW1wKG9iamVjdCAvKiwgc3R5bGUqLykge1xuICByZXR1cm4gb2JqZWN0LnRvSVNPU3RyaW5nKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnRpbWVzdGFtcCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sVGltZXN0YW1wLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxUaW1lc3RhbXAsXG4gIGluc3RhbmNlT2Y6IERhdGUsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbFRpbWVzdGFtcFxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxNZXJnZShkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSAnPDwnIHx8IGRhdGEgPT09IG51bGw7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm1lcmdlJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxNZXJnZVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UqL1xuXG52YXIgTm9kZUJ1ZmZlcjtcblxudHJ5IHtcbiAgLy8gQSB0cmljayBmb3IgYnJvd3NlcmlmaWVkIHZlcnNpb24sIHRvIG5vdCBpbmNsdWRlIGBCdWZmZXJgIHNoaW1cbiAgdmFyIF9yZXF1aXJlID0gcmVxdWlyZTtcbiAgTm9kZUJ1ZmZlciA9IF9yZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG59IGNhdGNoIChfXykge31cblxudmFyIFR5cGUgICAgICAgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cblxuLy8gWyA2NCwgNjUsIDY2IF0gLT4gWyBwYWRkaW5nLCBDUiwgTEYgXVxudmFyIEJBU0U2NF9NQVAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cXG5cXHInO1xuXG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sQmluYXJ5KGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcblxuICB2YXIgY29kZSwgaWR4LCBiaXRsZW4gPSAwLCBtYXggPSBkYXRhLmxlbmd0aCwgbWFwID0gQkFTRTY0X01BUDtcblxuICAvLyBDb252ZXJ0IG9uZSBieSBvbmUuXG4gIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGNvZGUgPSBtYXAuaW5kZXhPZihkYXRhLmNoYXJBdChpZHgpKTtcblxuICAgIC8vIFNraXAgQ1IvTEZcbiAgICBpZiAoY29kZSA+IDY0KSBjb250aW51ZTtcblxuICAgIC8vIEZhaWwgb24gaWxsZWdhbCBjaGFyYWN0ZXJzXG4gICAgaWYgKGNvZGUgPCAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICBiaXRsZW4gKz0gNjtcbiAgfVxuXG4gIC8vIElmIHRoZXJlIGFyZSBhbnkgYml0cyBsZWZ0LCBzb3VyY2Ugd2FzIGNvcnJ1cHRlZFxuICByZXR1cm4gKGJpdGxlbiAlIDgpID09PSAwO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sQmluYXJ5KGRhdGEpIHtcbiAgdmFyIGlkeCwgdGFpbGJpdHMsXG4gICAgICBpbnB1dCA9IGRhdGEucmVwbGFjZSgvW1xcclxcbj1dL2csICcnKSwgLy8gcmVtb3ZlIENSL0xGICYgcGFkZGluZyB0byBzaW1wbGlmeSBzY2FuXG4gICAgICBtYXggPSBpbnB1dC5sZW5ndGgsXG4gICAgICBtYXAgPSBCQVNFNjRfTUFQLFxuICAgICAgYml0cyA9IDAsXG4gICAgICByZXN1bHQgPSBbXTtcblxuICAvLyBDb2xsZWN0IGJ5IDYqNCBiaXRzICgzIGJ5dGVzKVxuXG4gIGZvciAoaWR4ID0gMDsgaWR4IDwgbWF4OyBpZHgrKykge1xuICAgIGlmICgoaWR4ICUgNCA9PT0gMCkgJiYgaWR4KSB7XG4gICAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxNikgJiAweEZGKTtcbiAgICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDgpICYgMHhGRik7XG4gICAgICByZXN1bHQucHVzaChiaXRzICYgMHhGRik7XG4gICAgfVxuXG4gICAgYml0cyA9IChiaXRzIDw8IDYpIHwgbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGlkeCkpO1xuICB9XG5cbiAgLy8gRHVtcCB0YWlsXG5cbiAgdGFpbGJpdHMgPSAobWF4ICUgNCkgKiA2O1xuXG4gIGlmICh0YWlsYml0cyA9PT0gMCkge1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDE2KSAmIDB4RkYpO1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDgpICYgMHhGRik7XG4gICAgcmVzdWx0LnB1c2goYml0cyAmIDB4RkYpO1xuICB9IGVsc2UgaWYgKHRhaWxiaXRzID09PSAxOCkge1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDEwKSAmIDB4RkYpO1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDIpICYgMHhGRik7XG4gIH0gZWxzZSBpZiAodGFpbGJpdHMgPT09IDEyKSB7XG4gICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gNCkgJiAweEZGKTtcbiAgfVxuXG4gIC8vIFdyYXAgaW50byBCdWZmZXIgZm9yIE5vZGVKUyBhbmQgbGVhdmUgQXJyYXkgZm9yIGJyb3dzZXJcbiAgaWYgKE5vZGVCdWZmZXIpIHtcbiAgICAvLyBTdXBwb3J0IG5vZGUgNi4rIEJ1ZmZlciBBUEkgd2hlbiBhdmFpbGFibGVcbiAgICByZXR1cm4gTm9kZUJ1ZmZlci5mcm9tID8gTm9kZUJ1ZmZlci5mcm9tKHJlc3VsdCkgOiBuZXcgTm9kZUJ1ZmZlcihyZXN1bHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEJpbmFyeShvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgdmFyIHJlc3VsdCA9ICcnLCBiaXRzID0gMCwgaWR4LCB0YWlsLFxuICAgICAgbWF4ID0gb2JqZWN0Lmxlbmd0aCxcbiAgICAgIG1hcCA9IEJBU0U2NF9NQVA7XG5cbiAgLy8gQ29udmVydCBldmVyeSB0aHJlZSBieXRlcyB0byA0IEFTQ0lJIGNoYXJhY3RlcnMuXG5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgaWYgKChpZHggJSAzID09PSAwKSAmJiBpZHgpIHtcbiAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTgpICYgMHgzRl07XG4gICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEyKSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA2KSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFtiaXRzICYgMHgzRl07XG4gICAgfVxuXG4gICAgYml0cyA9IChiaXRzIDw8IDgpICsgb2JqZWN0W2lkeF07XG4gIH1cblxuICAvLyBEdW1wIHRhaWxcblxuICB0YWlsID0gbWF4ICUgMztcblxuICBpZiAodGFpbCA9PT0gMCkge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTgpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDYpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFtiaXRzICYgMHgzRl07XG4gIH0gZWxzZSBpZiAodGFpbCA9PT0gMikge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTApICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA0KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPDwgMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgfSBlbHNlIGlmICh0YWlsID09PSAxKSB7XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAyKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPDwgNCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGlzQmluYXJ5KG9iamVjdCkge1xuICByZXR1cm4gTm9kZUJ1ZmZlciAmJiBOb2RlQnVmZmVyLmlzQnVmZmVyKG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmJpbmFyeScsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sQmluYXJ5LFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxCaW5hcnksXG4gIHByZWRpY2F0ZTogaXNCaW5hcnksXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbEJpbmFyeVxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX3RvU3RyaW5nICAgICAgID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxPbWFwKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIHZhciBvYmplY3RLZXlzID0gW10sIGluZGV4LCBsZW5ndGgsIHBhaXIsIHBhaXJLZXksIHBhaXJIYXNLZXksXG4gICAgICBvYmplY3QgPSBkYXRhO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuICAgIHBhaXJIYXNLZXkgPSBmYWxzZTtcblxuICAgIGlmIChfdG9TdHJpbmcuY2FsbChwYWlyKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAocGFpcktleSBpbiBwYWlyKSB7XG4gICAgICBpZiAoX2hhc093blByb3BlcnR5LmNhbGwocGFpciwgcGFpcktleSkpIHtcbiAgICAgICAgaWYgKCFwYWlySGFzS2V5KSBwYWlySGFzS2V5ID0gdHJ1ZTtcbiAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwYWlySGFzS2V5KSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAob2JqZWN0S2V5cy5pbmRleE9mKHBhaXJLZXkpID09PSAtMSkgb2JqZWN0S2V5cy5wdXNoKHBhaXJLZXkpO1xuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxPbWFwKGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm9tYXAnLCB7XG4gIGtpbmQ6ICdzZXF1ZW5jZScsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sT21hcCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sT21hcFxufSk7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uL3R5cGUnKTtcblxudmFyIF90b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sUGFpcnMoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XG5cbiAgdmFyIGluZGV4LCBsZW5ndGgsIHBhaXIsIGtleXMsIHJlc3VsdCxcbiAgICAgIG9iamVjdCA9IGRhdGE7XG5cbiAgcmVzdWx0ID0gbmV3IEFycmF5KG9iamVjdC5sZW5ndGgpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuXG4gICAgaWYgKF90b1N0cmluZy5jYWxsKHBhaXIpICE9PSAnW29iamVjdCBPYmplY3RdJykgcmV0dXJuIGZhbHNlO1xuXG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHBhaXIpO1xuXG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXN1bHRbaW5kZXhdID0gWyBrZXlzWzBdLCBwYWlyW2tleXNbMF1dIF07XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbFBhaXJzKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBbXTtcblxuICB2YXIgaW5kZXgsIGxlbmd0aCwgcGFpciwga2V5cywgcmVzdWx0LFxuICAgICAgb2JqZWN0ID0gZGF0YTtcblxuICByZXN1bHQgPSBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG5cbiAgICBrZXlzID0gT2JqZWN0LmtleXMocGFpcik7XG5cbiAgICByZXN1bHRbaW5kZXhdID0gWyBrZXlzWzBdLCBwYWlyW2tleXNbMF1dIF07XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpwYWlycycsIHtcbiAga2luZDogJ3NlcXVlbmNlJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxQYWlycyxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sUGFpcnNcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi90eXBlJyk7XG5cbnZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiByZXNvbHZlWWFtbFNldChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIga2V5LCBvYmplY3QgPSBkYXRhO1xuXG4gIGZvciAoa2V5IGluIG9iamVjdCkge1xuICAgIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHtcbiAgICAgIGlmIChvYmplY3Rba2V5XSAhPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sU2V0KGRhdGEpIHtcbiAgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnNldCcsIHtcbiAga2luZDogJ21hcHBpbmcnLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFNldCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sU2V0XG59KTtcbiIsICIvLyBKUy1ZQU1MJ3MgZGVmYXVsdCBzY2hlbWEgZm9yIGBzYWZlTG9hZGAgZnVuY3Rpb24uXG4vLyBJdCBpcyBub3QgZGVzY3JpYmVkIGluIHRoZSBZQU1MIHNwZWNpZmljYXRpb24uXG4vL1xuLy8gVGhpcyBzY2hlbWEgaXMgYmFzZWQgb24gc3RhbmRhcmQgWUFNTCdzIENvcmUgc2NoZW1hIGFuZCBpbmNsdWRlcyBtb3N0IG9mXG4vLyBleHRyYSB0eXBlcyBkZXNjcmliZWQgYXQgWUFNTCB0YWcgcmVwb3NpdG9yeS4gKGh0dHA6Ly95YW1sLm9yZy90eXBlLylcblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFNjaGVtYSh7XG4gIGluY2x1ZGU6IFtcbiAgICByZXF1aXJlKCcuL2NvcmUnKVxuICBdLFxuICBpbXBsaWNpdDogW1xuICAgIHJlcXVpcmUoJy4uL3R5cGUvdGltZXN0YW1wJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9tZXJnZScpXG4gIF0sXG4gIGV4cGxpY2l0OiBbXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9iaW5hcnknKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL29tYXAnKSxcbiAgICByZXF1aXJlKCcuLi90eXBlL3BhaXJzJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9zZXQnKVxuICBdXG59KTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBUeXBlID0gcmVxdWlyZSgnLi4vLi4vdHlwZScpO1xuXG5mdW5jdGlvbiByZXNvbHZlSmF2YXNjcmlwdFVuZGVmaW5lZCgpIHtcbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdEphdmFzY3JpcHRVbmRlZmluZWQoKSB7XG4gIC8qZXNsaW50LWRpc2FibGUgbm8tdW5kZWZpbmVkKi9cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50SmF2YXNjcmlwdFVuZGVmaW5lZCgpIHtcbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChvYmplY3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICd1bmRlZmluZWQnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpqcy91bmRlZmluZWQnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlSmF2YXNjcmlwdFVuZGVmaW5lZCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RKYXZhc2NyaXB0VW5kZWZpbmVkLFxuICBwcmVkaWNhdGU6IGlzVW5kZWZpbmVkLFxuICByZXByZXNlbnQ6IHJlcHJlc2VudEphdmFzY3JpcHRVbmRlZmluZWRcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIFR5cGUgPSByZXF1aXJlKCcuLi8uLi90eXBlJyk7XG5cbmZ1bmN0aW9uIHJlc29sdmVKYXZhc2NyaXB0UmVnRXhwKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIHJlZ2V4cCA9IGRhdGEsXG4gICAgICB0YWlsICAgPSAvXFwvKFtnaW1dKikkLy5leGVjKGRhdGEpLFxuICAgICAgbW9kaWZpZXJzID0gJyc7XG5cbiAgLy8gaWYgcmVnZXhwIHN0YXJ0cyB3aXRoICcvJyBpdCBjYW4gaGF2ZSBtb2RpZmllcnMgYW5kIG11c3QgYmUgcHJvcGVybHkgY2xvc2VkXG4gIC8vIGAvZm9vL2dpbWAgLSBtb2RpZmllcnMgdGFpbCBjYW4gYmUgbWF4aW11bSAzIGNoYXJzXG4gIGlmIChyZWdleHBbMF0gPT09ICcvJykge1xuICAgIGlmICh0YWlsKSBtb2RpZmllcnMgPSB0YWlsWzFdO1xuXG4gICAgaWYgKG1vZGlmaWVycy5sZW5ndGggPiAzKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gaWYgZXhwcmVzc2lvbiBzdGFydHMgd2l0aCAvLCBpcyBzaG91bGQgYmUgcHJvcGVybHkgdGVybWluYXRlZFxuICAgIGlmIChyZWdleHBbcmVnZXhwLmxlbmd0aCAtIG1vZGlmaWVycy5sZW5ndGggLSAxXSAhPT0gJy8nKSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0SmF2YXNjcmlwdFJlZ0V4cChkYXRhKSB7XG4gIHZhciByZWdleHAgPSBkYXRhLFxuICAgICAgdGFpbCAgID0gL1xcLyhbZ2ltXSopJC8uZXhlYyhkYXRhKSxcbiAgICAgIG1vZGlmaWVycyA9ICcnO1xuXG4gIC8vIGAvZm9vL2dpbWAgLSB0YWlsIGNhbiBiZSBtYXhpbXVtIDQgY2hhcnNcbiAgaWYgKHJlZ2V4cFswXSA9PT0gJy8nKSB7XG4gICAgaWYgKHRhaWwpIG1vZGlmaWVycyA9IHRhaWxbMV07XG4gICAgcmVnZXhwID0gcmVnZXhwLnNsaWNlKDEsIHJlZ2V4cC5sZW5ndGggLSBtb2RpZmllcnMubGVuZ3RoIC0gMSk7XG4gIH1cblxuICByZXR1cm4gbmV3IFJlZ0V4cChyZWdleHAsIG1vZGlmaWVycyk7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudEphdmFzY3JpcHRSZWdFeHAob2JqZWN0IC8qLCBzdHlsZSovKSB7XG4gIHZhciByZXN1bHQgPSAnLycgKyBvYmplY3Quc291cmNlICsgJy8nO1xuXG4gIGlmIChvYmplY3QuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAob2JqZWN0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKG9iamVjdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGlzUmVnRXhwKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldyBUeXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpqcy9yZWdleHAnLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICByZXNvbHZlOiByZXNvbHZlSmF2YXNjcmlwdFJlZ0V4cCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RKYXZhc2NyaXB0UmVnRXhwLFxuICBwcmVkaWNhdGU6IGlzUmVnRXhwLFxuICByZXByZXNlbnQ6IHJlcHJlc2VudEphdmFzY3JpcHRSZWdFeHBcbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIGVzcHJpbWE7XG5cbi8vIEJyb3dzZXJpZmllZCB2ZXJzaW9uIGRvZXMgbm90IGhhdmUgZXNwcmltYVxuLy9cbi8vIDEuIEZvciBub2RlLmpzIGp1c3QgcmVxdWlyZSBtb2R1bGUgYXMgZGVwc1xuLy8gMi4gRm9yIGJyb3dzZXIgdHJ5IHRvIHJlcXVpcmUgbXVkdWxlIHZpYSBleHRlcm5hbCBBTUQgc3lzdGVtLlxuLy8gICAgSWYgbm90IGZvdW5kIC0gdHJ5IHRvIGZhbGxiYWNrIHRvIHdpbmRvdy5lc3ByaW1hLiBJZiBub3Rcbi8vICAgIGZvdW5kIHRvbyAtIHRoZW4gZmFpbCB0byBwYXJzZS5cbi8vXG50cnkge1xuICAvLyB3b3JrYXJvdW5kIHRvIGV4Y2x1ZGUgcGFja2FnZSBmcm9tIGJyb3dzZXJpZnkgbGlzdC5cbiAgdmFyIF9yZXF1aXJlID0gcmVxdWlyZTtcbiAgZXNwcmltYSA9IF9yZXF1aXJlKCdlc3ByaW1hJyk7XG59IGNhdGNoIChfKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXJlZGVjbGFyZSAqL1xuICAvKiBnbG9iYWwgd2luZG93ICovXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgZXNwcmltYSA9IHdpbmRvdy5lc3ByaW1hO1xufVxuXG52YXIgVHlwZSA9IHJlcXVpcmUoJy4uLy4uL3R5cGUnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZUphdmFzY3JpcHRGdW5jdGlvbihkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICB2YXIgc291cmNlID0gJygnICsgZGF0YSArICcpJyxcbiAgICAgICAgYXN0ICAgID0gZXNwcmltYS5wYXJzZShzb3VyY2UsIHsgcmFuZ2U6IHRydWUgfSk7XG5cbiAgICBpZiAoYXN0LnR5cGUgICAgICAgICAgICAgICAgICAgICE9PSAnUHJvZ3JhbScgICAgICAgICAgICAgfHxcbiAgICAgICAgYXN0LmJvZHkubGVuZ3RoICAgICAgICAgICAgICE9PSAxICAgICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgYXN0LmJvZHlbMF0udHlwZSAgICAgICAgICAgICE9PSAnRXhwcmVzc2lvblN0YXRlbWVudCcgfHxcbiAgICAgICAgKGFzdC5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSAhPT0gJ0Fycm93RnVuY3Rpb25FeHByZXNzaW9uJyAmJlxuICAgICAgICAgIGFzdC5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSAhPT0gJ0Z1bmN0aW9uRXhwcmVzc2lvbicpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RKYXZhc2NyaXB0RnVuY3Rpb24oZGF0YSkge1xuICAvKmpzbGludCBldmlsOnRydWUqL1xuXG4gIHZhciBzb3VyY2UgPSAnKCcgKyBkYXRhICsgJyknLFxuICAgICAgYXN0ICAgID0gZXNwcmltYS5wYXJzZShzb3VyY2UsIHsgcmFuZ2U6IHRydWUgfSksXG4gICAgICBwYXJhbXMgPSBbXSxcbiAgICAgIGJvZHk7XG5cbiAgaWYgKGFzdC50eXBlICAgICAgICAgICAgICAgICAgICAhPT0gJ1Byb2dyYW0nICAgICAgICAgICAgIHx8XG4gICAgICBhc3QuYm9keS5sZW5ndGggICAgICAgICAgICAgIT09IDEgICAgICAgICAgICAgICAgICAgICB8fFxuICAgICAgYXN0LmJvZHlbMF0udHlwZSAgICAgICAgICAgICE9PSAnRXhwcmVzc2lvblN0YXRlbWVudCcgfHxcbiAgICAgIChhc3QuYm9keVswXS5leHByZXNzaW9uLnR5cGUgIT09ICdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbicgJiZcbiAgICAgICAgYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlICE9PSAnRnVuY3Rpb25FeHByZXNzaW9uJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byByZXNvbHZlIGZ1bmN0aW9uJyk7XG4gIH1cblxuICBhc3QuYm9keVswXS5leHByZXNzaW9uLnBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uIChwYXJhbSkge1xuICAgIHBhcmFtcy5wdXNoKHBhcmFtLm5hbWUpO1xuICB9KTtcblxuICBib2R5ID0gYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi5ib2R5LnJhbmdlO1xuXG4gIC8vIEVzcHJpbWEncyByYW5nZXMgaW5jbHVkZSB0aGUgZmlyc3QgJ3snIGFuZCB0aGUgbGFzdCAnfScgY2hhcmFjdGVycyBvblxuICAvLyBmdW5jdGlvbiBleHByZXNzaW9ucy4gU28gY3V0IHRoZW0gb3V0LlxuICBpZiAoYXN0LmJvZHlbMF0uZXhwcmVzc2lvbi5ib2R5LnR5cGUgPT09ICdCbG9ja1N0YXRlbWVudCcpIHtcbiAgICAvKmVzbGludC1kaXNhYmxlIG5vLW5ldy1mdW5jKi9cbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKHBhcmFtcywgc291cmNlLnNsaWNlKGJvZHlbMF0gKyAxLCBib2R5WzFdIC0gMSkpO1xuICB9XG4gIC8vIEVTNiBhcnJvdyBmdW5jdGlvbnMgY2FuIG9taXQgdGhlIEJsb2NrU3RhdGVtZW50LiBJbiB0aGF0IGNhc2UsIGp1c3QgcmV0dXJuXG4gIC8vIHRoZSBib2R5LlxuICAvKmVzbGludC1kaXNhYmxlIG5vLW5ldy1mdW5jKi9cbiAgcmV0dXJuIG5ldyBGdW5jdGlvbihwYXJhbXMsICdyZXR1cm4gJyArIHNvdXJjZS5zbGljZShib2R5WzBdLCBib2R5WzFdKSk7XG59XG5cbmZ1bmN0aW9uIHJlcHJlc2VudEphdmFzY3JpcHRGdW5jdGlvbihvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgcmV0dXJuIG9iamVjdC50b1N0cmluZygpO1xufVxuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmV3IFR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmpzL2Z1bmN0aW9uJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZUphdmFzY3JpcHRGdW5jdGlvbixcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RKYXZhc2NyaXB0RnVuY3Rpb24sXG4gIHByZWRpY2F0ZTogaXNGdW5jdGlvbixcbiAgcmVwcmVzZW50OiByZXByZXNlbnRKYXZhc2NyaXB0RnVuY3Rpb25cbn0pO1xuIiwgIi8vIEpTLVlBTUwncyBkZWZhdWx0IHNjaGVtYSBmb3IgYGxvYWRgIGZ1bmN0aW9uLlxuLy8gSXQgaXMgbm90IGRlc2NyaWJlZCBpbiB0aGUgWUFNTCBzcGVjaWZpY2F0aW9uLlxuLy9cbi8vIFRoaXMgc2NoZW1hIGlzIGJhc2VkIG9uIEpTLVlBTUwncyBkZWZhdWx0IHNhZmUgc2NoZW1hIGFuZCBpbmNsdWRlc1xuLy8gSmF2YVNjcmlwdC1zcGVjaWZpYyB0eXBlczogISFqcy91bmRlZmluZWQsICEhanMvcmVnZXhwIGFuZCAhIWpzL2Z1bmN0aW9uLlxuLy9cbi8vIEFsc28gdGhpcyBzY2hlbWEgaXMgdXNlZCBhcyBkZWZhdWx0IGJhc2Ugc2NoZW1hIGF0IGBTY2hlbWEuY3JlYXRlYCBmdW5jdGlvbi5cblxuXG4ndXNlIHN0cmljdCc7XG5cblxudmFyIFNjaGVtYSA9IHJlcXVpcmUoJy4uL3NjaGVtYScpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gU2NoZW1hLkRFRkFVTFQgPSBuZXcgU2NoZW1hKHtcbiAgaW5jbHVkZTogW1xuICAgIHJlcXVpcmUoJy4vZGVmYXVsdF9zYWZlJylcbiAgXSxcbiAgZXhwbGljaXQ6IFtcbiAgICByZXF1aXJlKCcuLi90eXBlL2pzL3VuZGVmaW5lZCcpLFxuICAgIHJlcXVpcmUoJy4uL3R5cGUvanMvcmVnZXhwJyksXG4gICAgcmVxdWlyZSgnLi4vdHlwZS9qcy9mdW5jdGlvbicpXG4gIF1cbn0pO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuLyplc2xpbnQtZGlzYWJsZSBtYXgtbGVuLG5vLXVzZS1iZWZvcmUtZGVmaW5lKi9cblxudmFyIGNvbW1vbiAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbicpO1xudmFyIFlBTUxFeGNlcHRpb24gICAgICAgPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xudmFyIE1hcmsgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL21hcmsnKTtcbnZhciBERUZBVUxUX1NBRkVfU0NIRU1BID0gcmVxdWlyZSgnLi9zY2hlbWEvZGVmYXVsdF9zYWZlJyk7XG52YXIgREVGQVVMVF9GVUxMX1NDSEVNQSA9IHJlcXVpcmUoJy4vc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xuXG5cbnZhciBfaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5cbnZhciBDT05URVhUX0ZMT1dfSU4gICA9IDE7XG52YXIgQ09OVEVYVF9GTE9XX09VVCAgPSAyO1xudmFyIENPTlRFWFRfQkxPQ0tfSU4gID0gMztcbnZhciBDT05URVhUX0JMT0NLX09VVCA9IDQ7XG5cblxudmFyIENIT01QSU5HX0NMSVAgID0gMTtcbnZhciBDSE9NUElOR19TVFJJUCA9IDI7XG52YXIgQ0hPTVBJTkdfS0VFUCAgPSAzO1xuXG5cbnZhciBQQVRURVJOX05PTl9QUklOVEFCTEUgICAgICAgICA9IC9bXFx4MDAtXFx4MDhcXHgwQlxceDBDXFx4MEUtXFx4MUZcXHg3Ri1cXHg4NFxceDg2LVxceDlGXFx1RkZGRVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdLztcbnZhciBQQVRURVJOX05PTl9BU0NJSV9MSU5FX0JSRUFLUyA9IC9bXFx4ODVcXHUyMDI4XFx1MjAyOV0vO1xudmFyIFBBVFRFUk5fRkxPV19JTkRJQ0FUT1JTICAgICAgID0gL1ssXFxbXFxdXFx7XFx9XS87XG52YXIgUEFUVEVSTl9UQUdfSEFORExFICAgICAgICAgICAgPSAvXig/OiF8ISF8IVthLXpcXC1dKyEpJC9pO1xudmFyIFBBVFRFUk5fVEFHX1VSSSAgICAgICAgICAgICAgID0gL14oPzohfFteLFxcW1xcXVxce1xcfV0pKD86JVswLTlhLWZdezJ9fFswLTlhLXpcXC0jO1xcL1xcPzpAJj1cXCtcXCQsX1xcLiF+XFwqJ1xcKFxcKVxcW1xcXV0pKiQvaTtcblxuXG5mdW5jdGlvbiBfY2xhc3Mob2JqKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTsgfVxuXG5mdW5jdGlvbiBpc19FT0woYykge1xuICByZXR1cm4gKGMgPT09IDB4MEEvKiBMRiAqLykgfHwgKGMgPT09IDB4MEQvKiBDUiAqLyk7XG59XG5cbmZ1bmN0aW9uIGlzX1dISVRFX1NQQUNFKGMpIHtcbiAgcmV0dXJuIChjID09PSAweDA5LyogVGFiICovKSB8fCAoYyA9PT0gMHgyMC8qIFNwYWNlICovKTtcbn1cblxuZnVuY3Rpb24gaXNfV1NfT1JfRU9MKGMpIHtcbiAgcmV0dXJuIChjID09PSAweDA5LyogVGFiICovKSB8fFxuICAgICAgICAgKGMgPT09IDB4MjAvKiBTcGFjZSAqLykgfHxcbiAgICAgICAgIChjID09PSAweDBBLyogTEYgKi8pIHx8XG4gICAgICAgICAoYyA9PT0gMHgwRC8qIENSICovKTtcbn1cblxuZnVuY3Rpb24gaXNfRkxPV19JTkRJQ0FUT1IoYykge1xuICByZXR1cm4gYyA9PT0gMHgyQy8qICwgKi8gfHxcbiAgICAgICAgIGMgPT09IDB4NUIvKiBbICovIHx8XG4gICAgICAgICBjID09PSAweDVELyogXSAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg3Qi8qIHsgKi8gfHxcbiAgICAgICAgIGMgPT09IDB4N0QvKiB9ICovO1xufVxuXG5mdW5jdGlvbiBmcm9tSGV4Q29kZShjKSB7XG4gIHZhciBsYztcblxuICBpZiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkge1xuICAgIHJldHVybiBjIC0gMHgzMDtcbiAgfVxuXG4gIC8qZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSovXG4gIGxjID0gYyB8IDB4MjA7XG5cbiAgaWYgKCgweDYxLyogYSAqLyA8PSBsYykgJiYgKGxjIDw9IDB4NjYvKiBmICovKSkge1xuICAgIHJldHVybiBsYyAtIDB4NjEgKyAxMDtcbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlZEhleExlbihjKSB7XG4gIGlmIChjID09PSAweDc4LyogeCAqLykgeyByZXR1cm4gMjsgfVxuICBpZiAoYyA9PT0gMHg3NS8qIHUgKi8pIHsgcmV0dXJuIDQ7IH1cbiAgaWYgKGMgPT09IDB4NTUvKiBVICovKSB7IHJldHVybiA4OyB9XG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBmcm9tRGVjaW1hbENvZGUoYykge1xuICBpZiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkge1xuICAgIHJldHVybiBjIC0gMHgzMDtcbiAgfVxuXG4gIHJldHVybiAtMTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRXNjYXBlU2VxdWVuY2UoYykge1xuICAvKiBlc2xpbnQtZGlzYWJsZSBpbmRlbnQgKi9cbiAgcmV0dXJuIChjID09PSAweDMwLyogMCAqLykgPyAnXFx4MDAnIDpcbiAgICAgICAgKGMgPT09IDB4NjEvKiBhICovKSA/ICdcXHgwNycgOlxuICAgICAgICAoYyA9PT0gMHg2Mi8qIGIgKi8pID8gJ1xceDA4JyA6XG4gICAgICAgIChjID09PSAweDc0LyogdCAqLykgPyAnXFx4MDknIDpcbiAgICAgICAgKGMgPT09IDB4MDkvKiBUYWIgKi8pID8gJ1xceDA5JyA6XG4gICAgICAgIChjID09PSAweDZFLyogbiAqLykgPyAnXFx4MEEnIDpcbiAgICAgICAgKGMgPT09IDB4NzYvKiB2ICovKSA/ICdcXHgwQicgOlxuICAgICAgICAoYyA9PT0gMHg2Ni8qIGYgKi8pID8gJ1xceDBDJyA6XG4gICAgICAgIChjID09PSAweDcyLyogciAqLykgPyAnXFx4MEQnIDpcbiAgICAgICAgKGMgPT09IDB4NjUvKiBlICovKSA/ICdcXHgxQicgOlxuICAgICAgICAoYyA9PT0gMHgyMC8qIFNwYWNlICovKSA/ICcgJyA6XG4gICAgICAgIChjID09PSAweDIyLyogXCIgKi8pID8gJ1xceDIyJyA6XG4gICAgICAgIChjID09PSAweDJGLyogLyAqLykgPyAnLycgOlxuICAgICAgICAoYyA9PT0gMHg1Qy8qIFxcICovKSA/ICdcXHg1QycgOlxuICAgICAgICAoYyA9PT0gMHg0RS8qIE4gKi8pID8gJ1xceDg1JyA6XG4gICAgICAgIChjID09PSAweDVGLyogXyAqLykgPyAnXFx4QTAnIDpcbiAgICAgICAgKGMgPT09IDB4NEMvKiBMICovKSA/ICdcXHUyMDI4JyA6XG4gICAgICAgIChjID09PSAweDUwLyogUCAqLykgPyAnXFx1MjAyOScgOiAnJztcbn1cblxuZnVuY3Rpb24gY2hhckZyb21Db2RlcG9pbnQoYykge1xuICBpZiAoYyA8PSAweEZGRkYpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcbiAgfVxuICAvLyBFbmNvZGUgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyXG4gIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi0xNiNDb2RlX3BvaW50c19VLjJCMDEwMDAwX3RvX1UuMkIxMEZGRkZcbiAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoXG4gICAgKChjIC0gMHgwMTAwMDApID4+IDEwKSArIDB4RDgwMCxcbiAgICAoKGMgLSAweDAxMDAwMCkgJiAweDAzRkYpICsgMHhEQzAwXG4gICk7XG59XG5cbnZhciBzaW1wbGVFc2NhcGVDaGVjayA9IG5ldyBBcnJheSgyNTYpOyAvLyBpbnRlZ2VyLCBmb3IgZmFzdCBhY2Nlc3NcbnZhciBzaW1wbGVFc2NhcGVNYXAgPSBuZXcgQXJyYXkoMjU2KTtcbmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcbiAgc2ltcGxlRXNjYXBlQ2hlY2tbaV0gPSBzaW1wbGVFc2NhcGVTZXF1ZW5jZShpKSA/IDEgOiAwO1xuICBzaW1wbGVFc2NhcGVNYXBbaV0gPSBzaW1wbGVFc2NhcGVTZXF1ZW5jZShpKTtcbn1cblxuXG5mdW5jdGlvbiBTdGF0ZShpbnB1dCwgb3B0aW9ucykge1xuICB0aGlzLmlucHV0ID0gaW5wdXQ7XG5cbiAgdGhpcy5maWxlbmFtZSAgPSBvcHRpb25zWydmaWxlbmFtZSddICB8fCBudWxsO1xuICB0aGlzLnNjaGVtYSAgICA9IG9wdGlvbnNbJ3NjaGVtYSddICAgIHx8IERFRkFVTFRfRlVMTF9TQ0hFTUE7XG4gIHRoaXMub25XYXJuaW5nID0gb3B0aW9uc1snb25XYXJuaW5nJ10gfHwgbnVsbDtcbiAgdGhpcy5sZWdhY3kgICAgPSBvcHRpb25zWydsZWdhY3knXSAgICB8fCBmYWxzZTtcbiAgdGhpcy5qc29uICAgICAgPSBvcHRpb25zWydqc29uJ10gICAgICB8fCBmYWxzZTtcbiAgdGhpcy5saXN0ZW5lciAgPSBvcHRpb25zWydsaXN0ZW5lciddICB8fCBudWxsO1xuXG4gIHRoaXMuaW1wbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkSW1wbGljaXQ7XG4gIHRoaXMudHlwZU1hcCAgICAgICA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkVHlwZU1hcDtcblxuICB0aGlzLmxlbmd0aCAgICAgPSBpbnB1dC5sZW5ndGg7XG4gIHRoaXMucG9zaXRpb24gICA9IDA7XG4gIHRoaXMubGluZSAgICAgICA9IDA7XG4gIHRoaXMubGluZVN0YXJ0ICA9IDA7XG4gIHRoaXMubGluZUluZGVudCA9IDA7XG5cbiAgdGhpcy5kb2N1bWVudHMgPSBbXTtcblxuICAvKlxuICB0aGlzLnZlcnNpb247XG4gIHRoaXMuY2hlY2tMaW5lQnJlYWtzO1xuICB0aGlzLnRhZ01hcDtcbiAgdGhpcy5hbmNob3JNYXA7XG4gIHRoaXMudGFnO1xuICB0aGlzLmFuY2hvcjtcbiAgdGhpcy5raW5kO1xuICB0aGlzLnJlc3VsdDsqL1xuXG59XG5cblxuZnVuY3Rpb24gZ2VuZXJhdGVFcnJvcihzdGF0ZSwgbWVzc2FnZSkge1xuICByZXR1cm4gbmV3IFlBTUxFeGNlcHRpb24oXG4gICAgbWVzc2FnZSxcbiAgICBuZXcgTWFyayhzdGF0ZS5maWxlbmFtZSwgc3RhdGUuaW5wdXQsIHN0YXRlLnBvc2l0aW9uLCBzdGF0ZS5saW5lLCAoc3RhdGUucG9zaXRpb24gLSBzdGF0ZS5saW5lU3RhcnQpKSk7XG59XG5cbmZ1bmN0aW9uIHRocm93RXJyb3Ioc3RhdGUsIG1lc3NhZ2UpIHtcbiAgdGhyb3cgZ2VuZXJhdGVFcnJvcihzdGF0ZSwgbWVzc2FnZSk7XG59XG5cbmZ1bmN0aW9uIHRocm93V2FybmluZyhzdGF0ZSwgbWVzc2FnZSkge1xuICBpZiAoc3RhdGUub25XYXJuaW5nKSB7XG4gICAgc3RhdGUub25XYXJuaW5nLmNhbGwobnVsbCwgZ2VuZXJhdGVFcnJvcihzdGF0ZSwgbWVzc2FnZSkpO1xuICB9XG59XG5cblxudmFyIGRpcmVjdGl2ZUhhbmRsZXJzID0ge1xuXG4gIFlBTUw6IGZ1bmN0aW9uIGhhbmRsZVlhbWxEaXJlY3RpdmUoc3RhdGUsIG5hbWUsIGFyZ3MpIHtcblxuICAgIHZhciBtYXRjaCwgbWFqb3IsIG1pbm9yO1xuXG4gICAgaWYgKHN0YXRlLnZlcnNpb24gIT09IG51bGwpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGlvbiBvZiAlWUFNTCBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdZQU1MIGRpcmVjdGl2ZSBhY2NlcHRzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuXG4gICAgbWF0Y2ggPSAvXihbMC05XSspXFwuKFswLTldKykkLy5leGVjKGFyZ3NbMF0pO1xuXG4gICAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaWxsLWZvcm1lZCBhcmd1bWVudCBvZiB0aGUgWUFNTCBkaXJlY3RpdmUnKTtcbiAgICB9XG5cbiAgICBtYWpvciA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7XG4gICAgbWlub3IgPSBwYXJzZUludChtYXRjaFsyXSwgMTApO1xuXG4gICAgaWYgKG1ham9yICE9PSAxKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5hY2NlcHRhYmxlIFlBTUwgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQnKTtcbiAgICB9XG5cbiAgICBzdGF0ZS52ZXJzaW9uID0gYXJnc1swXTtcbiAgICBzdGF0ZS5jaGVja0xpbmVCcmVha3MgPSAobWlub3IgPCAyKTtcblxuICAgIGlmIChtaW5vciAhPT0gMSAmJiBtaW5vciAhPT0gMikge1xuICAgICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAndW5zdXBwb3J0ZWQgWUFNTCB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudCcpO1xuICAgIH1cbiAgfSxcblxuICBUQUc6IGZ1bmN0aW9uIGhhbmRsZVRhZ0RpcmVjdGl2ZShzdGF0ZSwgbmFtZSwgYXJncykge1xuXG4gICAgdmFyIGhhbmRsZSwgcHJlZml4O1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnVEFHIGRpcmVjdGl2ZSBhY2NlcHRzIGV4YWN0bHkgdHdvIGFyZ3VtZW50cycpO1xuICAgIH1cblxuICAgIGhhbmRsZSA9IGFyZ3NbMF07XG4gICAgcHJlZml4ID0gYXJnc1sxXTtcblxuICAgIGlmICghUEFUVEVSTl9UQUdfSEFORExFLnRlc3QoaGFuZGxlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2lsbC1mb3JtZWQgdGFnIGhhbmRsZSAoZmlyc3QgYXJndW1lbnQpIG9mIHRoZSBUQUcgZGlyZWN0aXZlJyk7XG4gICAgfVxuXG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLnRhZ01hcCwgaGFuZGxlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RoZXJlIGlzIGEgcHJldmlvdXNseSBkZWNsYXJlZCBzdWZmaXggZm9yIFwiJyArIGhhbmRsZSArICdcIiB0YWcgaGFuZGxlJyk7XG4gICAgfVxuXG4gICAgaWYgKCFQQVRURVJOX1RBR19VUkkudGVzdChwcmVmaXgpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaWxsLWZvcm1lZCB0YWcgcHJlZml4IChzZWNvbmQgYXJndW1lbnQpIG9mIHRoZSBUQUcgZGlyZWN0aXZlJyk7XG4gICAgfVxuXG4gICAgc3RhdGUudGFnTWFwW2hhbmRsZV0gPSBwcmVmaXg7XG4gIH1cbn07XG5cblxuZnVuY3Rpb24gY2FwdHVyZVNlZ21lbnQoc3RhdGUsIHN0YXJ0LCBlbmQsIGNoZWNrSnNvbikge1xuICB2YXIgX3Bvc2l0aW9uLCBfbGVuZ3RoLCBfY2hhcmFjdGVyLCBfcmVzdWx0O1xuXG4gIGlmIChzdGFydCA8IGVuZCkge1xuICAgIF9yZXN1bHQgPSBzdGF0ZS5pbnB1dC5zbGljZShzdGFydCwgZW5kKTtcblxuICAgIGlmIChjaGVja0pzb24pIHtcbiAgICAgIGZvciAoX3Bvc2l0aW9uID0gMCwgX2xlbmd0aCA9IF9yZXN1bHQubGVuZ3RoOyBfcG9zaXRpb24gPCBfbGVuZ3RoOyBfcG9zaXRpb24gKz0gMSkge1xuICAgICAgICBfY2hhcmFjdGVyID0gX3Jlc3VsdC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG4gICAgICAgIGlmICghKF9jaGFyYWN0ZXIgPT09IDB4MDkgfHxcbiAgICAgICAgICAgICAgKDB4MjAgPD0gX2NoYXJhY3RlciAmJiBfY2hhcmFjdGVyIDw9IDB4MTBGRkZGKSkpIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZXhwZWN0ZWQgdmFsaWQgSlNPTiBjaGFyYWN0ZXInKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoUEFUVEVSTl9OT05fUFJJTlRBQkxFLnRlc3QoX3Jlc3VsdCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0aGUgc3RyZWFtIGNvbnRhaW5zIG5vbi1wcmludGFibGUgY2hhcmFjdGVycycpO1xuICAgIH1cblxuICAgIHN0YXRlLnJlc3VsdCArPSBfcmVzdWx0O1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlTWFwcGluZ3Moc3RhdGUsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG92ZXJyaWRhYmxlS2V5cykge1xuICB2YXIgc291cmNlS2V5cywga2V5LCBpbmRleCwgcXVhbnRpdHk7XG5cbiAgaWYgKCFjb21tb24uaXNPYmplY3Qoc291cmNlKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW5ub3QgbWVyZ2UgbWFwcGluZ3M7IHRoZSBwcm92aWRlZCBzb3VyY2Ugb2JqZWN0IGlzIHVuYWNjZXB0YWJsZScpO1xuICB9XG5cbiAgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG5cbiAgZm9yIChpbmRleCA9IDAsIHF1YW50aXR5ID0gc291cmNlS2V5cy5sZW5ndGg7IGluZGV4IDwgcXVhbnRpdHk7IGluZGV4ICs9IDEpIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2luZGV4XTtcblxuICAgIGlmICghX2hhc093blByb3BlcnR5LmNhbGwoZGVzdGluYXRpb24sIGtleSkpIHtcbiAgICAgIGRlc3RpbmF0aW9uW2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIG92ZXJyaWRhYmxlS2V5c1trZXldID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSwgc3RhcnRMaW5lLCBzdGFydFBvcykge1xuICB2YXIgaW5kZXgsIHF1YW50aXR5O1xuXG4gIC8vIFRoZSBvdXRwdXQgaXMgYSBwbGFpbiBvYmplY3QgaGVyZSwgc28ga2V5cyBjYW4gb25seSBiZSBzdHJpbmdzLlxuICAvLyBXZSBuZWVkIHRvIGNvbnZlcnQga2V5Tm9kZSB0byBhIHN0cmluZywgYnV0IGRvaW5nIHNvIGNhbiBoYW5nIHRoZSBwcm9jZXNzXG4gIC8vIChkZWVwbHkgbmVzdGVkIGFycmF5cyB0aGF0IGV4cGxvZGUgZXhwb25lbnRpYWxseSB1c2luZyBhbGlhc2VzKS5cbiAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Tm9kZSkpIHtcbiAgICBrZXlOb2RlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoa2V5Tm9kZSk7XG5cbiAgICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSBrZXlOb2RlLmxlbmd0aDsgaW5kZXggPCBxdWFudGl0eTsgaW5kZXggKz0gMSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5Tm9kZVtpbmRleF0pKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICduZXN0ZWQgYXJyYXlzIGFyZSBub3Qgc3VwcG9ydGVkIGluc2lkZSBrZXlzJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Yga2V5Tm9kZSA9PT0gJ29iamVjdCcgJiYgX2NsYXNzKGtleU5vZGVbaW5kZXhdKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgICAga2V5Tm9kZVtpbmRleF0gPSAnW29iamVjdCBPYmplY3RdJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBdm9pZCBjb2RlIGV4ZWN1dGlvbiBpbiBsb2FkKCkgdmlhIHRvU3RyaW5nIHByb3BlcnR5XG4gIC8vIChzdGlsbCB1c2UgaXRzIG93biB0b1N0cmluZyBmb3IgYXJyYXlzLCB0aW1lc3RhbXBzLFxuICAvLyBhbmQgd2hhdGV2ZXIgdXNlciBzY2hlbWEgZXh0ZW5zaW9ucyBoYXBwZW4gdG8gaGF2ZSBAQHRvU3RyaW5nVGFnKVxuICBpZiAodHlwZW9mIGtleU5vZGUgPT09ICdvYmplY3QnICYmIF9jbGFzcyhrZXlOb2RlKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICBrZXlOb2RlID0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gIH1cblxuXG4gIGtleU5vZGUgPSBTdHJpbmcoa2V5Tm9kZSk7XG5cbiAgaWYgKF9yZXN1bHQgPT09IG51bGwpIHtcbiAgICBfcmVzdWx0ID0ge307XG4gIH1cblxuICBpZiAoa2V5VGFnID09PSAndGFnOnlhbWwub3JnLDIwMDI6bWVyZ2UnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVOb2RlKSkge1xuICAgICAgZm9yIChpbmRleCA9IDAsIHF1YW50aXR5ID0gdmFsdWVOb2RlLmxlbmd0aDsgaW5kZXggPCBxdWFudGl0eTsgaW5kZXggKz0gMSkge1xuICAgICAgICBtZXJnZU1hcHBpbmdzKHN0YXRlLCBfcmVzdWx0LCB2YWx1ZU5vZGVbaW5kZXhdLCBvdmVycmlkYWJsZUtleXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXJnZU1hcHBpbmdzKHN0YXRlLCBfcmVzdWx0LCB2YWx1ZU5vZGUsIG92ZXJyaWRhYmxlS2V5cyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICghc3RhdGUuanNvbiAmJlxuICAgICAgICAhX2hhc093blByb3BlcnR5LmNhbGwob3ZlcnJpZGFibGVLZXlzLCBrZXlOb2RlKSAmJlxuICAgICAgICBfaGFzT3duUHJvcGVydHkuY2FsbChfcmVzdWx0LCBrZXlOb2RlKSkge1xuICAgICAgc3RhdGUubGluZSA9IHN0YXJ0TGluZSB8fCBzdGF0ZS5saW5lO1xuICAgICAgc3RhdGUucG9zaXRpb24gPSBzdGFydFBvcyB8fCBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGVkIG1hcHBpbmcga2V5Jyk7XG4gICAgfVxuICAgIF9yZXN1bHRba2V5Tm9kZV0gPSB2YWx1ZU5vZGU7XG4gICAgZGVsZXRlIG92ZXJyaWRhYmxlS2V5c1trZXlOb2RlXTtcbiAgfVxuXG4gIHJldHVybiBfcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZWFkTGluZUJyZWFrKHN0YXRlKSB7XG4gIHZhciBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHgwQS8qIExGICovKSB7XG4gICAgc3RhdGUucG9zaXRpb24rKztcbiAgfSBlbHNlIGlmIChjaCA9PT0gMHgwRC8qIENSICovKSB7XG4gICAgc3RhdGUucG9zaXRpb24rKztcbiAgICBpZiAoc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgPT09IDB4MEEvKiBMRiAqLykge1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2EgbGluZSBicmVhayBpcyBleHBlY3RlZCcpO1xuICB9XG5cbiAgc3RhdGUubGluZSArPSAxO1xuICBzdGF0ZS5saW5lU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcbn1cblxuZnVuY3Rpb24gc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgYWxsb3dDb21tZW50cywgY2hlY2tJbmRlbnQpIHtcbiAgdmFyIGxpbmVCcmVha3MgPSAwLFxuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGFsbG93Q29tbWVudHMgJiYgY2ggPT09IDB4MjMvKiAjICovKSB7XG4gICAgICBkbyB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH0gd2hpbGUgKGNoICE9PSAweDBBLyogTEYgKi8gJiYgY2ggIT09IDB4MEQvKiBDUiAqLyAmJiBjaCAhPT0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIHJlYWRMaW5lQnJlYWsoc3RhdGUpO1xuXG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgbGluZUJyZWFrcysrO1xuICAgICAgc3RhdGUubGluZUluZGVudCA9IDA7XG5cbiAgICAgIHdoaWxlIChjaCA9PT0gMHgyMC8qIFNwYWNlICovKSB7XG4gICAgICAgIHN0YXRlLmxpbmVJbmRlbnQrKztcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoY2hlY2tJbmRlbnQgIT09IC0xICYmIGxpbmVCcmVha3MgIT09IDAgJiYgc3RhdGUubGluZUluZGVudCA8IGNoZWNrSW5kZW50KSB7XG4gICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAnZGVmaWNpZW50IGluZGVudGF0aW9uJyk7XG4gIH1cblxuICByZXR1cm4gbGluZUJyZWFrcztcbn1cblxuZnVuY3Rpb24gdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbixcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24pO1xuXG4gIC8vIENvbmRpdGlvbiBzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0IGlzIHRlc3RlZFxuICAvLyBpbiBwYXJlbnQgb24gZWFjaCBjYWxsLCBmb3IgZWZmaWNpZW5jeS4gTm8gbmVlZHMgdG8gdGVzdCBoZXJlIGFnYWluLlxuICBpZiAoKGNoID09PSAweDJELyogLSAqLyB8fCBjaCA9PT0gMHgyRS8qIC4gKi8pICYmXG4gICAgICBjaCA9PT0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24gKyAxKSAmJlxuICAgICAgY2ggPT09IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uICsgMikpIHtcblxuICAgIF9wb3NpdGlvbiArPSAzO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IDAgfHwgaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBjb3VudCkge1xuICBpZiAoY291bnQgPT09IDEpIHtcbiAgICBzdGF0ZS5yZXN1bHQgKz0gJyAnO1xuICB9IGVsc2UgaWYgKGNvdW50ID4gMSkge1xuICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBjb3VudCAtIDEpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gcmVhZFBsYWluU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50LCB3aXRoaW5GbG93Q29sbGVjdGlvbikge1xuICB2YXIgcHJlY2VkaW5nLFxuICAgICAgZm9sbG93aW5nLFxuICAgICAgY2FwdHVyZVN0YXJ0LFxuICAgICAgY2FwdHVyZUVuZCxcbiAgICAgIGhhc1BlbmRpbmdDb250ZW50LFxuICAgICAgX2xpbmUsXG4gICAgICBfbGluZVN0YXJ0LFxuICAgICAgX2xpbmVJbmRlbnQsXG4gICAgICBfa2luZCA9IHN0YXRlLmtpbmQsXG4gICAgICBfcmVzdWx0ID0gc3RhdGUucmVzdWx0LFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoaXNfV1NfT1JfRU9MKGNoKSAgICAgIHx8XG4gICAgICBpc19GTE9XX0lORElDQVRPUihjaCkgfHxcbiAgICAgIGNoID09PSAweDIzLyogIyAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjYvKiAmICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyQS8qICogKi8gICAgfHxcbiAgICAgIGNoID09PSAweDIxLyogISAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4N0MvKiB8ICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgzRS8qID4gKi8gICAgfHxcbiAgICAgIGNoID09PSAweDI3LyogJyAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjIvKiBcIiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjUvKiAlICovICAgIHx8XG4gICAgICBjaCA9PT0gMHg0MC8qIEAgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDYwLyogYCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChjaCA9PT0gMHgzRi8qID8gKi8gfHwgY2ggPT09IDB4MkQvKiAtICovKSB7XG4gICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgaWYgKGlzX1dTX09SX0VPTChmb2xsb3dpbmcpIHx8XG4gICAgICAgIHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGZvbGxvd2luZykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS5raW5kID0gJ3NjYWxhcic7XG4gIHN0YXRlLnJlc3VsdCA9ICcnO1xuICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gIGhhc1BlbmRpbmdDb250ZW50ID0gZmFsc2U7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDNBLyogOiAqLykge1xuICAgICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykgfHxcbiAgICAgICAgICB3aXRoaW5GbG93Q29sbGVjdGlvbiAmJiBpc19GTE9XX0lORElDQVRPUihmb2xsb3dpbmcpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIHByZWNlZGluZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gLSAxKTtcblxuICAgICAgaWYgKGlzX1dTX09SX0VPTChwcmVjZWRpbmcpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmICgoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB8fFxuICAgICAgICAgICAgICAgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoY2gpKSB7XG4gICAgICBicmVhaztcblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgX2xpbmUgPSBzdGF0ZS5saW5lO1xuICAgICAgX2xpbmVTdGFydCA9IHN0YXRlLmxpbmVTdGFydDtcbiAgICAgIF9saW5lSW5kZW50ID0gc3RhdGUubGluZUluZGVudDtcbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCAtMSk7XG5cbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID49IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgaGFzUGVuZGluZ0NvbnRlbnQgPSB0cnVlO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uID0gY2FwdHVyZUVuZDtcbiAgICAgICAgc3RhdGUubGluZSA9IF9saW5lO1xuICAgICAgICBzdGF0ZS5saW5lU3RhcnQgPSBfbGluZVN0YXJ0O1xuICAgICAgICBzdGF0ZS5saW5lSW5kZW50ID0gX2xpbmVJbmRlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNQZW5kaW5nQ29udGVudCkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgZmFsc2UpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgc3RhdGUubGluZSAtIF9saW5lKTtcbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgIGhhc1BlbmRpbmdDb250ZW50ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbiArIDE7XG4gICAgfVxuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICB9XG5cbiAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgZmFsc2UpO1xuXG4gIGlmIChzdGF0ZS5yZXN1bHQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSBfa2luZDtcbiAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiByZWFkU2luZ2xlUXVvdGVkU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBjaCxcbiAgICAgIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyNy8qICcgKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0ZS5raW5kID0gJ3NjYWxhcic7XG4gIHN0YXRlLnJlc3VsdCA9ICcnO1xuICBzdGF0ZS5wb3NpdGlvbisrO1xuICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgd2hpbGUgKChjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pKSAhPT0gMCkge1xuICAgIGlmIChjaCA9PT0gMHgyNy8qICcgKi8pIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgaWYgKGNoID09PSAweDI3LyogJyAqLykge1xuICAgICAgICBjYXB0dXJlU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIGNhcHR1cmVFbmQsIHRydWUpO1xuICAgICAgd3JpdGVGb2xkZWRMaW5lcyhzdGF0ZSwgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIG5vZGVJbmRlbnQpKTtcbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIH0gZWxzZSBpZiAoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIGRvY3VtZW50IHdpdGhpbiBhIHNpbmdsZSBxdW90ZWQgc2NhbGFyJyk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICB9XG4gIH1cblxuICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBzaW5nbGUgcXVvdGVkIHNjYWxhcicpO1xufVxuXG5mdW5jdGlvbiByZWFkRG91YmxlUXVvdGVkU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBjYXB0dXJlU3RhcnQsXG4gICAgICBjYXB0dXJlRW5kLFxuICAgICAgaGV4TGVuZ3RoLFxuICAgICAgaGV4UmVzdWx0LFxuICAgICAgdG1wLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjIvKiBcIiAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIHN0YXRlLnBvc2l0aW9uKys7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDIyLyogXCIgKi8pIHtcbiAgICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCB0cnVlKTtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICByZXR1cm4gdHJ1ZTtcblxuICAgIH0gZWxzZSBpZiAoY2ggPT09IDB4NUMvKiBcXCAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCk7XG5cbiAgICAgICAgLy8gVE9ETzogcmV3b3JrIHRvIGlubGluZSBmbiB3aXRoIG5vIHR5cGUgY2FzdD9cbiAgICAgIH0gZWxzZSBpZiAoY2ggPCAyNTYgJiYgc2ltcGxlRXNjYXBlQ2hlY2tbY2hdKSB7XG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBzaW1wbGVFc2NhcGVNYXBbY2hdO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuXG4gICAgICB9IGVsc2UgaWYgKCh0bXAgPSBlc2NhcGVkSGV4TGVuKGNoKSkgPiAwKSB7XG4gICAgICAgIGhleExlbmd0aCA9IHRtcDtcbiAgICAgICAgaGV4UmVzdWx0ID0gMDtcblxuICAgICAgICBmb3IgKDsgaGV4TGVuZ3RoID4gMDsgaGV4TGVuZ3RoLS0pIHtcbiAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgICAgICBpZiAoKHRtcCA9IGZyb21IZXhDb2RlKGNoKSkgPj0gMCkge1xuICAgICAgICAgICAgaGV4UmVzdWx0ID0gKGhleFJlc3VsdCA8PCA0KSArIHRtcDtcblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZXhwZWN0ZWQgaGV4YWRlY2ltYWwgY2hhcmFjdGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNoYXJGcm9tQ29kZXBvaW50KGhleFJlc3VsdCk7XG5cbiAgICAgICAgc3RhdGUucG9zaXRpb24rKztcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3Vua25vd24gZXNjYXBlIHNlcXVlbmNlJyk7XG4gICAgICB9XG5cbiAgICAgIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgdHJ1ZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCkpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgZG9jdW1lbnQgd2l0aGluIGEgZG91YmxlIHF1b3RlZCBzY2FsYXInKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIGRvdWJsZSBxdW90ZWQgc2NhbGFyJyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRGbG93Q29sbGVjdGlvbihzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgcmVhZE5leHQgPSB0cnVlLFxuICAgICAgX2xpbmUsXG4gICAgICBfdGFnICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIF9yZXN1bHQsXG4gICAgICBfYW5jaG9yICA9IHN0YXRlLmFuY2hvcixcbiAgICAgIGZvbGxvd2luZyxcbiAgICAgIHRlcm1pbmF0b3IsXG4gICAgICBpc1BhaXIsXG4gICAgICBpc0V4cGxpY2l0UGFpcixcbiAgICAgIGlzTWFwcGluZyxcbiAgICAgIG92ZXJyaWRhYmxlS2V5cyA9IHt9LFxuICAgICAga2V5Tm9kZSxcbiAgICAgIGtleVRhZyxcbiAgICAgIHZhbHVlTm9kZSxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoID09PSAweDVCLyogWyAqLykge1xuICAgIHRlcm1pbmF0b3IgPSAweDVEOy8qIF0gKi9cbiAgICBpc01hcHBpbmcgPSBmYWxzZTtcbiAgICBfcmVzdWx0ID0gW107XG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4N0IvKiB7ICovKSB7XG4gICAgdGVybWluYXRvciA9IDB4N0Q7LyogfSAqL1xuICAgIGlzTWFwcGluZyA9IHRydWU7XG4gICAgX3Jlc3VsdCA9IHt9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IF9yZXN1bHQ7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSB0ZXJtaW5hdG9yKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7XG4gICAgICBzdGF0ZS5raW5kID0gaXNNYXBwaW5nID8gJ21hcHBpbmcnIDogJ3NlcXVlbmNlJztcbiAgICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCFyZWFkTmV4dCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ21pc3NlZCBjb21tYSBiZXR3ZWVuIGZsb3cgY29sbGVjdGlvbiBlbnRyaWVzJyk7XG4gICAgfVxuXG4gICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgaXNQYWlyID0gaXNFeHBsaWNpdFBhaXIgPSBmYWxzZTtcblxuICAgIGlmIChjaCA9PT0gMHgzRi8qID8gKi8pIHtcbiAgICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTtcblxuICAgICAgaWYgKGlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG4gICAgICAgIGlzUGFpciA9IGlzRXhwbGljaXRQYWlyID0gdHJ1ZTtcbiAgICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2xpbmUgPSBzdGF0ZS5saW5lO1xuICAgIGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0ZMT1dfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICBrZXlUYWcgPSBzdGF0ZS50YWc7XG4gICAga2V5Tm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoKGlzRXhwbGljaXRQYWlyIHx8IHN0YXRlLmxpbmUgPT09IF9saW5lKSAmJiBjaCA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgIGlzUGFpciA9IHRydWU7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcbiAgICAgIGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0ZMT1dfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICAgIHZhbHVlTm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICB9XG5cbiAgICBpZiAoaXNNYXBwaW5nKSB7XG4gICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlKTtcbiAgICB9IGVsc2UgaWYgKGlzUGFpcikge1xuICAgICAgX3Jlc3VsdC5wdXNoKHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIG51bGwsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgX3Jlc3VsdC5wdXNoKGtleU5vZGUpO1xuICAgIH1cblxuICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gMHgyQy8qICwgKi8pIHtcbiAgICAgIHJlYWROZXh0ID0gdHJ1ZTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVhZE5leHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSBmbG93IGNvbGxlY3Rpb24nKTtcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2NrU2NhbGFyKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciBjYXB0dXJlU3RhcnQsXG4gICAgICBmb2xkaW5nLFxuICAgICAgY2hvbXBpbmcgICAgICAgPSBDSE9NUElOR19DTElQLFxuICAgICAgZGlkUmVhZENvbnRlbnQgPSBmYWxzZSxcbiAgICAgIGRldGVjdGVkSW5kZW50ID0gZmFsc2UsXG4gICAgICB0ZXh0SW5kZW50ICAgICA9IG5vZGVJbmRlbnQsXG4gICAgICBlbXB0eUxpbmVzICAgICA9IDAsXG4gICAgICBhdE1vcmVJbmRlbnRlZCA9IGZhbHNlLFxuICAgICAgdG1wLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4N0MvKiB8ICovKSB7XG4gICAgZm9sZGluZyA9IGZhbHNlO1xuICB9IGVsc2UgaWYgKGNoID09PSAweDNFLyogPiAqLykge1xuICAgIGZvbGRpbmcgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSAweDJCLyogKyAqLyB8fCBjaCA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICAgIGlmIChDSE9NUElOR19DTElQID09PSBjaG9tcGluZykge1xuICAgICAgICBjaG9tcGluZyA9IChjaCA9PT0gMHgyQi8qICsgKi8pID8gQ0hPTVBJTkdfS0VFUCA6IENIT01QSU5HX1NUUklQO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3JlcGVhdCBvZiBhIGNob21waW5nIG1vZGUgaWRlbnRpZmllcicpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmICgodG1wID0gZnJvbURlY2ltYWxDb2RlKGNoKSkgPj0gMCkge1xuICAgICAgaWYgKHRtcCA9PT0gMCkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYmFkIGV4cGxpY2l0IGluZGVudGF0aW9uIHdpZHRoIG9mIGEgYmxvY2sgc2NhbGFyOyBpdCBjYW5ub3QgYmUgbGVzcyB0aGFuIG9uZScpO1xuICAgICAgfSBlbHNlIGlmICghZGV0ZWN0ZWRJbmRlbnQpIHtcbiAgICAgICAgdGV4dEluZGVudCA9IG5vZGVJbmRlbnQgKyB0bXAgLSAxO1xuICAgICAgICBkZXRlY3RlZEluZGVudCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAncmVwZWF0IG9mIGFuIGluZGVudGF0aW9uIHdpZHRoIGlkZW50aWZpZXInKTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKTtcblxuICAgIGlmIChjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgICB3aGlsZSAoIWlzX0VPTChjaCkgJiYgKGNoICE9PSAwKSk7XG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG4gICAgc3RhdGUubGluZUluZGVudCA9IDA7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgd2hpbGUgKCghZGV0ZWN0ZWRJbmRlbnQgfHwgc3RhdGUubGluZUluZGVudCA8IHRleHRJbmRlbnQpICYmXG4gICAgICAgICAgIChjaCA9PT0gMHgyMC8qIFNwYWNlICovKSkge1xuICAgICAgc3RhdGUubGluZUluZGVudCsrO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGlmICghZGV0ZWN0ZWRJbmRlbnQgJiYgc3RhdGUubGluZUluZGVudCA+IHRleHRJbmRlbnQpIHtcbiAgICAgIHRleHRJbmRlbnQgPSBzdGF0ZS5saW5lSW5kZW50O1xuICAgIH1cblxuICAgIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBlbXB0eUxpbmVzKys7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBFbmQgb2YgdGhlIHNjYWxhci5cbiAgICBpZiAoc3RhdGUubGluZUluZGVudCA8IHRleHRJbmRlbnQpIHtcblxuICAgICAgLy8gUGVyZm9ybSB0aGUgY2hvbXBpbmcuXG4gICAgICBpZiAoY2hvbXBpbmcgPT09IENIT01QSU5HX0tFRVApIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGRpZFJlYWRDb250ZW50ID8gMSArIGVtcHR5TGluZXMgOiBlbXB0eUxpbmVzKTtcbiAgICAgIH0gZWxzZSBpZiAoY2hvbXBpbmcgPT09IENIT01QSU5HX0NMSVApIHtcbiAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7IC8vIGkuZS4gb25seSBpZiB0aGUgc2NhbGFyIGlzIG5vdCBlbXB0eS5cbiAgICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gJ1xcbic7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQnJlYWsgdGhpcyBgd2hpbGVgIGN5Y2xlIGFuZCBnbyB0byB0aGUgZnVuY2l0b24ncyBlcGlsb2d1ZS5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIEZvbGRlZCBzdHlsZTogdXNlIGZhbmN5IHJ1bGVzIHRvIGhhbmRsZSBsaW5lIGJyZWFrcy5cbiAgICBpZiAoZm9sZGluZykge1xuXG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMgKG1vcmUtaW5kZW50ZWQgbGluZXMpIGFyZSBub3QgZm9sZGVkLlxuICAgICAgaWYgKGlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgICBhdE1vcmVJbmRlbnRlZCA9IHRydWU7XG4gICAgICAgIC8vIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IGNvbnRlbnQgbGluZSAoY2YuIEV4YW1wbGUgOC4xKVxuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuXG4gICAgICAvLyBFbmQgb2YgbW9yZS1pbmRlbnRlZCBibG9jay5cbiAgICAgIH0gZWxzZSBpZiAoYXRNb3JlSW5kZW50ZWQpIHtcbiAgICAgICAgYXRNb3JlSW5kZW50ZWQgPSBmYWxzZTtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGVtcHR5TGluZXMgKyAxKTtcblxuICAgICAgLy8gSnVzdCBvbmUgbGluZSBicmVhayAtIHBlcmNlaXZlIGFzIHRoZSBzYW1lIGxpbmUuXG4gICAgICB9IGVsc2UgaWYgKGVtcHR5TGluZXMgPT09IDApIHtcbiAgICAgICAgaWYgKGRpZFJlYWRDb250ZW50KSB7IC8vIGkuZS4gb25seSBpZiB3ZSBoYXZlIGFscmVhZHkgcmVhZCBzb21lIHNjYWxhciBjb250ZW50LlxuICAgICAgICAgIHN0YXRlLnJlc3VsdCArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgLy8gU2V2ZXJhbCBsaW5lIGJyZWFrcyAtIHBlcmNlaXZlIGFzIGRpZmZlcmVudCBsaW5lcy5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBlbXB0eUxpbmVzKTtcbiAgICAgIH1cblxuICAgIC8vIExpdGVyYWwgc3R5bGU6IGp1c3QgYWRkIGV4YWN0IG51bWJlciBvZiBsaW5lIGJyZWFrcyBiZXR3ZWVuIGNvbnRlbnQgbGluZXMuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEtlZXAgYWxsIGxpbmUgYnJlYWtzIGV4Y2VwdCB0aGUgaGVhZGVyIGxpbmUgYnJlYWsuXG4gICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuICAgIH1cblxuICAgIGRpZFJlYWRDb250ZW50ID0gdHJ1ZTtcbiAgICBkZXRlY3RlZEluZGVudCA9IHRydWU7XG4gICAgZW1wdHlMaW5lcyA9IDA7XG4gICAgY2FwdHVyZVN0YXJ0ID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB3aGlsZSAoIWlzX0VPTChjaCkgJiYgKGNoICE9PSAwKSkge1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGNhcHR1cmVTZWdtZW50KHN0YXRlLCBjYXB0dXJlU3RhcnQsIHN0YXRlLnBvc2l0aW9uLCBmYWxzZSk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIF9saW5lLFxuICAgICAgX3RhZyAgICAgID0gc3RhdGUudGFnLFxuICAgICAgX2FuY2hvciAgID0gc3RhdGUuYW5jaG9yLFxuICAgICAgX3Jlc3VsdCAgID0gW10sXG4gICAgICBmb2xsb3dpbmcsXG4gICAgICBkZXRlY3RlZCAgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IF9yZXN1bHQ7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuXG4gICAgaWYgKGNoICE9PSAweDJELyogLSAqLykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZm9sbG93aW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpO1xuXG4gICAgaWYgKCFpc19XU19PUl9FT0woZm9sbG93aW5nKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGV0ZWN0ZWQgPSB0cnVlO1xuICAgIHN0YXRlLnBvc2l0aW9uKys7XG5cbiAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpKSB7XG4gICAgICBpZiAoc3RhdGUubGluZUluZGVudCA8PSBub2RlSW5kZW50KSB7XG4gICAgICAgIF9yZXN1bHQucHVzaChudWxsKTtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX2xpbmUgPSBzdGF0ZS5saW5lO1xuICAgIGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0JMT0NLX0lOLCBmYWxzZSwgdHJ1ZSk7XG4gICAgX3Jlc3VsdC5wdXNoKHN0YXRlLnJlc3VsdCk7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmICgoc3RhdGUubGluZSA9PT0gX2xpbmUgfHwgc3RhdGUubGluZUluZGVudCA+IG5vZGVJbmRlbnQpICYmIChjaCAhPT0gMCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdiYWQgaW5kZW50YXRpb24gb2YgYSBzZXF1ZW5jZSBlbnRyeScpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IG5vZGVJbmRlbnQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkZXRlY3RlZCkge1xuICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICBzdGF0ZS5raW5kID0gJ3NlcXVlbmNlJztcbiAgICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2NrTWFwcGluZyhzdGF0ZSwgbm9kZUluZGVudCwgZmxvd0luZGVudCkge1xuICB2YXIgZm9sbG93aW5nLFxuICAgICAgYWxsb3dDb21wYWN0LFxuICAgICAgX2xpbmUsXG4gICAgICBfcG9zLFxuICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIF9hbmNob3IgICAgICAgPSBzdGF0ZS5hbmNob3IsXG4gICAgICBfcmVzdWx0ICAgICAgID0ge30sXG4gICAgICBvdmVycmlkYWJsZUtleXMgPSB7fSxcbiAgICAgIGtleVRhZyAgICAgICAgPSBudWxsLFxuICAgICAga2V5Tm9kZSAgICAgICA9IG51bGwsXG4gICAgICB2YWx1ZU5vZGUgICAgID0gbnVsbCxcbiAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZSxcbiAgICAgIGRldGVjdGVkICAgICAgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IF9yZXN1bHQ7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTtcbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7IC8vIFNhdmUgdGhlIGN1cnJlbnQgbGluZS5cbiAgICBfcG9zID0gc3RhdGUucG9zaXRpb247XG5cbiAgICAvL1xuICAgIC8vIEV4cGxpY2l0IG5vdGF0aW9uIGNhc2UuIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgYmxvY2tzOlxuICAgIC8vIGZpcnN0IGZvciB0aGUga2V5IChkZW5vdGVkIGJ5IFwiP1wiKSBhbmQgc2Vjb25kIGZvciB0aGUgdmFsdWUgKGRlbm90ZWQgYnkgXCI6XCIpXG4gICAgLy9cbiAgICBpZiAoKGNoID09PSAweDNGLyogPyAqLyB8fCBjaCA9PT0gMHgzQS8qIDogKi8pICYmIGlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG5cbiAgICAgIGlmIChjaCA9PT0gMHgzRi8qID8gKi8pIHtcbiAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgbnVsbCk7XG4gICAgICAgICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgICAgIGF0RXhwbGljaXRLZXkgPSB0cnVlO1xuICAgICAgICBhbGxvd0NvbXBhY3QgPSB0cnVlO1xuXG4gICAgICB9IGVsc2UgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgLy8gaS5lLiAweDNBLyogOiAqLyA9PT0gY2hhcmFjdGVyIGFmdGVyIHRoZSBleHBsaWNpdCBrZXkuXG4gICAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZTtcbiAgICAgICAgYWxsb3dDb21wYWN0ID0gdHJ1ZTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2luY29tcGxldGUgZXhwbGljaXQgbWFwcGluZyBwYWlyOyBhIGtleSBub2RlIGlzIG1pc3NlZDsgb3IgZm9sbG93ZWQgYnkgYSBub24tdGFidWxhdGVkIGVtcHR5IGxpbmUnKTtcbiAgICAgIH1cblxuICAgICAgc3RhdGUucG9zaXRpb24gKz0gMTtcbiAgICAgIGNoID0gZm9sbG93aW5nO1xuXG4gICAgLy9cbiAgICAvLyBJbXBsaWNpdCBub3RhdGlvbiBjYXNlLiBGbG93LXN0eWxlIG5vZGUgYXMgdGhlIGtleSBmaXJzdCwgdGhlbiBcIjpcIiwgYW5kIHRoZSB2YWx1ZS5cbiAgICAvL1xuICAgIH0gZWxzZSBpZiAoY29tcG9zZU5vZGUoc3RhdGUsIGZsb3dJbmRlbnQsIENPTlRFWFRfRkxPV19PVVQsIGZhbHNlLCB0cnVlKSkge1xuXG4gICAgICBpZiAoc3RhdGUubGluZSA9PT0gX2xpbmUpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoID09PSAweDNBLyogOiAqLykge1xuICAgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgICAgIGlmICghaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Egd2hpdGVzcGFjZSBjaGFyYWN0ZXIgaXMgZXhwZWN0ZWQgYWZ0ZXIgdGhlIGtleS12YWx1ZSBzZXBhcmF0b3Igd2l0aGluIGEgYmxvY2sgbWFwcGluZycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhdEV4cGxpY2l0S2V5KSB7XG4gICAgICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgbnVsbCk7XG4gICAgICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgICAgICAgYXRFeHBsaWNpdEtleSA9IGZhbHNlO1xuICAgICAgICAgIGFsbG93Q29tcGFjdCA9IGZhbHNlO1xuICAgICAgICAgIGtleVRhZyA9IHN0YXRlLnRhZztcbiAgICAgICAgICBrZXlOb2RlID0gc3RhdGUucmVzdWx0O1xuXG4gICAgICAgIH0gZWxzZSBpZiAoZGV0ZWN0ZWQpIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2FuIG5vdCByZWFkIGFuIGltcGxpY2l0IG1hcHBpbmcgcGFpcjsgYSBjb2xvbiBpcyBtaXNzZWQnKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gS2VlcCB0aGUgcmVzdWx0IG9mIGBjb21wb3NlTm9kZWAuXG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIGlmIChkZXRlY3RlZCkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnY2FuIG5vdCByZWFkIGEgYmxvY2sgbWFwcGluZyBlbnRyeTsgYSBtdWx0aWxpbmUga2V5IG1heSBub3QgYmUgYW4gaW1wbGljaXQga2V5Jyk7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7XG4gICAgICAgIHJldHVybiB0cnVlOyAvLyBLZWVwIHRoZSByZXN1bHQgb2YgYGNvbXBvc2VOb2RlYC5cbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBicmVhazsgLy8gUmVhZGluZyBpcyBkb25lLiBHbyB0byB0aGUgZXBpbG9ndWUuXG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBDb21tb24gcmVhZGluZyBjb2RlIGZvciBib3RoIGV4cGxpY2l0IGFuZCBpbXBsaWNpdCBub3RhdGlvbnMuXG4gICAgLy9cbiAgICBpZiAoc3RhdGUubGluZSA9PT0gX2xpbmUgfHwgc3RhdGUubGluZUluZGVudCA+IG5vZGVJbmRlbnQpIHtcbiAgICAgIGlmIChjb21wb3NlTm9kZShzdGF0ZSwgbm9kZUluZGVudCwgQ09OVEVYVF9CTE9DS19PVVQsIHRydWUsIGFsbG93Q29tcGFjdCkpIHtcbiAgICAgICAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgICBrZXlOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlTm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIHZhbHVlTm9kZSwgX2xpbmUsIF9wb3MpO1xuICAgICAgICBrZXlUYWcgPSBrZXlOb2RlID0gdmFsdWVOb2RlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IG5vZGVJbmRlbnQgJiYgKGNoICE9PSAwKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2JhZCBpbmRlbnRhdGlvbiBvZiBhIG1hcHBpbmcgZW50cnknKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBub2RlSW5kZW50KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvL1xuICAvLyBFcGlsb2d1ZS5cbiAgLy9cblxuICAvLyBTcGVjaWFsIGNhc2U6IGxhc3QgbWFwcGluZydzIG5vZGUgY29udGFpbnMgb25seSB0aGUga2V5IGluIGV4cGxpY2l0IG5vdGF0aW9uLlxuICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsKTtcbiAgfVxuXG4gIC8vIEV4cG9zZSB0aGUgcmVzdWx0aW5nIG1hcHBpbmcuXG4gIGlmIChkZXRlY3RlZCkge1xuICAgIHN0YXRlLnRhZyA9IF90YWc7XG4gICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICBzdGF0ZS5raW5kID0gJ21hcHBpbmcnO1xuICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gZGV0ZWN0ZWQ7XG59XG5cbmZ1bmN0aW9uIHJlYWRUYWdQcm9wZXJ0eShzdGF0ZSkge1xuICB2YXIgX3Bvc2l0aW9uLFxuICAgICAgaXNWZXJiYXRpbSA9IGZhbHNlLFxuICAgICAgaXNOYW1lZCAgICA9IGZhbHNlLFxuICAgICAgdGFnSGFuZGxlLFxuICAgICAgdGFnTmFtZSxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDIxLyogISAqLykgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChzdGF0ZS50YWcgIT09IG51bGwpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRpb24gb2YgYSB0YWcgcHJvcGVydHknKTtcbiAgfVxuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggPT09IDB4M0MvKiA8ICovKSB7XG4gICAgaXNWZXJiYXRpbSA9IHRydWU7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4MjEvKiAhICovKSB7XG4gICAgaXNOYW1lZCA9IHRydWU7XG4gICAgdGFnSGFuZGxlID0gJyEhJztcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgfSBlbHNlIHtcbiAgICB0YWdIYW5kbGUgPSAnISc7XG4gIH1cblxuICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICBpZiAoaXNWZXJiYXRpbSkge1xuICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgd2hpbGUgKGNoICE9PSAwICYmIGNoICE9PSAweDNFLyogPiAqLyk7XG5cbiAgICBpZiAoc3RhdGUucG9zaXRpb24gPCBzdGF0ZS5sZW5ndGgpIHtcbiAgICAgIHRhZ05hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgdmVyYmF0aW0gdGFnJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkge1xuXG4gICAgICBpZiAoY2ggPT09IDB4MjEvKiAhICovKSB7XG4gICAgICAgIGlmICghaXNOYW1lZCkge1xuICAgICAgICAgIHRhZ0hhbmRsZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiAtIDEsIHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICAgICAgICBpZiAoIVBBVFRFUk5fVEFHX0hBTkRMRS50ZXN0KHRhZ0hhbmRsZSkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICduYW1lZCB0YWcgaGFuZGxlIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVycycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlzTmFtZWQgPSB0cnVlO1xuICAgICAgICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBleGNsYW1hdGlvbiBtYXJrcycpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICB0YWdOYW1lID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoUEFUVEVSTl9GTE9XX0lORElDQVRPUlMudGVzdCh0YWdOYW1lKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBzdWZmaXggY2Fubm90IGNvbnRhaW4gZmxvdyBpbmRpY2F0b3IgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0YWdOYW1lICYmICFQQVRURVJOX1RBR19VUkkudGVzdCh0YWdOYW1lKSkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgbmFtZSBjYW5ub3QgY29udGFpbiBzdWNoIGNoYXJhY3RlcnM6ICcgKyB0YWdOYW1lKTtcbiAgfVxuXG4gIGlmIChpc1ZlcmJhdGltKSB7XG4gICAgc3RhdGUudGFnID0gdGFnTmFtZTtcblxuICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLnRhZ01hcCwgdGFnSGFuZGxlKSkge1xuICAgIHN0YXRlLnRhZyA9IHN0YXRlLnRhZ01hcFt0YWdIYW5kbGVdICsgdGFnTmFtZTtcblxuICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gJyEnKSB7XG4gICAgc3RhdGUudGFnID0gJyEnICsgdGFnTmFtZTtcblxuICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gJyEhJykge1xuICAgIHN0YXRlLnRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjonICsgdGFnTmFtZTtcblxuICB9IGVsc2Uge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmRlY2xhcmVkIHRhZyBoYW5kbGUgXCInICsgdGFnSGFuZGxlICsgJ1wiJyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVhZEFuY2hvclByb3BlcnR5KHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyNi8qICYgKi8pIHJldHVybiBmYWxzZTtcblxuICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0aW9uIG9mIGFuIGFuY2hvciBwcm9wZXJ0eScpO1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkgJiYgIWlzX0ZMT1dfSU5ESUNBVE9SKGNoKSkge1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gX3Bvc2l0aW9uKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWUgb2YgYW4gYW5jaG9yIG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXInKTtcbiAgfVxuXG4gIHN0YXRlLmFuY2hvciA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVhZEFsaWFzKHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sIGFsaWFzLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MkEvKiAqICovKSByZXR1cm4gZmFsc2U7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkgJiYgIWlzX0ZMT1dfSU5ESUNBVE9SKGNoKSkge1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gX3Bvc2l0aW9uKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWUgb2YgYW4gYWxpYXMgbm9kZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNoYXJhY3RlcicpO1xuICB9XG5cbiAgYWxpYXMgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoIV9oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLmFuY2hvck1hcCwgYWxpYXMpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuaWRlbnRpZmllZCBhbGlhcyBcIicgKyBhbGlhcyArICdcIicpO1xuICB9XG5cbiAgc3RhdGUucmVzdWx0ID0gc3RhdGUuYW5jaG9yTWFwW2FsaWFzXTtcbiAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29tcG9zZU5vZGUoc3RhdGUsIHBhcmVudEluZGVudCwgbm9kZUNvbnRleHQsIGFsbG93VG9TZWVrLCBhbGxvd0NvbXBhY3QpIHtcbiAgdmFyIGFsbG93QmxvY2tTdHlsZXMsXG4gICAgICBhbGxvd0Jsb2NrU2NhbGFycyxcbiAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyxcbiAgICAgIGluZGVudFN0YXR1cyA9IDEsIC8vIDE6IHRoaXM+cGFyZW50LCAwOiB0aGlzPXBhcmVudCwgLTE6IHRoaXM8cGFyZW50XG4gICAgICBhdE5ld0xpbmUgID0gZmFsc2UsXG4gICAgICBoYXNDb250ZW50ID0gZmFsc2UsXG4gICAgICB0eXBlSW5kZXgsXG4gICAgICB0eXBlUXVhbnRpdHksXG4gICAgICB0eXBlLFxuICAgICAgZmxvd0luZGVudCxcbiAgICAgIGJsb2NrSW5kZW50O1xuXG4gIGlmIChzdGF0ZS5saXN0ZW5lciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmxpc3RlbmVyKCdvcGVuJywgc3RhdGUpO1xuICB9XG5cbiAgc3RhdGUudGFnICAgID0gbnVsbDtcbiAgc3RhdGUuYW5jaG9yID0gbnVsbDtcbiAgc3RhdGUua2luZCAgID0gbnVsbDtcbiAgc3RhdGUucmVzdWx0ID0gbnVsbDtcblxuICBhbGxvd0Jsb2NrU3R5bGVzID0gYWxsb3dCbG9ja1NjYWxhcnMgPSBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPVxuICAgIENPTlRFWFRfQkxPQ0tfT1VUID09PSBub2RlQ29udGV4dCB8fFxuICAgIENPTlRFWFRfQkxPQ0tfSU4gID09PSBub2RlQ29udGV4dDtcblxuICBpZiAoYWxsb3dUb1NlZWspIHtcbiAgICBpZiAoc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpKSB7XG4gICAgICBhdE5ld0xpbmUgPSB0cnVlO1xuXG4gICAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IHBhcmVudEluZGVudCkge1xuICAgICAgICBpbmRlbnRTdGF0dXMgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50ID09PSBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgaW5kZW50U3RhdHVzID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA8IHBhcmVudEluZGVudCkge1xuICAgICAgICBpbmRlbnRTdGF0dXMgPSAtMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoaW5kZW50U3RhdHVzID09PSAxKSB7XG4gICAgd2hpbGUgKHJlYWRUYWdQcm9wZXJ0eShzdGF0ZSkgfHwgcmVhZEFuY2hvclByb3BlcnR5KHN0YXRlKSkge1xuICAgICAgaWYgKHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKSkge1xuICAgICAgICBhdE5ld0xpbmUgPSB0cnVlO1xuICAgICAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBhbGxvd0Jsb2NrU3R5bGVzO1xuXG4gICAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gcGFyZW50SW5kZW50KSB7XG4gICAgICAgICAgaW5kZW50U3RhdHVzID0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50ID09PSBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgICBpbmRlbnRTdGF0dXMgPSAtMTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGFsbG93QmxvY2tDb2xsZWN0aW9ucykge1xuICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGF0TmV3TGluZSB8fCBhbGxvd0NvbXBhY3Q7XG4gIH1cblxuICBpZiAoaW5kZW50U3RhdHVzID09PSAxIHx8IENPTlRFWFRfQkxPQ0tfT1VUID09PSBub2RlQ29udGV4dCkge1xuICAgIGlmIChDT05URVhUX0ZMT1dfSU4gPT09IG5vZGVDb250ZXh0IHx8IENPTlRFWFRfRkxPV19PVVQgPT09IG5vZGVDb250ZXh0KSB7XG4gICAgICBmbG93SW5kZW50ID0gcGFyZW50SW5kZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBmbG93SW5kZW50ID0gcGFyZW50SW5kZW50ICsgMTtcbiAgICB9XG5cbiAgICBibG9ja0luZGVudCA9IHN0YXRlLnBvc2l0aW9uIC0gc3RhdGUubGluZVN0YXJ0O1xuXG4gICAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSkge1xuICAgICAgaWYgKGFsbG93QmxvY2tDb2xsZWN0aW9ucyAmJlxuICAgICAgICAgIChyZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZSwgYmxvY2tJbmRlbnQpIHx8XG4gICAgICAgICAgIHJlYWRCbG9ja01hcHBpbmcoc3RhdGUsIGJsb2NrSW5kZW50LCBmbG93SW5kZW50KSkgfHxcbiAgICAgICAgICByZWFkRmxvd0NvbGxlY3Rpb24oc3RhdGUsIGZsb3dJbmRlbnQpKSB7XG4gICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKChhbGxvd0Jsb2NrU2NhbGFycyAmJiByZWFkQmxvY2tTY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQpKSB8fFxuICAgICAgICAgICAgcmVhZFNpbmdsZVF1b3RlZFNjYWxhcihzdGF0ZSwgZmxvd0luZGVudCkgfHxcbiAgICAgICAgICAgIHJlYWREb3VibGVRdW90ZWRTY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQpKSB7XG4gICAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWFkQWxpYXMoc3RhdGUpKSB7XG4gICAgICAgICAgaGFzQ29udGVudCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc3RhdGUudGFnICE9PSBudWxsIHx8IHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2FsaWFzIG5vZGUgc2hvdWxkIG5vdCBoYXZlIGFueSBwcm9wZXJ0aWVzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSBpZiAocmVhZFBsYWluU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50LCBDT05URVhUX0ZMT1dfSU4gPT09IG5vZGVDb250ZXh0KSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLnRhZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgc3RhdGUudGFnID0gJz8nO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaW5kZW50U3RhdHVzID09PSAwKSB7XG4gICAgICAvLyBTcGVjaWFsIGNhc2U6IGJsb2NrIHNlcXVlbmNlcyBhcmUgYWxsb3dlZCB0byBoYXZlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwgYXMgdGhlIHBhcmVudC5cbiAgICAgIC8vIGh0dHA6Ly93d3cueWFtbC5vcmcvc3BlYy8xLjIvc3BlYy5odG1sI2lkMjc5OTc4NFxuICAgICAgaGFzQ29udGVudCA9IGFsbG93QmxvY2tDb2xsZWN0aW9ucyAmJiByZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZSwgYmxvY2tJbmRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnIScpIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnPycpIHtcbiAgICAgIC8vIEltcGxpY2l0IHJlc29sdmluZyBpcyBub3QgYWxsb3dlZCBmb3Igbm9uLXNjYWxhciB0eXBlcywgYW5kICc/J1xuICAgICAgLy8gbm9uLXNwZWNpZmljIHRhZyBpcyBvbmx5IGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdG8gcGxhaW4gc2NhbGFycy5cbiAgICAgIC8vXG4gICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gY2hlY2sga2luZCBjb25mb3JtaXR5IGluIGNhc2UgdXNlciBleHBsaWNpdGx5IGFzc2lnbnMgJz8nXG4gICAgICAvLyB0YWcsIGZvciBleGFtcGxlIGxpa2UgdGhpczogXCIhPD8+IFswXVwiXG4gICAgICAvL1xuICAgICAgaWYgKHN0YXRlLnJlc3VsdCAhPT0gbnVsbCAmJiBzdGF0ZS5raW5kICE9PSAnc2NhbGFyJykge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5hY2NlcHRhYmxlIG5vZGUga2luZCBmb3IgITw/PiB0YWc7IGl0IHNob3VsZCBiZSBcInNjYWxhclwiLCBub3QgXCInICsgc3RhdGUua2luZCArICdcIicpO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHR5cGVJbmRleCA9IDAsIHR5cGVRdWFudGl0eSA9IHN0YXRlLmltcGxpY2l0VHlwZXMubGVuZ3RoOyB0eXBlSW5kZXggPCB0eXBlUXVhbnRpdHk7IHR5cGVJbmRleCArPSAxKSB7XG4gICAgICAgIHR5cGUgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzW3R5cGVJbmRleF07XG5cbiAgICAgICAgaWYgKHR5cGUucmVzb2x2ZShzdGF0ZS5yZXN1bHQpKSB7IC8vIGBzdGF0ZS5yZXN1bHRgIHVwZGF0ZWQgaW4gcmVzb2x2ZXIgaWYgbWF0Y2hlZFxuICAgICAgICAgIHN0YXRlLnJlc3VsdCA9IHR5cGUuY29uc3RydWN0KHN0YXRlLnJlc3VsdCk7XG4gICAgICAgICAgc3RhdGUudGFnID0gdHlwZS50YWc7XG4gICAgICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbChzdGF0ZS50eXBlTWFwW3N0YXRlLmtpbmQgfHwgJ2ZhbGxiYWNrJ10sIHN0YXRlLnRhZykpIHtcbiAgICAgIHR5cGUgPSBzdGF0ZS50eXBlTWFwW3N0YXRlLmtpbmQgfHwgJ2ZhbGxiYWNrJ11bc3RhdGUudGFnXTtcblxuICAgICAgaWYgKHN0YXRlLnJlc3VsdCAhPT0gbnVsbCAmJiB0eXBlLmtpbmQgIT09IHN0YXRlLmtpbmQpIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuYWNjZXB0YWJsZSBub2RlIGtpbmQgZm9yICE8JyArIHN0YXRlLnRhZyArICc+IHRhZzsgaXQgc2hvdWxkIGJlIFwiJyArIHR5cGUua2luZCArICdcIiwgbm90IFwiJyArIHN0YXRlLmtpbmQgKyAnXCInKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0eXBlLnJlc29sdmUoc3RhdGUucmVzdWx0KSkgeyAvLyBgc3RhdGUucmVzdWx0YCB1cGRhdGVkIGluIHJlc29sdmVyIGlmIG1hdGNoZWRcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Nhbm5vdCByZXNvbHZlIGEgbm9kZSB3aXRoICE8JyArIHN0YXRlLnRhZyArICc+IGV4cGxpY2l0IHRhZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3Qoc3RhdGUucmVzdWx0KTtcbiAgICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmtub3duIHRhZyAhPCcgKyBzdGF0ZS50YWcgKyAnPicpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGF0ZS5saXN0ZW5lciAhPT0gbnVsbCkge1xuICAgIHN0YXRlLmxpc3RlbmVyKCdjbG9zZScsIHN0YXRlKTtcbiAgfVxuICByZXR1cm4gc3RhdGUudGFnICE9PSBudWxsIHx8ICBzdGF0ZS5hbmNob3IgIT09IG51bGwgfHwgaGFzQ29udGVudDtcbn1cblxuZnVuY3Rpb24gcmVhZERvY3VtZW50KHN0YXRlKSB7XG4gIHZhciBkb2N1bWVudFN0YXJ0ID0gc3RhdGUucG9zaXRpb24sXG4gICAgICBfcG9zaXRpb24sXG4gICAgICBkaXJlY3RpdmVOYW1lLFxuICAgICAgZGlyZWN0aXZlQXJncyxcbiAgICAgIGhhc0RpcmVjdGl2ZXMgPSBmYWxzZSxcbiAgICAgIGNoO1xuXG4gIHN0YXRlLnZlcnNpb24gPSBudWxsO1xuICBzdGF0ZS5jaGVja0xpbmVCcmVha3MgPSBzdGF0ZS5sZWdhY3k7XG4gIHN0YXRlLnRhZ01hcCA9IHt9O1xuICBzdGF0ZS5hbmNob3JNYXAgPSB7fTtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50ID4gMCB8fCBjaCAhPT0gMHgyNS8qICUgKi8pIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGhhc0RpcmVjdGl2ZXMgPSB0cnVlO1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfV1NfT1JfRU9MKGNoKSkge1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGRpcmVjdGl2ZU5hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcbiAgICBkaXJlY3RpdmVBcmdzID0gW107XG5cbiAgICBpZiAoZGlyZWN0aXZlTmFtZS5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZGlyZWN0aXZlIG5hbWUgbXVzdCBub3QgYmUgbGVzcyB0aGFuIG9uZSBjaGFyYWN0ZXIgaW4gbGVuZ3RoJyk7XG4gICAgfVxuXG4gICAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgICB3aGlsZSAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfVxuICAgICAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX0VPTChjaCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKGlzX0VPTChjaCkpIGJyZWFrO1xuXG4gICAgICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgIH1cblxuICAgICAgZGlyZWN0aXZlQXJncy5wdXNoKHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pKTtcbiAgICB9XG5cbiAgICBpZiAoY2ggIT09IDApIHJlYWRMaW5lQnJlYWsoc3RhdGUpO1xuXG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKGRpcmVjdGl2ZUhhbmRsZXJzLCBkaXJlY3RpdmVOYW1lKSkge1xuICAgICAgZGlyZWN0aXZlSGFuZGxlcnNbZGlyZWN0aXZlTmFtZV0oc3RhdGUsIGRpcmVjdGl2ZU5hbWUsIGRpcmVjdGl2ZUFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICd1bmtub3duIGRvY3VtZW50IGRpcmVjdGl2ZSBcIicgKyBkaXJlY3RpdmVOYW1lICsgJ1wiJyk7XG4gICAgfVxuICB9XG5cbiAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gIGlmIChzdGF0ZS5saW5lSW5kZW50ID09PSAwICYmXG4gICAgICBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSAgICAgPT09IDB4MkQvKiAtICovICYmXG4gICAgICBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSkgPT09IDB4MkQvKiAtICovICYmXG4gICAgICBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMikgPT09IDB4MkQvKiAtICovKSB7XG4gICAgc3RhdGUucG9zaXRpb24gKz0gMztcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgfSBlbHNlIGlmIChoYXNEaXJlY3RpdmVzKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2RpcmVjdGl2ZXMgZW5kIG1hcmsgaXMgZXhwZWN0ZWQnKTtcbiAgfVxuXG4gIGNvbXBvc2VOb2RlKHN0YXRlLCBzdGF0ZS5saW5lSW5kZW50IC0gMSwgQ09OVEVYVF9CTE9DS19PVVQsIGZhbHNlLCB0cnVlKTtcbiAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gIGlmIChzdGF0ZS5jaGVja0xpbmVCcmVha3MgJiZcbiAgICAgIFBBVFRFUk5fTk9OX0FTQ0lJX0xJTkVfQlJFQUtTLnRlc3Qoc3RhdGUuaW5wdXQuc2xpY2UoZG9jdW1lbnRTdGFydCwgc3RhdGUucG9zaXRpb24pKSkge1xuICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ25vbi1BU0NJSSBsaW5lIGJyZWFrcyBhcmUgaW50ZXJwcmV0ZWQgYXMgY29udGVudCcpO1xuICB9XG5cbiAgc3RhdGUuZG9jdW1lbnRzLnB1c2goc3RhdGUucmVzdWx0KTtcblxuICBpZiAoc3RhdGUucG9zaXRpb24gPT09IHN0YXRlLmxpbmVTdGFydCAmJiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpKSB7XG5cbiAgICBpZiAoc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgPT09IDB4MkUvKiAuICovKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbiArPSAzO1xuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoc3RhdGUucG9zaXRpb24gPCAoc3RhdGUubGVuZ3RoIC0gMSkpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZW5kIG9mIHRoZSBzdHJlYW0gb3IgYSBkb2N1bWVudCBzZXBhcmF0b3IgaXMgZXhwZWN0ZWQnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm47XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKSB7XG4gIGlucHV0ID0gU3RyaW5nKGlucHV0KTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgaWYgKGlucHV0Lmxlbmd0aCAhPT0gMCkge1xuXG4gICAgLy8gQWRkIHRhaWxpbmcgYFxcbmAgaWYgbm90IGV4aXN0c1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KGlucHV0Lmxlbmd0aCAtIDEpICE9PSAweDBBLyogTEYgKi8gJiZcbiAgICAgICAgaW5wdXQuY2hhckNvZGVBdChpbnB1dC5sZW5ndGggLSAxKSAhPT0gMHgwRC8qIENSICovKSB7XG4gICAgICBpbnB1dCArPSAnXFxuJztcbiAgICB9XG5cbiAgICAvLyBTdHJpcCBCT01cbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XG4gICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDEpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdGF0ZSA9IG5ldyBTdGF0ZShpbnB1dCwgb3B0aW9ucyk7XG5cbiAgdmFyIG51bGxwb3MgPSBpbnB1dC5pbmRleE9mKCdcXDAnKTtcblxuICBpZiAobnVsbHBvcyAhPT0gLTEpIHtcbiAgICBzdGF0ZS5wb3NpdGlvbiA9IG51bGxwb3M7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ251bGwgYnl0ZSBpcyBub3QgYWxsb3dlZCBpbiBpbnB1dCcpO1xuICB9XG5cbiAgLy8gVXNlIDAgYXMgc3RyaW5nIHRlcm1pbmF0b3IuIFRoYXQgc2lnbmlmaWNhbnRseSBzaW1wbGlmaWVzIGJvdW5kcyBjaGVjay5cbiAgc3RhdGUuaW5wdXQgKz0gJ1xcMCc7XG5cbiAgd2hpbGUgKHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pID09PSAweDIwLyogU3BhY2UgKi8pIHtcbiAgICBzdGF0ZS5saW5lSW5kZW50ICs9IDE7XG4gICAgc3RhdGUucG9zaXRpb24gKz0gMTtcbiAgfVxuXG4gIHdoaWxlIChzdGF0ZS5wb3NpdGlvbiA8IChzdGF0ZS5sZW5ndGggLSAxKSkge1xuICAgIHJlYWREb2N1bWVudChzdGF0ZSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGUuZG9jdW1lbnRzO1xufVxuXG5cbmZ1bmN0aW9uIGxvYWRBbGwoaW5wdXQsIGl0ZXJhdG9yLCBvcHRpb25zKSB7XG4gIGlmIChpdGVyYXRvciAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlcmF0b3IgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcHRpb25zID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMgPSBpdGVyYXRvcjtcbiAgICBpdGVyYXRvciA9IG51bGw7XG4gIH1cblxuICB2YXIgZG9jdW1lbnRzID0gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucyk7XG5cbiAgaWYgKHR5cGVvZiBpdGVyYXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBkb2N1bWVudHM7XG4gIH1cblxuICBmb3IgKHZhciBpbmRleCA9IDAsIGxlbmd0aCA9IGRvY3VtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgaXRlcmF0b3IoZG9jdW1lbnRzW2luZGV4XSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBsb2FkKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBkb2N1bWVudHMgPSBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKTtcblxuICBpZiAoZG9jdW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8qZXNsaW50LWRpc2FibGUgbm8tdW5kZWZpbmVkKi9cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2UgaWYgKGRvY3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gZG9jdW1lbnRzWzBdO1xuICB9XG4gIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdleHBlY3RlZCBhIHNpbmdsZSBkb2N1bWVudCBpbiB0aGUgc3RyZWFtLCBidXQgZm91bmQgbW9yZScpO1xufVxuXG5cbmZ1bmN0aW9uIHNhZmVMb2FkQWxsKGlucHV0LCBpdGVyYXRvciwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIGl0ZXJhdG9yID09PSAnb2JqZWN0JyAmJiBpdGVyYXRvciAhPT0gbnVsbCAmJiB0eXBlb2Ygb3B0aW9ucyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvcHRpb25zID0gaXRlcmF0b3I7XG4gICAgaXRlcmF0b3IgPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGxvYWRBbGwoaW5wdXQsIGl0ZXJhdG9yLCBjb21tb24uZXh0ZW5kKHsgc2NoZW1hOiBERUZBVUxUX1NBRkVfU0NIRU1BIH0sIG9wdGlvbnMpKTtcbn1cblxuXG5mdW5jdGlvbiBzYWZlTG9hZChpbnB1dCwgb3B0aW9ucykge1xuICByZXR1cm4gbG9hZChpbnB1dCwgY29tbW9uLmV4dGVuZCh7IHNjaGVtYTogREVGQVVMVF9TQUZFX1NDSEVNQSB9LCBvcHRpb25zKSk7XG59XG5cblxubW9kdWxlLmV4cG9ydHMubG9hZEFsbCAgICAgPSBsb2FkQWxsO1xubW9kdWxlLmV4cG9ydHMubG9hZCAgICAgICAgPSBsb2FkO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWRBbGwgPSBzYWZlTG9hZEFsbDtcbm1vZHVsZS5leHBvcnRzLnNhZmVMb2FkICAgID0gc2FmZUxvYWQ7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG4vKmVzbGludC1kaXNhYmxlIG5vLXVzZS1iZWZvcmUtZGVmaW5lKi9cblxudmFyIGNvbW1vbiAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL2NvbW1vbicpO1xudmFyIFlBTUxFeGNlcHRpb24gICAgICAgPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xudmFyIERFRkFVTFRfRlVMTF9TQ0hFTUEgPSByZXF1aXJlKCcuL3NjaGVtYS9kZWZhdWx0X2Z1bGwnKTtcbnZhciBERUZBVUxUX1NBRkVfU0NIRU1BID0gcmVxdWlyZSgnLi9zY2hlbWEvZGVmYXVsdF9zYWZlJyk7XG5cbnZhciBfdG9TdHJpbmcgICAgICAgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBDSEFSX1RBQiAgICAgICAgICAgICAgICAgID0gMHgwOTsgLyogVGFiICovXG52YXIgQ0hBUl9MSU5FX0ZFRUQgICAgICAgICAgICA9IDB4MEE7IC8qIExGICovXG52YXIgQ0hBUl9DQVJSSUFHRV9SRVRVUk4gICAgICA9IDB4MEQ7IC8qIENSICovXG52YXIgQ0hBUl9TUEFDRSAgICAgICAgICAgICAgICA9IDB4MjA7IC8qIFNwYWNlICovXG52YXIgQ0hBUl9FWENMQU1BVElPTiAgICAgICAgICA9IDB4MjE7IC8qICEgKi9cbnZhciBDSEFSX0RPVUJMRV9RVU9URSAgICAgICAgID0gMHgyMjsgLyogXCIgKi9cbnZhciBDSEFSX1NIQVJQICAgICAgICAgICAgICAgID0gMHgyMzsgLyogIyAqL1xudmFyIENIQVJfUEVSQ0VOVCAgICAgICAgICAgICAgPSAweDI1OyAvKiAlICovXG52YXIgQ0hBUl9BTVBFUlNBTkQgICAgICAgICAgICA9IDB4MjY7IC8qICYgKi9cbnZhciBDSEFSX1NJTkdMRV9RVU9URSAgICAgICAgID0gMHgyNzsgLyogJyAqL1xudmFyIENIQVJfQVNURVJJU0sgICAgICAgICAgICAgPSAweDJBOyAvKiAqICovXG52YXIgQ0hBUl9DT01NQSAgICAgICAgICAgICAgICA9IDB4MkM7IC8qICwgKi9cbnZhciBDSEFSX01JTlVTICAgICAgICAgICAgICAgID0gMHgyRDsgLyogLSAqL1xudmFyIENIQVJfQ09MT04gICAgICAgICAgICAgICAgPSAweDNBOyAvKiA6ICovXG52YXIgQ0hBUl9FUVVBTFMgICAgICAgICAgICAgICA9IDB4M0Q7IC8qID0gKi9cbnZhciBDSEFSX0dSRUFURVJfVEhBTiAgICAgICAgID0gMHgzRTsgLyogPiAqL1xudmFyIENIQVJfUVVFU1RJT04gICAgICAgICAgICAgPSAweDNGOyAvKiA/ICovXG52YXIgQ0hBUl9DT01NRVJDSUFMX0FUICAgICAgICA9IDB4NDA7IC8qIEAgKi9cbnZhciBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQgID0gMHg1QjsgLyogWyAqL1xudmFyIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgPSAweDVEOyAvKiBdICovXG52YXIgQ0hBUl9HUkFWRV9BQ0NFTlQgICAgICAgICA9IDB4NjA7IC8qIGAgKi9cbnZhciBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVCAgID0gMHg3QjsgLyogeyAqL1xudmFyIENIQVJfVkVSVElDQUxfTElORSAgICAgICAgPSAweDdDOyAvKiB8ICovXG52YXIgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUICA9IDB4N0Q7IC8qIH0gKi9cblxudmFyIEVTQ0FQRV9TRVFVRU5DRVMgPSB7fTtcblxuRVNDQVBFX1NFUVVFTkNFU1sweDAwXSAgID0gJ1xcXFwwJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwN10gICA9ICdcXFxcYSc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDhdICAgPSAnXFxcXGInO1xuRVNDQVBFX1NFUVVFTkNFU1sweDA5XSAgID0gJ1xcXFx0JztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwQV0gICA9ICdcXFxcbic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MEJdICAgPSAnXFxcXHYnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBDXSAgID0gJ1xcXFxmJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwRF0gICA9ICdcXFxccic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MUJdICAgPSAnXFxcXGUnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDIyXSAgID0gJ1xcXFxcIic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4NUNdICAgPSAnXFxcXFxcXFwnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDg1XSAgID0gJ1xcXFxOJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHhBMF0gICA9ICdcXFxcXyc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MjAyOF0gPSAnXFxcXEwnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDIwMjldID0gJ1xcXFxQJztcblxudmFyIERFUFJFQ0FURURfQk9PTEVBTlNfU1lOVEFYID0gW1xuICAneScsICdZJywgJ3llcycsICdZZXMnLCAnWUVTJywgJ29uJywgJ09uJywgJ09OJyxcbiAgJ24nLCAnTicsICdubycsICdObycsICdOTycsICdvZmYnLCAnT2ZmJywgJ09GRidcbl07XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdHlsZU1hcChzY2hlbWEsIG1hcCkge1xuICB2YXIgcmVzdWx0LCBrZXlzLCBpbmRleCwgbGVuZ3RoLCB0YWcsIHN0eWxlLCB0eXBlO1xuXG4gIGlmIChtYXAgPT09IG51bGwpIHJldHVybiB7fTtcblxuICByZXN1bHQgPSB7fTtcbiAga2V5cyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHRhZyA9IGtleXNbaW5kZXhdO1xuICAgIHN0eWxlID0gU3RyaW5nKG1hcFt0YWddKTtcblxuICAgIGlmICh0YWcuc2xpY2UoMCwgMikgPT09ICchIScpIHtcbiAgICAgIHRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjonICsgdGFnLnNsaWNlKDIpO1xuICAgIH1cbiAgICB0eXBlID0gc2NoZW1hLmNvbXBpbGVkVHlwZU1hcFsnZmFsbGJhY2snXVt0YWddO1xuXG4gICAgaWYgKHR5cGUgJiYgX2hhc093blByb3BlcnR5LmNhbGwodHlwZS5zdHlsZUFsaWFzZXMsIHN0eWxlKSkge1xuICAgICAgc3R5bGUgPSB0eXBlLnN0eWxlQWxpYXNlc1tzdHlsZV07XG4gICAgfVxuXG4gICAgcmVzdWx0W3RhZ10gPSBzdHlsZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGVuY29kZUhleChjaGFyYWN0ZXIpIHtcbiAgdmFyIHN0cmluZywgaGFuZGxlLCBsZW5ndGg7XG5cbiAgc3RyaW5nID0gY2hhcmFjdGVyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuXG4gIGlmIChjaGFyYWN0ZXIgPD0gMHhGRikge1xuICAgIGhhbmRsZSA9ICd4JztcbiAgICBsZW5ndGggPSAyO1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA8PSAweEZGRkYpIHtcbiAgICBoYW5kbGUgPSAndSc7XG4gICAgbGVuZ3RoID0gNDtcbiAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPD0gMHhGRkZGRkZGRikge1xuICAgIGhhbmRsZSA9ICdVJztcbiAgICBsZW5ndGggPSA4O1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCdjb2RlIHBvaW50IHdpdGhpbiBhIHN0cmluZyBtYXkgbm90IGJlIGdyZWF0ZXIgdGhhbiAweEZGRkZGRkZGJyk7XG4gIH1cblxuICByZXR1cm4gJ1xcXFwnICsgaGFuZGxlICsgY29tbW9uLnJlcGVhdCgnMCcsIGxlbmd0aCAtIHN0cmluZy5sZW5ndGgpICsgc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBTdGF0ZShvcHRpb25zKSB7XG4gIHRoaXMuc2NoZW1hICAgICAgICA9IG9wdGlvbnNbJ3NjaGVtYSddIHx8IERFRkFVTFRfRlVMTF9TQ0hFTUE7XG4gIHRoaXMuaW5kZW50ICAgICAgICA9IE1hdGgubWF4KDEsIChvcHRpb25zWydpbmRlbnQnXSB8fCAyKSk7XG4gIHRoaXMubm9BcnJheUluZGVudCA9IG9wdGlvbnNbJ25vQXJyYXlJbmRlbnQnXSB8fCBmYWxzZTtcbiAgdGhpcy5za2lwSW52YWxpZCAgID0gb3B0aW9uc1snc2tpcEludmFsaWQnXSB8fCBmYWxzZTtcbiAgdGhpcy5mbG93TGV2ZWwgICAgID0gKGNvbW1vbi5pc05vdGhpbmcob3B0aW9uc1snZmxvd0xldmVsJ10pID8gLTEgOiBvcHRpb25zWydmbG93TGV2ZWwnXSk7XG4gIHRoaXMuc3R5bGVNYXAgICAgICA9IGNvbXBpbGVTdHlsZU1hcCh0aGlzLnNjaGVtYSwgb3B0aW9uc1snc3R5bGVzJ10gfHwgbnVsbCk7XG4gIHRoaXMuc29ydEtleXMgICAgICA9IG9wdGlvbnNbJ3NvcnRLZXlzJ10gfHwgZmFsc2U7XG4gIHRoaXMubGluZVdpZHRoICAgICA9IG9wdGlvbnNbJ2xpbmVXaWR0aCddIHx8IDgwO1xuICB0aGlzLm5vUmVmcyAgICAgICAgPSBvcHRpb25zWydub1JlZnMnXSB8fCBmYWxzZTtcbiAgdGhpcy5ub0NvbXBhdE1vZGUgID0gb3B0aW9uc1snbm9Db21wYXRNb2RlJ10gfHwgZmFsc2U7XG4gIHRoaXMuY29uZGVuc2VGbG93ICA9IG9wdGlvbnNbJ2NvbmRlbnNlRmxvdyddIHx8IGZhbHNlO1xuXG4gIHRoaXMuaW1wbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkSW1wbGljaXQ7XG4gIHRoaXMuZXhwbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkRXhwbGljaXQ7XG5cbiAgdGhpcy50YWcgPSBudWxsO1xuICB0aGlzLnJlc3VsdCA9ICcnO1xuXG4gIHRoaXMuZHVwbGljYXRlcyA9IFtdO1xuICB0aGlzLnVzZWREdXBsaWNhdGVzID0gbnVsbDtcbn1cblxuLy8gSW5kZW50cyBldmVyeSBsaW5lIGluIGEgc3RyaW5nLiBFbXB0eSBsaW5lcyAoXFxuIG9ubHkpIGFyZSBub3QgaW5kZW50ZWQuXG5mdW5jdGlvbiBpbmRlbnRTdHJpbmcoc3RyaW5nLCBzcGFjZXMpIHtcbiAgdmFyIGluZCA9IGNvbW1vbi5yZXBlYXQoJyAnLCBzcGFjZXMpLFxuICAgICAgcG9zaXRpb24gPSAwLFxuICAgICAgbmV4dCA9IC0xLFxuICAgICAgcmVzdWx0ID0gJycsXG4gICAgICBsaW5lLFxuICAgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHtcbiAgICBuZXh0ID0gc3RyaW5nLmluZGV4T2YoJ1xcbicsIHBvc2l0aW9uKTtcbiAgICBpZiAobmV4dCA9PT0gLTEpIHtcbiAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24pO1xuICAgICAgcG9zaXRpb24gPSBsZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24sIG5leHQgKyAxKTtcbiAgICAgIHBvc2l0aW9uID0gbmV4dCArIDE7XG4gICAgfVxuXG4gICAgaWYgKGxpbmUubGVuZ3RoICYmIGxpbmUgIT09ICdcXG4nKSByZXN1bHQgKz0gaW5kO1xuXG4gICAgcmVzdWx0ICs9IGxpbmU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCkge1xuICByZXR1cm4gJ1xcbicgKyBjb21tb24ucmVwZWF0KCcgJywgc3RhdGUuaW5kZW50ICogbGV2ZWwpO1xufVxuXG5mdW5jdGlvbiB0ZXN0SW1wbGljaXRSZXNvbHZpbmcoc3RhdGUsIHN0cikge1xuICB2YXIgaW5kZXgsIGxlbmd0aCwgdHlwZTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gc3RhdGUuaW1wbGljaXRUeXBlcy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdHlwZSA9IHN0YXRlLmltcGxpY2l0VHlwZXNbaW5kZXhdO1xuXG4gICAgaWYgKHR5cGUucmVzb2x2ZShzdHIpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFszM10gcy13aGl0ZSA6Oj0gcy1zcGFjZSB8IHMtdGFiXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UoYykge1xuICByZXR1cm4gYyA9PT0gQ0hBUl9TUEFDRSB8fCBjID09PSBDSEFSX1RBQjtcbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjaGFyYWN0ZXIgY2FuIGJlIHByaW50ZWQgd2l0aG91dCBlc2NhcGluZy5cbi8vIEZyb20gWUFNTCAxLjI6IFwiYW55IGFsbG93ZWQgY2hhcmFjdGVycyBrbm93biB0byBiZSBub24tcHJpbnRhYmxlXG4vLyBzaG91bGQgYWxzbyBiZSBlc2NhcGVkLiBbSG93ZXZlcixdIFRoaXMgaXNuXHUyMDE5dCBtYW5kYXRvcnlcIlxuLy8gRGVyaXZlZCBmcm9tIG5iLWNoYXIgLSBcXHQgLSAjeDg1IC0gI3hBMCAtICN4MjAyOCAtICN4MjAyOS5cbmZ1bmN0aW9uIGlzUHJpbnRhYmxlKGMpIHtcbiAgcmV0dXJuICAoMHgwMDAyMCA8PSBjICYmIGMgPD0gMHgwMDAwN0UpXG4gICAgICB8fCAoKDB4MDAwQTEgPD0gYyAmJiBjIDw9IDB4MDBEN0ZGKSAmJiBjICE9PSAweDIwMjggJiYgYyAhPT0gMHgyMDI5KVxuICAgICAgfHwgKCgweDBFMDAwIDw9IGMgJiYgYyA8PSAweDAwRkZGRCkgJiYgYyAhPT0gMHhGRUZGIC8qIEJPTSAqLylcbiAgICAgIHx8ICAoMHgxMDAwMCA8PSBjICYmIGMgPD0gMHgxMEZGRkYpO1xufVxuXG4vLyBbMzRdIG5zLWNoYXIgOjo9IG5iLWNoYXIgLSBzLXdoaXRlXG4vLyBbMjddIG5iLWNoYXIgOjo9IGMtcHJpbnRhYmxlIC0gYi1jaGFyIC0gYy1ieXRlLW9yZGVyLW1hcmtcbi8vIFsyNl0gYi1jaGFyICA6Oj0gYi1saW5lLWZlZWQgfCBiLWNhcnJpYWdlLXJldHVyblxuLy8gWzI0XSBiLWxpbmUtZmVlZCAgICAgICA6Oj0gICAgICN4QSAgICAvKiBMRiAqL1xuLy8gWzI1XSBiLWNhcnJpYWdlLXJldHVybiA6Oj0gICAgICN4RCAgICAvKiBDUiAqL1xuLy8gWzNdICBjLWJ5dGUtb3JkZXItbWFyayA6Oj0gICAgICN4RkVGRlxuZnVuY3Rpb24gaXNOc0NoYXIoYykge1xuICByZXR1cm4gaXNQcmludGFibGUoYykgJiYgIWlzV2hpdGVzcGFjZShjKVxuICAgIC8vIGJ5dGUtb3JkZXItbWFya1xuICAgICYmIGMgIT09IDB4RkVGRlxuICAgIC8vIGItY2hhclxuICAgICYmIGMgIT09IENIQVJfQ0FSUklBR0VfUkVUVVJOXG4gICAgJiYgYyAhPT0gQ0hBUl9MSU5FX0ZFRUQ7XG59XG5cbi8vIFNpbXBsaWZpZWQgdGVzdCBmb3IgdmFsdWVzIGFsbG93ZWQgYWZ0ZXIgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBwbGFpbiBzdHlsZS5cbmZ1bmN0aW9uIGlzUGxhaW5TYWZlKGMsIHByZXYpIHtcbiAgLy8gVXNlcyBhIHN1YnNldCBvZiBuYi1jaGFyIC0gYy1mbG93LWluZGljYXRvciAtIFwiOlwiIC0gXCIjXCJcbiAgLy8gd2hlcmUgbmItY2hhciA6Oj0gYy1wcmludGFibGUgLSBiLWNoYXIgLSBjLWJ5dGUtb3JkZXItbWFyay5cbiAgcmV0dXJuIGlzUHJpbnRhYmxlKGMpICYmIGMgIT09IDB4RkVGRlxuICAgIC8vIC0gYy1mbG93LWluZGljYXRvclxuICAgICYmIGMgIT09IENIQVJfQ09NTUFcbiAgICAmJiBjICE9PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9MRUZUX0NVUkxZX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX1JJR0hUX0NVUkxZX0JSQUNLRVRcbiAgICAvLyAtIFwiOlwiIC0gXCIjXCJcbiAgICAvLyAvKiBBbiBucy1jaGFyIHByZWNlZGluZyAqLyBcIiNcIlxuICAgICYmIGMgIT09IENIQVJfQ09MT05cbiAgICAmJiAoKGMgIT09IENIQVJfU0hBUlApIHx8IChwcmV2ICYmIGlzTnNDaGFyKHByZXYpKSk7XG59XG5cbi8vIFNpbXBsaWZpZWQgdGVzdCBmb3IgdmFsdWVzIGFsbG93ZWQgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBwbGFpbiBzdHlsZS5cbmZ1bmN0aW9uIGlzUGxhaW5TYWZlRmlyc3QoYykge1xuICAvLyBVc2VzIGEgc3Vic2V0IG9mIG5zLWNoYXIgLSBjLWluZGljYXRvclxuICAvLyB3aGVyZSBucy1jaGFyID0gbmItY2hhciAtIHMtd2hpdGUuXG4gIHJldHVybiBpc1ByaW50YWJsZShjKSAmJiBjICE9PSAweEZFRkZcbiAgICAmJiAhaXNXaGl0ZXNwYWNlKGMpIC8vIC0gcy13aGl0ZVxuICAgIC8vIC0gKGMtaW5kaWNhdG9yIDo6PVxuICAgIC8vIFx1MjAxQy1cdTIwMUQgfCBcdTIwMUM/XHUyMDFEIHwgXHUyMDFDOlx1MjAxRCB8IFx1MjAxQyxcdTIwMUQgfCBcdTIwMUNbXHUyMDFEIHwgXHUyMDFDXVx1MjAxRCB8IFx1MjAxQ3tcdTIwMUQgfCBcdTIwMUN9XHUyMDFEXG4gICAgJiYgYyAhPT0gQ0hBUl9NSU5VU1xuICAgICYmIGMgIT09IENIQVJfUVVFU1RJT05cbiAgICAmJiBjICE9PSBDSEFSX0NPTE9OXG4gICAgJiYgYyAhPT0gQ0hBUl9DT01NQVxuICAgICYmIGMgIT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVRcbiAgICAmJiBjICE9PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfUklHSFRfQ1VSTFlfQlJBQ0tFVFxuICAgIC8vIHwgXHUyMDFDI1x1MjAxRCB8IFx1MjAxQyZcdTIwMUQgfCBcdTIwMUMqXHUyMDFEIHwgXHUyMDFDIVx1MjAxRCB8IFx1MjAxQ3xcdTIwMUQgfCBcdTIwMUM9XHUyMDFEIHwgXHUyMDFDPlx1MjAxRCB8IFx1MjAxQydcdTIwMUQgfCBcdTIwMUNcIlx1MjAxRFxuICAgICYmIGMgIT09IENIQVJfU0hBUlBcbiAgICAmJiBjICE9PSBDSEFSX0FNUEVSU0FORFxuICAgICYmIGMgIT09IENIQVJfQVNURVJJU0tcbiAgICAmJiBjICE9PSBDSEFSX0VYQ0xBTUFUSU9OXG4gICAgJiYgYyAhPT0gQ0hBUl9WRVJUSUNBTF9MSU5FXG4gICAgJiYgYyAhPT0gQ0hBUl9FUVVBTFNcbiAgICAmJiBjICE9PSBDSEFSX0dSRUFURVJfVEhBTlxuICAgICYmIGMgIT09IENIQVJfU0lOR0xFX1FVT1RFXG4gICAgJiYgYyAhPT0gQ0hBUl9ET1VCTEVfUVVPVEVcbiAgICAvLyB8IFx1MjAxQyVcdTIwMUQgfCBcdTIwMUNAXHUyMDFEIHwgXHUyMDFDYFx1MjAxRClcbiAgICAmJiBjICE9PSBDSEFSX1BFUkNFTlRcbiAgICAmJiBjICE9PSBDSEFSX0NPTU1FUkNJQUxfQVRcbiAgICAmJiBjICE9PSBDSEFSX0dSQVZFX0FDQ0VOVDtcbn1cblxuLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIGJsb2NrIGluZGVudGF0aW9uIGluZGljYXRvciBpcyByZXF1aXJlZC5cbmZ1bmN0aW9uIG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSB7XG4gIHZhciBsZWFkaW5nU3BhY2VSZSA9IC9eXFxuKiAvO1xuICByZXR1cm4gbGVhZGluZ1NwYWNlUmUudGVzdChzdHJpbmcpO1xufVxuXG52YXIgU1RZTEVfUExBSU4gICA9IDEsXG4gICAgU1RZTEVfU0lOR0xFICA9IDIsXG4gICAgU1RZTEVfTElURVJBTCA9IDMsXG4gICAgU1RZTEVfRk9MREVEICA9IDQsXG4gICAgU1RZTEVfRE9VQkxFICA9IDU7XG5cbi8vIERldGVybWluZXMgd2hpY2ggc2NhbGFyIHN0eWxlcyBhcmUgcG9zc2libGUgYW5kIHJldHVybnMgdGhlIHByZWZlcnJlZCBzdHlsZS5cbi8vIGxpbmVXaWR0aCA9IC0xID0+IG5vIGxpbWl0LlxuLy8gUHJlLWNvbmRpdGlvbnM6IHN0ci5sZW5ndGggPiAwLlxuLy8gUG9zdC1jb25kaXRpb25zOlxuLy8gICAgU1RZTEVfUExBSU4gb3IgU1RZTEVfU0lOR0xFID0+IG5vIFxcbiBhcmUgaW4gdGhlIHN0cmluZy5cbi8vICAgIFNUWUxFX0xJVEVSQUwgPT4gbm8gbGluZXMgYXJlIHN1aXRhYmxlIGZvciBmb2xkaW5nIChvciBsaW5lV2lkdGggaXMgLTEpLlxuLy8gICAgU1RZTEVfRk9MREVEID0+IGEgbGluZSA+IGxpbmVXaWR0aCBhbmQgY2FuIGJlIGZvbGRlZCAoYW5kIGxpbmVXaWR0aCAhPSAtMSkuXG5mdW5jdGlvbiBjaG9vc2VTY2FsYXJTdHlsZShzdHJpbmcsIHNpbmdsZUxpbmVPbmx5LCBpbmRlbnRQZXJMZXZlbCwgbGluZVdpZHRoLCB0ZXN0QW1iaWd1b3VzVHlwZSkge1xuICB2YXIgaTtcbiAgdmFyIGNoYXIsIHByZXZfY2hhcjtcbiAgdmFyIGhhc0xpbmVCcmVhayA9IGZhbHNlO1xuICB2YXIgaGFzRm9sZGFibGVMaW5lID0gZmFsc2U7IC8vIG9ubHkgY2hlY2tlZCBpZiBzaG91bGRUcmFja1dpZHRoXG4gIHZhciBzaG91bGRUcmFja1dpZHRoID0gbGluZVdpZHRoICE9PSAtMTtcbiAgdmFyIHByZXZpb3VzTGluZUJyZWFrID0gLTE7IC8vIGNvdW50IHRoZSBmaXJzdCBsaW5lIGNvcnJlY3RseVxuICB2YXIgcGxhaW4gPSBpc1BsYWluU2FmZUZpcnN0KHN0cmluZy5jaGFyQ29kZUF0KDApKVxuICAgICAgICAgICYmICFpc1doaXRlc3BhY2Uoc3RyaW5nLmNoYXJDb2RlQXQoc3RyaW5nLmxlbmd0aCAtIDEpKTtcblxuICBpZiAoc2luZ2xlTGluZU9ubHkpIHtcbiAgICAvLyBDYXNlOiBubyBibG9jayBzdHlsZXMuXG4gICAgLy8gQ2hlY2sgZm9yIGRpc2FsbG93ZWQgY2hhcmFjdGVycyB0byBydWxlIG91dCBwbGFpbiBhbmQgc2luZ2xlLlxuICAgIGZvciAoaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAgIGlmICghaXNQcmludGFibGUoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgICAgIH1cbiAgICAgIHByZXZfY2hhciA9IGkgPiAwID8gc3RyaW5nLmNoYXJDb2RlQXQoaSAtIDEpIDogbnVsbDtcbiAgICAgIHBsYWluID0gcGxhaW4gJiYgaXNQbGFpblNhZmUoY2hhciwgcHJldl9jaGFyKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gQ2FzZTogYmxvY2sgc3R5bGVzIHBlcm1pdHRlZC5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGFyID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG4gICAgICBpZiAoY2hhciA9PT0gQ0hBUl9MSU5FX0ZFRUQpIHtcbiAgICAgICAgaGFzTGluZUJyZWFrID0gdHJ1ZTtcbiAgICAgICAgLy8gQ2hlY2sgaWYgYW55IGxpbmUgY2FuIGJlIGZvbGRlZC5cbiAgICAgICAgaWYgKHNob3VsZFRyYWNrV2lkdGgpIHtcbiAgICAgICAgICBoYXNGb2xkYWJsZUxpbmUgPSBoYXNGb2xkYWJsZUxpbmUgfHxcbiAgICAgICAgICAgIC8vIEZvbGRhYmxlIGxpbmUgPSB0b28gbG9uZywgYW5kIG5vdCBtb3JlLWluZGVudGVkLlxuICAgICAgICAgICAgKGkgLSBwcmV2aW91c0xpbmVCcmVhayAtIDEgPiBsaW5lV2lkdGggJiZcbiAgICAgICAgICAgICBzdHJpbmdbcHJldmlvdXNMaW5lQnJlYWsgKyAxXSAhPT0gJyAnKTtcbiAgICAgICAgICBwcmV2aW91c0xpbmVCcmVhayA9IGk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWlzUHJpbnRhYmxlKGNoYXIpKSB7XG4gICAgICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gICAgICB9XG4gICAgICBwcmV2X2NoYXIgPSBpID4gMCA/IHN0cmluZy5jaGFyQ29kZUF0KGkgLSAxKSA6IG51bGw7XG4gICAgICBwbGFpbiA9IHBsYWluICYmIGlzUGxhaW5TYWZlKGNoYXIsIHByZXZfY2hhcik7XG4gICAgfVxuICAgIC8vIGluIGNhc2UgdGhlIGVuZCBpcyBtaXNzaW5nIGEgXFxuXG4gICAgaGFzRm9sZGFibGVMaW5lID0gaGFzRm9sZGFibGVMaW5lIHx8IChzaG91bGRUcmFja1dpZHRoICYmXG4gICAgICAoaSAtIHByZXZpb3VzTGluZUJyZWFrIC0gMSA+IGxpbmVXaWR0aCAmJlxuICAgICAgIHN0cmluZ1twcmV2aW91c0xpbmVCcmVhayArIDFdICE9PSAnICcpKTtcbiAgfVxuICAvLyBBbHRob3VnaCBldmVyeSBzdHlsZSBjYW4gcmVwcmVzZW50IFxcbiB3aXRob3V0IGVzY2FwaW5nLCBwcmVmZXIgYmxvY2sgc3R5bGVzXG4gIC8vIGZvciBtdWx0aWxpbmUsIHNpbmNlIHRoZXkncmUgbW9yZSByZWFkYWJsZSBhbmQgdGhleSBkb24ndCBhZGQgZW1wdHkgbGluZXMuXG4gIC8vIEFsc28gcHJlZmVyIGZvbGRpbmcgYSBzdXBlci1sb25nIGxpbmUuXG4gIGlmICghaGFzTGluZUJyZWFrICYmICFoYXNGb2xkYWJsZUxpbmUpIHtcbiAgICAvLyBTdHJpbmdzIGludGVycHJldGFibGUgYXMgYW5vdGhlciB0eXBlIGhhdmUgdG8gYmUgcXVvdGVkO1xuICAgIC8vIGUuZy4gdGhlIHN0cmluZyAndHJ1ZScgdnMuIHRoZSBib29sZWFuIHRydWUuXG4gICAgcmV0dXJuIHBsYWluICYmICF0ZXN0QW1iaWd1b3VzVHlwZShzdHJpbmcpXG4gICAgICA/IFNUWUxFX1BMQUlOIDogU1RZTEVfU0lOR0xFO1xuICB9XG4gIC8vIEVkZ2UgY2FzZTogYmxvY2sgaW5kZW50YXRpb24gaW5kaWNhdG9yIGNhbiBvbmx5IGhhdmUgb25lIGRpZ2l0LlxuICBpZiAoaW5kZW50UGVyTGV2ZWwgPiA5ICYmIG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSkge1xuICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gIH1cbiAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGJsb2NrIHN0eWxlcyBhcmUgdmFsaWQuXG4gIC8vIFByZWZlciBsaXRlcmFsIHN0eWxlIHVubGVzcyB3ZSB3YW50IHRvIGZvbGQuXG4gIHJldHVybiBoYXNGb2xkYWJsZUxpbmUgPyBTVFlMRV9GT0xERUQgOiBTVFlMRV9MSVRFUkFMO1xufVxuXG4vLyBOb3RlOiBsaW5lIGJyZWFraW5nL2ZvbGRpbmcgaXMgaW1wbGVtZW50ZWQgZm9yIG9ubHkgdGhlIGZvbGRlZCBzdHlsZS5cbi8vIE5CLiBXZSBkcm9wIHRoZSBsYXN0IHRyYWlsaW5nIG5ld2xpbmUgKGlmIGFueSkgb2YgYSByZXR1cm5lZCBibG9jayBzY2FsYXJcbi8vICBzaW5jZSB0aGUgZHVtcGVyIGFkZHMgaXRzIG93biBuZXdsaW5lLiBUaGlzIGFsd2F5cyB3b3Jrczpcbi8vICAgIFx1MjAyMiBObyBlbmRpbmcgbmV3bGluZSA9PiB1bmFmZmVjdGVkOyBhbHJlYWR5IHVzaW5nIHN0cmlwIFwiLVwiIGNob21waW5nLlxuLy8gICAgXHUyMDIyIEVuZGluZyBuZXdsaW5lICAgID0+IHJlbW92ZWQgdGhlbiByZXN0b3JlZC5cbi8vICBJbXBvcnRhbnRseSwgdGhpcyBrZWVwcyB0aGUgXCIrXCIgY2hvbXAgaW5kaWNhdG9yIGZyb20gZ2FpbmluZyBhbiBleHRyYSBsaW5lLlxuZnVuY3Rpb24gd3JpdGVTY2FsYXIoc3RhdGUsIHN0cmluZywgbGV2ZWwsIGlza2V5KSB7XG4gIHN0YXRlLmR1bXAgPSAoZnVuY3Rpb24gKCkge1xuICAgIGlmIChzdHJpbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gXCInJ1wiO1xuICAgIH1cbiAgICBpZiAoIXN0YXRlLm5vQ29tcGF0TW9kZSAmJlxuICAgICAgICBERVBSRUNBVEVEX0JPT0xFQU5TX1NZTlRBWC5pbmRleE9mKHN0cmluZykgIT09IC0xKSB7XG4gICAgICByZXR1cm4gXCInXCIgKyBzdHJpbmcgKyBcIidcIjtcbiAgICB9XG5cbiAgICB2YXIgaW5kZW50ID0gc3RhdGUuaW5kZW50ICogTWF0aC5tYXgoMSwgbGV2ZWwpOyAvLyBubyAwLWluZGVudCBzY2FsYXJzXG4gICAgLy8gQXMgaW5kZW50YXRpb24gZ2V0cyBkZWVwZXIsIGxldCB0aGUgd2lkdGggZGVjcmVhc2UgbW9ub3RvbmljYWxseVxuICAgIC8vIHRvIHRoZSBsb3dlciBib3VuZCBtaW4oc3RhdGUubGluZVdpZHRoLCA0MCkuXG4gICAgLy8gTm90ZSB0aGF0IHRoaXMgaW1wbGllc1xuICAgIC8vICBzdGF0ZS5saW5lV2lkdGggXHUyMjY0IDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBpcyBmaXhlZCBhdCB0aGUgbG93ZXIgYm91bmQuXG4gICAgLy8gIHN0YXRlLmxpbmVXaWR0aCA+IDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBkZWNyZWFzZXMgdW50aWwgdGhlIGxvd2VyIGJvdW5kLlxuICAgIC8vIFRoaXMgYmVoYXZlcyBiZXR0ZXIgdGhhbiBhIGNvbnN0YW50IG1pbmltdW0gd2lkdGggd2hpY2ggZGlzYWxsb3dzIG5hcnJvd2VyIG9wdGlvbnMsXG4gICAgLy8gb3IgYW4gaW5kZW50IHRocmVzaG9sZCB3aGljaCBjYXVzZXMgdGhlIHdpZHRoIHRvIHN1ZGRlbmx5IGluY3JlYXNlLlxuICAgIHZhciBsaW5lV2lkdGggPSBzdGF0ZS5saW5lV2lkdGggPT09IC0xXG4gICAgICA/IC0xIDogTWF0aC5tYXgoTWF0aC5taW4oc3RhdGUubGluZVdpZHRoLCA0MCksIHN0YXRlLmxpbmVXaWR0aCAtIGluZGVudCk7XG5cbiAgICAvLyBXaXRob3V0IGtub3dpbmcgaWYga2V5cyBhcmUgaW1wbGljaXQvZXhwbGljaXQsIGFzc3VtZSBpbXBsaWNpdCBmb3Igc2FmZXR5LlxuICAgIHZhciBzaW5nbGVMaW5lT25seSA9IGlza2V5XG4gICAgICAvLyBObyBibG9jayBzdHlsZXMgaW4gZmxvdyBtb2RlLlxuICAgICAgfHwgKHN0YXRlLmZsb3dMZXZlbCA+IC0xICYmIGxldmVsID49IHN0YXRlLmZsb3dMZXZlbCk7XG4gICAgZnVuY3Rpb24gdGVzdEFtYmlndWl0eShzdHJpbmcpIHtcbiAgICAgIHJldHVybiB0ZXN0SW1wbGljaXRSZXNvbHZpbmcoc3RhdGUsIHN0cmluZyk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjaG9vc2VTY2FsYXJTdHlsZShzdHJpbmcsIHNpbmdsZUxpbmVPbmx5LCBzdGF0ZS5pbmRlbnQsIGxpbmVXaWR0aCwgdGVzdEFtYmlndWl0eSkpIHtcbiAgICAgIGNhc2UgU1RZTEVfUExBSU46XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICBjYXNlIFNUWUxFX1NJTkdMRTpcbiAgICAgICAgcmV0dXJuIFwiJ1wiICsgc3RyaW5nLnJlcGxhY2UoLycvZywgXCInJ1wiKSArIFwiJ1wiO1xuICAgICAgY2FzZSBTVFlMRV9MSVRFUkFMOlxuICAgICAgICByZXR1cm4gJ3wnICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpXG4gICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoc3RyaW5nLCBpbmRlbnQpKTtcbiAgICAgIGNhc2UgU1RZTEVfRk9MREVEOlxuICAgICAgICByZXR1cm4gJz4nICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpXG4gICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoZm9sZFN0cmluZyhzdHJpbmcsIGxpbmVXaWR0aCksIGluZGVudCkpO1xuICAgICAgY2FzZSBTVFlMRV9ET1VCTEU6XG4gICAgICAgIHJldHVybiAnXCInICsgZXNjYXBlU3RyaW5nKHN0cmluZywgbGluZVdpZHRoKSArICdcIic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignaW1wb3NzaWJsZSBlcnJvcjogaW52YWxpZCBzY2FsYXIgc3R5bGUnKTtcbiAgICB9XG4gIH0oKSk7XG59XG5cbi8vIFByZS1jb25kaXRpb25zOiBzdHJpbmcgaXMgdmFsaWQgZm9yIGEgYmxvY2sgc2NhbGFyLCAxIDw9IGluZGVudFBlckxldmVsIDw9IDkuXG5mdW5jdGlvbiBibG9ja0hlYWRlcihzdHJpbmcsIGluZGVudFBlckxldmVsKSB7XG4gIHZhciBpbmRlbnRJbmRpY2F0b3IgPSBuZWVkSW5kZW50SW5kaWNhdG9yKHN0cmluZykgPyBTdHJpbmcoaW5kZW50UGVyTGV2ZWwpIDogJyc7XG5cbiAgLy8gbm90ZSB0aGUgc3BlY2lhbCBjYXNlOiB0aGUgc3RyaW5nICdcXG4nIGNvdW50cyBhcyBhIFwidHJhaWxpbmdcIiBlbXB0eSBsaW5lLlxuICB2YXIgY2xpcCA9ICAgICAgICAgIHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMV0gPT09ICdcXG4nO1xuICB2YXIga2VlcCA9IGNsaXAgJiYgKHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMl0gPT09ICdcXG4nIHx8IHN0cmluZyA9PT0gJ1xcbicpO1xuICB2YXIgY2hvbXAgPSBrZWVwID8gJysnIDogKGNsaXAgPyAnJyA6ICctJyk7XG5cbiAgcmV0dXJuIGluZGVudEluZGljYXRvciArIGNob21wICsgJ1xcbic7XG59XG5cbi8vIChTZWUgdGhlIG5vdGUgZm9yIHdyaXRlU2NhbGFyLilcbmZ1bmN0aW9uIGRyb3BFbmRpbmdOZXdsaW5lKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nW3N0cmluZy5sZW5ndGggLSAxXSA9PT0gJ1xcbicgPyBzdHJpbmcuc2xpY2UoMCwgLTEpIDogc3RyaW5nO1xufVxuXG4vLyBOb3RlOiBhIGxvbmcgbGluZSB3aXRob3V0IGEgc3VpdGFibGUgYnJlYWsgcG9pbnQgd2lsbCBleGNlZWQgdGhlIHdpZHRoIGxpbWl0LlxuLy8gUHJlLWNvbmRpdGlvbnM6IGV2ZXJ5IGNoYXIgaW4gc3RyIGlzUHJpbnRhYmxlLCBzdHIubGVuZ3RoID4gMCwgd2lkdGggPiAwLlxuZnVuY3Rpb24gZm9sZFN0cmluZyhzdHJpbmcsIHdpZHRoKSB7XG4gIC8vIEluIGZvbGRlZCBzdHlsZSwgJGskIGNvbnNlY3V0aXZlIG5ld2xpbmVzIG91dHB1dCBhcyAkaysxJCBuZXdsaW5lc1x1MjAxNFxuICAvLyB1bmxlc3MgdGhleSdyZSBiZWZvcmUgb3IgYWZ0ZXIgYSBtb3JlLWluZGVudGVkIGxpbmUsIG9yIGF0IHRoZSB2ZXJ5XG4gIC8vIGJlZ2lubmluZyBvciBlbmQsIGluIHdoaWNoIGNhc2UgJGskIG1hcHMgdG8gJGskLlxuICAvLyBUaGVyZWZvcmUsIHBhcnNlIGVhY2ggY2h1bmsgYXMgbmV3bGluZShzKSBmb2xsb3dlZCBieSBhIGNvbnRlbnQgbGluZS5cbiAgdmFyIGxpbmVSZSA9IC8oXFxuKykoW15cXG5dKikvZztcblxuICAvLyBmaXJzdCBsaW5lIChwb3NzaWJseSBhbiBlbXB0eSBsaW5lKVxuICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbmV4dExGID0gc3RyaW5nLmluZGV4T2YoJ1xcbicpO1xuICAgIG5leHRMRiA9IG5leHRMRiAhPT0gLTEgPyBuZXh0TEYgOiBzdHJpbmcubGVuZ3RoO1xuICAgIGxpbmVSZS5sYXN0SW5kZXggPSBuZXh0TEY7XG4gICAgcmV0dXJuIGZvbGRMaW5lKHN0cmluZy5zbGljZSgwLCBuZXh0TEYpLCB3aWR0aCk7XG4gIH0oKSk7XG4gIC8vIElmIHdlIGhhdmVuJ3QgcmVhY2hlZCB0aGUgZmlyc3QgY29udGVudCBsaW5lIHlldCwgZG9uJ3QgYWRkIGFuIGV4dHJhIFxcbi5cbiAgdmFyIHByZXZNb3JlSW5kZW50ZWQgPSBzdHJpbmdbMF0gPT09ICdcXG4nIHx8IHN0cmluZ1swXSA9PT0gJyAnO1xuICB2YXIgbW9yZUluZGVudGVkO1xuXG4gIC8vIHJlc3Qgb2YgdGhlIGxpbmVzXG4gIHZhciBtYXRjaDtcbiAgd2hpbGUgKChtYXRjaCA9IGxpbmVSZS5leGVjKHN0cmluZykpKSB7XG4gICAgdmFyIHByZWZpeCA9IG1hdGNoWzFdLCBsaW5lID0gbWF0Y2hbMl07XG4gICAgbW9yZUluZGVudGVkID0gKGxpbmVbMF0gPT09ICcgJyk7XG4gICAgcmVzdWx0ICs9IHByZWZpeFxuICAgICAgKyAoIXByZXZNb3JlSW5kZW50ZWQgJiYgIW1vcmVJbmRlbnRlZCAmJiBsaW5lICE9PSAnJ1xuICAgICAgICA/ICdcXG4nIDogJycpXG4gICAgICArIGZvbGRMaW5lKGxpbmUsIHdpZHRoKTtcbiAgICBwcmV2TW9yZUluZGVudGVkID0gbW9yZUluZGVudGVkO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR3JlZWR5IGxpbmUgYnJlYWtpbmcuXG4vLyBQaWNrcyB0aGUgbG9uZ2VzdCBsaW5lIHVuZGVyIHRoZSBsaW1pdCBlYWNoIHRpbWUsXG4vLyBvdGhlcndpc2Ugc2V0dGxlcyBmb3IgdGhlIHNob3J0ZXN0IGxpbmUgb3ZlciB0aGUgbGltaXQuXG4vLyBOQi4gTW9yZS1pbmRlbnRlZCBsaW5lcyAqY2Fubm90KiBiZSBmb2xkZWQsIGFzIHRoYXQgd291bGQgYWRkIGFuIGV4dHJhIFxcbi5cbmZ1bmN0aW9uIGZvbGRMaW5lKGxpbmUsIHdpZHRoKSB7XG4gIGlmIChsaW5lID09PSAnJyB8fCBsaW5lWzBdID09PSAnICcpIHJldHVybiBsaW5lO1xuXG4gIC8vIFNpbmNlIGEgbW9yZS1pbmRlbnRlZCBsaW5lIGFkZHMgYSBcXG4sIGJyZWFrcyBjYW4ndCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlLlxuICB2YXIgYnJlYWtSZSA9IC8gW14gXS9nOyAvLyBub3RlOiB0aGUgbWF0Y2ggaW5kZXggd2lsbCBhbHdheXMgYmUgPD0gbGVuZ3RoLTIuXG4gIHZhciBtYXRjaDtcbiAgLy8gc3RhcnQgaXMgYW4gaW5jbHVzaXZlIGluZGV4LiBlbmQsIGN1cnIsIGFuZCBuZXh0IGFyZSBleGNsdXNpdmUuXG4gIHZhciBzdGFydCA9IDAsIGVuZCwgY3VyciA9IDAsIG5leHQgPSAwO1xuICB2YXIgcmVzdWx0ID0gJyc7XG5cbiAgLy8gSW52YXJpYW50czogMCA8PSBzdGFydCA8PSBsZW5ndGgtMS5cbiAgLy8gICAwIDw9IGN1cnIgPD0gbmV4dCA8PSBtYXgoMCwgbGVuZ3RoLTIpLiBjdXJyIC0gc3RhcnQgPD0gd2lkdGguXG4gIC8vIEluc2lkZSB0aGUgbG9vcDpcbiAgLy8gICBBIG1hdGNoIGltcGxpZXMgbGVuZ3RoID49IDIsIHNvIGN1cnIgYW5kIG5leHQgYXJlIDw9IGxlbmd0aC0yLlxuICB3aGlsZSAoKG1hdGNoID0gYnJlYWtSZS5leGVjKGxpbmUpKSkge1xuICAgIG5leHQgPSBtYXRjaC5pbmRleDtcbiAgICAvLyBtYWludGFpbiBpbnZhcmlhbnQ6IGN1cnIgLSBzdGFydCA8PSB3aWR0aFxuICAgIGlmIChuZXh0IC0gc3RhcnQgPiB3aWR0aCkge1xuICAgICAgZW5kID0gKGN1cnIgPiBzdGFydCkgPyBjdXJyIDogbmV4dDsgLy8gZGVyaXZlIGVuZCA8PSBsZW5ndGgtMlxuICAgICAgcmVzdWx0ICs9ICdcXG4nICsgbGluZS5zbGljZShzdGFydCwgZW5kKTtcbiAgICAgIC8vIHNraXAgdGhlIHNwYWNlIHRoYXQgd2FzIG91dHB1dCBhcyBcXG5cbiAgICAgIHN0YXJ0ID0gZW5kICsgMTsgICAgICAgICAgICAgICAgICAgIC8vIGRlcml2ZSBzdGFydCA8PSBsZW5ndGgtMVxuICAgIH1cbiAgICBjdXJyID0gbmV4dDtcbiAgfVxuXG4gIC8vIEJ5IHRoZSBpbnZhcmlhbnRzLCBzdGFydCA8PSBsZW5ndGgtMSwgc28gdGhlcmUgaXMgc29tZXRoaW5nIGxlZnQgb3Zlci5cbiAgLy8gSXQgaXMgZWl0aGVyIHRoZSB3aG9sZSBzdHJpbmcgb3IgYSBwYXJ0IHN0YXJ0aW5nIGZyb20gbm9uLXdoaXRlc3BhY2UuXG4gIHJlc3VsdCArPSAnXFxuJztcbiAgLy8gSW5zZXJ0IGEgYnJlYWsgaWYgdGhlIHJlbWFpbmRlciBpcyB0b28gbG9uZyBhbmQgdGhlcmUgaXMgYSBicmVhayBhdmFpbGFibGUuXG4gIGlmIChsaW5lLmxlbmd0aCAtIHN0YXJ0ID4gd2lkdGggJiYgY3VyciA+IHN0YXJ0KSB7XG4gICAgcmVzdWx0ICs9IGxpbmUuc2xpY2Uoc3RhcnQsIGN1cnIpICsgJ1xcbicgKyBsaW5lLnNsaWNlKGN1cnIgKyAxKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgKz0gbGluZS5zbGljZShzdGFydCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnNsaWNlKDEpOyAvLyBkcm9wIGV4dHJhIFxcbiBqb2luZXJcbn1cblxuLy8gRXNjYXBlcyBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLlxuZnVuY3Rpb24gZXNjYXBlU3RyaW5nKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBjaGFyLCBuZXh0Q2hhcjtcbiAgdmFyIGVzY2FwZVNlcTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGkrKykge1xuICAgIGNoYXIgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcbiAgICAvLyBDaGVjayBmb3Igc3Vycm9nYXRlIHBhaXJzIChyZWZlcmVuY2UgVW5pY29kZSAzLjAgc2VjdGlvbiBcIjMuNyBTdXJyb2dhdGVzXCIpLlxuICAgIGlmIChjaGFyID49IDB4RDgwMCAmJiBjaGFyIDw9IDB4REJGRi8qIGhpZ2ggc3Vycm9nYXRlICovKSB7XG4gICAgICBuZXh0Q2hhciA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKTtcbiAgICAgIGlmIChuZXh0Q2hhciA+PSAweERDMDAgJiYgbmV4dENoYXIgPD0gMHhERkZGLyogbG93IHN1cnJvZ2F0ZSAqLykge1xuICAgICAgICAvLyBDb21iaW5lIHRoZSBzdXJyb2dhdGUgcGFpciBhbmQgc3RvcmUgaXQgZXNjYXBlZC5cbiAgICAgICAgcmVzdWx0ICs9IGVuY29kZUhleCgoY2hhciAtIDB4RDgwMCkgKiAweDQwMCArIG5leHRDaGFyIC0gMHhEQzAwICsgMHgxMDAwMCk7XG4gICAgICAgIC8vIEFkdmFuY2UgaW5kZXggb25lIGV4dHJhIHNpbmNlIHdlIGFscmVhZHkgdXNlZCB0aGF0IGNoYXIgaGVyZS5cbiAgICAgICAgaSsrOyBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZXNjYXBlU2VxID0gRVNDQVBFX1NFUVVFTkNFU1tjaGFyXTtcbiAgICByZXN1bHQgKz0gIWVzY2FwZVNlcSAmJiBpc1ByaW50YWJsZShjaGFyKVxuICAgICAgPyBzdHJpbmdbaV1cbiAgICAgIDogZXNjYXBlU2VxIHx8IGVuY29kZUhleChjaGFyKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvd1NlcXVlbmNlKHN0YXRlLCBsZXZlbCwgb2JqZWN0KSB7XG4gIHZhciBfcmVzdWx0ID0gJycsXG4gICAgICBfdGFnICAgID0gc3RhdGUudGFnLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGg7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgLy8gV3JpdGUgb25seSB2YWxpZCBlbGVtZW50cy5cbiAgICBpZiAod3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0W2luZGV4XSwgZmFsc2UsIGZhbHNlKSkge1xuICAgICAgaWYgKGluZGV4ICE9PSAwKSBfcmVzdWx0ICs9ICcsJyArICghc3RhdGUuY29uZGVuc2VGbG93ID8gJyAnIDogJycpO1xuICAgICAgX3Jlc3VsdCArPSBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSAnWycgKyBfcmVzdWx0ICsgJ10nO1xufVxuXG5mdW5jdGlvbiB3cml0ZUJsb2NrU2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBvYmplY3QsIGNvbXBhY3QpIHtcbiAgdmFyIF9yZXN1bHQgPSAnJyxcbiAgICAgIF90YWcgICAgPSBzdGF0ZS50YWcsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAvLyBXcml0ZSBvbmx5IHZhbGlkIGVsZW1lbnRzLlxuICAgIGlmICh3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgb2JqZWN0W2luZGV4XSwgdHJ1ZSwgdHJ1ZSkpIHtcbiAgICAgIGlmICghY29tcGFjdCB8fCBpbmRleCAhPT0gMCkge1xuICAgICAgICBfcmVzdWx0ICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkge1xuICAgICAgICBfcmVzdWx0ICs9ICctJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9yZXN1bHQgKz0gJy0gJztcbiAgICAgIH1cblxuICAgICAgX3Jlc3VsdCArPSBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSBfcmVzdWx0IHx8ICdbXSc7IC8vIEVtcHR5IHNlcXVlbmNlIGlmIG5vIHZhbGlkIHZhbHVlcy5cbn1cblxuZnVuY3Rpb24gd3JpdGVGbG93TWFwcGluZyhzdGF0ZSwgbGV2ZWwsIG9iamVjdCkge1xuICB2YXIgX3Jlc3VsdCAgICAgICA9ICcnLFxuICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIG9iamVjdEtleUxpc3QgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGgsXG4gICAgICBvYmplY3RLZXksXG4gICAgICBvYmplY3RWYWx1ZSxcbiAgICAgIHBhaXJCdWZmZXI7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuXG4gICAgcGFpckJ1ZmZlciA9ICcnO1xuICAgIGlmIChpbmRleCAhPT0gMCkgcGFpckJ1ZmZlciArPSAnLCAnO1xuXG4gICAgaWYgKHN0YXRlLmNvbmRlbnNlRmxvdykgcGFpckJ1ZmZlciArPSAnXCInO1xuXG4gICAgb2JqZWN0S2V5ID0gb2JqZWN0S2V5TGlzdFtpbmRleF07XG4gICAgb2JqZWN0VmFsdWUgPSBvYmplY3Rbb2JqZWN0S2V5XTtcblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0S2V5LCBmYWxzZSwgZmFsc2UpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIGtleTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuZHVtcC5sZW5ndGggPiAxMDI0KSBwYWlyQnVmZmVyICs9ICc/ICc7XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXAgKyAoc3RhdGUuY29uZGVuc2VGbG93ID8gJ1wiJyA6ICcnKSArICc6JyArIChzdGF0ZS5jb25kZW5zZUZsb3cgPyAnJyA6ICcgJyk7XG5cbiAgICBpZiAoIXdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwsIG9iamVjdFZhbHVlLCBmYWxzZSwgZmFsc2UpKSB7XG4gICAgICBjb250aW51ZTsgLy8gU2tpcCB0aGlzIHBhaXIgYmVjYXVzZSBvZiBpbnZhbGlkIHZhbHVlLlxuICAgIH1cblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcDtcblxuICAgIC8vIEJvdGgga2V5IGFuZCB2YWx1ZSBhcmUgdmFsaWQuXG4gICAgX3Jlc3VsdCArPSBwYWlyQnVmZmVyO1xuICB9XG5cbiAgc3RhdGUudGFnID0gX3RhZztcbiAgc3RhdGUuZHVtcCA9ICd7JyArIF9yZXN1bHQgKyAnfSc7XG59XG5cbmZ1bmN0aW9uIHdyaXRlQmxvY2tNYXBwaW5nKHN0YXRlLCBsZXZlbCwgb2JqZWN0LCBjb21wYWN0KSB7XG4gIHZhciBfcmVzdWx0ICAgICAgID0gJycsXG4gICAgICBfdGFnICAgICAgICAgID0gc3RhdGUudGFnLFxuICAgICAgb2JqZWN0S2V5TGlzdCA9IE9iamVjdC5rZXlzKG9iamVjdCksXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aCxcbiAgICAgIG9iamVjdEtleSxcbiAgICAgIG9iamVjdFZhbHVlLFxuICAgICAgZXhwbGljaXRQYWlyLFxuICAgICAgcGFpckJ1ZmZlcjtcblxuICAvLyBBbGxvdyBzb3J0aW5nIGtleXMgc28gdGhhdCB0aGUgb3V0cHV0IGZpbGUgaXMgZGV0ZXJtaW5pc3RpY1xuICBpZiAoc3RhdGUuc29ydEtleXMgPT09IHRydWUpIHtcbiAgICAvLyBEZWZhdWx0IHNvcnRpbmdcbiAgICBvYmplY3RLZXlMaXN0LnNvcnQoKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhdGUuc29ydEtleXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBDdXN0b20gc29ydCBmdW5jdGlvblxuICAgIG9iamVjdEtleUxpc3Quc29ydChzdGF0ZS5zb3J0S2V5cyk7XG4gIH0gZWxzZSBpZiAoc3RhdGUuc29ydEtleXMpIHtcbiAgICAvLyBTb21ldGhpbmcgaXMgd3JvbmdcbiAgICB0aHJvdyBuZXcgWUFNTEV4Y2VwdGlvbignc29ydEtleXMgbXVzdCBiZSBhIGJvb2xlYW4gb3IgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXJCdWZmZXIgPSAnJztcblxuICAgIGlmICghY29tcGFjdCB8fCBpbmRleCAhPT0gMCkge1xuICAgICAgcGFpckJ1ZmZlciArPSBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCk7XG4gICAgfVxuXG4gICAgb2JqZWN0S2V5ID0gb2JqZWN0S2V5TGlzdFtpbmRleF07XG4gICAgb2JqZWN0VmFsdWUgPSBvYmplY3Rbb2JqZWN0S2V5XTtcblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCArIDEsIG9iamVjdEtleSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQga2V5LlxuICAgIH1cblxuICAgIGV4cGxpY2l0UGFpciA9IChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHx8XG4gICAgICAgICAgICAgICAgICAgKHN0YXRlLmR1bXAgJiYgc3RhdGUuZHVtcC5sZW5ndGggPiAxMDI0KTtcblxuICAgIGlmIChleHBsaWNpdFBhaXIpIHtcbiAgICAgIGlmIChzdGF0ZS5kdW1wICYmIENIQVJfTElORV9GRUVEID09PSBzdGF0ZS5kdW1wLmNoYXJDb2RlQXQoMCkpIHtcbiAgICAgICAgcGFpckJ1ZmZlciArPSAnPyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYWlyQnVmZmVyICs9ICc/ICc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wO1xuXG4gICAgaWYgKGV4cGxpY2l0UGFpcikge1xuICAgICAgcGFpckJ1ZmZlciArPSBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgb2JqZWN0VmFsdWUsIHRydWUsIGV4cGxpY2l0UGFpcikpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQgdmFsdWUuXG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkge1xuICAgICAgcGFpckJ1ZmZlciArPSAnOic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gJzogJztcbiAgICB9XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXA7XG5cbiAgICAvLyBCb3RoIGtleSBhbmQgdmFsdWUgYXJlIHZhbGlkLlxuICAgIF9yZXN1bHQgKz0gcGFpckJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSBfcmVzdWx0IHx8ICd7fSc7IC8vIEVtcHR5IG1hcHBpbmcgaWYgbm8gdmFsaWQgcGFpcnMuXG59XG5cbmZ1bmN0aW9uIGRldGVjdFR5cGUoc3RhdGUsIG9iamVjdCwgZXhwbGljaXQpIHtcbiAgdmFyIF9yZXN1bHQsIHR5cGVMaXN0LCBpbmRleCwgbGVuZ3RoLCB0eXBlLCBzdHlsZTtcblxuICB0eXBlTGlzdCA9IGV4cGxpY2l0ID8gc3RhdGUuZXhwbGljaXRUeXBlcyA6IHN0YXRlLmltcGxpY2l0VHlwZXM7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHR5cGVMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICB0eXBlID0gdHlwZUxpc3RbaW5kZXhdO1xuXG4gICAgaWYgKCh0eXBlLmluc3RhbmNlT2YgIHx8IHR5cGUucHJlZGljYXRlKSAmJlxuICAgICAgICAoIXR5cGUuaW5zdGFuY2VPZiB8fCAoKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSAmJiAob2JqZWN0IGluc3RhbmNlb2YgdHlwZS5pbnN0YW5jZU9mKSkpICYmXG4gICAgICAgICghdHlwZS5wcmVkaWNhdGUgIHx8IHR5cGUucHJlZGljYXRlKG9iamVjdCkpKSB7XG5cbiAgICAgIHN0YXRlLnRhZyA9IGV4cGxpY2l0ID8gdHlwZS50YWcgOiAnPyc7XG5cbiAgICAgIGlmICh0eXBlLnJlcHJlc2VudCkge1xuICAgICAgICBzdHlsZSA9IHN0YXRlLnN0eWxlTWFwW3R5cGUudGFnXSB8fCB0eXBlLmRlZmF1bHRTdHlsZTtcblxuICAgICAgICBpZiAoX3RvU3RyaW5nLmNhbGwodHlwZS5yZXByZXNlbnQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nKSB7XG4gICAgICAgICAgX3Jlc3VsdCA9IHR5cGUucmVwcmVzZW50KG9iamVjdCwgc3R5bGUpO1xuICAgICAgICB9IGVsc2UgaWYgKF9oYXNPd25Qcm9wZXJ0eS5jYWxsKHR5cGUucmVwcmVzZW50LCBzdHlsZSkpIHtcbiAgICAgICAgICBfcmVzdWx0ID0gdHlwZS5yZXByZXNlbnRbc3R5bGVdKG9iamVjdCwgc3R5bGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBZQU1MRXhjZXB0aW9uKCchPCcgKyB0eXBlLnRhZyArICc+IHRhZyByZXNvbHZlciBhY2NlcHRzIG5vdCBcIicgKyBzdHlsZSArICdcIiBzdHlsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuZHVtcCA9IF9yZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gU2VyaWFsaXplcyBgb2JqZWN0YCBhbmQgd3JpdGVzIGl0IHRvIGdsb2JhbCBgcmVzdWx0YC5cbi8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBvciBmYWxzZSBvbiBpbnZhbGlkIG9iamVjdC5cbi8vXG5mdW5jdGlvbiB3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3QsIGJsb2NrLCBjb21wYWN0LCBpc2tleSkge1xuICBzdGF0ZS50YWcgPSBudWxsO1xuICBzdGF0ZS5kdW1wID0gb2JqZWN0O1xuXG4gIGlmICghZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCBmYWxzZSkpIHtcbiAgICBkZXRlY3RUeXBlKHN0YXRlLCBvYmplY3QsIHRydWUpO1xuICB9XG5cbiAgdmFyIHR5cGUgPSBfdG9TdHJpbmcuY2FsbChzdGF0ZS5kdW1wKTtcblxuICBpZiAoYmxvY2spIHtcbiAgICBibG9jayA9IChzdGF0ZS5mbG93TGV2ZWwgPCAwIHx8IHN0YXRlLmZsb3dMZXZlbCA+IGxldmVsKTtcbiAgfVxuXG4gIHZhciBvYmplY3RPckFycmF5ID0gdHlwZSA9PT0gJ1tvYmplY3QgT2JqZWN0XScgfHwgdHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICAgIGR1cGxpY2F0ZUluZGV4LFxuICAgICAgZHVwbGljYXRlO1xuXG4gIGlmIChvYmplY3RPckFycmF5KSB7XG4gICAgZHVwbGljYXRlSW5kZXggPSBzdGF0ZS5kdXBsaWNhdGVzLmluZGV4T2Yob2JqZWN0KTtcbiAgICBkdXBsaWNhdGUgPSBkdXBsaWNhdGVJbmRleCAhPT0gLTE7XG4gIH1cblxuICBpZiAoKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/JykgfHwgZHVwbGljYXRlIHx8IChzdGF0ZS5pbmRlbnQgIT09IDIgJiYgbGV2ZWwgPiAwKSkge1xuICAgIGNvbXBhY3QgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChkdXBsaWNhdGUgJiYgc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdKSB7XG4gICAgc3RhdGUuZHVtcCA9ICcqcmVmXycgKyBkdXBsaWNhdGVJbmRleDtcbiAgfSBlbHNlIHtcbiAgICBpZiAob2JqZWN0T3JBcnJheSAmJiBkdXBsaWNhdGUgJiYgIXN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSkge1xuICAgICAgc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICBpZiAoYmxvY2sgJiYgKE9iamVjdC5rZXlzKHN0YXRlLmR1bXApLmxlbmd0aCAhPT0gMCkpIHtcbiAgICAgICAgd3JpdGVCbG9ja01hcHBpbmcoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wLCBjb21wYWN0KTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyBzdGF0ZS5kdW1wO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3cml0ZUZsb3dNYXBwaW5nKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgJyAnICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgdmFyIGFycmF5TGV2ZWwgPSAoc3RhdGUubm9BcnJheUluZGVudCAmJiAobGV2ZWwgPiAwKSkgPyBsZXZlbCAtIDEgOiBsZXZlbDtcbiAgICAgIGlmIChibG9jayAmJiAoc3RhdGUuZHVtcC5sZW5ndGggIT09IDApKSB7XG4gICAgICAgIHdyaXRlQmxvY2tTZXF1ZW5jZShzdGF0ZSwgYXJyYXlMZXZlbCwgc3RhdGUuZHVtcCwgY29tcGFjdCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JpdGVGbG93U2VxdWVuY2Uoc3RhdGUsIGFycmF5TGV2ZWwsIHN0YXRlLmR1bXApO1xuICAgICAgICBpZiAoZHVwbGljYXRlKSB7XG4gICAgICAgICAgc3RhdGUuZHVtcCA9ICcmcmVmXycgKyBkdXBsaWNhdGVJbmRleCArICcgJyArIHN0YXRlLmR1bXA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdbb2JqZWN0IFN0cmluZ10nKSB7XG4gICAgICBpZiAoc3RhdGUudGFnICE9PSAnPycpIHtcbiAgICAgICAgd3JpdGVTY2FsYXIoc3RhdGUsIHN0YXRlLmR1bXAsIGxldmVsLCBpc2tleSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS5za2lwSW52YWxpZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgdGhyb3cgbmV3IFlBTUxFeGNlcHRpb24oJ3VuYWNjZXB0YWJsZSBraW5kIG9mIGFuIG9iamVjdCB0byBkdW1wICcgKyB0eXBlKTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUudGFnICE9PSBudWxsICYmIHN0YXRlLnRhZyAhPT0gJz8nKSB7XG4gICAgICBzdGF0ZS5kdW1wID0gJyE8JyArIHN0YXRlLnRhZyArICc+ICcgKyBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBnZXREdXBsaWNhdGVSZWZlcmVuY2VzKG9iamVjdCwgc3RhdGUpIHtcbiAgdmFyIG9iamVjdHMgPSBbXSxcbiAgICAgIGR1cGxpY2F0ZXNJbmRleGVzID0gW10sXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBpbnNwZWN0Tm9kZShvYmplY3QsIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gZHVwbGljYXRlc0luZGV4ZXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHN0YXRlLmR1cGxpY2F0ZXMucHVzaChvYmplY3RzW2R1cGxpY2F0ZXNJbmRleGVzW2luZGV4XV0pO1xuICB9XG4gIHN0YXRlLnVzZWREdXBsaWNhdGVzID0gbmV3IEFycmF5KGxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3ROb2RlKG9iamVjdCwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpIHtcbiAgdmFyIG9iamVjdEtleUxpc3QsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aDtcblxuICBpZiAob2JqZWN0ICE9PSBudWxsICYmIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgaW5kZXggPSBvYmplY3RzLmluZGV4T2Yob2JqZWN0KTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICBpZiAoZHVwbGljYXRlc0luZGV4ZXMuaW5kZXhPZihpbmRleCkgPT09IC0xKSB7XG4gICAgICAgIGR1cGxpY2F0ZXNJbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvYmplY3RzLnB1c2gob2JqZWN0KTtcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBpbnNwZWN0Tm9kZShvYmplY3RbaW5kZXhdLCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdEtleUxpc3QgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gICAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3RLZXlMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICBpbnNwZWN0Tm9kZShvYmplY3Rbb2JqZWN0S2V5TGlzdFtpbmRleF1dLCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZHVtcChpbnB1dCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICB2YXIgc3RhdGUgPSBuZXcgU3RhdGUob3B0aW9ucyk7XG5cbiAgaWYgKCFzdGF0ZS5ub1JlZnMpIGdldER1cGxpY2F0ZVJlZmVyZW5jZXMoaW5wdXQsIHN0YXRlKTtcblxuICBpZiAod3JpdGVOb2RlKHN0YXRlLCAwLCBpbnB1dCwgdHJ1ZSwgdHJ1ZSkpIHJldHVybiBzdGF0ZS5kdW1wICsgJ1xcbic7XG5cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBzYWZlRHVtcChpbnB1dCwgb3B0aW9ucykge1xuICByZXR1cm4gZHVtcChpbnB1dCwgY29tbW9uLmV4dGVuZCh7IHNjaGVtYTogREVGQVVMVF9TQUZFX1NDSEVNQSB9LCBvcHRpb25zKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmR1bXAgICAgID0gZHVtcDtcbm1vZHVsZS5leHBvcnRzLnNhZmVEdW1wID0gc2FmZUR1bXA7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBsb2FkZXIgPSByZXF1aXJlKCcuL2pzLXlhbWwvbG9hZGVyJyk7XG52YXIgZHVtcGVyID0gcmVxdWlyZSgnLi9qcy15YW1sL2R1bXBlcicpO1xuXG5cbmZ1bmN0aW9uIGRlcHJlY2F0ZWQobmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRnVuY3Rpb24gJyArIG5hbWUgKyAnIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbm5vdCBiZSB1c2VkLicpO1xuICB9O1xufVxuXG5cbm1vZHVsZS5leHBvcnRzLlR5cGUgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvdHlwZScpO1xubW9kdWxlLmV4cG9ydHMuU2NoZW1hICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEnKTtcbm1vZHVsZS5leHBvcnRzLkZBSUxTQUZFX1NDSEVNQSAgICAgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2ZhaWxzYWZlJyk7XG5tb2R1bGUuZXhwb3J0cy5KU09OX1NDSEVNQSAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9qc29uJyk7XG5tb2R1bGUuZXhwb3J0cy5DT1JFX1NDSEVNQSAgICAgICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9jb3JlJyk7XG5tb2R1bGUuZXhwb3J0cy5ERUZBVUxUX1NBRkVfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcbm1vZHVsZS5leHBvcnRzLkRFRkFVTFRfRlVMTF9TQ0hFTUEgPSByZXF1aXJlKCcuL2pzLXlhbWwvc2NoZW1hL2RlZmF1bHRfZnVsbCcpO1xubW9kdWxlLmV4cG9ydHMubG9hZCAgICAgICAgICAgICAgICA9IGxvYWRlci5sb2FkO1xubW9kdWxlLmV4cG9ydHMubG9hZEFsbCAgICAgICAgICAgICA9IGxvYWRlci5sb2FkQWxsO1xubW9kdWxlLmV4cG9ydHMuc2FmZUxvYWQgICAgICAgICAgICA9IGxvYWRlci5zYWZlTG9hZDtcbm1vZHVsZS5leHBvcnRzLnNhZmVMb2FkQWxsICAgICAgICAgPSBsb2FkZXIuc2FmZUxvYWRBbGw7XG5tb2R1bGUuZXhwb3J0cy5kdW1wICAgICAgICAgICAgICAgID0gZHVtcGVyLmR1bXA7XG5tb2R1bGUuZXhwb3J0cy5zYWZlRHVtcCAgICAgICAgICAgID0gZHVtcGVyLnNhZmVEdW1wO1xubW9kdWxlLmV4cG9ydHMuWUFNTEV4Y2VwdGlvbiAgICAgICA9IHJlcXVpcmUoJy4vanMteWFtbC9leGNlcHRpb24nKTtcblxuLy8gRGVwcmVjYXRlZCBzY2hlbWEgbmFtZXMgZnJvbSBKUy1ZQU1MIDIuMC54XG5tb2R1bGUuZXhwb3J0cy5NSU5JTUFMX1NDSEVNQSA9IHJlcXVpcmUoJy4vanMteWFtbC9zY2hlbWEvZmFpbHNhZmUnKTtcbm1vZHVsZS5leHBvcnRzLlNBRkVfU0NIRU1BICAgID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X3NhZmUnKTtcbm1vZHVsZS5leHBvcnRzLkRFRkFVTFRfU0NIRU1BID0gcmVxdWlyZSgnLi9qcy15YW1sL3NjaGVtYS9kZWZhdWx0X2Z1bGwnKTtcblxuLy8gRGVwcmVjYXRlZCBmdW5jdGlvbnMgZnJvbSBKUy1ZQU1MIDEueC54XG5tb2R1bGUuZXhwb3J0cy5zY2FuICAgICAgICAgICA9IGRlcHJlY2F0ZWQoJ3NjYW4nKTtcbm1vZHVsZS5leHBvcnRzLnBhcnNlICAgICAgICAgID0gZGVwcmVjYXRlZCgncGFyc2UnKTtcbm1vZHVsZS5leHBvcnRzLmNvbXBvc2UgICAgICAgID0gZGVwcmVjYXRlZCgnY29tcG9zZScpO1xubW9kdWxlLmV4cG9ydHMuYWRkQ29uc3RydWN0b3IgPSBkZXByZWNhdGVkKCdhZGRDb25zdHJ1Y3RvcicpO1xuIiwgIid1c2Ugc3RyaWN0JztcblxuXG52YXIgeWFtbCA9IHJlcXVpcmUoJy4vbGliL2pzLXlhbWwuanMnKTtcblxuXG5tb2R1bGUuZXhwb3J0cyA9IHlhbWw7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB5YW1sID0gcmVxdWlyZSgnanMteWFtbCcpO1xuXG4vKipcbiAqIERlZmF1bHQgZW5naW5lc1xuICovXG5cbmNvbnN0IGVuZ2luZXMgPSBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8qKlxuICogWUFNTFxuICovXG5cbmVuZ2luZXMueWFtbCA9IHtcbiAgcGFyc2U6IHlhbWwuc2FmZUxvYWQuYmluZCh5YW1sKSxcbiAgc3RyaW5naWZ5OiB5YW1sLnNhZmVEdW1wLmJpbmQoeWFtbClcbn07XG5cbi8qKlxuICogSlNPTlxuICovXG5cbmVuZ2luZXMuanNvbiA9IHtcbiAgcGFyc2U6IEpTT04ucGFyc2UuYmluZChKU09OKSxcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbihvYmosIG9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRzID0gT2JqZWN0LmFzc2lnbih7cmVwbGFjZXI6IG51bGwsIHNwYWNlOiAyfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaiwgb3B0cy5yZXBsYWNlciwgb3B0cy5zcGFjZSk7XG4gIH1cbn07XG5cbi8qKlxuICogSmF2YVNjcmlwdFxuICovXG5cbmVuZ2luZXMuamF2YXNjcmlwdCA9IHtcbiAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKHN0ciwgb3B0aW9ucywgd3JhcCkge1xuICAgIC8qIGVzbGludCBuby1ldmFsOiAwICovXG4gICAgdHJ5IHtcbiAgICAgIGlmICh3cmFwICE9PSBmYWxzZSkge1xuICAgICAgICBzdHIgPSAnKGZ1bmN0aW9uKCkge1xcbnJldHVybiAnICsgc3RyLnRyaW0oKSArICc7XFxufSgpKTsnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV2YWwoc3RyKSB8fCB7fTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmICh3cmFwICE9PSBmYWxzZSAmJiAvKHVuZXhwZWN0ZWR8aWRlbnRpZmllcikvaS50ZXN0KGVyci5tZXNzYWdlKSkge1xuICAgICAgICByZXR1cm4gcGFyc2Uoc3RyLCBvcHRpb25zLCBmYWxzZSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoZXJyKTtcbiAgICB9XG4gIH0sXG4gIHN0cmluZ2lmeTogZnVuY3Rpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzdHJpbmdpZnlpbmcgSmF2YVNjcmlwdCBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gIH1cbn07XG4iLCAiLyohXG4gKiBzdHJpcC1ib20tc3RyaW5nIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9zdHJpcC1ib20tc3RyaW5nPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNSwgMjAxNywgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHN0cikge1xuICBpZiAodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgJiYgc3RyLmNoYXJBdCgwKSA9PT0gJ1xcdWZlZmYnKSB7XG4gICAgcmV0dXJuIHN0ci5zbGljZSgxKTtcbiAgfVxuICByZXR1cm4gc3RyO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHN0cmlwQm9tID0gcmVxdWlyZSgnc3RyaXAtYm9tLXN0cmluZycpO1xuY29uc3QgdHlwZU9mID0gcmVxdWlyZSgna2luZC1vZicpO1xuXG5leHBvcnRzLmRlZmluZSA9IGZ1bmN0aW9uKG9iaiwga2V5LCB2YWwpIHtcbiAgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogdmFsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgYHZhbGAgaXMgYSBidWZmZXJcbiAqL1xuXG5leHBvcnRzLmlzQnVmZmVyID0gZnVuY3Rpb24odmFsKSB7XG4gIHJldHVybiB0eXBlT2YodmFsKSA9PT0gJ2J1ZmZlcic7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBgdmFsYCBpcyBhbiBvYmplY3RcbiAqL1xuXG5leHBvcnRzLmlzT2JqZWN0ID0gZnVuY3Rpb24odmFsKSB7XG4gIHJldHVybiB0eXBlT2YodmFsKSA9PT0gJ29iamVjdCc7XG59O1xuXG4vKipcbiAqIENhc3QgYGlucHV0YCB0byBhIGJ1ZmZlclxuICovXG5cbmV4cG9ydHMudG9CdWZmZXIgPSBmdW5jdGlvbihpbnB1dCkge1xuICByZXR1cm4gdHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJyA/IEJ1ZmZlci5mcm9tKGlucHV0KSA6IGlucHV0O1xufTtcblxuLyoqXG4gKiBDYXN0IGB2YWxgIHRvIGEgc3RyaW5nLlxuICovXG5cbmV4cG9ydHMudG9TdHJpbmcgPSBmdW5jdGlvbihpbnB1dCkge1xuICBpZiAoZXhwb3J0cy5pc0J1ZmZlcihpbnB1dCkpIHJldHVybiBzdHJpcEJvbShTdHJpbmcoaW5wdXQpKTtcbiAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleHBlY3RlZCBpbnB1dCB0byBiZSBhIHN0cmluZyBvciBidWZmZXInKTtcbiAgfVxuICByZXR1cm4gc3RyaXBCb20oaW5wdXQpO1xufTtcblxuLyoqXG4gKiBDYXN0IGB2YWxgIHRvIGFuIGFycmF5LlxuICovXG5cbmV4cG9ydHMuYXJyYXlpZnkgPSBmdW5jdGlvbih2YWwpIHtcbiAgcmV0dXJuIHZhbCA/IChBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwgOiBbdmFsXSkgOiBbXTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGBzdHJgIHN0YXJ0cyB3aXRoIGBzdWJzdHJgLlxuICovXG5cbmV4cG9ydHMuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uKHN0ciwgc3Vic3RyLCBsZW4pIHtcbiAgaWYgKHR5cGVvZiBsZW4gIT09ICdudW1iZXInKSBsZW4gPSBzdWJzdHIubGVuZ3RoO1xuICByZXR1cm4gc3RyLnNsaWNlKDAsIGxlbikgPT09IHN1YnN0cjtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBlbmdpbmVzID0gcmVxdWlyZSgnLi9lbmdpbmVzJyk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIGNvbnN0IG9wdHMgPSBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zKTtcblxuICAvLyBlbnN1cmUgdGhhdCBkZWxpbWl0ZXJzIGFyZSBhbiBhcnJheVxuICBvcHRzLmRlbGltaXRlcnMgPSB1dGlscy5hcnJheWlmeShvcHRzLmRlbGltcyB8fCBvcHRzLmRlbGltaXRlcnMgfHwgJy0tLScpO1xuICBpZiAob3B0cy5kZWxpbWl0ZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgIG9wdHMuZGVsaW1pdGVycy5wdXNoKG9wdHMuZGVsaW1pdGVyc1swXSk7XG4gIH1cblxuICBvcHRzLmxhbmd1YWdlID0gKG9wdHMubGFuZ3VhZ2UgfHwgb3B0cy5sYW5nIHx8ICd5YW1sJykudG9Mb3dlckNhc2UoKTtcbiAgb3B0cy5lbmdpbmVzID0gT2JqZWN0LmFzc2lnbih7fSwgZW5naW5lcywgb3B0cy5wYXJzZXJzLCBvcHRzLmVuZ2luZXMpO1xuICByZXR1cm4gb3B0cztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG5hbWUsIG9wdGlvbnMpIHtcbiAgbGV0IGVuZ2luZSA9IG9wdGlvbnMuZW5naW5lc1tuYW1lXSB8fCBvcHRpb25zLmVuZ2luZXNbYWxpYXNlKG5hbWUpXTtcbiAgaWYgKHR5cGVvZiBlbmdpbmUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdncmF5LW1hdHRlciBlbmdpbmUgXCInICsgbmFtZSArICdcIiBpcyBub3QgcmVnaXN0ZXJlZCcpO1xuICB9XG4gIGlmICh0eXBlb2YgZW5naW5lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZW5naW5lID0geyBwYXJzZTogZW5naW5lIH07XG4gIH1cbiAgcmV0dXJuIGVuZ2luZTtcbn07XG5cbmZ1bmN0aW9uIGFsaWFzZShuYW1lKSB7XG4gIHN3aXRjaCAobmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnanMnOlxuICAgIGNhc2UgJ2phdmFzY3JpcHQnOlxuICAgICAgcmV0dXJuICdqYXZhc2NyaXB0JztcbiAgICBjYXNlICdjb2ZmZWUnOlxuICAgIGNhc2UgJ2NvZmZlZXNjcmlwdCc6XG4gICAgY2FzZSAnY3Nvbic6XG4gICAgICByZXR1cm4gJ2NvZmZlZSc7XG4gICAgY2FzZSAneWFtbCc6XG4gICAgY2FzZSAneW1sJzpcbiAgICAgIHJldHVybiAneWFtbCc7XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuICB9XG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB0eXBlT2YgPSByZXF1aXJlKCdraW5kLW9mJyk7XG5jb25zdCBnZXRFbmdpbmUgPSByZXF1aXJlKCcuL2VuZ2luZScpO1xuY29uc3QgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZmlsZSwgZGF0YSwgb3B0aW9ucykge1xuICBpZiAoZGF0YSA9PSBudWxsICYmIG9wdGlvbnMgPT0gbnVsbCkge1xuICAgIHN3aXRjaCAodHlwZU9mKGZpbGUpKSB7XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICBkYXRhID0gZmlsZS5kYXRhO1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4cGVjdGVkIGZpbGUgdG8gYmUgYSBzdHJpbmcgb3Igb2JqZWN0Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RyID0gZmlsZS5jb250ZW50O1xuICBjb25zdCBvcHRzID0gZGVmYXVsdHMob3B0aW9ucyk7XG4gIGlmIChkYXRhID09IG51bGwpIHtcbiAgICBpZiAoIW9wdHMuZGF0YSkgcmV0dXJuIGZpbGU7XG4gICAgZGF0YSA9IG9wdHMuZGF0YTtcbiAgfVxuXG4gIGNvbnN0IGxhbmd1YWdlID0gZmlsZS5sYW5ndWFnZSB8fCBvcHRzLmxhbmd1YWdlO1xuICBjb25zdCBlbmdpbmUgPSBnZXRFbmdpbmUobGFuZ3VhZ2UsIG9wdHMpO1xuICBpZiAodHlwZW9mIGVuZ2luZS5zdHJpbmdpZnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleHBlY3RlZCBcIicgKyBsYW5ndWFnZSArICcuc3RyaW5naWZ5XCIgdG8gYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgZGF0YSA9IE9iamVjdC5hc3NpZ24oe30sIGZpbGUuZGF0YSwgZGF0YSk7XG4gIGNvbnN0IG9wZW4gPSBvcHRzLmRlbGltaXRlcnNbMF07XG4gIGNvbnN0IGNsb3NlID0gb3B0cy5kZWxpbWl0ZXJzWzFdO1xuICBjb25zdCBtYXR0ZXIgPSBlbmdpbmUuc3RyaW5naWZ5KGRhdGEsIG9wdGlvbnMpLnRyaW0oKTtcbiAgbGV0IGJ1ZiA9ICcnO1xuXG4gIGlmIChtYXR0ZXIgIT09ICd7fScpIHtcbiAgICBidWYgPSBuZXdsaW5lKG9wZW4pICsgbmV3bGluZShtYXR0ZXIpICsgbmV3bGluZShjbG9zZSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGZpbGUuZXhjZXJwdCA9PT0gJ3N0cmluZycgJiYgZmlsZS5leGNlcnB0ICE9PSAnJykge1xuICAgIGlmIChzdHIuaW5kZXhPZihmaWxlLmV4Y2VycHQudHJpbSgpKSA9PT0gLTEpIHtcbiAgICAgIGJ1ZiArPSBuZXdsaW5lKGZpbGUuZXhjZXJwdCkgKyBuZXdsaW5lKGNsb3NlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnVmICsgbmV3bGluZShzdHIpO1xufTtcblxuZnVuY3Rpb24gbmV3bGluZShzdHIpIHtcbiAgcmV0dXJuIHN0ci5zbGljZSgtMSkgIT09ICdcXG4nID8gc3RyICsgJ1xcbicgOiBzdHI7XG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmaWxlLCBvcHRpb25zKSB7XG4gIGNvbnN0IG9wdHMgPSBkZWZhdWx0cyhvcHRpb25zKTtcblxuICBpZiAoZmlsZS5kYXRhID09IG51bGwpIHtcbiAgICBmaWxlLmRhdGEgPSB7fTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb3B0cy5leGNlcnB0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG9wdHMuZXhjZXJwdChmaWxlLCBvcHRzKTtcbiAgfVxuXG4gIGNvbnN0IHNlcCA9IGZpbGUuZGF0YS5leGNlcnB0X3NlcGFyYXRvciB8fCBvcHRzLmV4Y2VycHRfc2VwYXJhdG9yO1xuICBpZiAoc2VwID09IG51bGwgJiYgKG9wdHMuZXhjZXJwdCA9PT0gZmFsc2UgfHwgb3B0cy5leGNlcnB0ID09IG51bGwpKSB7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICBjb25zdCBkZWxpbWl0ZXIgPSB0eXBlb2Ygb3B0cy5leGNlcnB0ID09PSAnc3RyaW5nJ1xuICAgID8gb3B0cy5leGNlcnB0XG4gICAgOiAoc2VwIHx8IG9wdHMuZGVsaW1pdGVyc1swXSk7XG5cbiAgLy8gaWYgZW5hYmxlZCwgZ2V0IHRoZSBleGNlcnB0IGRlZmluZWQgYWZ0ZXIgZnJvbnQtbWF0dGVyXG4gIGNvbnN0IGlkeCA9IGZpbGUuY29udGVudC5pbmRleE9mKGRlbGltaXRlcik7XG4gIGlmIChpZHggIT09IC0xKSB7XG4gICAgZmlsZS5leGNlcnB0ID0gZmlsZS5jb250ZW50LnNsaWNlKDAsIGlkeCk7XG4gIH1cblxuICByZXR1cm4gZmlsZTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB0eXBlT2YgPSByZXF1aXJlKCdraW5kLW9mJyk7XG5jb25zdCBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBnaXZlbiB2YWx1ZSB0byBlbnN1cmUgYW4gb2JqZWN0IGlzIHJldHVybmVkXG4gKiB3aXRoIHRoZSBleHBlY3RlZCBwcm9wZXJ0aWVzLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZmlsZSkge1xuICBpZiAodHlwZU9mKGZpbGUpICE9PSAnb2JqZWN0Jykge1xuICAgIGZpbGUgPSB7IGNvbnRlbnQ6IGZpbGUgfTtcbiAgfVxuXG4gIGlmICh0eXBlT2YoZmlsZS5kYXRhKSAhPT0gJ29iamVjdCcpIHtcbiAgICBmaWxlLmRhdGEgPSB7fTtcbiAgfVxuXG4gIC8vIGlmIGZpbGUgd2FzIHBhc3NlZCBhcyBhbiBvYmplY3QsIGVuc3VyZSB0aGF0XG4gIC8vIFwiZmlsZS5jb250ZW50XCIgaXMgc2V0XG4gIGlmIChmaWxlLmNvbnRlbnRzICYmIGZpbGUuY29udGVudCA9PSBudWxsKSB7XG4gICAgZmlsZS5jb250ZW50ID0gZmlsZS5jb250ZW50cztcbiAgfVxuXG4gIC8vIHNldCBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9uIHRoZSBmaWxlIG9iamVjdFxuICB1dGlscy5kZWZpbmUoZmlsZSwgJ29yaWcnLCB1dGlscy50b0J1ZmZlcihmaWxlLmNvbnRlbnQpKTtcbiAgdXRpbHMuZGVmaW5lKGZpbGUsICdsYW5ndWFnZScsIGZpbGUubGFuZ3VhZ2UgfHwgJycpO1xuICB1dGlscy5kZWZpbmUoZmlsZSwgJ21hdHRlcicsIGZpbGUubWF0dGVyIHx8ICcnKTtcbiAgdXRpbHMuZGVmaW5lKGZpbGUsICdzdHJpbmdpZnknLCBmdW5jdGlvbihkYXRhLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5sYW5ndWFnZSkge1xuICAgICAgZmlsZS5sYW5ndWFnZSA9IG9wdGlvbnMubGFuZ3VhZ2U7XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmdpZnkoZmlsZSwgZGF0YSwgb3B0aW9ucyk7XG4gIH0pO1xuXG4gIC8vIHN0cmlwIEJPTSBhbmQgZW5zdXJlIHRoYXQgXCJmaWxlLmNvbnRlbnRcIiBpcyBhIHN0cmluZ1xuICBmaWxlLmNvbnRlbnQgPSB1dGlscy50b1N0cmluZyhmaWxlLmNvbnRlbnQpO1xuICBmaWxlLmlzRW1wdHkgPSBmYWxzZTtcbiAgZmlsZS5leGNlcnB0ID0gJyc7XG4gIHJldHVybiBmaWxlO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGdldEVuZ2luZSA9IHJlcXVpcmUoJy4vZW5naW5lJyk7XG5jb25zdCBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihsYW5ndWFnZSwgc3RyLCBvcHRpb25zKSB7XG4gIGNvbnN0IG9wdHMgPSBkZWZhdWx0cyhvcHRpb25zKTtcbiAgY29uc3QgZW5naW5lID0gZ2V0RW5naW5lKGxhbmd1YWdlLCBvcHRzKTtcbiAgaWYgKHR5cGVvZiBlbmdpbmUucGFyc2UgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleHBlY3RlZCBcIicgKyBsYW5ndWFnZSArICcucGFyc2VcIiB0byBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgcmV0dXJuIGVuZ2luZS5wYXJzZShzdHIsIG9wdHMpO1xufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHNlY3Rpb25zID0gcmVxdWlyZSgnc2VjdGlvbi1tYXR0ZXInKTtcbmNvbnN0IGRlZmF1bHRzID0gcmVxdWlyZSgnLi9saWIvZGVmYXVsdHMnKTtcbmNvbnN0IHN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vbGliL3N0cmluZ2lmeScpO1xuY29uc3QgZXhjZXJwdCA9IHJlcXVpcmUoJy4vbGliL2V4Y2VycHQnKTtcbmNvbnN0IGVuZ2luZXMgPSByZXF1aXJlKCcuL2xpYi9lbmdpbmVzJyk7XG5jb25zdCB0b0ZpbGUgPSByZXF1aXJlKCcuL2xpYi90by1maWxlJyk7XG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vbGliL3BhcnNlJyk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJy4vbGliL3V0aWxzJyk7XG5cbi8qKlxuICogVGFrZXMgYSBzdHJpbmcgb3Igb2JqZWN0IHdpdGggYGNvbnRlbnRgIHByb3BlcnR5LCBleHRyYWN0c1xuICogYW5kIHBhcnNlcyBmcm9udC1tYXR0ZXIgZnJvbSB0aGUgc3RyaW5nLCB0aGVuIHJldHVybnMgYW4gb2JqZWN0XG4gKiB3aXRoIGBkYXRhYCwgYGNvbnRlbnRgIGFuZCBvdGhlciBbdXNlZnVsIHByb3BlcnRpZXNdKCNyZXR1cm5lZC1vYmplY3QpLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBtYXR0ZXIgPSByZXF1aXJlKCdncmF5LW1hdHRlcicpO1xuICogY29uc29sZS5sb2cobWF0dGVyKCctLS1cXG50aXRsZTogSG9tZVxcbi0tLVxcbk90aGVyIHN0dWZmJykpO1xuICogLy89PiB7IGRhdGE6IHsgdGl0bGU6ICdIb21lJ30sIGNvbnRlbnQ6ICdPdGhlciBzdHVmZicgfVxuICogYGBgXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IGBpbnB1dGAgU3RyaW5nLCBvciBvYmplY3Qgd2l0aCBgY29udGVudGAgc3RyaW5nXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIG1hdHRlcihpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoaW5wdXQgPT09ICcnKSB7XG4gICAgcmV0dXJuIHsgZGF0YToge30sIGNvbnRlbnQ6IGlucHV0LCBleGNlcnB0OiAnJywgb3JpZzogaW5wdXQgfTtcbiAgfVxuXG4gIGxldCBmaWxlID0gdG9GaWxlKGlucHV0KTtcbiAgY29uc3QgY2FjaGVkID0gbWF0dGVyLmNhY2hlW2ZpbGUuY29udGVudF07XG5cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgaWYgKGNhY2hlZCkge1xuICAgICAgZmlsZSA9IE9iamVjdC5hc3NpZ24oe30sIGNhY2hlZCk7XG4gICAgICBmaWxlLm9yaWcgPSBjYWNoZWQub3JpZztcbiAgICAgIHJldHVybiBmaWxlO1xuICAgIH1cblxuICAgIC8vIG9ubHkgY2FjaGUgaWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMgcGFzc2VkLiBpZiB3ZSBjYWNoZSB3aGVuIG9wdGlvbnNcbiAgICAvLyBhcmUgcGFzc2VkLCB3ZSB3b3VsZCBuZWVkIHRvIGFsc28gY2FjaGUgb3B0aW9ucyB2YWx1ZXMsIHdoaWNoIHdvdWxkXG4gICAgLy8gbmVnYXRlIGFueSBwZXJmb3JtYW5jZSBiZW5lZml0cyBvZiBjYWNoaW5nXG4gICAgbWF0dGVyLmNhY2hlW2ZpbGUuY29udGVudF0gPSBmaWxlO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlTWF0dGVyKGZpbGUsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFBhcnNlIGZyb250IG1hdHRlclxuICovXG5cbmZ1bmN0aW9uIHBhcnNlTWF0dGVyKGZpbGUsIG9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0cyA9IGRlZmF1bHRzKG9wdGlvbnMpO1xuICBjb25zdCBvcGVuID0gb3B0cy5kZWxpbWl0ZXJzWzBdO1xuICBjb25zdCBjbG9zZSA9ICdcXG4nICsgb3B0cy5kZWxpbWl0ZXJzWzFdO1xuICBsZXQgc3RyID0gZmlsZS5jb250ZW50O1xuXG4gIGlmIChvcHRzLmxhbmd1YWdlKSB7XG4gICAgZmlsZS5sYW5ndWFnZSA9IG9wdHMubGFuZ3VhZ2U7XG4gIH1cblxuICAvLyBnZXQgdGhlIGxlbmd0aCBvZiB0aGUgb3BlbmluZyBkZWxpbWl0ZXJcbiAgY29uc3Qgb3BlbkxlbiA9IG9wZW4ubGVuZ3RoO1xuICBpZiAoIXV0aWxzLnN0YXJ0c1dpdGgoc3RyLCBvcGVuLCBvcGVuTGVuKSkge1xuICAgIGV4Y2VycHQoZmlsZSwgb3B0cyk7XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICAvLyBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIG9wZW5pbmcgZGVsaW1pdGVyIGlzXG4gIC8vIGEgY2hhcmFjdGVyIGZyb20gdGhlIGRlbGltaXRlciwgdGhlbiBpdCdzIG5vdCBhIGZyb250LVxuICAvLyBtYXR0ZXIgZGVsaW1pdGVyXG4gIGlmIChzdHIuY2hhckF0KG9wZW5MZW4pID09PSBvcGVuLnNsaWNlKC0xKSkge1xuICAgIHJldHVybiBmaWxlO1xuICB9XG5cbiAgLy8gc3RyaXAgdGhlIG9wZW5pbmcgZGVsaW1pdGVyXG4gIHN0ciA9IHN0ci5zbGljZShvcGVuTGVuKTtcbiAgY29uc3QgbGVuID0gc3RyLmxlbmd0aDtcblxuICAvLyB1c2UgdGhlIGxhbmd1YWdlIGRlZmluZWQgYWZ0ZXIgZmlyc3QgZGVsaW1pdGVyLCBpZiBpdCBleGlzdHNcbiAgY29uc3QgbGFuZ3VhZ2UgPSBtYXR0ZXIubGFuZ3VhZ2Uoc3RyLCBvcHRzKTtcbiAgaWYgKGxhbmd1YWdlLm5hbWUpIHtcbiAgICBmaWxlLmxhbmd1YWdlID0gbGFuZ3VhZ2UubmFtZTtcbiAgICBzdHIgPSBzdHIuc2xpY2UobGFuZ3VhZ2UucmF3Lmxlbmd0aCk7XG4gIH1cblxuICAvLyBnZXQgdGhlIGluZGV4IG9mIHRoZSBjbG9zaW5nIGRlbGltaXRlclxuICBsZXQgY2xvc2VJbmRleCA9IHN0ci5pbmRleE9mKGNsb3NlKTtcbiAgaWYgKGNsb3NlSW5kZXggPT09IC0xKSB7XG4gICAgY2xvc2VJbmRleCA9IGxlbjtcbiAgfVxuXG4gIC8vIGdldCB0aGUgcmF3IGZyb250LW1hdHRlciBibG9ja1xuICBmaWxlLm1hdHRlciA9IHN0ci5zbGljZSgwLCBjbG9zZUluZGV4KTtcblxuICBjb25zdCBibG9jayA9IGZpbGUubWF0dGVyLnJlcGxhY2UoL15cXHMqI1teXFxuXSsvZ20sICcnKS50cmltKCk7XG4gIGlmIChibG9jayA9PT0gJycpIHtcbiAgICBmaWxlLmlzRW1wdHkgPSB0cnVlO1xuICAgIGZpbGUuZW1wdHkgPSBmaWxlLmNvbnRlbnQ7XG4gICAgZmlsZS5kYXRhID0ge307XG4gIH0gZWxzZSB7XG5cbiAgICAvLyBjcmVhdGUgZmlsZS5kYXRhIGJ5IHBhcnNpbmcgdGhlIHJhdyBmaWxlLm1hdHRlciBibG9ja1xuICAgIGZpbGUuZGF0YSA9IHBhcnNlKGZpbGUubGFuZ3VhZ2UsIGZpbGUubWF0dGVyLCBvcHRzKTtcbiAgfVxuXG4gIC8vIHVwZGF0ZSBmaWxlLmNvbnRlbnRcbiAgaWYgKGNsb3NlSW5kZXggPT09IGxlbikge1xuICAgIGZpbGUuY29udGVudCA9ICcnO1xuICB9IGVsc2Uge1xuICAgIGZpbGUuY29udGVudCA9IHN0ci5zbGljZShjbG9zZUluZGV4ICsgY2xvc2UubGVuZ3RoKTtcbiAgICBpZiAoZmlsZS5jb250ZW50WzBdID09PSAnXFxyJykge1xuICAgICAgZmlsZS5jb250ZW50ID0gZmlsZS5jb250ZW50LnNsaWNlKDEpO1xuICAgIH1cbiAgICBpZiAoZmlsZS5jb250ZW50WzBdID09PSAnXFxuJykge1xuICAgICAgZmlsZS5jb250ZW50ID0gZmlsZS5jb250ZW50LnNsaWNlKDEpO1xuICAgIH1cbiAgfVxuXG4gIGV4Y2VycHQoZmlsZSwgb3B0cyk7XG5cbiAgaWYgKG9wdHMuc2VjdGlvbnMgPT09IHRydWUgfHwgdHlwZW9mIG9wdHMuc2VjdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHNlY3Rpb25zKGZpbGUsIG9wdHMuc2VjdGlvbik7XG4gIH1cbiAgcmV0dXJuIGZpbGU7XG59XG5cbi8qKlxuICogRXhwb3NlIGVuZ2luZXNcbiAqL1xuXG5tYXR0ZXIuZW5naW5lcyA9IGVuZ2luZXM7XG5cbi8qKlxuICogU3RyaW5naWZ5IGFuIG9iamVjdCB0byBZQU1MIG9yIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UsIGFuZFxuICogYXBwZW5kIGl0IHRvIHRoZSBnaXZlbiBzdHJpbmcuIEJ5IGRlZmF1bHQsIG9ubHkgWUFNTCBhbmQgSlNPTlxuICogY2FuIGJlIHN0cmluZ2lmaWVkLiBTZWUgdGhlIFtlbmdpbmVzXSgjZW5naW5lcykgc2VjdGlvbiB0byBsZWFyblxuICogaG93IHRvIHN0cmluZ2lmeSBvdGhlciBsYW5ndWFnZXMuXG4gKlxuICogYGBganNcbiAqIGNvbnNvbGUubG9nKG1hdHRlci5zdHJpbmdpZnkoJ2ZvbyBiYXIgYmF6Jywge3RpdGxlOiAnSG9tZSd9KSk7XG4gKiAvLyByZXN1bHRzIGluOlxuICogLy8gLS0tXG4gKiAvLyB0aXRsZTogSG9tZVxuICogLy8gLS0tXG4gKiAvLyBmb28gYmFyIGJhelxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IGBmaWxlYCBUaGUgY29udGVudCBzdHJpbmcgdG8gYXBwZW5kIHRvIHN0cmluZ2lmaWVkIGZyb250LW1hdHRlciwgb3IgYSBmaWxlIG9iamVjdCB3aXRoIGBmaWxlLmNvbnRlbnRgIHN0cmluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgZGF0YWAgRnJvbnQgbWF0dGVyIHRvIHN0cmluZ2lmeS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgW09wdGlvbnNdKCNvcHRpb25zKSB0byBwYXNzIHRvIGdyYXktbWF0dGVyIGFuZCBbanMteWFtbF0uXG4gKiBAcmV0dXJuIHtTdHJpbmd9IFJldHVybnMgYSBzdHJpbmcgY3JlYXRlZCBieSB3cmFwcGluZyBzdHJpbmdpZmllZCB5YW1sIHdpdGggZGVsaW1pdGVycywgYW5kIGFwcGVuZGluZyB0aGF0IHRvIHRoZSBnaXZlbiBzdHJpbmcuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1hdHRlci5zdHJpbmdpZnkgPSBmdW5jdGlvbihmaWxlLCBkYXRhLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZmlsZSA9PT0gJ3N0cmluZycpIGZpbGUgPSBtYXR0ZXIoZmlsZSwgb3B0aW9ucyk7XG4gIHJldHVybiBzdHJpbmdpZnkoZmlsZSwgZGF0YSwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIFN5bmNocm9ub3VzbHkgcmVhZCBhIGZpbGUgZnJvbSB0aGUgZmlsZSBzeXN0ZW0gYW5kIHBhcnNlXG4gKiBmcm9udCBtYXR0ZXIuIFJldHVybnMgdGhlIHNhbWUgb2JqZWN0IGFzIHRoZSBbbWFpbiBmdW5jdGlvbl0oI21hdHRlcikuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGZpbGUgPSBtYXR0ZXIucmVhZCgnLi9jb250ZW50L2Jsb2ctcG9zdC5tZCcpO1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGZpbGVwYXRoYCBmaWxlIHBhdGggb2YgdGhlIGZpbGUgdG8gcmVhZC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2AgW09wdGlvbnNdKCNvcHRpb25zKSB0byBwYXNzIHRvIGdyYXktbWF0dGVyLlxuICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIFthbiBvYmplY3RdKCNyZXR1cm5lZC1vYmplY3QpIHdpdGggYGRhdGFgIGFuZCBgY29udGVudGBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxubWF0dGVyLnJlYWQgPSBmdW5jdGlvbihmaWxlcGF0aCwgb3B0aW9ucykge1xuICBjb25zdCBzdHIgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZXBhdGgsICd1dGY4Jyk7XG4gIGNvbnN0IGZpbGUgPSBtYXR0ZXIoc3RyLCBvcHRpb25zKTtcbiAgZmlsZS5wYXRoID0gZmlsZXBhdGg7XG4gIHJldHVybiBmaWxlO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGBzdHJpbmdgIGhhcyBmcm9udCBtYXR0ZXIuXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGBzdHJpbmdgXG4gKiBAcGFyYW0gIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7Qm9vbGVhbn0gVHJ1ZSBpZiBmcm9udCBtYXR0ZXIgZXhpc3RzLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tYXR0ZXIudGVzdCA9IGZ1bmN0aW9uKHN0ciwgb3B0aW9ucykge1xuICByZXR1cm4gdXRpbHMuc3RhcnRzV2l0aChzdHIsIGRlZmF1bHRzKG9wdGlvbnMpLmRlbGltaXRlcnNbMF0pO1xufTtcblxuLyoqXG4gKiBEZXRlY3QgdGhlIGxhbmd1YWdlIHRvIHVzZSwgaWYgb25lIGlzIGRlZmluZWQgYWZ0ZXIgdGhlXG4gKiBmaXJzdCBmcm9udC1tYXR0ZXIgZGVsaW1pdGVyLlxuICogQHBhcmFtICB7U3RyaW5nfSBgc3RyaW5nYFxuICogQHBhcmFtICB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gT2JqZWN0IHdpdGggYHJhd2AgKGFjdHVhbCBsYW5ndWFnZSBzdHJpbmcpLCBhbmQgYG5hbWVgLCB0aGUgbGFuZ3VhZ2Ugd2l0aCB3aGl0ZXNwYWNlIHRyaW1tZWRcbiAqL1xuXG5tYXR0ZXIubGFuZ3VhZ2UgPSBmdW5jdGlvbihzdHIsIG9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0cyA9IGRlZmF1bHRzKG9wdGlvbnMpO1xuICBjb25zdCBvcGVuID0gb3B0cy5kZWxpbWl0ZXJzWzBdO1xuXG4gIGlmIChtYXR0ZXIudGVzdChzdHIpKSB7XG4gICAgc3RyID0gc3RyLnNsaWNlKG9wZW4ubGVuZ3RoKTtcbiAgfVxuXG4gIGNvbnN0IGxhbmd1YWdlID0gc3RyLnNsaWNlKDAsIHN0ci5zZWFyY2goL1xccj9cXG4vKSk7XG4gIHJldHVybiB7XG4gICAgcmF3OiBsYW5ndWFnZSxcbiAgICBuYW1lOiBsYW5ndWFnZSA/IGxhbmd1YWdlLnRyaW0oKSA6ICcnXG4gIH07XG59O1xuXG4vKipcbiAqIEV4cG9zZSBgbWF0dGVyYFxuICovXG5cbm1hdHRlci5jYWNoZSA9IHt9O1xubWF0dGVyLmNsZWFyQ2FjaGUgPSBmdW5jdGlvbigpIHtcbiAgbWF0dGVyLmNhY2hlID0ge307XG59O1xubW9kdWxlLmV4cG9ydHMgPSBtYXR0ZXI7XG4iLCAiaW1wb3J0IHsgTm90aWNlLCBQbHVnaW4gfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCB7IFdvcmRwcmVzc1NldHRpbmdUYWIgfSBmcm9tICcuL3NldHRpbmdzJztcclxuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICcuL2ljb25zJztcclxuaW1wb3J0IHsgV29yZFByZXNzUG9zdFBhcmFtcyB9IGZyb20gJy4vd3AtY2xpZW50JztcclxuaW1wb3J0IHsgSTE4biB9IGZyb20gJy4vaTE4bic7XHJcbmltcG9ydCB7IEVSUk9SX05PVElDRV9USU1FT1VULCBFdmVudFR5cGUsIFdQX09BVVRIMl9SRURJUkVDVF9VUkksIFdQX09BVVRIMl9VUkxfQUNUSU9OIH0gZnJvbSAnLi9jb25zdHMnO1xyXG5pbXBvcnQgeyBPQXV0aDJDbGllbnQgfSBmcm9tICcuL29hdXRoMi1jbGllbnQnO1xyXG5pbXBvcnQgeyBDb21tZW50U3RhdHVzLCBQb3N0U3RhdHVzIH0gZnJvbSAnLi93cC1hcGknO1xyXG5pbXBvcnQgeyBvcGVuUHJvZmlsZUNob29zZXJNb2RhbCB9IGZyb20gJy4vd3AtcHJvZmlsZS1jaG9vc2VyLW1vZGFsJztcclxuaW1wb3J0IHsgQXBwU3RhdGUgfSBmcm9tICcuL2FwcC1zdGF0ZSc7XHJcbmltcG9ydCB7IERFRkFVTFRfU0VUVElOR1MsIFNldHRpbmdzVmVyc2lvbiwgdXBncmFkZVNldHRpbmdzLCBXb3JkcHJlc3NQbHVnaW5TZXR0aW5ncyB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzJztcclxuaW1wb3J0IHsgUGFzc0NyeXB0byB9IGZyb20gJy4vcGFzcy1jcnlwdG8nO1xyXG5pbXBvcnQgeyBkb0NsaWVudFB1Ymxpc2gsIHNldHVwTWFya2Rvd25QYXJzZXIgfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdvcmRwcmVzc1BsdWdpbiBleHRlbmRzIFBsdWdpbiB7XHJcblxyXG4gICNzZXR0aW5nczogV29yZHByZXNzUGx1Z2luU2V0dGluZ3MgfCB1bmRlZmluZWQ7XHJcbiAgZ2V0IHNldHRpbmdzKCkge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgIHJldHVybiB0aGlzLiNzZXR0aW5ncyE7XHJcbiAgfVxyXG5cclxuICAjaTE4bjogSTE4biB8IHVuZGVmaW5lZDtcclxuICBnZXQgaTE4bigpIHtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICByZXR1cm4gdGhpcy4jaTE4biE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJpYmJvbldwSWNvbjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgYXN5bmMgb25sb2FkKCkge1xyXG4gICAgY29uc29sZS5sb2coJ2xvYWRpbmcgb2JzaWRpYW4td29yZHByZXNzIHBsdWdpbicpO1xyXG5cclxuICAgIGF3YWl0IHRoaXMubG9hZFNldHRpbmdzKCk7XHJcbiAgICAvLyBsYW5nIHNob3VsZCBiZSBsb2FkIGVhcmx5LCBidXQgYWZ0ZXIgc2V0dGluZ3NcclxuICAgIHRoaXMuI2kxOG4gPSBuZXcgSTE4bih0aGlzLiNzZXR0aW5ncz8ubGFuZyk7XHJcblxyXG4gICAgc2V0dXBNYXJrZG93blBhcnNlcih0aGlzLnNldHRpbmdzKTtcclxuXHJcbiAgICBhZGRJY29ucygpO1xyXG5cclxuICAgIHRoaXMucmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKTtcclxuICAgIHRoaXMudXBkYXRlUmliYm9uSWNvbigpO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnZGVmYXVsdFB1Ymxpc2gnLFxyXG4gICAgICBuYW1lOiB0aGlzLiNpMThuLnQoJ2NvbW1hbmRfcHVibGlzaFdpdGhEZWZhdWx0JyksXHJcbiAgICAgIGVkaXRvckNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFByb2ZpbGUgPSB0aGlzLiNzZXR0aW5ncz8ucHJvZmlsZXMuZmluZChpdCA9PiBpdC5pc0RlZmF1bHQpO1xyXG4gICAgICAgIGlmIChkZWZhdWx0UHJvZmlsZSkge1xyXG4gICAgICAgICAgY29uc3QgcGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6IHRoaXMuI3NldHRpbmdzPy5kZWZhdWx0UG9zdFN0YXR1cyA/PyBQb3N0U3RhdHVzLkRyYWZ0LFxyXG4gICAgICAgICAgICBjb21tZW50U3RhdHVzOiB0aGlzLiNzZXR0aW5ncz8uZGVmYXVsdENvbW1lbnRTdGF0dXMgPz8gQ29tbWVudFN0YXR1cy5PcGVuLFxyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBkZWZhdWx0UHJvZmlsZS5sYXN0U2VsZWN0ZWRDYXRlZ29yaWVzID8/IFsgMSBdLFxyXG4gICAgICAgICAgICB0YWdzOiBbXSxcclxuICAgICAgICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICAgICAgICBjb250ZW50OiAnJ1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGRvQ2xpZW50UHVibGlzaCh0aGlzLCBkZWZhdWx0UHJvZmlsZSwgcGFyYW1zKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbmV3IE5vdGljZSh0aGlzLiNpMThuPy50KCdlcnJvcl9ub0RlZmF1bHRQcm9maWxlJykgPz8gJ05vIGRlZmF1bHQgcHJvZmlsZSBmb3VuZC4nLCBFUlJPUl9OT1RJQ0VfVElNRU9VVCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3B1Ymxpc2gnLFxyXG4gICAgICBuYW1lOiB0aGlzLiNpMThuLnQoJ2NvbW1hbmRfcHVibGlzaCcpLFxyXG4gICAgICBlZGl0b3JDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub3BlblByb2ZpbGVDaG9vc2VyKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgV29yZHByZXNzU2V0dGluZ1RhYih0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBvbnVubG9hZCgpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcclxuICAgIHRoaXMuI3NldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcclxuICAgIHRoaXMuI3NldHRpbmdzID0gYXdhaXQgdXBncmFkZVNldHRpbmdzKHRoaXMuI3NldHRpbmdzLCBTZXR0aW5nc1ZlcnNpb24uVjIsIHRoaXMpO1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlU2V0dGluZ3MoKTtcclxuXHJcbiAgICBjb25zdCBjcnlwdG8gPSBuZXcgUGFzc0NyeXB0bygpO1xyXG4gICAgY29uc3QgY291bnQgPSB0aGlzLiNzZXR0aW5ncz8ucHJvZmlsZXMubGVuZ3RoID8/IDA7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcclxuICAgICAgY29uc3QgcHJvZmlsZSA9IHRoaXMuI3NldHRpbmdzPy5wcm9maWxlc1tpXTtcclxuICAgICAgY29uc3QgZW5QYXNzID0gcHJvZmlsZS5lbmNyeXB0ZWRQYXNzd29yZDtcclxuICAgICAgaWYgKGVuUGFzcykge1xyXG4gICAgICAgIHByb2ZpbGUucGFzc3dvcmQgPSBhd2FpdCBjcnlwdG8uZGVjcnlwdChlblBhc3MuZW5jcnlwdGVkLCBlblBhc3Mua2V5LCBlblBhc3MudmVjdG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZVNldHRpbmdzKCkge1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLiNzZXR0aW5ncyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSaWJib25JY29uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcmliYm9uSWNvblRpdGxlID0gdGhpcy4jaTE4bj8udCgncmliYm9uX2ljb25UaXRsZScpID8/ICdXb3JkUHJlc3MnO1xyXG4gICAgaWYgKHRoaXMuI3NldHRpbmdzPy5zaG93UmliYm9uSWNvbikge1xyXG4gICAgICBpZiAoIXRoaXMucmliYm9uV3BJY29uKSB7XHJcbiAgICAgICAgdGhpcy5yaWJib25XcEljb24gPSB0aGlzLmFkZFJpYmJvbkljb24oJ3dwLWxvZ28nLCByaWJib25JY29uVGl0bGUsICgpID0+IHtcclxuICAgICAgICAgIHRoaXMub3BlblByb2ZpbGVDaG9vc2VyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnJpYmJvbldwSWNvbikge1xyXG4gICAgICAgIHRoaXMucmliYm9uV3BJY29uLnJlbW92ZSgpO1xyXG4gICAgICAgIHRoaXMucmliYm9uV3BJY29uID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBvcGVuUHJvZmlsZUNob29zZXIoKSB7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5wcm9maWxlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgZG9DbGllbnRQdWJsaXNoKHRoaXMsIHRoaXMuc2V0dGluZ3MucHJvZmlsZXNbMF0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNldHRpbmdzLnByb2ZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IG9wZW5Qcm9maWxlQ2hvb3Nlck1vZGFsKHRoaXMpO1xyXG4gICAgICBkb0NsaWVudFB1Ymxpc2godGhpcywgcHJvZmlsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXcgTm90aWNlKHRoaXMuaTE4bi50KCdlcnJvcl9ub1Byb2ZpbGUnKSwgRVJST1JfTk9USUNFX1RJTUVPVVQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWdpc3RlclByb3RvY29sSGFuZGxlcigpOiB2b2lkIHtcclxuICAgIHRoaXMucmVnaXN0ZXJPYnNpZGlhblByb3RvY29sSGFuZGxlcihXUF9PQVVUSDJfVVJMX0FDVElPTiwgYXN5bmMgKGUpID0+IHtcclxuICAgICAgaWYgKGUuYWN0aW9uID09PSBXUF9PQVVUSDJfVVJMX0FDVElPTikge1xyXG4gICAgICAgIGlmIChlLnN0YXRlKSB7XHJcbiAgICAgICAgICBpZiAoZS5lcnJvcikge1xyXG4gICAgICAgICAgICBuZXcgTm90aWNlKHRoaXMuaTE4bi50KCdlcnJvcl93cENvbUF1dGhGYWlsZWQnLCB7XHJcbiAgICAgICAgICAgICAgZXJyb3I6IGUuZXJyb3IsXHJcbiAgICAgICAgICAgICAgZGVzYzogZS5lcnJvcl9kZXNjcmlwdGlvbi5yZXBsYWNlKC9cXCsvZywnICcpXHJcbiAgICAgICAgICAgIH0pLCBFUlJPUl9OT1RJQ0VfVElNRU9VVCk7XHJcbiAgICAgICAgICAgIEFwcFN0YXRlLmdldEluc3RhbmNlKCkuZXZlbnRzLnRyaWdnZXIoRXZlbnRUeXBlLk9BVVRIMl9UT0tFTl9HT1QsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGUuY29kZSkge1xyXG4gICAgICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IE9BdXRoMkNsaWVudC5nZXRXcE9BdXRoMkNsaWVudCh0aGlzKS5nZXRUb2tlbih7XHJcbiAgICAgICAgICAgICAgY29kZTogZS5jb2RlLFxyXG4gICAgICAgICAgICAgIHJlZGlyZWN0VXJpOiBXUF9PQVVUSDJfUkVESVJFQ1RfVVJJLFxyXG4gICAgICAgICAgICAgIGNvZGVWZXJpZmllcjogQXBwU3RhdGUuZ2V0SW5zdGFuY2UoKS5jb2RlVmVyaWZpZXJcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRva2VuKTtcclxuICAgICAgICAgICAgQXBwU3RhdGUuZ2V0SW5zdGFuY2UoKS5ldmVudHMudHJpZ2dlcihFdmVudFR5cGUuT0FVVEgyX1RPS0VOX0dPVCwgdG9rZW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IFdvcmRwcmVzc1BsdWdpbiBmcm9tICcuL21haW4nO1xyXG5pbXBvcnQgeyBDb21tZW50U3RhdHVzLCBQb3N0U3RhdHVzIH0gZnJvbSAnLi93cC1hcGknO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVLZXkgfSBmcm9tICcuL2kxOG4nO1xyXG5pbXBvcnQgeyBXcFByb2ZpbGVNYW5hZ2VNb2RhbCB9IGZyb20gJy4vd3AtcHJvZmlsZS1tYW5hZ2UtbW9kYWwnO1xyXG5pbXBvcnQgeyBNYXRoSmF4T3V0cHV0VHlwZSB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuaW1wb3J0IHsgc2V0dXBNYXJrZG93blBhcnNlciB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBXb3JkcHJlc3NTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW46IFdvcmRwcmVzc1BsdWdpblxyXG4gICkge1xyXG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xyXG5cdH1cclxuXHJcblx0ZGlzcGxheSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHQgPSAoa2V5OiBUcmFuc2xhdGVLZXksIHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmkxOG4udChrZXksIHZhcnMpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBnZXRNYXRoSmF4T3V0cHV0VHlwZURlc2MgPSAodHlwZTogTWF0aEpheE91dHB1dFR5cGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlIE1hdGhKYXhPdXRwdXRUeXBlLlRlWDpcclxuICAgICAgICAgIHJldHVybiB0KCdzZXR0aW5nc19NYXRoSmF4T3V0cHV0VHlwZVRlWERlc2MnKTtcclxuICAgICAgICBjYXNlIE1hdGhKYXhPdXRwdXRUeXBlLlNWRzpcclxuICAgICAgICAgIHJldHVybiB0KCdzZXR0aW5nc19NYXRoSmF4T3V0cHV0VHlwZVNWR0Rlc2MnKTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cdFx0Y29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcclxuXHJcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMScsIHsgdGV4dDogdCgnc2V0dGluZ3NfdGl0bGUnKSB9KTtcclxuXHJcbiAgICAvLyBsZXQgYXBpRGVzYyA9IGdldEFwaVR5cGVEZXNjKHRoaXMucGx1Z2luLnNldHRpbmdzLmFwaVR5cGUpO1xyXG4gICAgbGV0IG1hdGhKYXhPdXRwdXRUeXBlRGVzYyA9IGdldE1hdGhKYXhPdXRwdXRUeXBlRGVzYyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXRoSmF4T3V0cHV0VHlwZSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ3NldHRpbmdzX3Byb2ZpbGVzJykpXHJcbiAgICAgIC5zZXREZXNjKHQoJ3NldHRpbmdzX3Byb2ZpbGVzRGVzYycpKVxyXG4gICAgICAuYWRkQnV0dG9uKGJ1dHRvbiA9PiBidXR0b25cclxuICAgICAgICAuc2V0QnV0dG9uVGV4dCh0KCdzZXR0aW5nc19wcm9maWxlc01vZGFsJykpXHJcbiAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgbmV3IFdwUHJvZmlsZU1hbmFnZU1vZGFsKHRoaXMucGx1Z2luKS5vcGVuKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSh0KCdzZXR0aW5nc19zaG93UmliYm9uSWNvbicpKVxyXG4gICAgICAuc2V0RGVzYyh0KCdzZXR0aW5nc19zaG93UmliYm9uSWNvbkRlc2MnKSlcclxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICAgIHRvZ2dsZVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnNob3dSaWJib25JY29uKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zaG93UmliYm9uSWNvbiA9IHZhbHVlO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZVJpYmJvbkljb24oKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSh0KCdzZXR0aW5nc19kZWZhdWx0UG9zdFN0YXR1cycpKVxyXG4gICAgICAuc2V0RGVzYyh0KCdzZXR0aW5nc19kZWZhdWx0UG9zdFN0YXR1c0Rlc2MnKSlcclxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xyXG4gICAgICAgIGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKFBvc3RTdGF0dXMuRHJhZnQsIHQoJ3NldHRpbmdzX2RlZmF1bHRQb3N0U3RhdHVzRHJhZnQnKSlcclxuICAgICAgICAgIC5hZGRPcHRpb24oUG9zdFN0YXR1cy5QdWJsaXNoLCB0KCdzZXR0aW5nc19kZWZhdWx0UG9zdFN0YXR1c1B1Ymxpc2gnKSlcclxuICAgICAgICAgIC8vIC5hZGRPcHRpb24oUG9zdFN0YXR1cy5GdXR1cmUsICdmdXR1cmUnKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRlZmF1bHRQb3N0U3RhdHVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWZhdWx0UG9zdFN0YXR1cyA9IHZhbHVlIGFzIFBvc3RTdGF0dXM7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSh0KCdzZXR0aW5nc19kZWZhdWx0UG9zdENvbW1lbnQnKSlcclxuICAgICAgLnNldERlc2ModCgnc2V0dGluZ3NfZGVmYXVsdFBvc3RDb21tZW50RGVzYycpKVxyXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XHJcbiAgICAgICAgZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oQ29tbWVudFN0YXR1cy5PcGVuLCB0KCdzZXR0aW5nc19kZWZhdWx0UG9zdENvbW1lbnRPcGVuJykpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKENvbW1lbnRTdGF0dXMuQ2xvc2VkLCB0KCdzZXR0aW5nc19kZWZhdWx0UG9zdENvbW1lbnRDbG9zZWQnKSlcclxuICAgICAgICAgIC8vIC5hZGRPcHRpb24oUG9zdFN0YXR1cy5GdXR1cmUsICdmdXR1cmUnKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRlZmF1bHRDb21tZW50U3RhdHVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWZhdWx0Q29tbWVudFN0YXR1cyA9IHZhbHVlIGFzIENvbW1lbnRTdGF0dXM7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSh0KCdzZXR0aW5nc19yZW1lbWJlckxhc3RTZWxlY3RlZENhdGVnb3JpZXMnKSlcclxuICAgICAgLnNldERlc2ModCgnc2V0dGluZ3NfcmVtZW1iZXJMYXN0U2VsZWN0ZWRDYXRlZ29yaWVzRGVzYycpKVxyXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgICAgdG9nZ2xlXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MucmVtZW1iZXJMYXN0U2VsZWN0ZWRDYXRlZ29yaWVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZW1lbWJlckxhc3RTZWxlY3RlZENhdGVnb3JpZXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnByb2ZpbGVzLmZvckVhY2goKHByb2ZpbGU6IFdwUHJvZmlsZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcm9maWxlLmxhc3RTZWxlY3RlZENhdGVnb3JpZXMgfHwgcHJvZmlsZS5sYXN0U2VsZWN0ZWRDYXRlZ29yaWVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICBwcm9maWxlLmxhc3RTZWxlY3RlZENhdGVnb3JpZXMgPSBbIDEgXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSh0KCdzZXR0aW5nc19zaG93V29yZFByZXNzRWRpdFBhZ2VNb2RhbCcpKVxyXG4gICAgICAuc2V0RGVzYyh0KCdzZXR0aW5nc19zaG93V29yZFByZXNzRWRpdFBhZ2VNb2RhbERlc2MnKSlcclxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICAgIHRvZ2dsZVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnNob3dXb3JkUHJlc3NFZGl0Q29uZmlybSlcclxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2hvd1dvcmRQcmVzc0VkaXRDb25maXJtID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ3NldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlJykpXHJcbiAgICAgIC5zZXREZXNjKHQoJ3NldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlRGVzYycpKVxyXG4gICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XHJcbiAgICAgICAgZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oTWF0aEpheE91dHB1dFR5cGUuVGVYLCB0KCdzZXR0aW5nc19tYXRoSmF4T3V0cHV0VHlwZVRlWCcpKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbihNYXRoSmF4T3V0cHV0VHlwZS5TVkcsIHQoJ3NldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlU1ZHJykpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWF0aEpheE91dHB1dFR5cGUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1hdGhKYXhPdXRwdXRUeXBlID0gdmFsdWUgYXMgTWF0aEpheE91dHB1dFR5cGU7XHJcbiAgICAgICAgICAgIG1hdGhKYXhPdXRwdXRUeXBlRGVzYyA9IGdldE1hdGhKYXhPdXRwdXRUeXBlRGVzYyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXRoSmF4T3V0cHV0VHlwZSk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXkoKTtcclxuXHJcbiAgICAgICAgICAgIHNldHVwTWFya2Rvd25QYXJzZXIodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnLCB7XHJcbiAgICAgIHRleHQ6IG1hdGhKYXhPdXRwdXRUeXBlRGVzYyxcclxuICAgICAgY2xzOiAnc2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uJ1xyXG4gICAgfSk7XHJcblx0fVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgTW9kYWwsIFNldHRpbmcgfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlS2V5IH0gZnJvbSAnLi9pMThuJztcclxuaW1wb3J0IHsgb3BlblByb2ZpbGVNb2RhbCB9IGZyb20gJy4vd3AtcHJvZmlsZS1tb2RhbCc7XHJcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgcmVuZGVyZXJQcm9maWxlIH0gZnJvbSAnLi91dGlscyc7XHJcblxyXG5cclxuLyoqXHJcbiAqIFdvcmRQcmVzcyBwcm9maWxlcyBtYW5hZ2UgbW9kYWwuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgV3BQcm9maWxlTWFuYWdlTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZXM6IFdwUHJvZmlsZVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW5cclxuICApIHtcclxuICAgIHN1cGVyKGFwcCk7XHJcblxyXG4gICAgdGhpcy5wcm9maWxlcyA9IHBsdWdpbi5zZXR0aW5ncy5wcm9maWxlcztcclxuICB9XHJcblxyXG4gIG9uT3BlbigpIHtcclxuICAgIGNvbnN0IHQgPSAoa2V5OiBUcmFuc2xhdGVLZXksIHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmkxOG4udChrZXksIHZhcnMpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZW5kZXJQcm9maWxlcyA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgY29udGVudC5lbXB0eSgpO1xyXG4gICAgICB0aGlzLnByb2ZpbGVzLmZvckVhY2goKHByb2ZpbGUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZyA9IHJlbmRlcmVyUHJvZmlsZShwcm9maWxlLCBjb250ZW50KTtcclxuICAgICAgICBpZiAoIXByb2ZpbGUuaXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICBzZXR0aW5nXHJcbiAgICAgICAgICAgIC5hZGRCdXR0b24oYnV0dG9uID0+IGJ1dHRvblxyXG4gICAgICAgICAgICAgIC5zZXRCdXR0b25UZXh0KHQoJ3Byb2ZpbGVzTWFuYWdlTW9kYWxfc2V0RGVmYXVsdCcpKVxyXG4gICAgICAgICAgICAgIC5vbkNsaWNrKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvZmlsZXMuZm9yRWFjaChpdCA9PiBpdC5pc0RlZmF1bHQgPSBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBwcm9maWxlLmlzRGVmYXVsdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZW5kZXJQcm9maWxlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCkudGhlbigpO1xyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0dGluZy5hZGRCdXR0b24oYnV0dG9uID0+IGJ1dHRvblxyXG4gICAgICAgICAgLnNldEJ1dHRvblRleHQodCgncHJvZmlsZXNNYW5hZ2VNb2RhbF9zaG93RGV0YWlscycpKVxyXG4gICAgICAgICAgLm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IHByb2ZpbGU6IG5ld1Byb2ZpbGUsIGF0SW5kZXggfSA9IGF3YWl0IG9wZW5Qcm9maWxlTW9kYWwoXHJcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4sXHJcbiAgICAgICAgICAgICAgcHJvZmlsZSxcclxuICAgICAgICAgICAgICBpbmRleFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygndXBkYXRlUHJvZmlsZScsIG5ld1Byb2ZpbGUsIGF0SW5kZXgpO1xyXG4gICAgICAgICAgICBpZiAoIWlzTmlsKGF0SW5kZXgpICYmIGF0SW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgIGlmIChuZXdQcm9maWxlLmlzRGVmYXVsdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9maWxlcy5mb3JFYWNoKGl0ID0+IGl0LmlzRGVmYXVsdCA9IGZhbHNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9maWxlc1thdEluZGV4XSA9IG5ld1Byb2ZpbGU7XHJcbiAgICAgICAgICAgICAgcmVuZGVyUHJvZmlsZXMoKTtcclxuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKS50aGVuKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICBzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiBidXR0b25cclxuICAgICAgICAgIC5zZXRJY29uKCdsdWNpZGUtdHJhc2gnKVxyXG4gICAgICAgICAgLnNldFRvb2x0aXAodCgncHJvZmlsZXNNYW5hZ2VNb2RhbF9kZWxldGVUb29sdGlwJykpXHJcbiAgICAgICAgICAub25DbGljaygoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgaWYgKHByb2ZpbGUuaXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9maWxlc1swXS5pc0RlZmF1bHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZW5kZXJQcm9maWxlcygpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKS50aGVuKCk7XHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG5cclxuICAgIGNvbnRlbnRFbC5jcmVhdGVFbCgnaDEnLCB7IHRleHQ6IHQoJ3Byb2ZpbGVzTWFuYWdlTW9kYWxfdGl0bGUnKSB9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ3Byb2ZpbGVzTWFuYWdlTW9kYWxfY3JlYXRlJykpXHJcbiAgICAgIC5zZXREZXNjKHQoJ3Byb2ZpbGVzTWFuYWdlTW9kYWxfY3JlYXRlRGVzYycpKVxyXG4gICAgICAuYWRkQnV0dG9uKGJ1dHRvbiA9PiBidXR0b25cclxuICAgICAgICAuc2V0QnV0dG9uVGV4dCh0KCdwcm9maWxlc01hbmFnZU1vZGFsX2NyZWF0ZScpKVxyXG4gICAgICAgIC5zZXRDdGEoKVxyXG4gICAgICAgIC5vbkNsaWNrKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgcHJvZmlsZSB9ID0gYXdhaXQgb3BlblByb2ZpbGVNb2RhbChcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnYXBwZW5kUHJvZmlsZScsIHByb2ZpbGUpO1xyXG4gICAgICAgICAgLy8gaWYgbm8gcHJvZmlsZSwgbWFrZSB0aGUgZmlyc3Qgb25lIGRlZmF1bHRcclxuICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBwcm9maWxlLmlzRGVmYXVsdCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocHJvZmlsZS5pc0RlZmF1bHQpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9maWxlcy5mb3JFYWNoKGl0ID0+IGl0LmlzRGVmYXVsdCA9IGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucHJvZmlsZXMucHVzaChwcm9maWxlKTtcclxuICAgICAgICAgIHJlbmRlclByb2ZpbGVzKCk7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRFbC5jcmVhdGVFbCgnZGl2Jyk7XHJcbiAgICByZW5kZXJQcm9maWxlcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG4gICAgY29udGVudEVsLmVtcHR5KCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgTW9kYWwsIE5vdGljZSwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IFdvcmRwcmVzc1BsdWdpbiBmcm9tICcuL21haW4nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVLZXkgfSBmcm9tICcuL2kxOG4nO1xyXG5pbXBvcnQgeyBXcFByb2ZpbGUgfSBmcm9tICcuL3dwLXByb2ZpbGUnO1xyXG5pbXBvcnQgeyBFUlJPUl9OT1RJQ0VfVElNRU9VVCwgRXZlbnRUeXBlLCBXUF9PQVVUSDJfUkVESVJFQ1RfVVJJIH0gZnJvbSAnLi9jb25zdHMnO1xyXG5pbXBvcnQgeyBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlIH0gZnJvbSAnLi93cC1jbGllbnQnO1xyXG5pbXBvcnQgeyBnZW5lcmF0ZUNvZGVWZXJpZmllciwgT0F1dGgyQ2xpZW50IH0gZnJvbSAnLi9vYXV0aDItY2xpZW50JztcclxuaW1wb3J0IHsgQXBwU3RhdGUgfSBmcm9tICcuL2FwcC1zdGF0ZSc7XHJcbmltcG9ydCB7IGlzVmFsaWRVcmwgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgQXBpVHlwZSB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzJztcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb3BlblByb2ZpbGVNb2RhbChcclxuICBwbHVnaW46IFdvcmRwcmVzc1BsdWdpbixcclxuICBwcm9maWxlOiBXcFByb2ZpbGUgPSB7XHJcbiAgICBuYW1lOiAnJyxcclxuICAgIGFwaVR5cGU6IEFwaVR5cGUuWE1MX1JQQyxcclxuICAgIGVuZHBvaW50OiAnJyxcclxuICAgIHhtbFJwY1BhdGg6ICcveG1scnBjLnBocCcsXHJcbiAgICBzYXZlVXNlcm5hbWU6IGZhbHNlLFxyXG4gICAgc2F2ZVBhc3N3b3JkOiBmYWxzZSxcclxuICAgIGlzRGVmYXVsdDogZmFsc2UsXHJcbiAgICBsYXN0U2VsZWN0ZWRDYXRlZ29yaWVzOiBbIDEgXSxcclxuICB9LFxyXG4gIGF0SW5kZXggPSAtMVxyXG4pOiBQcm9taXNlPHsgcHJvZmlsZTogV3BQcm9maWxlLCBhdEluZGV4PzogbnVtYmVyIH0+IHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgY29uc3QgbW9kYWwgPSBuZXcgV3BQcm9maWxlTW9kYWwocGx1Z2luLCAocHJvZmlsZSwgYXRJbmRleCkgPT4ge1xyXG4gICAgICByZXNvbHZlKHtcclxuICAgICAgICBwcm9maWxlLFxyXG4gICAgICAgIGF0SW5kZXhcclxuICAgICAgfSk7XHJcbiAgICB9LCBwcm9maWxlLCBhdEluZGV4KTtcclxuICAgIG1vZGFsLm9wZW4oKTtcclxuICB9KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFdvcmRQcmVzcyBwcm9maWxlIG1vZGFsLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFdwUHJvZmlsZU1vZGFsIGV4dGVuZHMgTW9kYWwge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHByb2ZpbGVEYXRhOiBXcFByb2ZpbGU7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5Hb3RSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW46IFdvcmRwcmVzc1BsdWdpbixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb25TdWJtaXQ6IChwcm9maWxlOiBXcFByb2ZpbGUsIGF0SW5kZXg/OiBudW1iZXIpID0+IHZvaWQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2ZpbGU6IFdwUHJvZmlsZSA9IHtcclxuICAgICAgbmFtZTogJycsXHJcbiAgICAgIGFwaVR5cGU6IEFwaVR5cGUuWE1MX1JQQyxcclxuICAgICAgZW5kcG9pbnQ6ICcnLFxyXG4gICAgICB4bWxScGNQYXRoOiAnL3htbHJwYy5waHAnLFxyXG4gICAgICBzYXZlVXNlcm5hbWU6IGZhbHNlLFxyXG4gICAgICBzYXZlUGFzc3dvcmQ6IGZhbHNlLFxyXG4gICAgICBpc0RlZmF1bHQ6IGZhbHNlLFxyXG4gICAgICBsYXN0U2VsZWN0ZWRDYXRlZ29yaWVzOiBbIDEgXSxcclxuICAgIH0sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF0SW5kZXg6IG51bWJlciA9IC0xXHJcbiAgKSB7XHJcbiAgICBzdXBlcihhcHApO1xyXG5cclxuICAgIHRoaXMucHJvZmlsZURhdGEgPSBPYmplY3QuYXNzaWduKHt9LCBwcm9maWxlKTtcclxuICAgIHRoaXMudG9rZW5Hb3RSZWYgPSBBcHBTdGF0ZS5nZXRJbnN0YW5jZSgpLmV2ZW50cy5vbihFdmVudFR5cGUuT0FVVEgyX1RPS0VOX0dPVCwgYXN5bmMgdG9rZW4gPT4ge1xyXG4gICAgICB0aGlzLnByb2ZpbGVEYXRhLndwQ29tT0F1dGgyVG9rZW4gPSB0b2tlbjtcclxuICAgICAgaWYgKGF0SW5kZXggPj0gMCkge1xyXG4gICAgICAgIC8vIGlmIHRva2VuIGlzIHVuZGVmaW5lZCwganVzdCByZW1vdmUgaXRcclxuICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5wcm9maWxlc1thdEluZGV4XS53cENvbU9BdXRoMlRva2VuID0gdG9rZW47XHJcbiAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCkge1xyXG4gICAgY29uc3QgdCA9IChrZXk6IFRyYW5zbGF0ZUtleSwgdmFycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5wbHVnaW4uaTE4bi50KGtleSwgdmFycyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGdldEFwaVR5cGVEZXNjID0gKGFwaVR5cGU6IEFwaVR5cGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICBzd2l0Y2ggKGFwaVR5cGUpIHtcclxuICAgICAgICBjYXNlIEFwaVR5cGUuWE1MX1JQQzpcclxuICAgICAgICAgIHJldHVybiB0KCdzZXR0aW5nc19hcGlUeXBlWG1sUnBjRGVzYycpO1xyXG4gICAgICAgIGNhc2UgQXBpVHlwZS5SZXN0QVBJX21pbmlPcmFuZ2U6XHJcbiAgICAgICAgICByZXR1cm4gdCgnc2V0dGluZ3NfYXBpVHlwZVJlc3RNaW5pT3JhbmdlRGVzYycpO1xyXG4gICAgICAgIGNhc2UgQXBpVHlwZS5SZXN0QXBpX0FwcGxpY2F0aW9uUGFzc3dvcmRzOlxyXG4gICAgICAgICAgcmV0dXJuIHQoJ3NldHRpbmdzX2FwaVR5cGVSZXN0QXBwbGljYXRpb25QYXNzd29yZHNEZXNjJyk7XHJcbiAgICAgICAgY2FzZSBBcGlUeXBlLlJlc3RBcGlfV3BDb21PQXV0aDI6XHJcbiAgICAgICAgICByZXR1cm4gdCgnc2V0dGluZ3NfYXBpVHlwZVJlc3RXcENvbU9BdXRoMkRlc2MnKTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgbGV0IGFwaURlc2MgPSBnZXRBcGlUeXBlRGVzYyh0aGlzLnByb2ZpbGVEYXRhLmFwaVR5cGUpO1xyXG5cclxuICAgIGNvbnN0IHJlbmRlclByb2ZpbGUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnRlbnQuZW1wdHkoKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRlbnQpXHJcbiAgICAgICAgLnNldE5hbWUodCgncHJvZmlsZU1vZGFsX25hbWUnKSlcclxuICAgICAgICAuc2V0RGVzYyh0KCdwcm9maWxlTW9kYWxfbmFtZURlc2MnKSlcclxuICAgICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHRcclxuICAgICAgICAgIC5zZXRQbGFjZWhvbGRlcignUHJvZmlsZSBuYW1lJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnByb2ZpbGVEYXRhLm5hbWUgPz8gJycpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGEubmFtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBuZXcgU2V0dGluZyhjb250ZW50KVxyXG4gICAgICAgIC5zZXROYW1lKHQoJ3NldHRpbmdzX3VybCcpKVxyXG4gICAgICAgIC5zZXREZXNjKHQoJ3NldHRpbmdzX3VybERlc2MnKSlcclxuICAgICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHRcclxuICAgICAgICAgIC5zZXRQbGFjZWhvbGRlcih0KCdzZXR0aW5nc191cmxQbGFjZWhvbGRlcicpKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZURhdGEuZW5kcG9pbnQpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVEYXRhLmVuZHBvaW50ICE9PSB2YWx1ZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGEuZW5kcG9pbnQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICBuZXcgU2V0dGluZyhjb250ZW50KVxyXG4gICAgICAgIC5zZXROYW1lKHQoJ3NldHRpbmdzX2FwaVR5cGUnKSlcclxuICAgICAgICAuc2V0RGVzYyh0KCdzZXR0aW5nc19hcGlUeXBlRGVzYycpKVxyXG4gICAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcclxuICAgICAgICAgIGRyb3Bkb3duXHJcbiAgICAgICAgICAgIC5hZGRPcHRpb24oQXBpVHlwZS5YTUxfUlBDLCB0KCdzZXR0aW5nc19hcGlUeXBlWG1sUnBjJykpXHJcbiAgICAgICAgICAgIC5hZGRPcHRpb24oQXBpVHlwZS5SZXN0QVBJX21pbmlPcmFuZ2UsIHQoJ3NldHRpbmdzX2FwaVR5cGVSZXN0TWluaU9yYW5nZScpKVxyXG4gICAgICAgICAgICAuYWRkT3B0aW9uKEFwaVR5cGUuUmVzdEFwaV9BcHBsaWNhdGlvblBhc3N3b3JkcywgdCgnc2V0dGluZ3NfYXBpVHlwZVJlc3RBcHBsaWNhdGlvblBhc3N3b3JkcycpKVxyXG4gICAgICAgICAgICAuYWRkT3B0aW9uKEFwaVR5cGUuUmVzdEFwaV9XcENvbU9BdXRoMiwgdCgnc2V0dGluZ3NfYXBpVHlwZVJlc3RXcENvbU9BdXRoMicpKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlRGF0YS5hcGlUeXBlKVxyXG4gICAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGhhc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgbGV0IG5ld0FwaVR5cGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IEFwaVR5cGUuUmVzdEFwaV9XcENvbU9BdXRoMikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnByb2ZpbGVEYXRhLmVuZHBvaW50LmluY2x1ZGVzKCd3b3JkcHJlc3MuY29tJykpIHtcclxuICAgICAgICAgICAgICAgICAgbmV3IE5vdGljZSh0KCdlcnJvcl9ub3RXcENvbScpLCBFUlJPUl9OT1RJQ0VfVElNRU9VVCk7XHJcbiAgICAgICAgICAgICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgbmV3QXBpVHlwZSA9IHRoaXMucHJvZmlsZURhdGEuYXBpVHlwZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9maWxlRGF0YS5hcGlUeXBlID0gbmV3QXBpVHlwZSBhcyBBcGlUeXBlO1xyXG4gICAgICAgICAgICAgIGFwaURlc2MgPSBnZXRBcGlUeXBlRGVzYyh0aGlzLnByb2ZpbGVEYXRhLmFwaVR5cGUpO1xyXG4gICAgICAgICAgICAgIHJlbmRlclByb2ZpbGUoKTtcclxuICAgICAgICAgICAgICBpZiAoIWhhc0Vycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IEFwaVR5cGUuUmVzdEFwaV9XcENvbU9BdXRoMikge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9maWxlRGF0YS53cENvbU9BdXRoMlRva2VuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5kcG9pbnRVcmwgPSBuZXcgVVJMKHRoaXMucHJvZmlsZURhdGEuZW5kcG9pbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2dVcmwgPSBuZXcgVVJMKHRoaXMucHJvZmlsZURhdGEud3BDb21PQXV0aDJUb2tlbi5ibG9nVXJsKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZW5kcG9pbnRVcmwuaG9zdCAhPT0gYmxvZ1VybC5ob3N0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hXcENvbVRva2VuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFdwQ29tVG9rZW4oKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIGNvbnRlbnQuY3JlYXRlRWwoJ3AnLCB7XHJcbiAgICAgICAgdGV4dDogYXBpRGVzYyxcclxuICAgICAgICBjbHM6ICdzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb24nXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy5wcm9maWxlRGF0YS5hcGlUeXBlID09PSBBcGlUeXBlLlhNTF9SUEMpIHtcclxuICAgICAgICBuZXcgU2V0dGluZyhjb250ZW50KVxyXG4gICAgICAgICAgLnNldE5hbWUodCgnc2V0dGluZ3NfeG1sUnBjUGF0aCcpKVxyXG4gICAgICAgICAgLnNldERlc2ModCgnc2V0dGluZ3NfeG1sUnBjUGF0aERlc2MnKSlcclxuICAgICAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dFxyXG4gICAgICAgICAgICAuc2V0UGxhY2Vob2xkZXIoJy94bWxycGMucGhwJylcclxuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZURhdGEueG1sUnBjUGF0aClcclxuICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGEueG1sUnBjUGF0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9maWxlRGF0YS5hcGlUeXBlID09PSBBcGlUeXBlLlJlc3RBcGlfV3BDb21PQXV0aDIpIHtcclxuICAgICAgICBuZXcgU2V0dGluZyhjb250ZW50KVxyXG4gICAgICAgICAgLnNldE5hbWUodCgnc2V0dGluZ3Nfd3BDb21PQXV0aDJSZWZyZXNoVG9rZW4nKSlcclxuICAgICAgICAgIC5zZXREZXNjKHQoJ3NldHRpbmdzX3dwQ29tT0F1dGgyUmVmcmVzaFRva2VuRGVzYycpKVxyXG4gICAgICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgICAgIC5zZXRCdXR0b25UZXh0KHQoJ3NldHRpbmdzX3dwQ29tT0F1dGgyVmFsaWRhdGVUb2tlbkJ1dHRvblRleHQnKSlcclxuICAgICAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVEYXRhLndwQ29tT0F1dGgyVG9rZW4pIHtcclxuICAgICAgICAgICAgICAgIE9BdXRoMkNsaWVudC5nZXRXcE9BdXRoMkNsaWVudCh0aGlzLnBsdWdpbikudmFsaWRhdGVUb2tlbih7XHJcbiAgICAgICAgICAgICAgICAgIHRva2VuOiB0aGlzLnByb2ZpbGVEYXRhLndwQ29tT0F1dGgyVG9rZW4uYWNjZXNzVG9rZW5cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5jb2RlID09PSBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLkVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlKHJlc3VsdC5kYXRhICsgJycsIEVSUk9SX05PVElDRV9USU1FT1VUKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmV3IE5vdGljZSh0KCdtZXNzYWdlX3dwQ29tVG9rZW5WYWxpZGF0ZWQnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgICAgIC5zZXRCdXR0b25UZXh0KHQoJ3NldHRpbmdzX3dwQ29tT0F1dGgyUmVmcmVzaFRva2VuQnV0dG9uVGV4dCcpKVxyXG4gICAgICAgICAgICAub25DbGljayhhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoV3BDb21Ub2tlbigpO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnByb2ZpbGVEYXRhLmFwaVR5cGUgIT09IEFwaVR5cGUuUmVzdEFwaV9XcENvbU9BdXRoMikge1xyXG4gICAgICAgIGNvbnN0IHVzZXJuYW1lU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRlbnQpXHJcbiAgICAgICAgICAuc2V0TmFtZSh0KCdwcm9maWxlTW9kYWxfcmVtZW1iZXJVc2VybmFtZScpKTtcclxuICAgICAgICBpZiAodGhpcy5wcm9maWxlRGF0YS5zYXZlVXNlcm5hbWUpIHtcclxuICAgICAgICAgIHVzZXJuYW1lU2V0dGluZ1xyXG4gICAgICAgICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHRcclxuICAgICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlRGF0YS51c2VybmFtZSA/PyAnJylcclxuICAgICAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhLnVzZXJuYW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdXNlcm5hbWVTZXR0aW5nLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlRGF0YS5zYXZlVXNlcm5hbWUpXHJcbiAgICAgICAgICAub25DaGFuZ2Uoc2F2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGEuc2F2ZVVzZXJuYW1lID0gc2F2ZTtcclxuICAgICAgICAgICAgcmVuZGVyUHJvZmlsZSgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkU2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRlbnQpXHJcbiAgICAgICAgICAuc2V0TmFtZSh0KCdwcm9maWxlTW9kYWxfcmVtZW1iZXJQYXNzd29yZCcpKTtcclxuICAgICAgICBpZiAodGhpcy5wcm9maWxlRGF0YS5zYXZlUGFzc3dvcmQpIHtcclxuICAgICAgICAgIHBhc3N3b3JkU2V0dGluZ1xyXG4gICAgICAgICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHRcclxuICAgICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlRGF0YS5wYXNzd29yZCA/PyAnJylcclxuICAgICAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhLnBhc3N3b3JkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFzc3dvcmRTZXR0aW5nLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlRGF0YS5zYXZlUGFzc3dvcmQpXHJcbiAgICAgICAgICAub25DaGFuZ2Uoc2F2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGEuc2F2ZVBhc3N3b3JkID0gc2F2ZTtcclxuICAgICAgICAgICAgcmVuZGVyUHJvZmlsZSgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRlbnQpXHJcbiAgICAgICAgLnNldE5hbWUodCgncHJvZmlsZU1vZGFsX3NldERlZmF1bHQnKSlcclxuICAgICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGVcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnByb2ZpbGVEYXRhLmlzRGVmYXVsdClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wcm9maWxlRGF0YS5pc0RlZmF1bHQgPSB2YWx1ZTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRlbnQpXHJcbiAgICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgICAuc2V0QnV0dG9uVGV4dCh0KCdwcm9maWxlTW9kYWxfU2F2ZScpKVxyXG4gICAgICAgICAgLnNldEN0YSgpXHJcbiAgICAgICAgICAub25DbGljaygoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghaXNWYWxpZFVybCh0aGlzLnByb2ZpbGVEYXRhLmVuZHBvaW50KSkge1xyXG4gICAgICAgICAgICAgIG5ldyBOb3RpY2UodCgnZXJyb3JfaW52YWxpZFVybCcpLCBFUlJPUl9OT1RJQ0VfVElNRU9VVCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9maWxlRGF0YS5uYW1lLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgIG5ldyBOb3RpY2UodCgnZXJyb3Jfbm9Qcm9maWxlTmFtZScpLCBFUlJPUl9OT1RJQ0VfVElNRU9VVCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9maWxlRGF0YS5zYXZlVXNlcm5hbWUgJiYgIXRoaXMucHJvZmlsZURhdGEudXNlcm5hbWUpIHtcclxuICAgICAgICAgICAgICBuZXcgTm90aWNlKHQoJ2Vycm9yX25vVXNlcm5hbWUnKSwgRVJST1JfTk9USUNFX1RJTUVPVVQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZURhdGEuc2F2ZVBhc3N3b3JkICYmICF0aGlzLnByb2ZpbGVEYXRhLnBhc3N3b3JkKSB7XHJcbiAgICAgICAgICAgICAgbmV3IE5vdGljZSh0KCdlcnJvcl9ub1Bhc3N3b3JkJyksIEVSUk9SX05PVElDRV9USU1FT1VUKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KHRoaXMucHJvZmlsZURhdGEsIHRoaXMuYXRJbmRleCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcblxyXG4gICAgY29udGVudEVsLmNyZWF0ZUVsKCdoMScsIHsgdGV4dDogdCgncHJvZmlsZU1vZGFsX3RpdGxlJykgfSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRFbC5jcmVhdGVFbCgnZGl2Jyk7XHJcbiAgICByZW5kZXJQcm9maWxlKCk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgaWYgKHRoaXMudG9rZW5Hb3RSZWYpIHtcclxuICAgICAgQXBwU3RhdGUuZ2V0SW5zdGFuY2UoKS5ldmVudHMub2ZmcmVmKHRoaXMudG9rZW5Hb3RSZWYpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaFdwQ29tVG9rZW4oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBBcHBTdGF0ZS5nZXRJbnN0YW5jZSgpLmNvZGVWZXJpZmllciA9IGdlbmVyYXRlQ29kZVZlcmlmaWVyKCk7XHJcbiAgICBhd2FpdCBPQXV0aDJDbGllbnQuZ2V0V3BPQXV0aDJDbGllbnQodGhpcy5wbHVnaW4pLmdldEF1dGhvcml6ZUNvZGUoe1xyXG4gICAgICByZWRpcmVjdFVyaTogV1BfT0FVVEgyX1JFRElSRUNUX1VSSSxcclxuICAgICAgc2NvcGU6IFsgJ3Bvc3RzJywgJ3RheG9ub215JywgJ21lZGlhJyBdLFxyXG4gICAgICBibG9nOiB0aGlzLnByb2ZpbGVEYXRhLmVuZHBvaW50LFxyXG4gICAgICBjb2RlVmVyaWZpZXI6IEFwcFN0YXRlLmdldEluc3RhbmNlKCkuY29kZVZlcmlmaWVyXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsICJleHBvcnQgY29uc3QgRVJST1JfTk9USUNFX1RJTUVPVVQgPSAxNTAwMDtcclxuXHJcbmV4cG9ydCBjb25zdCBXUF9PQVVUSDJfQ0xJRU5UX0lEID0gJzc5MDg1JztcclxuZXhwb3J0IGNvbnN0IFdQX09BVVRIMl9DTElFTlRfU0VDUkVUID0gJ3pnNG1LeTlPMW1jMW1teW5TaEpUVnhzOHIxazNYNGUzZzFzdjVVUmxrcFpxbFdkVWRBQTdDMlNTQk9vMDJQN1gnO1xyXG5leHBvcnQgY29uc3QgV1BfT0FVVEgyX1RPS0VOX0VORFBPSU5UID0gJ2h0dHBzOi8vcHVibGljLWFwaS53b3JkcHJlc3MuY29tL29hdXRoMi90b2tlbic7XHJcbmV4cG9ydCBjb25zdCBXUF9PQVVUSDJfQVVUSE9SSVpFX0VORFBPSU5UID0gJ2h0dHBzOi8vcHVibGljLWFwaS53b3JkcHJlc3MuY29tL29hdXRoMi9hdXRob3JpemUnO1xyXG5leHBvcnQgY29uc3QgV1BfT0FVVEgyX1ZBTElEQVRFX1RPS0VOX0VORFBPSU5UID0gJ2h0dHBzOi8vcHVibGljLWFwaS53b3JkcHJlc3MuY29tL29hdXRoMi90b2tlbi1pbmZvJztcclxuZXhwb3J0IGNvbnN0IFdQX09BVVRIMl9VUkxfQUNUSU9OID0gJ3dvcmRwcmVzcy1wbHVnaW4tb2F1dGgnO1xyXG5leHBvcnQgY29uc3QgV1BfT0FVVEgyX1JFRElSRUNUX1VSSSA9IGBvYnNpZGlhbjovLyR7V1BfT0FVVEgyX1VSTF9BQ1RJT059YDtcclxuXHJcbmV4cG9ydCBjb25zdCBXUF9ERUZBVUxUX1BST0ZJTEVfTkFNRSA9ICdEZWZhdWx0JztcclxuXHJcbmV4cG9ydCBjb25zdCBlbnVtIEV2ZW50VHlwZSB7XHJcbiAgT0FVVEgyX1RPS0VOX0dPVCA9ICdPQVVUSDJfVE9LRU5fR09UJ1xyXG59XHJcbiIsICJpbXBvcnQgeyBOb3RpY2UsIFNldHRpbmcgfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCB7IFdwUHJvZmlsZSB9IGZyb20gJy4vd3AtcHJvZmlsZSc7XHJcbmltcG9ydCB7IEFwcFN0YXRlIH0gZnJvbSAnLi9hcHAtc3RhdGUnO1xyXG5pbXBvcnQgeyBXb3JkcHJlc3NQbHVnaW5TZXR0aW5ncyB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzJztcclxuaW1wb3J0IE1hcmtkb3duSXRNYXRoSmF4M1BsdWdpbiBmcm9tICcuL21hcmtkb3duLWl0LW1hdGhqYXgzLXBsdWdpbic7XHJcbmltcG9ydCB7IFdvcmRQcmVzc1Bvc3RQYXJhbXMgfSBmcm9tICcuL3dwLWNsaWVudCc7XHJcbmltcG9ydCB7IGdldFdvcmRQcmVzc0NsaWVudCB9IGZyb20gJy4vd3AtY2xpZW50cyc7XHJcbmltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBFUlJPUl9OT1RJQ0VfVElNRU9VVCB9IGZyb20gJy4vY29uc3RzJztcclxuXHJcbmV4cG9ydCB0eXBlIFNhZmVBbnkgPSBhbnk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5XaXRoQnJvd3Nlcih1cmw6IHN0cmluZywgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVuZGVmaW5lZHxudW1iZXJ8c3RyaW5nPiA9IHt9KTogdm9pZCB7XHJcbiAgd2luZG93Lm9wZW4oYCR7dXJsfT8ke2dlbmVyYXRlUXVlcnlTdHJpbmcocXVlcnlQYXJhbXMpfWApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVRdWVyeVN0cmluZyhwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVuZGVmaW5lZHxudW1iZXJ8c3RyaW5nPik6IHN0cmluZyB7XHJcbiAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoXHJcbiAgICBPYmplY3QuZnJvbUVudHJpZXMoXHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtcykuZmlsdGVyKCAoW2ssIHZdKSA9PiB2IT09dW5kZWZpbmVkKVxyXG4gICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgKS50b1N0cmluZygpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9taXNlRnVsZmlsbGVkUmVzdWx0PFQ+KG9iajogU2FmZUFueSk6IG9iaiBpcyBQcm9taXNlRnVsZmlsbGVkUmVzdWx0PFQ+IHtcclxuICByZXR1cm4gISFvYmogJiYgb2JqLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcgJiYgb2JqLnZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBNYXJrZG93blBhcnNlcihzZXR0aW5nczogV29yZHByZXNzUGx1Z2luU2V0dGluZ3MpOiB2b2lkIHtcclxuICBBcHBTdGF0ZS5nZXRJbnN0YW5jZSgpLm1hcmtkb3duUGFyc2VyLnVzZShNYXJrZG93bkl0TWF0aEpheDNQbHVnaW4sIHtcclxuICAgIG91dHB1dFR5cGU6IHNldHRpbmdzLm1hdGhKYXhPdXRwdXRUeXBlXHJcbiAgfSk7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyZXJQcm9maWxlKHByb2ZpbGU6IFdwUHJvZmlsZSwgY29udGFpbmVyOiBIVE1MRWxlbWVudCk6IFNldHRpbmcge1xyXG4gIGxldCBuYW1lID0gcHJvZmlsZS5uYW1lO1xyXG4gIGlmIChwcm9maWxlLmlzRGVmYXVsdCkge1xyXG4gICAgbmFtZSArPSAnIFx1MjcxNFx1RkUwRic7XHJcbiAgfVxyXG4gIGxldCBkZXNjID0gcHJvZmlsZS5lbmRwb2ludDtcclxuICBpZiAocHJvZmlsZS53cENvbU9BdXRoMlRva2VuKSB7XHJcbiAgICBkZXNjICs9IGAgLyBcdUQ4M0NcdUREOTQgLyBcdUQ4M0RcdUREMTJgO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAocHJvZmlsZS5zYXZlVXNlcm5hbWUpIHtcclxuICAgICAgZGVzYyArPSBgIC8gXHVEODNDXHVERDk0ICR7cHJvZmlsZS51c2VybmFtZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb2ZpbGUuc2F2ZVBhc3N3b3JkKSB7XHJcbiAgICAgIGRlc2MgKz0gJyAvIFx1RDgzRFx1REQxMiAqKioqKionO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gbmV3IFNldHRpbmcoY29udGFpbmVyKVxyXG4gICAgLnNldE5hbWUobmFtZSlcclxuICAgIC5zZXREZXNjKGRlc2MpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHRyeSB7XHJcbiAgICByZXR1cm4gQm9vbGVhbihuZXcgVVJMKHVybCkpO1xyXG4gIH0gY2F0Y2goZSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRvQ2xpZW50UHVibGlzaChwbHVnaW46IFdvcmRwcmVzc1BsdWdpbiwgcHJvZmlsZTogV3BQcm9maWxlLCBkZWZhdWx0UG9zdFBhcmFtcz86IFdvcmRQcmVzc1Bvc3RQYXJhbXMpOiB2b2lkO1xyXG5leHBvcnQgZnVuY3Rpb24gZG9DbGllbnRQdWJsaXNoKHBsdWdpbjogV29yZHByZXNzUGx1Z2luLCBwcm9maWxlTmFtZTogc3RyaW5nLCBkZWZhdWx0UG9zdFBhcmFtcz86IFdvcmRQcmVzc1Bvc3RQYXJhbXMpOiB2b2lkO1xyXG5leHBvcnQgZnVuY3Rpb24gZG9DbGllbnRQdWJsaXNoKFxyXG4gIHBsdWdpbjogV29yZHByZXNzUGx1Z2luLFxyXG4gIHByb2ZpbGVPck5hbWU6IFdwUHJvZmlsZSB8IHN0cmluZyxcclxuICBkZWZhdWx0UG9zdFBhcmFtcz86IFdvcmRQcmVzc1Bvc3RQYXJhbXNcclxuKTogdm9pZCB7XHJcbiAgbGV0IHByb2ZpbGU6IFdwUHJvZmlsZSB8IHVuZGVmaW5lZDtcclxuICBpZiAoaXNTdHJpbmcocHJvZmlsZU9yTmFtZSkpIHtcclxuICAgIHByb2ZpbGUgPSBwbHVnaW4uc2V0dGluZ3MucHJvZmlsZXMuZmluZChpdCA9PiBpdC5uYW1lID09PSBwcm9maWxlT3JOYW1lKTtcclxuICB9IGVsc2Uge1xyXG4gICAgcHJvZmlsZSA9IHByb2ZpbGVPck5hbWU7XHJcbiAgfVxyXG4gIGlmIChwcm9maWxlKSB7XHJcbiAgICBjb25zdCBjbGllbnQgPSBnZXRXb3JkUHJlc3NDbGllbnQocGx1Z2luLCBwcm9maWxlKTtcclxuICAgIGlmIChjbGllbnQpIHtcclxuICAgICAgY2xpZW50LnB1Ymxpc2hQb3N0KGRlZmF1bHRQb3N0UGFyYW1zKS50aGVuKCk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IG5vU3VjaFByb2ZpbGVNZXNzYWdlID0gcGx1Z2luLmkxOG4udCgnZXJyb3Jfbm9TdWNoUHJvZmlsZScsIHtcclxuICAgICAgcHJvZmlsZU5hbWU6IFN0cmluZyhwcm9maWxlT3JOYW1lKVxyXG4gICAgfSk7XHJcbiAgICBuZXcgTm90aWNlKG5vU3VjaFByb2ZpbGVNZXNzYWdlLCBFUlJPUl9OT1RJQ0VfVElNRU9VVCk7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3Iobm9TdWNoUHJvZmlsZU1lc3NhZ2UpO1xyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgTWFya2Rvd25JdCBmcm9tICdtYXJrZG93bi1pdCc7XHJcblxyXG5leHBvcnQgY2xhc3MgQXBwU3RhdGUge1xyXG4gIHByaXZhdGUgc3RhdGljIGluc3RhbmNlOiBBcHBTdGF0ZTtcclxuXHJcbiAgbWFya2Rvd25QYXJzZXIgPSBuZXcgTWFya2Rvd25JdCgpO1xyXG5cclxuICBldmVudHMgPSBuZXcgRXZlbnRzKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIENvZGUgdmVyaWZpZXIgYmV0d2VlbiBjbGFzc2VzLlxyXG4gICAqL1xyXG4gIGNvZGVWZXJpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEluc3RhbmNlKCk6IEFwcFN0YXRlIHtcclxuICAgIGlmICghQXBwU3RhdGUuaW5zdGFuY2UpIHtcclxuICAgICAgQXBwU3RhdGUuaW5zdGFuY2UgPSBuZXcgQXBwU3RhdGUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBBcHBTdGF0ZS5pbnN0YW5jZTtcclxuICB9XHJcblxyXG59XHJcbiIsICJpbXBvcnQgTWFya2Rvd25JdCBmcm9tICdtYXJrZG93bi1pdCc7XHJcbmltcG9ydCBTdGF0ZUlubGluZSBmcm9tICdtYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL3N0YXRlX2lubGluZSc7XHJcbmltcG9ydCBTdGF0ZUJsb2NrIGZyb20gJ21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9zdGF0ZV9ibG9jayc7XHJcbmltcG9ydCB7IFRlWCB9IGZyb20gJ21hdGhqYXgtZnVsbC9qcy9pbnB1dC90ZXgnO1xyXG5pbXBvcnQgeyBBbGxQYWNrYWdlcyB9IGZyb20gJ21hdGhqYXgtZnVsbC9qcy9pbnB1dC90ZXgvQWxsUGFja2FnZXMnO1xyXG5pbXBvcnQgeyBTVkcgfSBmcm9tICdtYXRoamF4LWZ1bGwvanMvb3V0cHV0L3N2Zyc7XHJcbmltcG9ydCBUb2tlbiBmcm9tICdtYXJrZG93bi1pdC9saWIvdG9rZW4nO1xyXG5pbXBvcnQgeyBsaXRlQWRhcHRvciB9IGZyb20gJ21hdGhqYXgtZnVsbC9qcy9hZGFwdG9ycy9saXRlQWRhcHRvcic7XHJcbmltcG9ydCB7IFJlZ2lzdGVySFRNTEhhbmRsZXIgfSBmcm9tICdtYXRoamF4LWZ1bGwvanMvaGFuZGxlcnMvaHRtbCc7XHJcbmltcG9ydCB7IEFzc2lzdGl2ZU1tbEhhbmRsZXIgfSBmcm9tICdtYXRoamF4LWZ1bGwvanMvYTExeS9hc3Npc3RpdmUtbW1sJztcclxuaW1wb3J0IHsgbWF0aGpheCB9IGZyb20gJ21hdGhqYXgtZnVsbC9qcy9tYXRoamF4JztcclxuaW1wb3J0IGp1aWNlIGZyb20gJ2p1aWNlJztcclxuaW1wb3J0IHsgU2FmZUFueSB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyBNYXRoSmF4T3V0cHV0VHlwZSB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzJztcclxuXHJcblxyXG5pbnRlcmZhY2UgTWFya2Rvd25JdE1hdGhKYXgzUGx1Z2luT3B0aW9ucyB7XHJcbiAgb3V0cHV0VHlwZTogTWF0aEpheE91dHB1dFR5cGU7XHJcbn1cclxuXHJcbmludGVyZmFjZSBDb252ZXJ0T3B0aW9ucyB7XHJcbiAgZGlzcGxheTogYm9vbGVhblxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYXJrZG93bkl0TWF0aEpheDNQbHVnaW4obWQ6IE1hcmtkb3duSXQsIG9wdGlvbnM6IE1hcmtkb3duSXRNYXRoSmF4M1BsdWdpbk9wdGlvbnMpOiB2b2lkIHtcclxuICAvLyBzZXQgTWF0aEpheCBhcyB0aGUgcmVuZGVyZXIgZm9yIG1hcmtkb3duLWl0LXNpbXBsZW1hdGhcclxuICBtZC5pbmxpbmUucnVsZXIuYWZ0ZXIoJ2VzY2FwZScsICdtYXRoX2lubGluZScsIG1hdGhJbmxpbmUpO1xyXG4gIG1kLmJsb2NrLnJ1bGVyLmFmdGVyKCdibG9ja3F1b3RlJywgJ21hdGhfYmxvY2snLCBtYXRoQmxvY2ssIHtcclxuICAgIGFsdDogWydwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnLCAnbGlzdCddLFxyXG4gIH0pO1xyXG4gIG1kLnJlbmRlcmVyLnJ1bGVzLm1hdGhfaW5saW5lID0gKHRva2VuczogVG9rZW5bXSwgaWR4OiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiByZW5kZXJNYXRoKHRva2Vuc1tpZHhdLmNvbnRlbnQsIHtcclxuICAgICAgZGlzcGxheTogZmFsc2VcclxuICAgIH0sIG9wdGlvbnMpO1xyXG4gIH07XHJcbiAgbWQucmVuZGVyZXIucnVsZXMubWF0aF9ibG9jayA9ICh0b2tlbnM6IFRva2VuW10sIGlkeDogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gcmVuZGVyTWF0aCh0b2tlbnNbaWR4XS5jb250ZW50LCB7XHJcbiAgICAgIGRpc3BsYXk6IHRydWVcclxuICAgIH0sIG9wdGlvbnMpO1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbmRlck1hdGgoY29udGVudDogc3RyaW5nLCBjb252ZXJ0T3B0aW9uczogQ29udmVydE9wdGlvbnMsIG9wdGlvbnM6IE1hcmtkb3duSXRNYXRoSmF4M1BsdWdpbk9wdGlvbnMpOiBzdHJpbmcge1xyXG4gIGlmIChvcHRpb25zLm91dHB1dFR5cGUgPT09IE1hdGhKYXhPdXRwdXRUeXBlLlNWRykge1xyXG4gICAgY29uc3QgZG9jdW1lbnRPcHRpb25zID0ge1xyXG4gICAgICBJbnB1dEpheDogbmV3IFRlWCh7IHBhY2thZ2VzOiBBbGxQYWNrYWdlcyB9KSxcclxuICAgICAgT3V0cHV0SmF4OiBuZXcgU1ZHKHsgZm9udENhY2hlOiAnbm9uZScgfSlcclxuICAgIH07XHJcbiAgICBjb25zdCBhZGFwdG9yID0gbGl0ZUFkYXB0b3IoKTtcclxuICAgIGNvbnN0IGhhbmRsZXIgPSBSZWdpc3RlckhUTUxIYW5kbGVyKGFkYXB0b3IpO1xyXG4gICAgQXNzaXN0aXZlTW1sSGFuZGxlcihoYW5kbGVyKTtcclxuICAgIGNvbnN0IG1hdGhEb2N1bWVudCA9IG1hdGhqYXguZG9jdW1lbnQoY29udGVudCwgZG9jdW1lbnRPcHRpb25zKTtcclxuICAgIGNvbnN0IGh0bWwgPSBhZGFwdG9yLm91dGVySFRNTChtYXRoRG9jdW1lbnQuY29udmVydChjb250ZW50LCBjb252ZXJ0T3B0aW9ucykpO1xyXG4gICAgY29uc3Qgc3R5bGVzaGVldCA9IGFkYXB0b3Iub3V0ZXJIVE1MKGRvY3VtZW50T3B0aW9ucy5PdXRwdXRKYXguc3R5bGVTaGVldChtYXRoRG9jdW1lbnQpIGFzIFNhZmVBbnkpO1xyXG4gICAgcmV0dXJuIGp1aWNlKGh0bWwgKyBzdHlsZXNoZWV0KTtcclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKGNvbnZlcnRPcHRpb25zLmRpc3BsYXkpIHtcclxuICAgICAgcmV0dXJuIGAkJFxcbiR7Y29udGVudH0kJFxcbmA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYCQke2NvbnRlbnR9JGA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vLyBUZXN0IGlmIHBvdGVudGlhbCBvcGVuaW5nIG9yIGNsb3NpbmcgZGVsaW1pdGVyXHJcbi8vIEFzc3VtZXMgdGhhdCB0aGVyZSBpcyBhICckJyBhdCBzdGF0ZS5zcmNbcG9zXVxyXG5mdW5jdGlvbiBpc1ZhbGlkRGVsaW1pdGVyKHN0YXRlOiBTdGF0ZUlubGluZSwgcG9zOiBudW1iZXIpIHtcclxuICBjb25zdCBtYXggPSBzdGF0ZS5wb3NNYXg7XHJcbiAgbGV0IGNhbk9wZW4gPSB0cnVlO1xyXG4gIGxldCBjYW5DbG9zZSA9IHRydWU7XHJcblxyXG4gIGNvbnN0IHByZXZDaGFyID0gcG9zID4gMCA/IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyAtIDEpIDogLTE7XHJcbiAgY29uc3QgbmV4dENoYXIgPSBwb3MgKyAxIDw9IG1heCA/IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyArIDEpIDogLTE7XHJcblxyXG4gIC8vIENoZWNrIG5vbi13aGl0ZXNwYWNlIGNvbmRpdGlvbnMgZm9yIG9wZW5pbmcgYW5kIGNsb3NpbmcsIGFuZFxyXG4gIC8vIGNoZWNrIHRoYXQgY2xvc2luZyBkZWxpbWl0ZXIgaXNuJ3QgZm9sbG93ZWQgYnkgYSBudW1iZXJcclxuICBpZiAocHJldkNoYXIgPT09IDB4MjAgLyogJyAnICovXHJcbiAgICB8fCBwcmV2Q2hhciA9PT0gMHgwOSAvKiBcXHQgKi9cclxuICAgIHx8IChuZXh0Q2hhciA+PSAweDMwIC8qICcwJyAqLyAmJiBuZXh0Q2hhciA8PSAweDM5KSAvKiAnOScgKi9cclxuICApIHtcclxuICAgIGNhbkNsb3NlID0gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChuZXh0Q2hhciA9PT0gMHgyMCAvKiAnICcgKi8gfHwgbmV4dENoYXIgPT09IDB4MDkgLyogXFx0ICovKSB7XHJcbiAgICBjYW5PcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgY2FuT3BlbixcclxuICAgIGNhbkNsb3NlXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWF0aElubGluZShzdGF0ZTogU3RhdGVJbmxpbmUsIHNpbGVudDogYm9vbGVhbikge1xyXG4gIGlmIChzdGF0ZS5zcmNbc3RhdGUucG9zXSAhPT0gJyQnKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBsZXQgcmVzID0gaXNWYWxpZERlbGltaXRlcihzdGF0ZSwgc3RhdGUucG9zKTtcclxuICBpZiAoIXJlcy5jYW5PcGVuKSB7XHJcbiAgICBpZiAoIXNpbGVudCkge1xyXG4gICAgICBzdGF0ZS5wZW5kaW5nICs9ICckJztcclxuICAgIH1cclxuICAgIHN0YXRlLnBvcyArPSAxO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBGaXJzdCBjaGVjayBmb3IgYW5kIGJ5cGFzcyBhbGwgcHJvcGVybHkgZXNjYXBlZCBkZWxpbWl0ZXJzXHJcbiAgLy8gVGhpcyBsb29wIHdpbGwgYXNzdW1lIHRoYXQgdGhlIGZpcnN0IGxlYWRpbmcgYmFja3RpY2sgY2FuIG5vdFxyXG4gIC8vIGJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gc3RhdGUuc3JjLCB3aGljaCBpcyBrbm93biBzaW5jZVxyXG4gIC8vIHdlIGhhdmUgZm91bmQgYW4gb3BlbmluZyBkZWxpbWl0ZXIgYWxyZWFkeS5cclxuICBjb25zdCBzdGFydCA9IHN0YXRlLnBvcyArIDE7XHJcbiAgbGV0IG1hdGNoID0gc3RhcnQ7XHJcbiAgd2hpbGUgKChtYXRjaCA9IHN0YXRlLnNyYy5pbmRleE9mKCckJywgbWF0Y2gpKSAhPT0gLTEpIHtcclxuICAgIC8vIEZvdW5kIHBvdGVudGlhbCAkLCBsb29rIGZvciBlc2NhcGVzLCBwb3Mgd2lsbCBwb2ludCB0b1xyXG4gICAgLy8gZmlyc3Qgbm9uIGVzY2FwZSB3aGVuIGNvbXBsZXRlXHJcbiAgICBsZXQgcG9zID0gbWF0Y2ggLSAxO1xyXG4gICAgd2hpbGUgKHN0YXRlLnNyY1twb3NdID09PSAnXFxcXCcpIHtcclxuICAgICAgcG9zIC09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXZlbiBudW1iZXIgb2YgZXNjYXBlcywgcG90ZW50aWFsIGNsb3NpbmcgZGVsaW1pdGVyIGZvdW5kXHJcbiAgICBpZiAoKG1hdGNoIC0gcG9zKSAlIDIgPT0gMSkge1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICAgIG1hdGNoICs9IDE7XHJcbiAgfVxyXG5cclxuICAvLyBObyBjbG9zaW5nIGRlbGltdGVyIGZvdW5kLiAgQ29uc3VtZSAkIGFuZCBjb250aW51ZS5cclxuICBpZiAobWF0Y2ggPT09IC0xKSB7XHJcbiAgICBpZiAoIXNpbGVudCkge1xyXG4gICAgICBzdGF0ZS5wZW5kaW5nICs9ICckJztcclxuICAgIH1cclxuICAgIHN0YXRlLnBvcyA9IHN0YXJ0O1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBpZiB3ZSBoYXZlIGVtcHR5IGNvbnRlbnQsIGllOiAkJC4gIERvIG5vdCBwYXJzZS5cclxuICBpZiAobWF0Y2ggLSBzdGFydCA9PT0gMCkge1xyXG4gICAgaWYgKCFzaWxlbnQpIHtcclxuICAgICAgc3RhdGUucGVuZGluZyArPSAnJCQnO1xyXG4gICAgfVxyXG4gICAgc3RhdGUucG9zID0gc3RhcnQgKyAxO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLyBDaGVjayBmb3IgdmFsaWQgY2xvc2luZyBkZWxpbWl0ZXJcclxuICByZXMgPSBpc1ZhbGlkRGVsaW1pdGVyKHN0YXRlLCBtYXRjaCk7XHJcbiAgaWYgKCFyZXMuY2FuQ2xvc2UpIHtcclxuICAgIGlmICghc2lsZW50KSB7XHJcbiAgICAgIHN0YXRlLnBlbmRpbmcgKz0gJyQnO1xyXG4gICAgfVxyXG4gICAgc3RhdGUucG9zID0gc3RhcnQ7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGlmICghc2lsZW50KSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHN0YXRlLnB1c2goJ21hdGhfaW5saW5lJywgJ21hdGgnLCAwKTtcclxuICAgIHRva2VuLm1hcmt1cCA9ICckJztcclxuICAgIHRva2VuLmNvbnRlbnQgPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIG1hdGNoKTtcclxuICB9XHJcblxyXG4gIHN0YXRlLnBvcyA9IG1hdGNoICsgMTtcclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWF0aEJsb2NrKHN0YXRlOiBTdGF0ZUJsb2NrLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgc2lsZW50OiBib29sZWFuKSB7XHJcbiAgbGV0IG5leHQ6IG51bWJlcjtcclxuICBsZXQgbGFzdFBvczogbnVtYmVyO1xyXG4gIGxldCBmb3VuZCA9IGZhbHNlO1xyXG4gIGxldCBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRdICsgc3RhdGUudFNoaWZ0W3N0YXJ0XTtcclxuICBsZXQgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0XTtcclxuICBsZXQgbGFzdExpbmUgPSAnJztcclxuXHJcbiAgaWYgKHBvcyArIDIgPiBtYXgpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKHN0YXRlLnNyYy5zbGljZShwb3MsIHBvcyArIDIpICE9PSAnJCQnKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwb3MgKz0gMjtcclxuICBsZXQgZmlyc3RMaW5lID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgbWF4KTtcclxuXHJcbiAgaWYgKHNpbGVudCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG4gIGlmIChmaXJzdExpbmUudHJpbSgpLnNsaWNlKC0yKSA9PT0gJyQkJykge1xyXG4gICAgLy8gU2luZ2xlIGxpbmUgZXhwcmVzc2lvblxyXG4gICAgZmlyc3RMaW5lID0gZmlyc3RMaW5lLnRyaW0oKS5zbGljZSgwLCAtMik7XHJcbiAgICBmb3VuZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBmb3IgKG5leHQgPSBzdGFydDsgIWZvdW5kOyApIHtcclxuICAgIG5leHQrKztcclxuXHJcbiAgICBpZiAobmV4dCA+PSBlbmQpIHtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zID0gc3RhdGUuYk1hcmtzW25leHRdICsgc3RhdGUudFNoaWZ0W25leHRdO1xyXG4gICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRdO1xyXG5cclxuICAgIGlmIChwb3MgPCBtYXggJiYgc3RhdGUudFNoaWZ0W25leHRdIDwgc3RhdGUuYmxrSW5kZW50KSB7XHJcbiAgICAgIC8vIG5vbi1lbXB0eSBsaW5lIHdpdGggbmVnYXRpdmUgaW5kZW50IHNob3VsZCBzdG9wIHRoZSBsaXN0OlxyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdGUuc3JjLnNsaWNlKHBvcywgbWF4KS50cmltKCkuc2xpY2UoLTIpID09PSAnJCQnKSB7XHJcbiAgICAgIGxhc3RQb3MgPSBzdGF0ZS5zcmMuc2xpY2UoMCwgbWF4KS5sYXN0SW5kZXhPZignJCQnKTtcclxuICAgICAgbGFzdExpbmUgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBsYXN0UG9zKTtcclxuICAgICAgZm91bmQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGUubGluZSA9IG5leHQgKyAxO1xyXG5cclxuICBjb25zdCB0b2tlbiA9IHN0YXRlLnB1c2goJ21hdGhfYmxvY2snLCAnbWF0aCcsIDApO1xyXG4gIHRva2VuLmJsb2NrID0gdHJ1ZTtcclxuICB0b2tlbi5jb250ZW50ID1cclxuICAgIChmaXJzdExpbmUgJiYgZmlyc3RMaW5lLnRyaW0oKSA/IGZpcnN0TGluZSArICdcXG4nIDogJycpICtcclxuICAgIHN0YXRlLmdldExpbmVzKHN0YXJ0ICsgMSwgbmV4dCwgc3RhdGUudFNoaWZ0W3N0YXJ0XSwgdHJ1ZSkgK1xyXG4gICAgKGxhc3RMaW5lICYmIGxhc3RMaW5lLnRyaW0oKSA/IGxhc3RMaW5lIDogJycpO1xyXG4gIHRva2VuLm1hcCA9IFtzdGFydCwgc3RhdGUubGluZV07XHJcbiAgdG9rZW4ubWFya3VwID0gJyQkJztcclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4iLCAiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuZXhwb3J0IGRlZmF1bHQgZnJlZUdsb2JhbDtcbiIsICJpbXBvcnQgZnJlZUdsb2JhbCBmcm9tICcuL19mcmVlR2xvYmFsLmpzJztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5leHBvcnQgZGVmYXVsdCByb290O1xuIiwgImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxuZXhwb3J0IGRlZmF1bHQgU3ltYm9sO1xuIiwgImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRSYXdUYWc7XG4iLCAiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG9iamVjdFRvU3RyaW5nO1xuIiwgImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcbmltcG9ydCBnZXRSYXdUYWcgZnJvbSAnLi9fZ2V0UmF3VGFnLmpzJztcbmltcG9ydCBvYmplY3RUb1N0cmluZyBmcm9tICcuL19vYmplY3RUb1N0cmluZy5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlR2V0VGFnO1xuIiwgIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc09iamVjdExpa2U7XG4iLCAiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1N5bWJvbDtcbiIsICIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcnJheU1hcDtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuZXhwb3J0IGRlZmF1bHQgaXNBcnJheTtcbiIsICJpbXBvcnQgU3ltYm9sIGZyb20gJy4vX1N5bWJvbC5qcyc7XG5pbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcbmltcG9ydCBpc1N5bWJvbCBmcm9tICcuL2lzU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVRvU3RyaW5nO1xuIiwgIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdHJpbW1lZEVuZEluZGV4O1xuIiwgImltcG9ydCB0cmltbWVkRW5kSW5kZXggZnJvbSAnLi9fdHJpbW1lZEVuZEluZGV4LmpzJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdcbiAgICA/IHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgIDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVHJpbTtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNPYmplY3Q7XG4iLCAiaW1wb3J0IGJhc2VUcmltIGZyb20gJy4vX2Jhc2VUcmltLmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcbmltcG9ydCBpc1N5bWJvbCBmcm9tICcuL2lzU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTkFOID0gMCAvIDA7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IGJhc2VUcmltKHZhbHVlKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvTnVtYmVyO1xuIiwgImltcG9ydCB0b051bWJlciBmcm9tICcuL3RvTnVtYmVyLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMi4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9GaW5pdGUoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvRmluaXRlO1xuIiwgImltcG9ydCB0b0Zpbml0ZSBmcm9tICcuL3RvRmluaXRlLmpzJztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9JbnRlZ2VyO1xuIiwgIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlkZW50aXR5O1xuIiwgImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0Z1bmN0aW9uO1xuIiwgImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5leHBvcnQgZGVmYXVsdCBjb3JlSnNEYXRhO1xuIiwgImltcG9ydCBjb3JlSnNEYXRhIGZyb20gJy4vX2NvcmVKc0RhdGEuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc01hc2tlZDtcbiIsICIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvU291cmNlO1xuIiwgImltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXNGdW5jdGlvbi5qcyc7XG5pbXBvcnQgaXNNYXNrZWQgZnJvbSAnLi9faXNNYXNrZWQuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuaW1wb3J0IHRvU291cmNlIGZyb20gJy4vX3RvU291cmNlLmpzJztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzTmF0aXZlO1xuIiwgIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRWYWx1ZTtcbiIsICJpbXBvcnQgYmFzZUlzTmF0aXZlIGZyb20gJy4vX2Jhc2VJc05hdGl2ZS5qcyc7XG5pbXBvcnQgZ2V0VmFsdWUgZnJvbSAnLi9fZ2V0VmFsdWUuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXROYXRpdmU7XG4iLCAiLyoqXG4gKiBBIGZhc3RlciBhbHRlcm5hdGl2ZSB0byBgRnVuY3Rpb24jYXBwbHlgLCB0aGlzIGZ1bmN0aW9uIGludm9rZXMgYGZ1bmNgXG4gKiB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBgdGhpc0FyZ2AgYW5kIHRoZSBhcmd1bWVudHMgb2YgYGFyZ3NgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBmdW5jYC5cbiAqL1xuZnVuY3Rpb24gYXBwbHkoZnVuYywgdGhpc0FyZywgYXJncykge1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICB9XG4gIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcHBseTtcbiIsICIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNob3J0T3V0O1xuIiwgIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb25zdGFudDtcbiIsICJpbXBvcnQgZ2V0TmF0aXZlIGZyb20gJy4vX2dldE5hdGl2ZS5qcyc7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVQcm9wZXJ0eTtcbiIsICJpbXBvcnQgY29uc3RhbnQgZnJvbSAnLi9jb25zdGFudC5qcyc7XG5pbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSAnLi9fZGVmaW5lUHJvcGVydHkuanMnO1xuaW1wb3J0IGlkZW50aXR5IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBzZXRUb1N0cmluZ2Agd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAnd3JpdGFibGUnOiB0cnVlXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgYmFzZVNldFRvU3RyaW5nO1xuIiwgImltcG9ydCBiYXNlU2V0VG9TdHJpbmcgZnJvbSAnLi9fYmFzZVNldFRvU3RyaW5nLmpzJztcbmltcG9ydCBzaG9ydE91dCBmcm9tICcuL19zaG9ydE91dC5qcyc7XG5cbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbmV4cG9ydCBkZWZhdWx0IHNldFRvU3RyaW5nO1xuIiwgIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNJbmRleDtcbiIsICJpbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSAnLi9fZGVmaW5lUHJvcGVydHkuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlQXNzaWduVmFsdWU7XG4iLCAiLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGVxO1xuIiwgImltcG9ydCBiYXNlQXNzaWduVmFsdWUgZnJvbSAnLi9fYmFzZUFzc2lnblZhbHVlLmpzJztcbmltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIGB2YWx1ZWAgdG8gYGtleWAgb2YgYG9iamVjdGAgaWYgdGhlIGV4aXN0aW5nIHZhbHVlIGlzIG5vdCBlcXVpdmFsZW50XG4gKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gKi9cbmZ1bmN0aW9uIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzaWduVmFsdWU7XG4iLCAiaW1wb3J0IGFzc2lnblZhbHVlIGZyb20gJy4vX2Fzc2lnblZhbHVlLmpzJztcbmltcG9ydCBiYXNlQXNzaWduVmFsdWUgZnJvbSAnLi9fYmFzZUFzc2lnblZhbHVlLmpzJztcblxuLyoqXG4gKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIGlmIChpc05ldykge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvcHlPYmplY3Q7XG4iLCAiaW1wb3J0IGFwcGx5IGZyb20gJy4vX2FwcGx5LmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIHRyYW5zZm9ybXMgdGhlIHJlc3QgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgb3ZlclJlc3Q7XG4iLCAiaW1wb3J0IGlkZW50aXR5IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuaW1wb3J0IG92ZXJSZXN0IGZyb20gJy4vX292ZXJSZXN0LmpzJztcbmltcG9ydCBzZXRUb1N0cmluZyBmcm9tICcuL19zZXRUb1N0cmluZy5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVzdGAgd2hpY2ggZG9lc24ndCB2YWxpZGF0ZSBvciBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlUmVzdDtcbiIsICIvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgbGVuZ3RoLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgbGVuZ3RoLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNMZW5ndGgoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aChJbmZpbml0eSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTGVuZ3RoKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDw9IE1BWF9TQUZFX0lOVEVHRVI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTGVuZ3RoO1xuIiwgImltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXNGdW5jdGlvbi5qcyc7XG5pbXBvcnQgaXNMZW5ndGggZnJvbSAnLi9pc0xlbmd0aC5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0FycmF5TGlrZTtcbiIsICJpbXBvcnQgZXEgZnJvbSAnLi9lcS5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5pbXBvcnQgaXNJbmRleCBmcm9tICcuL19pc0luZGV4LmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IGluZGV4IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgaW5kZXggb3Iga2V5IGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBvYmplY3QgYXJndW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB0eXBlID0gdHlwZW9mIGluZGV4O1xuICBpZiAodHlwZSA9PSAnbnVtYmVyJ1xuICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICA6ICh0eXBlID09ICdzdHJpbmcnICYmIGluZGV4IGluIG9iamVjdClcbiAgICAgICkge1xuICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0l0ZXJhdGVlQ2FsbDtcbiIsICJpbXBvcnQgYmFzZVJlc3QgZnJvbSAnLi9fYmFzZVJlc3QuanMnO1xuaW1wb3J0IGlzSXRlcmF0ZWVDYWxsIGZyb20gJy4vX2lzSXRlcmF0ZWVDYWxsLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5hc3NpZ25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25lciBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFzc2lnbmVyIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVBc3NpZ25lcihhc3NpZ25lcikge1xuICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2VzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoLFxuICAgICAgICBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsXG4gICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICBjdXN0b21pemVyID0gKGFzc2lnbmVyLmxlbmd0aCA+IDMgJiYgdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJylcbiAgICAgID8gKGxlbmd0aC0tLCBjdXN0b21pemVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSwgc291cmNlc1sxXSwgZ3VhcmQpKSB7XG4gICAgICBjdXN0b21pemVyID0gbGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IGN1c3RvbWl6ZXI7XG4gICAgICBsZW5ndGggPSAxO1xuICAgIH1cbiAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgaWYgKHNvdXJjZSkge1xuICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQXNzaWduZXI7XG4iLCAiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICBwcm90byA9ICh0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IucHJvdG90eXBlKSB8fCBvYmplY3RQcm90bztcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1Byb3RvdHlwZTtcbiIsICIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAqIG9yIG1heCBhcnJheSBsZW5ndGggY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIGludm9rZSBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVGltZXM7XG4iLCAiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0FyZ3VtZW50c2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICovXG5mdW5jdGlvbiBiYXNlSXNBcmd1bWVudHModmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzQXJndW1lbnRzO1xuIiwgImltcG9ydCBiYXNlSXNBcmd1bWVudHMgZnJvbSAnLi9fYmFzZUlzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhbiBgYXJndW1lbnRzYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcmd1bWVudHMgPSBiYXNlSXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPyBiYXNlSXNBcmd1bWVudHMgOiBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY2FsbGVlJykgJiZcbiAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaXNBcmd1bWVudHM7XG4iLCAiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHViRmFsc2U7XG4iLCAiaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5pbXBvcnQgc3R1YkZhbHNlIGZyb20gJy4vc3R1YkZhbHNlLmpzJztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gcm9vdC5CdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBCdWZmZXIoMikpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IFVpbnQ4QXJyYXkoMikpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQnVmZmVyID0gbmF0aXZlSXNCdWZmZXIgfHwgc3R1YkZhbHNlO1xuXG5leHBvcnQgZGVmYXVsdCBpc0J1ZmZlcjtcbiIsICJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc0xlbmd0aCBmcm9tICcuL2lzTGVuZ3RoLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKiogVXNlZCB0byBpZGVudGlmeSBgdG9TdHJpbmdUYWdgIHZhbHVlcyBvZiB0eXBlZCBhcnJheXMuICovXG52YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbnR5cGVkQXJyYXlUYWdzW2Zsb2F0MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbZmxvYXQ2NFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50OFRhZ10gPSB0eXBlZEFycmF5VGFnc1tpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ10gPSB0cnVlO1xudHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxudHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbb2JqZWN0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3JlZ2V4cFRhZ10gPVxudHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxudHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc1R5cGVkQXJyYXlgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzVHlwZWRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc1R5cGVkQXJyYXk7XG4iLCAiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVW5hcnk7XG4iLCAiaW1wb3J0IGZyZWVHbG9iYWwgZnJvbSAnLi9fZnJlZUdsb2JhbC5qcyc7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2VzcztcblxuLyoqIFVzZWQgdG8gYWNjZXNzIGZhc3RlciBOb2RlLmpzIGhlbHBlcnMuICovXG52YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgLy8gVXNlIGB1dGlsLnR5cGVzYCBmb3IgTm9kZS5qcyAxMCsuXG4gICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICBpZiAodHlwZXMpIHtcbiAgICAgIHJldHVybiB0eXBlcztcbiAgICB9XG5cbiAgICAvLyBMZWdhY3kgYHByb2Nlc3MuYmluZGluZygndXRpbCcpYCBmb3IgTm9kZS5qcyA8IDEwLlxuICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgfSBjYXRjaCAoZSkge31cbn0oKSk7XG5cbmV4cG9ydCBkZWZhdWx0IG5vZGVVdGlsO1xuIiwgImltcG9ydCBiYXNlSXNUeXBlZEFycmF5IGZyb20gJy4vX2Jhc2VJc1R5cGVkQXJyYXkuanMnO1xuaW1wb3J0IGJhc2VVbmFyeSBmcm9tICcuL19iYXNlVW5hcnkuanMnO1xuaW1wb3J0IG5vZGVVdGlsIGZyb20gJy4vX25vZGVVdGlsLmpzJztcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbmV4cG9ydCBkZWZhdWx0IGlzVHlwZWRBcnJheTtcbiIsICJpbXBvcnQgYmFzZVRpbWVzIGZyb20gJy4vX2Jhc2VUaW1lcy5qcyc7XG5pbXBvcnQgaXNBcmd1bWVudHMgZnJvbSAnLi9pc0FyZ3VtZW50cy5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuaW1wb3J0IGlzQnVmZmVyIGZyb20gJy4vaXNCdWZmZXIuanMnO1xuaW1wb3J0IGlzSW5kZXggZnJvbSAnLi9faXNJbmRleC5qcyc7XG5pbXBvcnQgaXNUeXBlZEFycmF5IGZyb20gJy4vaXNUeXBlZEFycmF5LmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtib29sZWFufSBpbmhlcml0ZWQgU3BlY2lmeSByZXR1cm5pbmcgaW5oZXJpdGVkIHByb3BlcnR5IG5hbWVzLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSwgaW5oZXJpdGVkKSB7XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgaXNBcmcgPSAhaXNBcnIgJiYgaXNBcmd1bWVudHModmFsdWUpLFxuICAgICAgaXNCdWZmID0gIWlzQXJyICYmICFpc0FyZyAmJiBpc0J1ZmZlcih2YWx1ZSksXG4gICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgIHNraXBJbmRleGVzID0gaXNBcnIgfHwgaXNBcmcgfHwgaXNCdWZmIHx8IGlzVHlwZSxcbiAgICAgIHJlc3VsdCA9IHNraXBJbmRleGVzID8gYmFzZVRpbWVzKHZhbHVlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAoKGluaGVyaXRlZCB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgLy8gU2FmYXJpIDkgaGFzIGVudW1lcmFibGUgYGFyZ3VtZW50cy5sZW5ndGhgIGluIHN0cmljdCBtb2RlLlxuICAgICAgICAgICBrZXkgPT0gJ2xlbmd0aCcgfHxcbiAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgIChpc0J1ZmYgJiYgKGtleSA9PSAnb2Zmc2V0JyB8fCBrZXkgPT0gJ3BhcmVudCcpKSB8fFxuICAgICAgICAgICAvLyBQaGFudG9tSlMgMiBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMuXG4gICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAvLyBTa2lwIGluZGV4IHByb3BlcnRpZXMuXG4gICAgICAgICAgIGlzSW5kZXgoa2V5LCBsZW5ndGgpXG4gICAgICAgICkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcnJheUxpa2VLZXlzO1xuIiwgIi8qKlxuICogQ3JlYXRlcyBhIHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJhbnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBvdmVyQXJnO1xuIiwgImltcG9ydCBvdmVyQXJnIGZyb20gJy4vX292ZXJBcmcuanMnO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5cbmV4cG9ydCBkZWZhdWx0IG5hdGl2ZUtleXM7XG4iLCAiaW1wb3J0IGlzUHJvdG90eXBlIGZyb20gJy4vX2lzUHJvdG90eXBlLmpzJztcbmltcG9ydCBuYXRpdmVLZXlzIGZyb20gJy4vX25hdGl2ZUtleXMuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYga2V5ICE9ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VLZXlzO1xuIiwgImltcG9ydCBhcnJheUxpa2VLZXlzIGZyb20gJy4vX2FycmF5TGlrZUtleXMuanMnO1xuaW1wb3J0IGJhc2VLZXlzIGZyb20gJy4vX2Jhc2VLZXlzLmpzJztcbmltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzQXJyYXlMaWtlLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy5rZXlzKCdoaScpO1xuICogLy8gPT4gWycwJywgJzEnXVxuICovXG5mdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGtleXM7XG4iLCAiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2VcbiAqIFtgT2JqZWN0LmtleXNgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBpZiAob2JqZWN0ICE9IG51bGwpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5hdGl2ZUtleXNJbjtcbiIsICJpbXBvcnQgaXNPYmplY3QgZnJvbSAnLi9pc09iamVjdC5qcyc7XG5pbXBvcnQgaXNQcm90b3R5cGUgZnJvbSAnLi9faXNQcm90b3R5cGUuanMnO1xuaW1wb3J0IG5hdGl2ZUtleXNJbiBmcm9tICcuL19uYXRpdmVLZXlzSW4uanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gIH1cbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlS2V5c0luO1xuIiwgImltcG9ydCBhcnJheUxpa2VLZXlzIGZyb20gJy4vX2FycmF5TGlrZUtleXMuanMnO1xuaW1wb3J0IGJhc2VLZXlzSW4gZnJvbSAnLi9fYmFzZUtleXNJbi5qcyc7XG5pbXBvcnQgaXNBcnJheUxpa2UgZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXNJbihuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICovXG5mdW5jdGlvbiBrZXlzSW4ob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBrZXlzSW47XG4iLCAiaW1wb3J0IGNvcHlPYmplY3QgZnJvbSAnLi9fY29weU9iamVjdC5qcyc7XG5pbXBvcnQgY3JlYXRlQXNzaWduZXIgZnJvbSAnLi9fY3JlYXRlQXNzaWduZXIuanMnO1xuaW1wb3J0IGtleXNJbiBmcm9tICcuL2tleXNJbi5qcyc7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25JbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmBcbiAqIHdoaWNoIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgYXNzaWduZWQgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJuc1xuICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAqIGlzIGludm9rZWQgd2l0aCBmaXZlIGFyZ3VtZW50czogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSkuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGFsaWFzIGV4dGVuZFdpdGhcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAc2VlIF8uYXNzaWduV2l0aFxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICogfVxuICpcbiAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduSW5XaXRoLCBjdXN0b21pemVyKTtcbiAqXG4gKiBkZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICovXG52YXIgYXNzaWduSW5XaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyKSB7XG4gIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBhc3NpZ25JbldpdGg7XG4iLCAiaW1wb3J0IGJhc2VUb1N0cmluZyBmcm9tICcuL19iYXNlVG9TdHJpbmcuanMnO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gKiBhbmQgYHVuZGVmaW5lZGAgdmFsdWVzLiBUaGUgc2lnbiBvZiBgLTBgIGlzIHByZXNlcnZlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvU3RyaW5nO1xuIiwgImltcG9ydCBvdmVyQXJnIGZyb20gJy4vX292ZXJBcmcuanMnO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBnZXRQcm90b3R5cGUgPSBvdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0UHJvdG90eXBlO1xuIiwgImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGdldFByb3RvdHlwZSBmcm9tICcuL19nZXRQcm90b3R5cGUuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0YCBjb25zdHJ1Y3Rvci4gKi9cbnZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgfHwgYmFzZUdldFRhZyh2YWx1ZSkgIT0gb2JqZWN0VGFnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBwcm90byA9IGdldFByb3RvdHlwZSh2YWx1ZSk7XG4gIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBDdG9yICYmXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoQ3RvcikgPT0gb2JqZWN0Q3RvclN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNQbGFpbk9iamVjdDtcbiIsICJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuaW1wb3J0IGlzUGxhaW5PYmplY3QgZnJvbSAnLi9pc1BsYWluT2JqZWN0LmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGRvbUV4Y1RhZyA9ICdbb2JqZWN0IERPTUV4Y2VwdGlvbl0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhbiBgRXJyb3JgLCBgRXZhbEVycm9yYCwgYFJhbmdlRXJyb3JgLCBgUmVmZXJlbmNlRXJyb3JgLFxuICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGVycm9yIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRXJyb3IobmV3IEVycm9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRXJyb3IoRXJyb3IpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFcnJvcih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAodHlwZW9mIHZhbHVlLm1lc3NhZ2UgPT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlLm5hbWUgPT0gJ3N0cmluZycgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNFcnJvcjtcbiIsICJpbXBvcnQgYXBwbHkgZnJvbSAnLi9fYXBwbHkuanMnO1xuaW1wb3J0IGJhc2VSZXN0IGZyb20gJy4vX2Jhc2VSZXN0LmpzJztcbmltcG9ydCBpc0Vycm9yIGZyb20gJy4vaXNFcnJvci5qcyc7XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqIG9iamVjdC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZSBwcm92aWRlZCB0byBgZnVuY2Agd2hlbiBpdCdzIGludm9rZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGF0dGVtcHQuXG4gKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAqIHZhciBlbGVtZW50cyA9IF8uYXR0ZW1wdChmdW5jdGlvbihzZWxlY3Rvcikge1xuICogICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG4gKiB9LCAnPl8+Jyk7XG4gKlxuICogaWYgKF8uaXNFcnJvcihlbGVtZW50cykpIHtcbiAqICAgZWxlbWVudHMgPSBbXTtcbiAqIH1cbiAqL1xudmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHVuZGVmaW5lZCwgYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gaXNFcnJvcihlKSA/IGUgOiBuZXcgRXJyb3IoZSk7XG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBhdHRlbXB0O1xuIiwgIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gIHJldHVybiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVByb3BlcnR5T2Y7XG4iLCAiaW1wb3J0IGJhc2VQcm9wZXJ0eU9mIGZyb20gJy4vX2Jhc2VQcm9wZXJ0eU9mLmpzJztcblxuLyoqIFVzZWQgdG8gbWFwIGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy4gKi9cbnZhciBodG1sRXNjYXBlcyA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxuICBcIidcIjogJyYjMzk7J1xufTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmVzY2FwZWAgdG8gY29udmVydCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICovXG52YXIgZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sRXNjYXBlcyk7XG5cbmV4cG9ydCBkZWZhdWx0IGVzY2FwZUh0bWxDaGFyO1xuIiwgImltcG9ydCBlc2NhcGVIdG1sQ2hhciBmcm9tICcuL19lc2NhcGVIdG1sQ2hhci5qcyc7XG5pbXBvcnQgdG9TdHJpbmcgZnJvbSAnLi90b1N0cmluZy5qcyc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIEhUTUwgZW50aXRpZXMgYW5kIEhUTUwgY2hhcmFjdGVycy4gKi9cbnZhciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ10vZyxcbiAgICByZUhhc1VuZXNjYXBlZEh0bWwgPSBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgXCImXCIsIFwiPFwiLCBcIj5cIiwgJ1wiJywgYW5kIFwiJ1wiIGluIGBzdHJpbmdgIHRvIHRoZWlyXG4gKiBjb3JyZXNwb25kaW5nIEhUTUwgZW50aXRpZXMuXG4gKlxuICogKipOb3RlOioqIE5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQuIFRvIGVzY2FwZSBhZGRpdGlvbmFsXG4gKiBjaGFyYWN0ZXJzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAqXG4gKiBUaG91Z2ggdGhlIFwiPlwiIGNoYXJhY3RlciBpcyBlc2NhcGVkIGZvciBzeW1tZXRyeSwgY2hhcmFjdGVycyBsaWtlXG4gKiBcIj5cIiBhbmQgXCIvXCIgZG9uJ3QgbmVlZCBlc2NhcGluZyBpbiBIVE1MIGFuZCBoYXZlIG5vIHNwZWNpYWwgbWVhbmluZ1xuICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICogW01hdGhpYXMgQnluZW5zJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2FtYmlndW91cy1hbXBlcnNhbmRzKVxuICogKHVuZGVyIFwic2VtaS1yZWxhdGVkIGZ1biBmYWN0XCIpIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogV2hlbiB3b3JraW5nIHdpdGggSFRNTCB5b3Ugc2hvdWxkIGFsd2F5c1xuICogW3F1b3RlIGF0dHJpYnV0ZSB2YWx1ZXNdKGh0dHA6Ly93b25rby5jb20vcG9zdC9odG1sLWVzY2FwaW5nKSB0byByZWR1Y2VcbiAqIFhTUyB2ZWN0b3JzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmVzY2FwZSgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAqIC8vID0+ICdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICA/IHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpXG4gICAgOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGVzY2FwZTtcbiIsICJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTdHJpbmcoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU3RyaW5nO1xuIiwgImltcG9ydCBhcnJheU1hcCBmcm9tICcuL19hcnJheU1hcC5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVmFsdWVzO1xuIiwgImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQm9vbGVhbihudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzQm9vbGVhbjtcbiIsICJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0RhdGVgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRGF0ZSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBkYXRlVGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXNEYXRlO1xuIiwgImltcG9ydCBiYXNlSXNEYXRlIGZyb20gJy4vX2Jhc2VJc0RhdGUuanMnO1xuaW1wb3J0IGJhc2VVbmFyeSBmcm9tICcuL19iYXNlVW5hcnkuanMnO1xuaW1wb3J0IG5vZGVVdGlsIGZyb20gJy4vX25vZGVVdGlsLmpzJztcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNEYXRlID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNEYXRlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRGF0ZWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0RhdGUobmV3IERhdGUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNEYXRlKCdNb24gQXByaWwgMjMgMjAxMicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzRGF0ZSA9IG5vZGVJc0RhdGUgPyBiYXNlVW5hcnkobm9kZUlzRGF0ZSkgOiBiYXNlSXNEYXRlO1xuXG5leHBvcnQgZGVmYXVsdCBpc0RhdGU7XG4iLCAiaW1wb3J0IHRvSW50ZWdlciBmcm9tICcuL3RvSW50ZWdlci5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgTnVtYmVyLmlzSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0ludGVnZXIoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNJbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0ludGVnZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSW50ZWdlcjtcbiIsICJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTnVtYmVyKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcignMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVtYmVyO1xuIiwgIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc05pbChudWxsKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmlsKHZvaWQgMCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05pbChOYU4pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOaWwodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTmlsO1xuIiwgImltcG9ydCBpc0ludGVnZXIgZnJvbSAnLi9pc0ludGVnZXIuanMnO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlci4gQW4gaW50ZWdlciBpcyBzYWZlIGlmIGl0J3MgYW4gSUVFRS03NTRcbiAqIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyIHdoaWNoIGlzbid0IHRoZSByZXN1bHQgb2YgYSByb3VuZGVkIHVuc2FmZSBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BOdW1iZXIuaXNTYWZlSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc1NhZmVJbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU2FmZUludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkgJiYgdmFsdWUgPj0gLU1BWF9TQUZFX0lOVEVHRVIgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNTYWZlSW50ZWdlcjtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVW5kZWZpbmVkO1xuIiwgImltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gKiB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqVmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGN1c3RvbURlZmF1bHRzQXNzaWduSW47XG4iLCAiLyoqIFVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG52YXIgc3RyaW5nRXNjYXBlcyA9IHtcbiAgJ1xcXFwnOiAnXFxcXCcsXG4gIFwiJ1wiOiBcIidcIixcbiAgJ1xcbic6ICduJyxcbiAgJ1xccic6ICdyJyxcbiAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAnXFx1MjAyOSc6ICd1MjAyOSdcbn07XG5cbi8qKlxuICogVXNlZCBieSBgXy50ZW1wbGF0ZWAgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICovXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmdDaGFyKGNocikge1xuICByZXR1cm4gJ1xcXFwnICsgc3RyaW5nRXNjYXBlc1tjaHJdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlc2NhcGVTdHJpbmdDaGFyO1xuIiwgIi8qKiBVc2VkIHRvIG1hdGNoIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVJbnRlcnBvbGF0ZSA9IC88JT0oW1xcc1xcU10rPyklPi9nO1xuXG5leHBvcnQgZGVmYXVsdCByZUludGVycG9sYXRlO1xuIiwgIi8qKiBVc2VkIHRvIG1hdGNoIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVFc2NhcGUgPSAvPCUtKFtcXHNcXFNdKz8pJT4vZztcblxuZXhwb3J0IGRlZmF1bHQgcmVFc2NhcGU7XG4iLCAiLyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbnZhciByZUV2YWx1YXRlID0gLzwlKFtcXHNcXFNdKz8pJT4vZztcblxuZXhwb3J0IGRlZmF1bHQgcmVFdmFsdWF0ZTtcbiIsICJpbXBvcnQgZXNjYXBlIGZyb20gJy4vZXNjYXBlLmpzJztcbmltcG9ydCByZUVzY2FwZSBmcm9tICcuL19yZUVzY2FwZS5qcyc7XG5pbXBvcnQgcmVFdmFsdWF0ZSBmcm9tICcuL19yZUV2YWx1YXRlLmpzJztcbmltcG9ydCByZUludGVycG9sYXRlIGZyb20gJy4vX3JlSW50ZXJwb2xhdGUuanMnO1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIHRoZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzIHVzZWQgYnkgbG9kYXNoIGFyZSBsaWtlIHRob3NlIGluXG4gKiBlbWJlZGRlZCBSdWJ5IChFUkIpIGFzIHdlbGwgYXMgRVMyMDE1IHRlbXBsYXRlIHN0cmluZ3MuIENoYW5nZSB0aGVcbiAqIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHR5cGUge09iamVjdH1cbiAqL1xudmFyIHRlbXBsYXRlU2V0dGluZ3MgPSB7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gYmUgSFRNTC1lc2NhcGVkLlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtSZWdFeHB9XG4gICAqL1xuICAnZXNjYXBlJzogcmVFc2NhcGUsXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtSZWdFeHB9XG4gICAqL1xuICAnZXZhbHVhdGUnOiByZUV2YWx1YXRlLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGRldGVjdCBgZGF0YWAgcHJvcGVydHkgdmFsdWVzIHRvIGluamVjdC5cbiAgICpcbiAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgKi9cbiAgJ2ludGVycG9sYXRlJzogcmVJbnRlcnBvbGF0ZSxcblxuICAvKipcbiAgICogVXNlZCB0byByZWZlcmVuY2UgdGhlIGRhdGEgb2JqZWN0IGluIHRoZSB0ZW1wbGF0ZSB0ZXh0LlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICAndmFyaWFibGUnOiAnJyxcblxuICAvKipcbiAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICAnaW1wb3J0cyc6IHtcblxuICAgIC8qKlxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c1xuICAgICAqIEB0eXBlIHtGdW5jdGlvbn1cbiAgICAgKi9cbiAgICAnXyc6IHsgJ2VzY2FwZSc6IGVzY2FwZSB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRlbXBsYXRlU2V0dGluZ3M7XG4iLCAiaW1wb3J0IGFzc2lnbkluV2l0aCBmcm9tICcuL2Fzc2lnbkluV2l0aC5qcyc7XG5pbXBvcnQgYXR0ZW1wdCBmcm9tICcuL2F0dGVtcHQuanMnO1xuaW1wb3J0IGJhc2VWYWx1ZXMgZnJvbSAnLi9fYmFzZVZhbHVlcy5qcyc7XG5pbXBvcnQgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiBmcm9tICcuL19jdXN0b21EZWZhdWx0c0Fzc2lnbkluLmpzJztcbmltcG9ydCBlc2NhcGVTdHJpbmdDaGFyIGZyb20gJy4vX2VzY2FwZVN0cmluZ0NoYXIuanMnO1xuaW1wb3J0IGlzRXJyb3IgZnJvbSAnLi9pc0Vycm9yLmpzJztcbmltcG9ydCBpc0l0ZXJhdGVlQ2FsbCBmcm9tICcuL19pc0l0ZXJhdGVlQ2FsbC5qcyc7XG5pbXBvcnQga2V5cyBmcm9tICcuL2tleXMuanMnO1xuaW1wb3J0IHJlSW50ZXJwb2xhdGUgZnJvbSAnLi9fcmVJbnRlcnBvbGF0ZS5qcyc7XG5pbXBvcnQgdGVtcGxhdGVTZXR0aW5ncyBmcm9tICcuL3RlbXBsYXRlU2V0dGluZ3MuanMnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG9TdHJpbmcuanMnO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgSU5WQUxJRF9URU1QTF9WQVJfRVJST1JfVEVYVCA9ICdJbnZhbGlkIGB2YXJpYWJsZWAgb3B0aW9uIHBhc3NlZCBpbnRvIGBfLnRlbXBsYXRlYCc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGVtcHR5IHN0cmluZyBsaXRlcmFscyBpbiBjb21waWxlZCB0ZW1wbGF0ZSBzb3VyY2UuICovXG52YXIgcmVFbXB0eVN0cmluZ0xlYWRpbmcgPSAvXFxiX19wIFxcKz0gJyc7L2csXG4gICAgcmVFbXB0eVN0cmluZ01pZGRsZSA9IC9cXGIoX19wIFxcKz0pICcnIFxcKy9nLFxuICAgIHJlRW1wdHlTdHJpbmdUcmFpbGluZyA9IC8oX19lXFwoLio/XFwpfFxcYl9fdFxcKSkgXFwrXFxuJyc7L2c7XG5cbi8qKlxuICogVXNlZCB0byB2YWxpZGF0ZSB0aGUgYHZhbGlkYXRlYCBvcHRpb24gaW4gYF8udGVtcGxhdGVgIHZhcmlhYmxlLlxuICpcbiAqIEZvcmJpZHMgY2hhcmFjdGVycyB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50IGRlZmluaXRpb246XG4gKiAtIFwiKCksXCIgKG1vZGlmaWNhdGlvbiBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzKVxuICogLSBcIj1cIiAoZGVmYXVsdCB2YWx1ZSlcbiAqIC0gXCJbXXt9XCIgKGRlc3RydWN0dXJpbmcgb2YgZnVuY3Rpb24gcGFyYW1ldGVycylcbiAqIC0gXCIvXCIgKGJlZ2lubmluZyBvZiBhIGNvbW1lbnQpXG4gKiAtIHdoaXRlc3BhY2VcbiAqL1xudmFyIHJlRm9yYmlkZGVuSWRlbnRpZmllckNoYXJzID0gL1soKT0se31cXFtcXF1cXC9cXHNdLztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoXG4gKiBbRVMgdGVtcGxhdGUgZGVsaW1pdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdGVtcGxhdGUtbGl0ZXJhbC1sZXhpY2FsLWNvbXBvbmVudHMpLlxuICovXG52YXIgcmVFc1RlbXBsYXRlID0gL1xcJFxceyhbXlxcXFx9XSooPzpcXFxcLlteXFxcXH1dKikqKVxcfS9nO1xuXG4vKiogVXNlZCB0byBlbnN1cmUgY2FwdHVyaW5nIG9yZGVyIG9mIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVOb01hdGNoID0gLygkXikvO1xuXG4vKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG52YXIgcmVVbmVzY2FwZWRTdHJpbmcgPSAvWydcXG5cXHJcXHUyMDI4XFx1MjAyOVxcXFxdL2c7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGludGVycG9sYXRlIGRhdGEgcHJvcGVydGllc1xuICogaW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlcnMsIEhUTUwtZXNjYXBlIGludGVycG9sYXRlZCBkYXRhIHByb3BlcnRpZXMgaW5cbiAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICogcHJvcGVydGllcyBtYXkgYmUgYWNjZXNzZWQgYXMgZnJlZSB2YXJpYWJsZXMgaW4gdGhlIHRlbXBsYXRlLiBJZiBhIHNldHRpbmdcbiAqIG9iamVjdCBpcyBnaXZlbiwgaXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBfLnRlbXBsYXRlU2V0dGluZ3NgIHZhbHVlcy5cbiAqXG4gKiAqKk5vdGU6KiogSW4gdGhlIGRldmVsb3BtZW50IGJ1aWxkIGBfLnRlbXBsYXRlYCB1dGlsaXplc1xuICogW3NvdXJjZVVSTHNdKGh0dHA6Ly93d3cuaHRtbDVyb2Nrcy5jb20vZW4vdHV0b3JpYWxzL2RldmVsb3BlcnRvb2xzL3NvdXJjZW1hcHMvI3RvYy1zb3VyY2V1cmwpXG4gKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAqXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwcmVjb21waWxpbmcgdGVtcGxhdGVzIHNlZVxuICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIENocm9tZSBleHRlbnNpb24gc2FuZGJveGVzIHNlZVxuICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmVzY2FwZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXNjYXBlXVxuICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmV2YWx1YXRlPV8udGVtcGxhdGVTZXR0aW5ncy5ldmFsdWF0ZV1cbiAqICBUaGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICogIEFuIG9iamVjdCB0byBpbXBvcnQgaW50byB0aGUgdGVtcGxhdGUgYXMgZnJlZSB2YXJpYWJsZXMuXG4gKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuaW50ZXJwb2xhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlXVxuICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNvdXJjZVVSTD0ndGVtcGxhdGVTb3VyY2VzW25dJ11cbiAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy52YXJpYWJsZT0nb2JqJ11cbiAqICBUaGUgZGF0YSBvYmplY3QgdmFyaWFibGUgbmFtZS5cbiAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBVc2UgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIgdG8gY3JlYXRlIGEgY29tcGlsZWQgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnKTtcbiAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gKiAvLyA9PiAnaGVsbG8gZnJlZCEnXG4gKlxuICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzxiPjwlLSB2YWx1ZSAlPjwvYj4nKTtcbiAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJzxzY3JpcHQ+JyB9KTtcbiAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gKlxuICogLy8gVXNlIHRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBhbmQgZ2VuZXJhdGUgSFRNTC5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICpcbiAqIC8vIFVzZSB0aGUgaW50ZXJuYWwgYHByaW50YCBmdW5jdGlvbiBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIHByaW50KFwiaGVsbG8gXCIgKyB1c2VyKTsgJT4hJyk7XG4gKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gKiAvLyA9PiAnaGVsbG8gYmFybmV5ISdcbiAqXG4gKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gKiAvLyBEaXNhYmxlIHN1cHBvcnQgYnkgcmVwbGFjaW5nIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gJHsgdXNlciB9IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAqIC8vID0+ICdoZWxsbyBwZWJibGVzISdcbiAqXG4gKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCU9IFwiXFxcXDwlLSB2YWx1ZSAlXFxcXD5cIiAlPicpO1xuICogY29tcGlsZWQoeyAndmFsdWUnOiAnaWdub3JlZCcgfSk7XG4gKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICpcbiAqIC8vIFVzZSB0aGUgYGltcG9ydHNgIG9wdGlvbiB0byBpbXBvcnQgYGpRdWVyeWAgYXMgYGpxYC5cbiAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKHRleHQsIHsgJ2ltcG9ydHMnOiB7ICdqcSc6IGpRdWVyeSB9IH0pO1xuICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAqXG4gKiAvLyBVc2UgdGhlIGBzb3VyY2VVUkxgIG9wdGlvbiB0byBzcGVjaWZ5IGEgY3VzdG9tIHNvdXJjZVVSTCBmb3IgdGhlIHRlbXBsYXRlLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICogY29tcGlsZWQoZGF0YSk7XG4gKiAvLyA9PiBGaW5kIHRoZSBzb3VyY2Ugb2YgXCJncmVldGluZy5qc3RcIiB1bmRlciB0aGUgU291cmNlcyB0YWIgb3IgUmVzb3VyY2VzIHBhbmVsIG9mIHRoZSB3ZWIgaW5zcGVjdG9yLlxuICpcbiAqIC8vIFVzZSB0aGUgYHZhcmlhYmxlYCBvcHRpb24gdG8gZW5zdXJlIGEgd2l0aC1zdGF0ZW1lbnQgaXNuJ3QgdXNlZCBpbiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoaSA8JT0gZGF0YS51c2VyICU+IScsIHsgJ3ZhcmlhYmxlJzogJ2RhdGEnIH0pO1xuICogY29tcGlsZWQuc291cmNlO1xuICogLy8gPT4gZnVuY3Rpb24oZGF0YSkge1xuICogLy8gICB2YXIgX190LCBfX3AgPSAnJztcbiAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICogLy8gICByZXR1cm4gX19wO1xuICogLy8gfVxuICpcbiAqIC8vIFVzZSBjdXN0b20gdGVtcGxhdGUgZGVsaW1pdGVycy5cbiAqIF8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZSA9IC97eyhbXFxzXFxTXSs/KX19L2c7XG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdtdXN0YWNoZScgfSk7XG4gKiAvLyA9PiAnaGVsbG8gbXVzdGFjaGUhJ1xuICpcbiAqIC8vIFVzZSB0aGUgYHNvdXJjZWAgcHJvcGVydHkgdG8gaW5saW5lIGNvbXBpbGVkIHRlbXBsYXRlcyBmb3IgbWVhbmluZ2Z1bFxuICogLy8gbGluZSBudW1iZXJzIGluIGVycm9yIG1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuXG4gKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICogICB2YXIgSlNUID0ge1xcXG4gKiAgICAgXCJtYWluXCI6ICcgKyBfLnRlbXBsYXRlKG1haW5UZXh0KS5zb3VyY2UgKyAnXFxcbiAqICAgfTtcXFxuICogJyk7XG4gKi9cbmZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgLy8gQmFzZWQgb24gSm9obiBSZXNpZydzIGB0bXBsYCBpbXBsZW1lbnRhdGlvblxuICAvLyAoaHR0cDovL2Vqb2huLm9yZy9ibG9nL2phdmFzY3JpcHQtbWljcm8tdGVtcGxhdGluZy8pXG4gIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICB2YXIgc2V0dGluZ3MgPSB0ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHMuXy50ZW1wbGF0ZVNldHRpbmdzIHx8IHRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpKSB7XG4gICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgfVxuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICBvcHRpb25zID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLCBzZXR0aW5ncywgY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbik7XG5cbiAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICBpbXBvcnRzS2V5cyA9IGtleXMoaW1wb3J0cyksXG4gICAgICBpbXBvcnRzVmFsdWVzID0gYmFzZVZhbHVlcyhpbXBvcnRzLCBpbXBvcnRzS2V5cyk7XG5cbiAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICBpc0V2YWx1YXRpbmcsXG4gICAgICBpbmRleCA9IDAsXG4gICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgc291cmNlID0gXCJfX3AgKz0gJ1wiO1xuXG4gIC8vIENvbXBpbGUgdGhlIHJlZ2V4cCB0byBtYXRjaCBlYWNoIGRlbGltaXRlci5cbiAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAob3B0aW9ucy5lc2NhcGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgIGludGVycG9sYXRlLnNvdXJjZSArICd8JyArXG4gICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgIChvcHRpb25zLmV2YWx1YXRlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wkJ1xuICAsICdnJyk7XG5cbiAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAvLyBUaGUgc291cmNlVVJMIGdldHMgaW5qZWN0ZWQgaW50byB0aGUgc291cmNlIHRoYXQncyBldmFsLWVkLCBzbyBiZSBjYXJlZnVsXG4gIC8vIHRvIG5vcm1hbGl6ZSBhbGwga2luZHMgb2Ygd2hpdGVzcGFjZSwgc28gZS5nLiBuZXdsaW5lcyAoYW5kIHVuaWNvZGUgdmVyc2lvbnMgb2YgaXQpIGNhbid0IHNuZWFrIGluXG4gIC8vIGFuZCBlc2NhcGUgdGhlIGNvbW1lbnQsIHRodXMgaW5qZWN0aW5nIGNvZGUgdGhhdCBnZXRzIGV2YWxlZC5cbiAgdmFyIHNvdXJjZVVSTCA9IGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgPyAoJy8vIyBzb3VyY2VVUkw9JyArXG4gICAgICAgKG9wdGlvbnMuc291cmNlVVJMICsgJycpLnJlcGxhY2UoL1xccy9nLCAnICcpICtcbiAgICAgICAnXFxuJylcbiAgICA6ICcnO1xuXG4gIHN0cmluZy5yZXBsYWNlKHJlRGVsaW1pdGVycywgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZVZhbHVlLCBpbnRlcnBvbGF0ZVZhbHVlLCBlc1RlbXBsYXRlVmFsdWUsIGV2YWx1YXRlVmFsdWUsIG9mZnNldCkge1xuICAgIGludGVycG9sYXRlVmFsdWUgfHwgKGludGVycG9sYXRlVmFsdWUgPSBlc1RlbXBsYXRlVmFsdWUpO1xuXG4gICAgLy8gRXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgc291cmNlICs9IHN0cmluZy5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKHJlVW5lc2NhcGVkU3RyaW5nLCBlc2NhcGVTdHJpbmdDaGFyKTtcblxuICAgIC8vIFJlcGxhY2UgZGVsaW1pdGVycyB3aXRoIHNuaXBwZXRzLlxuICAgIGlmIChlc2NhcGVWYWx1ZSkge1xuICAgICAgaXNFc2NhcGluZyA9IHRydWU7XG4gICAgICBzb3VyY2UgKz0gXCInICtcXG5fX2UoXCIgKyBlc2NhcGVWYWx1ZSArIFwiKSArXFxuJ1wiO1xuICAgIH1cbiAgICBpZiAoZXZhbHVhdGVWYWx1ZSkge1xuICAgICAgaXNFdmFsdWF0aW5nID0gdHJ1ZTtcbiAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZVZhbHVlICsgXCI7XFxuX19wICs9ICdcIjtcbiAgICB9XG4gICAgaWYgKGludGVycG9sYXRlVmFsdWUpIHtcbiAgICAgIHNvdXJjZSArPSBcIicgK1xcbigoX190ID0gKFwiICsgaW50ZXJwb2xhdGVWYWx1ZSArIFwiKSkgPT0gbnVsbCA/ICcnIDogX190KSArXFxuJ1wiO1xuICAgIH1cbiAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDtcblxuICAgIC8vIFRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgcHJvZHVjdHMgbmVlZHMgYG1hdGNoYCByZXR1cm5lZCBpblxuICAgIC8vIG9yZGVyIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3QgYG9mZnNldGAgdmFsdWUuXG4gICAgcmV0dXJuIG1hdGNoO1xuICB9KTtcblxuICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gIC8vIElmIGB2YXJpYWJsZWAgaXMgbm90IHNwZWNpZmllZCB3cmFwIGEgd2l0aC1zdGF0ZW1lbnQgYXJvdW5kIHRoZSBnZW5lcmF0ZWRcbiAgLy8gY29kZSB0byBhZGQgdGhlIGRhdGEgb2JqZWN0IHRvIHRoZSB0b3Agb2YgdGhlIHNjb3BlIGNoYWluLlxuICB2YXIgdmFyaWFibGUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsICd2YXJpYWJsZScpICYmIG9wdGlvbnMudmFyaWFibGU7XG4gIGlmICghdmFyaWFibGUpIHtcbiAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgfVxuICAvLyBUaHJvdyBhbiBlcnJvciBpZiBhIGZvcmJpZGRlbiBjaGFyYWN0ZXIgd2FzIGZvdW5kIGluIGB2YXJpYWJsZWAsIHRvIHByZXZlbnRcbiAgLy8gcG90ZW50aWFsIGNvbW1hbmQgaW5qZWN0aW9uIGF0dGFja3MuXG4gIGVsc2UgaWYgKHJlRm9yYmlkZGVuSWRlbnRpZmllckNoYXJzLnRlc3QodmFyaWFibGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKElOVkFMSURfVEVNUExfVkFSX0VSUk9SX1RFWFQpO1xuICB9XG5cbiAgLy8gQ2xlYW51cCBjb2RlIGJ5IHN0cmlwcGluZyBlbXB0eSBzdHJpbmdzLlxuICBzb3VyY2UgPSAoaXNFdmFsdWF0aW5nID8gc291cmNlLnJlcGxhY2UocmVFbXB0eVN0cmluZ0xlYWRpbmcsICcnKSA6IHNvdXJjZSlcbiAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdUcmFpbGluZywgJyQxOycpO1xuXG4gIC8vIEZyYW1lIGNvZGUgYXMgdGhlIGZ1bmN0aW9uIGJvZHkuXG4gIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAodmFyaWFibGVcbiAgICAgID8gJydcbiAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICApICtcbiAgICBcInZhciBfX3QsIF9fcCA9ICcnXCIgK1xuICAgIChpc0VzY2FwaW5nXG4gICAgICAgPyAnLCBfX2UgPSBfLmVzY2FwZSdcbiAgICAgICA6ICcnXG4gICAgKSArXG4gICAgKGlzRXZhbHVhdGluZ1xuICAgICAgPyAnLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcXG4nICtcbiAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgOiAnO1xcbidcbiAgICApICtcbiAgICBzb3VyY2UgK1xuICAgICdyZXR1cm4gX19wXFxufSc7XG5cbiAgdmFyIHJlc3VsdCA9IGF0dGVtcHQoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAuYXBwbHkodW5kZWZpbmVkLCBpbXBvcnRzVmFsdWVzKTtcbiAgfSk7XG5cbiAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gIC8vIHRoZSBgc291cmNlYCBwcm9wZXJ0eSBhcyBhIGNvbnZlbmllbmNlIGZvciBpbmxpbmluZyBjb21waWxlZCB0ZW1wbGF0ZXMuXG4gIHJlc3VsdC5zb3VyY2UgPSBzb3VyY2U7XG4gIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICB0aHJvdyByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdGVtcGxhdGU7XG4iLCAiLyoqXG4gKiBAbGljZW5zZVxuICogTG9kYXNoIChDdXN0b20gQnVpbGQpIDxodHRwczovL2xvZGFzaC5jb20vPlxuICogQnVpbGQ6IGBsb2Rhc2ggbW9kdWxhcml6ZSBleHBvcnRzPVwiZXNcIiAtbyAuL2BcbiAqIENvcHlyaWdodCBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL29wZW5qc2Yub3JnLz5cbiAqIFJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlIDxodHRwczovL2xvZGFzaC5jb20vbGljZW5zZT5cbiAqIEJhc2VkIG9uIFVuZGVyc2NvcmUuanMgMS44LjMgPGh0dHA6Ly91bmRlcnNjb3JlanMub3JnL0xJQ0VOU0U+XG4gKiBDb3B5cmlnaHQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZlc3RpZ2F0aXZlIFJlcG9ydGVycyAmIEVkaXRvcnNcbiAqL1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhZGQgfSBmcm9tICcuL2FkZC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFmdGVyIH0gZnJvbSAnLi9hZnRlci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFyeSB9IGZyb20gJy4vYXJ5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXNzaWduIH0gZnJvbSAnLi9hc3NpZ24uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3NpZ25JbiB9IGZyb20gJy4vYXNzaWduSW4uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhc3NpZ25JbldpdGggfSBmcm9tICcuL2Fzc2lnbkluV2l0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFzc2lnbldpdGggfSBmcm9tICcuL2Fzc2lnbldpdGguanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhdCB9IGZyb20gJy4vYXQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhdHRlbXB0IH0gZnJvbSAnLi9hdHRlbXB0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYmVmb3JlIH0gZnJvbSAnLi9iZWZvcmUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBiaW5kIH0gZnJvbSAnLi9iaW5kLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYmluZEFsbCB9IGZyb20gJy4vYmluZEFsbC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJpbmRLZXkgfSBmcm9tICcuL2JpbmRLZXkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjYW1lbENhc2UgfSBmcm9tICcuL2NhbWVsQ2FzZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNhcGl0YWxpemUgfSBmcm9tICcuL2NhcGl0YWxpemUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjYXN0QXJyYXkgfSBmcm9tICcuL2Nhc3RBcnJheS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNlaWwgfSBmcm9tICcuL2NlaWwuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjaGFpbiB9IGZyb20gJy4vY2hhaW4uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjaHVuayB9IGZyb20gJy4vY2h1bmsuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjbGFtcCB9IGZyb20gJy4vY2xhbXAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjbG9uZSB9IGZyb20gJy4vY2xvbmUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjbG9uZURlZXAgfSBmcm9tICcuL2Nsb25lRGVlcC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNsb25lRGVlcFdpdGggfSBmcm9tICcuL2Nsb25lRGVlcFdpdGguanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjbG9uZVdpdGggfSBmcm9tICcuL2Nsb25lV2l0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbW1pdCB9IGZyb20gJy4vY29tbWl0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29tcGFjdCB9IGZyb20gJy4vY29tcGFjdC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbmNhdCB9IGZyb20gJy4vY29uY2F0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY29uZCB9IGZyb20gJy4vY29uZC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbmZvcm1zIH0gZnJvbSAnLi9jb25mb3Jtcy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNvbmZvcm1zVG8gfSBmcm9tICcuL2NvbmZvcm1zVG8uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb25zdGFudCB9IGZyb20gJy4vY29uc3RhbnQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb3VudEJ5IH0gZnJvbSAnLi9jb3VudEJ5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlIH0gZnJvbSAnLi9jcmVhdGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjdXJyeSB9IGZyb20gJy4vY3VycnkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjdXJyeVJpZ2h0IH0gZnJvbSAnLi9jdXJyeVJpZ2h0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVib3VuY2UgfSBmcm9tICcuL2RlYm91bmNlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVidXJyIH0gZnJvbSAnLi9kZWJ1cnIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkZWZhdWx0VG8gfSBmcm9tICcuL2RlZmF1bHRUby5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlZmF1bHRzIH0gZnJvbSAnLi9kZWZhdWx0cy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlZmF1bHRzRGVlcCB9IGZyb20gJy4vZGVmYXVsdHNEZWVwLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVmZXIgfSBmcm9tICcuL2RlZmVyLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVsYXkgfSBmcm9tICcuL2RlbGF5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZSB9IGZyb20gJy4vZGlmZmVyZW5jZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRpZmZlcmVuY2VCeSB9IGZyb20gJy4vZGlmZmVyZW5jZUJ5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGlmZmVyZW5jZVdpdGggfSBmcm9tICcuL2RpZmZlcmVuY2VXaXRoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGl2aWRlIH0gZnJvbSAnLi9kaXZpZGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkcm9wIH0gZnJvbSAnLi9kcm9wLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZHJvcFJpZ2h0IH0gZnJvbSAnLi9kcm9wUmlnaHQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkcm9wUmlnaHRXaGlsZSB9IGZyb20gJy4vZHJvcFJpZ2h0V2hpbGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkcm9wV2hpbGUgfSBmcm9tICcuL2Ryb3BXaGlsZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVhY2ggfSBmcm9tICcuL2VhY2guanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlYWNoUmlnaHQgfSBmcm9tICcuL2VhY2hSaWdodC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVuZHNXaXRoIH0gZnJvbSAnLi9lbmRzV2l0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVudHJpZXMgfSBmcm9tICcuL2VudHJpZXMuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBlbnRyaWVzSW4gfSBmcm9tICcuL2VudHJpZXNJbi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVxIH0gZnJvbSAnLi9lcS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGVzY2FwZSB9IGZyb20gJy4vZXNjYXBlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZXNjYXBlUmVnRXhwIH0gZnJvbSAnLi9lc2NhcGVSZWdFeHAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBldmVyeSB9IGZyb20gJy4vZXZlcnkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBleHRlbmQgfSBmcm9tICcuL2V4dGVuZC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGV4dGVuZFdpdGggfSBmcm9tICcuL2V4dGVuZFdpdGguanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmaWxsIH0gZnJvbSAnLi9maWxsLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmlsdGVyIH0gZnJvbSAnLi9maWx0ZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmaW5kIH0gZnJvbSAnLi9maW5kLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmluZEluZGV4IH0gZnJvbSAnLi9maW5kSW5kZXguanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmaW5kS2V5IH0gZnJvbSAnLi9maW5kS2V5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmluZExhc3QgfSBmcm9tICcuL2ZpbmRMYXN0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmluZExhc3RJbmRleCB9IGZyb20gJy4vZmluZExhc3RJbmRleC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpbmRMYXN0S2V5IH0gZnJvbSAnLi9maW5kTGFzdEtleS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZpcnN0IH0gZnJvbSAnLi9maXJzdC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZsYXRNYXAgfSBmcm9tICcuL2ZsYXRNYXAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbGF0TWFwRGVlcCB9IGZyb20gJy4vZmxhdE1hcERlZXAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbGF0TWFwRGVwdGggfSBmcm9tICcuL2ZsYXRNYXBEZXB0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZsYXR0ZW4gfSBmcm9tICcuL2ZsYXR0ZW4uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbGF0dGVuRGVlcCB9IGZyb20gJy4vZmxhdHRlbkRlZXAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbGF0dGVuRGVwdGggfSBmcm9tICcuL2ZsYXR0ZW5EZXB0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZsaXAgfSBmcm9tICcuL2ZsaXAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbG9vciB9IGZyb20gJy4vZmxvb3IuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmbG93IH0gZnJvbSAnLi9mbG93LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZmxvd1JpZ2h0IH0gZnJvbSAnLi9mbG93UmlnaHQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JFYWNoIH0gZnJvbSAnLi9mb3JFYWNoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9yRWFjaFJpZ2h0IH0gZnJvbSAnLi9mb3JFYWNoUmlnaHQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JJbiB9IGZyb20gJy4vZm9ySW4uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JJblJpZ2h0IH0gZnJvbSAnLi9mb3JJblJpZ2h0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZm9yT3duIH0gZnJvbSAnLi9mb3JPd24uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmb3JPd25SaWdodCB9IGZyb20gJy4vZm9yT3duUmlnaHQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmcm9tUGFpcnMgfSBmcm9tICcuL2Zyb21QYWlycy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZ1bmN0aW9ucyB9IGZyb20gJy4vZnVuY3Rpb25zLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZnVuY3Rpb25zSW4gfSBmcm9tICcuL2Z1bmN0aW9uc0luLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ2V0IH0gZnJvbSAnLi9nZXQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBncm91cEJ5IH0gZnJvbSAnLi9ncm91cEJ5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ3QgfSBmcm9tICcuL2d0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZ3RlIH0gZnJvbSAnLi9ndGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBoYXMgfSBmcm9tICcuL2hhcy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhhc0luIH0gZnJvbSAnLi9oYXNJbi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhlYWQgfSBmcm9tICcuL2hlYWQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpZGVudGl0eSB9IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpblJhbmdlIH0gZnJvbSAnLi9pblJhbmdlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaW5jbHVkZXMgfSBmcm9tICcuL2luY2x1ZGVzLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaW5kZXhPZiB9IGZyb20gJy4vaW5kZXhPZi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGluaXRpYWwgfSBmcm9tICcuL2luaXRpYWwuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpbnRlcnNlY3Rpb24gfSBmcm9tICcuL2ludGVyc2VjdGlvbi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGludGVyc2VjdGlvbkJ5IH0gZnJvbSAnLi9pbnRlcnNlY3Rpb25CeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGludGVyc2VjdGlvbldpdGggfSBmcm9tICcuL2ludGVyc2VjdGlvbldpdGguanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpbnZlcnQgfSBmcm9tICcuL2ludmVydC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGludmVydEJ5IH0gZnJvbSAnLi9pbnZlcnRCeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGludm9rZSB9IGZyb20gJy4vaW52b2tlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaW52b2tlTWFwIH0gZnJvbSAnLi9pbnZva2VNYXAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0FyZ3VtZW50cyB9IGZyb20gJy4vaXNBcmd1bWVudHMuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0FycmF5IH0gZnJvbSAnLi9pc0FycmF5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNBcnJheUJ1ZmZlciB9IGZyb20gJy4vaXNBcnJheUJ1ZmZlci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzQXJyYXlMaWtlIH0gZnJvbSAnLi9pc0FycmF5TGlrZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzQXJyYXlMaWtlT2JqZWN0IH0gZnJvbSAnLi9pc0FycmF5TGlrZU9iamVjdC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzQm9vbGVhbiB9IGZyb20gJy4vaXNCb29sZWFuLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNCdWZmZXIgfSBmcm9tICcuL2lzQnVmZmVyLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNEYXRlIH0gZnJvbSAnLi9pc0RhdGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0VsZW1lbnQgfSBmcm9tICcuL2lzRWxlbWVudC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRW1wdHkgfSBmcm9tICcuL2lzRW1wdHkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0VxdWFsIH0gZnJvbSAnLi9pc0VxdWFsLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNFcXVhbFdpdGggfSBmcm9tICcuL2lzRXF1YWxXaXRoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNFcnJvciB9IGZyb20gJy4vaXNFcnJvci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRmluaXRlIH0gZnJvbSAnLi9pc0Zpbml0ZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzRnVuY3Rpb24gfSBmcm9tICcuL2lzRnVuY3Rpb24uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc0ludGVnZXIgfSBmcm9tICcuL2lzSW50ZWdlci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTGVuZ3RoIH0gZnJvbSAnLi9pc0xlbmd0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTWFwIH0gZnJvbSAnLi9pc01hcC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTWF0Y2ggfSBmcm9tICcuL2lzTWF0Y2guanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc01hdGNoV2l0aCB9IGZyb20gJy4vaXNNYXRjaFdpdGguanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc05hTiB9IGZyb20gJy4vaXNOYU4uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc05hdGl2ZSB9IGZyb20gJy4vaXNOYXRpdmUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc05pbCB9IGZyb20gJy4vaXNOaWwuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc051bGwgfSBmcm9tICcuL2lzTnVsbC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTnVtYmVyIH0gZnJvbSAnLi9pc051bWJlci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzT2JqZWN0IH0gZnJvbSAnLi9pc09iamVjdC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzT2JqZWN0TGlrZSB9IGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNQbGFpbk9iamVjdCB9IGZyb20gJy4vaXNQbGFpbk9iamVjdC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzUmVnRXhwIH0gZnJvbSAnLi9pc1JlZ0V4cC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzU2FmZUludGVnZXIgfSBmcm9tICcuL2lzU2FmZUludGVnZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1NldCB9IGZyb20gJy4vaXNTZXQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1N0cmluZyB9IGZyb20gJy4vaXNTdHJpbmcuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1N5bWJvbCB9IGZyb20gJy4vaXNTeW1ib2wuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc1R5cGVkQXJyYXkgfSBmcm9tICcuL2lzVHlwZWRBcnJheS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzVW5kZWZpbmVkIH0gZnJvbSAnLi9pc1VuZGVmaW5lZC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzV2Vha01hcCB9IGZyb20gJy4vaXNXZWFrTWFwLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNXZWFrU2V0IH0gZnJvbSAnLi9pc1dlYWtTZXQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpdGVyYXRlZSB9IGZyb20gJy4vaXRlcmF0ZWUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBqb2luIH0gZnJvbSAnLi9qb2luLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMga2ViYWJDYXNlIH0gZnJvbSAnLi9rZWJhYkNhc2UuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBrZXlCeSB9IGZyb20gJy4va2V5QnkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBrZXlzIH0gZnJvbSAnLi9rZXlzLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMga2V5c0luIH0gZnJvbSAnLi9rZXlzSW4uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsYXN0IH0gZnJvbSAnLi9sYXN0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbGFzdEluZGV4T2YgfSBmcm9tICcuL2xhc3RJbmRleE9mLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbG9kYXNoIH0gZnJvbSAnLi93cmFwcGVyTG9kYXNoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbG93ZXJDYXNlIH0gZnJvbSAnLi9sb3dlckNhc2UuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBsb3dlckZpcnN0IH0gZnJvbSAnLi9sb3dlckZpcnN0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbHQgfSBmcm9tICcuL2x0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbHRlIH0gZnJvbSAnLi9sdGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXAgfSBmcm9tICcuL21hcC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1hcEtleXMgfSBmcm9tICcuL21hcEtleXMuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXBWYWx1ZXMgfSBmcm9tICcuL21hcFZhbHVlcy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1hdGNoZXMgfSBmcm9tICcuL21hdGNoZXMuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYXRjaGVzUHJvcGVydHkgfSBmcm9tICcuL21hdGNoZXNQcm9wZXJ0eS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1heCB9IGZyb20gJy4vbWF4LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWF4QnkgfSBmcm9tICcuL21heEJ5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWVhbiB9IGZyb20gJy4vbWVhbi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1lYW5CeSB9IGZyb20gJy4vbWVhbkJ5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWVtb2l6ZSB9IGZyb20gJy4vbWVtb2l6ZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1lcmdlIH0gZnJvbSAnLi9tZXJnZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1lcmdlV2l0aCB9IGZyb20gJy4vbWVyZ2VXaXRoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbWV0aG9kIH0gZnJvbSAnLi9tZXRob2QuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtZXRob2RPZiB9IGZyb20gJy4vbWV0aG9kT2YuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaW4gfSBmcm9tICcuL21pbi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1pbkJ5IH0gZnJvbSAnLi9taW5CeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG1peGluIH0gZnJvbSAnLi9taXhpbi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG11bHRpcGx5IH0gZnJvbSAnLi9tdWx0aXBseS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5lZ2F0ZSB9IGZyb20gJy4vbmVnYXRlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbmV4dCB9IGZyb20gJy4vbmV4dC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG5vb3AgfSBmcm9tICcuL25vb3AuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBub3cgfSBmcm9tICcuL25vdy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG50aCB9IGZyb20gJy4vbnRoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgbnRoQXJnIH0gZnJvbSAnLi9udGhBcmcuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvbWl0IH0gZnJvbSAnLi9vbWl0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb21pdEJ5IH0gZnJvbSAnLi9vbWl0QnkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvbmNlIH0gZnJvbSAnLi9vbmNlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb3JkZXJCeSB9IGZyb20gJy4vb3JkZXJCeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG92ZXIgfSBmcm9tICcuL292ZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvdmVyQXJncyB9IGZyb20gJy4vb3ZlckFyZ3MuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvdmVyRXZlcnkgfSBmcm9tICcuL292ZXJFdmVyeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG92ZXJTb21lIH0gZnJvbSAnLi9vdmVyU29tZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBhZCB9IGZyb20gJy4vcGFkLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFkRW5kIH0gZnJvbSAnLi9wYWRFbmQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYWRTdGFydCB9IGZyb20gJy4vcGFkU3RhcnQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJzZUludCB9IGZyb20gJy4vcGFyc2VJbnQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJ0aWFsIH0gZnJvbSAnLi9wYXJ0aWFsLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFydGlhbFJpZ2h0IH0gZnJvbSAnLi9wYXJ0aWFsUmlnaHQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJ0aXRpb24gfSBmcm9tICcuL3BhcnRpdGlvbi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBpY2sgfSBmcm9tICcuL3BpY2suanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwaWNrQnkgfSBmcm9tICcuL3BpY2tCeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHBsYW50IH0gZnJvbSAnLi9wbGFudC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByb3BlcnR5IH0gZnJvbSAnLi9wcm9wZXJ0eS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByb3BlcnR5T2YgfSBmcm9tICcuL3Byb3BlcnR5T2YuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwdWxsIH0gZnJvbSAnLi9wdWxsLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHVsbEFsbCB9IGZyb20gJy4vcHVsbEFsbC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHB1bGxBbGxCeSB9IGZyb20gJy4vcHVsbEFsbEJ5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHVsbEFsbFdpdGggfSBmcm9tICcuL3B1bGxBbGxXaXRoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcHVsbEF0IH0gZnJvbSAnLi9wdWxsQXQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByYW5kb20gfSBmcm9tICcuL3JhbmRvbS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJhbmdlIH0gZnJvbSAnLi9yYW5nZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJhbmdlUmlnaHQgfSBmcm9tICcuL3JhbmdlUmlnaHQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWFyZyB9IGZyb20gJy4vcmVhcmcuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZWR1Y2UgfSBmcm9tICcuL3JlZHVjZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlZHVjZVJpZ2h0IH0gZnJvbSAnLi9yZWR1Y2VSaWdodC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlamVjdCB9IGZyb20gJy4vcmVqZWN0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVtb3ZlIH0gZnJvbSAnLi9yZW1vdmUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZXBlYXQgfSBmcm9tICcuL3JlcGVhdC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlcGxhY2UgfSBmcm9tICcuL3JlcGxhY2UuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZXN0IH0gZnJvbSAnLi9yZXN0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVzdWx0IH0gZnJvbSAnLi9yZXN1bHQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZXZlcnNlIH0gZnJvbSAnLi9yZXZlcnNlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcm91bmQgfSBmcm9tICcuL3JvdW5kLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2FtcGxlIH0gZnJvbSAnLi9zYW1wbGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzYW1wbGVTaXplIH0gZnJvbSAnLi9zYW1wbGVTaXplLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0IH0gZnJvbSAnLi9zZXQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRXaXRoIH0gZnJvbSAnLi9zZXRXaXRoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2h1ZmZsZSB9IGZyb20gJy4vc2h1ZmZsZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNpemUgfSBmcm9tICcuL3NpemUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzbGljZSB9IGZyb20gJy4vc2xpY2UuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzbmFrZUNhc2UgfSBmcm9tICcuL3NuYWtlQ2FzZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNvbWUgfSBmcm9tICcuL3NvbWUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzb3J0QnkgfSBmcm9tICcuL3NvcnRCeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNvcnRlZEluZGV4IH0gZnJvbSAnLi9zb3J0ZWRJbmRleC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNvcnRlZEluZGV4QnkgfSBmcm9tICcuL3NvcnRlZEluZGV4QnkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzb3J0ZWRJbmRleE9mIH0gZnJvbSAnLi9zb3J0ZWRJbmRleE9mLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc29ydGVkTGFzdEluZGV4IH0gZnJvbSAnLi9zb3J0ZWRMYXN0SW5kZXguanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzb3J0ZWRMYXN0SW5kZXhCeSB9IGZyb20gJy4vc29ydGVkTGFzdEluZGV4QnkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzb3J0ZWRMYXN0SW5kZXhPZiB9IGZyb20gJy4vc29ydGVkTGFzdEluZGV4T2YuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzb3J0ZWRVbmlxIH0gZnJvbSAnLi9zb3J0ZWRVbmlxLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc29ydGVkVW5pcUJ5IH0gZnJvbSAnLi9zb3J0ZWRVbmlxQnkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzcGxpdCB9IGZyb20gJy4vc3BsaXQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzcHJlYWQgfSBmcm9tICcuL3NwcmVhZC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0YXJ0Q2FzZSB9IGZyb20gJy4vc3RhcnRDYXNlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3RhcnRzV2l0aCB9IGZyb20gJy4vc3RhcnRzV2l0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0dWJBcnJheSB9IGZyb20gJy4vc3R1YkFycmF5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3R1YkZhbHNlIH0gZnJvbSAnLi9zdHViRmFsc2UuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzdHViT2JqZWN0IH0gZnJvbSAnLi9zdHViT2JqZWN0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3R1YlN0cmluZyB9IGZyb20gJy4vc3R1YlN0cmluZy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN0dWJUcnVlIH0gZnJvbSAnLi9zdHViVHJ1ZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1YnRyYWN0IH0gZnJvbSAnLi9zdWJ0cmFjdC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHN1bSB9IGZyb20gJy4vc3VtLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc3VtQnkgfSBmcm9tICcuL3N1bUJ5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGFpbCB9IGZyb20gJy4vdGFpbC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRha2UgfSBmcm9tICcuL3Rha2UuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0YWtlUmlnaHQgfSBmcm9tICcuL3Rha2VSaWdodC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRha2VSaWdodFdoaWxlIH0gZnJvbSAnLi90YWtlUmlnaHRXaGlsZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRha2VXaGlsZSB9IGZyb20gJy4vdGFrZVdoaWxlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGFwIH0gZnJvbSAnLi90YXAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0ZW1wbGF0ZSB9IGZyb20gJy4vdGVtcGxhdGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0ZW1wbGF0ZVNldHRpbmdzIH0gZnJvbSAnLi90ZW1wbGF0ZVNldHRpbmdzLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGhyb3R0bGUgfSBmcm9tICcuL3Rocm90dGxlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdGhydSB9IGZyb20gJy4vdGhydS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRpbWVzIH0gZnJvbSAnLi90aW1lcy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvQXJyYXkgfSBmcm9tICcuL3RvQXJyYXkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b0Zpbml0ZSB9IGZyb20gJy4vdG9GaW5pdGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b0ludGVnZXIgfSBmcm9tICcuL3RvSW50ZWdlci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvSXRlcmF0b3IgfSBmcm9tICcuL3RvSXRlcmF0b3IuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b0pTT04gfSBmcm9tICcuL3RvSlNPTi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvTGVuZ3RoIH0gZnJvbSAnLi90b0xlbmd0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvTG93ZXIgfSBmcm9tICcuL3RvTG93ZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b051bWJlciB9IGZyb20gJy4vdG9OdW1iZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b1BhaXJzIH0gZnJvbSAnLi90b1BhaXJzLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdG9QYWlyc0luIH0gZnJvbSAnLi90b1BhaXJzSW4uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b1BhdGggfSBmcm9tICcuL3RvUGF0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRvUGxhaW5PYmplY3QgfSBmcm9tICcuL3RvUGxhaW5PYmplY3QuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0b1NhZmVJbnRlZ2VyIH0gZnJvbSAnLi90b1NhZmVJbnRlZ2VyLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdG9TdHJpbmcgfSBmcm9tICcuL3RvU3RyaW5nLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdG9VcHBlciB9IGZyb20gJy4vdG9VcHBlci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYW5zZm9ybSB9IGZyb20gJy4vdHJhbnNmb3JtLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdHJpbSB9IGZyb20gJy4vdHJpbS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyaW1FbmQgfSBmcm9tICcuL3RyaW1FbmQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmltU3RhcnQgfSBmcm9tICcuL3RyaW1TdGFydC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRydW5jYXRlIH0gZnJvbSAnLi90cnVuY2F0ZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuYXJ5IH0gZnJvbSAnLi91bmFyeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuZXNjYXBlIH0gZnJvbSAnLi91bmVzY2FwZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuaW9uIH0gZnJvbSAnLi91bmlvbi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuaW9uQnkgfSBmcm9tICcuL3VuaW9uQnkuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1bmlvbldpdGggfSBmcm9tICcuL3VuaW9uV2l0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuaXEgfSBmcm9tICcuL3VuaXEuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1bmlxQnkgfSBmcm9tICcuL3VuaXFCeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuaXFXaXRoIH0gZnJvbSAnLi91bmlxV2l0aC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuaXF1ZUlkIH0gZnJvbSAnLi91bmlxdWVJZC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuc2V0IH0gZnJvbSAnLi91bnNldC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuemlwIH0gZnJvbSAnLi91bnppcC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuemlwV2l0aCB9IGZyb20gJy4vdW56aXBXaXRoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXBkYXRlIH0gZnJvbSAnLi91cGRhdGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1cGRhdGVXaXRoIH0gZnJvbSAnLi91cGRhdGVXaXRoLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXBwZXJDYXNlIH0gZnJvbSAnLi91cHBlckNhc2UuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1cHBlckZpcnN0IH0gZnJvbSAnLi91cHBlckZpcnN0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmFsdWUgfSBmcm9tICcuL3ZhbHVlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmFsdWVPZiB9IGZyb20gJy4vdmFsdWVPZi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHZhbHVlcyB9IGZyb20gJy4vdmFsdWVzLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdmFsdWVzSW4gfSBmcm9tICcuL3ZhbHVlc0luLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgd2l0aG91dCB9IGZyb20gJy4vd2l0aG91dC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHdvcmRzIH0gZnJvbSAnLi93b3Jkcy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHdyYXAgfSBmcm9tICcuL3dyYXAuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB3cmFwcGVyQXQgfSBmcm9tICcuL3dyYXBwZXJBdC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHdyYXBwZXJDaGFpbiB9IGZyb20gJy4vd3JhcHBlckNoYWluLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgd3JhcHBlckNvbW1pdCB9IGZyb20gJy4vY29tbWl0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgd3JhcHBlckxvZGFzaCB9IGZyb20gJy4vd3JhcHBlckxvZGFzaC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHdyYXBwZXJOZXh0IH0gZnJvbSAnLi9uZXh0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgd3JhcHBlclBsYW50IH0gZnJvbSAnLi9wbGFudC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHdyYXBwZXJSZXZlcnNlIH0gZnJvbSAnLi93cmFwcGVyUmV2ZXJzZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHdyYXBwZXJUb0l0ZXJhdG9yIH0gZnJvbSAnLi90b0l0ZXJhdG9yLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgd3JhcHBlclZhbHVlIH0gZnJvbSAnLi93cmFwcGVyVmFsdWUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB4b3IgfSBmcm9tICcuL3hvci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHhvckJ5IH0gZnJvbSAnLi94b3JCeS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHhvcldpdGggfSBmcm9tICcuL3hvcldpdGguanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB6aXAgfSBmcm9tICcuL3ppcC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHppcE9iamVjdCB9IGZyb20gJy4vemlwT2JqZWN0LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgemlwT2JqZWN0RGVlcCB9IGZyb20gJy4vemlwT2JqZWN0RGVlcC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHppcFdpdGggfSBmcm9tICcuL3ppcFdpdGguanMnO1xuZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gJy4vbG9kYXNoLmRlZmF1bHQuanMnO1xuIiwgImltcG9ydCB7IGlzRnVuY3Rpb24sIGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuXHJcbmNvbnN0IEFFU19HQ00gPSAnQUVTLUdDTSc7XHJcbmNvbnN0IEZPUk1BVF9KV0sgPSAnandrJztcclxuXHJcbmV4cG9ydCBjbGFzcyBQYXNzQ3J5cHRvIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgY2FuVXNlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICFpc05pbChjcnlwdG8pXHJcbiAgICAgICYmICFpc05pbChjcnlwdG8uc3VidGxlKVxyXG4gICAgICAmJiBpc0Z1bmN0aW9uKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpXHJcbiAgICAgICYmIGlzRnVuY3Rpb24oY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSlcclxuICAgICAgJiYgaXNGdW5jdGlvbihjcnlwdG8uc3VidGxlLmVuY3J5cHQpXHJcbiAgICAgICYmIGlzRnVuY3Rpb24oY3J5cHRvLnN1YnRsZS5kZWNyeXB0KVxyXG4gICAgICAmJiBpc0Z1bmN0aW9uKGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KVxyXG4gICAgICAmJiBpc0Z1bmN0aW9uKGNyeXB0by5zdWJ0bGUuZXhwb3J0S2V5KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGVuY3J5cHQobWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTx7IGVuY3J5cHRlZDogc3RyaW5nLCBrZXk/OiBzdHJpbmcsIHZlY3Rvcj86IHN0cmluZyB9PiB7XHJcbiAgICBpZiAodGhpcy5jYW5Vc2UoKSkge1xyXG4gICAgICBjb25zdCB2ZWN0b3IgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDEyKSk7XHJcbiAgICAgIGNvbnN0IGtleSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZ2VuZXJhdGVLZXkoe1xyXG4gICAgICAgICAgbmFtZTogQUVTX0dDTSxcclxuICAgICAgICAgIGxlbmd0aDogMjU2XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIFsgJ2VuY3J5cHQnLCAnZGVjcnlwdCcgXSk7XHJcbiAgICAgIGNvbnN0IGVuY3J5cHRlZCA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZW5jcnlwdCh7XHJcbiAgICAgICAgICBuYW1lOiBBRVNfR0NNLFxyXG4gICAgICAgICAgaXY6IHZlY3RvclxyXG4gICAgICAgIH0sXHJcbiAgICAgICAga2V5LFxyXG4gICAgICAgIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShtZXNzYWdlKSk7XHJcbiAgICAgIGNvbnN0IGV4cG9ydGVkS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkoRk9STUFUX0pXSywga2V5KTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IEpTT04uc3RyaW5naWZ5KGV4cG9ydGVkS2V5KSxcclxuICAgICAgICB2ZWN0b3I6IHRoaXMuYnVmZmVyVG9CYXNlNjQodmVjdG9yKSxcclxuICAgICAgICBlbmNyeXB0ZWQ6IHRoaXMuYnVmZmVyVG9CYXNlNjQoZW5jcnlwdGVkKVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBlbmNyeXB0ZWQ6IHRoaXMucmV2ZXJzZVN0cmluZyh0aGlzLnN0cmluZ1RvQmFzZTY0KHRoaXMucmV2ZXJzZVN0cmluZyhtZXNzYWdlKSkpXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWNyeXB0KGVuY3J5cHRlZDogc3RyaW5nLCBrZXk/OiBzdHJpbmcsIHZlY3Rvcj86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBpZiAodGhpcy5jYW5Vc2UoKSkge1xyXG4gICAgICBpZiAoa2V5ICYmIHZlY3Rvcikge1xyXG4gICAgICAgIGNvbnN0IGtleU9iamVjdCA9IEpTT04ucGFyc2Uoa2V5KTtcclxuICAgICAgICBjb25zdCB0aGlzS2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoRk9STUFUX0pXSywga2V5T2JqZWN0LCB7XHJcbiAgICAgICAgICAgIG5hbWU6IEFFU19HQ01cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgIFsgJ2VuY3J5cHQnLCAnZGVjcnlwdCcgXSk7XHJcbiAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kZWNyeXB0KHtcclxuICAgICAgICAgICAgbmFtZTogQUVTX0dDTSxcclxuICAgICAgICAgICAgaXY6IHRoaXMuYmFzZTY0VG9CdWZmZXIodmVjdG9yKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRoaXNLZXksXHJcbiAgICAgICAgICB0aGlzLmJhc2U2NFRvQnVmZmVyKGVuY3J5cHRlZCkpO1xyXG4gICAgICAgIHJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGVjcnlwdGVkKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gJ3h4JztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJldmVyc2VTdHJpbmcodGhpcy5iYXNlNjRUb1N0cmluZyh0aGlzLnJldmVyc2VTdHJpbmcoZW5jcnlwdGVkKSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWZmZXJUb0Jhc2U2NChidWZmZXI6IEFycmF5QnVmZmVyKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQgPSAnJztcclxuICAgIG5ldyBVaW50OEFycmF5KGJ1ZmZlcikuZm9yRWFjaChiID0+IHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGIpKTtcclxuICAgIHJldHVybiBidG9hKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJhc2U2NFRvQnVmZmVyKGJhc2U2NDogc3RyaW5nKTogQXJyYXlCdWZmZXIge1xyXG4gICAgY29uc3QgYmluYXJ5U3RyaW5nID0gYXRvYihiYXNlNjQpO1xyXG4gICAgY29uc3QgbGVuID0gYmluYXJ5U3RyaW5nLmxlbmd0aDtcclxuICAgIGNvbnN0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgYnl0ZXNbaV0gPSBiaW5hcnlTdHJpbmcuY2hhckNvZGVBdChpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBieXRlcy5idWZmZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJldmVyc2VTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnJykucmV2ZXJzZSgpLmpvaW4oJycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdHJpbmdUb0Jhc2U2NChzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYnRvYShzdHIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBiYXNlNjRUb1N0cmluZyhiYXNlNjQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYXRvYihiYXNlNjQpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwgImltcG9ydCB7IExhbmd1YWdlV2l0aEF1dG8gfSBmcm9tICcuL2kxOG4nO1xyXG5pbXBvcnQgeyBXcFByb2ZpbGUgfSBmcm9tICcuL3dwLXByb2ZpbGUnO1xyXG5pbXBvcnQgeyBDb21tZW50U3RhdHVzLCBQb3N0U3RhdHVzIH0gZnJvbSAnLi93cC1hcGknO1xyXG5pbXBvcnQgeyBpc05pbCwgaXNVbmRlZmluZWQgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IFBhc3NDcnlwdG8gfSBmcm9tICcuL3Bhc3MtY3J5cHRvJztcclxuaW1wb3J0IFdvcmRwcmVzc1BsdWdpbiBmcm9tICcuL21haW4nO1xyXG5pbXBvcnQgeyBXUF9ERUZBVUxUX1BST0ZJTEVfTkFNRSB9IGZyb20gJy4vY29uc3RzJztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgZW51bSBTZXR0aW5nc1ZlcnNpb24ge1xyXG4gIFYyID0gJzInXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBlbnVtIEFwaVR5cGUge1xyXG4gIFhNTF9SUEMgPSAneG1sLXJwYycsXHJcbiAgUmVzdEFQSV9taW5pT3JhbmdlID0gJ21pbmlPcmFuZ2UnLFxyXG4gIFJlc3RBcGlfQXBwbGljYXRpb25QYXNzd29yZHMgPSAnYXBwbGljYXRpb24tcGFzc3dvcmRzJyxcclxuICBSZXN0QXBpX1dwQ29tT0F1dGgyID0gJ1dwQ29tT0F1dGgyJ1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZW51bSBNYXRoSmF4T3V0cHV0VHlwZSB7XHJcbiAgVGVYID0gJ3RleCcsXHJcbiAgU1ZHID0gJ3N2ZydcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3JkcHJlc3NQbHVnaW5TZXR0aW5ncyB7XHJcblxyXG4gIHZlcnNpb24/OiBTZXR0aW5nc1ZlcnNpb247XHJcblxyXG4gIC8qKlxyXG4gICAqIFBsdWdpbiBsYW5ndWFnZS5cclxuICAgKi9cclxuICBsYW5nOiBMYW5ndWFnZVdpdGhBdXRvO1xyXG5cclxuICBwcm9maWxlczogV3BQcm9maWxlW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3cgcGx1Z2luIGljb24gaW4gc2lkZS5cclxuICAgKi9cclxuICBzaG93UmliYm9uSWNvbjogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCBwb3N0IHN0YXR1cy5cclxuICAgKi9cclxuICBkZWZhdWx0UG9zdFN0YXR1czogUG9zdFN0YXR1cztcclxuXHJcbiAgLyoqXHJcbiAgICogRGVmYXVsdCBjb21tZW50IHN0YXR1cy5cclxuICAgKi9cclxuICBkZWZhdWx0Q29tbWVudFN0YXR1czogQ29tbWVudFN0YXR1cztcclxuXHJcbiAgLyoqXHJcbiAgICogUmVtZW1iZXIgbGFzdCBzZWxlY3RlZCBwb3N0IGNhdGVnb3JpZXMuXHJcbiAgICovXHJcbiAgcmVtZW1iZXJMYXN0U2VsZWN0ZWRDYXRlZ29yaWVzOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBJZiBXb3JkUHJlc3MgZWRpdCBjb25maXJtIG1vZGFsIHdpbGwgYmUgc2hvd24gd2hlbiBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5LlxyXG4gICAqL1xyXG4gIHNob3dXb3JkUHJlc3NFZGl0Q29uZmlybTogYm9vbGVhbjtcclxuXHJcbiAgbWF0aEpheE91dHB1dFR5cGU6IE1hdGhKYXhPdXRwdXRUeXBlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogV29yZHByZXNzUGx1Z2luU2V0dGluZ3MgPSB7XHJcbiAgbGFuZzogJ2F1dG8nLFxyXG4gIHByb2ZpbGVzOiBbXSxcclxuICBzaG93UmliYm9uSWNvbjogZmFsc2UsXHJcbiAgZGVmYXVsdFBvc3RTdGF0dXM6IFBvc3RTdGF0dXMuRHJhZnQsXHJcbiAgZGVmYXVsdENvbW1lbnRTdGF0dXM6IENvbW1lbnRTdGF0dXMuT3BlbixcclxuICByZW1lbWJlckxhc3RTZWxlY3RlZENhdGVnb3JpZXM6IHRydWUsXHJcbiAgc2hvd1dvcmRQcmVzc0VkaXRDb25maXJtOiBmYWxzZSxcclxuICBtYXRoSmF4T3V0cHV0VHlwZTogTWF0aEpheE91dHB1dFR5cGUuU1ZHXHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1cGdyYWRlU2V0dGluZ3MoXHJcbiAgZXhpc3RpbmdTZXR0aW5nczogU2FmZUFueSxcclxuICB0bzogU2V0dGluZ3NWZXJzaW9uLFxyXG4gIHBsdWdpbjogV29yZHByZXNzUGx1Z2luXHJcbik6IFByb21pc2U8V29yZHByZXNzUGx1Z2luU2V0dGluZ3M+IHtcclxuICBjb25zb2xlLmxvZyhleGlzdGluZ1NldHRpbmdzLCB0byk7XHJcbiAgaWYgKGlzVW5kZWZpbmVkKGV4aXN0aW5nU2V0dGluZ3MudmVyc2lvbikpIHtcclxuICAgIC8vIFYxXHJcbiAgICBpZiAodG8gPT09IFNldHRpbmdzVmVyc2lvbi5WMikge1xyXG4gICAgICBjb25zdCBuZXdTZXR0aW5nczogV29yZHByZXNzUGx1Z2luU2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX1NFVFRJTkdTLCB7XHJcbiAgICAgICAgdmVyc2lvbjogU2V0dGluZ3NWZXJzaW9uLlYyLFxyXG4gICAgICAgIGxhbmc6IGV4aXN0aW5nU2V0dGluZ3MubGFuZyxcclxuICAgICAgICBzaG93UmliYm9uSWNvbjogZXhpc3RpbmdTZXR0aW5ncy5zaG93UmliYm9uSWNvbixcclxuICAgICAgICBkZWZhdWx0UG9zdFN0YXR1czogZXhpc3RpbmdTZXR0aW5ncy5kZWZhdWx0UG9zdFN0YXR1cyxcclxuICAgICAgICBkZWZhdWx0Q29tbWVudFN0YXR1czogZXhpc3RpbmdTZXR0aW5ncy5kZWZhdWx0Q29tbWVudFN0YXR1cyxcclxuICAgICAgICByZW1lbWJlckxhc3RTZWxlY3RlZENhdGVnb3JpZXM6IGV4aXN0aW5nU2V0dGluZ3MucmVtZW1iZXJMYXN0U2VsZWN0ZWRDYXRlZ29yaWVzLFxyXG4gICAgICAgIHNob3dXb3JkUHJlc3NFZGl0Q29uZmlybTogZXhpc3RpbmdTZXR0aW5ncy5zaG93V29yZFByZXNzRWRpdENvbmZpcm0sXHJcbiAgICAgICAgbWF0aEpheE91dHB1dFR5cGU6IGV4aXN0aW5nU2V0dGluZ3MubWF0aEpheE91dHB1dFR5cGVcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGVuZHBvaW50ID0gZXhpc3RpbmdTZXR0aW5ncy5lbmRwb2ludDtcclxuICAgICAgY29uc3QgYXBpVHlwZSA9IGV4aXN0aW5nU2V0dGluZ3MuYXBpVHlwZTtcclxuICAgICAgY29uc3QgeG1sUnBjUGF0aCA9IGV4aXN0aW5nU2V0dGluZ3MueG1sUnBjUGF0aDtcclxuICAgICAgY29uc3QgdXNlcm5hbWUgPSBleGlzdGluZ1NldHRpbmdzLnVzZXJuYW1lO1xyXG4gICAgICBjb25zdCBwYXNzd29yZCA9IGV4aXN0aW5nU2V0dGluZ3MucGFzc3dvcmQ7XHJcbiAgICAgIGNvbnN0IGxhc3RTZWxlY3RlZENhdGVnb3JpZXMgPSBleGlzdGluZ1NldHRpbmdzLmxhc3RTZWxlY3RlZENhdGVnb3JpZXM7XHJcbiAgICAgIGNvbnN0IGNyeXB0byA9IG5ldyBQYXNzQ3J5cHRvKCk7XHJcbiAgICAgIGNvbnN0IGVuY3J5cHRlZFBhc3N3b3JkID0gYXdhaXQgY3J5cHRvLmVuY3J5cHQocGFzc3dvcmQpO1xyXG4gICAgICBjb25zdCBwcm9maWxlID0ge1xyXG4gICAgICAgIG5hbWU6IFdQX0RFRkFVTFRfUFJPRklMRV9OQU1FLFxyXG4gICAgICAgIGFwaVR5cGU6IGFwaVR5cGUsXHJcbiAgICAgICAgZW5kcG9pbnQ6IGVuZHBvaW50LFxyXG4gICAgICAgIHhtbFJwY1BhdGg6IHhtbFJwY1BhdGgsXHJcbiAgICAgICAgc2F2ZVVzZXJuYW1lOiAhaXNOaWwodXNlcm5hbWUpLFxyXG4gICAgICAgIHNhdmVQYXNzd29yZDogIWlzTmlsKHBhc3N3b3JkKSxcclxuICAgICAgICBpc0RlZmF1bHQ6IHRydWUsXHJcbiAgICAgICAgbGFzdFNlbGVjdGVkQ2F0ZWdvcmllczogbGFzdFNlbGVjdGVkQ2F0ZWdvcmllcyxcclxuICAgICAgICB1c2VybmFtZTogdXNlcm5hbWUsXHJcbiAgICAgICAgZW5jcnlwdGVkUGFzc3dvcmQ6IGVuY3J5cHRlZFBhc3N3b3JkXHJcbiAgICAgIH07XHJcbiAgICAgIG5ld1NldHRpbmdzLnByb2ZpbGVzID0gW1xyXG4gICAgICAgIHByb2ZpbGVcclxuICAgICAgXTtcclxuICAgICAgcmV0dXJuIG5ld1NldHRpbmdzO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gZXhpc3RpbmdTZXR0aW5ncztcclxufVxyXG4iLCAiaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7IFdwWG1sUnBjQ2xpZW50IH0gZnJvbSAnLi93cC14bWwtcnBjLWNsaWVudCc7XHJcbmltcG9ydCB7XHJcbiAgV3BSZXN0Q2xpZW50LFxyXG4gIFdwUmVzdENsaWVudEFwcFBhc3N3b3JkQ29udGV4dCxcclxuICBXcFJlc3RDbGllbnRNaW5pT3JhbmdlQ29udGV4dCxcclxuICBXcFJlc3RDbGllbnRXcENvbU9BdXRoMkNvbnRleHRcclxufSBmcm9tICcuL3dwLXJlc3QtY2xpZW50JztcclxuaW1wb3J0IHsgV29yZFByZXNzQ2xpZW50IH0gZnJvbSAnLi93cC1jbGllbnQnO1xyXG5pbXBvcnQgeyBFUlJPUl9OT1RJQ0VfVElNRU9VVCB9IGZyb20gJy4vY29uc3RzJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuaW1wb3J0IHsgQXBpVHlwZSB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JkUHJlc3NDbGllbnQoXHJcbiAgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgcHJvZmlsZTogV3BQcm9maWxlXHJcbik6IFdvcmRQcmVzc0NsaWVudCB8IG51bGwge1xyXG4gIGlmICghcHJvZmlsZS5lbmRwb2ludCB8fCBwcm9maWxlLmVuZHBvaW50Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgbmV3IE5vdGljZShwbHVnaW4uaTE4bi50KCdlcnJvcl9ub0VuZHBvaW50JyksIEVSUk9SX05PVElDRV9USU1FT1VUKTtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBsZXQgY2xpZW50OiBXb3JkUHJlc3NDbGllbnQgfCBudWxsID0gbnVsbDtcclxuICBzd2l0Y2ggKHByb2ZpbGUuYXBpVHlwZSkge1xyXG4gICAgY2FzZSBBcGlUeXBlLlhNTF9SUEM6XHJcbiAgICAgIGNsaWVudCA9IG5ldyBXcFhtbFJwY0NsaWVudChwbHVnaW4sIHByb2ZpbGUpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgQXBpVHlwZS5SZXN0QVBJX21pbmlPcmFuZ2U6XHJcbiAgICAgIGNsaWVudCA9IG5ldyBXcFJlc3RDbGllbnQocGx1Z2luLCBwcm9maWxlLCBuZXcgV3BSZXN0Q2xpZW50TWluaU9yYW5nZUNvbnRleHQoKSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBBcGlUeXBlLlJlc3RBcGlfQXBwbGljYXRpb25QYXNzd29yZHM6XHJcbiAgICAgIGNsaWVudCA9IG5ldyBXcFJlc3RDbGllbnQocGx1Z2luLCBwcm9maWxlLCBuZXcgV3BSZXN0Q2xpZW50QXBwUGFzc3dvcmRDb250ZXh0KCkpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgQXBpVHlwZS5SZXN0QXBpX1dwQ29tT0F1dGgyOlxyXG4gICAgICBpZiAocHJvZmlsZS53cENvbU9BdXRoMlRva2VuKSB7XHJcbiAgICAgICAgY2xpZW50ID0gbmV3IFdwUmVzdENsaWVudChwbHVnaW4sIHByb2ZpbGUsIG5ldyBXcFJlc3RDbGllbnRXcENvbU9BdXRoMkNvbnRleHQoXHJcbiAgICAgICAgICBwcm9maWxlLndwQ29tT0F1dGgyVG9rZW4uYmxvZ0lkLFxyXG4gICAgICAgICAgcHJvZmlsZS53cENvbU9BdXRoMlRva2VuLmFjY2Vzc1Rva2VuXHJcbiAgICAgICAgKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3IE5vdGljZShwbHVnaW4uaTE4bi50KCdlcnJvcl9pbnZhbGlkV3BDb21Ub2tlbicpLCBFUlJPUl9OT1RJQ0VfVElNRU9VVCk7XHJcbiAgICAgIH1cclxuICAgICAgYnJlYWs7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBjbGllbnQgPSBudWxsO1xyXG4gICAgICBicmVhaztcclxuICB9XHJcbiAgcmV0dXJuIGNsaWVudDtcclxufVxyXG4iLCAiaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7XHJcbiAgV29yZFByZXNzQXV0aFBhcmFtcyxcclxuICBXb3JkUHJlc3NDbGllbnRSZXN1bHQsXHJcbiAgV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZSxcclxuICBXb3JkUHJlc3NQb3N0UGFyYW1zXHJcbn0gZnJvbSAnLi93cC1jbGllbnQnO1xyXG5pbXBvcnQgeyBYbWxScGNDbGllbnQgfSBmcm9tICcuL3htbHJwYy1jbGllbnQnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdFdvcmRQcmVzc0NsaWVudCB9IGZyb20gJy4vYWJzdHJhY3Qtd3AtY2xpZW50JztcclxuaW1wb3J0IHsgVGVybSB9IGZyb20gJy4vd3AtYXBpJztcclxuaW1wb3J0IHsgRVJST1JfTk9USUNFX1RJTUVPVVQgfSBmcm9tICcuL2NvbnN0cyc7XHJcbmltcG9ydCB7IFNhZmVBbnkgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuXHJcbmludGVyZmFjZSBGYXVsdFJlc3BvbnNlIHtcclxuICBmYXVsdENvZGU6IHN0cmluZztcclxuICBmYXVsdFN0cmluZzogc3RyaW5nO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0ZhdWx0UmVzcG9uc2UocmVzcG9uc2U6IHVua25vd24pOiByZXNwb25zZSBpcyBGYXVsdFJlc3BvbnNlIHtcclxuICByZXR1cm4gKHJlc3BvbnNlIGFzIEZhdWx0UmVzcG9uc2UpLmZhdWx0Q29kZSAhPT0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV3BYbWxScGNDbGllbnQgZXh0ZW5kcyBBYnN0cmFjdFdvcmRQcmVzc0NsaWVudCB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50OiBYbWxScGNDbGllbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICByZWFkb25seSBwcm9maWxlOiBXcFByb2ZpbGVcclxuICApIHtcclxuICAgIHN1cGVyKHBsdWdpbiwgcHJvZmlsZSk7XHJcbiAgICB0aGlzLmNsaWVudCA9IG5ldyBYbWxScGNDbGllbnQoe1xyXG4gICAgICB1cmw6IG5ldyBVUkwocHJvZmlsZS5lbmRwb2ludCksXHJcbiAgICAgIHhtbFJwY1BhdGg6IHByb2ZpbGUueG1sUnBjUGF0aFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaXNoKFxyXG4gICAgdGl0bGU6IHN0cmluZyxcclxuICAgIGNvbnRlbnQ6IHN0cmluZyxcclxuICAgIHBvc3RQYXJhbXM6IFdvcmRQcmVzc1Bvc3RQYXJhbXMsXHJcbiAgICBjZXJ0aWZpY2F0ZTogV29yZFByZXNzQXV0aFBhcmFtc1xyXG4gICk6IFByb21pc2U8V29yZFByZXNzQ2xpZW50UmVzdWx0PiB7XHJcbiAgICBjb25zdCBwdWJsaXNoQ29udGVudCA9IHtcclxuICAgICAgcG9zdF90eXBlOiAncG9zdCcsXHJcbiAgICAgIHBvc3Rfc3RhdHVzOiBwb3N0UGFyYW1zLnN0YXR1cyxcclxuICAgICAgY29tbWVudF9zdGF0dXM6IHBvc3RQYXJhbXMuY29tbWVudFN0YXR1cyxcclxuICAgICAgcG9zdF90aXRsZTogdGl0bGUsXHJcbiAgICAgIHBvc3RfY29udGVudDogY29udGVudCxcclxuICAgICAgdGVybXM6IHtcclxuICAgICAgICAnY2F0ZWdvcnknOiBwb3N0UGFyYW1zLmNhdGVnb3JpZXNcclxuICAgICAgfSxcclxuICAgICAgdGVybXNfbmFtZXM6IHtcclxuICAgICAgICAncG9zdF90YWcnOiBwb3N0UGFyYW1zLnRhZ3NcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGxldCBwdWJsaXNoUHJvbWlzZTtcclxuICAgIGlmIChwb3N0UGFyYW1zLnBvc3RJZCkge1xyXG4gICAgICBwdWJsaXNoUHJvbWlzZSA9IHRoaXMuY2xpZW50Lm1ldGhvZENhbGwoJ3dwLmVkaXRQb3N0JywgW1xyXG4gICAgICAgIDAsXHJcbiAgICAgICAgY2VydGlmaWNhdGUudXNlcm5hbWUsXHJcbiAgICAgICAgY2VydGlmaWNhdGUucGFzc3dvcmQsXHJcbiAgICAgICAgcG9zdFBhcmFtcy5wb3N0SWQsXHJcbiAgICAgICAgcHVibGlzaENvbnRlbnRcclxuICAgICAgXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwdWJsaXNoUHJvbWlzZSA9IHRoaXMuY2xpZW50Lm1ldGhvZENhbGwoJ3dwLm5ld1Bvc3QnLCBbXHJcbiAgICAgICAgMCxcclxuICAgICAgICBjZXJ0aWZpY2F0ZS51c2VybmFtZSxcclxuICAgICAgICBjZXJ0aWZpY2F0ZS5wYXNzd29yZCxcclxuICAgICAgICBwdWJsaXNoQ29udGVudFxyXG4gICAgICBdKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwdWJsaXNoUHJvbWlzZS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICBpZiAoaXNGYXVsdFJlc3BvbnNlKHJlc3BvbnNlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5FcnJvcixcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgIGNvZGU6IHJlc3BvbnNlLmZhdWx0Q29kZSxcclxuICAgICAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5mYXVsdFN0cmluZ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZXNwb25zZVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGNvZGU6IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuT0ssXHJcbiAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgIHBvc3RJZDogcG9zdFBhcmFtcy5wb3N0SWQgPz8gcmVzcG9uc2UsXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHBvc3RQYXJhbXMuY2F0ZWdvcmllc1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHJlc3BvbnNlXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yaWVzKGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUHJvbWlzZTxUZXJtW10+IHtcclxuICAgIHJldHVybiB0aGlzLmNsaWVudC5tZXRob2RDYWxsKCd3cC5nZXRUZXJtcycsIFtcclxuICAgICAgMCxcclxuICAgICAgY2VydGlmaWNhdGUudXNlcm5hbWUsXHJcbiAgICAgIGNlcnRpZmljYXRlLnBhc3N3b3JkLFxyXG4gICAgICAnY2F0ZWdvcnknXHJcbiAgICBdKVxyXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKGlzRmF1bHRSZXNwb25zZShyZXNwb25zZSkpIHtcclxuICAgICAgICAgIGNvbnN0IGZhdWx0ID0gYCR7cmVzcG9uc2UuZmF1bHRDb2RlfTogJHtyZXNwb25zZS5mYXVsdFN0cmluZ31gO1xyXG4gICAgICAgICAgbmV3IE5vdGljZShmYXVsdCwgRVJST1JfTk9USUNFX1RJTUVPVVQpO1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGZhdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KVxyXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoZGF0YSBhcyBTYWZlQW55KS5tYXAoKGl0OiBTYWZlQW55KSA9PiAoe1xyXG4gICAgICAgICAgLi4uaXQsXHJcbiAgICAgICAgICBpZDogaXQudGVybV9pZFxyXG4gICAgICAgIH0pKSA/PyBbXTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVVzZXIoY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXMpOiBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xpZW50Lm1ldGhvZENhbGwoJ3dwLmdldFByb2ZpbGUnLCBbXHJcbiAgICAgIDAsXHJcbiAgICAgIGNlcnRpZmljYXRlLnVzZXJuYW1lLFxyXG4gICAgICBjZXJ0aWZpY2F0ZS5wYXNzd29yZFxyXG4gICAgXSlcclxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGlmIChpc0ZhdWx0UmVzcG9uc2UocmVzcG9uc2UpKSB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLkVycm9yLFxyXG4gICAgICAgICAgICBkYXRhOiBgJHtyZXNwb25zZS5mYXVsdENvZGV9OiAke3Jlc3BvbnNlLmZhdWx0U3RyaW5nfWBcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvZGU6IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuT0ssXHJcbiAgICAgICAgICAgIGRhdGE6IHJlc3BvbnNlXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRUYWcobmFtZTogc3RyaW5nLCBjZXJ0aWZpY2F0ZTogV29yZFByZXNzQXV0aFBhcmFtcyk6IFByb21pc2U8VGVybT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XHJcbiAgICAgIGlkOiBuYW1lLFxyXG4gICAgICBuYW1lLFxyXG4gICAgICBzbHVnOiBuYW1lLFxyXG4gICAgICB0YXhvbm9teTogJ3Bvc3RfdGFnJyxcclxuICAgICAgZGVzY3JpcHRpb246IG5hbWUsXHJcbiAgICAgIGNvdW50OiAwXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsICJpbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgeyBpc0FycmF5LCBpc0Jvb2xlYW4sIGlzRGF0ZSwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1NhZmVJbnRlZ2VyIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgZm9ybWF0LCBwYXJzZSB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgU2FmZUFueSB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuaW50ZXJmYWNlIFhtbFJwY09wdGlvbnMge1xyXG4gIHVybDogVVJMO1xyXG4gIHhtbFJwY1BhdGg6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFhtbFJwY0NsaWVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIEhyZWYgd2l0aG91dCAnLycgYXQgdGhlIHZlcnkgZW5kLlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBocmVmOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFhNTC1SUEMgcGF0aCB3aXRob3V0ICcvJyBhdCB0aGUgYmVnaW5uaW5nIG9yIGVuZC5cclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgeG1sUnBjUGF0aDogc3RyaW5nO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50OiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBYbWxScGNPcHRpb25zXHJcbiAgKSB7XHJcbiAgICBjb25zb2xlLmxvZyhvcHRpb25zKTtcclxuXHJcbiAgICB0aGlzLmhyZWYgPSB0aGlzLm9wdGlvbnMudXJsLmhyZWY7XHJcbiAgICBpZiAodGhpcy5ocmVmLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgdGhpcy5ocmVmID0gdGhpcy5ocmVmLnN1YnN0cmluZygwLCB0aGlzLmhyZWYubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy54bWxScGNQYXRoID0gdGhpcy5vcHRpb25zLnhtbFJwY1BhdGg7XHJcbiAgICBpZiAodGhpcy54bWxScGNQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xyXG4gICAgICB0aGlzLnhtbFJwY1BhdGggPSB0aGlzLnhtbFJwY1BhdGguc3Vic3RyaW5nKDEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMueG1sUnBjUGF0aC5lbmRzV2l0aCgnLycpKSB7XHJcbiAgICAgIHRoaXMueG1sUnBjUGF0aCA9IHRoaXMueG1sUnBjUGF0aC5zdWJzdHJpbmcoMCwgdGhpcy54bWxScGNQYXRoLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZW5kcG9pbnQgPSBgJHt0aGlzLmhyZWZ9LyR7dGhpcy54bWxScGNQYXRofWA7XHJcbiAgfVxyXG5cclxuICBtZXRob2RDYWxsKFxyXG4gICAgbWV0aG9kOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IHVua25vd25cclxuICApOiBQcm9taXNlPHVua25vd24+IHtcclxuICAgIGNvbnN0IHhtbCA9IHRoaXMub2JqZWN0VG9YbWwobWV0aG9kLCBwYXJhbXMpO1xyXG4gICAgY29uc29sZS5sb2coYEVuZHBvaW50OiAke3RoaXMuZW5kcG9pbnR9LCAke21ldGhvZH0sIHJlcXVlc3Q6ICR7eG1sfWAsIHBhcmFtcyk7XHJcbiAgICByZXR1cm4gcmVxdWVzdCh7XHJcbiAgICAgIHVybDogdGhpcy5lbmRwb2ludCxcclxuICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQveG1sJyxcclxuICAgICAgICAnVXNlci1BZ2VudCc6ICdvYnNpZGlhbi5tZCdcclxuICAgICAgfSxcclxuICAgICAgYm9keTogeG1sXHJcbiAgICB9KVxyXG4gICAgICAudGhlbihyZXMgPT4gdGhpcy5yZXNwb25zZVhtbFRvT2JqZWN0KHJlcykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvYmplY3RUb1htbChtZXRob2Q6IHN0cmluZywgLi4ub2JqOiB1bmtub3duW10pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJycsICcnLCBudWxsKTtcclxuICAgIGNvbnN0IG1ldGhvZENhbGwgPSBkb2MuY3JlYXRlRWxlbWVudCgnbWV0aG9kQ2FsbCcpO1xyXG5cclxuICAgIGRvYy5hcHBlbmRDaGlsZChtZXRob2RDYWxsKTtcclxuICAgIGNvbnN0IHBpID0gZG9jLmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigneG1sJywgJ3ZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cIlVURi04XCInKTtcclxuICAgIGRvYy5pbnNlcnRCZWZvcmUocGksIGRvYy5maXJzdENoaWxkKTtcclxuXHJcbiAgICBjb25zdCBtZXRob2ROYW1lID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ21ldGhvZE5hbWUnKTtcclxuICAgIG1ldGhvZE5hbWUuYXBwZW5kVGV4dChtZXRob2QpO1xyXG4gICAgY29uc3QgcGFyYW1zID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3BhcmFtcycpO1xyXG4gICAgbWV0aG9kQ2FsbC5hcHBlbmRDaGlsZChtZXRob2ROYW1lKTtcclxuICAgIG1ldGhvZENhbGwuYXBwZW5kQ2hpbGQocGFyYW1zKTtcclxuICAgIG9iai5mb3JFYWNoKGl0ID0+IHRoaXMuY3JlYXRlUGFyYW0oaXQsIHBhcmFtcywgZG9jKSk7XHJcbiAgICByZXR1cm4gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhkb2MpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVQYXJhbShvYmo6IHVua25vd24sIHBhcmFtczogSFRNTEVsZW1lbnQsIGRvYzogWE1MRG9jdW1lbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBhcmFtID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3BhcmFtJyk7XHJcbiAgICBwYXJhbXMuYXBwZW5kQ2hpbGQocGFyYW0pO1xyXG4gICAgdGhpcy5jcmVhdGVWYWx1ZShvYmosIHBhcmFtLCBkb2MpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVWYWx1ZShkYXRhOiB1bmtub3duLCBwYXJlbnQ6IEhUTUxFbGVtZW50LCBkb2M6IFhNTERvY3VtZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGRvYy5jcmVhdGVFbGVtZW50KCd2YWx1ZScpO1xyXG4gICAgcGFyZW50LmFwcGVuZENoaWxkKHZhbHVlKTtcclxuICAgIGlmIChpc1NhZmVJbnRlZ2VyKGRhdGEpKSB7XHJcbiAgICAgIGNvbnN0IGk0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2k0Jyk7XHJcbiAgICAgIGk0LmFwcGVuZFRleHQoKGRhdGEgYXMgU2FmZUFueSkudG9TdHJpbmcoKSk7XHJcbiAgICAgIHZhbHVlLmFwcGVuZENoaWxkKGk0KTtcclxuICAgIH0gZWxzZSBpZiAoaXNOdW1iZXIoZGF0YSkpIHtcclxuICAgICAgY29uc3QgZG91YmxlID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RvdWJsZScpO1xyXG4gICAgICBkb3VibGUuYXBwZW5kVGV4dCgoZGF0YSBhcyBTYWZlQW55KS50b1N0cmluZygpKTtcclxuICAgICAgdmFsdWUuYXBwZW5kQ2hpbGQoZG91YmxlKTtcclxuICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuKGRhdGEpKSB7XHJcbiAgICAgIGNvbnN0IGJvb2xlYW4gPSBkb2MuY3JlYXRlRWxlbWVudCgnYm9vbGVhbicpO1xyXG4gICAgICBib29sZWFuLmFwcGVuZFRleHQoZGF0YSA/ICcxJyA6ICcwJyk7XHJcbiAgICAgIHZhbHVlLmFwcGVuZENoaWxkKGJvb2xlYW4pO1xyXG4gICAgfSBlbHNlIGlmIChpc0RhdGUoZGF0YSkpIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IGRvYy5jcmVhdGVFbGVtZW50KCdkYXRlVGltZS5pc284NjAxJyk7XHJcbiAgICAgIGRhdGUuYXBwZW5kVGV4dChmb3JtYXQoZGF0YSBhcyBEYXRlLCAneXl5eU1NZGRUSEg6bW06c3MnKSk7XHJcbiAgICAgIHZhbHVlLmFwcGVuZENoaWxkKGRhdGUpO1xyXG4gICAgfSBlbHNlIGlmIChpc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgIGNvbnN0IGFycmF5ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2FycmF5Jyk7XHJcbiAgICAgIGNvbnN0IGFycmF5RGF0YSA9IGRvYy5jcmVhdGVFbGVtZW50KCdkYXRhJyk7XHJcbiAgICAgIGFycmF5LmFwcGVuZENoaWxkKGFycmF5RGF0YSk7XHJcbiAgICAgIChkYXRhIGFzIHVua25vd25bXSkuZm9yRWFjaChpdCA9PiB0aGlzLmNyZWF0ZVZhbHVlKGl0LCBhcnJheURhdGEsIGRvYykpO1xyXG4gICAgICB2YWx1ZS5hcHBlbmRDaGlsZChhcnJheSk7XHJcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGRhdGEpKSB7XHJcbiAgICAgIGNvbnN0IHN0cnVjdCA9IGRvYy5jcmVhdGVFbGVtZW50KCdzdHJ1Y3QnKTtcclxuICAgICAgZm9yIChjb25zdCBbIHByb3BOYW1lLCBwcm9wVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGRhdGEpKSB7XHJcbiAgICAgICAgY29uc3QgbWVtYmVyID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ21lbWJlcicpO1xyXG4gICAgICAgIHN0cnVjdC5hcHBlbmRDaGlsZChtZW1iZXIpO1xyXG4gICAgICAgIGNvbnN0IG1lbWJlck5hbWUgPSBkb2MuY3JlYXRlRWxlbWVudCgnbmFtZScpO1xyXG4gICAgICAgIG1lbWJlck5hbWUuc2V0VGV4dChwcm9wTmFtZSk7XHJcbiAgICAgICAgbWVtYmVyLmFwcGVuZENoaWxkKG1lbWJlck5hbWUpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlVmFsdWUocHJvcFZhbHVlLCBtZW1iZXIsIGRvYyk7XHJcbiAgICAgIH1cclxuICAgICAgdmFsdWUuYXBwZW5kQ2hpbGQoc3RydWN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHN0cmluZyA9IGRvYy5jcmVhdGVFbGVtZW50KCdzdHJpbmcnKTtcclxuICAgICAgY29uc3QgY2RhdGEgPSBkb2MuY3JlYXRlQ0RBVEFTZWN0aW9uKChkYXRhIGFzIFNhZmVBbnkpLnRvU3RyaW5nKCkpO1xyXG4gICAgICBzdHJpbmcuYXBwZW5kQ2hpbGQoY2RhdGEpO1xyXG4gICAgICB2YWx1ZS5hcHBlbmRDaGlsZChzdHJpbmcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNwb25zZVhtbFRvT2JqZWN0KHhtbDogc3RyaW5nKTogdW5rbm93biB7XHJcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XHJcbiAgICBjb25zdCBkb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHhtbCwgJ2FwcGxpY2F0aW9uL3htbCcpO1xyXG4gICAgY29uc3QgbWV0aG9kUmVzcG9uc2UgPSBkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ21ldGhvZFJlc3BvbnNlJylbMF07XHJcbiAgICBjb25zdCBmYXVsdHMgPSBtZXRob2RSZXNwb25zZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZmF1bHQnKTtcclxuICAgIGxldCByZXNwb25zZTogdW5rbm93bjtcclxuICAgIGlmIChmYXVsdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmYXVsdFZhbHVlID0gZmF1bHRzWzBdXHJcbiAgICAgICAgLmNoaWxkcmVuWzBdIC8vIDx2YWx1ZT5cclxuICAgICAgICAuY2hpbGRyZW5bMF07XHJcbiAgICAgIHJlc3BvbnNlID0gdGhpcy5mcm9tRWxlbWVudChmYXVsdFZhbHVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlVmFsdWUgPSBtZXRob2RSZXNwb25zZVxyXG4gICAgICAgIC5jaGlsZHJlblswXSAvLyA8cGFyYW1zPlxyXG4gICAgICAgIC5jaGlsZHJlblswXSAvLyA8cGFyYW0+XHJcbiAgICAgICAgLmNoaWxkcmVuWzBdIC8vIDx2YWx1ZT5cclxuICAgICAgICAuY2hpbGRyZW5bMF07XHJcbiAgICAgIHJlc3BvbnNlID0gdGhpcy5mcm9tRWxlbWVudChyZXNwb25zZVZhbHVlKTtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKGByZXNwb25zZTogJHt4bWx9YCwgcmVzcG9uc2UpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmcm9tRWxlbWVudChlbGVtZW50OiBFbGVtZW50KTogdW5rbm93biB7XHJcbiAgICBjb25zdCB0YWdOYW1lID0gZWxlbWVudC50YWdOYW1lO1xyXG4gICAgaWYgKHRhZ05hbWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiBlbGVtZW50LmdldFRleHQoKTtcclxuICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ2k0JyB8fCB0YWdOYW1lID09PSAnaW50Jykge1xyXG4gICAgICByZXR1cm4gZWxlbWVudC5nZXRUZXh0KCk7XHJcbiAgICB9IGVsc2UgaWYgKHRhZ05hbWUgPT09ICdkb3VibGUnKSB7XHJcbiAgICAgIHJldHVybiBlbGVtZW50LmdldFRleHQoKTtcclxuICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHJldHVybiBlbGVtZW50LmdldFRleHQoKSA9PT0gJzEnO1xyXG4gICAgfSBlbHNlIGlmICh0YWdOYW1lID09PSAnZGF0ZVRpbWUuaXNvODYwMScpIHtcclxuICAgICAgY29uc3QgZGF0ZXRpbWUgPSBlbGVtZW50LmdldFRleHQoKTtcclxuICAgICAgaWYgKGRhdGV0aW1lKSB7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlKGRhdGV0aW1lLCBcInl5eXlNTWRkJ1QnSEg6bW06c3NcIiwgbmV3IERhdGUoKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ2FycmF5Jykge1xyXG4gICAgICBjb25zdCBhcnJheSA9IFtdO1xyXG4gICAgICBjb25zdCBhcnJheVZhbHVlcyA9IGVsZW1lbnRcclxuICAgICAgICAuY2hpbGRyZW5bMF0gLy8gPGRhdGE+XHJcbiAgICAgICAgLmNoaWxkcmVuOyAvLyA8dmFsdWU+c1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5VmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgYXJyYXkucHVzaCh0aGlzLmZyb21FbGVtZW50KGFycmF5VmFsdWVzW2ldLmNoaWxkcmVuWzBdKSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFycmF5O1xyXG4gICAgfSBlbHNlIGlmICh0YWdOYW1lID09PSAnc3RydWN0Jykge1xyXG4gICAgICBjb25zdCBzdHJ1Y3Q6IFNhZmVBbnkgPSB7fTtcclxuICAgICAgY29uc3QgbWVtYmVycyA9IGVsZW1lbnQuY2hpbGRyZW47IC8vIDxtZW1iZXI+c1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbWJlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBtZW1iZXIgPSBtZW1iZXJzW2ldO1xyXG4gICAgICAgIGxldCBuYW1lO1xyXG4gICAgICAgIGxldCB2YWx1ZTtcclxuICAgICAgICBmb3IgKGxldCBtZW1iZXJJbmRleCA9IDA7IG1lbWJlckluZGV4IDwgbWVtYmVyLmNoaWxkcmVuLmxlbmd0aDsgbWVtYmVySW5kZXgrKykge1xyXG4gICAgICAgICAgY29uc3QgcHJvcCA9IG1lbWJlci5jaGlsZHJlblttZW1iZXJJbmRleF07XHJcbiAgICAgICAgICBpZiAocHJvcC50YWdOYW1lID09PSAnbmFtZScpIHtcclxuICAgICAgICAgICAgbmFtZSA9IHByb3A7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHByb3AudGFnTmFtZSA9PT0gJ3ZhbHVlJykge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHByb3AuY2hpbGRyZW5bMF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnN0IG5hbWUgPSBtZW1iZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ25hbWUnKVswXTtcclxuICAgICAgICAvLyBjb25zdCB2YWx1ZSA9IG1lbWJlci5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmFsdWUnKVswXS5jaGlsZHJlblswXTtcclxuICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkge1xyXG4gICAgICAgICAgc3RydWN0W25hbWUuZ2V0VGV4dCgpXSA9IHRoaXMuZnJvbUVsZW1lbnQodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gc3RydWN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRvSW50ZWdlcihkaXJ0eU51bWJlcikge1xuICBpZiAoZGlydHlOdW1iZXIgPT09IG51bGwgfHwgZGlydHlOdW1iZXIgPT09IHRydWUgfHwgZGlydHlOdW1iZXIgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIE5hTjtcbiAgfVxuXG4gIHZhciBudW1iZXIgPSBOdW1iZXIoZGlydHlOdW1iZXIpO1xuXG4gIGlmIChpc05hTihudW1iZXIpKSB7XG4gICAgcmV0dXJuIG51bWJlcjtcbiAgfVxuXG4gIHJldHVybiBudW1iZXIgPCAwID8gTWF0aC5jZWlsKG51bWJlcikgOiBNYXRoLmZsb29yKG51bWJlcik7XG59IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcXVpcmVkQXJncyhyZXF1aXJlZCwgYXJncykge1xuICBpZiAoYXJncy5sZW5ndGggPCByZXF1aXJlZCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocmVxdWlyZWQgKyAnIGFyZ3VtZW50JyArIChyZXF1aXJlZCA+IDEgPyAncycgOiAnJykgKyAnIHJlcXVpcmVkLCBidXQgb25seSAnICsgYXJncy5sZW5ndGggKyAnIHByZXNlbnQnKTtcbiAgfVxufSIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHRvRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQ29udmVydCB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYW4gaW5zdGFuY2Ugb2YgRGF0ZS5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgRGF0ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIGNsb25lLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhIG51bWJlciwgaXQgaXMgdHJlYXRlZCBhcyBhIHRpbWVzdGFtcC5cbiAqXG4gKiBJZiB0aGUgYXJndW1lbnQgaXMgbm9uZSBvZiB0aGUgYWJvdmUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIEludmFsaWQgRGF0ZS5cbiAqXG4gKiAqKk5vdGUqKjogKmFsbCogRGF0ZSBhcmd1bWVudHMgcGFzc2VkIHRvIGFueSAqZGF0ZS1mbnMqIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBieSBgdG9EYXRlYC5cbiAqXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSBhcmd1bWVudCAtIHRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDbG9uZSB0aGUgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZShuZXcgRGF0ZSgyMDE0LCAxLCAxMSwgMTEsIDMwLCAzMCkpXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAxMTozMDozMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IHRoZSB0aW1lc3RhbXAgdG8gZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IHRvRGF0ZSgxMzkyMDk4NDMwMDAwKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQpIHtcbiAgcmVxdWlyZWRBcmdzKDEsIGFyZ3VtZW50cyk7XG4gIHZhciBhcmdTdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJndW1lbnQpOyAvLyBDbG9uZSB0aGUgZGF0ZVxuXG4gIGlmIChhcmd1bWVudCBpbnN0YW5jZW9mIERhdGUgfHwgX3R5cGVvZihhcmd1bWVudCkgPT09ICdvYmplY3QnICYmIGFyZ1N0ciA9PT0gJ1tvYmplY3QgRGF0ZV0nKSB7XG4gICAgLy8gUHJldmVudCB0aGUgZGF0ZSB0byBsb3NlIHRoZSBtaWxsaXNlY29uZHMgd2hlbiBwYXNzZWQgdG8gbmV3IERhdGUoKSBpbiBJRTEwXG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50LmdldFRpbWUoKSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSAnbnVtYmVyJyB8fCBhcmdTdHIgPT09ICdbb2JqZWN0IE51bWJlcl0nKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGFyZ3VtZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoKHR5cGVvZiBhcmd1bWVudCA9PT0gJ3N0cmluZycgfHwgYXJnU3RyID09PSAnW29iamVjdCBTdHJpbmddJykgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS53YXJuKFwiU3RhcnRpbmcgd2l0aCB2Mi4wLjAtYmV0YS4xIGRhdGUtZm5zIGRvZXNuJ3QgYWNjZXB0IHN0cmluZ3MgYXMgZGF0ZSBhcmd1bWVudHMuIFBsZWFzZSB1c2UgYHBhcnNlSVNPYCB0byBwYXJzZSBzdHJpbmdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VwZ3JhZGVHdWlkZS5tZCNzdHJpbmctYXJndW1lbnRzXCIpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuXG4gICAgICBjb25zb2xlLndhcm4obmV3IEVycm9yKCkuc3RhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICB9XG59IiwgImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGFkZE1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBBZGQgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0ge051bWJlcn0gYW1vdW50IC0gdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gYmUgYWRkZWQuIFBvc2l0aXZlIGRlY2ltYWxzIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5mbG9vcmAsIGRlY2ltYWxzIGxlc3MgdGhhbiB6ZXJvIHdpbGwgYmUgcm91bmRlZCB1c2luZyBgTWF0aC5jZWlsYC5cbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgbmV3IGRhdGUgd2l0aCB0aGUgbWlsbGlzZWNvbmRzIGFkZGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCA3NTAgbWlsbGlzZWNvbmRzIHRvIDEwIEp1bHkgMjAxNCAxMjo0NTozMC4wMDA6XG4gKiBjb25zdCByZXN1bHQgPSBhZGRNaWxsaXNlY29uZHMobmV3IERhdGUoMjAxNCwgNiwgMTAsIDEyLCA0NSwgMzAsIDApLCA3NTApXG4gKiAvLz0+IFRodSBKdWwgMTAgMjAxNCAxMjo0NTozMC43NTBcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGRNaWxsaXNlY29uZHMoZGlydHlEYXRlLCBkaXJ0eUFtb3VudCkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIHRpbWVzdGFtcCA9IHRvRGF0ZShkaXJ0eURhdGUpLmdldFRpbWUoKTtcbiAgdmFyIGFtb3VudCA9IHRvSW50ZWdlcihkaXJ0eUFtb3VudCk7XG4gIHJldHVybiBuZXcgRGF0ZSh0aW1lc3RhbXAgKyBhbW91bnQpO1xufSIsICJ2YXIgZGVmYXVsdE9wdGlvbnMgPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0T3B0aW9ucygpIHtcbiAgcmV0dXJuIGRlZmF1bHRPcHRpb25zO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXdPcHRpb25zO1xufSIsICIvKipcbiAqIEdvb2dsZSBDaHJvbWUgYXMgb2YgNjcuMC4zMzk2Ljg3IGludHJvZHVjZWQgdGltZXpvbmVzIHdpdGggb2Zmc2V0IHRoYXQgaW5jbHVkZXMgc2Vjb25kcy5cbiAqIFRoZXkgdXN1YWxseSBhcHBlYXIgZm9yIGRhdGVzIHRoYXQgZGVub3RlIHRpbWUgYmVmb3JlIHRoZSB0aW1lem9uZXMgd2VyZSBpbnRyb2R1Y2VkXG4gKiAoZS5nLiBmb3IgJ0V1cm9wZS9QcmFndWUnIHRpbWV6b25lIHRoZSBvZmZzZXQgaXMgR01UKzAwOjU3OjQ0IGJlZm9yZSAxIE9jdG9iZXIgMTg5MVxuICogYW5kIEdNVCswMTowMDowMCBhZnRlciB0aGF0IGRhdGUpXG4gKlxuICogRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSBvZmZzZXQgaW4gbWludXRlcyBhbmQgd291bGQgcmV0dXJuIDU3IGZvciB0aGUgZXhhbXBsZSBhYm92ZSxcbiAqIHdoaWNoIHdvdWxkIGxlYWQgdG8gaW5jb3JyZWN0IGNhbGN1bGF0aW9ucy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRpbWV6b25lIG9mZnNldCBpbiBtaWxsaXNlY29uZHMgdGhhdCB0YWtlcyBzZWNvbmRzIGluIGFjY291bnQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZGF0ZSkge1xuICB2YXIgdXRjRGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSwgZGF0ZS5nZXRIb3VycygpLCBkYXRlLmdldE1pbnV0ZXMoKSwgZGF0ZS5nZXRTZWNvbmRzKCksIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpKTtcbiAgdXRjRGF0ZS5zZXRVVENGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkpO1xuICByZXR1cm4gZGF0ZS5nZXRUaW1lKCkgLSB1dGNEYXRlLmdldFRpbWUoKTtcbn0iLCAiLyoqXG4gKiBEYXlzIGluIDEgd2Vlay5cbiAqXG4gKiBAbmFtZSBkYXlzSW5XZWVrXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5leHBvcnQgdmFyIGRheXNJbldlZWsgPSA3O1xuLyoqXG4gKiBEYXlzIGluIDEgeWVhclxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiA+IExlYXAgeWVhciBvY2N1cmVzIGV2ZXJ5IDQgeWVhcnMsIGV4Y2VwdCBmb3IgeWVhcnMgdGhhdCBhcmUgZGl2aXNhYmxlIGJ5IDEwMCBhbmQgbm90IGRpdmlzYWJsZSBieSA0MDAuXG4gKiA+IDEgbWVhbiB5ZWFyID0gKDM2NSsxLzQtMS8xMDArMS80MDApIGRheXMgPSAzNjUuMjQyNSBkYXlzXG4gKlxuICogQG5hbWUgZGF5c0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIGRheXNJblllYXIgPSAzNjUuMjQyNTtcbi8qKlxuICogTWF4aW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQG5hbWUgbWF4VGltZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIG1heFRpbWUgPSBNYXRoLnBvdygxMCwgOCkgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuLyoqXG4gKiBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbk1pbnV0ZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIG1pbGxpc2Vjb25kc0luTWludXRlID0gNjAwMDA7XG4vKipcbiAqIE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cblxuZXhwb3J0IHZhciBtaWxsaXNlY29uZHNJbkhvdXIgPSAzNjAwMDAwO1xuLyoqXG4gKiBNaWxsaXNlY29uZHMgaW4gMSBzZWNvbmRcbiAqXG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIG1pbGxpc2Vjb25kc0luU2Vjb25kID0gMTAwMDtcbi8qKlxuICogTWluaW11bSBhbGxvd2VkIHRpbWUuXG4gKlxuICogQG5hbWUgbWluVGltZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIG1pblRpbWUgPSAtbWF4VGltZTtcbi8qKlxuICogTWludXRlcyBpbiAxIGhvdXJcbiAqXG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5cbmV4cG9ydCB2YXIgbWludXRlc0luSG91ciA9IDYwO1xuLyoqXG4gKiBNb250aHMgaW4gMSBxdWFydGVyXG4gKlxuICogQG5hbWUgbW9udGhzSW5RdWFydGVyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5cbmV4cG9ydCB2YXIgbW9udGhzSW5RdWFydGVyID0gMztcbi8qKlxuICogTW9udGhzIGluIDEgeWVhclxuICpcbiAqIEBuYW1lIG1vbnRoc0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIG1vbnRoc0luWWVhciA9IDEyO1xuLyoqXG4gKiBRdWFydGVycyBpbiAxIHllYXJcbiAqXG4gKiBAbmFtZSBxdWFydGVyc0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIHF1YXJ0ZXJzSW5ZZWFyID0gNDtcbi8qKlxuICogU2Vjb25kcyBpbiAxIGhvdXJcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5Ib3VyXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5cbmV4cG9ydCB2YXIgc2Vjb25kc0luSG91ciA9IDM2MDA7XG4vKipcbiAqIFNlY29uZHMgaW4gMSBtaW51dGVcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cblxuZXhwb3J0IHZhciBzZWNvbmRzSW5NaW51dGUgPSA2MDtcbi8qKlxuICogU2Vjb25kcyBpbiAxIGRheVxuICpcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIHNlY29uZHNJbkRheSA9IHNlY29uZHNJbkhvdXIgKiAyNDtcbi8qKlxuICogU2Vjb25kcyBpbiAxIHdlZWtcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5XZWVrXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKiBAZGVmYXVsdFxuICovXG5cbmV4cG9ydCB2YXIgc2Vjb25kc0luV2VlayA9IHNlY29uZHNJbkRheSAqIDc7XG4vKipcbiAqIFNlY29uZHMgaW4gMSB5ZWFyXG4gKlxuICogQG5hbWUgc2Vjb25kc0luWWVhclxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIHNlY29uZHNJblllYXIgPSBzZWNvbmRzSW5EYXkgKiBkYXlzSW5ZZWFyO1xuLyoqXG4gKiBTZWNvbmRzIGluIDEgbW9udGhcbiAqXG4gKiBAbmFtZSBzZWNvbmRzSW5Nb250aFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICogQGRlZmF1bHRcbiAqL1xuXG5leHBvcnQgdmFyIHNlY29uZHNJbk1vbnRoID0gc2Vjb25kc0luWWVhciAvIDEyO1xuLyoqXG4gKiBTZWNvbmRzIGluIDEgcXVhcnRlclxuICpcbiAqIEBuYW1lIHNlY29uZHNJblF1YXJ0ZXJcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqIEBkZWZhdWx0XG4gKi9cblxuZXhwb3J0IHZhciBzZWNvbmRzSW5RdWFydGVyID0gc2Vjb25kc0luTW9udGggKiAzOyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL19saWIvcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIGlzRGF0ZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gdmFsdWUgYSBkYXRlP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLiBUaGUgZnVuY3Rpb24gd29ya3MgZm9yIGRhdGVzIHRyYW5zZmVycmVkIGFjcm9zcyBpZnJhbWVzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgLSB0aGUgdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudHMgcmVxdWlyZWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIGEgdmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZShuZXcgRGF0ZSgpKVxuICogLy89PiB0cnVlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhbiBpbnZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUobmV3IERhdGUoTmFOKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3Igc29tZSB2YWx1ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzRGF0ZSgnMjAxNC0wMi0zMScpXG4gKiAvLz0+IGZhbHNlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhbiBvYmplY3Q6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUoe30pXG4gKiAvLz0+IGZhbHNlXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNEYXRlKHZhbHVlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IF90eXBlb2YodmFsdWUpID09PSAnb2JqZWN0JyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBEYXRlXSc7XG59IiwgImltcG9ydCBpc0RhdGUgZnJvbSBcIi4uL2lzRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuLyoqXG4gKiBAbmFtZSBpc1ZhbGlkXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiBkYXRlIHZhbGlkP1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyBmYWxzZSBpZiBhcmd1bWVudCBpcyBJbnZhbGlkIERhdGUgYW5kIHRydWUgb3RoZXJ3aXNlLlxuICogQXJndW1lbnQgaXMgY29udmVydGVkIHRvIERhdGUgdXNpbmcgYHRvRGF0ZWAuIFNlZSBbdG9EYXRlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3RvRGF0ZX1cbiAqIEludmFsaWQgRGF0ZSBpcyBhIERhdGUsIHdob3NlIHRpbWUgdmFsdWUgaXMgTmFOLlxuICpcbiAqIFRpbWUgdmFsdWUgb2YgRGF0ZTogaHR0cDovL2VzNS5naXRodWIuaW8vI3gxNS45LjEuMVxuICpcbiAqIEBwYXJhbSB7Kn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gdGhlIGRhdGUgaXMgdmFsaWRcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMSBhcmd1bWVudCByZXF1aXJlZFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIHZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKG5ldyBEYXRlKDIwMTQsIDEsIDMxKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIHZhbHVlLCBjb252ZXJ0YWJsZSBpbnRvIGEgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQoMTM5MzgwNDgwMDAwMClcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgdGhlIGludmFsaWQgZGF0ZTpcbiAqIGNvbnN0IHJlc3VsdCA9IGlzVmFsaWQobmV3IERhdGUoJycpKVxuICogLy89PiBmYWxzZVxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVmFsaWQoZGlydHlEYXRlKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuXG4gIGlmICghaXNEYXRlKGRpcnR5RGF0ZSkgJiYgdHlwZW9mIGRpcnR5RGF0ZSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICByZXR1cm4gIWlzTmFOKE51bWJlcihkYXRlKSk7XG59IiwgImltcG9ydCBhZGRNaWxsaXNlY29uZHMgZnJvbSBcIi4uL2FkZE1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG4vKipcbiAqIEBuYW1lIHN1Yk1pbGxpc2Vjb25kc1xuICogQGNhdGVnb3J5IE1pbGxpc2Vjb25kIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFN1YnRyYWN0IHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU3VidHJhY3QgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIHtEYXRlfE51bWJlcn0gZGF0ZSAtIHRoZSBkYXRlIHRvIGJlIGNoYW5nZWRcbiAqIEBwYXJhbSB7TnVtYmVyfSBhbW91bnQgLSB0aGUgYW1vdW50IG9mIG1pbGxpc2Vjb25kcyB0byBiZSBzdWJ0cmFjdGVkLiBQb3NpdGl2ZSBkZWNpbWFscyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguZmxvb3JgLCBkZWNpbWFscyBsZXNzIHRoYW4gemVybyB3aWxsIGJlIHJvdW5kZWQgdXNpbmcgYE1hdGguY2VpbGAuXG4gKiBAcmV0dXJucyB7RGF0ZX0gdGhlIG5ldyBkYXRlIHdpdGggdGhlIG1pbGxpc2Vjb25kcyBzdWJ0cmFjdGVkXG4gKiBAdGhyb3dzIHtUeXBlRXJyb3J9IDIgYXJndW1lbnRzIHJlcXVpcmVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN1YnRyYWN0IDc1MCBtaWxsaXNlY29uZHMgZnJvbSAxMCBKdWx5IDIwMTQgMTI6NDU6MzAuMDAwOlxuICogY29uc3QgcmVzdWx0ID0gc3ViTWlsbGlzZWNvbmRzKG5ldyBEYXRlKDIwMTQsIDYsIDEwLCAxMiwgNDUsIDMwLCAwKSwgNzUwKVxuICogLy89PiBUaHUgSnVsIDEwIDIwMTQgMTI6NDU6MjkuMjUwXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3ViTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgZGlydHlBbW91bnQpIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBhbW91bnQgPSB0b0ludGVnZXIoZGlydHlBbW91bnQpO1xuICByZXR1cm4gYWRkTWlsbGlzZWNvbmRzKGRpcnR5RGF0ZSwgLWFtb3VudCk7XG59IiwgImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX0RBWSA9IDg2NDAwMDAwO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VVRDRGF5T2ZZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuICBkYXRlLnNldFVUQ01vbnRoKDAsIDEpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZlllYXJUaW1lc3RhbXAgPSBkYXRlLmdldFRpbWUoKTtcbiAgdmFyIGRpZmZlcmVuY2UgPSB0aW1lc3RhbXAgLSBzdGFydE9mWWVhclRpbWVzdGFtcDtcbiAgcmV0dXJuIE1hdGguZmxvb3IoZGlmZmVyZW5jZSAvIE1JTExJU0VDT05EU19JTl9EQVkpICsgMTtcbn0iLCAiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0T2ZVVENJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IDE7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBkYXkgPSBkYXRlLmdldFVUQ0RheSgpO1xuICB2YXIgZGlmZiA9IChkYXkgPCB3ZWVrU3RhcnRzT24gPyA3IDogMCkgKyBkYXkgLSB3ZWVrU3RhcnRzT247XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSAtIGRpZmYpO1xuICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICByZXR1cm4gZGF0ZTtcbn0iLCAiaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVUQ0lTT1dlZWtZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0VVRDRnVsbFllYXIoeWVhciArIDEsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZlVUQ0lTT1dlZWsoZm91cnRoT2ZKYW51YXJ5T2ZOZXh0WWVhcik7XG4gIHZhciBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mVVRDSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyKTtcblxuICBpZiAoZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mVGhpc1llYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHllYXIgLSAxO1xuICB9XG59IiwgImltcG9ydCBnZXRVVENJU09XZWVrWWVhciBmcm9tIFwiLi4vZ2V0VVRDSVNPV2Vla1llYXIvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlVUQ0lTT1dlZWtZZWFyKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIHllYXIgPSBnZXRVVENJU09XZWVrWWVhcihkaXJ0eURhdGUpO1xuICB2YXIgZm91cnRoT2ZKYW51YXJ5ID0gbmV3IERhdGUoMCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCA0KTtcbiAgZm91cnRoT2ZKYW51YXJ5LnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgZGF0ZSA9IHN0YXJ0T2ZVVENJU09XZWVrKGZvdXJ0aE9mSmFudWFyeSk7XG4gIHJldHVybiBkYXRlO1xufSIsICJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vc3RhcnRPZlVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2Vla1llYXIgZnJvbSBcIi4uL3N0YXJ0T2ZVVENJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG52YXIgTUlMTElTRUNPTkRTX0lOX1dFRUsgPSA2MDQ4MDAwMDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVVENJU09XZWVrKGRpcnR5RGF0ZSkge1xuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRpZmYgPSBzdGFydE9mVVRDSVNPV2VlayhkYXRlKS5nZXRUaW1lKCkgLSBzdGFydE9mVVRDSVNPV2Vla1llYXIoZGF0ZSkuZ2V0VGltZSgpOyAvLyBSb3VuZCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIG5lYXJlc3QgaW50ZWdlclxuICAvLyBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnRcbiAgLy8gKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2YgdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KVxuXG4gIHJldHVybiBNYXRoLnJvdW5kKGRpZmYgLyBNSUxMSVNFQ09ORFNfSU5fV0VFSykgKyAxO1xufSIsICJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuLi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RhcnRPZlVUQ1dlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcblxuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIHdlZWtTdGFydHNPbiA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8ud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAwKTsgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAwIGFuZCA2IF9hbmRfIGlzIG5vdCBOYU5cblxuICBpZiAoISh3ZWVrU3RhcnRzT24gPj0gMCAmJiB3ZWVrU3RhcnRzT24gPD0gNikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignd2Vla1N0YXJ0c09uIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA2IGluY2x1c2l2ZWx5Jyk7XG4gIH1cblxuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIGRpZmYgPSAoZGF5IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gd2Vla1N0YXJ0c09uO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmKTtcbiAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwgImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVVENXZWVrWWVhcihkaXJ0eURhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYsIF9yZWYyLCBfcmVmMywgX29wdGlvbnMkZmlyc3RXZWVrQ29uLCBfb3B0aW9ucyRsb2NhbGUsIF9vcHRpb25zJGxvY2FsZSRvcHRpbywgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyO1xuXG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgeWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAxKTsgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cblxuICBpZiAoIShmaXJzdFdlZWtDb250YWluc0RhdGUgPj0gMSAmJiBmaXJzdFdlZWtDb250YWluc0RhdGUgPD0gNykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Jyk7XG4gIH1cblxuICB2YXIgZmlyc3RXZWVrT2ZOZXh0WWVhciA9IG5ldyBEYXRlKDApO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldFVUQ0Z1bGxZZWFyKHllYXIgKyAxLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICB2YXIgc3RhcnRPZk5leHRZZWFyID0gc3RhcnRPZlVUQ1dlZWsoZmlyc3RXZWVrT2ZOZXh0WWVhciwgb3B0aW9ucyk7XG4gIHZhciBmaXJzdFdlZWtPZlRoaXNZZWFyID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vla09mVGhpc1llYXIuc2V0VVRDRnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgdmFyIHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZVVENXZWVrKGZpcnN0V2Vla09mVGhpc1llYXIsIG9wdGlvbnMpO1xuXG4gIGlmIChkYXRlLmdldFRpbWUoKSA+PSBzdGFydE9mTmV4dFllYXIuZ2V0VGltZSgpKSB7XG4gICAgcmV0dXJuIHllYXIgKyAxO1xuICB9IGVsc2UgaWYgKGRhdGUuZ2V0VGltZSgpID49IHN0YXJ0T2ZUaGlzWWVhci5nZXRUaW1lKCkpIHtcbiAgICByZXR1cm4geWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geWVhciAtIDE7XG4gIH1cbn0iLCAiaW1wb3J0IGdldFVUQ1dlZWtZZWFyIGZyb20gXCIuLi9nZXRVVENXZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uL3N0YXJ0T2ZVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydE9mVVRDV2Vla1llYXIoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfcmVmMiwgX3JlZjMsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlLCBfb3B0aW9ucyRsb2NhbGUkb3B0aW8sIF9kZWZhdWx0T3B0aW9ucyRsb2NhbCwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMjtcblxuICByZXF1aXJlZEFyZ3MoMSwgYXJndW1lbnRzKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZiA9IChfcmVmMiA9IChfcmVmMyA9IChfb3B0aW9ucyRmaXJzdFdlZWtDb24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRmaXJzdFdlZWtDb24gIT09IHZvaWQgMCA/IF9vcHRpb25zJGZpcnN0V2Vla0NvbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfb3B0aW9ucyRsb2NhbGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUkb3B0aW8gPSBfb3B0aW9ucyRsb2NhbGUub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlJG9wdGlvID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUkb3B0aW8uZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYyICE9PSB2b2lkIDAgPyBfcmVmMiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPSBkZWZhdWx0T3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPSBfZGVmYXVsdE9wdGlvbnMkbG9jYWwub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsMi5maXJzdFdlZWtDb250YWluc0RhdGUpICE9PSBudWxsICYmIF9yZWYgIT09IHZvaWQgMCA/IF9yZWYgOiAxKTtcbiAgdmFyIHllYXIgPSBnZXRVVENXZWVrWWVhcihkaXJ0eURhdGUsIG9wdGlvbnMpO1xuICB2YXIgZmlyc3RXZWVrID0gbmV3IERhdGUoMCk7XG4gIGZpcnN0V2Vlay5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWsuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gIHZhciBkYXRlID0gc3RhcnRPZlVUQ1dlZWsoZmlyc3RXZWVrLCBvcHRpb25zKTtcbiAgcmV0dXJuIGRhdGU7XG59IiwgImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrIGZyb20gXCIuLi9zdGFydE9mVVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHN0YXJ0T2ZVVENXZWVrWWVhciBmcm9tIFwiLi4vc3RhcnRPZlVUQ1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbnZhciBNSUxMSVNFQ09ORFNfSU5fV0VFSyA9IDYwNDgwMDAwMDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVUQ1dlZWsoZGlydHlEYXRlLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygxLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgZGlmZiA9IHN0YXJ0T2ZVVENXZWVrKGRhdGUsIG9wdGlvbnMpLmdldFRpbWUoKSAtIHN0YXJ0T2ZVVENXZWVrWWVhcihkYXRlLCBvcHRpb25zKS5nZXRUaW1lKCk7IC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyXG4gIC8vIGJlY2F1c2UgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYSB3ZWVrIGlzIG5vdCBjb25zdGFudFxuICAvLyAoZS5nLiBpdCdzIGRpZmZlcmVudCBpbiB0aGUgd2VlayBvZiB0aGUgZGF5bGlnaHQgc2F2aW5nIHRpbWUgY2xvY2sgc2hpZnQpXG5cbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIE1JTExJU0VDT05EU19JTl9XRUVLKSArIDE7XG59IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZExlYWRpbmdaZXJvcyhudW1iZXIsIHRhcmdldExlbmd0aCkge1xuICB2YXIgc2lnbiA9IG51bWJlciA8IDAgPyAnLScgOiAnJztcbiAgdmFyIG91dHB1dCA9IE1hdGguYWJzKG51bWJlcikudG9TdHJpbmcoKTtcblxuICB3aGlsZSAob3V0cHV0Lmxlbmd0aCA8IHRhcmdldExlbmd0aCkge1xuICAgIG91dHB1dCA9ICcwJyArIG91dHB1dDtcbiAgfVxuXG4gIHJldHVybiBzaWduICsgb3V0cHV0O1xufSIsICJpbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi8uLi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanNcIjtcbi8qXG4gKiB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICBhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBBKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBkICB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICB8ICBEICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBoICB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICB8ICBIICB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBtICB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBNICB8IE1vbnRoICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBzICB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBTICB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICB8XG4gKiB8ICB5ICB8IFllYXIgKGFicykgICAgICAgICAgICAgICAgICAgICB8ICBZICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgKiBhcmUgbm90IGltcGxlbWVudGVkIGJ1dCByZXNlcnZlZCBieSBVbmljb2RlIHN0YW5kYXJkLlxuICovXG5cbnZhciBmb3JtYXR0ZXJzID0ge1xuICAvLyBZZWFyXG4gIHk6IGZ1bmN0aW9uIHkoZGF0ZSwgdG9rZW4pIHtcbiAgICAvLyBGcm9tIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtMzEvdHIzNS1kYXRlcy5odG1sI0RhdGVfRm9ybWF0X3Rva2Vuc1xuICAgIC8vIHwgWWVhciAgICAgfCAgICAgeSB8IHl5IHwgICB5eXkgfCAgeXl5eSB8IHl5eXl5IHxcbiAgICAvLyB8LS0tLS0tLS0tLXwtLS0tLS0tfC0tLS18LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18XG4gICAgLy8gfCBBRCAxICAgICB8ICAgICAxIHwgMDEgfCAgIDAwMSB8ICAwMDAxIHwgMDAwMDEgfFxuICAgIC8vIHwgQUQgMTIgICAgfCAgICAxMiB8IDEyIHwgICAwMTIgfCAgMDAxMiB8IDAwMDEyIHxcbiAgICAvLyB8IEFEIDEyMyAgIHwgICAxMjMgfCAyMyB8ICAgMTIzIHwgIDAxMjMgfCAwMDEyMyB8XG4gICAgLy8gfCBBRCAxMjM0ICB8ICAxMjM0IHwgMzQgfCAgMTIzNCB8ICAxMjM0IHwgMDEyMzQgfFxuICAgIC8vIHwgQUQgMTIzNDUgfCAxMjM0NSB8IDQ1IHwgMTIzNDUgfCAxMjM0NSB8IDEyMzQ1IHxcbiAgICB2YXIgc2lnbmVkWWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTsgLy8gUmV0dXJucyAxIGZvciAxIEJDICh3aGljaCBpcyB5ZWFyIDAgaW4gSmF2YVNjcmlwdClcblxuICAgIHZhciB5ZWFyID0gc2lnbmVkWWVhciA+IDAgPyBzaWduZWRZZWFyIDogMSAtIHNpZ25lZFllYXI7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0b2tlbiA9PT0gJ3l5JyA/IHllYXIgJSAxMDAgOiB5ZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBNb250aFxuICBNOiBmdW5jdGlvbiBNKGRhdGUsIHRva2VuKSB7XG4gICAgdmFyIG1vbnRoID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgIHJldHVybiB0b2tlbiA9PT0gJ00nID8gU3RyaW5nKG1vbnRoICsgMSkgOiBhZGRMZWFkaW5nWmVyb3MobW9udGggKyAxLCAyKTtcbiAgfSxcbiAgLy8gRGF5IG9mIHRoZSBtb250aFxuICBkOiBmdW5jdGlvbiBkKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ0RhdGUoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gQU0gb3IgUE1cbiAgYTogZnVuY3Rpb24gYShkYXRlLCB0b2tlbikge1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXRlLmdldFVUQ0hvdXJzKCkgLyAxMiA+PSAxID8gJ3BtJyA6ICdhbSc7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdhJzpcbiAgICAgIGNhc2UgJ2FhJzpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICBjYXNlICdhYWEnOlxuICAgICAgICByZXR1cm4gZGF5UGVyaW9kRW51bVZhbHVlO1xuXG4gICAgICBjYXNlICdhYWFhYSc6XG4gICAgICAgIHJldHVybiBkYXlQZXJpb2RFbnVtVmFsdWVbMF07XG5cbiAgICAgIGNhc2UgJ2FhYWEnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZSA9PT0gJ2FtJyA/ICdhLm0uJyA6ICdwLm0uJztcbiAgICB9XG4gIH0sXG4gIC8vIEhvdXIgWzEtMTJdXG4gIGg6IGZ1bmN0aW9uIGgoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDSG91cnMoKSAlIDEyIHx8IDEyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBIb3VyIFswLTIzXVxuICBIOiBmdW5jdGlvbiBIKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ0hvdXJzKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIE1pbnV0ZVxuICBtOiBmdW5jdGlvbiBtKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldFVUQ01pbnV0ZXMoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gU2Vjb25kXG4gIHM6IGZ1bmN0aW9uIHMoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGRhdGUuZ2V0VVRDU2Vjb25kcygpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBGcmFjdGlvbiBvZiBzZWNvbmRcbiAgUzogZnVuY3Rpb24gUyhkYXRlLCB0b2tlbikge1xuICAgIHZhciBudW1iZXJPZkRpZ2l0cyA9IHRva2VuLmxlbmd0aDtcbiAgICB2YXIgbWlsbGlzZWNvbmRzID0gZGF0ZS5nZXRVVENNaWxsaXNlY29uZHMoKTtcbiAgICB2YXIgZnJhY3Rpb25hbFNlY29uZHMgPSBNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAqIE1hdGgucG93KDEwLCBudW1iZXJPZkRpZ2l0cyAtIDMpKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGZyYWN0aW9uYWxTZWNvbmRzLCB0b2tlbi5sZW5ndGgpO1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZm9ybWF0dGVyczsiLCAiaW1wb3J0IGdldFVUQ0RheU9mWWVhciBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENEYXlPZlllYXIvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENJU09XZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENJU09XZWVrWWVhciBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRVVENJU09XZWVrWWVhci9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFVUQ1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFVUQ1dlZWtZZWFyIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgYWRkTGVhZGluZ1plcm9zIGZyb20gXCIuLi8uLi9hZGRMZWFkaW5nWmVyb3MvaW5kZXguanNcIjtcbmltcG9ydCBsaWdodEZvcm1hdHRlcnMgZnJvbSBcIi4uL2xpZ2h0Rm9ybWF0dGVycy9pbmRleC5qc1wiO1xudmFyIGRheVBlcmlvZEVudW0gPSB7XG4gIGFtOiAnYW0nLFxuICBwbTogJ3BtJyxcbiAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gIG5vb246ICdub29uJyxcbiAgbW9ybmluZzogJ21vcm5pbmcnLFxuICBhZnRlcm5vb246ICdhZnRlcm5vb24nLFxuICBldmVuaW5nOiAnZXZlbmluZycsXG4gIG5pZ2h0OiAnbmlnaHQnXG59O1xuXG4vKlxuICogfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAgYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgfCAgQSogfCBNaWxsaXNlY29uZHMgaW4gZGF5ICAgICAgICAgICAgfFxuICogfCAgYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgfCAgQiAgfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgfFxuICogfCAgYyAgfCBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2VlayAgfCAgQyogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfFxuICogfCAgZCAgfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgfCAgRCAgfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZSAgfCBMb2NhbCBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgfCAgRSAgfCBEYXkgb2Ygd2VlayAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRiogfCBEYXkgb2Ygd2VlayBpbiBtb250aCAgICAgICAgICAgfFxuICogfCAgZyogfCBNb2RpZmllZCBKdWxpYW4gZGF5ICAgICAgICAgICAgfCAgRyAgfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaCAgfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgfCAgSCAgfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaSEgfCBJU08gZGF5IG9mIHdlZWsgICAgICAgICAgICAgICAgfCAgSSEgfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgfFxuICogfCAgaiogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfCAgSiogfCBMb2NhbGl6ZWQgaG91ciB3L28gZGF5IHBlcmlvZCAgfFxuICogfCAgayAgfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgfCAgSyAgfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbCogfCAoZGVwcmVjYXRlZCkgICAgICAgICAgICAgICAgICAgfCAgTCAgfCBTdGFuZC1hbG9uZSBtb250aCAgICAgICAgICAgICAgfFxuICogfCAgbSAgfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTSAgfCBNb250aCAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbyEgfCBPcmRpbmFsIG51bWJlciBtb2RpZmllciAgICAgICAgfCAgTyAgfCBUaW1lem9uZSAoR01UKSAgICAgICAgICAgICAgICAgfFxuICogfCAgcCEgfCBMb25nIGxvY2FsaXplZCB0aW1lICAgICAgICAgICAgfCAgUCEgfCBMb25nIGxvY2FsaXplZCBkYXRlICAgICAgICAgICAgfFxuICogfCAgcSAgfCBTdGFuZC1hbG9uZSBxdWFydGVyICAgICAgICAgICAgfCAgUSAgfCBRdWFydGVyICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgciogfCBSZWxhdGVkIEdyZWdvcmlhbiB5ZWFyICAgICAgICAgfCAgUiEgfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgfFxuICogfCAgcyAgfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUyAgfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgfFxuICogfCAgdCEgfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgfCAgVCEgfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgfFxuICogfCAgdSAgfCBFeHRlbmRlZCB5ZWFyICAgICAgICAgICAgICAgICAgfCAgVSogfCBDeWNsaWMgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgdiogfCBUaW1lem9uZSAoZ2VuZXJpYyBub24tbG9jYXQuKSAgfCAgViogfCBUaW1lem9uZSAobG9jYXRpb24pICAgICAgICAgICAgfFxuICogfCAgdyAgfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgfCAgVyogfCBXZWVrIG9mIG1vbnRoICAgICAgICAgICAgICAgICAgfFxuICogfCAgeCAgfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgfCAgWCAgfCBUaW1lem9uZSAoSVNPLTg2MDEpICAgICAgICAgICAgfFxuICogfCAgeSAgfCBZZWFyIChhYnMpICAgICAgICAgICAgICAgICAgICAgfCAgWSAgfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgfFxuICogfCAgeiAgfCBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0LikgfCAgWiogfCBUaW1lem9uZSAoYWxpYXNlcykgICAgICAgICAgICAgfFxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICogYXJlIG5vdCBpbXBsZW1lbnRlZCBidXQgcmVzZXJ2ZWQgYnkgVW5pY29kZSBzdGFuZGFyZC5cbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAhIGFyZSBub24tc3RhbmRhcmQsIGJ1dCBpbXBsZW1lbnRlZCBieSBkYXRlLWZuczpcbiAqIC0gYG9gIG1vZGlmaWVzIHRoZSBwcmV2aW91cyB0b2tlbiB0byB0dXJuIGl0IGludG8gYW4gb3JkaW5hbCAoc2VlIGBmb3JtYXRgIGRvY3MpXG4gKiAtIGBpYCBpcyBJU08gZGF5IG9mIHdlZWsuIEZvciBgaWAgYW5kIGBpaWAgaXMgcmV0dXJucyBudW1lcmljIElTTyB3ZWVrIGRheXMsXG4gKiAgIGkuZS4gNyBmb3IgU3VuZGF5LCAxIGZvciBNb25kYXksIGV0Yy5cbiAqIC0gYElgIGlzIElTTyB3ZWVrIG9mIHllYXIsIGFzIG9wcG9zZWQgdG8gYHdgIHdoaWNoIGlzIGxvY2FsIHdlZWsgb2YgeWVhci5cbiAqIC0gYFJgIGlzIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyLCBhcyBvcHBvc2VkIHRvIGBZYCB3aGljaCBpcyBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyLlxuICogICBgUmAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBJYCBhbmQgYGlgXG4gKiAgIGZvciB1bml2ZXJzYWwgSVNPIHdlZWstbnVtYmVyaW5nIGRhdGUsIHdoZXJlYXNcbiAqICAgYFlgIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgd2AgYW5kIGBlYFxuICogICBmb3Igd2Vlay1udW1iZXJpbmcgZGF0ZSBzcGVjaWZpYyB0byB0aGUgbG9jYWxlLlxuICogLSBgUGAgaXMgbG9uZyBsb2NhbGl6ZWQgZGF0ZSBmb3JtYXRcbiAqIC0gYHBgIGlzIGxvbmcgbG9jYWxpemVkIHRpbWUgZm9ybWF0XG4gKi9cbnZhciBmb3JtYXR0ZXJzID0ge1xuICAvLyBFcmFcbiAgRzogZnVuY3Rpb24gRyhkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgZXJhID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpID4gMCA/IDEgOiAwO1xuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gQUQsIEJDXG4gICAgICBjYXNlICdHJzpcbiAgICAgIGNhc2UgJ0dHJzpcbiAgICAgIGNhc2UgJ0dHRyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5lcmEoZXJhLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCdcbiAgICAgICAgfSk7XG4gICAgICAvLyBBLCBCXG5cbiAgICAgIGNhc2UgJ0dHR0dHJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdydcbiAgICAgICAgfSk7XG4gICAgICAvLyBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdFxuXG4gICAgICBjYXNlICdHR0dHJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5lcmEoZXJhLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIFllYXJcbiAgeTogZnVuY3Rpb24geShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICAvLyBPcmRpbmFsIG51bWJlclxuICAgIGlmICh0b2tlbiA9PT0gJ3lvJykge1xuICAgICAgdmFyIHNpZ25lZFllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7IC8vIFJldHVybnMgMSBmb3IgMSBCQyAod2hpY2ggaXMgeWVhciAwIGluIEphdmFTY3JpcHQpXG5cbiAgICAgIHZhciB5ZWFyID0gc2lnbmVkWWVhciA+IDAgPyBzaWduZWRZZWFyIDogMSAtIHNpZ25lZFllYXI7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcih5ZWFyLCB7XG4gICAgICAgIHVuaXQ6ICd5ZWFyJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy55KGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhclxuICBZOiBmdW5jdGlvbiBZKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBzaWduZWRXZWVrWWVhciA9IGdldFVUQ1dlZWtZZWFyKGRhdGUsIG9wdGlvbnMpOyAvLyBSZXR1cm5zIDEgZm9yIDEgQkMgKHdoaWNoIGlzIHllYXIgMCBpbiBKYXZhU2NyaXB0KVxuXG4gICAgdmFyIHdlZWtZZWFyID0gc2lnbmVkV2Vla1llYXIgPiAwID8gc2lnbmVkV2Vla1llYXIgOiAxIC0gc2lnbmVkV2Vla1llYXI7IC8vIFR3byBkaWdpdCB5ZWFyXG5cbiAgICBpZiAodG9rZW4gPT09ICdZWScpIHtcbiAgICAgIHZhciB0d29EaWdpdFllYXIgPSB3ZWVrWWVhciAlIDEwMDtcbiAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3ModHdvRGlnaXRZZWFyLCAyKTtcbiAgICB9IC8vIE9yZGluYWwgbnVtYmVyXG5cblxuICAgIGlmICh0b2tlbiA9PT0gJ1lvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIod2Vla1llYXIsIHtcbiAgICAgICAgdW5pdDogJ3llYXInXG4gICAgICB9KTtcbiAgICB9IC8vIFBhZGRpbmdcblxuXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh3ZWVrWWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAgUjogZnVuY3Rpb24gUihkYXRlLCB0b2tlbikge1xuICAgIHZhciBpc29XZWVrWWVhciA9IGdldFVUQ0lTT1dlZWtZZWFyKGRhdGUpOyAvLyBQYWRkaW5nXG5cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGlzb1dlZWtZZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBFeHRlbmRlZCB5ZWFyLiBUaGlzIGlzIGEgc2luZ2xlIG51bWJlciBkZXNpZ25hdGluZyB0aGUgeWVhciBvZiB0aGlzIGNhbGVuZGFyIHN5c3RlbS5cbiAgLy8gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIGxvY2FsaXplcnMgYXJlIEIuQy4geWVhcnM6XG4gIC8vIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gIC8vIHwtLS0tLS18LS0tLS18LS0tLS18XG4gIC8vIHwgQUMgMSB8ICAgMSB8ICAgMSB8XG4gIC8vIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gIC8vIHwgQkMgMiB8ICAgMiB8ICAtMSB8XG4gIC8vIEFsc28gYHl5YCBhbHdheXMgcmV0dXJucyB0aGUgbGFzdCB0d28gZGlnaXRzIG9mIGEgeWVhcixcbiAgLy8gd2hpbGUgYHV1YCBwYWRzIHNpbmdsZSBkaWdpdCB5ZWFycyB0byAyIGNoYXJhY3RlcnMgYW5kIHJldHVybnMgb3RoZXIgeWVhcnMgdW5jaGFuZ2VkLlxuICB1OiBmdW5jdGlvbiB1KGRhdGUsIHRva2VuKSB7XG4gICAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh5ZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBRdWFydGVyXG4gIFE6IGZ1bmN0aW9uIFEoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIHF1YXJ0ZXIgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpIC8gMyk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICBjYXNlICdRJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhxdWFydGVyKTtcbiAgICAgIC8vIDAxLCAwMiwgMDMsIDA0XG5cbiAgICAgIGNhc2UgJ1FRJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhxdWFydGVyLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuXG4gICAgICBjYXNlICdRbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB1bml0OiAncXVhcnRlcidcbiAgICAgICAgfSk7XG4gICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuXG4gICAgICBjYXNlICdRUVEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG5cbiAgICAgIGNhc2UgJ1FRUVFRJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuXG4gICAgICBjYXNlICdRUVFRJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIFN0YW5kLWFsb25lIHF1YXJ0ZXJcbiAgcTogZnVuY3Rpb24gcShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgcXVhcnRlciA9IE1hdGguY2VpbCgoZGF0ZS5nZXRVVENNb250aCgpICsgMSkgLyAzKTtcblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgIGNhc2UgJ3EnOlxuICAgICAgICByZXR1cm4gU3RyaW5nKHF1YXJ0ZXIpO1xuICAgICAgLy8gMDEsIDAyLCAwMywgMDRcblxuICAgICAgY2FzZSAncXEnOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHF1YXJ0ZXIsIDIpO1xuICAgICAgLy8gMXN0LCAybmQsIDNyZCwgNHRoXG5cbiAgICAgIGNhc2UgJ3FvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIocXVhcnRlciwge1xuICAgICAgICAgIHVuaXQ6ICdxdWFydGVyJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFExLCBRMiwgUTMsIFE0XG5cbiAgICAgIGNhc2UgJ3FxcSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5xdWFydGVyKHF1YXJ0ZXIsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcblxuICAgICAgY2FzZSAncXFxcXEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG5cbiAgICAgIGNhc2UgJ3FxcXEnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gTW9udGhcbiAgTTogZnVuY3Rpb24gTShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdNJzpcbiAgICAgIGNhc2UgJ01NJzpcbiAgICAgICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5NKGRhdGUsIHRva2VuKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcblxuICAgICAgY2FzZSAnTW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihtb250aCArIDEsIHtcbiAgICAgICAgICB1bml0OiAnbW9udGgnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG5cbiAgICAgIGNhc2UgJ01NTSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEosIEYsIC4uLiwgRFxuXG4gICAgICBjYXNlICdNTU1NTSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlclxuXG4gICAgICBjYXNlICdNTU1NJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gU3RhbmQtYWxvbmUgbW9udGhcbiAgTDogZnVuY3Rpb24gTChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAxLCAyLCAuLi4sIDEyXG4gICAgICBjYXNlICdMJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhtb250aCArIDEpO1xuICAgICAgLy8gMDEsIDAyLCAuLi4sIDEyXG5cbiAgICAgIGNhc2UgJ0xMJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhtb250aCArIDEsIDIpO1xuICAgICAgLy8gMXN0LCAybmQsIC4uLiwgMTJ0aFxuXG4gICAgICBjYXNlICdMbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKG1vbnRoICsgMSwge1xuICAgICAgICAgIHVuaXQ6ICdtb250aCdcbiAgICAgICAgfSk7XG4gICAgICAvLyBKYW4sIEZlYiwgLi4uLCBEZWNcblxuICAgICAgY2FzZSAnTExMJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gSiwgRiwgLi4uLCBEXG5cbiAgICAgIGNhc2UgJ0xMTExMJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG5cbiAgICAgIGNhc2UgJ0xMTEwnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBMb2NhbCB3ZWVrIG9mIHllYXJcbiAgdzogZnVuY3Rpb24gdyhkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgd2VlayA9IGdldFVUQ1dlZWsoZGF0ZSwgb3B0aW9ucyk7XG5cbiAgICBpZiAodG9rZW4gPT09ICd3bycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHdlZWssIHtcbiAgICAgICAgdW5pdDogJ3dlZWsnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHdlZWssIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIElTTyB3ZWVrIG9mIHllYXJcbiAgSTogZnVuY3Rpb24gSShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaXNvV2VlayA9IGdldFVUQ0lTT1dlZWsoZGF0ZSk7XG5cbiAgICBpZiAodG9rZW4gPT09ICdJbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGlzb1dlZWssIHtcbiAgICAgICAgdW5pdDogJ3dlZWsnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGlzb1dlZWssIHRva2VuLmxlbmd0aCk7XG4gIH0sXG4gIC8vIERheSBvZiB0aGUgbW9udGhcbiAgZDogZnVuY3Rpb24gZChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09ICdkbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRhdGUuZ2V0VVRDRGF0ZSgpLCB7XG4gICAgICAgIHVuaXQ6ICdkYXRlJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5kKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gRGF5IG9mIHllYXJcbiAgRDogZnVuY3Rpb24gRChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgZGF5T2ZZZWFyID0gZ2V0VVRDRGF5T2ZZZWFyKGRhdGUpO1xuXG4gICAgaWYgKHRva2VuID09PSAnRG8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXlPZlllYXIsIHtcbiAgICAgICAgdW5pdDogJ2RheU9mWWVhcidcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF5T2ZZZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBEYXkgb2Ygd2Vla1xuICBFOiBmdW5jdGlvbiBFKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBkYXlPZldlZWsgPSBkYXRlLmdldFVUQ0RheSgpO1xuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gVHVlXG4gICAgICBjYXNlICdFJzpcbiAgICAgIGNhc2UgJ0VFJzpcbiAgICAgIGNhc2UgJ0VFRSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVFxuXG4gICAgICBjYXNlICdFRUVFRSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG5cbiAgICAgIGNhc2UgJ0VFRUVFRSc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlc2RheVxuXG4gICAgICBjYXNlICdFRUVFJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBMb2NhbCBkYXkgb2Ygd2Vla1xuICBlOiBmdW5jdGlvbiBlKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBkYXlPZldlZWsgPSBkYXRlLmdldFVUQ0RheSgpO1xuICAgIHZhciBsb2NhbERheU9mV2VlayA9IChkYXlPZldlZWsgLSBvcHRpb25zLndlZWtTdGFydHNPbiArIDgpICUgNyB8fCA3O1xuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gTnVtZXJpY2FsIHZhbHVlIChOdGggZGF5IG9mIHdlZWsgd2l0aCBjdXJyZW50IGxvY2FsZSBvciB3ZWVrU3RhcnRzT24pXG4gICAgICBjYXNlICdlJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhsb2NhbERheU9mV2Vlayk7XG4gICAgICAvLyBQYWRkZWQgbnVtZXJpY2FsIHZhbHVlXG5cbiAgICAgIGNhc2UgJ2VlJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhsb2NhbERheU9mV2VlaywgMik7XG4gICAgICAvLyAxc3QsIDJuZCwgLi4uLCA3dGhcblxuICAgICAgY2FzZSAnZW8nOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihsb2NhbERheU9mV2Vlaywge1xuICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgIH0pO1xuXG4gICAgICBjYXNlICdlZWUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFRcblxuICAgICAgY2FzZSAnZWVlZWUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuXG4gICAgICBjYXNlICdlZWVlZWUnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnc2hvcnQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZXNkYXlcblxuICAgICAgY2FzZSAnZWVlZSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gU3RhbmQtYWxvbmUgbG9jYWwgZGF5IG9mIHdlZWtcbiAgYzogZnVuY3Rpb24gYyhkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgZGF5T2ZXZWVrID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgICB2YXIgbG9jYWxEYXlPZldlZWsgPSAoZGF5T2ZXZWVrIC0gb3B0aW9ucy53ZWVrU3RhcnRzT24gKyA4KSAlIDcgfHwgNztcblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIE51bWVyaWNhbCB2YWx1ZSAoc2FtZSBhcyBpbiBgZWApXG4gICAgICBjYXNlICdjJzpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhsb2NhbERheU9mV2Vlayk7XG4gICAgICAvLyBQYWRkZWQgbnVtZXJpY2FsIHZhbHVlXG5cbiAgICAgIGNhc2UgJ2NjJzpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhsb2NhbERheU9mV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDd0aFxuXG4gICAgICBjYXNlICdjbyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGxvY2FsRGF5T2ZXZWVrLCB7XG4gICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgJ2NjYyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVFxuXG4gICAgICBjYXNlICdjY2NjYyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG5cbiAgICAgIGNhc2UgJ2NjY2NjYyc6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlc2RheVxuXG4gICAgICBjYXNlICdjY2NjJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBJU08gZGF5IG9mIHdlZWtcbiAgaTogZnVuY3Rpb24gaShkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgZGF5T2ZXZWVrID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgICB2YXIgaXNvRGF5T2ZXZWVrID0gZGF5T2ZXZWVrID09PSAwID8gNyA6IGRheU9mV2VlaztcblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDJcbiAgICAgIGNhc2UgJ2knOlxuICAgICAgICByZXR1cm4gU3RyaW5nKGlzb0RheU9mV2Vlayk7XG4gICAgICAvLyAwMlxuXG4gICAgICBjYXNlICdpaSc6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaXNvRGF5T2ZXZWVrLCB0b2tlbi5sZW5ndGgpO1xuICAgICAgLy8gMm5kXG5cbiAgICAgIGNhc2UgJ2lvJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaXNvRGF5T2ZXZWVrLCB7XG4gICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdWVcblxuICAgICAgY2FzZSAnaWlpJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG5cbiAgICAgIGNhc2UgJ2lpaWlpJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVcblxuICAgICAgY2FzZSAnaWlpaWlpJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdWVzZGF5XG5cbiAgICAgIGNhc2UgJ2lpaWknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIEFNIG9yIFBNXG4gIGE6IGZ1bmN0aW9uIGEoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWUgPSBob3VycyAvIDEyID49IDEgPyAncG0nIDogJ2FtJztcblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgJ2EnOlxuICAgICAgY2FzZSAnYWEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcblxuICAgICAgY2FzZSAnYWFhJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgY2FzZSAnYWFhYWEnOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgJ2FhYWEnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIC8vIEFNLCBQTSwgbWlkbmlnaHQsIG5vb25cbiAgYjogZnVuY3Rpb24gYihkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCk7XG4gICAgdmFyIGRheVBlcmlvZEVudW1WYWx1ZTtcblxuICAgIGlmIChob3VycyA9PT0gMTIpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubm9vbjtcbiAgICB9IGVsc2UgaWYgKGhvdXJzID09PSAwKSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLm1pZG5pZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBob3VycyAvIDEyID49IDEgPyAncG0nIDogJ2FtJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdiJzpcbiAgICAgIGNhc2UgJ2JiJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgJ2JiYic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIGNhc2UgJ2JiYmJiJzpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuXG4gICAgICBjYXNlICdiYmJiJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuICAvLyBpbiB0aGUgbW9ybmluZywgaW4gdGhlIGFmdGVybm9vbiwgaW4gdGhlIGV2ZW5pbmcsIGF0IG5pZ2h0XG4gIEI6IGZ1bmN0aW9uIEIoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgdmFyIGhvdXJzID0gZGF0ZS5nZXRVVENIb3VycygpO1xuICAgIHZhciBkYXlQZXJpb2RFbnVtVmFsdWU7XG5cbiAgICBpZiAoaG91cnMgPj0gMTcpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0uZXZlbmluZztcbiAgICB9IGVsc2UgaWYgKGhvdXJzID49IDEyKSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLmFmdGVybm9vbjtcbiAgICB9IGVsc2UgaWYgKGhvdXJzID49IDQpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubW9ybmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5uaWdodDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlICdCJzpcbiAgICAgIGNhc2UgJ0JCJzpcbiAgICAgIGNhc2UgJ0JCQic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuXG4gICAgICBjYXNlICdCQkJCQic6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICB9KTtcblxuICAgICAgY2FzZSAnQkJCQic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5UGVyaW9kKGRheVBlcmlvZEVudW1WYWx1ZSwge1xuICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgLy8gSG91ciBbMS0xMl1cbiAgaDogZnVuY3Rpb24gaChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09ICdobycpIHtcbiAgICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKSAlIDEyO1xuICAgICAgaWYgKGhvdXJzID09PSAwKSBob3VycyA9IDEyO1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaG91cnMsIHtcbiAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLmgoZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBIb3VyIFswLTIzXVxuICBIOiBmdW5jdGlvbiBIKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGlmICh0b2tlbiA9PT0gJ0hvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF0ZS5nZXRVVENIb3VycygpLCB7XG4gICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5IKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gSG91ciBbMC0xMV1cbiAgSzogZnVuY3Rpb24gSyhkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICB2YXIgaG91cnMgPSBkYXRlLmdldFVUQ0hvdXJzKCkgJSAxMjtcblxuICAgIGlmICh0b2tlbiA9PT0gJ0tvJykge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaG91cnMsIHtcbiAgICAgICAgdW5pdDogJ2hvdXInXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGhvdXJzLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuICAvLyBIb3VyIFsxLTI0XVxuICBrOiBmdW5jdGlvbiBrKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIHZhciBob3VycyA9IGRhdGUuZ2V0VVRDSG91cnMoKTtcbiAgICBpZiAoaG91cnMgPT09IDApIGhvdXJzID0gMjQ7XG5cbiAgICBpZiAodG9rZW4gPT09ICdrbycpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7XG4gICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhob3VycywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gTWludXRlXG4gIG06IGZ1bmN0aW9uIG0oZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSAnbW8nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXRlLmdldFVUQ01pbnV0ZXMoKSwge1xuICAgICAgICB1bml0OiAnbWludXRlJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5tKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gU2Vjb25kXG4gIHM6IGZ1bmN0aW9uIHMoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSAnc28nKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXRlLmdldFVUQ1NlY29uZHMoKSwge1xuICAgICAgICB1bml0OiAnc2Vjb25kJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5zKGRhdGUsIHRva2VuKTtcbiAgfSxcbiAgLy8gRnJhY3Rpb24gb2Ygc2Vjb25kXG4gIFM6IGZ1bmN0aW9uIFMoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLlMoZGF0ZSwgdG9rZW4pO1xuICB9LFxuICAvLyBUaW1lem9uZSAoSVNPLTg2MDEuIElmIG9mZnNldCBpcyAwLCBvdXRwdXQgaXMgYWx3YXlzIGAnWidgKVxuICBYOiBmdW5jdGlvbiBYKGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG5cbiAgICBpZiAodGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgIHJldHVybiAnWic7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gSG91cnMgYW5kIG9wdGlvbmFsIG1pbnV0ZXNcbiAgICAgIGNhc2UgJ1gnOlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzKHRpbWV6b25lT2Zmc2V0KTtcbiAgICAgIC8vIEhvdXJzLCBtaW51dGVzIGFuZCBvcHRpb25hbCBzZWNvbmRzIHdpdGhvdXQgYDpgIGRlbGltaXRlclxuICAgICAgLy8gTm90ZTogbmVpdGhlciBJU08tODYwMSBub3IgSmF2YVNjcmlwdCBzdXBwb3J0cyBzZWNvbmRzIGluIHRpbWV6b25lIG9mZnNldHNcbiAgICAgIC8vIHNvIHRoaXMgdG9rZW4gYWx3YXlzIGhhcyB0aGUgc2FtZSBvdXRwdXQgYXMgYFhYYFxuXG4gICAgICBjYXNlICdYWFhYJzpcbiAgICAgIGNhc2UgJ1hYJzpcbiAgICAgICAgLy8gSG91cnMgYW5kIG1pbnV0ZXMgd2l0aG91dCBgOmAgZGVsaW1pdGVyXG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCk7XG4gICAgICAvLyBIb3VycywgbWludXRlcyBhbmQgb3B0aW9uYWwgc2Vjb25kcyB3aXRoIGA6YCBkZWxpbWl0ZXJcbiAgICAgIC8vIE5vdGU6IG5laXRoZXIgSVNPLTg2MDEgbm9yIEphdmFTY3JpcHQgc3VwcG9ydHMgc2Vjb25kcyBpbiB0aW1lem9uZSBvZmZzZXRzXG4gICAgICAvLyBzbyB0aGlzIHRva2VuIGFsd2F5cyBoYXMgdGhlIHNhbWUgb3V0cHV0IGFzIGBYWFhgXG5cbiAgICAgIGNhc2UgJ1hYWFhYJzpcbiAgICAgIGNhc2UgJ1hYWCc6IC8vIEhvdXJzIGFuZCBtaW51dGVzIHdpdGggYDpgIGRlbGltaXRlclxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZm9ybWF0VGltZXpvbmUodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgfVxuICB9LFxuICAvLyBUaW1lem9uZSAoSVNPLTg2MDEuIElmIG9mZnNldCBpcyAwLCBvdXRwdXQgaXMgYCcrMDA6MDAnYCBvciBlcXVpdmFsZW50KVxuICB4OiBmdW5jdGlvbiB4KGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBIb3VycyBhbmQgb3B0aW9uYWwgbWludXRlc1xuICAgICAgY2FzZSAneCc6XG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZVdpdGhPcHRpb25hbE1pbnV0ZXModGltZXpvbmVPZmZzZXQpO1xuICAgICAgLy8gSG91cnMsIG1pbnV0ZXMgYW5kIG9wdGlvbmFsIHNlY29uZHMgd2l0aG91dCBgOmAgZGVsaW1pdGVyXG4gICAgICAvLyBOb3RlOiBuZWl0aGVyIElTTy04NjAxIG5vciBKYXZhU2NyaXB0IHN1cHBvcnRzIHNlY29uZHMgaW4gdGltZXpvbmUgb2Zmc2V0c1xuICAgICAgLy8gc28gdGhpcyB0b2tlbiBhbHdheXMgaGFzIHRoZSBzYW1lIG91dHB1dCBhcyBgeHhgXG5cbiAgICAgIGNhc2UgJ3h4eHgnOlxuICAgICAgY2FzZSAneHgnOlxuICAgICAgICAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRob3V0IGA6YCBkZWxpbWl0ZXJcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0KTtcbiAgICAgIC8vIEhvdXJzLCBtaW51dGVzIGFuZCBvcHRpb25hbCBzZWNvbmRzIHdpdGggYDpgIGRlbGltaXRlclxuICAgICAgLy8gTm90ZTogbmVpdGhlciBJU08tODYwMSBub3IgSmF2YVNjcmlwdCBzdXBwb3J0cyBzZWNvbmRzIGluIHRpbWV6b25lIG9mZnNldHNcbiAgICAgIC8vIHNvIHRoaXMgdG9rZW4gYWx3YXlzIGhhcyB0aGUgc2FtZSBvdXRwdXQgYXMgYHh4eGBcblxuICAgICAgY2FzZSAneHh4eHgnOlxuICAgICAgY2FzZSAneHh4JzogLy8gSG91cnMgYW5kIG1pbnV0ZXMgd2l0aCBgOmAgZGVsaW1pdGVyXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBmb3JtYXRUaW1lem9uZSh0aW1lem9uZU9mZnNldCwgJzonKTtcbiAgICB9XG4gIH0sXG4gIC8vIFRpbWV6b25lIChHTVQpXG4gIE86IGZ1bmN0aW9uIE8oZGF0ZSwgdG9rZW4sIF9sb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIHZhciBvcmlnaW5hbERhdGUgPSBvcHRpb25zLl9vcmlnaW5hbERhdGUgfHwgZGF0ZTtcbiAgICB2YXIgdGltZXpvbmVPZmZzZXQgPSBvcmlnaW5hbERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTtcblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIFNob3J0XG4gICAgICBjYXNlICdPJzpcbiAgICAgIGNhc2UgJ09PJzpcbiAgICAgIGNhc2UgJ09PTyc6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lU2hvcnQodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgICAvLyBMb25nXG5cbiAgICAgIGNhc2UgJ09PT08nOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdHTVQnICsgZm9ybWF0VGltZXpvbmUodGltZXpvbmVPZmZzZXQsICc6Jyk7XG4gICAgfVxuICB9LFxuICAvLyBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0aW9uKVxuICB6OiBmdW5jdGlvbiB6KGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gb3JpZ2luYWxEYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBTaG9ydFxuICAgICAgY2FzZSAneic6XG4gICAgICBjYXNlICd6eic6XG4gICAgICBjYXNlICd6enonOlxuICAgICAgICByZXR1cm4gJ0dNVCcgKyBmb3JtYXRUaW1lem9uZVNob3J0KHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgICAgLy8gTG9uZ1xuXG4gICAgICBjYXNlICd6enp6JzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnR01UJyArIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCAnOicpO1xuICAgIH1cbiAgfSxcbiAgLy8gU2Vjb25kcyB0aW1lc3RhbXBcbiAgdDogZnVuY3Rpb24gdChkYXRlLCB0b2tlbiwgX2xvY2FsaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIG9yaWdpbmFsRGF0ZSA9IG9wdGlvbnMuX29yaWdpbmFsRGF0ZSB8fCBkYXRlO1xuICAgIHZhciB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCkgLyAxMDAwKTtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHRpbWVzdGFtcCwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbiAgLy8gTWlsbGlzZWNvbmRzIHRpbWVzdGFtcFxuICBUOiBmdW5jdGlvbiBUKGRhdGUsIHRva2VuLCBfbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgb3JpZ2luYWxEYXRlID0gb3B0aW9ucy5fb3JpZ2luYWxEYXRlIHx8IGRhdGU7XG4gICAgdmFyIHRpbWVzdGFtcCA9IG9yaWdpbmFsRGF0ZS5nZXRUaW1lKCk7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0aW1lc3RhbXAsIHRva2VuLmxlbmd0aCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGZvcm1hdFRpbWV6b25lU2hvcnQob2Zmc2V0LCBkaXJ0eURlbGltaXRlcikge1xuICB2YXIgc2lnbiA9IG9mZnNldCA+IDAgPyAnLScgOiAnKyc7XG4gIHZhciBhYnNPZmZzZXQgPSBNYXRoLmFicyhvZmZzZXQpO1xuICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKGFic09mZnNldCAvIDYwKTtcbiAgdmFyIG1pbnV0ZXMgPSBhYnNPZmZzZXQgJSA2MDtcblxuICBpZiAobWludXRlcyA9PT0gMCkge1xuICAgIHJldHVybiBzaWduICsgU3RyaW5nKGhvdXJzKTtcbiAgfVxuXG4gIHZhciBkZWxpbWl0ZXIgPSBkaXJ0eURlbGltaXRlciB8fCAnJztcbiAgcmV0dXJuIHNpZ24gKyBTdHJpbmcoaG91cnMpICsgZGVsaW1pdGVyICsgYWRkTGVhZGluZ1plcm9zKG1pbnV0ZXMsIDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRUaW1lem9uZVdpdGhPcHRpb25hbE1pbnV0ZXMob2Zmc2V0LCBkaXJ0eURlbGltaXRlcikge1xuICBpZiAob2Zmc2V0ICUgNjAgPT09IDApIHtcbiAgICB2YXIgc2lnbiA9IG9mZnNldCA+IDAgPyAnLScgOiAnKyc7XG4gICAgcmV0dXJuIHNpZ24gKyBhZGRMZWFkaW5nWmVyb3MoTWF0aC5hYnMob2Zmc2V0KSAvIDYwLCAyKTtcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUaW1lem9uZShvZmZzZXQsIGRpcnR5RGVsaW1pdGVyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VGltZXpvbmUob2Zmc2V0LCBkaXJ0eURlbGltaXRlcikge1xuICB2YXIgZGVsaW1pdGVyID0gZGlydHlEZWxpbWl0ZXIgfHwgJyc7XG4gIHZhciBzaWduID0gb2Zmc2V0ID4gMCA/ICctJyA6ICcrJztcbiAgdmFyIGFic09mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gIHZhciBob3VycyA9IGFkZExlYWRpbmdaZXJvcyhNYXRoLmZsb29yKGFic09mZnNldCAvIDYwKSwgMik7XG4gIHZhciBtaW51dGVzID0gYWRkTGVhZGluZ1plcm9zKGFic09mZnNldCAlIDYwLCAyKTtcbiAgcmV0dXJuIHNpZ24gKyBob3VycyArIGRlbGltaXRlciArIG1pbnV0ZXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdHRlcnM7IiwgInZhciBkYXRlTG9uZ0Zvcm1hdHRlciA9IGZ1bmN0aW9uIGRhdGVMb25nRm9ybWF0dGVyKHBhdHRlcm4sIGZvcm1hdExvbmcpIHtcbiAgc3dpdGNoIChwYXR0ZXJuKSB7XG4gICAgY2FzZSAnUCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy5kYXRlKHtcbiAgICAgICAgd2lkdGg6ICdzaG9ydCdcbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnUFAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7XG4gICAgICAgIHdpZHRoOiAnbWVkaXVtJ1xuICAgICAgfSk7XG5cbiAgICBjYXNlICdQUFAnOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7XG4gICAgICAgIHdpZHRoOiAnbG9uZydcbiAgICAgIH0pO1xuXG4gICAgY2FzZSAnUFBQUCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLmRhdGUoe1xuICAgICAgICB3aWR0aDogJ2Z1bGwnXG4gICAgICB9KTtcbiAgfVxufTtcblxudmFyIHRpbWVMb25nRm9ybWF0dGVyID0gZnVuY3Rpb24gdGltZUxvbmdGb3JtYXR0ZXIocGF0dGVybiwgZm9ybWF0TG9uZykge1xuICBzd2l0Y2ggKHBhdHRlcm4pIHtcbiAgICBjYXNlICdwJzpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLnRpbWUoe1xuICAgICAgICB3aWR0aDogJ3Nob3J0J1xuICAgICAgfSk7XG5cbiAgICBjYXNlICdwcCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHtcbiAgICAgICAgd2lkdGg6ICdtZWRpdW0nXG4gICAgICB9KTtcblxuICAgIGNhc2UgJ3BwcCc6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHtcbiAgICAgICAgd2lkdGg6ICdsb25nJ1xuICAgICAgfSk7XG5cbiAgICBjYXNlICdwcHBwJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7XG4gICAgICAgIHdpZHRoOiAnZnVsbCdcbiAgICAgIH0pO1xuICB9XG59O1xuXG52YXIgZGF0ZVRpbWVMb25nRm9ybWF0dGVyID0gZnVuY3Rpb24gZGF0ZVRpbWVMb25nRm9ybWF0dGVyKHBhdHRlcm4sIGZvcm1hdExvbmcpIHtcbiAgdmFyIG1hdGNoUmVzdWx0ID0gcGF0dGVybi5tYXRjaCgvKFArKShwKyk/LykgfHwgW107XG4gIHZhciBkYXRlUGF0dGVybiA9IG1hdGNoUmVzdWx0WzFdO1xuICB2YXIgdGltZVBhdHRlcm4gPSBtYXRjaFJlc3VsdFsyXTtcblxuICBpZiAoIXRpbWVQYXR0ZXJuKSB7XG4gICAgcmV0dXJuIGRhdGVMb25nRm9ybWF0dGVyKHBhdHRlcm4sIGZvcm1hdExvbmcpO1xuICB9XG5cbiAgdmFyIGRhdGVUaW1lRm9ybWF0O1xuXG4gIHN3aXRjaCAoZGF0ZVBhdHRlcm4pIHtcbiAgICBjYXNlICdQJzpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7XG4gICAgICAgIHdpZHRoOiAnc2hvcnQnXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnUFAnOlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHtcbiAgICAgICAgd2lkdGg6ICdtZWRpdW0nXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnUFBQJzpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7XG4gICAgICAgIHdpZHRoOiAnbG9uZydcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdQUFBQJzpcbiAgICBkZWZhdWx0OlxuICAgICAgZGF0ZVRpbWVGb3JtYXQgPSBmb3JtYXRMb25nLmRhdGVUaW1lKHtcbiAgICAgICAgd2lkdGg6ICdmdWxsJ1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBkYXRlVGltZUZvcm1hdC5yZXBsYWNlKCd7e2RhdGV9fScsIGRhdGVMb25nRm9ybWF0dGVyKGRhdGVQYXR0ZXJuLCBmb3JtYXRMb25nKSkucmVwbGFjZSgne3t0aW1lfX0nLCB0aW1lTG9uZ0Zvcm1hdHRlcih0aW1lUGF0dGVybiwgZm9ybWF0TG9uZykpO1xufTtcblxudmFyIGxvbmdGb3JtYXR0ZXJzID0ge1xuICBwOiB0aW1lTG9uZ0Zvcm1hdHRlcixcbiAgUDogZGF0ZVRpbWVMb25nRm9ybWF0dGVyXG59O1xuZXhwb3J0IGRlZmF1bHQgbG9uZ0Zvcm1hdHRlcnM7IiwgInZhciBwcm90ZWN0ZWREYXlPZlllYXJUb2tlbnMgPSBbJ0QnLCAnREQnXTtcbnZhciBwcm90ZWN0ZWRXZWVrWWVhclRva2VucyA9IFsnWVknLCAnWVlZWSddO1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIHByb3RlY3RlZERheU9mWWVhclRva2Vucy5pbmRleE9mKHRva2VuKSAhPT0gLTE7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNQcm90ZWN0ZWRXZWVrWWVhclRva2VuKHRva2VuKSB7XG4gIHJldHVybiBwcm90ZWN0ZWRXZWVrWWVhclRva2Vucy5pbmRleE9mKHRva2VuKSAhPT0gLTE7XG59XG5leHBvcnQgZnVuY3Rpb24gdGhyb3dQcm90ZWN0ZWRFcnJvcih0b2tlbiwgZm9ybWF0LCBpbnB1dCkge1xuICBpZiAodG9rZW4gPT09ICdZWVlZJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVXNlIGB5eXl5YCBpbnN0ZWFkIG9mIGBZWVlZYCAoaW4gYFwiLmNvbmNhdChmb3JtYXQsIFwiYCkgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdG8gdGhlIGlucHV0IGBcIikuY29uY2F0KGlucHV0LCBcImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFwiKSk7XG4gIH0gZWxzZSBpZiAodG9rZW4gPT09ICdZWScpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlVzZSBgeXlgIGluc3RlYWQgb2YgYFlZYCAoaW4gYFwiLmNvbmNhdChmb3JtYXQsIFwiYCkgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdG8gdGhlIGlucHV0IGBcIikuY29uY2F0KGlucHV0LCBcImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFwiKSk7XG4gIH0gZWxzZSBpZiAodG9rZW4gPT09ICdEJykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCAoaW4gYFwiLmNvbmNhdChmb3JtYXQsIFwiYCkgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdG8gdGhlIGlucHV0IGBcIikuY29uY2F0KGlucHV0LCBcImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFwiKSk7XG4gIH0gZWxzZSBpZiAodG9rZW4gPT09ICdERCcpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIlVzZSBgZGRgIGluc3RlYWQgb2YgYEREYCAoaW4gYFwiLmNvbmNhdChmb3JtYXQsIFwiYCkgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdG8gdGhlIGlucHV0IGBcIikuY29uY2F0KGlucHV0LCBcImA7IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFwiKSk7XG4gIH1cbn0iLCAidmFyIGZvcm1hdERpc3RhbmNlTG9jYWxlID0ge1xuICBsZXNzVGhhblhTZWNvbmRzOiB7XG4gICAgb25lOiAnbGVzcyB0aGFuIGEgc2Vjb25kJyxcbiAgICBvdGhlcjogJ2xlc3MgdGhhbiB7e2NvdW50fX0gc2Vjb25kcydcbiAgfSxcbiAgeFNlY29uZHM6IHtcbiAgICBvbmU6ICcxIHNlY29uZCcsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gc2Vjb25kcydcbiAgfSxcbiAgaGFsZkFNaW51dGU6ICdoYWxmIGEgbWludXRlJyxcbiAgbGVzc1RoYW5YTWludXRlczoge1xuICAgIG9uZTogJ2xlc3MgdGhhbiBhIG1pbnV0ZScsXG4gICAgb3RoZXI6ICdsZXNzIHRoYW4ge3tjb3VudH19IG1pbnV0ZXMnXG4gIH0sXG4gIHhNaW51dGVzOiB7XG4gICAgb25lOiAnMSBtaW51dGUnLFxuICAgIG90aGVyOiAne3tjb3VudH19IG1pbnV0ZXMnXG4gIH0sXG4gIGFib3V0WEhvdXJzOiB7XG4gICAgb25lOiAnYWJvdXQgMSBob3VyJyxcbiAgICBvdGhlcjogJ2Fib3V0IHt7Y291bnR9fSBob3VycydcbiAgfSxcbiAgeEhvdXJzOiB7XG4gICAgb25lOiAnMSBob3VyJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBob3VycydcbiAgfSxcbiAgeERheXM6IHtcbiAgICBvbmU6ICcxIGRheScsXG4gICAgb3RoZXI6ICd7e2NvdW50fX0gZGF5cydcbiAgfSxcbiAgYWJvdXRYV2Vla3M6IHtcbiAgICBvbmU6ICdhYm91dCAxIHdlZWsnLFxuICAgIG90aGVyOiAnYWJvdXQge3tjb3VudH19IHdlZWtzJ1xuICB9LFxuICB4V2Vla3M6IHtcbiAgICBvbmU6ICcxIHdlZWsnLFxuICAgIG90aGVyOiAne3tjb3VudH19IHdlZWtzJ1xuICB9LFxuICBhYm91dFhNb250aHM6IHtcbiAgICBvbmU6ICdhYm91dCAxIG1vbnRoJyxcbiAgICBvdGhlcjogJ2Fib3V0IHt7Y291bnR9fSBtb250aHMnXG4gIH0sXG4gIHhNb250aHM6IHtcbiAgICBvbmU6ICcxIG1vbnRoJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSBtb250aHMnXG4gIH0sXG4gIGFib3V0WFllYXJzOiB7XG4gICAgb25lOiAnYWJvdXQgMSB5ZWFyJyxcbiAgICBvdGhlcjogJ2Fib3V0IHt7Y291bnR9fSB5ZWFycydcbiAgfSxcbiAgeFllYXJzOiB7XG4gICAgb25lOiAnMSB5ZWFyJyxcbiAgICBvdGhlcjogJ3t7Y291bnR9fSB5ZWFycydcbiAgfSxcbiAgb3ZlclhZZWFyczoge1xuICAgIG9uZTogJ292ZXIgMSB5ZWFyJyxcbiAgICBvdGhlcjogJ292ZXIge3tjb3VudH19IHllYXJzJ1xuICB9LFxuICBhbG1vc3RYWWVhcnM6IHtcbiAgICBvbmU6ICdhbG1vc3QgMSB5ZWFyJyxcbiAgICBvdGhlcjogJ2FsbW9zdCB7e2NvdW50fX0geWVhcnMnXG4gIH1cbn07XG5cbnZhciBmb3JtYXREaXN0YW5jZSA9IGZ1bmN0aW9uIGZvcm1hdERpc3RhbmNlKHRva2VuLCBjb3VudCwgb3B0aW9ucykge1xuICB2YXIgcmVzdWx0O1xuICB2YXIgdG9rZW5WYWx1ZSA9IGZvcm1hdERpc3RhbmNlTG9jYWxlW3Rva2VuXTtcblxuICBpZiAodHlwZW9mIHRva2VuVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmVzdWx0ID0gdG9rZW5WYWx1ZTtcbiAgfSBlbHNlIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHJlc3VsdCA9IHRva2VuVmFsdWUub25lO1xuICB9IGVsc2Uge1xuICAgIHJlc3VsdCA9IHRva2VuVmFsdWUub3RoZXIucmVwbGFjZSgne3tjb3VudH19JywgY291bnQudG9TdHJpbmcoKSk7XG4gIH1cblxuICBpZiAob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy5hZGRTdWZmaXgpIHtcbiAgICBpZiAob3B0aW9ucy5jb21wYXJpc29uICYmIG9wdGlvbnMuY29tcGFyaXNvbiA+IDApIHtcbiAgICAgIHJldHVybiAnaW4gJyArIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3VsdCArICcgYWdvJztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0RGlzdGFuY2U7IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkRm9ybWF0TG9uZ0ZuKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgLy8gVE9ETzogUmVtb3ZlIFN0cmluZygpXG4gICAgdmFyIHdpZHRoID0gb3B0aW9ucy53aWR0aCA/IFN0cmluZyhvcHRpb25zLndpZHRoKSA6IGFyZ3MuZGVmYXVsdFdpZHRoO1xuICAgIHZhciBmb3JtYXQgPSBhcmdzLmZvcm1hdHNbd2lkdGhdIHx8IGFyZ3MuZm9ybWF0c1thcmdzLmRlZmF1bHRXaWR0aF07XG4gICAgcmV0dXJuIGZvcm1hdDtcbiAgfTtcbn0iLCAiaW1wb3J0IGJ1aWxkRm9ybWF0TG9uZ0ZuIGZyb20gXCIuLi8uLi8uLi9fbGliL2J1aWxkRm9ybWF0TG9uZ0ZuL2luZGV4LmpzXCI7XG52YXIgZGF0ZUZvcm1hdHMgPSB7XG4gIGZ1bGw6ICdFRUVFLCBNTU1NIGRvLCB5JyxcbiAgbG9uZzogJ01NTU0gZG8sIHknLFxuICBtZWRpdW06ICdNTU0gZCwgeScsXG4gIHNob3J0OiAnTU0vZGQveXl5eSdcbn07XG52YXIgdGltZUZvcm1hdHMgPSB7XG4gIGZ1bGw6ICdoOm1tOnNzIGEgenp6eicsXG4gIGxvbmc6ICdoOm1tOnNzIGEgeicsXG4gIG1lZGl1bTogJ2g6bW06c3MgYScsXG4gIHNob3J0OiAnaDptbSBhJ1xufTtcbnZhciBkYXRlVGltZUZvcm1hdHMgPSB7XG4gIGZ1bGw6IFwie3tkYXRlfX0gJ2F0JyB7e3RpbWV9fVwiLFxuICBsb25nOiBcInt7ZGF0ZX19ICdhdCcge3t0aW1lfX1cIixcbiAgbWVkaXVtOiAne3tkYXRlfX0sIHt7dGltZX19JyxcbiAgc2hvcnQ6ICd7e2RhdGV9fSwge3t0aW1lfX0nXG59O1xudmFyIGZvcm1hdExvbmcgPSB7XG4gIGRhdGU6IGJ1aWxkRm9ybWF0TG9uZ0ZuKHtcbiAgICBmb3JtYXRzOiBkYXRlRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6ICdmdWxsJ1xuICB9KSxcbiAgdGltZTogYnVpbGRGb3JtYXRMb25nRm4oe1xuICAgIGZvcm1hdHM6IHRpbWVGb3JtYXRzLFxuICAgIGRlZmF1bHRXaWR0aDogJ2Z1bGwnXG4gIH0pLFxuICBkYXRlVGltZTogYnVpbGRGb3JtYXRMb25nRm4oe1xuICAgIGZvcm1hdHM6IGRhdGVUaW1lRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6ICdmdWxsJ1xuICB9KVxufTtcbmV4cG9ydCBkZWZhdWx0IGZvcm1hdExvbmc7IiwgInZhciBmb3JtYXRSZWxhdGl2ZUxvY2FsZSA9IHtcbiAgbGFzdFdlZWs6IFwiJ2xhc3QnIGVlZWUgJ2F0JyBwXCIsXG4gIHllc3RlcmRheTogXCIneWVzdGVyZGF5IGF0JyBwXCIsXG4gIHRvZGF5OiBcIid0b2RheSBhdCcgcFwiLFxuICB0b21vcnJvdzogXCIndG9tb3Jyb3cgYXQnIHBcIixcbiAgbmV4dFdlZWs6IFwiZWVlZSAnYXQnIHBcIixcbiAgb3RoZXI6ICdQJ1xufTtcblxudmFyIGZvcm1hdFJlbGF0aXZlID0gZnVuY3Rpb24gZm9ybWF0UmVsYXRpdmUodG9rZW4sIF9kYXRlLCBfYmFzZURhdGUsIF9vcHRpb25zKSB7XG4gIHJldHVybiBmb3JtYXRSZWxhdGl2ZUxvY2FsZVt0b2tlbl07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmb3JtYXRSZWxhdGl2ZTsiLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYnVpbGRMb2NhbGl6ZUZuKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChkaXJ0eUluZGV4LCBvcHRpb25zKSB7XG4gICAgdmFyIGNvbnRleHQgPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLmNvbnRleHQgPyBTdHJpbmcob3B0aW9ucy5jb250ZXh0KSA6ICdzdGFuZGFsb25lJztcbiAgICB2YXIgdmFsdWVzQXJyYXk7XG5cbiAgICBpZiAoY29udGV4dCA9PT0gJ2Zvcm1hdHRpbmcnICYmIGFyZ3MuZm9ybWF0dGluZ1ZhbHVlcykge1xuICAgICAgdmFyIGRlZmF1bHRXaWR0aCA9IGFyZ3MuZGVmYXVsdEZvcm1hdHRpbmdXaWR0aCB8fCBhcmdzLmRlZmF1bHRXaWR0aDtcbiAgICAgIHZhciB3aWR0aCA9IG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwICYmIG9wdGlvbnMud2lkdGggPyBTdHJpbmcob3B0aW9ucy53aWR0aCkgOiBkZWZhdWx0V2lkdGg7XG4gICAgICB2YWx1ZXNBcnJheSA9IGFyZ3MuZm9ybWF0dGluZ1ZhbHVlc1t3aWR0aF0gfHwgYXJncy5mb3JtYXR0aW5nVmFsdWVzW2RlZmF1bHRXaWR0aF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfZGVmYXVsdFdpZHRoID0gYXJncy5kZWZhdWx0V2lkdGg7XG5cbiAgICAgIHZhciBfd2lkdGggPSBvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLndpZHRoID8gU3RyaW5nKG9wdGlvbnMud2lkdGgpIDogYXJncy5kZWZhdWx0V2lkdGg7XG5cbiAgICAgIHZhbHVlc0FycmF5ID0gYXJncy52YWx1ZXNbX3dpZHRoXSB8fCBhcmdzLnZhbHVlc1tfZGVmYXVsdFdpZHRoXTtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBhcmdzLmFyZ3VtZW50Q2FsbGJhY2sgPyBhcmdzLmFyZ3VtZW50Q2FsbGJhY2soZGlydHlJbmRleCkgOiBkaXJ0eUluZGV4OyAvLyBAdHMtaWdub3JlOiBGb3Igc29tZSByZWFzb24gVHlwZVNjcmlwdCBqdXN0IGRvbid0IHdhbnQgdG8gbWF0Y2ggaXQsIG5vIG1hdHRlciBob3cgaGFyZCB3ZSB0cnkuIEkgY2hhbGxlbmdlIHlvdSB0byB0cnkgdG8gcmVtb3ZlIGl0IVxuXG4gICAgcmV0dXJuIHZhbHVlc0FycmF5W2luZGV4XTtcbiAgfTtcbn0iLCAiaW1wb3J0IGJ1aWxkTG9jYWxpemVGbiBmcm9tIFwiLi4vLi4vLi4vX2xpYi9idWlsZExvY2FsaXplRm4vaW5kZXguanNcIjtcbnZhciBlcmFWYWx1ZXMgPSB7XG4gIG5hcnJvdzogWydCJywgJ0EnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnQkMnLCAnQUQnXSxcbiAgd2lkZTogWydCZWZvcmUgQ2hyaXN0JywgJ0Fubm8gRG9taW5pJ11cbn07XG52YXIgcXVhcnRlclZhbHVlcyA9IHtcbiAgbmFycm93OiBbJzEnLCAnMicsICczJywgJzQnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnUTEnLCAnUTInLCAnUTMnLCAnUTQnXSxcbiAgd2lkZTogWycxc3QgcXVhcnRlcicsICcybmQgcXVhcnRlcicsICczcmQgcXVhcnRlcicsICc0dGggcXVhcnRlciddXG59OyAvLyBOb3RlOiBpbiBFbmdsaXNoLCB0aGUgbmFtZXMgb2YgZGF5cyBvZiB0aGUgd2VlayBhbmQgbW9udGhzIGFyZSBjYXBpdGFsaXplZC5cbi8vIElmIHlvdSBhcmUgbWFraW5nIGEgbmV3IGxvY2FsZSBiYXNlZCBvbiB0aGlzIG9uZSwgY2hlY2sgaWYgdGhlIHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIGxhbmd1YWdlIHlvdSdyZSB3b3JraW5nIG9uLlxuLy8gR2VuZXJhbGx5LCBmb3JtYXR0ZWQgZGF0ZXMgc2hvdWxkIGxvb2sgbGlrZSB0aGV5IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgc2VudGVuY2UsXG4vLyBlLmcuIGluIFNwYW5pc2ggbGFuZ3VhZ2UgdGhlIHdlZWtkYXlzIGFuZCBtb250aHMgc2hvdWxkIGJlIGluIHRoZSBsb3dlcmNhc2UuXG5cbnZhciBtb250aFZhbHVlcyA9IHtcbiAgbmFycm93OiBbJ0onLCAnRicsICdNJywgJ0EnLCAnTScsICdKJywgJ0onLCAnQScsICdTJywgJ08nLCAnTicsICdEJ10sXG4gIGFiYnJldmlhdGVkOiBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10sXG4gIHdpZGU6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddXG59O1xudmFyIGRheVZhbHVlcyA9IHtcbiAgbmFycm93OiBbJ1MnLCAnTScsICdUJywgJ1cnLCAnVCcsICdGJywgJ1MnXSxcbiAgc2hvcnQ6IFsnU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXSxcbiAgYWJicmV2aWF0ZWQ6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sXG4gIHdpZGU6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXVxufTtcbnZhciBkYXlQZXJpb2RWYWx1ZXMgPSB7XG4gIG5hcnJvdzoge1xuICAgIGFtOiAnYScsXG4gICAgcG06ICdwJyxcbiAgICBtaWRuaWdodDogJ21pJyxcbiAgICBub29uOiAnbicsXG4gICAgbW9ybmluZzogJ21vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2FmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2V2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnbmlnaHQnXG4gIH0sXG4gIGFiYnJldmlhdGVkOiB7XG4gICAgYW06ICdBTScsXG4gICAgcG06ICdQTScsXG4gICAgbWlkbmlnaHQ6ICdtaWRuaWdodCcsXG4gICAgbm9vbjogJ25vb24nLFxuICAgIG1vcm5pbmc6ICdtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdldmVuaW5nJyxcbiAgICBuaWdodDogJ25pZ2h0J1xuICB9LFxuICB3aWRlOiB7XG4gICAgYW06ICdhLm0uJyxcbiAgICBwbTogJ3AubS4nLFxuICAgIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICAgIG5vb246ICdub29uJyxcbiAgICBtb3JuaW5nOiAnbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnZXZlbmluZycsXG4gICAgbmlnaHQ6ICduaWdodCdcbiAgfVxufTtcbnZhciBmb3JtYXR0aW5nRGF5UGVyaW9kVmFsdWVzID0ge1xuICBuYXJyb3c6IHtcbiAgICBhbTogJ2EnLFxuICAgIHBtOiAncCcsXG4gICAgbWlkbmlnaHQ6ICdtaScsXG4gICAgbm9vbjogJ24nLFxuICAgIG1vcm5pbmc6ICdpbiB0aGUgbW9ybmluZycsXG4gICAgYWZ0ZXJub29uOiAnaW4gdGhlIGFmdGVybm9vbicsXG4gICAgZXZlbmluZzogJ2luIHRoZSBldmVuaW5nJyxcbiAgICBuaWdodDogJ2F0IG5pZ2h0J1xuICB9LFxuICBhYmJyZXZpYXRlZDoge1xuICAgIGFtOiAnQU0nLFxuICAgIHBtOiAnUE0nLFxuICAgIG1pZG5pZ2h0OiAnbWlkbmlnaHQnLFxuICAgIG5vb246ICdub29uJyxcbiAgICBtb3JuaW5nOiAnaW4gdGhlIG1vcm5pbmcnLFxuICAgIGFmdGVybm9vbjogJ2luIHRoZSBhZnRlcm5vb24nLFxuICAgIGV2ZW5pbmc6ICdpbiB0aGUgZXZlbmluZycsXG4gICAgbmlnaHQ6ICdhdCBuaWdodCdcbiAgfSxcbiAgd2lkZToge1xuICAgIGFtOiAnYS5tLicsXG4gICAgcG06ICdwLm0uJyxcbiAgICBtaWRuaWdodDogJ21pZG5pZ2h0JyxcbiAgICBub29uOiAnbm9vbicsXG4gICAgbW9ybmluZzogJ2luIHRoZSBtb3JuaW5nJyxcbiAgICBhZnRlcm5vb246ICdpbiB0aGUgYWZ0ZXJub29uJyxcbiAgICBldmVuaW5nOiAnaW4gdGhlIGV2ZW5pbmcnLFxuICAgIG5pZ2h0OiAnYXQgbmlnaHQnXG4gIH1cbn07XG5cbnZhciBvcmRpbmFsTnVtYmVyID0gZnVuY3Rpb24gb3JkaW5hbE51bWJlcihkaXJ0eU51bWJlciwgX29wdGlvbnMpIHtcbiAgdmFyIG51bWJlciA9IE51bWJlcihkaXJ0eU51bWJlcik7IC8vIElmIG9yZGluYWwgbnVtYmVycyBkZXBlbmQgb24gY29udGV4dCwgZm9yIGV4YW1wbGUsXG4gIC8vIGlmIHRoZXkgYXJlIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IGdyYW1tYXRpY2FsIGdlbmRlcnMsXG4gIC8vIHVzZSBgb3B0aW9ucy51bml0YC5cbiAgLy9cbiAgLy8gYHVuaXRgIGNhbiBiZSAneWVhcicsICdxdWFydGVyJywgJ21vbnRoJywgJ3dlZWsnLCAnZGF0ZScsICdkYXlPZlllYXInLFxuICAvLyAnZGF5JywgJ2hvdXInLCAnbWludXRlJywgJ3NlY29uZCcuXG5cbiAgdmFyIHJlbTEwMCA9IG51bWJlciAlIDEwMDtcblxuICBpZiAocmVtMTAwID4gMjAgfHwgcmVtMTAwIDwgMTApIHtcbiAgICBzd2l0Y2ggKHJlbTEwMCAlIDEwKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnc3QnO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAnbmQnO1xuXG4gICAgICBjYXNlIDM6XG4gICAgICAgIHJldHVybiBudW1iZXIgKyAncmQnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudW1iZXIgKyAndGgnO1xufTtcblxudmFyIGxvY2FsaXplID0ge1xuICBvcmRpbmFsTnVtYmVyOiBvcmRpbmFsTnVtYmVyLFxuICBlcmE6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBlcmFWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZSdcbiAgfSksXG4gIHF1YXJ0ZXI6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBxdWFydGVyVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnLFxuICAgIGFyZ3VtZW50Q2FsbGJhY2s6IGZ1bmN0aW9uIGFyZ3VtZW50Q2FsbGJhY2socXVhcnRlcikge1xuICAgICAgcmV0dXJuIHF1YXJ0ZXIgLSAxO1xuICAgIH1cbiAgfSksXG4gIG1vbnRoOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogbW9udGhWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiAnd2lkZSdcbiAgfSksXG4gIGRheTogYnVpbGRMb2NhbGl6ZUZuKHtcbiAgICB2YWx1ZXM6IGRheVZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6ICd3aWRlJ1xuICB9KSxcbiAgZGF5UGVyaW9kOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogZGF5UGVyaW9kVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogJ3dpZGUnLFxuICAgIGZvcm1hdHRpbmdWYWx1ZXM6IGZvcm1hdHRpbmdEYXlQZXJpb2RWYWx1ZXMsXG4gICAgZGVmYXVsdEZvcm1hdHRpbmdXaWR0aDogJ3dpZGUnXG4gIH0pXG59O1xuZXhwb3J0IGRlZmF1bHQgbG9jYWxpemU7IiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkTWF0Y2hGbihhcmdzKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuICAgIHZhciB3aWR0aCA9IG9wdGlvbnMud2lkdGg7XG4gICAgdmFyIG1hdGNoUGF0dGVybiA9IHdpZHRoICYmIGFyZ3MubWF0Y2hQYXR0ZXJuc1t3aWR0aF0gfHwgYXJncy5tYXRjaFBhdHRlcm5zW2FyZ3MuZGVmYXVsdE1hdGNoV2lkdGhdO1xuICAgIHZhciBtYXRjaFJlc3VsdCA9IHN0cmluZy5tYXRjaChtYXRjaFBhdHRlcm4pO1xuXG4gICAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIG1hdGNoZWRTdHJpbmcgPSBtYXRjaFJlc3VsdFswXTtcbiAgICB2YXIgcGFyc2VQYXR0ZXJucyA9IHdpZHRoICYmIGFyZ3MucGFyc2VQYXR0ZXJuc1t3aWR0aF0gfHwgYXJncy5wYXJzZVBhdHRlcm5zW2FyZ3MuZGVmYXVsdFBhcnNlV2lkdGhdO1xuICAgIHZhciBrZXkgPSBBcnJheS5pc0FycmF5KHBhcnNlUGF0dGVybnMpID8gZmluZEluZGV4KHBhcnNlUGF0dGVybnMsIGZ1bmN0aW9uIChwYXR0ZXJuKSB7XG4gICAgICByZXR1cm4gcGF0dGVybi50ZXN0KG1hdGNoZWRTdHJpbmcpO1xuICAgIH0pIDogZmluZEtleShwYXJzZVBhdHRlcm5zLCBmdW5jdGlvbiAocGF0dGVybikge1xuICAgICAgcmV0dXJuIHBhdHRlcm4udGVzdChtYXRjaGVkU3RyaW5nKTtcbiAgICB9KTtcbiAgICB2YXIgdmFsdWU7XG4gICAgdmFsdWUgPSBhcmdzLnZhbHVlQ2FsbGJhY2sgPyBhcmdzLnZhbHVlQ2FsbGJhY2soa2V5KSA6IGtleTtcbiAgICB2YWx1ZSA9IG9wdGlvbnMudmFsdWVDYWxsYmFjayA/IG9wdGlvbnMudmFsdWVDYWxsYmFjayh2YWx1ZSkgOiB2YWx1ZTtcbiAgICB2YXIgcmVzdCA9IHN0cmluZy5zbGljZShtYXRjaGVkU3RyaW5nLmxlbmd0aCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHJlc3Q6IHJlc3RcbiAgICB9O1xuICB9O1xufVxuXG5mdW5jdGlvbiBmaW5kS2V5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KGtleSkgJiYgcHJlZGljYXRlKG9iamVjdFtrZXldKSkge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBmaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSkge1xuICBmb3IgKHZhciBrZXkgPSAwOyBrZXkgPCBhcnJheS5sZW5ndGg7IGtleSsrKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtrZXldKSkge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufSIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZE1hdGNoUGF0dGVybkZuKGFyZ3MpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gICAgdmFyIG1hdGNoUmVzdWx0ID0gc3RyaW5nLm1hdGNoKGFyZ3MubWF0Y2hQYXR0ZXJuKTtcbiAgICBpZiAoIW1hdGNoUmVzdWx0KSByZXR1cm4gbnVsbDtcbiAgICB2YXIgbWF0Y2hlZFN0cmluZyA9IG1hdGNoUmVzdWx0WzBdO1xuICAgIHZhciBwYXJzZVJlc3VsdCA9IHN0cmluZy5tYXRjaChhcmdzLnBhcnNlUGF0dGVybik7XG4gICAgaWYgKCFwYXJzZVJlc3VsdCkgcmV0dXJuIG51bGw7XG4gICAgdmFyIHZhbHVlID0gYXJncy52YWx1ZUNhbGxiYWNrID8gYXJncy52YWx1ZUNhbGxiYWNrKHBhcnNlUmVzdWx0WzBdKSA6IHBhcnNlUmVzdWx0WzBdO1xuICAgIHZhbHVlID0gb3B0aW9ucy52YWx1ZUNhbGxiYWNrID8gb3B0aW9ucy52YWx1ZUNhbGxiYWNrKHZhbHVlKSA6IHZhbHVlO1xuICAgIHZhciByZXN0ID0gc3RyaW5nLnNsaWNlKG1hdGNoZWRTdHJpbmcubGVuZ3RoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgcmVzdDogcmVzdFxuICAgIH07XG4gIH07XG59IiwgImltcG9ydCBidWlsZE1hdGNoRm4gZnJvbSBcIi4uLy4uLy4uL19saWIvYnVpbGRNYXRjaEZuL2luZGV4LmpzXCI7XG5pbXBvcnQgYnVpbGRNYXRjaFBhdHRlcm5GbiBmcm9tIFwiLi4vLi4vLi4vX2xpYi9idWlsZE1hdGNoUGF0dGVybkZuL2luZGV4LmpzXCI7XG52YXIgbWF0Y2hPcmRpbmFsTnVtYmVyUGF0dGVybiA9IC9eKFxcZCspKHRofHN0fG5kfHJkKT8vaTtcbnZhciBwYXJzZU9yZGluYWxOdW1iZXJQYXR0ZXJuID0gL1xcZCsvaTtcbnZhciBtYXRjaEVyYVBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eKGJ8YSkvaSxcbiAgYWJicmV2aWF0ZWQ6IC9eKGJcXC4/XFxzP2NcXC4/fGJcXC4/XFxzP2NcXC4/XFxzP2VcXC4/fGFcXC4/XFxzP2RcXC4/fGNcXC4/XFxzP2VcXC4/KS9pLFxuICB3aWRlOiAvXihiZWZvcmUgY2hyaXN0fGJlZm9yZSBjb21tb24gZXJhfGFubm8gZG9taW5pfGNvbW1vbiBlcmEpL2lcbn07XG52YXIgcGFyc2VFcmFQYXR0ZXJucyA9IHtcbiAgYW55OiBbL15iL2ksIC9eKGF8YykvaV1cbn07XG52YXIgbWF0Y2hRdWFydGVyUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL15bMTIzNF0vaSxcbiAgYWJicmV2aWF0ZWQ6IC9ecVsxMjM0XS9pLFxuICB3aWRlOiAvXlsxMjM0XSh0aHxzdHxuZHxyZCk/IHF1YXJ0ZXIvaVxufTtcbnZhciBwYXJzZVF1YXJ0ZXJQYXR0ZXJucyA9IHtcbiAgYW55OiBbLzEvaSwgLzIvaSwgLzMvaSwgLzQvaV1cbn07XG52YXIgbWF0Y2hNb250aFBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eW2pmbWFzb25kXS9pLFxuICBhYmJyZXZpYXRlZDogL14oamFufGZlYnxtYXJ8YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMpL2ksXG4gIHdpZGU6IC9eKGphbnVhcnl8ZmVicnVhcnl8bWFyY2h8YXByaWx8bWF5fGp1bmV8anVseXxhdWd1c3R8c2VwdGVtYmVyfG9jdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2lcbn07XG52YXIgcGFyc2VNb250aFBhdHRlcm5zID0ge1xuICBuYXJyb3c6IFsvXmovaSwgL15mL2ksIC9ebS9pLCAvXmEvaSwgL15tL2ksIC9eai9pLCAvXmovaSwgL15hL2ksIC9ecy9pLCAvXm8vaSwgL15uL2ksIC9eZC9pXSxcbiAgYW55OiBbL15qYS9pLCAvXmYvaSwgL15tYXIvaSwgL15hcC9pLCAvXm1heS9pLCAvXmp1bi9pLCAvXmp1bC9pLCAvXmF1L2ksIC9ecy9pLCAvXm8vaSwgL15uL2ksIC9eZC9pXVxufTtcbnZhciBtYXRjaERheVBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eW3NtdHdmXS9pLFxuICBzaG9ydDogL14oc3V8bW98dHV8d2V8dGh8ZnJ8c2EpL2ksXG4gIGFiYnJldmlhdGVkOiAvXihzdW58bW9ufHR1ZXx3ZWR8dGh1fGZyaXxzYXQpL2ksXG4gIHdpZGU6IC9eKHN1bmRheXxtb25kYXl8dHVlc2RheXx3ZWRuZXNkYXl8dGh1cnNkYXl8ZnJpZGF5fHNhdHVyZGF5KS9pXG59O1xudmFyIHBhcnNlRGF5UGF0dGVybnMgPSB7XG4gIG5hcnJvdzogWy9ecy9pLCAvXm0vaSwgL150L2ksIC9edy9pLCAvXnQvaSwgL15mL2ksIC9ecy9pXSxcbiAgYW55OiBbL15zdS9pLCAvXm0vaSwgL150dS9pLCAvXncvaSwgL150aC9pLCAvXmYvaSwgL15zYS9pXVxufTtcbnZhciBtYXRjaERheVBlcmlvZFBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eKGF8cHxtaXxufChpbiB0aGV8YXQpIChtb3JuaW5nfGFmdGVybm9vbnxldmVuaW5nfG5pZ2h0KSkvaSxcbiAgYW55OiAvXihbYXBdXFwuP1xccz9tXFwuP3xtaWRuaWdodHxub29ufChpbiB0aGV8YXQpIChtb3JuaW5nfGFmdGVybm9vbnxldmVuaW5nfG5pZ2h0KSkvaVxufTtcbnZhciBwYXJzZURheVBlcmlvZFBhdHRlcm5zID0ge1xuICBhbnk6IHtcbiAgICBhbTogL15hL2ksXG4gICAgcG06IC9ecC9pLFxuICAgIG1pZG5pZ2h0OiAvXm1pL2ksXG4gICAgbm9vbjogL15uby9pLFxuICAgIG1vcm5pbmc6IC9tb3JuaW5nL2ksXG4gICAgYWZ0ZXJub29uOiAvYWZ0ZXJub29uL2ksXG4gICAgZXZlbmluZzogL2V2ZW5pbmcvaSxcbiAgICBuaWdodDogL25pZ2h0L2lcbiAgfVxufTtcbnZhciBtYXRjaCA9IHtcbiAgb3JkaW5hbE51bWJlcjogYnVpbGRNYXRjaFBhdHRlcm5Gbih7XG4gICAgbWF0Y2hQYXR0ZXJuOiBtYXRjaE9yZGluYWxOdW1iZXJQYXR0ZXJuLFxuICAgIHBhcnNlUGF0dGVybjogcGFyc2VPcmRpbmFsTnVtYmVyUGF0dGVybixcbiAgICB2YWx1ZUNhbGxiYWNrOiBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICB9XG4gIH0pLFxuICBlcmE6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hFcmFQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogJ3dpZGUnLFxuICAgIHBhcnNlUGF0dGVybnM6IHBhcnNlRXJhUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknXG4gIH0pLFxuICBxdWFydGVyOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoUXVhcnRlclBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnd2lkZScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VRdWFydGVyUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknLFxuICAgIHZhbHVlQ2FsbGJhY2s6IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2soaW5kZXgpIHtcbiAgICAgIHJldHVybiBpbmRleCArIDE7XG4gICAgfVxuICB9KSxcbiAgbW9udGg6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hNb250aFBhdHRlcm5zLFxuICAgIGRlZmF1bHRNYXRjaFdpZHRoOiAnd2lkZScsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VNb250aFBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55J1xuICB9KSxcbiAgZGF5OiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoRGF5UGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICd3aWRlJyxcbiAgICBwYXJzZVBhdHRlcm5zOiBwYXJzZURheVBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiAnYW55J1xuICB9KSxcbiAgZGF5UGVyaW9kOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoRGF5UGVyaW9kUGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6ICdhbnknLFxuICAgIHBhcnNlUGF0dGVybnM6IHBhcnNlRGF5UGVyaW9kUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6ICdhbnknXG4gIH0pXG59O1xuZXhwb3J0IGRlZmF1bHQgbWF0Y2g7IiwgImltcG9ydCBmb3JtYXREaXN0YW5jZSBmcm9tIFwiLi9fbGliL2Zvcm1hdERpc3RhbmNlL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0TG9uZyBmcm9tIFwiLi9fbGliL2Zvcm1hdExvbmcvaW5kZXguanNcIjtcbmltcG9ydCBmb3JtYXRSZWxhdGl2ZSBmcm9tIFwiLi9fbGliL2Zvcm1hdFJlbGF0aXZlL2luZGV4LmpzXCI7XG5pbXBvcnQgbG9jYWxpemUgZnJvbSBcIi4vX2xpYi9sb2NhbGl6ZS9pbmRleC5qc1wiO1xuaW1wb3J0IG1hdGNoIGZyb20gXCIuL19saWIvbWF0Y2gvaW5kZXguanNcIjtcblxuLyoqXG4gKiBAdHlwZSB7TG9jYWxlfVxuICogQGNhdGVnb3J5IExvY2FsZXNcbiAqIEBzdW1tYXJ5IEVuZ2xpc2ggbG9jYWxlIChVbml0ZWQgU3RhdGVzKS5cbiAqIEBsYW5ndWFnZSBFbmdsaXNoXG4gKiBAaXNvLTYzOS0yIGVuZ1xuICogQGF1dGhvciBTYXNoYSBLb3NzIFtAa29zc25vY29ycF17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2tvc3Nub2NvcnB9XG4gKiBAYXV0aG9yIExlc2hhIEtvc3MgW0BsZXNoYWtvc3Nde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sZXNoYWtvc3N9XG4gKi9cbnZhciBsb2NhbGUgPSB7XG4gIGNvZGU6ICdlbi1VUycsXG4gIGZvcm1hdERpc3RhbmNlOiBmb3JtYXREaXN0YW5jZSxcbiAgZm9ybWF0TG9uZzogZm9ybWF0TG9uZyxcbiAgZm9ybWF0UmVsYXRpdmU6IGZvcm1hdFJlbGF0aXZlLFxuICBsb2NhbGl6ZTogbG9jYWxpemUsXG4gIG1hdGNoOiBtYXRjaCxcbiAgb3B0aW9uczoge1xuICAgIHdlZWtTdGFydHNPbjogMFxuICAgIC8qIFN1bmRheSAqL1xuICAgICxcbiAgICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDFcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGxvY2FsZTsiLCAiaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uLy4uL2xvY2FsZS9lbi1VUy9pbmRleC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdExvY2FsZTsiLCAiaW1wb3J0IGlzVmFsaWQgZnJvbSBcIi4uL2lzVmFsaWQvaW5kZXguanNcIjtcbmltcG9ydCBzdWJNaWxsaXNlY29uZHMgZnJvbSBcIi4uL3N1Yk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZm9ybWF0dGVycyBmcm9tIFwiLi4vX2xpYi9mb3JtYXQvZm9ybWF0dGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IGxvbmdGb3JtYXR0ZXJzIGZyb20gXCIuLi9fbGliL2Zvcm1hdC9sb25nRm9ybWF0dGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgZnJvbSBcIi4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbiwgaXNQcm90ZWN0ZWRXZWVrWWVhclRva2VuLCB0aHJvd1Byb3RlY3RlZEVycm9yIH0gZnJvbSBcIi4uL19saWIvcHJvdGVjdGVkVG9rZW5zL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi9fbGliL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vX2xpYi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL19saWIvZGVmYXVsdE9wdGlvbnMvaW5kZXguanNcIjtcbmltcG9ydCBkZWZhdWx0TG9jYWxlIGZyb20gXCIuLi9fbGliL2RlZmF1bHRMb2NhbGUvaW5kZXguanNcIjsgLy8gVGhpcyBSZWdFeHAgY29uc2lzdHMgb2YgdGhyZWUgcGFydHMgc2VwYXJhdGVkIGJ5IGB8YDpcbi8vIC0gW3lZUXFNTHdJZERlY2loSEtrbXNdbyBtYXRjaGVzIGFueSBhdmFpbGFibGUgb3JkaW5hbCBudW1iZXIgdG9rZW5cbi8vICAgKG9uZSBvZiB0aGUgY2VydGFpbiBsZXR0ZXJzIGZvbGxvd2VkIGJ5IGBvYClcbi8vIC0gKFxcdylcXDEqIG1hdGNoZXMgYW55IHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBsZXR0ZXJcbi8vIC0gJycgbWF0Y2hlcyB0d28gcXVvdGUgY2hhcmFjdGVycyBpbiBhIHJvd1xuLy8gLSAnKCcnfFteJ10pKygnfCQpIG1hdGNoZXMgYW55dGhpbmcgc3Vycm91bmRlZCBieSB0d28gcXVvdGUgY2hhcmFjdGVycyAoJyksXG4vLyAgIGV4Y2VwdCBhIHNpbmdsZSBxdW90ZSBzeW1ib2wsIHdoaWNoIGVuZHMgdGhlIHNlcXVlbmNlLlxuLy8gICBUd28gcXVvdGUgY2hhcmFjdGVycyBkbyBub3QgZW5kIHRoZSBzZXF1ZW5jZS5cbi8vICAgSWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc2luZ2xlIHF1b3RlXG4vLyAgIHRoZW4gdGhlIHNlcXVlbmNlIHdpbGwgY29udGludWUgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuLy8gLSAuIG1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgdW5tYXRjaGVkIGJ5IHByZXZpb3VzIHBhcnRzIG9mIHRoZSBSZWdFeHBzXG5cbnZhciBmb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gL1t5WVFxTUx3SWREZWNpaEhLa21zXW98KFxcdylcXDEqfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nOyAvLyBUaGlzIFJlZ0V4cCBjYXRjaGVzIHN5bWJvbHMgZXNjYXBlZCBieSBxdW90ZXMsIGFuZCBhbHNvXG4vLyBzZXF1ZW5jZXMgb2Ygc3ltYm9scyBQLCBwLCBhbmQgdGhlIGNvbWJpbmF0aW9ucyBsaWtlIGBQUFBQUFBQcHBwcHBgXG5cbnZhciBsb25nRm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCA9IC9QK3ArfFArfHArfCcnfCcoJyd8W14nXSkrKCd8JCl8Li9nO1xudmFyIGVzY2FwZWRTdHJpbmdSZWdFeHAgPSAvXicoW15dKj8pJz8kLztcbnZhciBkb3VibGVRdW90ZVJlZ0V4cCA9IC8nJy9nO1xudmFyIHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwID0gL1thLXpBLVpdLztcbi8qKlxuICogQG5hbWUgZm9ybWF0XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nIGluIHRoZSBnaXZlbiBmb3JtYXQuIFRoZSByZXN1bHQgbWF5IHZhcnkgYnkgbG9jYWxlLlxuICpcbiAqID4gXHUyNkEwXHVGRTBGIFBsZWFzZSBub3RlIHRoYXQgdGhlIGBmb3JtYXRgIHRva2VucyBkaWZmZXIgZnJvbSBNb21lbnQuanMgYW5kIG90aGVyIGxpYnJhcmllcy5cbiAqID4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogVGhlIGNoYXJhY3RlcnMgd3JhcHBlZCBiZXR3ZWVuIHR3byBzaW5nbGUgcXVvdGVzIGNoYXJhY3RlcnMgKCcpIGFyZSBlc2NhcGVkLlxuICogVHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3csIHdoZXRoZXIgaW5zaWRlIG9yIG91dHNpZGUgYSBxdW90ZWQgc2VxdWVuY2UsIHJlcHJlc2VudCBhICdyZWFsJyBzaW5nbGUgcXVvdGUuXG4gKiAoc2VlIHRoZSBsYXN0IGV4YW1wbGUpXG4gKlxuICogRm9ybWF0IG9mIHRoZSBzdHJpbmcgaXMgYmFzZWQgb24gVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICogd2l0aCBhIGZldyBhZGRpdGlvbnMgKHNlZSBub3RlIDcgYmVsb3cgdGhlIHRhYmxlKS5cbiAqXG4gKiBBY2NlcHRlZCBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfFxuICogfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRy4uR0dHICB8IEFELCBCQyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdHR0cgICAgfCBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHR0dHRyAgIHwgQSwgQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHlvICAgICAgfCA0NHRoLCAxc3QsIDB0aCwgMTd0aCAgICAgICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eXkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXl5eSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1ICAgfFxuICogfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgIHwgWSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgMjAxN3RoICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWVlZICAgICB8IDA0NCwgMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZWVkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWVlZWSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1ICAgfFxuICogfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgIHwgUiAgICAgICB8IC00MywgMCwgMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSICAgICAgfCAtNDMsIDAwLCAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSUlIgICAgIHwgLTA0MywgMDAwLCAwMDEsIDE5MDAsIDIwMTcgICAgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlJSUiAgICB8IC0wMDQzLCAwMDAwLCAwMDAxLCAxOTAwLCAyMDE3ICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSUlJSICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUsNyB8XG4gKiB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICAgfCB1ICAgICAgIHwgLTQzLCAwLCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXUgICAgICB8IC00MywgMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHV1dSAgICAgfCAtMDQzLCAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dXV1ICAgIHwgLTAwNDMsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXV1dXUgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNSAgIHxcbiAqIHwgUXVhcnRlciAoZm9ybWF0dGluZykgICAgICAgICAgICB8IFEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFRUSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUVFRICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVFRUVEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgUXVhcnRlciAoc3RhbmQtYWxvbmUpICAgICAgICAgICB8IHEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFxcSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcXFxICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXFxcXEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NTSAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTU1NICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU1NTU0gICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTW9udGggKHN0YW5kLWFsb25lKSAgICAgICAgICAgICB8IEwgICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTEwgICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExMTCAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTExMICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTExMTEwgICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgICB8IHcgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3byAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd3cgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgICB8IEkgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSUkgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgICB8IGQgICAgICAgfCAxLCAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzFzdCAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGQgICAgICB8IDAxLCAwMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgICB8IEQgICAgICAgfCAxLCAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgICAgfCA5ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzY1dGgsIDM2NnRoICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgREQgICAgICB8IDAxLCAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICB8IDkgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERERCAgICAgfCAwMDEsIDAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEREREICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyAgICAgfFxuICogfCBEYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgICAgIHwgRS4uRUVFICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVFRUUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFRUVFRSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRUVFRUVFICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICB8IGkgICAgICAgfCAxLCAyLCAzLCAuLi4sIDcgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgN3RoICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWkgICAgICB8IDAxLCAwMiwgLi4uLCAwNyAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaWlpICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpaWkgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaWlpaSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCA3ICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgfCBlICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZW8gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWUgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWVlZSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZWVlICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWVlZWUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoc3RhbmQtYWxvbmUpIHwgYyAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYyAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjY2MgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2NjYyAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjY2NjICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEuLmFhICAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWEgICAgIHwgYW0sIHBtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYSAgICB8IGEubS4sIHAubS4gICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYWFhICAgfCBhLCBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgfCBiLi5iYiAgIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYmJiICAgICB8IGFtLCBwbSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGJiYmIgICAgfCBhLm0uLCBwLm0uLCBub29uLCBtaWRuaWdodCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBiYmJiYiAgIHwgYSwgcCwgbiwgbWkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgIHwgQi4uQkJCICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJCQkIgICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCQkJCQiAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAxMnRoICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgIHwgSCAgICAgICB8IDAsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhvICAgICAgfCAwdGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBISCAgICAgIHwgMDAsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgIHwgSyAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEtvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAwdGggICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBLSyAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgIHwgayAgICAgICB8IDI0LCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtvICAgICAgfCAyNHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrayAgICAgIHwgMjQsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1vICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNvICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgIHwgUyAgICAgICB8IDAsIDEsIC4uLiwgOSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1NTUyAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvIFopICAgICAgICB8IFggICAgICAgfCAtMDgsICswNTMwLCBaICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWCAgICAgIHwgLTA4MDAsICswNTMwLCBaICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWFhYICAgICB8IC0wODowMCwgKzA1OjMwLCBaICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhYWFggICAgfCAtMDgwMCwgKzA1MzAsIFosICsxMjM0NTYgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWFhYWCAgIHwgLTA4OjAwLCArMDU6MzAsIFosICsxMjozNDo1NiAgICAgIHwgICAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgIHwgeCAgICAgICB8IC0wOCwgKzA1MzAsICswMCAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4ICAgICAgfCAtMDgwMCwgKzA1MzAsICswMDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4eHggICAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeHh4eCAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAsICsxMjM0NTYgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4eHh4ICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwLCArMTI6MzQ6NTYgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChHTVQpICAgICAgICAgICAgICAgICAgfCBPLi4uT09PIHwgR01ULTgsIEdNVCs1OjMwLCBHTVQrMCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgT09PTyAgICB8IEdNVC0wODowMCwgR01UKzA1OjMwLCBHTVQrMDA6MDAgICB8IDIgICAgIHxcbiAqIHwgVGltZXpvbmUgKHNwZWNpZmljIG5vbi1sb2NhdC4pICB8IHouLi56enogfCBHTVQtOCwgR01UKzU6MzAsIEdNVCswICAgICAgICAgICAgfCA2ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB6enp6ICAgIHwgR01ULTA4OjAwLCBHTVQrMDU6MzAsIEdNVCswMDowMCAgIHwgMiw2ICAgfFxuICogfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgIHwgdCAgICAgICB8IDUxMjk2OTUyMCAgICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHR0ICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDcgICB8XG4gKiB8IE1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgfCBUICAgICAgIHwgNTEyOTY5NTIwOTAwICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVFQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNyAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgICB8IFAgICAgICAgfCAwNC8yOS8xNDUzICAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUCAgICAgIHwgQXByIDI5LCAxNDUzICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQICAgICB8IEFwcmlsIDI5dGgsIDE0NTMgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQUFAgICAgfCBGcmlkYXksIEFwcmlsIDI5dGgsIDE0NTMgICAgICAgICAgfCAyLDcgICB8XG4gKiB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICAgfCBwICAgICAgIHwgMTI6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHAgICAgICB8IDEyOjAwOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBwcCAgICAgfCAxMjowMDowMCBBTSBHTVQrMiAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcHBwICAgIHwgMTI6MDA6MDAgQU0gR01UKzAyOjAwICAgICAgICAgICAgIHwgMiw3ICAgfFxuICogfCBDb21iaW5hdGlvbiBvZiBkYXRlIGFuZCB0aW1lICAgIHwgUHAgICAgICB8IDA0LzI5LzE0NTMsIDEyOjAwIEFNICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQcHAgICAgfCBBcHIgMjksIDE0NTMsIDEyOjAwOjAwIEFNICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUFBwcHAgIHwgQXByaWwgMjl0aCwgMTQ1MyBhdCAuLi4gICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQUHBwcHB8IEZyaWRheSwgQXByaWwgMjl0aCwgMTQ1MyBhdCAuLi4gICB8IDIsNyAgIHxcbiAqIE5vdGVzOlxuICogMS4gXCJGb3JtYXR0aW5nXCIgdW5pdHMgKGUuZy4gZm9ybWF0dGluZyBxdWFydGVyKSBpbiB0aGUgZGVmYXVsdCBlbi1VUyBsb2NhbGVcbiAqICAgIGFyZSB0aGUgc2FtZSBhcyBcInN0YW5kLWFsb25lXCIgdW5pdHMsIGJ1dCBhcmUgZGlmZmVyZW50IGluIHNvbWUgbGFuZ3VhZ2VzLlxuICogICAgXCJGb3JtYXR0aW5nXCIgdW5pdHMgYXJlIGRlY2xpbmVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxhbmd1YWdlXG4gKiAgICBpbiB0aGUgY29udGV4dCBvZiBhIGRhdGUuIFwiU3RhbmQtYWxvbmVcIiB1bml0cyBhcmUgYWx3YXlzIG5vbWluYXRpdmUgc2luZ3VsYXI6XG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBMTExMJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZCdgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBNTU1NJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZHUnYFxuICpcbiAqIDIuIEFueSBzZXF1ZW5jZSBvZiB0aGUgaWRlbnRpY2FsIGxldHRlcnMgaXMgYSBwYXR0ZXJuLCB1bmxlc3MgaXQgaXMgZXNjYXBlZCBieVxuICogICAgdGhlIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIChzZWUgYmVsb3cpLlxuICogICAgSWYgdGhlIHNlcXVlbmNlIGlzIGxvbmdlciB0aGFuIGxpc3RlZCBpbiB0YWJsZSAoZS5nLiBgRUVFRUVFRUVFRUVgKVxuICogICAgdGhlIG91dHB1dCB3aWxsIGJlIHRoZSBzYW1lIGFzIGRlZmF1bHQgcGF0dGVybiBmb3IgdGhpcyB1bml0LCB1c3VhbGx5XG4gKiAgICB0aGUgbG9uZ2VzdCBvbmUgKGluIGNhc2Ugb2YgSVNPIHdlZWtkYXlzLCBgRUVFRWApLiBEZWZhdWx0IHBhdHRlcm5zIGZvciB1bml0c1xuICogICAgYXJlIG1hcmtlZCB3aXRoIFwiMlwiIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUuXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU0nKSAvLz0+ICdOb3YnYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnTU1NTScpIC8vPT4gJ05vdmVtYmVyJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTU1NJykgLy89PiAnTidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NTU0nKSAvLz0+ICdOb3ZlbWJlcidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NTU1NJykgLy89PiAnTm92ZW1iZXInYFxuICpcbiAqIDMuIFNvbWUgcGF0dGVybnMgY291bGQgYmUgdW5saW1pdGVkIGxlbmd0aCAoc3VjaCBhcyBgeXl5eXl5eXlgKS5cbiAqICAgIFRoZSBvdXRwdXQgd2lsbCBiZSBwYWRkZWQgd2l0aCB6ZXJvcyB0byBtYXRjaCB0aGUgbGVuZ3RoIG9mIHRoZSBwYXR0ZXJuLlxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAneXl5eXl5eXknKSAvLz0+ICcwMDAwMjAxNydgXG4gKlxuICogNC4gYFFRUVFRYCBhbmQgYHFxcXFxYCBjb3VsZCBiZSBub3Qgc3RyaWN0bHkgbnVtZXJpY2FsIGluIHNvbWUgbG9jYWxlcy5cbiAqICAgIFRoZXNlIHRva2VucyByZXByZXNlbnQgdGhlIHNob3J0ZXN0IGZvcm0gb2YgdGhlIHF1YXJ0ZXIuXG4gKlxuICogNS4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIHBhdHRlcm5zIGFyZSBCLkMuIHllYXJzOlxuICpcbiAqICAgIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICogICAgfCBBQyAxIHwgICAxIHwgICAxIHxcbiAqICAgIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gKiAgICB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICpcbiAqICAgIEFsc28gYHl5YCBhbHdheXMgcmV0dXJucyB0aGUgbGFzdCB0d28gZGlnaXRzIG9mIGEgeWVhcixcbiAqICAgIHdoaWxlIGB1dWAgcGFkcyBzaW5nbGUgZGlnaXQgeWVhcnMgdG8gMiBjaGFyYWN0ZXJzIGFuZCByZXR1cm5zIG90aGVyIHllYXJzIHVuY2hhbmdlZDpcbiAqXG4gKiAgICB8IFllYXIgfCBgeXlgIHwgYHV1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tLXwtLS0tLS18XG4gKiAgICB8IDEgICAgfCAgIDAxIHwgICAwMSB8XG4gKiAgICB8IDE0ICAgfCAgIDE0IHwgICAxNCB8XG4gKiAgICB8IDM3NiAgfCAgIDc2IHwgIDM3NiB8XG4gKiAgICB8IDE0NTMgfCAgIDUzIHwgMTQ1MyB8XG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbZ2V0SVNPV2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvZ2V0SVNPV2Vla1llYXJ9XG4gKiAgICBhbmQgW2dldFdlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL2dldFdlZWtZZWFyfSkuXG4gKlxuICogNi4gU3BlY2lmaWMgbm9uLWxvY2F0aW9uIHRpbWV6b25lcyBhcmUgY3VycmVudGx5IHVuYXZhaWxhYmxlIGluIGBkYXRlLWZuc2AsXG4gKiAgICBzbyByaWdodCBub3cgdGhlc2UgdG9rZW5zIGZhbGwgYmFjayB0byBHTVQgdGltZXpvbmVzLlxuICpcbiAqIDcuIFRoZXNlIHBhdHRlcm5zIGFyZSBub3QgaW4gdGhlIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqICAgIC0gYGlgOiBJU08gZGF5IG9mIHdlZWtcbiAqICAgIC0gYElgOiBJU08gd2VlayBvZiB5ZWFyXG4gKiAgICAtIGBSYDogSVNPIHdlZWstbnVtYmVyaW5nIHllYXJcbiAqICAgIC0gYHRgOiBzZWNvbmRzIHRpbWVzdGFtcFxuICogICAgLSBgVGA6IG1pbGxpc2Vjb25kcyB0aW1lc3RhbXBcbiAqICAgIC0gYG9gOiBvcmRpbmFsIG51bWJlciBtb2RpZmllclxuICogICAgLSBgUGA6IGxvbmcgbG9jYWxpemVkIGRhdGVcbiAqICAgIC0gYHBgOiBsb25nIGxvY2FsaXplZCB0aW1lXG4gKlxuICogOC4gYFlZYCBhbmQgYFlZWVlgIHRva2VucyByZXByZXNlbnQgd2Vlay1udW1iZXJpbmcgeWVhcnMgYnV0IHRoZXkgYXJlIG9mdGVuIGNvbmZ1c2VkIHdpdGggeWVhcnMuXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnNgIHRvIHVzZSB0aGVtLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiA5LiBgRGAgYW5kIGBERGAgdG9rZW5zIHJlcHJlc2VudCBkYXlzIG9mIHRoZSB5ZWFyIGJ1dCB0aGV5IGFyZSBvZnRlbiBjb25mdXNlZCB3aXRoIGRheXMgb2YgdGhlIG1vbnRoLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIEBwYXJhbSB7RGF0ZXxOdW1iZXJ9IGRhdGUgLSB0aGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIC0gYW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7TG9jYWxlfSBbb3B0aW9ucy5sb2NhbGU9ZGVmYXVsdExvY2FsZV0gLSB0aGUgbG9jYWxlIG9iamVjdC4gU2VlIFtMb2NhbGVde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvTG9jYWxlfVxuICogQHBhcmFtIHswfDF8MnwzfDR8NXw2fSBbb3B0aW9ucy53ZWVrU3RhcnRzT249MF0gLSB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMCAtIFN1bmRheSlcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGU9MV0gLSB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIgdG9rZW5zIGBZWWAgYW5kIGBZWVlZYDtcbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIHRoZSBkYXkgb2YgeWVhciB0b2tlbnMgYERgIGFuZCBgRERgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmdcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMiBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBkYXRlYCBtdXN0IG5vdCBiZSBJbnZhbGlkIERhdGVcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBsb2NhbGl6ZWAgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBmb3JtYXRMb25nYCBwcm9wZXJ0eVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMud2Vla1N0YXJ0c09uYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNlxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgN1xuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eXl5YCBpbnN0ZWFkIG9mIGBZWVlZYCBmb3IgZm9ybWF0dGluZyB5ZWFycyB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfSB1c2UgYGRkYCBpbnN0ZWFkIG9mIGBERGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMSBGZWJydWFyeSAyMDE0IGluIG1pZGRsZS1lbmRpYW4gZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDEsIDExKSwgJ01NL2RkL3l5eXknKVxuICogLy89PiAnMDIvMTEvMjAxNCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDIgSnVseSAyMDE0IGluIEVzcGVyYW50bzpcbiAqIGltcG9ydCB7IGVvTG9jYWxlIH0gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDYsIDIpLCBcImRvICdkZScgTU1NTSB5eXl5XCIsIHtcbiAqICAgbG9jYWxlOiBlb0xvY2FsZVxuICogfSlcbiAqIC8vPT4gJzItYSBkZSBqdWxpbyAyMDE0J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFc2NhcGUgc3RyaW5nIGJ5IHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDYsIDIsIDE1KSwgXCJoICdvJydjbG9jaydcIilcbiAqIC8vPT4gXCIzIG8nY2xvY2tcIlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChkaXJ0eURhdGUsIGRpcnR5Rm9ybWF0U3RyLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmLCBfb3B0aW9ucyRsb2NhbGUsIF9yZWYyLCBfcmVmMywgX3JlZjQsIF9vcHRpb25zJGZpcnN0V2Vla0NvbiwgX29wdGlvbnMkbG9jYWxlMiwgX29wdGlvbnMkbG9jYWxlMiRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIsIF9yZWY1LCBfcmVmNiwgX3JlZjcsIF9vcHRpb25zJHdlZWtTdGFydHNPbiwgX29wdGlvbnMkbG9jYWxlMywgX29wdGlvbnMkbG9jYWxlMyRvcHRpLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWw0O1xuXG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZm9ybWF0U3RyID0gU3RyaW5nKGRpcnR5Rm9ybWF0U3RyKTtcbiAgdmFyIGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgdmFyIGxvY2FsZSA9IChfcmVmID0gKF9vcHRpb25zJGxvY2FsZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sb2NhbGUpICE9PSBudWxsICYmIF9vcHRpb25zJGxvY2FsZSAhPT0gdm9pZCAwID8gX29wdGlvbnMkbG9jYWxlIDogZGVmYXVsdE9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogZGVmYXVsdExvY2FsZTtcbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZjIgPSAoX3JlZjMgPSAoX3JlZjQgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPSBfb3B0aW9ucyRsb2NhbGUyLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIkb3B0aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlMiRvcHRpLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjQgIT09IHZvaWQgMCA/IF9yZWY0IDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAxKTsgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cblxuICBpZiAoIShmaXJzdFdlZWtDb250YWluc0RhdGUgPj0gMSAmJiBmaXJzdFdlZWtDb250YWluc0RhdGUgPD0gNykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Jyk7XG4gIH1cblxuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmNSA9IChfcmVmNiA9IChfcmVmNyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTMgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTMkb3B0aSA9IF9vcHRpb25zJGxvY2FsZTMub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMyRvcHRpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUzJG9wdGkud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNyAhPT0gdm9pZCAwID8gX3JlZjcgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY2ICE9PSB2b2lkIDAgPyBfcmVmNiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwzID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsNCA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsNC53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY1ICE9PSB2b2lkIDAgPyBfcmVmNSA6IDApOyAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuXG4gIGlmICghbG9jYWxlLmxvY2FsaXplKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2xvY2FsZSBtdXN0IGNvbnRhaW4gbG9jYWxpemUgcHJvcGVydHknKTtcbiAgfVxuXG4gIGlmICghbG9jYWxlLmZvcm1hdExvbmcpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBmb3JtYXRMb25nIHByb3BlcnR5Jyk7XG4gIH1cblxuICB2YXIgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG5cbiAgaWYgKCFpc1ZhbGlkKG9yaWdpbmFsRGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0aW1lIHZhbHVlJyk7XG4gIH0gLy8gQ29udmVydCB0aGUgZGF0ZSBpbiBzeXN0ZW0gdGltZXpvbmUgdG8gdGhlIHNhbWUgZGF0ZSBpbiBVVEMrMDA6MDAgdGltZXpvbmUuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdoZW4gVVRDIGZ1bmN0aW9ucyB3aWxsIGJlIGltcGxlbWVudGVkLCBsb2NhbGVzIHdpbGwgYmUgY29tcGF0aWJsZSB3aXRoIHRoZW0uXG4gIC8vIFNlZSBhbiBpc3N1ZSBhYm91dCBVVEMgZnVuY3Rpb25zOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzM3NlxuXG5cbiAgdmFyIHRpbWV6b25lT2Zmc2V0ID0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhvcmlnaW5hbERhdGUpO1xuICB2YXIgdXRjRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhvcmlnaW5hbERhdGUsIHRpbWV6b25lT2Zmc2V0KTtcbiAgdmFyIGZvcm1hdHRlck9wdGlvbnMgPSB7XG4gICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiBmaXJzdFdlZWtDb250YWluc0RhdGUsXG4gICAgd2Vla1N0YXJ0c09uOiB3ZWVrU3RhcnRzT24sXG4gICAgbG9jYWxlOiBsb2NhbGUsXG4gICAgX29yaWdpbmFsRGF0ZTogb3JpZ2luYWxEYXRlXG4gIH07XG4gIHZhciByZXN1bHQgPSBmb3JtYXRTdHIubWF0Y2gobG9uZ0Zvcm1hdHRpbmdUb2tlbnNSZWdFeHApLm1hcChmdW5jdGlvbiAoc3Vic3RyaW5nKSB7XG4gICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gc3Vic3RyaW5nWzBdO1xuXG4gICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09PSAncCcgfHwgZmlyc3RDaGFyYWN0ZXIgPT09ICdQJykge1xuICAgICAgdmFyIGxvbmdGb3JtYXR0ZXIgPSBsb25nRm9ybWF0dGVyc1tmaXJzdENoYXJhY3Rlcl07XG4gICAgICByZXR1cm4gbG9uZ0Zvcm1hdHRlcihzdWJzdHJpbmcsIGxvY2FsZS5mb3JtYXRMb25nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic3RyaW5nO1xuICB9KS5qb2luKCcnKS5tYXRjaChmb3JtYXR0aW5nVG9rZW5zUmVnRXhwKS5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIC8vIFJlcGxhY2UgdHdvIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzIHdpdGggb25lIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJcbiAgICBpZiAoc3Vic3RyaW5nID09PSBcIicnXCIpIHtcbiAgICAgIHJldHVybiBcIidcIjtcbiAgICB9XG5cbiAgICB2YXIgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG5cbiAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwiJ1wiKSB7XG4gICAgICByZXR1cm4gY2xlYW5Fc2NhcGVkU3RyaW5nKHN1YnN0cmluZyk7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRlciA9IGZvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuXG4gICAgaWYgKGZvcm1hdHRlcikge1xuICAgICAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnMpICYmIGlzUHJvdGVjdGVkV2Vla1llYXJUb2tlbihzdWJzdHJpbmcpKSB7XG4gICAgICAgIHRocm93UHJvdGVjdGVkRXJyb3Ioc3Vic3RyaW5nLCBkaXJ0eUZvcm1hdFN0ciwgU3RyaW5nKGRpcnR5RGF0ZSkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIShvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnMpICYmIGlzUHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW4oc3Vic3RyaW5nKSkge1xuICAgICAgICB0aHJvd1Byb3RlY3RlZEVycm9yKHN1YnN0cmluZywgZGlydHlGb3JtYXRTdHIsIFN0cmluZyhkaXJ0eURhdGUpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvcm1hdHRlcih1dGNEYXRlLCBzdWJzdHJpbmcsIGxvY2FsZS5sb2NhbGl6ZSwgZm9ybWF0dGVyT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKGZpcnN0Q2hhcmFjdGVyLm1hdGNoKHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0Zvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlciBgJyArIGZpcnN0Q2hhcmFjdGVyICsgJ2AnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic3RyaW5nO1xuICB9KS5qb2luKCcnKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY2xlYW5Fc2NhcGVkU3RyaW5nKGlucHV0KSB7XG4gIHZhciBtYXRjaGVkID0gaW5wdXQubWF0Y2goZXNjYXBlZFN0cmluZ1JlZ0V4cCk7XG5cbiAgaWYgKCFtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoZWRbMV0ucmVwbGFjZShkb3VibGVRdW90ZVJlZ0V4cCwgXCInXCIpO1xufSIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBvYmplY3QpIHtcbiAgaWYgKHRhcmdldCA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYXNzaWduIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICB9XG5cbiAgZm9yICh2YXIgcHJvcGVydHkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KSkge1xuICAgICAgO1xuICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IG9iamVjdFtwcm9wZXJ0eV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn0iLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBUSU1FWk9ORV9VTklUX1BSSU9SSVRZID0gMTA7XG5leHBvcnQgdmFyIFNldHRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFNldHRlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2V0dGVyKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInN1YlByaW9yaXR5XCIsIDApO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFNldHRlciwgW3tcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX3V0Y0RhdGUsIF9vcHRpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU2V0dGVyO1xufSgpO1xuZXhwb3J0IHZhciBWYWx1ZVNldHRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1NldHRlcikge1xuICBfaW5oZXJpdHMoVmFsdWVTZXR0ZXIsIF9TZXR0ZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVmFsdWVTZXR0ZXIpO1xuXG4gIGZ1bmN0aW9uIFZhbHVlU2V0dGVyKHZhbHVlLCB2YWxpZGF0ZVZhbHVlLCBzZXRWYWx1ZSwgcHJpb3JpdHksIHN1YlByaW9yaXR5KSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFZhbHVlU2V0dGVyKTtcblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcyk7XG4gICAgX3RoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICBfdGhpcy52YWxpZGF0ZVZhbHVlID0gdmFsaWRhdGVWYWx1ZTtcbiAgICBfdGhpcy5zZXRWYWx1ZSA9IHNldFZhbHVlO1xuICAgIF90aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7XG5cbiAgICBpZiAoc3ViUHJpb3JpdHkpIHtcbiAgICAgIF90aGlzLnN1YlByaW9yaXR5ID0gc3ViUHJpb3JpdHk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFZhbHVlU2V0dGVyLCBbe1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZSh1dGNEYXRlLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVZhbHVlKHV0Y0RhdGUsIHRoaXMudmFsdWUsIG9wdGlvbnMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KHV0Y0RhdGUsIGZsYWdzLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRWYWx1ZSh1dGNEYXRlLCBmbGFncywgdGhpcy52YWx1ZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFZhbHVlU2V0dGVyO1xufShTZXR0ZXIpO1xuZXhwb3J0IHZhciBEYXRlVG9TeXN0ZW1UaW1lem9uZVNldHRlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1NldHRlcjIpIHtcbiAgX2luaGVyaXRzKERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyLCBfU2V0dGVyMik7XG5cbiAgdmFyIF9zdXBlcjIgPSBfY3JlYXRlU3VwZXIoRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIpO1xuXG4gIGZ1bmN0aW9uIERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyKCkge1xuICAgIHZhciBfdGhpczI7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzMiA9IF9zdXBlcjIuY2FsbC5hcHBseShfc3VwZXIyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwicHJpb3JpdHlcIiwgVElNRVpPTkVfVU5JVF9QUklPUklUWSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpczIpLCBcInN1YlByaW9yaXR5XCIsIC0xKTtcblxuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIsIFt7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MpIHtcbiAgICAgIGlmIChmbGFncy50aW1lc3RhbXBJc1NldCkge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnZlcnRlZERhdGUgPSBuZXcgRGF0ZSgwKTtcbiAgICAgIGNvbnZlcnRlZERhdGUuc2V0RnVsbFllYXIoZGF0ZS5nZXRVVENGdWxsWWVhcigpLCBkYXRlLmdldFVUQ01vbnRoKCksIGRhdGUuZ2V0VVRDRGF0ZSgpKTtcbiAgICAgIGNvbnZlcnRlZERhdGUuc2V0SG91cnMoZGF0ZS5nZXRVVENIb3VycygpLCBkYXRlLmdldFVUQ01pbnV0ZXMoKSwgZGF0ZS5nZXRVVENTZWNvbmRzKCksIGRhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpO1xuICAgICAgcmV0dXJuIGNvbnZlcnRlZERhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyO1xufShTZXR0ZXIpOyIsICJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmltcG9ydCB7IFZhbHVlU2V0dGVyIH0gZnJvbSBcIi4vU2V0dGVyLmpzXCI7XG5leHBvcnQgdmFyIFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFBhcnNlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUGFyc2VyKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQYXJzZXIsIFt7XG4gICAga2V5OiBcInJ1blwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdGhpcy5wYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2V0dGVyOiBuZXcgVmFsdWVTZXR0ZXIocmVzdWx0LnZhbHVlLCB0aGlzLnZhbGlkYXRlLCB0aGlzLnNldCwgdGhpcy5wcmlvcml0eSwgdGhpcy5zdWJQcmlvcml0eSksXG4gICAgICAgIHJlc3Q6IHJlc3VsdC5yZXN0XG4gICAgICB9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfdXRjRGF0ZSwgX3ZhbHVlLCBfb3B0aW9ucykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFBhcnNlcjtcbn0oKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmV4cG9ydCB2YXIgRXJhUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhFcmFQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRXJhUGFyc2VyKTtcblxuICBmdW5jdGlvbiBFcmFQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEVyYVBhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDE0MCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnUicsICd1JywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhFcmFQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyBBRCwgQkNcbiAgICAgICAgY2FzZSAnRyc6XG4gICAgICAgIGNhc2UgJ0dHJzpcbiAgICAgICAgY2FzZSAnR0dHJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93J1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBBLCBCXG5cbiAgICAgICAgY2FzZSAnR0dHR0cnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5lcmEoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0XG5cbiAgICAgICAgY2FzZSAnR0dHRyc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93J1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSkge1xuICAgICAgZmxhZ3MuZXJhID0gdmFsdWU7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHZhbHVlLCAwLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRXJhUGFyc2VyO1xufShQYXJzZXIpOyIsICJleHBvcnQgdmFyIG51bWVyaWNQYXR0ZXJucyA9IHtcbiAgbW9udGg6IC9eKDFbMC0yXXwwP1xcZCkvLFxuICAvLyAwIHRvIDEyXG4gIGRhdGU6IC9eKDNbMC0xXXxbMC0yXT9cXGQpLyxcbiAgLy8gMCB0byAzMVxuICBkYXlPZlllYXI6IC9eKDM2WzAtNl18M1swLTVdXFxkfFswLTJdP1xcZD9cXGQpLyxcbiAgLy8gMCB0byAzNjZcbiAgd2VlazogL14oNVswLTNdfFswLTRdP1xcZCkvLFxuICAvLyAwIHRvIDUzXG4gIGhvdXIyM2g6IC9eKDJbMC0zXXxbMC0xXT9cXGQpLyxcbiAgLy8gMCB0byAyM1xuICBob3VyMjRoOiAvXigyWzAtNF18WzAtMV0/XFxkKS8sXG4gIC8vIDAgdG8gMjRcbiAgaG91cjExaDogL14oMVswLTFdfDA/XFxkKS8sXG4gIC8vIDAgdG8gMTFcbiAgaG91cjEyaDogL14oMVswLTJdfDA/XFxkKS8sXG4gIC8vIDAgdG8gMTJcbiAgbWludXRlOiAvXlswLTVdP1xcZC8sXG4gIC8vIDAgdG8gNTlcbiAgc2Vjb25kOiAvXlswLTVdP1xcZC8sXG4gIC8vIDAgdG8gNTlcbiAgc2luZ2xlRGlnaXQ6IC9eXFxkLyxcbiAgLy8gMCB0byA5XG4gIHR3b0RpZ2l0czogL15cXGR7MSwyfS8sXG4gIC8vIDAgdG8gOTlcbiAgdGhyZWVEaWdpdHM6IC9eXFxkezEsM30vLFxuICAvLyAwIHRvIDk5OVxuICBmb3VyRGlnaXRzOiAvXlxcZHsxLDR9LyxcbiAgLy8gMCB0byA5OTk5XG4gIGFueURpZ2l0c1NpZ25lZDogL14tP1xcZCsvLFxuICBzaW5nbGVEaWdpdFNpZ25lZDogL14tP1xcZC8sXG4gIC8vIDAgdG8gOSwgLTAgdG8gLTlcbiAgdHdvRGlnaXRzU2lnbmVkOiAvXi0/XFxkezEsMn0vLFxuICAvLyAwIHRvIDk5LCAtMCB0byAtOTlcbiAgdGhyZWVEaWdpdHNTaWduZWQ6IC9eLT9cXGR7MSwzfS8sXG4gIC8vIDAgdG8gOTk5LCAtMCB0byAtOTk5XG4gIGZvdXJEaWdpdHNTaWduZWQ6IC9eLT9cXGR7MSw0fS8gLy8gMCB0byA5OTk5LCAtMCB0byAtOTk5OVxuXG59O1xuZXhwb3J0IHZhciB0aW1lem9uZVBhdHRlcm5zID0ge1xuICBiYXNpY09wdGlvbmFsTWludXRlczogL14oWystXSkoXFxkezJ9KShcXGR7Mn0pP3xaLyxcbiAgYmFzaWM6IC9eKFsrLV0pKFxcZHsyfSkoXFxkezJ9KXxaLyxcbiAgYmFzaWNPcHRpb25hbFNlY29uZHM6IC9eKFsrLV0pKFxcZHsyfSkoXFxkezJ9KSgoXFxkezJ9KSk/fFovLFxuICBleHRlbmRlZDogL14oWystXSkoXFxkezJ9KTooXFxkezJ9KXxaLyxcbiAgZXh0ZW5kZWRPcHRpb25hbFNlY29uZHM6IC9eKFsrLV0pKFxcZHsyfSk6KFxcZHsyfSkoOihcXGR7Mn0pKT98Wi9cbn07IiwgImltcG9ydCB7IG1pbGxpc2Vjb25kc0luSG91ciwgbWlsbGlzZWNvbmRzSW5NaW51dGUsIG1pbGxpc2Vjb25kc0luU2Vjb25kIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4vY29uc3RhbnRzLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gbWFwVmFsdWUocGFyc2VGblJlc3VsdCwgbWFwRm4pIHtcbiAgaWYgKCFwYXJzZUZuUmVzdWx0KSB7XG4gICAgcmV0dXJuIHBhcnNlRm5SZXN1bHQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbHVlOiBtYXBGbihwYXJzZUZuUmVzdWx0LnZhbHVlKSxcbiAgICByZXN0OiBwYXJzZUZuUmVzdWx0LnJlc3RcbiAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU51bWVyaWNQYXR0ZXJuKHBhdHRlcm4sIGRhdGVTdHJpbmcpIHtcbiAgdmFyIG1hdGNoUmVzdWx0ID0gZGF0ZVN0cmluZy5tYXRjaChwYXR0ZXJuKTtcblxuICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbHVlOiBwYXJzZUludChtYXRjaFJlc3VsdFswXSwgMTApLFxuICAgIHJlc3Q6IGRhdGVTdHJpbmcuc2xpY2UobWF0Y2hSZXN1bHRbMF0ubGVuZ3RoKVxuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHBhdHRlcm4sIGRhdGVTdHJpbmcpIHtcbiAgdmFyIG1hdGNoUmVzdWx0ID0gZGF0ZVN0cmluZy5tYXRjaChwYXR0ZXJuKTtcblxuICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gSW5wdXQgaXMgJ1onXG5cblxuICBpZiAobWF0Y2hSZXN1bHRbMF0gPT09ICdaJykge1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogMCxcbiAgICAgIHJlc3Q6IGRhdGVTdHJpbmcuc2xpY2UoMSlcbiAgICB9O1xuICB9XG5cbiAgdmFyIHNpZ24gPSBtYXRjaFJlc3VsdFsxXSA9PT0gJysnID8gMSA6IC0xO1xuICB2YXIgaG91cnMgPSBtYXRjaFJlc3VsdFsyXSA/IHBhcnNlSW50KG1hdGNoUmVzdWx0WzJdLCAxMCkgOiAwO1xuICB2YXIgbWludXRlcyA9IG1hdGNoUmVzdWx0WzNdID8gcGFyc2VJbnQobWF0Y2hSZXN1bHRbM10sIDEwKSA6IDA7XG4gIHZhciBzZWNvbmRzID0gbWF0Y2hSZXN1bHRbNV0gPyBwYXJzZUludChtYXRjaFJlc3VsdFs1XSwgMTApIDogMDtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogc2lnbiAqIChob3VycyAqIG1pbGxpc2Vjb25kc0luSG91ciArIG1pbnV0ZXMgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSArIHNlY29uZHMgKiBtaWxsaXNlY29uZHNJblNlY29uZCksXG4gICAgcmVzdDogZGF0ZVN0cmluZy5zbGljZShtYXRjaFJlc3VsdFswXS5sZW5ndGgpXG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBbnlEaWdpdHNTaWduZWQoZGF0ZVN0cmluZykge1xuICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuYW55RGlnaXRzU2lnbmVkLCBkYXRlU3RyaW5nKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU5EaWdpdHMobiwgZGF0ZVN0cmluZykge1xuICBzd2l0Y2ggKG4pIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2luZ2xlRGlnaXQsIGRhdGVTdHJpbmcpO1xuXG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnR3b0RpZ2l0cywgZGF0ZVN0cmluZyk7XG5cbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudGhyZWVEaWdpdHMsIGRhdGVTdHJpbmcpO1xuXG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmZvdXJEaWdpdHMsIGRhdGVTdHJpbmcpO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG5ldyBSZWdFeHAoJ15cXFxcZHsxLCcgKyBuICsgJ30nKSwgZGF0ZVN0cmluZyk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU5EaWdpdHNTaWduZWQobiwgZGF0ZVN0cmluZykge1xuICBzd2l0Y2ggKG4pIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2luZ2xlRGlnaXRTaWduZWQsIGRhdGVTdHJpbmcpO1xuXG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnR3b0RpZ2l0c1NpZ25lZCwgZGF0ZVN0cmluZyk7XG5cbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMudGhyZWVEaWdpdHNTaWduZWQsIGRhdGVTdHJpbmcpO1xuXG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmZvdXJEaWdpdHNTaWduZWQsIGRhdGVTdHJpbmcpO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG5ldyBSZWdFeHAoJ14tP1xcXFxkezEsJyArIG4gKyAnfScpLCBkYXRlU3RyaW5nKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGRheVBlcmlvZEVudW1Ub0hvdXJzKGRheVBlcmlvZCkge1xuICBzd2l0Y2ggKGRheVBlcmlvZCkge1xuICAgIGNhc2UgJ21vcm5pbmcnOlxuICAgICAgcmV0dXJuIDQ7XG5cbiAgICBjYXNlICdldmVuaW5nJzpcbiAgICAgIHJldHVybiAxNztcblxuICAgIGNhc2UgJ3BtJzpcbiAgICBjYXNlICdub29uJzpcbiAgICBjYXNlICdhZnRlcm5vb24nOlxuICAgICAgcmV0dXJuIDEyO1xuXG4gICAgY2FzZSAnYW0nOlxuICAgIGNhc2UgJ21pZG5pZ2h0JzpcbiAgICBjYXNlICduaWdodCc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAwO1xuICB9XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVHdvRGlnaXRZZWFyKHR3b0RpZ2l0WWVhciwgY3VycmVudFllYXIpIHtcbiAgdmFyIGlzQ29tbW9uRXJhID0gY3VycmVudFllYXIgPiAwOyAvLyBBYnNvbHV0ZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhcjpcbiAgLy8gMSAtPiAxIEFDXG4gIC8vIDAgLT4gMSBCQ1xuICAvLyAtMSAtPiAyIEJDXG5cbiAgdmFyIGFic0N1cnJlbnRZZWFyID0gaXNDb21tb25FcmEgPyBjdXJyZW50WWVhciA6IDEgLSBjdXJyZW50WWVhcjtcbiAgdmFyIHJlc3VsdDtcblxuICBpZiAoYWJzQ3VycmVudFllYXIgPD0gNTApIHtcbiAgICByZXN1bHQgPSB0d29EaWdpdFllYXIgfHwgMTAwO1xuICB9IGVsc2Uge1xuICAgIHZhciByYW5nZUVuZCA9IGFic0N1cnJlbnRZZWFyICsgNTA7XG4gICAgdmFyIHJhbmdlRW5kQ2VudHVyeSA9IE1hdGguZmxvb3IocmFuZ2VFbmQgLyAxMDApICogMTAwO1xuICAgIHZhciBpc1ByZXZpb3VzQ2VudHVyeSA9IHR3b0RpZ2l0WWVhciA+PSByYW5nZUVuZCAlIDEwMDtcbiAgICByZXN1bHQgPSB0d29EaWdpdFllYXIgKyByYW5nZUVuZENlbnR1cnkgLSAoaXNQcmV2aW91c0NlbnR1cnkgPyAxMDAgOiAwKTtcbiAgfVxuXG4gIHJldHVybiBpc0NvbW1vbkVyYSA/IHJlc3VsdCA6IDEgLSByZXN1bHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNMZWFwWWVhckluZGV4KHllYXIpIHtcbiAgcmV0dXJuIHllYXIgJSA0MDAgPT09IDAgfHwgeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMDtcbn0iLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBub3JtYWxpemVUd29EaWdpdFllYXIsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuLy8gRnJvbSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LTMxL3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0Zvcm1hdF9QYXR0ZXJuc1xuLy8gfCBZZWFyICAgICB8ICAgICB5IHwgeXkgfCAgIHl5eSB8ICB5eXl5IHwgeXl5eXkgfFxuLy8gfC0tLS0tLS0tLS18LS0tLS0tLXwtLS0tfC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tfFxuLy8gfCBBRCAxICAgICB8ICAgICAxIHwgMDEgfCAgIDAwMSB8ICAwMDAxIHwgMDAwMDEgfFxuLy8gfCBBRCAxMiAgICB8ICAgIDEyIHwgMTIgfCAgIDAxMiB8ICAwMDEyIHwgMDAwMTIgfFxuLy8gfCBBRCAxMjMgICB8ICAgMTIzIHwgMjMgfCAgIDEyMyB8ICAwMTIzIHwgMDAxMjMgfFxuLy8gfCBBRCAxMjM0ICB8ICAxMjM0IHwgMzQgfCAgMTIzNCB8ICAxMjM0IHwgMDEyMzQgfFxuLy8gfCBBRCAxMjM0NSB8IDEyMzQ1IHwgNDUgfCAxMjM0NSB8IDEyMzQ1IHwgMTIzNDUgfFxuZXhwb3J0IHZhciBZZWFyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhZZWFyUGFyc2VyLCBfUGFyc2VyKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFllYXJQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIFllYXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFllYXJQYXJzZXIpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMzApO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICd1JywgJ3cnLCAnSScsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2soeWVhcikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHllYXI6IHllYXIsXG4gICAgICAgICAgaXNUd29EaWdpdFllYXI6IHRva2VuID09PSAneXknXG4gICAgICAgIH07XG4gICAgICB9O1xuXG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHMoNCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuXG4gICAgICAgIGNhc2UgJ3lvJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAneWVhcidcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5pc1R3b0RpZ2l0WWVhciB8fCB2YWx1ZS55ZWFyID4gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBmbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBjdXJyZW50WWVhciA9IGRhdGUuZ2V0VVRDRnVsbFllYXIoKTtcblxuICAgICAgaWYgKHZhbHVlLmlzVHdvRGlnaXRZZWFyKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkVHdvRGlnaXRZZWFyID0gbm9ybWFsaXplVHdvRGlnaXRZZWFyKHZhbHVlLnllYXIsIGN1cnJlbnRZZWFyKTtcbiAgICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcihub3JtYWxpemVkVHdvRGlnaXRZZWFyLCAwLCAxKTtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG5cbiAgICAgIHZhciB5ZWFyID0gISgnZXJhJyBpbiBmbGFncykgfHwgZmxhZ3MuZXJhID09PSAxID8gdmFsdWUueWVhciA6IDEgLSB2YWx1ZS55ZWFyO1xuICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCAwLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gWWVhclBhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlTkRpZ2l0cywgbm9ybWFsaXplVHdvRGlnaXRZZWFyLCBtYXBWYWx1ZSB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IGdldFVUQ1dlZWtZZWFyIGZyb20gXCIuLi8uLi8uLi9fbGliL2dldFVUQ1dlZWtZZWFyL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc3RhcnRPZlVUQ1dlZWsvaW5kZXguanNcIjtcbi8vIExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXJcbmV4cG9ydCB2YXIgTG9jYWxXZWVrWWVhclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTG9jYWxXZWVrWWVhclBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihMb2NhbFdlZWtZZWFyUGFyc2VyKTtcblxuICBmdW5jdGlvbiBMb2NhbFdlZWtZZWFyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2NhbFdlZWtZZWFyUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTMwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1InLCAndScsICdRJywgJ3EnLCAnTScsICdMJywgJ0knLCAnZCcsICdEJywgJ2knLCAndCcsICdUJ10pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExvY2FsV2Vla1llYXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHllYXIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB5ZWFyOiB5ZWFyLFxuICAgICAgICAgIGlzVHdvRGlnaXRZZWFyOiB0b2tlbiA9PT0gJ1lZJ1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdZJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKDQsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcblxuICAgICAgICBjYXNlICdZbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3llYXInXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUuaXNUd29EaWdpdFllYXIgfHwgdmFsdWUueWVhciA+IDA7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICB2YXIgY3VycmVudFllYXIgPSBnZXRVVENXZWVrWWVhcihkYXRlLCBvcHRpb25zKTtcblxuICAgICAgaWYgKHZhbHVlLmlzVHdvRGlnaXRZZWFyKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkVHdvRGlnaXRZZWFyID0gbm9ybWFsaXplVHdvRGlnaXRZZWFyKHZhbHVlLnllYXIsIGN1cnJlbnRZZWFyKTtcbiAgICAgICAgZGF0ZS5zZXRVVENGdWxsWWVhcihub3JtYWxpemVkVHdvRGlnaXRZZWFyLCAwLCBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSk7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHJldHVybiBzdGFydE9mVVRDV2VlayhkYXRlLCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHllYXIgPSAhKCdlcmEnIGluIGZsYWdzKSB8fCBmbGFncy5lcmEgPT09IDEgPyB2YWx1ZS55ZWFyIDogMSAtIHZhbHVlLnllYXI7XG4gICAgICBkYXRlLnNldFVUQ0Z1bGxZZWFyKHllYXIsIDAsIG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gc3RhcnRPZlVUQ1dlZWsoZGF0ZSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIExvY2FsV2Vla1llYXJQYXJzZXI7XG59KFBhcnNlcik7IiwgImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5EaWdpdHNTaWduZWQgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qc1wiOyAvLyBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuXG5leHBvcnQgdmFyIElTT1dlZWtZZWFyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09XZWVrWWVhclBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJU09XZWVrWWVhclBhcnNlcik7XG5cbiAgZnVuY3Rpb24gSVNPV2Vla1llYXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT1dlZWtZZWFyUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTMwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydHJywgJ3knLCAnWScsICd1JywgJ1EnLCAncScsICdNJywgJ0wnLCAndycsICdkJywgJ0QnLCAnZScsICdjJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhJU09XZWVrWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4pIHtcbiAgICAgIGlmICh0b2tlbiA9PT0gJ1InKSB7XG4gICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQoNCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQodG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChfZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgdmFyIGZpcnN0V2Vla09mWWVhciA9IG5ldyBEYXRlKDApO1xuICAgICAgZmlyc3RXZWVrT2ZZZWFyLnNldFVUQ0Z1bGxZZWFyKHZhbHVlLCAwLCA0KTtcbiAgICAgIGZpcnN0V2Vla09mWWVhci5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDSVNPV2VlayhmaXJzdFdlZWtPZlllYXIpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBJU09XZWVrWWVhclBhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IHBhcnNlTkRpZ2l0c1NpZ25lZCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBFeHRlbmRlZFllYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEV4dGVuZGVkWWVhclBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihFeHRlbmRlZFllYXJQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIEV4dGVuZGVkWWVhclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXh0ZW5kZWRZZWFyUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTMwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydHJywgJ3knLCAnWScsICdSJywgJ3cnLCAnSScsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRXh0ZW5kZWRZZWFyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgaWYgKHRva2VuID09PSAndScpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCg0LCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIodmFsdWUsIDAsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBFeHRlbmRlZFllYXJQYXJzZXI7XG59KFBhcnNlcik7IiwgImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgUXVhcnRlclBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoUXVhcnRlclBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihRdWFydGVyUGFyc2VyKTtcblxuICBmdW5jdGlvbiBRdWFydGVyUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBRdWFydGVyUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTIwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAncScsICdNJywgJ0wnLCAndycsICdJJywgJ2QnLCAnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoUXVhcnRlclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgIGNhc2UgJ1FRJzpcbiAgICAgICAgICAvLyAwMSwgMDIsIDAzLCAwNFxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgICAgLy8gMXN0LCAybmQsIDNyZCwgNHRoXG5cbiAgICAgICAgY2FzZSAnUW8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdxdWFydGVyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuXG4gICAgICAgIGNhc2UgJ1FRUSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcblxuICAgICAgICBjYXNlICdRUVFRUSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG5cbiAgICAgICAgY2FzZSAnUVFRUSc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNb250aCgodmFsdWUgLSAxKSAqIDMsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBRdWFydGVyUGFyc2VyO1xufShQYXJzZXIpOyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhTdGFuZEFsb25lUXVhcnRlclBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihTdGFuZEFsb25lUXVhcnRlclBhcnNlcik7XG5cbiAgZnVuY3Rpb24gU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTIwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAnUScsICdNJywgJ0wnLCAndycsICdJJywgJ2QnLCAnRCcsICdpJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICAgIGNhc2UgJ3EnOlxuICAgICAgICBjYXNlICdxcSc6XG4gICAgICAgICAgLy8gMDEsIDAyLCAwMywgMDRcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuXG4gICAgICAgIGNhc2UgJ3FvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAncXVhcnRlcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gUTEsIFEyLCBRMywgUTRcblxuICAgICAgICBjYXNlICdxcXEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG5cbiAgICAgICAgY2FzZSAncXFxcXEnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuXG4gICAgICAgIGNhc2UgJ3FxcXEnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSA0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgoKHZhbHVlIC0gMSkgKiAzLCAxKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXI7XG59KFBhcnNlcik7IiwgImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgeyBtYXBWYWx1ZSwgcGFyc2VORGlnaXRzLCBwYXJzZU51bWVyaWNQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5leHBvcnQgdmFyIE1vbnRoUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhNb250aFBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihNb250aFBhcnNlcik7XG5cbiAgZnVuY3Rpb24gTW9udGhQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1vbnRoUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnWScsICdSJywgJ3EnLCAnUScsICdMJywgJ3cnLCAnSScsICdEJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCAxMTApO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKE1vbnRoUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHZhciB2YWx1ZUNhbGxiYWNrID0gZnVuY3Rpb24gdmFsdWVDYWxsYmFjayh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgLSAxO1xuICAgICAgfTtcblxuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAxLCAyLCAuLi4sIDEyXG4gICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5tb250aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyAwMSwgMDIsIC4uLiwgMTJcblxuICAgICAgICBjYXNlICdNTSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cygyLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcblxuICAgICAgICBjYXNlICdNbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ21vbnRoJ1xuICAgICAgICAgIH0pLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG5cbiAgICAgICAgY2FzZSAnTU1NJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gSiwgRiwgLi4uLCBEXG5cbiAgICAgICAgY2FzZSAnTU1NTU0nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcblxuICAgICAgICBjYXNlICdNTU1NJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMTE7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZS5zZXRVVENNb250aCh2YWx1ZSwgMSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1vbnRoUGFyc2VyO1xufShQYXJzZXIpOyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzLCBtYXBWYWx1ZSB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBTdGFuZEFsb25lTW9udGhQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFN0YW5kQWxvbmVNb250aFBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihTdGFuZEFsb25lTW9udGhQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIFN0YW5kQWxvbmVNb250aFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhbmRBbG9uZU1vbnRoUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTEwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAncScsICdRJywgJ00nLCAndycsICdJJywgJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFN0YW5kQWxvbmVNb250aFBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlIC0gMTtcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gMSwgMiwgLi4uLCAxMlxuICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMubW9udGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gMDEsIDAyLCAuLi4sIDEyXG5cbiAgICAgICAgY2FzZSAnTEwnOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHMoMiwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyAxc3QsIDJuZCwgLi4uLCAxMnRoXG5cbiAgICAgICAgY2FzZSAnTG8nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdtb250aCdcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuXG4gICAgICAgIGNhc2UgJ0xMTCc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSkgfHwgbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIEosIEYsIC4uLiwgRFxuXG4gICAgICAgIGNhc2UgJ0xMTExMJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG5cbiAgICAgICAgY2FzZSAnTExMTCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdzdGFuZGFsb25lJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgodmFsdWUsIDEpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTdGFuZEFsb25lTW9udGhQYXJzZXI7XG59KFBhcnNlcik7IiwgImltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL3RvSW50ZWdlci9pbmRleC5qc1wiO1xuaW1wb3J0IHRvRGF0ZSBmcm9tIFwiLi4vLi4vdG9EYXRlL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VVRDV2VlayBmcm9tIFwiLi4vZ2V0VVRDV2Vlay9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENXZWVrKGRpcnR5RGF0ZSwgZGlydHlXZWVrLCBvcHRpb25zKSB7XG4gIHJlcXVpcmVkQXJncygyLCBhcmd1bWVudHMpO1xuICB2YXIgZGF0ZSA9IHRvRGF0ZShkaXJ0eURhdGUpO1xuICB2YXIgd2VlayA9IHRvSW50ZWdlcihkaXJ0eVdlZWspO1xuICB2YXIgZGlmZiA9IGdldFVUQ1dlZWsoZGF0ZSwgb3B0aW9ucykgLSB3ZWVrO1xuICBkYXRlLnNldFVUQ0RhdGUoZGF0ZS5nZXRVVENEYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBkYXRlO1xufSIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgc2V0VVRDV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENXZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgc3RhcnRPZlVUQ1dlZWsgZnJvbSBcIi4uLy4uLy4uL19saWIvc3RhcnRPZlVUQ1dlZWsvaW5kZXguanNcIjsgLy8gTG9jYWwgd2VlayBvZiB5ZWFyXG5cbmV4cG9ydCB2YXIgTG9jYWxXZWVrUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhMb2NhbFdlZWtQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTG9jYWxXZWVrUGFyc2VyKTtcblxuICBmdW5jdGlvbiBMb2NhbFdlZWtQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExvY2FsV2Vla1BhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEwMCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsneScsICdSJywgJ3UnLCAncScsICdRJywgJ00nLCAnTCcsICdJJywgJ2QnLCAnRCcsICdpJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMb2NhbFdlZWtQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICd3JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMud2VlaywgZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgY2FzZSAnd28nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICd3ZWVrJ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDUzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBzdGFydE9mVVRDV2VlayhzZXRVVENXZWVrKGRhdGUsIHZhbHVlLCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIExvY2FsV2Vla1BhcnNlcjtcbn0oUGFyc2VyKTsiLCAiaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBnZXRVVENJU09XZWVrIGZyb20gXCIuLi9nZXRVVENJU09XZWVrL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9yZXF1aXJlZEFyZ3MvaW5kZXguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFVUQ0lTT1dlZWsoZGlydHlEYXRlLCBkaXJ0eUlTT1dlZWspIHtcbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBpc29XZWVrID0gdG9JbnRlZ2VyKGRpcnR5SVNPV2Vlayk7XG4gIHZhciBkaWZmID0gZ2V0VVRDSVNPV2VlayhkYXRlKSAtIGlzb1dlZWs7XG4gIGRhdGUuc2V0VVRDRGF0ZShkYXRlLmdldFVUQ0RhdGUoKSAtIGRpZmYgKiA3KTtcbiAgcmV0dXJuIGRhdGU7XG59IiwgImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBzZXRVVENJU09XZWVrIGZyb20gXCIuLi8uLi8uLi9fbGliL3NldFVUQ0lTT1dlZWsvaW5kZXguanNcIjtcbmltcG9ydCBzdGFydE9mVVRDSVNPV2VlayBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zdGFydE9mVVRDSVNPV2Vlay9pbmRleC5qc1wiOyAvLyBJU08gd2VlayBvZiB5ZWFyXG5cbmV4cG9ydCB2YXIgSVNPV2Vla1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSVNPV2Vla1BhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihJU09XZWVrUGFyc2VyKTtcblxuICBmdW5jdGlvbiBJU09XZWVrUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJU09XZWVrUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMTAwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1knLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ3cnLCAnZCcsICdEJywgJ2UnLCAnYycsICd0JywgJ1QnXSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoSVNPV2Vla1BhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0knOlxuICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy53ZWVrLCBkYXRlU3RyaW5nKTtcblxuICAgICAgICBjYXNlICdJbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3dlZWsnXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNTM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHN0YXJ0T2ZVVENJU09XZWVrKHNldFVUQ0lTT1dlZWsoZGF0ZSwgdmFsdWUpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gSVNPV2Vla1BhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IGlzTGVhcFllYXJJbmRleCwgcGFyc2VORGlnaXRzLCBwYXJzZU51bWVyaWNQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG52YXIgREFZU19JTl9NT05USCA9IFszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTtcbnZhciBEQVlTX0lOX01PTlRIX0xFQVBfWUVBUiA9IFszMSwgMjksIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXTsgLy8gRGF5IG9mIHRoZSBtb250aFxuXG5leHBvcnQgdmFyIERhdGVQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKERhdGVQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoRGF0ZVBhcnNlcik7XG5cbiAgZnVuY3Rpb24gRGF0ZVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF0ZVBhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdWJQcmlvcml0eVwiLCAxKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydZJywgJ1InLCAncScsICdRJywgJ3cnLCAnSScsICdEJywgJ2knLCAnZScsICdjJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhEYXRlUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmRhdGUsIGRhdGVTdHJpbmcpO1xuXG4gICAgICAgIGNhc2UgJ2RvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF0ZSdcbiAgICAgICAgICB9KTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHZhciB5ZWFyID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgdmFyIGlzTGVhcFllYXIgPSBpc0xlYXBZZWFySW5kZXgoeWVhcik7XG4gICAgICB2YXIgbW9udGggPSBkYXRlLmdldFVUQ01vbnRoKCk7XG5cbiAgICAgIGlmIChpc0xlYXBZZWFyKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IERBWVNfSU5fTU9OVEhfTEVBUF9ZRUFSW21vbnRoXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IERBWVNfSU5fTU9OVEhbbW9udGhdO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDRGF0ZSh2YWx1ZSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIERhdGVQYXJzZXI7XG59KFBhcnNlcik7IiwgImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMsIGlzTGVhcFllYXJJbmRleCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBEYXlPZlllYXJQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKERheU9mWWVhclBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihEYXlPZlllYXJQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIERheU9mWWVhclBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF5T2ZZZWFyUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgOTApO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN1YnByaW9yaXR5XCIsIDEpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ1knLCAnUicsICdxJywgJ1EnLCAnTScsICdMJywgJ3cnLCAnSScsICdkJywgJ0UnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKERheU9mWWVhclBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIGNhc2UgJ0QnOlxuICAgICAgICBjYXNlICdERCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmRheU9mWWVhciwgZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgY2FzZSAnRG8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdkYXRlJ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShkYXRlLCB2YWx1ZSkge1xuICAgICAgdmFyIHllYXIgPSBkYXRlLmdldFVUQ0Z1bGxZZWFyKCk7XG4gICAgICB2YXIgaXNMZWFwWWVhciA9IGlzTGVhcFllYXJJbmRleCh5ZWFyKTtcblxuICAgICAgaWYgKGlzTGVhcFllYXIpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMzY2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gMzY1O1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTW9udGgoMCwgdmFsdWUpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBEYXlPZlllYXJQYXJzZXI7XG59KFBhcnNlcik7IiwgImltcG9ydCB0b0RhdGUgZnJvbSBcIi4uLy4uL3RvRGF0ZS9pbmRleC5qc1wiO1xuaW1wb3J0IHJlcXVpcmVkQXJncyBmcm9tIFwiLi4vcmVxdWlyZWRBcmdzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9JbnRlZ2VyIGZyb20gXCIuLi90b0ludGVnZXIvaW5kZXguanNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4uL2RlZmF1bHRPcHRpb25zL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENEYXkoZGlydHlEYXRlLCBkaXJ0eURheSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX3JlZjIsIF9yZWYzLCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZSwgX29wdGlvbnMkbG9jYWxlJG9wdGlvLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwsIF9kZWZhdWx0T3B0aW9ucyRsb2NhbDI7XG5cbiAgcmVxdWlyZWRBcmdzKDIsIGFyZ3VtZW50cyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciB3ZWVrU3RhcnRzT24gPSB0b0ludGVnZXIoKF9yZWYgPSAoX3JlZjIgPSAoX3JlZjMgPSAoX29wdGlvbnMkd2Vla1N0YXJ0c09uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX29wdGlvbnMkd2Vla1N0YXJ0c09uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX29wdGlvbnMkbG9jYWxlJG9wdGlvID0gX29wdGlvbnMkbG9jYWxlLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZSRvcHRpbyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlJG9wdGlvLndlZWtTdGFydHNPbikgIT09IG51bGwgJiYgX3JlZjMgIT09IHZvaWQgMCA/IF9yZWYzIDogZGVmYXVsdE9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmICE9PSB2b2lkIDAgPyBfcmVmIDogMCk7IC8vIFRlc3QgaWYgd2Vla1N0YXJ0c09uIGlzIGJldHdlZW4gMCBhbmQgNiBfYW5kXyBpcyBub3QgTmFOXG5cbiAgaWYgKCEod2Vla1N0YXJ0c09uID49IDAgJiYgd2Vla1N0YXJ0c09uIDw9IDYpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3dlZWtTdGFydHNPbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNiBpbmNsdXNpdmVseScpO1xuICB9XG5cbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlEYXRlKTtcbiAgdmFyIGRheSA9IHRvSW50ZWdlcihkaXJ0eURheSk7XG4gIHZhciBjdXJyZW50RGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIHJlbWFpbmRlciA9IGRheSAlIDc7XG4gIHZhciBkYXlJbmRleCA9IChyZW1haW5kZXIgKyA3KSAlIDc7XG4gIHZhciBkaWZmID0gKGRheUluZGV4IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gY3VycmVudERheTtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufSIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHNldFVUQ0RheSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENEYXkvaW5kZXguanNcIjsgLy8gRGF5IG9mIHdlZWtcblxuZXhwb3J0IHZhciBEYXlQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKERheVBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihEYXlQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIERheVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGF5UGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgOTApO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ0QnLCAnaScsICdlJywgJ2MnLCAndCcsICdUJ10pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKERheVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAgIC8vIFR1ZVxuICAgICAgICBjYXNlICdFJzpcbiAgICAgICAgY2FzZSAnRUUnOlxuICAgICAgICBjYXNlICdFRUUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFRcblxuICAgICAgICBjYXNlICdFRUVFRSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVcblxuICAgICAgICBjYXNlICdFRUVFRUUnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1ZXNkYXlcblxuICAgICAgICBjYXNlICdFRUVFJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBkYXRlID0gc2V0VVRDRGF5KGRhdGUsIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRGF5UGFyc2VyO1xufShQYXJzZXIpOyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHNldFVUQ0RheSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENEYXkvaW5kZXguanNcIjsgLy8gTG9jYWwgZGF5IG9mIHdlZWtcblxuZXhwb3J0IHZhciBMb2NhbERheVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoTG9jYWxEYXlQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoTG9jYWxEYXlQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIExvY2FsRGF5UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBMb2NhbERheVBhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1InLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ0knLCAnZCcsICdEJywgJ0UnLCAnaScsICdjJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMb2NhbERheVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgICB2YXIgdmFsdWVDYWxsYmFjayA9IGZ1bmN0aW9uIHZhbHVlQ2FsbGJhY2sodmFsdWUpIHtcbiAgICAgICAgdmFyIHdob2xlV2Vla0RheXMgPSBNYXRoLmZsb29yKCh2YWx1ZSAtIDEpIC8gNykgKiA3O1xuICAgICAgICByZXR1cm4gKHZhbHVlICsgb3B0aW9ucy53ZWVrU3RhcnRzT24gKyA2KSAlIDcgKyB3aG9sZVdlZWtEYXlzO1xuICAgICAgfTtcblxuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAzXG4gICAgICAgIGNhc2UgJ2UnOlxuICAgICAgICBjYXNlICdlZSc6XG4gICAgICAgICAgLy8gMDNcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyAzcmRcblxuICAgICAgICBjYXNlICdlbyc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ2RheSdcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFR1ZVxuXG4gICAgICAgIGNhc2UgJ2VlZSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVFxuXG4gICAgICAgIGNhc2UgJ2VlZWVlJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdVxuXG4gICAgICAgIGNhc2UgJ2VlZWVlZSc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVlc2RheVxuXG4gICAgICAgIGNhc2UgJ2VlZWUnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA2O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgIGRhdGUgPSBzZXRVVENEYXkoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpO1xuICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMb2NhbERheVBhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmltcG9ydCBzZXRVVENEYXkgZnJvbSBcIi4uLy4uLy4uL19saWIvc2V0VVRDRGF5L2luZGV4LmpzXCI7IC8vIFN0YW5kLWFsb25lIGxvY2FsIGRheSBvZiB3ZWVrXG5cbmV4cG9ydCB2YXIgU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyKTtcblxuICBmdW5jdGlvbiBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0YW5kQWxvbmVMb2NhbERheVBhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1InLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ0knLCAnZCcsICdEJywgJ0UnLCAnaScsICdlJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIHZhciB3aG9sZVdlZWtEYXlzID0gTWF0aC5mbG9vcigodmFsdWUgLSAxKSAvIDcpICogNztcbiAgICAgICAgcmV0dXJuICh2YWx1ZSArIG9wdGlvbnMud2Vla1N0YXJ0c09uICsgNikgJSA3ICsgd2hvbGVXZWVrRGF5cztcbiAgICAgIH07XG5cbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgLy8gM1xuICAgICAgICBjYXNlICdjJzpcbiAgICAgICAgY2FzZSAnY2MnOlxuICAgICAgICAgIC8vIDAzXG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgICAgLy8gM3JkXG5cbiAgICAgICAgY2FzZSAnY28nOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdkYXknXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBUdWVcblxuICAgICAgICBjYXNlICdjY2MnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFRcblxuICAgICAgICBjYXNlICdjY2NjYyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgLy8gVHVcblxuICAgICAgICBjYXNlICdjY2NjY2MnOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICAgIC8vIFR1ZXNkYXlcblxuICAgICAgICBjYXNlICdjY2NjJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnc3RhbmRhbG9uZSdcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ3N0YW5kYWxvbmUnXG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInZhbGlkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICBkYXRlID0gc2V0VVRDRGF5KGRhdGUsIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyO1xufShQYXJzZXIpOyIsICJpbXBvcnQgdG9EYXRlIGZyb20gXCIuLi8uLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCByZXF1aXJlZEFyZ3MgZnJvbSBcIi4uL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHRvSW50ZWdlciBmcm9tIFwiLi4vdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRVVENJU09EYXkoZGlydHlEYXRlLCBkaXJ0eURheSkge1xuICByZXF1aXJlZEFyZ3MoMiwgYXJndW1lbnRzKTtcbiAgdmFyIGRheSA9IHRvSW50ZWdlcihkaXJ0eURheSk7XG5cbiAgaWYgKGRheSAlIDcgPT09IDApIHtcbiAgICBkYXkgPSBkYXkgLSA3O1xuICB9XG5cbiAgdmFyIHdlZWtTdGFydHNPbiA9IDE7XG4gIHZhciBkYXRlID0gdG9EYXRlKGRpcnR5RGF0ZSk7XG4gIHZhciBjdXJyZW50RGF5ID0gZGF0ZS5nZXRVVENEYXkoKTtcbiAgdmFyIHJlbWFpbmRlciA9IGRheSAlIDc7XG4gIHZhciBkYXlJbmRleCA9IChyZW1haW5kZXIgKyA3KSAlIDc7XG4gIHZhciBkaWZmID0gKGRheUluZGV4IDwgd2Vla1N0YXJ0c09uID8gNyA6IDApICsgZGF5IC0gY3VycmVudERheTtcbiAgZGF0ZS5zZXRVVENEYXRlKGRhdGUuZ2V0VVRDRGF0ZSgpICsgZGlmZik7XG4gIHJldHVybiBkYXRlO1xufSIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHNldFVUQ0lTT0RheSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9zZXRVVENJU09EYXkvaW5kZXguanNcIjsgLy8gSVNPIGRheSBvZiB3ZWVrXG5cbmV4cG9ydCB2YXIgSVNPRGF5UGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhJU09EYXlQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPRGF5UGFyc2VyKTtcblxuICBmdW5jdGlvbiBJU09EYXlQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIElTT0RheVBhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDkwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd5JywgJ1knLCAndScsICdxJywgJ1EnLCAnTScsICdMJywgJ3cnLCAnZCcsICdEJywgJ0UnLCAnZScsICdjJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhJU09EYXlQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiA3O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfTtcblxuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAvLyAyXG4gICAgICAgIGNhc2UgJ2knOlxuICAgICAgICBjYXNlICdpaSc6XG4gICAgICAgICAgLy8gMDJcbiAgICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICAgIC8vIDJuZFxuXG4gICAgICAgIGNhc2UgJ2lvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnZGF5J1xuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBUdWVcblxuICAgICAgICBjYXNlICdpaWknOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBUXG5cbiAgICAgICAgY2FzZSAnaWlpaWknOlxuICAgICAgICAgIHJldHVybiBtYXBWYWx1ZShtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgICAvLyBUdVxuXG4gICAgICAgIGNhc2UgJ2lpaWlpaSc6XG4gICAgICAgICAgcmV0dXJuIG1hcFZhbHVlKG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3Nob3J0JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAgIC8vIFR1ZXNkYXlcblxuICAgICAgICBjYXNlICdpaWlpJzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gbWFwVmFsdWUobWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnd2lkZScsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdzaG9ydCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgZGF0ZSA9IHNldFVUQ0lTT0RheShkYXRlLCB2YWx1ZSk7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIElTT0RheVBhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IGRheVBlcmlvZEVudW1Ub0hvdXJzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEFNUE1QYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEFNUE1QYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoQU1QTVBhcnNlcik7XG5cbiAgZnVuY3Rpb24gQU1QTVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQU1QTVBhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDgwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydiJywgJ0InLCAnSCcsICdrJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBTVBNUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnYSc6XG4gICAgICAgIGNhc2UgJ2FhJzpcbiAgICAgICAgY2FzZSAnYWFhJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNhc2UgJ2FhYWFhJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNhc2UgJ2FhYWEnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKGRheVBlcmlvZEVudW1Ub0hvdXJzKHZhbHVlKSwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQU1QTVBhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IGRheVBlcmlvZEVudW1Ub0hvdXJzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEFNUE1NaWRuaWdodFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoQU1QTU1pZG5pZ2h0UGFyc2VyLCBfUGFyc2VyKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEFNUE1NaWRuaWdodFBhcnNlcik7XG5cbiAgZnVuY3Rpb24gQU1QTU1pZG5pZ2h0UGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBTVBNTWlkbmlnaHRQYXJzZXIpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA4MCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnYScsICdCJywgJ0gnLCAnaycsICd0JywgJ1QnXSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQU1QTU1pZG5pZ2h0UGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnYic6XG4gICAgICAgIGNhc2UgJ2JiJzpcbiAgICAgICAgY2FzZSAnYmJiJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNhc2UgJ2JiYmJiJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGNhc2UgJ2JiYmInOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICd3aWRlJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ2FiYnJldmlhdGVkJyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pIHx8IG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ25hcnJvdycsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ0hvdXJzKGRheVBlcmlvZEVudW1Ub0hvdXJzKHZhbHVlKSwgMCwgMCwgMCk7XG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQU1QTU1pZG5pZ2h0UGFyc2VyO1xufShQYXJzZXIpOyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgZGF5UGVyaW9kRW51bVRvSG91cnMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjsgLy8gaW4gdGhlIG1vcm5pbmcsIGluIHRoZSBhZnRlcm5vb24sIGluIHRoZSBldmVuaW5nLCBhdCBuaWdodFxuXG5leHBvcnQgdmFyIERheVBlcmlvZFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRGF5UGVyaW9kUGFyc2VyLCBfUGFyc2VyKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKERheVBlcmlvZFBhcnNlcik7XG5cbiAgZnVuY3Rpb24gRGF5UGVyaW9kUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEYXlQZXJpb2RQYXJzZXIpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA4MCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnYScsICdiJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhEYXlQZXJpb2RQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdCJzpcbiAgICAgICAgY2FzZSAnQkInOlxuICAgICAgICBjYXNlICdCQkInOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICdhYmJyZXZpYXRlZCcsXG4gICAgICAgICAgICBjb250ZXh0OiAnZm9ybWF0dGluZydcbiAgICAgICAgICB9KSB8fCBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgY2FzZSAnQkJCQkInOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6ICduYXJyb3cnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgY2FzZSAnQkJCQic6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogJ3dpZGUnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnYWJicmV2aWF0ZWQnLFxuICAgICAgICAgICAgY29udGV4dDogJ2Zvcm1hdHRpbmcnXG4gICAgICAgICAgfSkgfHwgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnbmFycm93JyxcbiAgICAgICAgICAgIGNvbnRleHQ6ICdmb3JtYXR0aW5nJ1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoZGF5UGVyaW9kRW51bVRvSG91cnModmFsdWUpLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBEYXlQZXJpb2RQYXJzZXI7XG59KFBhcnNlcik7IiwgImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZU51bWVyaWNQYXR0ZXJuLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgSG91cjF0bzEyUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhIb3VyMXRvMTJQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSG91cjF0bzEyUGFyc2VyKTtcblxuICBmdW5jdGlvbiBIb3VyMXRvMTJQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhvdXIxdG8xMlBhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDcwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWydIJywgJ0snLCAnaycsICd0JywgJ1QnXSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoSG91cjF0bzEyUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmhvdXIxMmgsIGRhdGVTdHJpbmcpO1xuXG4gICAgICAgIGNhc2UgJ2hvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnaG91cidcbiAgICAgICAgICB9KTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAxMjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICB2YXIgaXNQTSA9IGRhdGUuZ2V0VVRDSG91cnMoKSA+PSAxMjtcblxuICAgICAgaWYgKGlzUE0gJiYgdmFsdWUgPCAxMikge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlICsgMTIsIDAsIDAsIDApO1xuICAgICAgfSBlbHNlIGlmICghaXNQTSAmJiB2YWx1ZSA9PT0gMTIpIHtcbiAgICAgICAgZGF0ZS5zZXRVVENIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUsIDAsIDAsIDApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gSG91cjF0bzEyUGFyc2VyO1xufShQYXJzZXIpOyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VOdW1lcmljUGF0dGVybiwgcGFyc2VORGlnaXRzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5leHBvcnQgdmFyIEhvdXIwdG8yM1BhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSG91cjB0bzIzUGFyc2VyLCBfUGFyc2VyKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEhvdXIwdG8yM1BhcnNlcik7XG5cbiAgZnVuY3Rpb24gSG91cjB0bzIzUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIb3VyMHRvMjNQYXJzZXIpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA3MCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsIFsnYScsICdiJywgJ2gnLCAnSycsICdrJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhIb3VyMHRvMjNQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjIzaCwgZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgY2FzZSAnSG8nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDIzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEhvdXIwdG8yM1BhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBIb3VyMFRvMTFQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEhvdXIwVG8xMVBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihIb3VyMFRvMTFQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIEhvdXIwVG8xMVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSG91cjBUbzExUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNzApO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2gnLCAnSCcsICdrJywgJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhIb3VyMFRvMTFQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdLJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjExaCwgZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgY2FzZSAnS28nOlxuICAgICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHVuaXQ6ICdob3VyJ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2YWxpZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIHZhciBpc1BNID0gZGF0ZS5nZXRVVENIb3VycygpID49IDEyO1xuXG4gICAgICBpZiAoaXNQTSAmJiB2YWx1ZSA8IDEyKSB7XG4gICAgICAgIGRhdGUuc2V0VVRDSG91cnModmFsdWUgKyAxMiwgMCwgMCwgMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlLnNldFVUQ0hvdXJzKHZhbHVlLCAwLCAwLCAwKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEhvdXIwVG8xMVBhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBIb3VyMVRvMjRQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKEhvdXIxVG8yNFBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihIb3VyMVRvMjRQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIEhvdXIxVG8yNFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSG91cjFUbzI0UGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNzApO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ2EnLCAnYicsICdoJywgJ0gnLCAnSycsICd0JywgJ1QnXSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoSG91cjFUbzI0UGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAnayc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmhvdXIyNGgsIGRhdGVTdHJpbmcpO1xuXG4gICAgICAgIGNhc2UgJ2tvJzpcbiAgICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiAnaG91cidcbiAgICAgICAgICB9KTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAyNDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICB2YXIgaG91cnMgPSB2YWx1ZSA8PSAyNCA/IHZhbHVlICUgMjQgOiB2YWx1ZTtcbiAgICAgIGRhdGUuc2V0VVRDSG91cnMoaG91cnMsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEhvdXIxVG8yNFBhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBNaW51dGVQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKE1pbnV0ZVBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihNaW51dGVQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIE1pbnV0ZVBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWludXRlUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNjApO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhNaW51dGVQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMubWludXRlLCBkYXRlU3RyaW5nKTtcblxuICAgICAgICBjYXNlICdtbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ21pbnV0ZSdcbiAgICAgICAgICB9KTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA1OTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ01pbnV0ZXModmFsdWUsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1pbnV0ZVBhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTnVtZXJpY1BhdHRlcm4sIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBTZWNvbmRQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKFNlY29uZFBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihTZWNvbmRQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIFNlY29uZFBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2Vjb25kUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgNTApO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhTZWNvbmRQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2Vjb25kLCBkYXRlU3RyaW5nKTtcblxuICAgICAgICBjYXNlICdzbyc6XG4gICAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogJ3NlY29uZCdcbiAgICAgICAgICB9KTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidmFsaWRhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA1OTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBkYXRlLnNldFVUQ1NlY29uZHModmFsdWUsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFNlY29uZFBhcnNlcjtcbn0oUGFyc2VyKTsiLCAiZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgRnJhY3Rpb25PZlNlY29uZFBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoRnJhY3Rpb25PZlNlY29uZFBhcnNlciwgX1BhcnNlcik7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihGcmFjdGlvbk9mU2Vjb25kUGFyc2VyKTtcblxuICBmdW5jdGlvbiBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJpb3JpdHlcIiwgMzApO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImluY29tcGF0aWJsZVRva2Vuc1wiLCBbJ3QnLCAnVCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhGcmFjdGlvbk9mU2Vjb25kUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgdmFyIHZhbHVlQ2FsbGJhY2sgPSBmdW5jdGlvbiB2YWx1ZUNhbGxiYWNrKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlICogTWF0aC5wb3coMTAsIC10b2tlbi5sZW5ndGggKyAzKSk7XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICAgIGRhdGUuc2V0VVRDTWlsbGlzZWNvbmRzKHZhbHVlKTtcbiAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBGcmFjdGlvbk9mU2Vjb25kUGFyc2VyO1xufShQYXJzZXIpOyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgdGltZXpvbmVQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlVGltZXpvbmVQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7IC8vIFRpbWV6b25lIChJU08tODYwMS4gKzAwOjAwIGlzIGAnWidgKVxuXG5leHBvcnQgdmFyIElTT1RpbWV6b25lV2l0aFpQYXJzZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9QYXJzZXIpIHtcbiAgX2luaGVyaXRzKElTT1RpbWV6b25lV2l0aFpQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPVGltZXpvbmVXaXRoWlBhcnNlcik7XG5cbiAgZnVuY3Rpb24gSVNPVGltZXpvbmVXaXRoWlBhcnNlcigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgSVNPVGltZXpvbmVXaXRoWlBhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd0JywgJ1QnLCAneCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhJU09UaW1lem9uZVdpdGhaUGFyc2VyLCBbe1xuICAgIGtleTogXCJwYXJzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICBjYXNlICdYJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpY09wdGlvbmFsTWludXRlcywgZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgY2FzZSAnWFgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmJhc2ljLCBkYXRlU3RyaW5nKTtcblxuICAgICAgICBjYXNlICdYWFhYJzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpY09wdGlvbmFsU2Vjb25kcywgZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgY2FzZSAnWFhYWFgnOlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmV4dGVuZGVkT3B0aW9uYWxTZWNvbmRzLCBkYXRlU3RyaW5nKTtcblxuICAgICAgICBjYXNlICdYWFgnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybih0aW1lem9uZVBhdHRlcm5zLmV4dGVuZGVkLCBkYXRlU3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChkYXRlLCBmbGFncywgdmFsdWUpIHtcbiAgICAgIGlmIChmbGFncy50aW1lc3RhbXBJc1NldCkge1xuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpIC0gdmFsdWUpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBJU09UaW1lem9uZVdpdGhaUGFyc2VyO1xufShQYXJzZXIpOyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgdGltZXpvbmVQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHBhcnNlVGltZXpvbmVQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7IC8vIFRpbWV6b25lIChJU08tODYwMSlcblxuZXhwb3J0IHZhciBJU09UaW1lem9uZVBhcnNlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1BhcnNlcikge1xuICBfaW5oZXJpdHMoSVNPVGltZXpvbmVQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoSVNPVGltZXpvbmVQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIElTT1RpbWV6b25lUGFyc2VyKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJU09UaW1lem9uZVBhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDEwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgWyd0JywgJ1QnLCAnWCddKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhJU09UaW1lem9uZVBhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4pIHtcbiAgICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbE1pbnV0ZXMsIGRhdGVTdHJpbmcpO1xuXG4gICAgICAgIGNhc2UgJ3h4JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5iYXNpYywgZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgY2FzZSAneHh4eCc6XG4gICAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbFNlY29uZHMsIGRhdGVTdHJpbmcpO1xuXG4gICAgICAgIGNhc2UgJ3h4eHh4JzpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZE9wdGlvbmFsU2Vjb25kcywgZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgY2FzZSAneHh4JzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4odGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZCwgZGF0ZVN0cmluZyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXQoZGF0ZSwgZmxhZ3MsIHZhbHVlKSB7XG4gICAgICBpZiAoZmxhZ3MudGltZXN0YW1wSXNTZXQpIHtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSAtIHZhbHVlKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gSVNPVGltZXpvbmVQYXJzZXI7XG59KFBhcnNlcik7IiwgImZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZUFueURpZ2l0c1NpZ25lZCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuZXhwb3J0IHZhciBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhUaW1lc3RhbXBTZWNvbmRzUGFyc2VyLCBfUGFyc2VyKTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFRpbWVzdGFtcFNlY29uZHNQYXJzZXIpO1xuXG4gIGZ1bmN0aW9uIFRpbWVzdGFtcFNlY29uZHNQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbWVzdGFtcFNlY29uZHNQYXJzZXIpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwcmlvcml0eVwiLCA0MCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaW5jb21wYXRpYmxlVG9rZW5zXCIsICcqJyk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGltZXN0YW1wU2Vjb25kc1BhcnNlciwgW3tcbiAgICBrZXk6IFwicGFyc2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGFyc2UoZGF0ZVN0cmluZykge1xuICAgICAgcmV0dXJuIHBhcnNlQW55RGlnaXRzU2lnbmVkKGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0KF9kYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgICByZXR1cm4gW25ldyBEYXRlKHZhbHVlICogMTAwMCksIHtcbiAgICAgICAgdGltZXN0YW1wSXNTZXQ6IHRydWVcbiAgICAgIH1dO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyO1xufShQYXJzZXIpOyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VBbnlEaWdpdHNTaWduZWQgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbmV4cG9ydCB2YXIgVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUGFyc2VyKSB7XG4gIF9pbmhlcml0cyhUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIsIF9QYXJzZXIpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyKTtcblxuICBmdW5jdGlvbiBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInByaW9yaXR5XCIsIDIwKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJpbmNvbXBhdGlibGVUb2tlbnNcIiwgJyonKTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIsIFt7XG4gICAga2V5OiBcInBhcnNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmcpIHtcbiAgICAgIHJldHVybiBwYXJzZUFueURpZ2l0c1NpZ25lZChkYXRlU3RyaW5nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldChfZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIFtuZXcgRGF0ZSh2YWx1ZSksIHtcbiAgICAgICAgdGltZXN0YW1wSXNTZXQ6IHRydWVcbiAgICAgIH1dO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXI7XG59KFBhcnNlcik7IiwgImltcG9ydCB7IEVyYVBhcnNlciB9IGZyb20gXCIuL0VyYVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgWWVhclBhcnNlciB9IGZyb20gXCIuL1llYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IExvY2FsV2Vla1llYXJQYXJzZXIgfSBmcm9tIFwiLi9Mb2NhbFdlZWtZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09XZWVrWWVhclBhcnNlciB9IGZyb20gXCIuL0lTT1dlZWtZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBFeHRlbmRlZFllYXJQYXJzZXIgfSBmcm9tIFwiLi9FeHRlbmRlZFllYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IFF1YXJ0ZXJQYXJzZXIgfSBmcm9tIFwiLi9RdWFydGVyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTdGFuZEFsb25lUXVhcnRlclBhcnNlciB9IGZyb20gXCIuL1N0YW5kQWxvbmVRdWFydGVyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBNb250aFBhcnNlciB9IGZyb20gXCIuL01vbnRoUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTdGFuZEFsb25lTW9udGhQYXJzZXIgfSBmcm9tIFwiLi9TdGFuZEFsb25lTW9udGhQYXJzZXIuanNcIjtcbmltcG9ydCB7IExvY2FsV2Vla1BhcnNlciB9IGZyb20gXCIuL0xvY2FsV2Vla1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPV2Vla1BhcnNlciB9IGZyb20gXCIuL0lTT1dlZWtQYXJzZXIuanNcIjtcbmltcG9ydCB7IERhdGVQYXJzZXIgfSBmcm9tIFwiLi9EYXRlUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBEYXlPZlllYXJQYXJzZXIgfSBmcm9tIFwiLi9EYXlPZlllYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IERheVBhcnNlciB9IGZyb20gXCIuL0RheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTG9jYWxEYXlQYXJzZXIgfSBmcm9tIFwiLi9Mb2NhbERheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyIH0gZnJvbSBcIi4vU3RhbmRBbG9uZUxvY2FsRGF5UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09EYXlQYXJzZXIgfSBmcm9tIFwiLi9JU09EYXlQYXJzZXIuanNcIjtcbmltcG9ydCB7IEFNUE1QYXJzZXIgfSBmcm9tIFwiLi9BTVBNUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBBTVBNTWlkbmlnaHRQYXJzZXIgfSBmcm9tIFwiLi9BTVBNTWlkbmlnaHRQYXJzZXIuanNcIjtcbmltcG9ydCB7IERheVBlcmlvZFBhcnNlciB9IGZyb20gXCIuL0RheVBlcmlvZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjF0bzEyUGFyc2VyIH0gZnJvbSBcIi4vSG91cjF0bzEyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBIb3VyMHRvMjNQYXJzZXIgfSBmcm9tIFwiLi9Ib3VyMHRvMjNQYXJzZXIuanNcIjtcbmltcG9ydCB7IEhvdXIwVG8xMVBhcnNlciB9IGZyb20gXCIuL0hvdXIwVG8xMVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjFUbzI0UGFyc2VyIH0gZnJvbSBcIi4vSG91cjFUbzI0UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBNaW51dGVQYXJzZXIgfSBmcm9tIFwiLi9NaW51dGVQYXJzZXIuanNcIjtcbmltcG9ydCB7IFNlY29uZFBhcnNlciB9IGZyb20gXCIuL1NlY29uZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgRnJhY3Rpb25PZlNlY29uZFBhcnNlciB9IGZyb20gXCIuL0ZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIuanNcIjtcbmltcG9ydCB7IElTT1RpbWV6b25lV2l0aFpQYXJzZXIgfSBmcm9tIFwiLi9JU09UaW1lem9uZVdpdGhaUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBJU09UaW1lem9uZVBhcnNlciB9IGZyb20gXCIuL0lTT1RpbWV6b25lUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyIH0gZnJvbSBcIi4vVGltZXN0YW1wU2Vjb25kc1BhcnNlci5qc1wiO1xuaW1wb3J0IHsgVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyIH0gZnJvbSBcIi4vVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLmpzXCI7XG4vKlxuICogfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAgYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgfCAgQSogfCBNaWxsaXNlY29uZHMgaW4gZGF5ICAgICAgICAgICAgfFxuICogfCAgYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgfCAgQiAgfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgfFxuICogfCAgYyAgfCBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2VlayAgfCAgQyogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfFxuICogfCAgZCAgfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgfCAgRCAgfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZSAgfCBMb2NhbCBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgfCAgRSAgfCBEYXkgb2Ygd2VlayAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRiogfCBEYXkgb2Ygd2VlayBpbiBtb250aCAgICAgICAgICAgfFxuICogfCAgZyogfCBNb2RpZmllZCBKdWxpYW4gZGF5ICAgICAgICAgICAgfCAgRyAgfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaCAgfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgfCAgSCAgfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaSEgfCBJU08gZGF5IG9mIHdlZWsgICAgICAgICAgICAgICAgfCAgSSEgfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgfFxuICogfCAgaiogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfCAgSiogfCBMb2NhbGl6ZWQgaG91ciB3L28gZGF5IHBlcmlvZCAgfFxuICogfCAgayAgfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgfCAgSyAgfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbCogfCAoZGVwcmVjYXRlZCkgICAgICAgICAgICAgICAgICAgfCAgTCAgfCBTdGFuZC1hbG9uZSBtb250aCAgICAgICAgICAgICAgfFxuICogfCAgbSAgfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTSAgfCBNb250aCAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbyEgfCBPcmRpbmFsIG51bWJlciBtb2RpZmllciAgICAgICAgfCAgTyogfCBUaW1lem9uZSAoR01UKSAgICAgICAgICAgICAgICAgfFxuICogfCAgcCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgcSAgfCBTdGFuZC1hbG9uZSBxdWFydGVyICAgICAgICAgICAgfCAgUSAgfCBRdWFydGVyICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgciogfCBSZWxhdGVkIEdyZWdvcmlhbiB5ZWFyICAgICAgICAgfCAgUiEgfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgfFxuICogfCAgcyAgfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUyAgfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgfFxuICogfCAgdCEgfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgfCAgVCEgfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgfFxuICogfCAgdSAgfCBFeHRlbmRlZCB5ZWFyICAgICAgICAgICAgICAgICAgfCAgVSogfCBDeWNsaWMgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgdiogfCBUaW1lem9uZSAoZ2VuZXJpYyBub24tbG9jYXQuKSAgfCAgViogfCBUaW1lem9uZSAobG9jYXRpb24pICAgICAgICAgICAgfFxuICogfCAgdyAgfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgfCAgVyogfCBXZWVrIG9mIG1vbnRoICAgICAgICAgICAgICAgICAgfFxuICogfCAgeCAgfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgfCAgWCAgfCBUaW1lem9uZSAoSVNPLTg2MDEpICAgICAgICAgICAgfFxuICogfCAgeSAgfCBZZWFyIChhYnMpICAgICAgICAgICAgICAgICAgICAgfCAgWSAgfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgfFxuICogfCAgeiogfCBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0LikgfCAgWiogfCBUaW1lem9uZSAoYWxpYXNlcykgICAgICAgICAgICAgfFxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICogYXJlIG5vdCBpbXBsZW1lbnRlZCBidXQgcmVzZXJ2ZWQgYnkgVW5pY29kZSBzdGFuZGFyZC5cbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAhIGFyZSBub24tc3RhbmRhcmQsIGJ1dCBpbXBsZW1lbnRlZCBieSBkYXRlLWZuczpcbiAqIC0gYG9gIG1vZGlmaWVzIHRoZSBwcmV2aW91cyB0b2tlbiB0byB0dXJuIGl0IGludG8gYW4gb3JkaW5hbCAoc2VlIGBwYXJzZWAgZG9jcylcbiAqIC0gYGlgIGlzIElTTyBkYXkgb2Ygd2Vlay4gRm9yIGBpYCBhbmQgYGlpYCBpcyByZXR1cm5zIG51bWVyaWMgSVNPIHdlZWsgZGF5cyxcbiAqICAgaS5lLiA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuICogLSBgSWAgaXMgSVNPIHdlZWsgb2YgeWVhciwgYXMgb3Bwb3NlZCB0byBgd2Agd2hpY2ggaXMgbG9jYWwgd2VlayBvZiB5ZWFyLlxuICogLSBgUmAgaXMgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsIGFzIG9wcG9zZWQgdG8gYFlgIHdoaWNoIGlzIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiAgIGBSYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYElgIGFuZCBgaWBcbiAqICAgZm9yIHVuaXZlcnNhbCBJU08gd2Vlay1udW1iZXJpbmcgZGF0ZSwgd2hlcmVhc1xuICogICBgWWAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB3YCBhbmQgYGVgXG4gKiAgIGZvciB3ZWVrLW51bWJlcmluZyBkYXRlIHNwZWNpZmljIHRvIHRoZSBsb2NhbGUuXG4gKi9cblxuZXhwb3J0IHZhciBwYXJzZXJzID0ge1xuICBHOiBuZXcgRXJhUGFyc2VyKCksXG4gIHk6IG5ldyBZZWFyUGFyc2VyKCksXG4gIFk6IG5ldyBMb2NhbFdlZWtZZWFyUGFyc2VyKCksXG4gIFI6IG5ldyBJU09XZWVrWWVhclBhcnNlcigpLFxuICB1OiBuZXcgRXh0ZW5kZWRZZWFyUGFyc2VyKCksXG4gIFE6IG5ldyBRdWFydGVyUGFyc2VyKCksXG4gIHE6IG5ldyBTdGFuZEFsb25lUXVhcnRlclBhcnNlcigpLFxuICBNOiBuZXcgTW9udGhQYXJzZXIoKSxcbiAgTDogbmV3IFN0YW5kQWxvbmVNb250aFBhcnNlcigpLFxuICB3OiBuZXcgTG9jYWxXZWVrUGFyc2VyKCksXG4gIEk6IG5ldyBJU09XZWVrUGFyc2VyKCksXG4gIGQ6IG5ldyBEYXRlUGFyc2VyKCksXG4gIEQ6IG5ldyBEYXlPZlllYXJQYXJzZXIoKSxcbiAgRTogbmV3IERheVBhcnNlcigpLFxuICBlOiBuZXcgTG9jYWxEYXlQYXJzZXIoKSxcbiAgYzogbmV3IFN0YW5kQWxvbmVMb2NhbERheVBhcnNlcigpLFxuICBpOiBuZXcgSVNPRGF5UGFyc2VyKCksXG4gIGE6IG5ldyBBTVBNUGFyc2VyKCksXG4gIGI6IG5ldyBBTVBNTWlkbmlnaHRQYXJzZXIoKSxcbiAgQjogbmV3IERheVBlcmlvZFBhcnNlcigpLFxuICBoOiBuZXcgSG91cjF0bzEyUGFyc2VyKCksXG4gIEg6IG5ldyBIb3VyMHRvMjNQYXJzZXIoKSxcbiAgSzogbmV3IEhvdXIwVG8xMVBhcnNlcigpLFxuICBrOiBuZXcgSG91cjFUbzI0UGFyc2VyKCksXG4gIG06IG5ldyBNaW51dGVQYXJzZXIoKSxcbiAgczogbmV3IFNlY29uZFBhcnNlcigpLFxuICBTOiBuZXcgRnJhY3Rpb25PZlNlY29uZFBhcnNlcigpLFxuICBYOiBuZXcgSVNPVGltZXpvbmVXaXRoWlBhcnNlcigpLFxuICB4OiBuZXcgSVNPVGltZXpvbmVQYXJzZXIoKSxcbiAgdDogbmV3IFRpbWVzdGFtcFNlY29uZHNQYXJzZXIoKSxcbiAgVDogbmV3IFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlcigpXG59OyIsICJmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG8sIGFsbG93QXJyYXlMaWtlKSB7IHZhciBpdDsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgfHwgb1tTeW1ib2wuaXRlcmF0b3JdID09IG51bGwpIHsgaWYgKEFycmF5LmlzQXJyYXkobykgfHwgKGl0ID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8pKSB8fCBhbGxvd0FycmF5TGlrZSAmJiBvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgeyBpZiAoaXQpIG8gPSBpdDsgdmFyIGkgPSAwOyB2YXIgRiA9IGZ1bmN0aW9uIEYoKSB7fTsgcmV0dXJuIHsgczogRiwgbjogZnVuY3Rpb24gbigpIHsgaWYgKGkgPj0gby5sZW5ndGgpIHJldHVybiB7IGRvbmU6IHRydWUgfTsgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBvW2krK10gfTsgfSwgZTogZnVuY3Rpb24gZShfZSkgeyB0aHJvdyBfZTsgfSwgZjogRiB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfSB2YXIgbm9ybWFsQ29tcGxldGlvbiA9IHRydWUsIGRpZEVyciA9IGZhbHNlLCBlcnI7IHJldHVybiB7IHM6IGZ1bmN0aW9uIHMoKSB7IGl0ID0gb1tTeW1ib2wuaXRlcmF0b3JdKCk7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciBzdGVwID0gaXQubmV4dCgpOyBub3JtYWxDb21wbGV0aW9uID0gc3RlcC5kb25lOyByZXR1cm4gc3RlcDsgfSwgZTogZnVuY3Rpb24gZShfZTIpIHsgZGlkRXJyID0gdHJ1ZTsgZXJyID0gX2UyOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBpZiAoIW5vcm1hbENvbXBsZXRpb24gJiYgaXQucmV0dXJuICE9IG51bGwpIGl0LnJldHVybigpOyB9IGZpbmFsbHkgeyBpZiAoZGlkRXJyKSB0aHJvdyBlcnI7IH0gfSB9OyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuaW1wb3J0IGRlZmF1bHRMb2NhbGUgZnJvbSBcIi4uL19saWIvZGVmYXVsdExvY2FsZS9pbmRleC5qc1wiO1xuaW1wb3J0IHN1Yk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vc3ViTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgdG9EYXRlIGZyb20gXCIuLi90b0RhdGUvaW5kZXguanNcIjtcbmltcG9ydCBhc3NpZ24gZnJvbSBcIi4uL19saWIvYXNzaWduL2luZGV4LmpzXCI7XG5pbXBvcnQgbG9uZ0Zvcm1hdHRlcnMgZnJvbSBcIi4uL19saWIvZm9ybWF0L2xvbmdGb3JtYXR0ZXJzL2luZGV4LmpzXCI7XG5pbXBvcnQgZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyBmcm9tIFwiLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuLCBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4sIHRocm93UHJvdGVjdGVkRXJyb3IgfSBmcm9tIFwiLi4vX2xpYi9wcm90ZWN0ZWRUb2tlbnMvaW5kZXguanNcIjtcbmltcG9ydCB0b0ludGVnZXIgZnJvbSBcIi4uL19saWIvdG9JbnRlZ2VyL2luZGV4LmpzXCI7XG5pbXBvcnQgcmVxdWlyZWRBcmdzIGZyb20gXCIuLi9fbGliL3JlcXVpcmVkQXJncy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgRGF0ZVRvU3lzdGVtVGltZXpvbmVTZXR0ZXIgfSBmcm9tIFwiLi9fbGliL1NldHRlci5qc1wiO1xuaW1wb3J0IHsgcGFyc2VycyB9IGZyb20gXCIuL19saWIvcGFyc2Vycy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi4vX2xpYi9kZWZhdWx0T3B0aW9ucy9pbmRleC5qc1wiOyAvLyBUaGlzIFJlZ0V4cCBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0cyBzZXBhcmF0ZWQgYnkgYHxgOlxuLy8gLSBbeVlRcU1Md0lkRGVjaWhIS2ttc11vIG1hdGNoZXMgYW55IGF2YWlsYWJsZSBvcmRpbmFsIG51bWJlciB0b2tlblxuLy8gICAob25lIG9mIHRoZSBjZXJ0YWluIGxldHRlcnMgZm9sbG93ZWQgYnkgYG9gKVxuLy8gLSAoXFx3KVxcMSogbWF0Y2hlcyBhbnkgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGxldHRlclxuLy8gLSAnJyBtYXRjaGVzIHR3byBxdW90ZSBjaGFyYWN0ZXJzIGluIGEgcm93XG4vLyAtICcoJyd8W14nXSkrKCd8JCkgbWF0Y2hlcyBhbnl0aGluZyBzdXJyb3VuZGVkIGJ5IHR3byBxdW90ZSBjaGFyYWN0ZXJzICgnKSxcbi8vICAgZXhjZXB0IGEgc2luZ2xlIHF1b3RlIHN5bWJvbCwgd2hpY2ggZW5kcyB0aGUgc2VxdWVuY2UuXG4vLyAgIFR3byBxdW90ZSBjaGFyYWN0ZXJzIGRvIG5vdCBlbmQgdGhlIHNlcXVlbmNlLlxuLy8gICBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzaW5nbGUgcXVvdGVcbi8vICAgdGhlbiB0aGUgc2VxdWVuY2Ugd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4vLyAtIC4gbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciB1bm1hdGNoZWQgYnkgcHJldmlvdXMgcGFydHMgb2YgdGhlIFJlZ0V4cHNcblxudmFyIGZvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvW3lZUXFNTHdJZERlY2loSEtrbXNdb3woXFx3KVxcMSp8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7IC8vIFRoaXMgUmVnRXhwIGNhdGNoZXMgc3ltYm9scyBlc2NhcGVkIGJ5IHF1b3RlcywgYW5kIGFsc29cbi8vIHNlcXVlbmNlcyBvZiBzeW1ib2xzIFAsIHAsIGFuZCB0aGUgY29tYmluYXRpb25zIGxpa2UgYFBQUFBQUFBwcHBwcGBcblxudmFyIGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gL1ArcCt8UCt8cCt8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG52YXIgZXNjYXBlZFN0cmluZ1JlZ0V4cCA9IC9eJyhbXl0qPyknPyQvO1xudmFyIGRvdWJsZVF1b3RlUmVnRXhwID0gLycnL2c7XG52YXIgbm90V2hpdGVzcGFjZVJlZ0V4cCA9IC9cXFMvO1xudmFyIHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwID0gL1thLXpBLVpdLztcbi8qKlxuICogQG5hbWUgcGFyc2VcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgUGFyc2UgdGhlIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIGRhdGUgcGFyc2VkIGZyb20gc3RyaW5nIHVzaW5nIHRoZSBnaXZlbiBmb3JtYXQgc3RyaW5nLlxuICpcbiAqID4gXHUyNkEwXHVGRTBGIFBsZWFzZSBub3RlIHRoYXQgdGhlIGBmb3JtYXRgIHRva2VucyBkaWZmZXIgZnJvbSBNb21lbnQuanMgYW5kIG90aGVyIGxpYnJhcmllcy5cbiAqID4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogVGhlIGNoYXJhY3RlcnMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgd3JhcHBlZCBiZXR3ZWVuIHR3byBzaW5nbGUgcXVvdGVzIGNoYXJhY3RlcnMgKCcpIGFyZSBlc2NhcGVkLlxuICogVHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3csIHdoZXRoZXIgaW5zaWRlIG9yIG91dHNpZGUgYSBxdW90ZWQgc2VxdWVuY2UsIHJlcHJlc2VudCBhICdyZWFsJyBzaW5nbGUgcXVvdGUuXG4gKlxuICogRm9ybWF0IG9mIHRoZSBmb3JtYXQgc3RyaW5nIGlzIGJhc2VkIG9uIFVuaWNvZGUgVGVjaG5pY2FsIFN0YW5kYXJkICMzNTpcbiAqIGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqIHdpdGggYSBmZXcgYWRkaXRpb25zIChzZWUgbm90ZSA1IGJlbG93IHRoZSB0YWJsZSkuXG4gKlxuICogTm90IGFsbCB0b2tlbnMgYXJlIGNvbXBhdGlibGUuIENvbWJpbmF0aW9ucyB0aGF0IGRvbid0IG1ha2Ugc2Vuc2Ugb3IgY291bGQgbGVhZCB0byBidWdzIGFyZSBwcm9oaWJpdGVkXG4gKiBhbmQgd2lsbCB0aHJvdyBgUmFuZ2VFcnJvcmAuIEZvciBleGFtcGxlIHVzYWdlIG9mIDI0LWhvdXIgZm9ybWF0IHRva2VuIHdpdGggQU0vUE0gdG9rZW4gd2lsbCB0aHJvdyBhbiBleGNlcHRpb246XG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogcGFyc2UoJzIzIEFNJywgJ0hIIGEnLCBuZXcgRGF0ZSgpKVxuICogLy89PiBSYW5nZUVycm9yOiBUaGUgZm9ybWF0IHN0cmluZyBtdXN0bid0IGNvbnRhaW4gYEhIYCBhbmQgYGFgIGF0IHRoZSBzYW1lIHRpbWVcbiAqIGBgYFxuICpcbiAqIFNlZSB0aGUgY29tcGF0aWJpbGl0eSB0YWJsZTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFkc2hlZXRzL2QvZS8yUEFDWC0xdlFPUFUzeFVocGxsbDZkeW9NbVZVWEhLbF84Q1JEczZfdWVMbWV4M1NvcXdodW9sa3VOM08wNWw0cnF4NWgxZEtYOGViNDZVbC1DQ1NycS9wdWJodG1sP2dpZD0wJnNpbmdsZT10cnVlXG4gKlxuICogQWNjZXB0ZWQgZm9ybWF0IHN0cmluZyBwYXR0ZXJuczpcbiAqIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8UHJpb3J8IFBhdHRlcm4gfCBSZXN1bHQgZXhhbXBsZXMgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tfFxuICogfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQwIHwgRy4uR0dHICB8IEFELCBCQyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEdHR0cgICAgfCBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBHR0dHRyAgIHwgQSwgQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDYWxlbmRhciB5ZWFyICAgICAgICAgICAgICAgICAgIHwgMTMwIHwgeSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5OTk5ICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5ICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eXkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXl5eSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgIHwgMTMwIHwgWSAgICAgICB8IDQ0LCAxLCAxOTAwLCAyMDE3LCA5MDAwICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlvICAgICAgfCA0NHRoLCAxc3QsIDE5MDB0aCwgOTk5OTk5OXRoICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWSAgICAgIHwgNDQsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgIHwgNCw2ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZICAgICB8IDA0NCwgMDAxLCAxMjMsIDk5OSAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWVkgICAgfCAwMDQ0LCAwMDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgfCA0LDYgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVlZWSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgIHwgMTMwIHwgUiAgICAgICB8IC00MywgMSwgMTkwMCwgMjAxNywgOTk5OSwgLTk5OTkgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSICAgICAgfCAtNDMsIDAxLCAwMCwgMTcgICAgICAgICAgICAgICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlIgICAgIHwgLTA0MywgMDAxLCAxMjMsIDk5OSwgLTk5OSAgICAgICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSUiAgICB8IC0wMDQzLCAwMDAxLCAyMDE3LCA5OTk5LCAtOTk5OSAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUlJSICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQsNSB8XG4gKiB8IEV4dGVuZGVkIHllYXIgICAgICAgICAgICAgICAgICAgfCAxMzAgfCB1ICAgICAgIHwgLTQzLCAxLCAxOTAwLCAyMDE3LCA5OTk5LCAtOTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXUgICAgICB8IC00MywgMDEsIDk5LCAtOTkgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dSAgICAgfCAtMDQzLCAwMDEsIDEyMywgOTk5LCAtOTk5ICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXV1ICAgIHwgLTAwNDMsIDAwMDEsIDIwMTcsIDk5OTksIC05OTk5ICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1dXUgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCAgIHxcbiAqIHwgUXVhcnRlciAoZm9ybWF0dGluZykgICAgICAgICAgICB8IDEyMCB8IFEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVFRICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRUVEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgUXVhcnRlciAoc3RhbmQtYWxvbmUpICAgICAgICAgICB8IDEyMCB8IHEgICAgICAgfCAxLCAyLCAzLCA0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxbyAgICAgIHwgMXN0LCAybmQsIDNyZCwgNHRoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXEgICAgICB8IDAxLCAwMiwgMDMsIDA0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcSAgICAgfCBRMSwgUTIsIFEzLCBRNCAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXFxICAgIHwgMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxcXEgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8IDMgICAgIHxcbiAqIHwgTW9udGggKGZvcm1hdHRpbmcpICAgICAgICAgICAgICB8IDExMCB8IE0gICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU0gICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTSAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU1NICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NTU0gICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTW9udGggKHN0YW5kLWFsb25lKSAgICAgICAgICAgICB8IDExMCB8IEwgICAgICAgfCAxLCAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTJ0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTEwgICAgICB8IDAxLCAwMiwgLi4uLCAxMiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTCAgICAgfCBKYW4sIEZlYiwgLi4uLCBEZWMgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTExMICAgIHwgSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXIgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMTEwgICB8IEosIEYsIC4uLiwgRCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgICB8IDEwMCB8IHcgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB3byAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgd3cgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgICB8IDEwMCB8IEkgICAgICAgfCAxLCAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBJbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgNTN0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSUkgICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IGQgICAgICAgfCAxLCAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBkbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzFzdCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZGQgICAgICB8IDAxLCAwMiwgLi4uLCAzMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgICB8ICA5MCB8IEQgICAgICAgfCAxLCAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMzY1dGgsIDM2NnRoICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgREQgICAgICB8IDAxLCAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IERERCAgICAgfCAwMDEsIDAwMiwgLi4uLCAzNjUsIDM2NiAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBEREREICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBEYXkgb2Ygd2VlayAoZm9ybWF0dGluZykgICAgICAgIHwgIDkwIHwgRS4uRUVFICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUUgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFRSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRUVFICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgSVNPIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICB8ICA5MCB8IGkgICAgICAgfCAxLCAyLCAzLCAuLi4sIDcgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgN3RoICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWkgICAgICB8IDAxLCAwMiwgLi4uLCAwNyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaWkgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWlpaSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCA1ICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgfCAgOTAgfCBlICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZW8gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWUgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWVlICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlZWUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCBkYXkgb2Ygd2VlayAoc3RhbmQtYWxvbmUpIHwgIDkwIHwgYyAgICAgICB8IDIsIDMsIDQsIC4uLiwgMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNvICAgICAgfCAybmQsIDNyZCwgLi4uLCAxc3QgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjYyAgICAgIHwgMDIsIDAzLCAuLi4sIDAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2MgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjYyAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjY2NjICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4MCB8IGEuLmFhYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBhYWFhICAgIHwgYS5tLiwgcC5tLiAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICB8ICA4MCB8IGIuLmJiYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBiYmJiICAgIHwgYS5tLiwgcC5tLiwgbm9vbiwgbWlkbmlnaHQgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgYmJiYmIgICB8IGEsIHAsIG4sIG1pICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgRmxleGlibGUgZGF5IHBlcmlvZCAgICAgICAgICAgICB8ICA4MCB8IEIuLkJCQiAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBCQkJCICAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgQkJCQkIgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGggICAgICAgfCAxLCAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBobyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMTJ0aCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaGggICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEggICAgICAgfCAwLCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBIbyAgICAgIHwgMHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgSEggICAgICB8IDAwLCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMC0xMV0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IEsgICAgICAgfCAxLCAyLCAuLi4sIDExLCAwICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBLbyAgICAgIHwgMXN0LCAybmQsIC4uLiwgMTF0aCwgMHRoICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgS0sgICAgICB8IDAxLCAwMiwgLi4uLCAxMSwgMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgSG91ciBbMS0yNF0gICAgICAgICAgICAgICAgICAgICB8ICA3MCB8IGsgICAgICAgfCAyNCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBrbyAgICAgIHwgMjR0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwga2sgICAgICB8IDI0LCAwMSwgMDIsIC4uLiwgMjMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2MCB8IG0gICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBtbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgbW0gICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1MCB8IHMgICAgICAgfCAwLCAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBzbyAgICAgIHwgMHRoLCAxc3QsIC4uLiwgNTl0aCAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgc3MgICAgICB8IDAwLCAwMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgU2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgICAgICB8ICA0MCB8IHQgICAgICAgfCA1MTI5Njk1MjAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB0dCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgIHwgIDMwIHwgUyAgICAgICB8IDAsIDEsIC4uLiwgOSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTICAgICAgfCAwMCwgMDEsIC4uLiwgOTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTU1MgICAgIHwgMDAwLCAwMDEsIC4uLiwgOTk5ICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1NTUyAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgTWlsbGlzZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICB8ICAyMCB8IFQgICAgICAgfCA1MTI5Njk1MjA5MDAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBUVCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy8gWikgICAgICAgIHwgIDEwIHwgWCAgICAgICB8IC0wOCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYICAgICAgfCAtMDgwMCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFggICAgIHwgLTA4OjAwLCArMDU6MzAsIFogICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYWCAgICB8IC0wODAwLCArMDUzMCwgWiwgKzEyMzQ1NiAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWFhYICAgfCAtMDg6MDAsICswNTozMCwgWiwgKzEyOjM0OjU2ICAgICAgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICAgfCAgMTAgfCB4ICAgICAgIHwgLTA4LCArMDUzMCwgKzAwICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHggICAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eCAgICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHh4ICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCwgKzEyMzQ1NiAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4eHggICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAsICsxMjozNDo1NiB8ICAgICAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgICB8ICBOQSB8IFAgICAgICAgfCAwNS8yOS8xNDUzICAgICAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUCAgICAgIHwgTWF5IDI5LCAxNDUzICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQICAgICB8IE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUFAgICAgfCBTdW5kYXksIE1heSAyOXRoLCAxNDUzICAgICAgICAgICAgfCAyLDUsOCB8XG4gKiB8IExvbmcgbG9jYWxpemVkIHRpbWUgICAgICAgICAgICAgfCAgTkEgfCBwICAgICAgIHwgMTI6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgNSw4ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcHAgICAgICB8IDEyOjAwOjAwIEFNICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQ29tYmluYXRpb24gb2YgZGF0ZSBhbmQgdGltZSAgICB8ICBOQSB8IFBwICAgICAgfCAwNS8yOS8xNDUzLCAxMjowMCBBTSAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUHBwICAgIHwgTWF5IDI5LCAxNDUzLCAxMjowMDowMCBBTSAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQcHAgICB8IE1heSAyOXRoLCAxNDUzIGF0IC4uLiAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQUFBwcCAgfCBTdW5kYXksIE1heSAyOXRoLCAxNDUzIGF0IC4uLiAgICAgfCAyLDUsOCB8XG4gKiBOb3RlczpcbiAqIDEuIFwiRm9ybWF0dGluZ1wiIHVuaXRzIChlLmcuIGZvcm1hdHRpbmcgcXVhcnRlcikgaW4gdGhlIGRlZmF1bHQgZW4tVVMgbG9jYWxlXG4gKiAgICBhcmUgdGhlIHNhbWUgYXMgXCJzdGFuZC1hbG9uZVwiIHVuaXRzLCBidXQgYXJlIGRpZmZlcmVudCBpbiBzb21lIGxhbmd1YWdlcy5cbiAqICAgIFwiRm9ybWF0dGluZ1wiIHVuaXRzIGFyZSBkZWNsaW5lZCBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIHRoZSBsYW5ndWFnZVxuICogICAgaW4gdGhlIGNvbnRleHQgb2YgYSBkYXRlLiBcIlN0YW5kLWFsb25lXCIgdW5pdHMgYXJlIGFsd2F5cyBub21pbmF0aXZlIHNpbmd1bGFyLlxuICogICAgSW4gYGZvcm1hdGAgZnVuY3Rpb24sIHRoZXkgd2lsbCBwcm9kdWNlIGRpZmZlcmVudCByZXN1bHQ6XG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBMTExMJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZCdgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdkbyBNTU1NJywge2xvY2FsZTogY3N9KSAvLz0+ICc2LiBsaXN0b3BhZHUnYFxuICpcbiAqICAgIGBwYXJzZWAgd2lsbCB0cnkgdG8gbWF0Y2ggYm90aCBmb3JtYXR0aW5nIGFuZCBzdGFuZC1hbG9uZSB1bml0cyBpbnRlcmNoYW5nYWJseS5cbiAqXG4gKiAyLiBBbnkgc2VxdWVuY2Ugb2YgdGhlIGlkZW50aWNhbCBsZXR0ZXJzIGlzIGEgcGF0dGVybiwgdW5sZXNzIGl0IGlzIGVzY2FwZWQgYnlcbiAqICAgIHRoZSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyAoc2VlIGJlbG93KS5cbiAqICAgIElmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIgdGhhbiBsaXN0ZWQgaW4gdGFibGU6XG4gKiAgICAtIGZvciBudW1lcmljYWwgdW5pdHMgKGB5eXl5eXl5eWApIGBwYXJzZWAgd2lsbCB0cnkgdG8gbWF0Y2ggYSBudW1iZXJcbiAqICAgICAgYXMgd2lkZSBhcyB0aGUgc2VxdWVuY2VcbiAqICAgIC0gZm9yIHRleHQgdW5pdHMgKGBNTU1NTU1NTWApIGBwYXJzZWAgd2lsbCB0cnkgdG8gbWF0Y2ggdGhlIHdpZGVzdCB2YXJpYXRpb24gb2YgdGhlIHVuaXQuXG4gKiAgICAgIFRoZXNlIHZhcmlhdGlvbnMgYXJlIG1hcmtlZCB3aXRoIFwiMlwiIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUuXG4gKlxuICogMy4gYFFRUVFRYCBhbmQgYHFxcXFxYCBjb3VsZCBiZSBub3Qgc3RyaWN0bHkgbnVtZXJpY2FsIGluIHNvbWUgbG9jYWxlcy5cbiAqICAgIFRoZXNlIHRva2VucyByZXByZXNlbnQgdGhlIHNob3J0ZXN0IGZvcm0gb2YgdGhlIHF1YXJ0ZXIuXG4gKlxuICogNC4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIHBhdHRlcm5zIGFyZSBCLkMuIHllYXJzOlxuICpcbiAqICAgIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICogICAgfCBBQyAxIHwgICAxIHwgICAxIHxcbiAqICAgIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gKiAgICB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICpcbiAqICAgIEFsc28gYHl5YCB3aWxsIHRyeSB0byBndWVzcyB0aGUgY2VudHVyeSBvZiB0d28gZGlnaXQgeWVhciBieSBwcm94aW1pdHkgd2l0aCBgcmVmZXJlbmNlRGF0ZWA6XG4gKlxuICogICAgYHBhcnNlKCc1MCcsICd5eScsIG5ldyBEYXRlKDIwMTgsIDAsIDEpKSAvLz0+IFNhdCBKYW4gMDEgMjA1MCAwMDowMDowMGBcbiAqXG4gKiAgICBgcGFyc2UoJzc1JywgJ3l5JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gV2VkIEphbiAwMSAxOTc1IDAwOjAwOjAwYFxuICpcbiAqICAgIHdoaWxlIGB1dWAgd2lsbCBqdXN0IGFzc2lnbiB0aGUgeWVhciBhcyBpczpcbiAqXG4gKiAgICBgcGFyc2UoJzUwJywgJ3V1JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gU2F0IEphbiAwMSAwMDUwIDAwOjAwOjAwYFxuICpcbiAqICAgIGBwYXJzZSgnNzUnLCAndXUnLCBuZXcgRGF0ZSgyMDE4LCAwLCAxKSkgLy89PiBUdWUgSmFuIDAxIDAwNzUgMDA6MDA6MDBgXG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbc2V0SVNPV2Vla1llYXJde0BsaW5rIGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0SVNPV2Vla1llYXJ9XG4gKiAgICBhbmQgW3NldFdlZWtZZWFyXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3NldFdlZWtZZWFyfSkuXG4gKlxuICogNS4gVGhlc2UgcGF0dGVybnMgYXJlIG5vdCBpbiB0aGUgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogICAgLSBgaWA6IElTTyBkYXkgb2Ygd2Vla1xuICogICAgLSBgSWA6IElTTyB3ZWVrIG9mIHllYXJcbiAqICAgIC0gYFJgOiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogICAgLSBgb2A6IG9yZGluYWwgbnVtYmVyIG1vZGlmaWVyXG4gKiAgICAtIGBQYDogbG9uZyBsb2NhbGl6ZWQgZGF0ZVxuICogICAgLSBgcGA6IGxvbmcgbG9jYWxpemVkIHRpbWVcbiAqXG4gKiA2LiBgWVlgIGFuZCBgWVlZWWAgdG9rZW5zIHJlcHJlc2VudCB3ZWVrLW51bWJlcmluZyB5ZWFycyBidXQgdGhleSBhcmUgb2Z0ZW4gY29uZnVzZWQgd2l0aCB5ZWFycy5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDcuIGBEYCBhbmQgYEREYCB0b2tlbnMgcmVwcmVzZW50IGRheXMgb2YgdGhlIHllYXIgYnV0IHRoZXkgYXJlIG9mdGhlbiBjb25mdXNlZCB3aXRoIGRheXMgb2YgdGhlIG1vbnRoLlxuICogICAgWW91IHNob3VsZCBlbmFibGUgYG9wdGlvbnMudXNlQWRkaXRpb25hbERheU9mWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDguIGBQK2AgdG9rZW5zIGRvIG5vdCBoYXZlIGEgZGVmaW5lZCBwcmlvcml0eSBzaW5jZSB0aGV5IGFyZSBtZXJlbHkgYWxpYXNlcyB0byBvdGhlciB0b2tlbnMgYmFzZWRcbiAqICAgIG9uIHRoZSBnaXZlbiBsb2NhbGUuXG4gKlxuICogICAgdXNpbmcgYGVuLVVTYCBsb2NhbGU6IGBQYCA9PiBgTU0vZGQveXl5eWBcbiAqICAgIHVzaW5nIGBlbi1VU2AgbG9jYWxlOiBgcGAgPT4gYGhoOm1tIGFgXG4gKiAgICB1c2luZyBgcHQtQlJgIGxvY2FsZTogYFBgID0+IGBkZC9NTS95eXl5YFxuICogICAgdXNpbmcgYHB0LUJSYCBsb2NhbGU6IGBwYCA9PiBgSEg6bW1gXG4gKlxuICogVmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlIGRhdGUgaW4gdGhlIGRlc2NlbmRpbmcgb3JkZXIgb2YgaXRzIHVuaXQncyBwcmlvcml0eS5cbiAqIFVuaXRzIG9mIGFuIGVxdWFsIHByaW9yaXR5IG92ZXJ3cml0ZSBlYWNoIG90aGVyIGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlLlxuICpcbiAqIElmIG5vIHZhbHVlcyBvZiBoaWdoZXIgcHJpb3JpdHkgYXJlIHBhcnNlZCAoZS5nLiB3aGVuIHBhcnNpbmcgc3RyaW5nICdKYW51YXJ5IDFzdCcgd2l0aG91dCBhIHllYXIpLFxuICogdGhlIHZhbHVlcyB3aWxsIGJlIHRha2VuIGZyb20gM3JkIGFyZ3VtZW50IGByZWZlcmVuY2VEYXRlYCB3aGljaCB3b3JrcyBhcyBhIGNvbnRleHQgb2YgcGFyc2luZy5cbiAqXG4gKiBgcmVmZXJlbmNlRGF0ZWAgbXVzdCBiZSBwYXNzZWQgZm9yIGNvcnJlY3Qgd29yayBvZiB0aGUgZnVuY3Rpb24uXG4gKiBJZiB5b3UncmUgbm90IHN1cmUgd2hpY2ggYHJlZmVyZW5jZURhdGVgIHRvIHN1cHBseSwgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIERhdGU6XG4gKiBgcGFyc2UoJzAyLzExLzIwMTQnLCAnTU0vZGQveXl5eScsIG5ldyBEYXRlKCkpYFxuICogSW4gdGhpcyBjYXNlIHBhcnNpbmcgd2lsbCBiZSBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IGRhdGUuXG4gKiBJZiBgcmVmZXJlbmNlRGF0ZWAgaXMgYEludmFsaWQgRGF0ZWAgb3IgYSB2YWx1ZSBub3QgY29udmVydGlibGUgdG8gdmFsaWQgYERhdGVgLFxuICogdGhlbiBgSW52YWxpZCBEYXRlYCB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIFRoZSByZXN1bHQgbWF5IHZhcnkgYnkgbG9jYWxlLlxuICpcbiAqIElmIGBmb3JtYXRTdHJpbmdgIG1hdGNoZXMgd2l0aCBgZGF0ZVN0cmluZ2AgYnV0IGRvZXMgbm90IHByb3ZpZGVzIHRva2VucywgYHJlZmVyZW5jZURhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogSWYgcGFyc2luZyBmYWlsZWQsIGBJbnZhbGlkIERhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKiBJbnZhbGlkIERhdGUgaXMgYSBEYXRlLCB3aG9zZSB0aW1lIHZhbHVlIGlzIE5hTi5cbiAqIFRpbWUgdmFsdWUgb2YgRGF0ZTogaHR0cDovL2VzNS5naXRodWIuaW8vI3gxNS45LjEuMVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBkYXRlU3RyaW5nIC0gdGhlIHN0cmluZyB0byBwYXJzZVxuICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdFN0cmluZyAtIHRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0ge0RhdGV8TnVtYmVyfSByZWZlcmVuY2VEYXRlIC0gZGVmaW5lcyB2YWx1ZXMgbWlzc2luZyBmcm9tIHRoZSBwYXJzZWQgZGF0ZVN0cmluZ1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSAtIGFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKiBAcGFyYW0ge0xvY2FsZX0gW29wdGlvbnMubG9jYWxlPWRlZmF1bHRMb2NhbGVdIC0gdGhlIGxvY2FsZSBvYmplY3QuIFNlZSBbTG9jYWxlXXtAbGluayBodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL0xvY2FsZX1cbiAqIEBwYXJhbSB7MHwxfDJ8M3w0fDV8Nn0gW29wdGlvbnMud2Vla1N0YXJ0c09uPTBdIC0gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgKDAgLSBTdW5kYXkpXG4gKiBAcGFyYW0gezF8MnwzfDR8NXw2fDd9IFtvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZT0xXSAtIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vucz1mYWxzZV0gLSBpZiB0cnVlLCBhbGxvd3MgdXNhZ2Ugb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIgdG9rZW5zIGBZWWAgYW5kIGBZWVlZYDtcbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnM9ZmFsc2VdIC0gaWYgdHJ1ZSwgYWxsb3dzIHVzYWdlIG9mIHRoZSBkYXkgb2YgeWVhciB0b2tlbnMgYERgIGFuZCBgRERgO1xuICogICBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEByZXR1cm5zIHtEYXRlfSB0aGUgcGFyc2VkIGRhdGVcbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gMyBhcmd1bWVudHMgcmVxdWlyZWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLndlZWtTdGFydHNPbmAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDZcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDdcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBtYXRjaGAgcHJvcGVydHlcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgeXl5eWAgaW5zdGVhZCBvZiBgWVlZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGB5eWAgaW5zdGVhZCBvZiBgWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IHVzZSBgZGAgaW5zdGVhZCBvZiBgRGAgZm9yIGZvcm1hdHRpbmcgZGF5cyBvZiB0aGUgbW9udGggdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB7UmFuZ2VFcnJvcn0gdXNlIGBkZGAgaW5zdGVhZCBvZiBgRERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IGZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQYXJzZSAxMSBGZWJydWFyeSAyMDE0IGZyb20gbWlkZGxlLWVuZGlhbiBmb3JtYXQ6XG4gKiB2YXIgcmVzdWx0ID0gcGFyc2UoJzAyLzExLzIwMTQnLCAnTU0vZGQveXl5eScsIG5ldyBEYXRlKCkpXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQYXJzZSAyOHRoIG9mIEZlYnJ1YXJ5IGluIEVzcGVyYW50byBsb2NhbGUgaW4gdGhlIGNvbnRleHQgb2YgMjAxMCB5ZWFyOlxuICogaW1wb3J0IGVvIGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbydcbiAqIHZhciByZXN1bHQgPSBwYXJzZSgnMjgtYSBkZSBmZWJydWFybycsIFwiZG8gJ2RlJyBNTU1NXCIsIG5ldyBEYXRlKDIwMTAsIDAsIDEpLCB7XG4gKiAgIGxvY2FsZTogZW9cbiAqIH0pXG4gKiAvLz0+IFN1biBGZWIgMjggMjAxMCAwMDowMDowMFxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcnNlKGRpcnR5RGF0ZVN0cmluZywgZGlydHlGb3JtYXRTdHJpbmcsIGRpcnR5UmVmZXJlbmNlRGF0ZSwgb3B0aW9ucykge1xuICB2YXIgX3JlZiwgX29wdGlvbnMkbG9jYWxlLCBfcmVmMiwgX3JlZjMsIF9yZWY0LCBfb3B0aW9ucyRmaXJzdFdlZWtDb24sIF9vcHRpb25zJGxvY2FsZTIsIF9vcHRpb25zJGxvY2FsZTIkb3B0aSwgX2RlZmF1bHRPcHRpb25zJGxvY2FsLCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwyLCBfcmVmNSwgX3JlZjYsIF9yZWY3LCBfb3B0aW9ucyR3ZWVrU3RhcnRzT24sIF9vcHRpb25zJGxvY2FsZTMsIF9vcHRpb25zJGxvY2FsZTMkb3B0aSwgX2RlZmF1bHRPcHRpb25zJGxvY2FsMywgX2RlZmF1bHRPcHRpb25zJGxvY2FsNDtcblxuICByZXF1aXJlZEFyZ3MoMywgYXJndW1lbnRzKTtcbiAgdmFyIGRhdGVTdHJpbmcgPSBTdHJpbmcoZGlydHlEYXRlU3RyaW5nKTtcbiAgdmFyIGZvcm1hdFN0cmluZyA9IFN0cmluZyhkaXJ0eUZvcm1hdFN0cmluZyk7XG4gIHZhciBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIHZhciBsb2NhbGUgPSAoX3JlZiA9IChfb3B0aW9ucyRsb2NhbGUgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubG9jYWxlKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyRsb2NhbGUgIT09IHZvaWQgMCA/IF9vcHRpb25zJGxvY2FsZSA6IGRlZmF1bHRPcHRpb25zLmxvY2FsZSkgIT09IG51bGwgJiYgX3JlZiAhPT0gdm9pZCAwID8gX3JlZiA6IGRlZmF1bHRMb2NhbGU7XG5cbiAgaWYgKCFsb2NhbGUubWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbG9jYWxlIG11c3QgY29udGFpbiBtYXRjaCBwcm9wZXJ0eScpO1xuICB9XG5cbiAgdmFyIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9IHRvSW50ZWdlcigoX3JlZjIgPSAoX3JlZjMgPSAoX3JlZjQgPSAoX29wdGlvbnMkZmlyc3RXZWVrQ29uID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX29wdGlvbnMkZmlyc3RXZWVrQ29uICE9PSB2b2lkIDAgPyBfb3B0aW9ucyRmaXJzdFdlZWtDb24gOiBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyID0gb3B0aW9ucy5sb2NhbGUpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfb3B0aW9ucyRsb2NhbGUyJG9wdGkgPSBfb3B0aW9ucyRsb2NhbGUyLm9wdGlvbnMpID09PSBudWxsIHx8IF9vcHRpb25zJGxvY2FsZTIkb3B0aSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX29wdGlvbnMkbG9jYWxlMiRvcHRpLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSkgIT09IG51bGwgJiYgX3JlZjQgIT09IHZvaWQgMCA/IF9yZWY0IDogZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMyAhPT0gdm9pZCAwID8gX3JlZjMgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwyID0gX2RlZmF1bHRPcHRpb25zJGxvY2FsLm9wdGlvbnMpID09PSBudWxsIHx8IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDIuZmlyc3RXZWVrQ29udGFpbnNEYXRlKSAhPT0gbnVsbCAmJiBfcmVmMiAhPT0gdm9pZCAwID8gX3JlZjIgOiAxKTsgLy8gVGVzdCBpZiB3ZWVrU3RhcnRzT24gaXMgYmV0d2VlbiAxIGFuZCA3IF9hbmRfIGlzIG5vdCBOYU5cblxuICBpZiAoIShmaXJzdFdlZWtDb250YWluc0RhdGUgPj0gMSAmJiBmaXJzdFdlZWtDb250YWluc0RhdGUgPD0gNykpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZmlyc3RXZWVrQ29udGFpbnNEYXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA3IGluY2x1c2l2ZWx5Jyk7XG4gIH1cblxuICB2YXIgd2Vla1N0YXJ0c09uID0gdG9JbnRlZ2VyKChfcmVmNSA9IChfcmVmNiA9IChfcmVmNyA9IChfb3B0aW9ucyR3ZWVrU3RhcnRzT24gPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfb3B0aW9ucyR3ZWVrU3RhcnRzT24gIT09IHZvaWQgMCA/IF9vcHRpb25zJHdlZWtTdGFydHNPbiA6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTMgPSBvcHRpb25zLmxvY2FsZSkgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9vcHRpb25zJGxvY2FsZTMkb3B0aSA9IF9vcHRpb25zJGxvY2FsZTMub3B0aW9ucykgPT09IG51bGwgfHwgX29wdGlvbnMkbG9jYWxlMyRvcHRpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfb3B0aW9ucyRsb2NhbGUzJG9wdGkud2Vla1N0YXJ0c09uKSAhPT0gbnVsbCAmJiBfcmVmNyAhPT0gdm9pZCAwID8gX3JlZjcgOiBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY2ICE9PSB2b2lkIDAgPyBfcmVmNiA6IChfZGVmYXVsdE9wdGlvbnMkbG9jYWwzID0gZGVmYXVsdE9wdGlvbnMubG9jYWxlKSA9PT0gbnVsbCB8fCBfZGVmYXVsdE9wdGlvbnMkbG9jYWwzID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2RlZmF1bHRPcHRpb25zJGxvY2FsNCA9IF9kZWZhdWx0T3B0aW9ucyRsb2NhbDMub3B0aW9ucykgPT09IG51bGwgfHwgX2RlZmF1bHRPcHRpb25zJGxvY2FsNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RlZmF1bHRPcHRpb25zJGxvY2FsNC53ZWVrU3RhcnRzT24pICE9PSBudWxsICYmIF9yZWY1ICE9PSB2b2lkIDAgPyBfcmVmNSA6IDApOyAvLyBUZXN0IGlmIHdlZWtTdGFydHNPbiBpcyBiZXR3ZWVuIDAgYW5kIDYgX2FuZF8gaXMgbm90IE5hTlxuXG4gIGlmICghKHdlZWtTdGFydHNPbiA+PSAwICYmIHdlZWtTdGFydHNPbiA8PSA2KSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd3ZWVrU3RhcnRzT24gbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYgaW5jbHVzaXZlbHknKTtcbiAgfVxuXG4gIGlmIChmb3JtYXRTdHJpbmcgPT09ICcnKSB7XG4gICAgaWYgKGRhdGVTdHJpbmcgPT09ICcnKSB7XG4gICAgICByZXR1cm4gdG9EYXRlKGRpcnR5UmVmZXJlbmNlRGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdWJGbk9wdGlvbnMgPSB7XG4gICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiBmaXJzdFdlZWtDb250YWluc0RhdGUsXG4gICAgd2Vla1N0YXJ0c09uOiB3ZWVrU3RhcnRzT24sXG4gICAgbG9jYWxlOiBsb2NhbGVcbiAgfTsgLy8gSWYgdGltZXpvbmUgaXNuJ3Qgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIHNldCB0byB0aGUgc3lzdGVtIHRpbWV6b25lXG5cbiAgdmFyIHNldHRlcnMgPSBbbmV3IERhdGVUb1N5c3RlbVRpbWV6b25lU2V0dGVyKCldO1xuICB2YXIgdG9rZW5zID0gZm9ybWF0U3RyaW5nLm1hdGNoKGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwKS5tYXAoZnVuY3Rpb24gKHN1YnN0cmluZykge1xuICAgIHZhciBmaXJzdENoYXJhY3RlciA9IHN1YnN0cmluZ1swXTtcblxuICAgIGlmIChmaXJzdENoYXJhY3RlciBpbiBsb25nRm9ybWF0dGVycykge1xuICAgICAgdmFyIGxvbmdGb3JtYXR0ZXIgPSBsb25nRm9ybWF0dGVyc1tmaXJzdENoYXJhY3Rlcl07XG4gICAgICByZXR1cm4gbG9uZ0Zvcm1hdHRlcihzdWJzdHJpbmcsIGxvY2FsZS5mb3JtYXRMb25nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic3RyaW5nO1xuICB9KS5qb2luKCcnKS5tYXRjaChmb3JtYXR0aW5nVG9rZW5zUmVnRXhwKTtcbiAgdmFyIHVzZWRUb2tlbnMgPSBbXTtcblxuICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodG9rZW5zKSxcbiAgICAgIF9zdGVwO1xuXG4gIHRyeSB7XG4gICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoKSB7XG4gICAgICB2YXIgdG9rZW4gPSBfc3RlcC52YWx1ZTtcblxuICAgICAgaWYgKCEob3B0aW9ucyAhPT0gbnVsbCAmJiBvcHRpb25zICE9PSB2b2lkIDAgJiYgb3B0aW9ucy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnMpICYmIGlzUHJvdGVjdGVkV2Vla1llYXJUb2tlbih0b2tlbikpIHtcbiAgICAgICAgdGhyb3dQcm90ZWN0ZWRFcnJvcih0b2tlbiwgZm9ybWF0U3RyaW5nLCBkaXJ0eURhdGVTdHJpbmcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIShvcHRpb25zICE9PSBudWxsICYmIG9wdGlvbnMgIT09IHZvaWQgMCAmJiBvcHRpb25zLnVzZUFkZGl0aW9uYWxEYXlPZlllYXJUb2tlbnMpICYmIGlzUHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW4odG9rZW4pKSB7XG4gICAgICAgIHRocm93UHJvdGVjdGVkRXJyb3IodG9rZW4sIGZvcm1hdFN0cmluZywgZGlydHlEYXRlU3RyaW5nKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpcnN0Q2hhcmFjdGVyID0gdG9rZW5bMF07XG4gICAgICB2YXIgcGFyc2VyID0gcGFyc2Vyc1tmaXJzdENoYXJhY3Rlcl07XG5cbiAgICAgIGlmIChwYXJzZXIpIHtcbiAgICAgICAgdmFyIGluY29tcGF0aWJsZVRva2VucyA9IHBhcnNlci5pbmNvbXBhdGlibGVUb2tlbnM7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5jb21wYXRpYmxlVG9rZW5zKSkge1xuICAgICAgICAgIHZhciBpbmNvbXBhdGlibGVUb2tlbiA9IHVzZWRUb2tlbnMuZmluZChmdW5jdGlvbiAodXNlZFRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlVG9rZW5zLmluY2x1ZGVzKHVzZWRUb2tlbi50b2tlbikgfHwgdXNlZFRva2VuLnRva2VuID09PSBmaXJzdENoYXJhY3RlcjtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChpbmNvbXBhdGlibGVUb2tlbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUaGUgZm9ybWF0IHN0cmluZyBtdXN0bid0IGNvbnRhaW4gYFwiLmNvbmNhdChpbmNvbXBhdGlibGVUb2tlbi5mdWxsVG9rZW4sIFwiYCBhbmQgYFwiKS5jb25jYXQodG9rZW4sIFwiYCBhdCB0aGUgc2FtZSB0aW1lXCIpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocGFyc2VyLmluY29tcGF0aWJsZVRva2VucyA9PT0gJyonICYmIHVzZWRUb2tlbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiVGhlIGZvcm1hdCBzdHJpbmcgbXVzdG4ndCBjb250YWluIGBcIi5jb25jYXQodG9rZW4sIFwiYCBhbmQgYW55IG90aGVyIHRva2VuIGF0IHRoZSBzYW1lIHRpbWVcIikpO1xuICAgICAgICB9XG5cbiAgICAgICAgdXNlZFRva2Vucy5wdXNoKHtcbiAgICAgICAgICB0b2tlbjogZmlyc3RDaGFyYWN0ZXIsXG4gICAgICAgICAgZnVsbFRva2VuOiB0b2tlblxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHBhcnNlUmVzdWx0ID0gcGFyc2VyLnJ1bihkYXRlU3RyaW5nLCB0b2tlbiwgbG9jYWxlLm1hdGNoLCBzdWJGbk9wdGlvbnMpO1xuXG4gICAgICAgIGlmICghcGFyc2VSZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdjogbmV3IERhdGUoTmFOKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBzZXR0ZXJzLnB1c2gocGFyc2VSZXN1bHQuc2V0dGVyKTtcbiAgICAgICAgZGF0ZVN0cmluZyA9IHBhcnNlUmVzdWx0LnJlc3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIubWF0Y2godW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHApKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0Zvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlciBgJyArIGZpcnN0Q2hhcmFjdGVyICsgJ2AnKTtcbiAgICAgICAgfSAvLyBSZXBsYWNlIHR3byBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyB3aXRoIG9uZSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVyXG5cblxuICAgICAgICBpZiAodG9rZW4gPT09IFwiJydcIikge1xuICAgICAgICAgIHRva2VuID0gXCInXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwiJ1wiKSB7XG4gICAgICAgICAgdG9rZW4gPSBjbGVhbkVzY2FwZWRTdHJpbmcodG9rZW4pO1xuICAgICAgICB9IC8vIEN1dCB0b2tlbiBmcm9tIHN0cmluZywgb3IsIGlmIHN0cmluZyBkb2Vzbid0IG1hdGNoIHRoZSB0b2tlbiwgcmV0dXJuIEludmFsaWQgRGF0ZVxuXG5cbiAgICAgICAgaWYgKGRhdGVTdHJpbmcuaW5kZXhPZih0b2tlbikgPT09IDApIHtcbiAgICAgICAgICBkYXRlU3RyaW5nID0gZGF0ZVN0cmluZy5zbGljZSh0b2tlbi5sZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2OiBuZXcgRGF0ZShOYU4pXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKF9pdGVyYXRvci5zKCk7ICEoX3N0ZXAgPSBfaXRlcmF0b3IubigpKS5kb25lOykge1xuICAgICAgdmFyIF9yZXQgPSBfbG9vcCgpO1xuXG4gICAgICBpZiAoX3R5cGVvZihfcmV0KSA9PT0gXCJvYmplY3RcIikgcmV0dXJuIF9yZXQudjtcbiAgICB9IC8vIENoZWNrIGlmIHRoZSByZW1haW5pbmcgaW5wdXQgY29udGFpbnMgc29tZXRoaW5nIG90aGVyIHRoYW4gd2hpdGVzcGFjZVxuXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9pdGVyYXRvci5lKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgX2l0ZXJhdG9yLmYoKTtcbiAgfVxuXG4gIGlmIChkYXRlU3RyaW5nLmxlbmd0aCA+IDAgJiYgbm90V2hpdGVzcGFjZVJlZ0V4cC50ZXN0KGRhdGVTdHJpbmcpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH1cblxuICB2YXIgdW5pcXVlUHJpb3JpdHlTZXR0ZXJzID0gc2V0dGVycy5tYXAoZnVuY3Rpb24gKHNldHRlcikge1xuICAgIHJldHVybiBzZXR0ZXIucHJpb3JpdHk7XG4gIH0pLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gYiAtIGE7XG4gIH0pLmZpbHRlcihmdW5jdGlvbiAocHJpb3JpdHksIGluZGV4LCBhcnJheSkge1xuICAgIHJldHVybiBhcnJheS5pbmRleE9mKHByaW9yaXR5KSA9PT0gaW5kZXg7XG4gIH0pLm1hcChmdW5jdGlvbiAocHJpb3JpdHkpIHtcbiAgICByZXR1cm4gc2V0dGVycy5maWx0ZXIoZnVuY3Rpb24gKHNldHRlcikge1xuICAgICAgcmV0dXJuIHNldHRlci5wcmlvcml0eSA9PT0gcHJpb3JpdHk7XG4gICAgfSkuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGIuc3ViUHJpb3JpdHkgLSBhLnN1YlByaW9yaXR5O1xuICAgIH0pO1xuICB9KS5tYXAoZnVuY3Rpb24gKHNldHRlckFycmF5KSB7XG4gICAgcmV0dXJuIHNldHRlckFycmF5WzBdO1xuICB9KTtcbiAgdmFyIGRhdGUgPSB0b0RhdGUoZGlydHlSZWZlcmVuY2VEYXRlKTtcblxuICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gIH0gLy8gQ29udmVydCB0aGUgZGF0ZSBpbiBzeXN0ZW0gdGltZXpvbmUgdG8gdGhlIHNhbWUgZGF0ZSBpbiBVVEMrMDA6MDAgdGltZXpvbmUuXG5cblxuICB2YXIgdXRjRGF0ZSA9IHN1Yk1pbGxpc2Vjb25kcyhkYXRlLCBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGRhdGUpKTtcbiAgdmFyIGZsYWdzID0ge307XG5cbiAgdmFyIF9pdGVyYXRvcjIgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih1bmlxdWVQcmlvcml0eVNldHRlcnMpLFxuICAgICAgX3N0ZXAyO1xuXG4gIHRyeSB7XG4gICAgZm9yIChfaXRlcmF0b3IyLnMoKTsgIShfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZTspIHtcbiAgICAgIHZhciBzZXR0ZXIgPSBfc3RlcDIudmFsdWU7XG5cbiAgICAgIGlmICghc2V0dGVyLnZhbGlkYXRlKHV0Y0RhdGUsIHN1YkZuT3B0aW9ucykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgICB9XG5cbiAgICAgIHZhciByZXN1bHQgPSBzZXR0ZXIuc2V0KHV0Y0RhdGUsIGZsYWdzLCBzdWJGbk9wdGlvbnMpOyAvLyBSZXN1bHQgaXMgdHVwbGUgKGRhdGUsIGZsYWdzKVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgIHV0Y0RhdGUgPSByZXN1bHRbMF07XG4gICAgICAgIGFzc2lnbihmbGFncywgcmVzdWx0WzFdKTsgLy8gUmVzdWx0IGlzIGRhdGVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHV0Y0RhdGUgPSByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBfaXRlcmF0b3IyLmUoZXJyKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBfaXRlcmF0b3IyLmYoKTtcbiAgfVxuXG4gIHJldHVybiB1dGNEYXRlO1xufVxuXG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmcoaW5wdXQpIHtcbiAgcmV0dXJuIGlucHV0Lm1hdGNoKGVzY2FwZWRTdHJpbmdSZWdFeHApWzFdLnJlcGxhY2UoZG91YmxlUXVvdGVSZWdFeHAsIFwiJ1wiKTtcbn0iLCAiaW1wb3J0IHsgTW9kYWwsIE5vdGljZSB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IFdvcmRwcmVzc1BsdWdpbiBmcm9tICcuL21haW4nO1xyXG5pbXBvcnQgeyBvcGVuTG9naW5Nb2RhbCB9IGZyb20gJy4vd3AtbG9naW4tbW9kYWwnO1xyXG5pbXBvcnQge1xyXG4gIFdvcmRQcmVzc0F1dGhQYXJhbXMsXHJcbiAgV29yZFByZXNzQ2xpZW50LFxyXG4gIFdvcmRQcmVzc0NsaWVudFJlc3VsdCxcclxuICBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLFxyXG4gIFdvcmRQcmVzc1Bvc3RQYXJhbXMsXHJcbiAgV29yZFByZXNzUHVibGlzaFBhcmFtc1xyXG59IGZyb20gJy4vd3AtY2xpZW50JztcclxuaW1wb3J0IHsgb3BlblB1Ymxpc2hNb2RhbCB9IGZyb20gJy4vd3AtcHVibGlzaC1tb2RhbCc7XHJcbmltcG9ydCB7IFRlcm0gfSBmcm9tICcuL3dwLWFwaSc7XHJcbmltcG9ydCB7IEVSUk9SX05PVElDRV9USU1FT1VULCBXUF9ERUZBVUxUX1BST0ZJTEVfTkFNRSB9IGZyb20gJy4vY29uc3RzJztcclxuaW1wb3J0IG1hdHRlciBmcm9tICdncmF5LW1hdHRlcic7XHJcbmltcG9ydCB5YW1sIGZyb20gJ2pzLXlhbWwnO1xyXG5pbXBvcnQgeyBkb0NsaWVudFB1Ymxpc2gsIGlzUHJvbWlzZUZ1bGZpbGxlZFJlc3VsdCwgb3BlbldpdGhCcm93c2VyLCBTYWZlQW55IH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IG9wZW5Qb3N0UHVibGlzaGVkTW9kYWwgfSBmcm9tICcuL3Bvc3QtcHVibGlzaGVkLW1vZGFsJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuaW1wb3J0IHsgQXBwU3RhdGUgfSBmcm9tICcuL2FwcC1zdGF0ZSc7XHJcbmltcG9ydCB7IENvbmZpcm1Db2RlLCBvcGVuQ29uZmlybU1vZGFsIH0gZnJvbSAnLi9jb25maXJtLW1vZGFsJztcclxuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5cclxuXHJcbmNvbnN0IG1hdHRlck9wdGlvbnMgPSB7XHJcbiAgZW5naW5lczoge1xyXG4gICAgeWFtbDoge1xyXG4gICAgICBwYXJzZTogKGlucHV0OiBzdHJpbmcpID0+IHlhbWwubG9hZChpbnB1dCkgYXMgb2JqZWN0LFxyXG4gICAgICBzdHJpbmdpZnk6IChkYXRhOiBvYmplY3QpID0+IHtcclxuICAgICAgICByZXR1cm4geWFtbC5kdW1wKGRhdGEsIHtcclxuICAgICAgICAgIHN0eWxlczogeyAnISFudWxsJzogJ2VtcHR5JyB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RXb3JkUHJlc3NDbGllbnQgaW1wbGVtZW50cyBXb3JkUHJlc3NDbGllbnQge1xyXG5cclxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZmlsZTogV3BQcm9maWxlXHJcbiAgKSB7IH1cclxuXHJcbiAgYWJzdHJhY3QgcHVibGlzaChcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBjb250ZW50OiBzdHJpbmcsXHJcbiAgICBwb3N0UGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zLFxyXG4gICAgY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXNcclxuICApOiBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdD47XHJcblxyXG4gIGFic3RyYWN0IGdldENhdGVnb3JpZXMoXHJcbiAgICBjZXJ0aWZpY2F0ZTogV29yZFByZXNzQXV0aFBhcmFtc1xyXG4gICk6IFByb21pc2U8VGVybVtdPjtcclxuXHJcbiAgYWJzdHJhY3QgdmFsaWRhdGVVc2VyKFxyXG4gICAgY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXNcclxuICApOiBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdD47XHJcblxyXG4gIGFic3RyYWN0IGdldFRhZyhcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zXHJcbiAgKTogUHJvbWlzZTxUZXJtPjtcclxuXHJcbiAgcHJvdGVjdGVkIG9wZW5Mb2dpbk1vZGFsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaXNoUG9zdChkZWZhdWx0UG9zdFBhcmFtcz86IFdvcmRQcmVzc1Bvc3RQYXJhbXMpOiBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucHJvZmlsZS5lbmRwb2ludCB8fCB0aGlzLnByb2ZpbGUuZW5kcG9pbnQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgbmV3IE5vdGljZSh0aGlzLnBsdWdpbi5pMThuLnQoJ2Vycm9yX25vRW5kcG9pbnQnKSwgRVJST1JfTk9USUNFX1RJTUVPVVQpO1xyXG4gICAgICAgIHJlamVjdCh7XHJcbiAgICAgICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLkVycm9yLFxyXG4gICAgICAgICAgZGF0YTogbmV3IEVycm9yKCdObyBlbmRwb2ludCBzZXQuJylcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgeyBhY3RpdmVFZGl0b3IgfSA9IGFwcC53b3Jrc3BhY2U7XHJcbiAgICAgIGlmIChhY3RpdmVFZGl0b3IgJiYgYWN0aXZlRWRpdG9yLmZpbGUpIHtcclxuICAgICAgICAoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IHVzZXJuYW1lID0gbnVsbDtcclxuICAgICAgICAgIGxldCBwYXNzd29yZCA9IG51bGw7XHJcbiAgICAgICAgICBsZXQgbG9naW5Nb2RhbDtcclxuICAgICAgICAgIGlmICh0aGlzLm9wZW5Mb2dpbk1vZGFsKCkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucHJvZmlsZS51c2VybmFtZSAmJiB0aGlzLnByb2ZpbGUucGFzc3dvcmQpIHtcclxuICAgICAgICAgICAgICAvLyBzYXZlZCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgZm91bmRcclxuICAgICAgICAgICAgICB1c2VybmFtZSA9IHRoaXMucHJvZmlsZS51c2VybmFtZTtcclxuICAgICAgICAgICAgICBwYXNzd29yZCA9IHRoaXMucHJvZmlsZS5wYXNzd29yZDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zdCBsb2dpbk1vZGFsUmV0dXJucyA9IGF3YWl0IG9wZW5Mb2dpbk1vZGFsKHRoaXMucGx1Z2luLCB0aGlzLnByb2ZpbGUpO1xyXG4gICAgICAgICAgICAgIHVzZXJuYW1lID0gbG9naW5Nb2RhbFJldHVybnMudXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgcGFzc3dvcmQgPSBsb2dpbk1vZGFsUmV0dXJucy5wYXNzd29yZDtcclxuICAgICAgICAgICAgICBsb2dpbk1vZGFsID0gbG9naW5Nb2RhbFJldHVybnMubG9naW5Nb2RhbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gc3RhcnQgcHVibGlzaGluZy4uLlxyXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgICAgICAgIGNvbnN0IG5vdGVUaXRsZSA9IGFjdGl2ZUVkaXRvci5maWxlIS5iYXNlbmFtZTtcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICBjb25zdCByYXdDb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoYWN0aXZlRWRpdG9yLmZpbGUhKTtcclxuICAgICAgICAgIGNvbnN0IHsgY29udGVudCwgZGF0YTogbWF0dGVyRGF0YSB9ID0gbWF0dGVyKHJhd0NvbnRlbnQsIG1hdHRlck9wdGlvbnMpO1xyXG5cclxuICAgICAgICAgIGlmICghaXNOaWwobWF0dGVyRGF0YS5wcm9maWxlTmFtZSlcclxuICAgICAgICAgICAgJiYgbWF0dGVyRGF0YS5wcm9maWxlTmFtZS5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICYmIG1hdHRlckRhdGEucHJvZmlsZU5hbWUgIT09IHRoaXMucHJvZmlsZS5uYW1lXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29uc3QgY29uZmlybSA9IGF3YWl0IG9wZW5Db25maXJtTW9kYWwoe1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucGx1Z2luLmkxOG4udCgnZXJyb3JfcHJvZmlsZU5vdE1hdGNoJyksXHJcbiAgICAgICAgICAgICAgY2FuY2VsVGV4dDogdGhpcy5wbHVnaW4uaTE4bi50KCdwcm9maWxlTm90TWF0Y2hfdXNlT2xkJywge1xyXG4gICAgICAgICAgICAgICAgcHJvZmlsZU5hbWU6IG1hdHRlckRhdGEucHJvZmlsZU5hbWVcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICBjb25maXJtVGV4dDogdGhpcy5wbHVnaW4uaTE4bi50KCdwcm9maWxlTm90TWF0Y2hfdXNlTmV3Jywge1xyXG4gICAgICAgICAgICAgICAgcHJvZmlsZU5hbWU6IHRoaXMucHJvZmlsZS5uYW1lXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSwgdGhpcy5wbHVnaW4pO1xyXG4gICAgICAgICAgICBpZiAoY29uZmlybS5jb2RlID09PSBDb25maXJtQ29kZS5DYW5jZWwpIHtcclxuICAgICAgICAgICAgICBkb0NsaWVudFB1Ymxpc2godGhpcy5wbHVnaW4sIG1hdHRlckRhdGEucHJvZmlsZU5hbWUpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkZWxldGUgbWF0dGVyRGF0YS5wb3N0SWQ7XHJcbiAgICAgICAgICAgICAgbWF0dGVyRGF0YS5jYXRlZ29yaWVzID0gdGhpcy5wcm9maWxlLmxhc3RTZWxlY3RlZENhdGVnb3JpZXMgPz8gWyAxIF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRlVXNlclJlc3VsdCA9IGF3YWl0IHRoaXMudmFsaWRhdGVVc2VyKHsgdXNlcm5hbWUsIHBhc3N3b3JkIH0pO1xyXG4gICAgICAgICAgaWYgKHZhbGlkYXRlVXNlclJlc3VsdC5jb2RlID09PSBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLk9LKSB7XHJcbiAgICAgICAgICAgIGlmIChkZWZhdWx0UG9zdFBhcmFtcykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucmVhZEZyb21Gcm9udE1hdHRlcihub3RlVGl0bGUsIG1hdHRlckRhdGEsIGRlZmF1bHRQb3N0UGFyYW1zKTtcclxuICAgICAgICAgICAgICBwYXJhbXMuY29udGVudCA9IGNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5kb1B1Ymxpc2goe1xyXG4gICAgICAgICAgICAgICAgdXNlcm5hbWUsXHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgIHBvc3RQYXJhbXM6IHBhcmFtcyxcclxuICAgICAgICAgICAgICAgIG1hdHRlckRhdGFcclxuICAgICAgICAgICAgICB9LCBsb2dpbk1vZGFsKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcmllcyh7XHJcbiAgICAgICAgICAgICAgICB1c2VybmFtZSxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yaWVzID0gbWF0dGVyRGF0YS5jYXRlZ29yaWVzIGFzIG51bWJlcltdID8/IHRoaXMucHJvZmlsZS5sYXN0U2VsZWN0ZWRDYXRlZ29yaWVzO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgcG9zdFBhcmFtcywgcHVibGlzaE1vZGFsIH0gPSBhd2FpdCBvcGVuUHVibGlzaE1vZGFsKHRoaXMucGx1Z2luLCBjYXRlZ29yaWVzLCBzZWxlY3RlZENhdGVnb3JpZXMpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucmVhZEZyb21Gcm9udE1hdHRlcihub3RlVGl0bGUsIG1hdHRlckRhdGEsIHBvc3RQYXJhbXMpO1xyXG4gICAgICAgICAgICAgIHBhcmFtcy5jb250ZW50ID0gY29udGVudDtcclxuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRvUHVibGlzaCh7XHJcbiAgICAgICAgICAgICAgICB1c2VybmFtZSxcclxuICAgICAgICAgICAgICAgIHBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgcG9zdFBhcmFtczogcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgbWF0dGVyRGF0YVxyXG4gICAgICAgICAgICAgIH0sIGxvZ2luTW9kYWwsIHB1Ymxpc2hNb2RhbCk7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBpbnZhbGlkVXNlcm5hbWVPclBhc3N3b3JkID0gdGhpcy5wbHVnaW4uaTE4bi50KCdlcnJvcl9pbnZhbGlkVXNlcicpO1xyXG4gICAgICAgICAgICBuZXcgTm90aWNlKGludmFsaWRVc2VybmFtZU9yUGFzc3dvcmQsIEVSUk9SX05PVElDRV9USU1FT1VUKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGVycm9yID0gJ1RoZXJlIGlzIG5vIGVkaXRvciBvciBmaWxlIGZvdW5kLiBOb3RoaW5nIHdpbGwgYmUgcHVibGlzaGVkLic7XHJcbiAgICAgICAgY29uc29sZS53YXJuKGVycm9yKTtcclxuICAgICAgICByZWplY3Qoe1xyXG4gICAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5FcnJvcixcclxuICAgICAgICAgIGRhdGE6IG5ldyBFcnJvcihlcnJvcilcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIGVycm9yO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZG9QdWJsaXNoKFxyXG4gICAgcHVibGlzaFBhcmFtczogV29yZFByZXNzUHVibGlzaFBhcmFtcyxcclxuICAgIGxvZ2luTW9kYWw/OiBNb2RhbCxcclxuICAgIHB1Ymxpc2hNb2RhbD86IE1vZGFsXHJcbiAgKTogUHJvbWlzZTxXb3JkUHJlc3NDbGllbnRSZXN1bHQ+IHtcclxuICAgIGNvbnN0IHsgdXNlcm5hbWUsIHBhc3N3b3JkLCBwb3N0UGFyYW1zLCBtYXR0ZXJEYXRhIH0gPSBwdWJsaXNoUGFyYW1zO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdGFnVGVybXMgPSBhd2FpdCB0aGlzLmdldFRhZ3MocG9zdFBhcmFtcy50YWdzLCB7XHJcbiAgICAgICAgdXNlcm5hbWUsXHJcbiAgICAgICAgcGFzc3dvcmRcclxuICAgICAgfSk7XHJcbiAgICAgIHBvc3RQYXJhbXMudGFncyA9IHRhZ1Rlcm1zLm1hcCh0ZXJtID0+IHRlcm0uaWQpO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnB1Ymxpc2goXHJcbiAgICAgICAgcG9zdFBhcmFtcy50aXRsZSA/PyAnQSBwb3N0IGZyb20gT2JzaWRpYW4hJyxcclxuICAgICAgICBBcHBTdGF0ZS5nZXRJbnN0YW5jZSgpLm1hcmtkb3duUGFyc2VyLnJlbmRlcihwb3N0UGFyYW1zLmNvbnRlbnQpID8/ICcnLFxyXG4gICAgICAgIHBvc3RQYXJhbXMsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdXNlcm5hbWUsXHJcbiAgICAgICAgICBwYXNzd29yZFxyXG4gICAgICAgIH0pO1xyXG4gICAgICBjb25zb2xlLmxvZygnZG9QdWJsaXNoJywgcmVzdWx0KTtcclxuICAgICAgaWYgKHJlc3VsdC5jb2RlID09PSBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLkVycm9yKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlc3VsdC5kYXRhIGFzIFNhZmVBbnk7XHJcbiAgICAgICAgbmV3IE5vdGljZSh0aGlzLnBsdWdpbi5pMThuLnQoJ2Vycm9yX3B1Ymxpc2hGYWlsZWQnLCB7XHJcbiAgICAgICAgICBjb2RlOiBkYXRhLmNvZGUsXHJcbiAgICAgICAgICBtZXNzYWdlOiBkYXRhLm1lc3NhZ2VcclxuICAgICAgICB9KSwgRVJST1JfTk9USUNFX1RJTUVPVVQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ldyBOb3RpY2UodGhpcy5wbHVnaW4uaTE4bi50KCdtZXNzYWdlX3B1Ymxpc2hTdWNjZXNzZnVsbHknKSk7XHJcbiAgICAgICAgcHVibGlzaE1vZGFsPy5jbG9zZSgpO1xyXG4gICAgICAgIGxvZ2luTW9kYWw/LmNsb3NlKCk7XHJcblxyXG4gICAgICAgIC8vIHBvc3QgaWQgd2lsbCBiZSByZXR1cm5lZCBpZiBjcmVhdGluZywgdHJ1ZSBpZiBlZGl0aW5nXHJcbiAgICAgICAgY29uc3QgcG9zdElkID0gKHJlc3VsdC5kYXRhIGFzIFNhZmVBbnkpLnBvc3RJZDtcclxuICAgICAgICBpZiAocG9zdElkKSB7XHJcbiAgICAgICAgICAvLyBzYXZlIHBvc3QgaWQgdG8gZnJvbnQtbWF0dGVyXHJcbiAgICAgICAgICBtYXR0ZXJEYXRhLnByb2ZpbGVOYW1lID0gdGhpcy5wcm9maWxlLm5hbWU7XHJcbiAgICAgICAgICBtYXR0ZXJEYXRhLnBvc3RJZCA9IHBvc3RJZDtcclxuICAgICAgICAgIG1hdHRlckRhdGEuY2F0ZWdvcmllcyA9IHBvc3RQYXJhbXMuY2F0ZWdvcmllcztcclxuICAgICAgICAgIGNvbnN0IG1vZGlmaWVkID0gbWF0dGVyLnN0cmluZ2lmeShwb3N0UGFyYW1zLmNvbnRlbnQsIG1hdHRlckRhdGEsIG1hdHRlck9wdGlvbnMpO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGcm9udE1hdHRlcihtb2RpZmllZCk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLnJlbWVtYmVyTGFzdFNlbGVjdGVkQ2F0ZWdvcmllcykge1xyXG4gICAgICAgICAgICB0aGlzLnByb2ZpbGUubGFzdFNlbGVjdGVkQ2F0ZWdvcmllcyA9IChyZXN1bHQuZGF0YSBhcyBTYWZlQW55KS5jYXRlZ29yaWVzO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3Muc2hvd1dvcmRQcmVzc0VkaXRDb25maXJtKSB7XHJcbiAgICAgICAgICAgIG9wZW5Qb3N0UHVibGlzaGVkTW9kYWwodGhpcy5wbHVnaW4pXHJcbiAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb3BlbldpdGhCcm93c2VyKGAke3RoaXMucHJvZmlsZS5lbmRwb2ludH0vd3AtYWRtaW4vcG9zdC5waHBgLCB7XHJcbiAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2VkaXQnLFxyXG4gICAgICAgICAgICAgICAgICBwb3N0OiBwb3N0SWRcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coJ1JlYWRpbmcgZmlsZSBjb250ZW50IGZvciBcXCdkb1B1Ymxpc2hcXCcgZmFpbGVkOiAnLCBlcnJvcik7XHJcbiAgICAgIG5ldyBOb3RpY2UoKGVycm9yIGFzIFNhZmVBbnkpLnRvU3RyaW5nKCksIEVSUk9SX05PVElDRV9USU1FT1VUKTtcclxuICAgIH1cclxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgnWW91IHNob3VsZCBub3QgYmUgaGVyZSEnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VGFncyh0YWdzOiBzdHJpbmdbXSwgY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXMpOiBQcm9taXNlPFRlcm1bXT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZCh0YWdzLm1hcChuYW1lID0+IHRoaXMuZ2V0VGFnKG5hbWUsIGNlcnRpZmljYXRlKSkpXHJcbiAgICAgIC50aGVuKHJlc3VsdHMgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRlcm1zOiBUZXJtW10gPSBbXTtcclxuICAgICAgICByZXN1bHRzXHJcbiAgICAgICAgICAuZm9yRWFjaChyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXNQcm9taXNlRnVsZmlsbGVkUmVzdWx0PFRlcm0+KHJlc3VsdCkpIHtcclxuICAgICAgICAgICAgICB0ZXJtcy5wdXNoKHJlc3VsdC52YWx1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0ZXJtcztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlYWRGcm9tRnJvbnRNYXR0ZXIoXHJcbiAgICBub3RlVGl0bGU6IHN0cmluZyxcclxuICAgIG1hdHRlckRhdGE6IHsgW3A6IHN0cmluZ106IFNhZmVBbnkgfSxcclxuICAgIHBhcmFtczogV29yZFByZXNzUG9zdFBhcmFtc1xyXG4gICk6IFdvcmRQcmVzc1Bvc3RQYXJhbXMge1xyXG4gICAgY29uc3QgcG9zdFBhcmFtcyA9IHsgLi4ucGFyYW1zIH07XHJcbiAgICBwb3N0UGFyYW1zLnRpdGxlID0gbm90ZVRpdGxlO1xyXG4gICAgaWYgKG1hdHRlckRhdGEudGl0bGUpIHtcclxuICAgICAgcG9zdFBhcmFtcy50aXRsZSA9IG1hdHRlckRhdGEudGl0bGU7XHJcbiAgICB9XHJcbiAgICBpZiAobWF0dGVyRGF0YS5wb3N0SWQpIHtcclxuICAgICAgcG9zdFBhcmFtcy5wb3N0SWQgPSBtYXR0ZXJEYXRhLnBvc3RJZDtcclxuICAgIH1cclxuICAgIHBvc3RQYXJhbXMucHJvZmlsZU5hbWUgPSBtYXR0ZXJEYXRhLnByb2ZpbGVOYW1lID8/IFdQX0RFRkFVTFRfUFJPRklMRV9OQU1FO1xyXG4gICAgaWYgKG1hdHRlckRhdGEuY2F0ZWdvcmllcykge1xyXG4gICAgICBwb3N0UGFyYW1zLmNhdGVnb3JpZXMgPSBtYXR0ZXJEYXRhLmNhdGVnb3JpZXMgYXMgbnVtYmVyW10gPz8gdGhpcy5wcm9maWxlLmxhc3RTZWxlY3RlZENhdGVnb3JpZXM7XHJcbiAgICB9XHJcbiAgICBpZiAobWF0dGVyRGF0YS50YWdzKSB7XHJcbiAgICAgIHBvc3RQYXJhbXMudGFncyA9IG1hdHRlckRhdGEudGFncyBhcyBzdHJpbmdbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBwb3N0UGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGcm9udE1hdHRlcih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGFjdGl2ZUVkaXRvciB9ID0gYXBwLndvcmtzcGFjZTtcclxuICAgIGlmIChhY3RpdmVFZGl0b3IpIHtcclxuICAgICAgY29uc3QgZWRpdG9yID0gYWN0aXZlRWRpdG9yLmVkaXRvcjtcclxuICAgICAgaWYgKGVkaXRvcikge1xyXG4gICAgICAgIGNvbnN0IHsgbGVmdCwgdG9wIH0gPSBlZGl0b3IuZ2V0U2Nyb2xsSW5mbygpO1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gZWRpdG9yLmdldEN1cnNvcigpO1xyXG5cclxuICAgICAgICBlZGl0b3Iuc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgICAgIGVkaXRvci5zY3JvbGxUbyhsZWZ0LCB0b3ApO1xyXG4gICAgICAgIGVkaXRvci5zZXRDdXJzb3IocG9zaXRpb24pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgTW9kYWwsIE5vdGljZSwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IFdvcmRwcmVzc1BsdWdpbiBmcm9tICcuL21haW4nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVLZXkgfSBmcm9tICcuL2kxOG4nO1xyXG5pbXBvcnQgeyBFUlJPUl9OT1RJQ0VfVElNRU9VVCB9IGZyb20gJy4vY29uc3RzJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvcGVuTG9naW5Nb2RhbChcclxuICBwbHVnaW46IFdvcmRwcmVzc1BsdWdpbixcclxuICBwcm9maWxlOiBXcFByb2ZpbGVcclxuKTogUHJvbWlzZTx7IHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIGxvZ2luTW9kYWw6IE1vZGFsIH0+IHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgY29uc3QgbW9kYWwgPSBuZXcgV3BMb2dpbk1vZGFsKHBsdWdpbiwgcHJvZmlsZSwgKHVzZXJuYW1lLCBwYXNzd29yZCwgbG9naW5Nb2RhbCkgPT4ge1xyXG4gICAgICByZXNvbHZlKHtcclxuICAgICAgICB1c2VybmFtZSxcclxuICAgICAgICBwYXNzd29yZCxcclxuICAgICAgICBsb2dpbk1vZGFsXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBtb2RhbC5vcGVuKCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBXb3JkUHJlc3MgbG9naW4gbW9kYWwgd2l0aCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgaW5wdXRzLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFdwTG9naW5Nb2RhbCBleHRlbmRzIE1vZGFsIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbjogV29yZHByZXNzUGx1Z2luLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlOiBXcFByb2ZpbGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uU3VibWl0OiAodXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgbW9kYWw6IE1vZGFsKSA9PiB2b2lkXHJcbiAgKSB7XHJcbiAgICBzdXBlcihhcHApO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCkge1xyXG4gICAgY29uc3QgdCA9IChrZXk6IFRyYW5zbGF0ZUtleSwgdmFycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5wbHVnaW4uaTE4bi50KGtleSwgdmFycyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG5cclxuICAgIGNvbnRlbnRFbC5jcmVhdGVFbCgnaDEnLCB7IHRleHQ6IHQoJ2xvZ2luTW9kYWxfdGl0bGUnKSB9KTtcclxuXHJcbiAgICBsZXQgdXNlcm5hbWUgPSB0aGlzLnByb2ZpbGUudXNlcm5hbWU7XHJcbiAgICBsZXQgcGFzc3dvcmQgPSB0aGlzLnByb2ZpbGUucGFzc3dvcmQ7XHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ2xvZ2luTW9kYWxfdXNlcm5hbWUnKSlcclxuICAgICAgLnNldERlc2ModCgnbG9naW5Nb2RhbF91c2VybmFtZURlc2MnLCB7IHVybDogdGhpcy5wcm9maWxlLmVuZHBvaW50IH0pKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHtcclxuICAgICAgICB0ZXh0XHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlLnVzZXJuYW1lID8/ICcnKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB1c2VybmFtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9maWxlLnNhdmVVc2VybmFtZSkge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvZmlsZS51c2VybmFtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIXRoaXMucHJvZmlsZS5zYXZlVXNlcm5hbWUpIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0ZXh0LmlucHV0RWwuZm9jdXMoKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ2xvZ2luTW9kYWxfcGFzc3dvcmQnKSlcclxuICAgICAgLnNldERlc2ModCgnbG9naW5Nb2RhbF9wYXNzd29yZERlc2MnLCB7IHVybDogdGhpcy5wcm9maWxlLmVuZHBvaW50IH0pKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHtcclxuICAgICAgICB0ZXh0XHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlLnBhc3N3b3JkID8/ICcnKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBwYXNzd29yZCA9IHZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9maWxlLnNhdmVQYXNzd29yZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvZmlsZS5wYXNzd29yZCA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICBpZiAodGhpcy5wcm9maWxlLnNhdmVVc2VybmFtZSkge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRleHQuaW5wdXRFbC5mb2N1cygpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIC8vIG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcclxuICAgIC8vICAgLnNldE5hbWUodCgnbG9naW5Nb2RhbF9yZW1lbWJlclVzZXJuYW1lJykpXHJcbiAgICAvLyAgIC5zZXREZXNjKHQoJ2xvZ2luTW9kYWxfcmVtZW1iZXJVc2VybmFtZURlc2MnKSlcclxuICAgIC8vICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgLy8gICAgIHRvZ2dsZVxyXG4gICAgLy8gICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZS5zYXZlVXNlcm5hbWUpXHJcbiAgICAvLyAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMucHJvZmlsZS5zYXZlVXNlcm5hbWUgPSB2YWx1ZTtcclxuICAgIC8vICAgICAgICAgaWYgKCF0aGlzLnByb2ZpbGUuc2F2ZVVzZXJuYW1lKSB7XHJcbiAgICAvLyAgICAgICAgICAgZGVsZXRlIHRoaXMucHJvZmlsZS51c2VybmFtZTtcclxuICAgIC8vICAgICAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICB0aGlzLnByb2ZpbGUudXNlcm5hbWUgPSB1c2VybmFtZTtcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgIC8vICAgICAgIH0pLFxyXG4gICAgLy8gICApO1xyXG4gICAgLy8gbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgLy8gICAuc2V0TmFtZSh0KCdsb2dpbk1vZGFsX3JlbWVtYmVyUGFzc3dvcmQnKSlcclxuICAgIC8vICAgLnNldERlc2ModCgnbG9naW5Nb2RhbF9yZW1lbWJlclBhc3N3b3JkRGVzYycpKVxyXG4gICAgLy8gICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAvLyAgICAgdG9nZ2xlXHJcbiAgICAvLyAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlLnNhdmVQYXNzd29yZClcclxuICAgIC8vICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgIC8vICAgICAgICAgdGhpcy5wcm9maWxlLnNhdmVQYXNzd29yZCA9IHZhbHVlO1xyXG4gICAgLy8gICAgICAgICBpZiAoIXRoaXMucHJvZmlsZS5zYXZlUGFzc3dvcmQpIHtcclxuICAgIC8vICAgICAgICAgICBkZWxldGUgdGhpcy5wcm9maWxlLnBhc3N3b3JkO1xyXG4gICAgLy8gICAgICAgICB9IGVsc2Uge1xyXG4gICAgLy8gICAgICAgICAgIHRoaXMucHJvZmlsZS5wYXNzd29yZCA9IHBhc3N3b3JkO1xyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgLy8gICAgICAgfSksXHJcbiAgICAvLyAgICk7XHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5hZGRCdXR0b24oYnV0dG9uID0+IGJ1dHRvblxyXG4gICAgICAgIC5zZXRCdXR0b25UZXh0KHQoJ2xvZ2luTW9kYWxfbG9naW5CdXR0b25UZXh0JykpXHJcbiAgICAgICAgLnNldEN0YSgpXHJcbiAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF1c2VybmFtZSkge1xyXG4gICAgICAgICAgICBuZXcgTm90aWNlKHQoJ2Vycm9yX25vVXNlcm5hbWUnKSwgRVJST1JfTk9USUNFX1RJTUVPVVQpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICghcGFzc3dvcmQpIHtcclxuICAgICAgICAgICAgbmV3IE5vdGljZSh0KCdlcnJvcl9ub1Bhc3N3b3JkJyksIEVSUk9SX05PVElDRV9USU1FT1VUKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh1c2VybmFtZSAmJiBwYXNzd29yZCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uU3VibWl0KHVzZXJuYW1lLCBwYXNzd29yZCwgdGhpcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHsgTW9kYWwsIFNldHRpbmcgfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHsgV29yZFByZXNzUG9zdFBhcmFtcyB9IGZyb20gJy4vd3AtY2xpZW50JztcclxuaW1wb3J0IHsgQ29tbWVudFN0YXR1cywgUG9zdFN0YXR1cywgVGVybSB9IGZyb20gJy4vd3AtYXBpJztcclxuaW1wb3J0IHsgdG9OdW1iZXIgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVLZXkgfSBmcm9tICcuL2kxOG4nO1xyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvcGVuUHVibGlzaE1vZGFsKFxyXG4gIHBsdWdpbjogV29yZHByZXNzUGx1Z2luLFxyXG4gIGNhdGVnb3JpZXM6IFRlcm1bXSxcclxuICBzZWxlY3RlZENhdGVnb3JpZXM6IG51bWJlcltdXHJcbik6IFByb21pc2U8eyBwb3N0UGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zLCBwdWJsaXNoTW9kYWw6IE1vZGFsIH0+IHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgY29uc3QgbW9kYWwgPSBuZXcgV3BQdWJsaXNoTW9kYWwoXHJcbiAgICAgIHBsdWdpbixcclxuICAgICAgY2F0ZWdvcmllcywgc2VsZWN0ZWRDYXRlZ29yaWVzLFxyXG4gICAgICAocG9zdFBhcmFtcywgcHVibGlzaE1vZGFsKSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICBwb3N0UGFyYW1zLFxyXG4gICAgICAgICAgcHVibGlzaE1vZGFsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgbW9kYWwub3BlbigpO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogV29yZFByZXNzIHB1Ymxpc2ggbW9kYWwuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgV3BQdWJsaXNoTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwbHVnaW46IFdvcmRwcmVzc1BsdWdpbixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcmllczogVGVybVtdLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZENhdGVnb3JpZXM6IG51bWJlcltdLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvblN1Ym1pdDogKHBhcmFtczogV29yZFByZXNzUG9zdFBhcmFtcywgbW9kYWw6IE1vZGFsKSA9PiB2b2lkXHJcbiAgKSB7XHJcbiAgICBzdXBlcihhcHApO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCkge1xyXG4gICAgY29uc3QgdCA9IChrZXk6IFRyYW5zbGF0ZUtleSwgdmFycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5wbHVnaW4uaTE4bi50KGtleSwgdmFycyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHBhcmFtczogV29yZFByZXNzUG9zdFBhcmFtcyA9IHtcclxuICAgICAgc3RhdHVzOiB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWZhdWx0UG9zdFN0YXR1cyxcclxuICAgICAgY29tbWVudFN0YXR1czogdGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVmYXVsdENvbW1lbnRTdGF0dXMsXHJcbiAgICAgIGNhdGVnb3JpZXM6IHRoaXMuc2VsZWN0ZWRDYXRlZ29yaWVzLFxyXG4gICAgICB0YWdzOiBbXSxcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBjb250ZW50OiAnJ1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuXHJcbiAgICBjb250ZW50RWwuY3JlYXRlRWwoJ2gxJywgeyB0ZXh0OiB0KCdwdWJsaXNoTW9kYWxfdGl0bGUnKSB9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ3B1Ymxpc2hNb2RhbF9wb3N0U3RhdHVzJykpXHJcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcclxuICAgICAgICBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbihQb3N0U3RhdHVzLkRyYWZ0LCB0KCdwdWJsaXNoTW9kYWxfcG9zdFN0YXR1c0RyYWZ0JykpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKFBvc3RTdGF0dXMuUHVibGlzaCwgdCgncHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNQdWJsaXNoJykpXHJcbiAgICAgICAgICAvLyAuYWRkT3B0aW9uKFBvc3RTdGF0dXMuRnV0dXJlLCAnZnV0dXJlJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWZhdWx0UG9zdFN0YXR1cylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgcGFyYW1zLnN0YXR1cyA9IHZhbHVlIGFzIFBvc3RTdGF0dXM7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ3B1Ymxpc2hNb2RhbF9jb21tZW50U3RhdHVzJykpXHJcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcclxuICAgICAgICBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbihDb21tZW50U3RhdHVzLk9wZW4sIHQoJ3B1Ymxpc2hNb2RhbF9jb21tZW50U3RhdHVzT3BlbicpKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbihDb21tZW50U3RhdHVzLkNsb3NlZCwgdCgncHVibGlzaE1vZGFsX2NvbW1lbnRTdGF0dXNDbG9zZWQnKSlcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWZhdWx0Q29tbWVudFN0YXR1cylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgcGFyYW1zLmNvbW1lbnRTdGF0dXMgPSB2YWx1ZSBhcyBDb21tZW50U3RhdHVzO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuY2F0ZWdvcmllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcclxuICAgICAgICAuc2V0TmFtZSh0KCdwdWJsaXNoTW9kYWxfY2F0ZWdvcnknKSlcclxuICAgICAgICAuYWRkRHJvcGRvd24oKGRyb3Bkb3duKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNhdGVnb3JpZXMuZm9yRWFjaChpdCA9PiB7XHJcbiAgICAgICAgICAgIGRyb3Bkb3duLmFkZE9wdGlvbihpdC5pZCwgaXQubmFtZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGRyb3Bkb3duXHJcbiAgICAgICAgICAgIC5zZXRWYWx1ZShTdHJpbmcodGhpcy5zZWxlY3RlZENhdGVnb3JpZXNbMF0pKVxyXG4gICAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zLmNhdGVnb3JpZXMgPSBbIHRvTnVtYmVyKHZhbHVlKSBdO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcclxuICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgLnNldEJ1dHRvblRleHQodCgncHVibGlzaE1vZGFsX3B1Ymxpc2hCdXR0b25UZXh0JykpXHJcbiAgICAgICAgLnNldEN0YSgpXHJcbiAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vblN1Ym1pdChwYXJhbXMsIHRoaXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuICB9XHJcblxyXG59XHJcbiIsICJcbi8qISBqcy15YW1sIDQuMS4wIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvanMteWFtbCBAbGljZW5zZSBNSVQgKi9cbmZ1bmN0aW9uIGlzTm90aGluZyhzdWJqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIHN1YmplY3QgPT09ICd1bmRlZmluZWQnKSB8fCAoc3ViamVjdCA9PT0gbnVsbCk7XG59XG5cblxuZnVuY3Rpb24gaXNPYmplY3Qoc3ViamVjdCkge1xuICByZXR1cm4gKHR5cGVvZiBzdWJqZWN0ID09PSAnb2JqZWN0JykgJiYgKHN1YmplY3QgIT09IG51bGwpO1xufVxuXG5cbmZ1bmN0aW9uIHRvQXJyYXkoc2VxdWVuY2UpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VxdWVuY2UpKSByZXR1cm4gc2VxdWVuY2U7XG4gIGVsc2UgaWYgKGlzTm90aGluZyhzZXF1ZW5jZSkpIHJldHVybiBbXTtcblxuICByZXR1cm4gWyBzZXF1ZW5jZSBdO1xufVxuXG5cbmZ1bmN0aW9uIGV4dGVuZCh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIgaW5kZXgsIGxlbmd0aCwga2V5LCBzb3VyY2VLZXlzO1xuXG4gIGlmIChzb3VyY2UpIHtcbiAgICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcblxuICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBzb3VyY2VLZXlzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGtleSA9IHNvdXJjZUtleXNbaW5kZXhdO1xuICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5cbmZ1bmN0aW9uIHJlcGVhdChzdHJpbmcsIGNvdW50KSB7XG4gIHZhciByZXN1bHQgPSAnJywgY3ljbGU7XG5cbiAgZm9yIChjeWNsZSA9IDA7IGN5Y2xlIDwgY291bnQ7IGN5Y2xlICs9IDEpIHtcbiAgICByZXN1bHQgKz0gc3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5mdW5jdGlvbiBpc05lZ2F0aXZlWmVybyhudW1iZXIpIHtcbiAgcmV0dXJuIChudW1iZXIgPT09IDApICYmIChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPT09IDEgLyBudW1iZXIpO1xufVxuXG5cbnZhciBpc05vdGhpbmdfMSAgICAgID0gaXNOb3RoaW5nO1xudmFyIGlzT2JqZWN0XzEgICAgICAgPSBpc09iamVjdDtcbnZhciB0b0FycmF5XzEgICAgICAgID0gdG9BcnJheTtcbnZhciByZXBlYXRfMSAgICAgICAgID0gcmVwZWF0O1xudmFyIGlzTmVnYXRpdmVaZXJvXzEgPSBpc05lZ2F0aXZlWmVybztcbnZhciBleHRlbmRfMSAgICAgICAgID0gZXh0ZW5kO1xuXG52YXIgY29tbW9uID0ge1xuXHRpc05vdGhpbmc6IGlzTm90aGluZ18xLFxuXHRpc09iamVjdDogaXNPYmplY3RfMSxcblx0dG9BcnJheTogdG9BcnJheV8xLFxuXHRyZXBlYXQ6IHJlcGVhdF8xLFxuXHRpc05lZ2F0aXZlWmVybzogaXNOZWdhdGl2ZVplcm9fMSxcblx0ZXh0ZW5kOiBleHRlbmRfMVxufTtcblxuLy8gWUFNTCBlcnJvciBjbGFzcy4gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy84NDU4OTg0XG5cblxuZnVuY3Rpb24gZm9ybWF0RXJyb3IoZXhjZXB0aW9uLCBjb21wYWN0KSB7XG4gIHZhciB3aGVyZSA9ICcnLCBtZXNzYWdlID0gZXhjZXB0aW9uLnJlYXNvbiB8fCAnKHVua25vd24gcmVhc29uKSc7XG5cbiAgaWYgKCFleGNlcHRpb24ubWFyaykgcmV0dXJuIG1lc3NhZ2U7XG5cbiAgaWYgKGV4Y2VwdGlvbi5tYXJrLm5hbWUpIHtcbiAgICB3aGVyZSArPSAnaW4gXCInICsgZXhjZXB0aW9uLm1hcmsubmFtZSArICdcIiAnO1xuICB9XG5cbiAgd2hlcmUgKz0gJygnICsgKGV4Y2VwdGlvbi5tYXJrLmxpbmUgKyAxKSArICc6JyArIChleGNlcHRpb24ubWFyay5jb2x1bW4gKyAxKSArICcpJztcblxuICBpZiAoIWNvbXBhY3QgJiYgZXhjZXB0aW9uLm1hcmsuc25pcHBldCkge1xuICAgIHdoZXJlICs9ICdcXG5cXG4nICsgZXhjZXB0aW9uLm1hcmsuc25pcHBldDtcbiAgfVxuXG4gIHJldHVybiBtZXNzYWdlICsgJyAnICsgd2hlcmU7XG59XG5cblxuZnVuY3Rpb24gWUFNTEV4Y2VwdGlvbiQxKHJlYXNvbiwgbWFyaykge1xuICAvLyBTdXBlciBjb25zdHJ1Y3RvclxuICBFcnJvci5jYWxsKHRoaXMpO1xuXG4gIHRoaXMubmFtZSA9ICdZQU1MRXhjZXB0aW9uJztcbiAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gIHRoaXMubWFyayA9IG1hcms7XG4gIHRoaXMubWVzc2FnZSA9IGZvcm1hdEVycm9yKHRoaXMsIGZhbHNlKTtcblxuICAvLyBJbmNsdWRlIHN0YWNrIHRyYWNlIGluIGVycm9yIG9iamVjdFxuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAvLyBDaHJvbWUgYW5kIE5vZGVKU1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xuICB9IGVsc2Uge1xuICAgIC8vIEZGLCBJRSAxMCsgYW5kIFNhZmFyaSA2Ky4gRmFsbGJhY2sgZm9yIG90aGVyc1xuICAgIHRoaXMuc3RhY2sgPSAobmV3IEVycm9yKCkpLnN0YWNrIHx8ICcnO1xuICB9XG59XG5cblxuLy8gSW5oZXJpdCBmcm9tIEVycm9yXG5ZQU1MRXhjZXB0aW9uJDEucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpO1xuWUFNTEV4Y2VwdGlvbiQxLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFlBTUxFeGNlcHRpb24kMTtcblxuXG5ZQU1MRXhjZXB0aW9uJDEucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoY29tcGFjdCkge1xuICByZXR1cm4gdGhpcy5uYW1lICsgJzogJyArIGZvcm1hdEVycm9yKHRoaXMsIGNvbXBhY3QpO1xufTtcblxuXG52YXIgZXhjZXB0aW9uID0gWUFNTEV4Y2VwdGlvbiQxO1xuXG4vLyBnZXQgc25pcHBldCBmb3IgYSBzaW5nbGUgbGluZSwgcmVzcGVjdGluZyBtYXhMZW5ndGhcbmZ1bmN0aW9uIGdldExpbmUoYnVmZmVyLCBsaW5lU3RhcnQsIGxpbmVFbmQsIHBvc2l0aW9uLCBtYXhMaW5lTGVuZ3RoKSB7XG4gIHZhciBoZWFkID0gJyc7XG4gIHZhciB0YWlsID0gJyc7XG4gIHZhciBtYXhIYWxmTGVuZ3RoID0gTWF0aC5mbG9vcihtYXhMaW5lTGVuZ3RoIC8gMikgLSAxO1xuXG4gIGlmIChwb3NpdGlvbiAtIGxpbmVTdGFydCA+IG1heEhhbGZMZW5ndGgpIHtcbiAgICBoZWFkID0gJyAuLi4gJztcbiAgICBsaW5lU3RhcnQgPSBwb3NpdGlvbiAtIG1heEhhbGZMZW5ndGggKyBoZWFkLmxlbmd0aDtcbiAgfVxuXG4gIGlmIChsaW5lRW5kIC0gcG9zaXRpb24gPiBtYXhIYWxmTGVuZ3RoKSB7XG4gICAgdGFpbCA9ICcgLi4uJztcbiAgICBsaW5lRW5kID0gcG9zaXRpb24gKyBtYXhIYWxmTGVuZ3RoIC0gdGFpbC5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0cjogaGVhZCArIGJ1ZmZlci5zbGljZShsaW5lU3RhcnQsIGxpbmVFbmQpLnJlcGxhY2UoL1xcdC9nLCAnXHUyMTkyJykgKyB0YWlsLFxuICAgIHBvczogcG9zaXRpb24gLSBsaW5lU3RhcnQgKyBoZWFkLmxlbmd0aCAvLyByZWxhdGl2ZSBwb3NpdGlvblxuICB9O1xufVxuXG5cbmZ1bmN0aW9uIHBhZFN0YXJ0KHN0cmluZywgbWF4KSB7XG4gIHJldHVybiBjb21tb24ucmVwZWF0KCcgJywgbWF4IC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59XG5cblxuZnVuY3Rpb24gbWFrZVNuaXBwZXQobWFyaywgb3B0aW9ucykge1xuICBvcHRpb25zID0gT2JqZWN0LmNyZWF0ZShvcHRpb25zIHx8IG51bGwpO1xuXG4gIGlmICghbWFyay5idWZmZXIpIHJldHVybiBudWxsO1xuXG4gIGlmICghb3B0aW9ucy5tYXhMZW5ndGgpIG9wdGlvbnMubWF4TGVuZ3RoID0gNzk7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5pbmRlbnQgICAgICAhPT0gJ251bWJlcicpIG9wdGlvbnMuaW5kZW50ICAgICAgPSAxO1xuICBpZiAodHlwZW9mIG9wdGlvbnMubGluZXNCZWZvcmUgIT09ICdudW1iZXInKSBvcHRpb25zLmxpbmVzQmVmb3JlID0gMztcbiAgaWYgKHR5cGVvZiBvcHRpb25zLmxpbmVzQWZ0ZXIgICE9PSAnbnVtYmVyJykgb3B0aW9ucy5saW5lc0FmdGVyICA9IDI7XG5cbiAgdmFyIHJlID0gL1xccj9cXG58XFxyfFxcMC9nO1xuICB2YXIgbGluZVN0YXJ0cyA9IFsgMCBdO1xuICB2YXIgbGluZUVuZHMgPSBbXTtcbiAgdmFyIG1hdGNoO1xuICB2YXIgZm91bmRMaW5lTm8gPSAtMTtcblxuICB3aGlsZSAoKG1hdGNoID0gcmUuZXhlYyhtYXJrLmJ1ZmZlcikpKSB7XG4gICAgbGluZUVuZHMucHVzaChtYXRjaC5pbmRleCk7XG4gICAgbGluZVN0YXJ0cy5wdXNoKG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKTtcblxuICAgIGlmIChtYXJrLnBvc2l0aW9uIDw9IG1hdGNoLmluZGV4ICYmIGZvdW5kTGluZU5vIDwgMCkge1xuICAgICAgZm91bmRMaW5lTm8gPSBsaW5lU3RhcnRzLmxlbmd0aCAtIDI7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZvdW5kTGluZU5vIDwgMCkgZm91bmRMaW5lTm8gPSBsaW5lU3RhcnRzLmxlbmd0aCAtIDE7XG5cbiAgdmFyIHJlc3VsdCA9ICcnLCBpLCBsaW5lO1xuICB2YXIgbGluZU5vTGVuZ3RoID0gTWF0aC5taW4obWFyay5saW5lICsgb3B0aW9ucy5saW5lc0FmdGVyLCBsaW5lRW5kcy5sZW5ndGgpLnRvU3RyaW5nKCkubGVuZ3RoO1xuICB2YXIgbWF4TGluZUxlbmd0aCA9IG9wdGlvbnMubWF4TGVuZ3RoIC0gKG9wdGlvbnMuaW5kZW50ICsgbGluZU5vTGVuZ3RoICsgMyk7XG5cbiAgZm9yIChpID0gMTsgaSA8PSBvcHRpb25zLmxpbmVzQmVmb3JlOyBpKyspIHtcbiAgICBpZiAoZm91bmRMaW5lTm8gLSBpIDwgMCkgYnJlYWs7XG4gICAgbGluZSA9IGdldExpbmUoXG4gICAgICBtYXJrLmJ1ZmZlcixcbiAgICAgIGxpbmVTdGFydHNbZm91bmRMaW5lTm8gLSBpXSxcbiAgICAgIGxpbmVFbmRzW2ZvdW5kTGluZU5vIC0gaV0sXG4gICAgICBtYXJrLnBvc2l0aW9uIC0gKGxpbmVTdGFydHNbZm91bmRMaW5lTm9dIC0gbGluZVN0YXJ0c1tmb3VuZExpbmVObyAtIGldKSxcbiAgICAgIG1heExpbmVMZW5ndGhcbiAgICApO1xuICAgIHJlc3VsdCA9IGNvbW1vbi5yZXBlYXQoJyAnLCBvcHRpb25zLmluZGVudCkgKyBwYWRTdGFydCgobWFyay5saW5lIC0gaSArIDEpLnRvU3RyaW5nKCksIGxpbmVOb0xlbmd0aCkgK1xuICAgICAgJyB8ICcgKyBsaW5lLnN0ciArICdcXG4nICsgcmVzdWx0O1xuICB9XG5cbiAgbGluZSA9IGdldExpbmUobWFyay5idWZmZXIsIGxpbmVTdGFydHNbZm91bmRMaW5lTm9dLCBsaW5lRW5kc1tmb3VuZExpbmVOb10sIG1hcmsucG9zaXRpb24sIG1heExpbmVMZW5ndGgpO1xuICByZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnICcsIG9wdGlvbnMuaW5kZW50KSArIHBhZFN0YXJ0KChtYXJrLmxpbmUgKyAxKS50b1N0cmluZygpLCBsaW5lTm9MZW5ndGgpICtcbiAgICAnIHwgJyArIGxpbmUuc3RyICsgJ1xcbic7XG4gIHJlc3VsdCArPSBjb21tb24ucmVwZWF0KCctJywgb3B0aW9ucy5pbmRlbnQgKyBsaW5lTm9MZW5ndGggKyAzICsgbGluZS5wb3MpICsgJ14nICsgJ1xcbic7XG5cbiAgZm9yIChpID0gMTsgaSA8PSBvcHRpb25zLmxpbmVzQWZ0ZXI7IGkrKykge1xuICAgIGlmIChmb3VuZExpbmVObyArIGkgPj0gbGluZUVuZHMubGVuZ3RoKSBicmVhaztcbiAgICBsaW5lID0gZ2V0TGluZShcbiAgICAgIG1hcmsuYnVmZmVyLFxuICAgICAgbGluZVN0YXJ0c1tmb3VuZExpbmVObyArIGldLFxuICAgICAgbGluZUVuZHNbZm91bmRMaW5lTm8gKyBpXSxcbiAgICAgIG1hcmsucG9zaXRpb24gLSAobGluZVN0YXJ0c1tmb3VuZExpbmVOb10gLSBsaW5lU3RhcnRzW2ZvdW5kTGluZU5vICsgaV0pLFxuICAgICAgbWF4TGluZUxlbmd0aFxuICAgICk7XG4gICAgcmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJyAnLCBvcHRpb25zLmluZGVudCkgKyBwYWRTdGFydCgobWFyay5saW5lICsgaSArIDEpLnRvU3RyaW5nKCksIGxpbmVOb0xlbmd0aCkgK1xuICAgICAgJyB8ICcgKyBsaW5lLnN0ciArICdcXG4nO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5yZXBsYWNlKC9cXG4kLywgJycpO1xufVxuXG5cbnZhciBzbmlwcGV0ID0gbWFrZVNuaXBwZXQ7XG5cbnZhciBUWVBFX0NPTlNUUlVDVE9SX09QVElPTlMgPSBbXG4gICdraW5kJyxcbiAgJ211bHRpJyxcbiAgJ3Jlc29sdmUnLFxuICAnY29uc3RydWN0JyxcbiAgJ2luc3RhbmNlT2YnLFxuICAncHJlZGljYXRlJyxcbiAgJ3JlcHJlc2VudCcsXG4gICdyZXByZXNlbnROYW1lJyxcbiAgJ2RlZmF1bHRTdHlsZScsXG4gICdzdHlsZUFsaWFzZXMnXG5dO1xuXG52YXIgWUFNTF9OT0RFX0tJTkRTID0gW1xuICAnc2NhbGFyJyxcbiAgJ3NlcXVlbmNlJyxcbiAgJ21hcHBpbmcnXG5dO1xuXG5mdW5jdGlvbiBjb21waWxlU3R5bGVBbGlhc2VzKG1hcCkge1xuICB2YXIgcmVzdWx0ID0ge307XG5cbiAgaWYgKG1hcCAhPT0gbnVsbCkge1xuICAgIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbiAoc3R5bGUpIHtcbiAgICAgIG1hcFtzdHlsZV0uZm9yRWFjaChmdW5jdGlvbiAoYWxpYXMpIHtcbiAgICAgICAgcmVzdWx0W1N0cmluZyhhbGlhcyldID0gc3R5bGU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIFR5cGUkMSh0YWcsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIGlmIChUWVBFX0NPTlNUUlVDVE9SX09QVElPTlMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBleGNlcHRpb24oJ1Vua25vd24gb3B0aW9uIFwiJyArIG5hbWUgKyAnXCIgaXMgbWV0IGluIGRlZmluaXRpb24gb2YgXCInICsgdGFnICsgJ1wiIFlBTUwgdHlwZS4nKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIFRPRE86IEFkZCB0YWcgZm9ybWF0IGNoZWNrLlxuICB0aGlzLm9wdGlvbnMgICAgICAgPSBvcHRpb25zOyAvLyBrZWVwIG9yaWdpbmFsIG9wdGlvbnMgaW4gY2FzZSB1c2VyIHdhbnRzIHRvIGV4dGVuZCB0aGlzIHR5cGUgbGF0ZXJcbiAgdGhpcy50YWcgICAgICAgICAgID0gdGFnO1xuICB0aGlzLmtpbmQgICAgICAgICAgPSBvcHRpb25zWydraW5kJ10gICAgICAgICAgfHwgbnVsbDtcbiAgdGhpcy5yZXNvbHZlICAgICAgID0gb3B0aW9uc1sncmVzb2x2ZSddICAgICAgIHx8IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07XG4gIHRoaXMuY29uc3RydWN0ICAgICA9IG9wdGlvbnNbJ2NvbnN0cnVjdCddICAgICB8fCBmdW5jdGlvbiAoZGF0YSkgeyByZXR1cm4gZGF0YTsgfTtcbiAgdGhpcy5pbnN0YW5jZU9mICAgID0gb3B0aW9uc1snaW5zdGFuY2VPZiddICAgIHx8IG51bGw7XG4gIHRoaXMucHJlZGljYXRlICAgICA9IG9wdGlvbnNbJ3ByZWRpY2F0ZSddICAgICB8fCBudWxsO1xuICB0aGlzLnJlcHJlc2VudCAgICAgPSBvcHRpb25zWydyZXByZXNlbnQnXSAgICAgfHwgbnVsbDtcbiAgdGhpcy5yZXByZXNlbnROYW1lID0gb3B0aW9uc1sncmVwcmVzZW50TmFtZSddIHx8IG51bGw7XG4gIHRoaXMuZGVmYXVsdFN0eWxlICA9IG9wdGlvbnNbJ2RlZmF1bHRTdHlsZSddICB8fCBudWxsO1xuICB0aGlzLm11bHRpICAgICAgICAgPSBvcHRpb25zWydtdWx0aSddICAgICAgICAgfHwgZmFsc2U7XG4gIHRoaXMuc3R5bGVBbGlhc2VzICA9IGNvbXBpbGVTdHlsZUFsaWFzZXMob3B0aW9uc1snc3R5bGVBbGlhc2VzJ10gfHwgbnVsbCk7XG5cbiAgaWYgKFlBTUxfTk9ERV9LSU5EUy5pbmRleE9mKHRoaXMua2luZCkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IGV4Y2VwdGlvbignVW5rbm93biBraW5kIFwiJyArIHRoaXMua2luZCArICdcIiBpcyBzcGVjaWZpZWQgZm9yIFwiJyArIHRhZyArICdcIiBZQU1MIHR5cGUuJyk7XG4gIH1cbn1cblxudmFyIHR5cGUgPSBUeXBlJDE7XG5cbi8qZXNsaW50LWRpc2FibGUgbWF4LWxlbiovXG5cblxuXG5cblxuZnVuY3Rpb24gY29tcGlsZUxpc3Qoc2NoZW1hLCBuYW1lKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcblxuICBzY2hlbWFbbmFtZV0uZm9yRWFjaChmdW5jdGlvbiAoY3VycmVudFR5cGUpIHtcbiAgICB2YXIgbmV3SW5kZXggPSByZXN1bHQubGVuZ3RoO1xuXG4gICAgcmVzdWx0LmZvckVhY2goZnVuY3Rpb24gKHByZXZpb3VzVHlwZSwgcHJldmlvdXNJbmRleCkge1xuICAgICAgaWYgKHByZXZpb3VzVHlwZS50YWcgPT09IGN1cnJlbnRUeXBlLnRhZyAmJlxuICAgICAgICAgIHByZXZpb3VzVHlwZS5raW5kID09PSBjdXJyZW50VHlwZS5raW5kICYmXG4gICAgICAgICAgcHJldmlvdXNUeXBlLm11bHRpID09PSBjdXJyZW50VHlwZS5tdWx0aSkge1xuXG4gICAgICAgIG5ld0luZGV4ID0gcHJldmlvdXNJbmRleDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlc3VsdFtuZXdJbmRleF0gPSBjdXJyZW50VHlwZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5mdW5jdGlvbiBjb21waWxlTWFwKC8qIGxpc3RzLi4uICovKSB7XG4gIHZhciByZXN1bHQgPSB7XG4gICAgICAgIHNjYWxhcjoge30sXG4gICAgICAgIHNlcXVlbmNlOiB7fSxcbiAgICAgICAgbWFwcGluZzoge30sXG4gICAgICAgIGZhbGxiYWNrOiB7fSxcbiAgICAgICAgbXVsdGk6IHtcbiAgICAgICAgICBzY2FsYXI6IFtdLFxuICAgICAgICAgIHNlcXVlbmNlOiBbXSxcbiAgICAgICAgICBtYXBwaW5nOiBbXSxcbiAgICAgICAgICBmYWxsYmFjazogW11cbiAgICAgICAgfVxuICAgICAgfSwgaW5kZXgsIGxlbmd0aDtcblxuICBmdW5jdGlvbiBjb2xsZWN0VHlwZSh0eXBlKSB7XG4gICAgaWYgKHR5cGUubXVsdGkpIHtcbiAgICAgIHJlc3VsdC5tdWx0aVt0eXBlLmtpbmRdLnB1c2godHlwZSk7XG4gICAgICByZXN1bHQubXVsdGlbJ2ZhbGxiYWNrJ10ucHVzaCh0eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W3R5cGUua2luZF1bdHlwZS50YWddID0gcmVzdWx0WydmYWxsYmFjayddW3R5cGUudGFnXSA9IHR5cGU7XG4gICAgfVxuICB9XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgYXJndW1lbnRzW2luZGV4XS5mb3JFYWNoKGNvbGxlY3RUeXBlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbmZ1bmN0aW9uIFNjaGVtYSQxKGRlZmluaXRpb24pIHtcbiAgcmV0dXJuIHRoaXMuZXh0ZW5kKGRlZmluaXRpb24pO1xufVxuXG5cblNjaGVtYSQxLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbiBleHRlbmQoZGVmaW5pdGlvbikge1xuICB2YXIgaW1wbGljaXQgPSBbXTtcbiAgdmFyIGV4cGxpY2l0ID0gW107XG5cbiAgaWYgKGRlZmluaXRpb24gaW5zdGFuY2VvZiB0eXBlKSB7XG4gICAgLy8gU2NoZW1hLmV4dGVuZCh0eXBlKVxuICAgIGV4cGxpY2l0LnB1c2goZGVmaW5pdGlvbik7XG5cbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGRlZmluaXRpb24pKSB7XG4gICAgLy8gU2NoZW1hLmV4dGVuZChbIHR5cGUxLCB0eXBlMiwgLi4uIF0pXG4gICAgZXhwbGljaXQgPSBleHBsaWNpdC5jb25jYXQoZGVmaW5pdGlvbik7XG5cbiAgfSBlbHNlIGlmIChkZWZpbml0aW9uICYmIChBcnJheS5pc0FycmF5KGRlZmluaXRpb24uaW1wbGljaXQpIHx8IEFycmF5LmlzQXJyYXkoZGVmaW5pdGlvbi5leHBsaWNpdCkpKSB7XG4gICAgLy8gU2NoZW1hLmV4dGVuZCh7IGV4cGxpY2l0OiBbIHR5cGUxLCB0eXBlMiwgLi4uIF0sIGltcGxpY2l0OiBbIHR5cGUxLCB0eXBlMiwgLi4uIF0gfSlcbiAgICBpZiAoZGVmaW5pdGlvbi5pbXBsaWNpdCkgaW1wbGljaXQgPSBpbXBsaWNpdC5jb25jYXQoZGVmaW5pdGlvbi5pbXBsaWNpdCk7XG4gICAgaWYgKGRlZmluaXRpb24uZXhwbGljaXQpIGV4cGxpY2l0ID0gZXhwbGljaXQuY29uY2F0KGRlZmluaXRpb24uZXhwbGljaXQpO1xuXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IGV4Y2VwdGlvbignU2NoZW1hLmV4dGVuZCBhcmd1bWVudCBzaG91bGQgYmUgYSBUeXBlLCBbIFR5cGUgXSwgJyArXG4gICAgICAnb3IgYSBzY2hlbWEgZGVmaW5pdGlvbiAoeyBpbXBsaWNpdDogWy4uLl0sIGV4cGxpY2l0OiBbLi4uXSB9KScpO1xuICB9XG5cbiAgaW1wbGljaXQuZm9yRWFjaChmdW5jdGlvbiAodHlwZSQxKSB7XG4gICAgaWYgKCEodHlwZSQxIGluc3RhbmNlb2YgdHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBleGNlcHRpb24oJ1NwZWNpZmllZCBsaXN0IG9mIFlBTUwgdHlwZXMgKG9yIGEgc2luZ2xlIFR5cGUgb2JqZWN0KSBjb250YWlucyBhIG5vbi1UeXBlIG9iamVjdC4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSQxLmxvYWRLaW5kICYmIHR5cGUkMS5sb2FkS2luZCAhPT0gJ3NjYWxhcicpIHtcbiAgICAgIHRocm93IG5ldyBleGNlcHRpb24oJ1RoZXJlIGlzIGEgbm9uLXNjYWxhciB0eXBlIGluIHRoZSBpbXBsaWNpdCBsaXN0IG9mIGEgc2NoZW1hLiBJbXBsaWNpdCByZXNvbHZpbmcgb2Ygc3VjaCB0eXBlcyBpcyBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlJDEubXVsdGkpIHtcbiAgICAgIHRocm93IG5ldyBleGNlcHRpb24oJ1RoZXJlIGlzIGEgbXVsdGkgdHlwZSBpbiB0aGUgaW1wbGljaXQgbGlzdCBvZiBhIHNjaGVtYS4gTXVsdGkgdGFncyBjYW4gb25seSBiZSBsaXN0ZWQgYXMgZXhwbGljaXQuJyk7XG4gICAgfVxuICB9KTtcblxuICBleHBsaWNpdC5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlJDEpIHtcbiAgICBpZiAoISh0eXBlJDEgaW5zdGFuY2VvZiB0eXBlKSkge1xuICAgICAgdGhyb3cgbmV3IGV4Y2VwdGlvbignU3BlY2lmaWVkIGxpc3Qgb2YgWUFNTCB0eXBlcyAob3IgYSBzaW5nbGUgVHlwZSBvYmplY3QpIGNvbnRhaW5zIGEgbm9uLVR5cGUgb2JqZWN0LicpO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHJlc3VsdCA9IE9iamVjdC5jcmVhdGUoU2NoZW1hJDEucHJvdG90eXBlKTtcblxuICByZXN1bHQuaW1wbGljaXQgPSAodGhpcy5pbXBsaWNpdCB8fCBbXSkuY29uY2F0KGltcGxpY2l0KTtcbiAgcmVzdWx0LmV4cGxpY2l0ID0gKHRoaXMuZXhwbGljaXQgfHwgW10pLmNvbmNhdChleHBsaWNpdCk7XG5cbiAgcmVzdWx0LmNvbXBpbGVkSW1wbGljaXQgPSBjb21waWxlTGlzdChyZXN1bHQsICdpbXBsaWNpdCcpO1xuICByZXN1bHQuY29tcGlsZWRFeHBsaWNpdCA9IGNvbXBpbGVMaXN0KHJlc3VsdCwgJ2V4cGxpY2l0Jyk7XG4gIHJlc3VsdC5jb21waWxlZFR5cGVNYXAgID0gY29tcGlsZU1hcChyZXN1bHQuY29tcGlsZWRJbXBsaWNpdCwgcmVzdWx0LmNvbXBpbGVkRXhwbGljaXQpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbnZhciBzY2hlbWEgPSBTY2hlbWEkMTtcblxudmFyIHN0ciA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpzdHInLCB7XG4gIGtpbmQ6ICdzY2FsYXInLFxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6ICcnOyB9XG59KTtcblxudmFyIHNlcSA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpzZXEnLCB7XG4gIGtpbmQ6ICdzZXF1ZW5jZScsXG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gKGRhdGEpIHsgcmV0dXJuIGRhdGEgIT09IG51bGwgPyBkYXRhIDogW107IH1cbn0pO1xuXG52YXIgbWFwID0gbmV3IHR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOm1hcCcsIHtcbiAga2luZDogJ21hcHBpbmcnLFxuICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChkYXRhKSB7IHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IHt9OyB9XG59KTtcblxudmFyIGZhaWxzYWZlID0gbmV3IHNjaGVtYSh7XG4gIGV4cGxpY2l0OiBbXG4gICAgc3RyLFxuICAgIHNlcSxcbiAgICBtYXBcbiAgXVxufSk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sTnVsbChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGg7XG5cbiAgcmV0dXJuIChtYXggPT09IDEgJiYgZGF0YSA9PT0gJ34nKSB8fFxuICAgICAgICAgKG1heCA9PT0gNCAmJiAoZGF0YSA9PT0gJ251bGwnIHx8IGRhdGEgPT09ICdOdWxsJyB8fCBkYXRhID09PSAnTlVMTCcpKTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbE51bGwoKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBpc051bGwob2JqZWN0KSB7XG4gIHJldHVybiBvYmplY3QgPT09IG51bGw7XG59XG5cbnZhciBfbnVsbCA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpudWxsJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxOdWxsLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxOdWxsLFxuICBwcmVkaWNhdGU6IGlzTnVsbCxcbiAgcmVwcmVzZW50OiB7XG4gICAgY2Fub25pY2FsOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnfic7ICAgIH0sXG4gICAgbG93ZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnbnVsbCc7IH0sXG4gICAgdXBwZXJjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTlVMTCc7IH0sXG4gICAgY2FtZWxjYXNlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAnTnVsbCc7IH0sXG4gICAgZW1wdHk6ICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiAnJzsgICAgIH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sQm9vbGVhbihkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoO1xuXG4gIHJldHVybiAobWF4ID09PSA0ICYmIChkYXRhID09PSAndHJ1ZScgfHwgZGF0YSA9PT0gJ1RydWUnIHx8IGRhdGEgPT09ICdUUlVFJykpIHx8XG4gICAgICAgICAobWF4ID09PSA1ICYmIChkYXRhID09PSAnZmFsc2UnIHx8IGRhdGEgPT09ICdGYWxzZScgfHwgZGF0YSA9PT0gJ0ZBTFNFJykpO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sQm9vbGVhbihkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSAndHJ1ZScgfHxcbiAgICAgICAgIGRhdGEgPT09ICdUcnVlJyB8fFxuICAgICAgICAgZGF0YSA9PT0gJ1RSVUUnO1xufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4ob2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgQm9vbGVhbl0nO1xufVxuXG52YXIgYm9vbCA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpib29sJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxCb29sZWFuLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxCb29sZWFuLFxuICBwcmVkaWNhdGU6IGlzQm9vbGVhbixcbiAgcmVwcmVzZW50OiB7XG4gICAgbG93ZXJjYXNlOiBmdW5jdGlvbiAob2JqZWN0KSB7IHJldHVybiBvYmplY3QgPyAndHJ1ZScgOiAnZmFsc2UnOyB9LFxuICAgIHVwcGVyY2FzZTogZnVuY3Rpb24gKG9iamVjdCkgeyByZXR1cm4gb2JqZWN0ID8gJ1RSVUUnIDogJ0ZBTFNFJzsgfSxcbiAgICBjYW1lbGNhc2U6IGZ1bmN0aW9uIChvYmplY3QpIHsgcmV0dXJuIG9iamVjdCA/ICdUcnVlJyA6ICdGYWxzZSc7IH1cbiAgfSxcbiAgZGVmYXVsdFN0eWxlOiAnbG93ZXJjYXNlJ1xufSk7XG5cbmZ1bmN0aW9uIGlzSGV4Q29kZShjKSB7XG4gIHJldHVybiAoKDB4MzAvKiAwICovIDw9IGMpICYmIChjIDw9IDB4MzkvKiA5ICovKSkgfHxcbiAgICAgICAgICgoMHg0MS8qIEEgKi8gPD0gYykgJiYgKGMgPD0gMHg0Ni8qIEYgKi8pKSB8fFxuICAgICAgICAgKCgweDYxLyogYSAqLyA8PSBjKSAmJiAoYyA8PSAweDY2LyogZiAqLykpO1xufVxuXG5mdW5jdGlvbiBpc09jdENvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM3LyogNyAqLykpO1xufVxuXG5mdW5jdGlvbiBpc0RlY0NvZGUoYykge1xuICByZXR1cm4gKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEludGVnZXIoZGF0YSkge1xuICBpZiAoZGF0YSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBtYXggPSBkYXRhLmxlbmd0aCxcbiAgICAgIGluZGV4ID0gMCxcbiAgICAgIGhhc0RpZ2l0cyA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgaWYgKCFtYXgpIHJldHVybiBmYWxzZTtcblxuICBjaCA9IGRhdGFbaW5kZXhdO1xuXG4gIC8vIHNpZ25cbiAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykge1xuICAgIGNoID0gZGF0YVsrK2luZGV4XTtcbiAgfVxuXG4gIGlmIChjaCA9PT0gJzAnKSB7XG4gICAgLy8gMFxuICAgIGlmIChpbmRleCArIDEgPT09IG1heCkgcmV0dXJuIHRydWU7XG4gICAgY2ggPSBkYXRhWysraW5kZXhdO1xuXG4gICAgLy8gYmFzZSAyLCBiYXNlIDgsIGJhc2UgMTZcblxuICAgIGlmIChjaCA9PT0gJ2InKSB7XG4gICAgICAvLyBiYXNlIDJcbiAgICAgIGluZGV4Kys7XG5cbiAgICAgIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgICAgICBjaCA9IGRhdGFbaW5kZXhdO1xuICAgICAgICBpZiAoY2ggPT09ICdfJykgY29udGludWU7XG4gICAgICAgIGlmIChjaCAhPT0gJzAnICYmIGNoICE9PSAnMScpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09ICdfJztcbiAgICB9XG5cblxuICAgIGlmIChjaCA9PT0gJ3gnKSB7XG4gICAgICAvLyBiYXNlIDE2XG4gICAgICBpbmRleCsrO1xuXG4gICAgICBmb3IgKDsgaW5kZXggPCBtYXg7IGluZGV4KyspIHtcbiAgICAgICAgY2ggPSBkYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIWlzSGV4Q29kZShkYXRhLmNoYXJDb2RlQXQoaW5kZXgpKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBoYXNEaWdpdHMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0RpZ2l0cyAmJiBjaCAhPT0gJ18nO1xuICAgIH1cblxuXG4gICAgaWYgKGNoID09PSAnbycpIHtcbiAgICAgIC8vIGJhc2UgOFxuICAgICAgaW5kZXgrKztcblxuICAgICAgZm9yICg7IGluZGV4IDwgbWF4OyBpbmRleCsrKSB7XG4gICAgICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgICAgIGlmIChjaCA9PT0gJ18nKSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFpc09jdENvZGUoZGF0YS5jaGFyQ29kZUF0KGluZGV4KSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaGFzRGlnaXRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNEaWdpdHMgJiYgY2ggIT09ICdfJztcbiAgICB9XG4gIH1cblxuICAvLyBiYXNlIDEwIChleGNlcHQgMClcblxuICAvLyB2YWx1ZSBzaG91bGQgbm90IHN0YXJ0IHdpdGggYF9gO1xuICBpZiAoY2ggPT09ICdfJykgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAoOyBpbmRleCA8IG1heDsgaW5kZXgrKykge1xuICAgIGNoID0gZGF0YVtpbmRleF07XG4gICAgaWYgKGNoID09PSAnXycpIGNvbnRpbnVlO1xuICAgIGlmICghaXNEZWNDb2RlKGRhdGEuY2hhckNvZGVBdChpbmRleCkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGhhc0RpZ2l0cyA9IHRydWU7XG4gIH1cblxuICAvLyBTaG91bGQgaGF2ZSBkaWdpdHMgYW5kIHNob3VsZCBub3QgZW5kIHdpdGggYF9gXG4gIGlmICghaGFzRGlnaXRzIHx8IGNoID09PSAnXycpIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEludGVnZXIoZGF0YSkge1xuICB2YXIgdmFsdWUgPSBkYXRhLCBzaWduID0gMSwgY2g7XG5cbiAgaWYgKHZhbHVlLmluZGV4T2YoJ18nKSAhPT0gLTEpIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL18vZywgJycpO1xuICB9XG5cbiAgY2ggPSB2YWx1ZVswXTtcblxuICBpZiAoY2ggPT09ICctJyB8fCBjaCA9PT0gJysnKSB7XG4gICAgaWYgKGNoID09PSAnLScpIHNpZ24gPSAtMTtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgIGNoID0gdmFsdWVbMF07XG4gIH1cblxuICBpZiAodmFsdWUgPT09ICcwJykgcmV0dXJuIDA7XG5cbiAgaWYgKGNoID09PSAnMCcpIHtcbiAgICBpZiAodmFsdWVbMV0gPT09ICdiJykgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgMik7XG4gICAgaWYgKHZhbHVlWzFdID09PSAneCcpIHJldHVybiBzaWduICogcGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIDE2KTtcbiAgICBpZiAodmFsdWVbMV0gPT09ICdvJykgcmV0dXJuIHNpZ24gKiBwYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgOCk7XG4gIH1cblxuICByZXR1cm4gc2lnbiAqIHBhcnNlSW50KHZhbHVlLCAxMCk7XG59XG5cbmZ1bmN0aW9uIGlzSW50ZWdlcihvYmplY3QpIHtcbiAgcmV0dXJuIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSkgPT09ICdbb2JqZWN0IE51bWJlcl0nICYmXG4gICAgICAgICAob2JqZWN0ICUgMSA9PT0gMCAmJiAhY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpO1xufVxuXG52YXIgaW50ID0gbmV3IHR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOmludCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sSW50ZWdlcixcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sSW50ZWdlcixcbiAgcHJlZGljYXRlOiBpc0ludGVnZXIsXG4gIHJlcHJlc2VudDoge1xuICAgIGJpbmFyeTogICAgICBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogPj0gMCA/ICcwYicgKyBvYmoudG9TdHJpbmcoMikgOiAnLTBiJyArIG9iai50b1N0cmluZygyKS5zbGljZSgxKTsgfSxcbiAgICBvY3RhbDogICAgICAgZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqID49IDAgPyAnMG8nICArIG9iai50b1N0cmluZyg4KSA6ICctMG8nICArIG9iai50b1N0cmluZyg4KS5zbGljZSgxKTsgfSxcbiAgICBkZWNpbWFsOiAgICAgZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqLnRvU3RyaW5nKDEwKTsgfSxcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG4gICAgaGV4YWRlY2ltYWw6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiA+PSAwID8gJzB4JyArIG9iai50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSA6ICAnLTB4JyArIG9iai50b1N0cmluZygxNikudG9VcHBlckNhc2UoKS5zbGljZSgxKTsgfVxuICB9LFxuICBkZWZhdWx0U3R5bGU6ICdkZWNpbWFsJyxcbiAgc3R5bGVBbGlhc2VzOiB7XG4gICAgYmluYXJ5OiAgICAgIFsgMiwgICdiaW4nIF0sXG4gICAgb2N0YWw6ICAgICAgIFsgOCwgICdvY3QnIF0sXG4gICAgZGVjaW1hbDogICAgIFsgMTAsICdkZWMnIF0sXG4gICAgaGV4YWRlY2ltYWw6IFsgMTYsICdoZXgnIF1cbiAgfVxufSk7XG5cbnZhciBZQU1MX0ZMT0FUX1BBVFRFUk4gPSBuZXcgUmVnRXhwKFxuICAvLyAyLjVlNCwgMi41IGFuZCBpbnRlZ2Vyc1xuICAnXig/OlstK10/KD86WzAtOV1bMC05X10qKSg/OlxcXFwuWzAtOV9dKik/KD86W2VFXVstK10/WzAtOV0rKT8nICtcbiAgLy8gLjJlNCwgLjJcbiAgLy8gc3BlY2lhbCBjYXNlLCBzZWVtcyBub3QgZnJvbSBzcGVjXG4gICd8XFxcXC5bMC05X10rKD86W2VFXVstK10/WzAtOV0rKT8nICtcbiAgLy8gLmluZlxuICAnfFstK10/XFxcXC4oPzppbmZ8SW5mfElORiknICtcbiAgLy8gLm5hblxuICAnfFxcXFwuKD86bmFufE5hTnxOQU4pKSQnKTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxGbG9hdChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKCFZQU1MX0ZMT0FUX1BBVFRFUk4udGVzdChkYXRhKSB8fFxuICAgICAgLy8gUXVpY2sgaGFjayB0byBub3QgYWxsb3cgaW50ZWdlcnMgZW5kIHdpdGggYF9gXG4gICAgICAvLyBQcm9iYWJseSBzaG91bGQgdXBkYXRlIHJlZ2V4cCAmIGNoZWNrIHNwZWVkXG4gICAgICBkYXRhW2RhdGEubGVuZ3RoIC0gMV0gPT09ICdfJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb25zdHJ1Y3RZYW1sRmxvYXQoZGF0YSkge1xuICB2YXIgdmFsdWUsIHNpZ247XG5cbiAgdmFsdWUgID0gZGF0YS5yZXBsYWNlKC9fL2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICBzaWduICAgPSB2YWx1ZVswXSA9PT0gJy0nID8gLTEgOiAxO1xuXG4gIGlmICgnKy0nLmluZGV4T2YodmFsdWVbMF0pID49IDApIHtcbiAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKDEpO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnLmluZicpIHtcbiAgICByZXR1cm4gKHNpZ24gPT09IDEpID8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZIDogTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuXG4gIH0gZWxzZSBpZiAodmFsdWUgPT09ICcubmFuJykge1xuICAgIHJldHVybiBOYU47XG4gIH1cbiAgcmV0dXJuIHNpZ24gKiBwYXJzZUZsb2F0KHZhbHVlLCAxMCk7XG59XG5cblxudmFyIFNDSUVOVElGSUNfV0lUSE9VVF9ET1QgPSAvXlstK10/WzAtOV0rZS87XG5cbmZ1bmN0aW9uIHJlcHJlc2VudFlhbWxGbG9hdChvYmplY3QsIHN0eWxlKSB7XG4gIHZhciByZXM7XG5cbiAgaWYgKGlzTmFOKG9iamVjdCkpIHtcbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgICBjYXNlICdsb3dlcmNhc2UnOiByZXR1cm4gJy5uYW4nO1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuICcuTkFOJztcbiAgICAgIGNhc2UgJ2NhbWVsY2FzZSc6IHJldHVybiAnLk5hTic7XG4gICAgfVxuICB9IGVsc2UgaWYgKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA9PT0gb2JqZWN0KSB7XG4gICAgc3dpdGNoIChzdHlsZSkge1xuICAgICAgY2FzZSAnbG93ZXJjYXNlJzogcmV0dXJuICcuaW5mJztcbiAgICAgIGNhc2UgJ3VwcGVyY2FzZSc6IHJldHVybiAnLklORic7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy5JbmYnO1xuICAgIH1cbiAgfSBlbHNlIGlmIChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgPT09IG9iamVjdCkge1xuICAgIHN3aXRjaCAoc3R5bGUpIHtcbiAgICAgIGNhc2UgJ2xvd2VyY2FzZSc6IHJldHVybiAnLS5pbmYnO1xuICAgICAgY2FzZSAndXBwZXJjYXNlJzogcmV0dXJuICctLklORic7XG4gICAgICBjYXNlICdjYW1lbGNhc2UnOiByZXR1cm4gJy0uSW5mJztcbiAgICB9XG4gIH0gZWxzZSBpZiAoY29tbW9uLmlzTmVnYXRpdmVaZXJvKG9iamVjdCkpIHtcbiAgICByZXR1cm4gJy0wLjAnO1xuICB9XG5cbiAgcmVzID0gb2JqZWN0LnRvU3RyaW5nKDEwKTtcblxuICAvLyBKUyBzdHJpbmdpZmllciBjYW4gYnVpbGQgc2NpZW50aWZpYyBmb3JtYXQgd2l0aG91dCBkb3RzOiA1ZS0xMDAsXG4gIC8vIHdoaWxlIFlBTUwgcmVxdXJlcyBkb3Q6IDUuZS0xMDAuIEZpeCBpdCB3aXRoIHNpbXBsZSBoYWNrXG5cbiAgcmV0dXJuIFNDSUVOVElGSUNfV0lUSE9VVF9ET1QudGVzdChyZXMpID8gcmVzLnJlcGxhY2UoJ2UnLCAnLmUnKSA6IHJlcztcbn1cblxuZnVuY3Rpb24gaXNGbG9hdChvYmplY3QpIHtcbiAgcmV0dXJuIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXScpICYmXG4gICAgICAgICAob2JqZWN0ICUgMSAhPT0gMCB8fCBjb21tb24uaXNOZWdhdGl2ZVplcm8ob2JqZWN0KSk7XG59XG5cbnZhciBmbG9hdCA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdCcsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sRmxvYXQsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEZsb2F0LFxuICBwcmVkaWNhdGU6IGlzRmxvYXQsXG4gIHJlcHJlc2VudDogcmVwcmVzZW50WWFtbEZsb2F0LFxuICBkZWZhdWx0U3R5bGU6ICdsb3dlcmNhc2UnXG59KTtcblxudmFyIGpzb24gPSBmYWlsc2FmZS5leHRlbmQoe1xuICBpbXBsaWNpdDogW1xuICAgIF9udWxsLFxuICAgIGJvb2wsXG4gICAgaW50LFxuICAgIGZsb2F0XG4gIF1cbn0pO1xuXG52YXIgY29yZSA9IGpzb247XG5cbnZhciBZQU1MX0RBVEVfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgJ14oWzAtOV1bMC05XVswLTldWzAtOV0pJyAgICAgICAgICArIC8vIFsxXSB5ZWFyXG4gICctKFswLTldWzAtOV0pJyAgICAgICAgICAgICAgICAgICAgKyAvLyBbMl0gbW9udGhcbiAgJy0oWzAtOV1bMC05XSkkJyk7ICAgICAgICAgICAgICAgICAgIC8vIFszXSBkYXlcblxudmFyIFlBTUxfVElNRVNUQU1QX1JFR0VYUCA9IG5ldyBSZWdFeHAoXG4gICdeKFswLTldWzAtOV1bMC05XVswLTldKScgICAgICAgICAgKyAvLyBbMV0geWVhclxuICAnLShbMC05XVswLTldPyknICAgICAgICAgICAgICAgICAgICsgLy8gWzJdIG1vbnRoXG4gICctKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgKyAvLyBbM10gZGF5XG4gICcoPzpbVHRdfFsgXFxcXHRdKyknICAgICAgICAgICAgICAgICArIC8vIC4uLlxuICAnKFswLTldWzAtOV0/KScgICAgICAgICAgICAgICAgICAgICsgLy8gWzRdIGhvdXJcbiAgJzooWzAtOV1bMC05XSknICAgICAgICAgICAgICAgICAgICArIC8vIFs1XSBtaW51dGVcbiAgJzooWzAtOV1bMC05XSknICAgICAgICAgICAgICAgICAgICArIC8vIFs2XSBzZWNvbmRcbiAgJyg/OlxcXFwuKFswLTldKikpPycgICAgICAgICAgICAgICAgICsgLy8gWzddIGZyYWN0aW9uXG4gICcoPzpbIFxcXFx0XSooWnwoWy0rXSkoWzAtOV1bMC05XT8pJyArIC8vIFs4XSB0eiBbOV0gdHpfc2lnbiBbMTBdIHR6X2hvdXJcbiAgJyg/OjooWzAtOV1bMC05XSkpPykpPyQnKTsgICAgICAgICAgIC8vIFsxMV0gdHpfbWludXRlXG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sVGltZXN0YW1wKGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgaWYgKFlBTUxfREFURV9SRUdFWFAuZXhlYyhkYXRhKSAhPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gIGlmIChZQU1MX1RJTUVTVEFNUF9SRUdFWFAuZXhlYyhkYXRhKSAhPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbFRpbWVzdGFtcChkYXRhKSB7XG4gIHZhciBtYXRjaCwgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZyYWN0aW9uID0gMCxcbiAgICAgIGRlbHRhID0gbnVsbCwgdHpfaG91ciwgdHpfbWludXRlLCBkYXRlO1xuXG4gIG1hdGNoID0gWUFNTF9EQVRFX1JFR0VYUC5leGVjKGRhdGEpO1xuICBpZiAobWF0Y2ggPT09IG51bGwpIG1hdGNoID0gWUFNTF9USU1FU1RBTVBfUkVHRVhQLmV4ZWMoZGF0YSk7XG5cbiAgaWYgKG1hdGNoID09PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoJ0RhdGUgcmVzb2x2ZSBlcnJvcicpO1xuXG4gIC8vIG1hdGNoOiBbMV0geWVhciBbMl0gbW9udGggWzNdIGRheVxuXG4gIHllYXIgPSArKG1hdGNoWzFdKTtcbiAgbW9udGggPSArKG1hdGNoWzJdKSAtIDE7IC8vIEpTIG1vbnRoIHN0YXJ0cyB3aXRoIDBcbiAgZGF5ID0gKyhtYXRjaFszXSk7XG5cbiAgaWYgKCFtYXRjaFs0XSkgeyAvLyBubyBob3VyXG4gICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgfVxuXG4gIC8vIG1hdGNoOiBbNF0gaG91ciBbNV0gbWludXRlIFs2XSBzZWNvbmQgWzddIGZyYWN0aW9uXG5cbiAgaG91ciA9ICsobWF0Y2hbNF0pO1xuICBtaW51dGUgPSArKG1hdGNoWzVdKTtcbiAgc2Vjb25kID0gKyhtYXRjaFs2XSk7XG5cbiAgaWYgKG1hdGNoWzddKSB7XG4gICAgZnJhY3Rpb24gPSBtYXRjaFs3XS5zbGljZSgwLCAzKTtcbiAgICB3aGlsZSAoZnJhY3Rpb24ubGVuZ3RoIDwgMykgeyAvLyBtaWxsaS1zZWNvbmRzXG4gICAgICBmcmFjdGlvbiArPSAnMCc7XG4gICAgfVxuICAgIGZyYWN0aW9uID0gK2ZyYWN0aW9uO1xuICB9XG5cbiAgLy8gbWF0Y2g6IFs4XSB0eiBbOV0gdHpfc2lnbiBbMTBdIHR6X2hvdXIgWzExXSB0el9taW51dGVcblxuICBpZiAobWF0Y2hbOV0pIHtcbiAgICB0el9ob3VyID0gKyhtYXRjaFsxMF0pO1xuICAgIHR6X21pbnV0ZSA9ICsobWF0Y2hbMTFdIHx8IDApO1xuICAgIGRlbHRhID0gKHR6X2hvdXIgKiA2MCArIHR6X21pbnV0ZSkgKiA2MDAwMDsgLy8gZGVsdGEgaW4gbWlsaS1zZWNvbmRzXG4gICAgaWYgKG1hdGNoWzldID09PSAnLScpIGRlbHRhID0gLWRlbHRhO1xuICB9XG5cbiAgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBmcmFjdGlvbikpO1xuXG4gIGlmIChkZWx0YSkgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpIC0gZGVsdGEpO1xuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiByZXByZXNlbnRZYW1sVGltZXN0YW1wKG9iamVjdCAvKiwgc3R5bGUqLykge1xuICByZXR1cm4gb2JqZWN0LnRvSVNPU3RyaW5nKCk7XG59XG5cbnZhciB0aW1lc3RhbXAgPSBuZXcgdHlwZSgndGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wJywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxUaW1lc3RhbXAsXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbFRpbWVzdGFtcCxcbiAgaW5zdGFuY2VPZjogRGF0ZSxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sVGltZXN0YW1wXG59KTtcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxNZXJnZShkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSAnPDwnIHx8IGRhdGEgPT09IG51bGw7XG59XG5cbnZhciBtZXJnZSA9IG5ldyB0eXBlKCd0YWc6eWFtbC5vcmcsMjAwMjptZXJnZScsIHtcbiAga2luZDogJ3NjYWxhcicsXG4gIHJlc29sdmU6IHJlc29sdmVZYW1sTWVyZ2Vcbn0pO1xuXG4vKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UqL1xuXG5cblxuXG5cbi8vIFsgNjQsIDY1LCA2NiBdIC0+IFsgcGFkZGluZywgQ1IsIExGIF1cbnZhciBCQVNFNjRfTUFQID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XFxuXFxyJztcblxuXG5mdW5jdGlvbiByZXNvbHZlWWFtbEJpbmFyeShkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGNvZGUsIGlkeCwgYml0bGVuID0gMCwgbWF4ID0gZGF0YS5sZW5ndGgsIG1hcCA9IEJBU0U2NF9NQVA7XG5cbiAgLy8gQ29udmVydCBvbmUgYnkgb25lLlxuICBmb3IgKGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyspIHtcbiAgICBjb2RlID0gbWFwLmluZGV4T2YoZGF0YS5jaGFyQXQoaWR4KSk7XG5cbiAgICAvLyBTa2lwIENSL0xGXG4gICAgaWYgKGNvZGUgPiA2NCkgY29udGludWU7XG5cbiAgICAvLyBGYWlsIG9uIGlsbGVnYWwgY2hhcmFjdGVyc1xuICAgIGlmIChjb2RlIDwgMCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgYml0bGVuICs9IDY7XG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgYW55IGJpdHMgbGVmdCwgc291cmNlIHdhcyBjb3JydXB0ZWRcbiAgcmV0dXJuIChiaXRsZW4gJSA4KSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbEJpbmFyeShkYXRhKSB7XG4gIHZhciBpZHgsIHRhaWxiaXRzLFxuICAgICAgaW5wdXQgPSBkYXRhLnJlcGxhY2UoL1tcXHJcXG49XS9nLCAnJyksIC8vIHJlbW92ZSBDUi9MRiAmIHBhZGRpbmcgdG8gc2ltcGxpZnkgc2NhblxuICAgICAgbWF4ID0gaW5wdXQubGVuZ3RoLFxuICAgICAgbWFwID0gQkFTRTY0X01BUCxcbiAgICAgIGJpdHMgPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgLy8gQ29sbGVjdCBieSA2KjQgYml0cyAoMyBieXRlcylcblxuICBmb3IgKGlkeCA9IDA7IGlkeCA8IG1heDsgaWR4KyspIHtcbiAgICBpZiAoKGlkeCAlIDQgPT09IDApICYmIGlkeCkge1xuICAgICAgcmVzdWx0LnB1c2goKGJpdHMgPj4gMTYpICYgMHhGRik7XG4gICAgICByZXN1bHQucHVzaCgoYml0cyA+PiA4KSAmIDB4RkYpO1xuICAgICAgcmVzdWx0LnB1c2goYml0cyAmIDB4RkYpO1xuICAgIH1cblxuICAgIGJpdHMgPSAoYml0cyA8PCA2KSB8IG1hcC5pbmRleE9mKGlucHV0LmNoYXJBdChpZHgpKTtcbiAgfVxuXG4gIC8vIER1bXAgdGFpbFxuXG4gIHRhaWxiaXRzID0gKG1heCAlIDQpICogNjtcblxuICBpZiAodGFpbGJpdHMgPT09IDApIHtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxNikgJiAweEZGKTtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiA4KSAmIDB4RkYpO1xuICAgIHJlc3VsdC5wdXNoKGJpdHMgJiAweEZGKTtcbiAgfSBlbHNlIGlmICh0YWlsYml0cyA9PT0gMTgpIHtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiAxMCkgJiAweEZGKTtcbiAgICByZXN1bHQucHVzaCgoYml0cyA+PiAyKSAmIDB4RkYpO1xuICB9IGVsc2UgaWYgKHRhaWxiaXRzID09PSAxMikge1xuICAgIHJlc3VsdC5wdXNoKChiaXRzID4+IDQpICYgMHhGRik7XG4gIH1cblxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkocmVzdWx0KTtcbn1cblxuZnVuY3Rpb24gcmVwcmVzZW50WWFtbEJpbmFyeShvYmplY3QgLyosIHN0eWxlKi8pIHtcbiAgdmFyIHJlc3VsdCA9ICcnLCBiaXRzID0gMCwgaWR4LCB0YWlsLFxuICAgICAgbWF4ID0gb2JqZWN0Lmxlbmd0aCxcbiAgICAgIG1hcCA9IEJBU0U2NF9NQVA7XG5cbiAgLy8gQ29udmVydCBldmVyeSB0aHJlZSBieXRlcyB0byA0IEFTQ0lJIGNoYXJhY3RlcnMuXG5cbiAgZm9yIChpZHggPSAwOyBpZHggPCBtYXg7IGlkeCsrKSB7XG4gICAgaWYgKChpZHggJSAzID09PSAwKSAmJiBpZHgpIHtcbiAgICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTgpICYgMHgzRl07XG4gICAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDEyKSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA2KSAmIDB4M0ZdO1xuICAgICAgcmVzdWx0ICs9IG1hcFtiaXRzICYgMHgzRl07XG4gICAgfVxuXG4gICAgYml0cyA9IChiaXRzIDw8IDgpICsgb2JqZWN0W2lkeF07XG4gIH1cblxuICAvLyBEdW1wIHRhaWxcblxuICB0YWlsID0gbWF4ICUgMztcblxuICBpZiAodGFpbCA9PT0gMCkge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTgpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAxMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWyhiaXRzID4+IDYpICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFtiaXRzICYgMHgzRl07XG4gIH0gZWxzZSBpZiAodGFpbCA9PT0gMikge1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPj4gMTApICYgMHgzRl07XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiA0KSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPDwgMikgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgfSBlbHNlIGlmICh0YWlsID09PSAxKSB7XG4gICAgcmVzdWx0ICs9IG1hcFsoYml0cyA+PiAyKSAmIDB4M0ZdO1xuICAgIHJlc3VsdCArPSBtYXBbKGJpdHMgPDwgNCkgJiAweDNGXTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgICByZXN1bHQgKz0gbWFwWzY0XTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGlzQmluYXJ5KG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICAnW29iamVjdCBVaW50OEFycmF5XSc7XG59XG5cbnZhciBiaW5hcnkgPSBuZXcgdHlwZSgndGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5Jywge1xuICBraW5kOiAnc2NhbGFyJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxCaW5hcnksXG4gIGNvbnN0cnVjdDogY29uc3RydWN0WWFtbEJpbmFyeSxcbiAgcHJlZGljYXRlOiBpc0JpbmFyeSxcbiAgcmVwcmVzZW50OiByZXByZXNlbnRZYW1sQmluYXJ5XG59KTtcblxudmFyIF9oYXNPd25Qcm9wZXJ0eSQzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfdG9TdHJpbmckMiAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sT21hcChkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgb2JqZWN0S2V5cyA9IFtdLCBpbmRleCwgbGVuZ3RoLCBwYWlyLCBwYWlyS2V5LCBwYWlySGFzS2V5LFxuICAgICAgb2JqZWN0ID0gZGF0YTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gb2JqZWN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyID0gb2JqZWN0W2luZGV4XTtcbiAgICBwYWlySGFzS2V5ID0gZmFsc2U7XG5cbiAgICBpZiAoX3RvU3RyaW5nJDIuY2FsbChwYWlyKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAocGFpcktleSBpbiBwYWlyKSB7XG4gICAgICBpZiAoX2hhc093blByb3BlcnR5JDMuY2FsbChwYWlyLCBwYWlyS2V5KSkge1xuICAgICAgICBpZiAoIXBhaXJIYXNLZXkpIHBhaXJIYXNLZXkgPSB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXBhaXJIYXNLZXkpIHJldHVybiBmYWxzZTtcblxuICAgIGlmIChvYmplY3RLZXlzLmluZGV4T2YocGFpcktleSkgPT09IC0xKSBvYmplY3RLZXlzLnB1c2gocGFpcktleSk7XG4gICAgZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbE9tYXAoZGF0YSkge1xuICByZXR1cm4gZGF0YSAhPT0gbnVsbCA/IGRhdGEgOiBbXTtcbn1cblxudmFyIG9tYXAgPSBuZXcgdHlwZSgndGFnOnlhbWwub3JnLDIwMDI6b21hcCcsIHtcbiAga2luZDogJ3NlcXVlbmNlJyxcbiAgcmVzb2x2ZTogcmVzb2x2ZVlhbWxPbWFwLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxPbWFwXG59KTtcblxudmFyIF90b1N0cmluZyQxID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuZnVuY3Rpb24gcmVzb2x2ZVlhbWxQYWlycyhkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gdHJ1ZTtcblxuICB2YXIgaW5kZXgsIGxlbmd0aCwgcGFpciwga2V5cywgcmVzdWx0LFxuICAgICAgb2JqZWN0ID0gZGF0YTtcblxuICByZXN1bHQgPSBuZXcgQXJyYXkob2JqZWN0Lmxlbmd0aCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgcGFpciA9IG9iamVjdFtpbmRleF07XG5cbiAgICBpZiAoX3RvU3RyaW5nJDEuY2FsbChwYWlyKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHJldHVybiBmYWxzZTtcblxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhwYWlyKTtcblxuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gMSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmVzdWx0W2luZGV4XSA9IFsga2V5c1swXSwgcGFpcltrZXlzWzBdXSBdO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdFlhbWxQYWlycyhkYXRhKSB7XG4gIGlmIChkYXRhID09PSBudWxsKSByZXR1cm4gW107XG5cbiAgdmFyIGluZGV4LCBsZW5ndGgsIHBhaXIsIGtleXMsIHJlc3VsdCxcbiAgICAgIG9iamVjdCA9IGRhdGE7XG5cbiAgcmVzdWx0ID0gbmV3IEFycmF5KG9iamVjdC5sZW5ndGgpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHBhaXIgPSBvYmplY3RbaW5kZXhdO1xuXG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHBhaXIpO1xuXG4gICAgcmVzdWx0W2luZGV4XSA9IFsga2V5c1swXSwgcGFpcltrZXlzWzBdXSBdO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxudmFyIHBhaXJzID0gbmV3IHR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnBhaXJzJywge1xuICBraW5kOiAnc2VxdWVuY2UnLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFBhaXJzLFxuICBjb25zdHJ1Y3Q6IGNvbnN0cnVjdFlhbWxQYWlyc1xufSk7XG5cbnZhciBfaGFzT3duUHJvcGVydHkkMiA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHJlc29sdmVZYW1sU2V0KGRhdGEpIHtcbiAgaWYgKGRhdGEgPT09IG51bGwpIHJldHVybiB0cnVlO1xuXG4gIHZhciBrZXksIG9iamVjdCA9IGRhdGE7XG5cbiAgZm9yIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKF9oYXNPd25Qcm9wZXJ0eSQyLmNhbGwob2JqZWN0LCBrZXkpKSB7XG4gICAgICBpZiAob2JqZWN0W2tleV0gIT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29uc3RydWN0WWFtbFNldChkYXRhKSB7XG4gIHJldHVybiBkYXRhICE9PSBudWxsID8gZGF0YSA6IHt9O1xufVxuXG52YXIgc2V0ID0gbmV3IHR5cGUoJ3RhZzp5YW1sLm9yZywyMDAyOnNldCcsIHtcbiAga2luZDogJ21hcHBpbmcnLFxuICByZXNvbHZlOiByZXNvbHZlWWFtbFNldCxcbiAgY29uc3RydWN0OiBjb25zdHJ1Y3RZYW1sU2V0XG59KTtcblxudmFyIF9kZWZhdWx0ID0gY29yZS5leHRlbmQoe1xuICBpbXBsaWNpdDogW1xuICAgIHRpbWVzdGFtcCxcbiAgICBtZXJnZVxuICBdLFxuICBleHBsaWNpdDogW1xuICAgIGJpbmFyeSxcbiAgICBvbWFwLFxuICAgIHBhaXJzLFxuICAgIHNldFxuICBdXG59KTtcblxuLyplc2xpbnQtZGlzYWJsZSBtYXgtbGVuLG5vLXVzZS1iZWZvcmUtZGVmaW5lKi9cblxuXG5cblxuXG5cblxudmFyIF9oYXNPd25Qcm9wZXJ0eSQxID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuXG52YXIgQ09OVEVYVF9GTE9XX0lOICAgPSAxO1xudmFyIENPTlRFWFRfRkxPV19PVVQgID0gMjtcbnZhciBDT05URVhUX0JMT0NLX0lOICA9IDM7XG52YXIgQ09OVEVYVF9CTE9DS19PVVQgPSA0O1xuXG5cbnZhciBDSE9NUElOR19DTElQICA9IDE7XG52YXIgQ0hPTVBJTkdfU1RSSVAgPSAyO1xudmFyIENIT01QSU5HX0tFRVAgID0gMztcblxuXG52YXIgUEFUVEVSTl9OT05fUFJJTlRBQkxFICAgICAgICAgPSAvW1xceDAwLVxceDA4XFx4MEJcXHgwQ1xceDBFLVxceDFGXFx4N0YtXFx4ODRcXHg4Ni1cXHg5RlxcdUZGRkVcXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXSg/IVtcXHVEQzAwLVxcdURGRkZdKXwoPzpbXlxcdUQ4MDAtXFx1REJGRl18XilbXFx1REMwMC1cXHVERkZGXS87XG52YXIgUEFUVEVSTl9OT05fQVNDSUlfTElORV9CUkVBS1MgPSAvW1xceDg1XFx1MjAyOFxcdTIwMjldLztcbnZhciBQQVRURVJOX0ZMT1dfSU5ESUNBVE9SUyAgICAgICA9IC9bLFxcW1xcXVxce1xcfV0vO1xudmFyIFBBVFRFUk5fVEFHX0hBTkRMRSAgICAgICAgICAgID0gL14oPzohfCEhfCFbYS16XFwtXSshKSQvaTtcbnZhciBQQVRURVJOX1RBR19VUkkgICAgICAgICAgICAgICA9IC9eKD86IXxbXixcXFtcXF1cXHtcXH1dKSg/OiVbMC05YS1mXXsyfXxbMC05YS16XFwtIztcXC9cXD86QCY9XFwrXFwkLF9cXC4hflxcKidcXChcXClcXFtcXF1dKSokL2k7XG5cblxuZnVuY3Rpb24gX2NsYXNzKG9iaikgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaik7IH1cblxuZnVuY3Rpb24gaXNfRU9MKGMpIHtcbiAgcmV0dXJuIChjID09PSAweDBBLyogTEYgKi8pIHx8IChjID09PSAweDBELyogQ1IgKi8pO1xufVxuXG5mdW5jdGlvbiBpc19XSElURV9TUEFDRShjKSB7XG4gIHJldHVybiAoYyA9PT0gMHgwOS8qIFRhYiAqLykgfHwgKGMgPT09IDB4MjAvKiBTcGFjZSAqLyk7XG59XG5cbmZ1bmN0aW9uIGlzX1dTX09SX0VPTChjKSB7XG4gIHJldHVybiAoYyA9PT0gMHgwOS8qIFRhYiAqLykgfHxcbiAgICAgICAgIChjID09PSAweDIwLyogU3BhY2UgKi8pIHx8XG4gICAgICAgICAoYyA9PT0gMHgwQS8qIExGICovKSB8fFxuICAgICAgICAgKGMgPT09IDB4MEQvKiBDUiAqLyk7XG59XG5cbmZ1bmN0aW9uIGlzX0ZMT1dfSU5ESUNBVE9SKGMpIHtcbiAgcmV0dXJuIGMgPT09IDB4MkMvKiAsICovIHx8XG4gICAgICAgICBjID09PSAweDVCLyogWyAqLyB8fFxuICAgICAgICAgYyA9PT0gMHg1RC8qIF0gKi8gfHxcbiAgICAgICAgIGMgPT09IDB4N0IvKiB7ICovIHx8XG4gICAgICAgICBjID09PSAweDdELyogfSAqLztcbn1cblxuZnVuY3Rpb24gZnJvbUhleENvZGUoYykge1xuICB2YXIgbGM7XG5cbiAgaWYgKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpIHtcbiAgICByZXR1cm4gYyAtIDB4MzA7XG4gIH1cblxuICAvKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UqL1xuICBsYyA9IGMgfCAweDIwO1xuXG4gIGlmICgoMHg2MS8qIGEgKi8gPD0gbGMpICYmIChsYyA8PSAweDY2LyogZiAqLykpIHtcbiAgICByZXR1cm4gbGMgLSAweDYxICsgMTA7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZWRIZXhMZW4oYykge1xuICBpZiAoYyA9PT0gMHg3OC8qIHggKi8pIHsgcmV0dXJuIDI7IH1cbiAgaWYgKGMgPT09IDB4NzUvKiB1ICovKSB7IHJldHVybiA0OyB9XG4gIGlmIChjID09PSAweDU1LyogVSAqLykgeyByZXR1cm4gODsgfVxuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gZnJvbURlY2ltYWxDb2RlKGMpIHtcbiAgaWYgKCgweDMwLyogMCAqLyA8PSBjKSAmJiAoYyA8PSAweDM5LyogOSAqLykpIHtcbiAgICByZXR1cm4gYyAtIDB4MzA7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUVzY2FwZVNlcXVlbmNlKGMpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgaW5kZW50ICovXG4gIHJldHVybiAoYyA9PT0gMHgzMC8qIDAgKi8pID8gJ1xceDAwJyA6XG4gICAgICAgIChjID09PSAweDYxLyogYSAqLykgPyAnXFx4MDcnIDpcbiAgICAgICAgKGMgPT09IDB4NjIvKiBiICovKSA/ICdcXHgwOCcgOlxuICAgICAgICAoYyA9PT0gMHg3NC8qIHQgKi8pID8gJ1xceDA5JyA6XG4gICAgICAgIChjID09PSAweDA5LyogVGFiICovKSA/ICdcXHgwOScgOlxuICAgICAgICAoYyA9PT0gMHg2RS8qIG4gKi8pID8gJ1xceDBBJyA6XG4gICAgICAgIChjID09PSAweDc2LyogdiAqLykgPyAnXFx4MEInIDpcbiAgICAgICAgKGMgPT09IDB4NjYvKiBmICovKSA/ICdcXHgwQycgOlxuICAgICAgICAoYyA9PT0gMHg3Mi8qIHIgKi8pID8gJ1xceDBEJyA6XG4gICAgICAgIChjID09PSAweDY1LyogZSAqLykgPyAnXFx4MUInIDpcbiAgICAgICAgKGMgPT09IDB4MjAvKiBTcGFjZSAqLykgPyAnICcgOlxuICAgICAgICAoYyA9PT0gMHgyMi8qIFwiICovKSA/ICdcXHgyMicgOlxuICAgICAgICAoYyA9PT0gMHgyRi8qIC8gKi8pID8gJy8nIDpcbiAgICAgICAgKGMgPT09IDB4NUMvKiBcXCAqLykgPyAnXFx4NUMnIDpcbiAgICAgICAgKGMgPT09IDB4NEUvKiBOICovKSA/ICdcXHg4NScgOlxuICAgICAgICAoYyA9PT0gMHg1Ri8qIF8gKi8pID8gJ1xceEEwJyA6XG4gICAgICAgIChjID09PSAweDRDLyogTCAqLykgPyAnXFx1MjAyOCcgOlxuICAgICAgICAoYyA9PT0gMHg1MC8qIFAgKi8pID8gJ1xcdTIwMjknIDogJyc7XG59XG5cbmZ1bmN0aW9uIGNoYXJGcm9tQ29kZXBvaW50KGMpIHtcbiAgaWYgKGMgPD0gMHhGRkZGKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7XG4gIH1cbiAgLy8gRW5jb2RlIFVURi0xNiBzdXJyb2dhdGUgcGFpclxuICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtMTYjQ29kZV9wb2ludHNfVS4yQjAxMDAwMF90b19VLjJCMTBGRkZGXG4gIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKFxuICAgICgoYyAtIDB4MDEwMDAwKSA+PiAxMCkgKyAweEQ4MDAsXG4gICAgKChjIC0gMHgwMTAwMDApICYgMHgwM0ZGKSArIDB4REMwMFxuICApO1xufVxuXG52YXIgc2ltcGxlRXNjYXBlQ2hlY2sgPSBuZXcgQXJyYXkoMjU2KTsgLy8gaW50ZWdlciwgZm9yIGZhc3QgYWNjZXNzXG52YXIgc2ltcGxlRXNjYXBlTWFwID0gbmV3IEFycmF5KDI1Nik7XG5mb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG4gIHNpbXBsZUVzY2FwZUNoZWNrW2ldID0gc2ltcGxlRXNjYXBlU2VxdWVuY2UoaSkgPyAxIDogMDtcbiAgc2ltcGxlRXNjYXBlTWFwW2ldID0gc2ltcGxlRXNjYXBlU2VxdWVuY2UoaSk7XG59XG5cblxuZnVuY3Rpb24gU3RhdGUkMShpbnB1dCwgb3B0aW9ucykge1xuICB0aGlzLmlucHV0ID0gaW5wdXQ7XG5cbiAgdGhpcy5maWxlbmFtZSAgPSBvcHRpb25zWydmaWxlbmFtZSddICB8fCBudWxsO1xuICB0aGlzLnNjaGVtYSAgICA9IG9wdGlvbnNbJ3NjaGVtYSddICAgIHx8IF9kZWZhdWx0O1xuICB0aGlzLm9uV2FybmluZyA9IG9wdGlvbnNbJ29uV2FybmluZyddIHx8IG51bGw7XG4gIC8vIChIaWRkZW4pIFJlbW92ZT8gbWFrZXMgdGhlIGxvYWRlciB0byBleHBlY3QgWUFNTCAxLjEgZG9jdW1lbnRzXG4gIC8vIGlmIHN1Y2ggZG9jdW1lbnRzIGhhdmUgbm8gZXhwbGljaXQgJVlBTUwgZGlyZWN0aXZlXG4gIHRoaXMubGVnYWN5ICAgID0gb3B0aW9uc1snbGVnYWN5J10gICAgfHwgZmFsc2U7XG5cbiAgdGhpcy5qc29uICAgICAgPSBvcHRpb25zWydqc29uJ10gICAgICB8fCBmYWxzZTtcbiAgdGhpcy5saXN0ZW5lciAgPSBvcHRpb25zWydsaXN0ZW5lciddICB8fCBudWxsO1xuXG4gIHRoaXMuaW1wbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkSW1wbGljaXQ7XG4gIHRoaXMudHlwZU1hcCAgICAgICA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkVHlwZU1hcDtcblxuICB0aGlzLmxlbmd0aCAgICAgPSBpbnB1dC5sZW5ndGg7XG4gIHRoaXMucG9zaXRpb24gICA9IDA7XG4gIHRoaXMubGluZSAgICAgICA9IDA7XG4gIHRoaXMubGluZVN0YXJ0ICA9IDA7XG4gIHRoaXMubGluZUluZGVudCA9IDA7XG5cbiAgLy8gcG9zaXRpb24gb2YgZmlyc3QgbGVhZGluZyB0YWIgaW4gdGhlIGN1cnJlbnQgbGluZSxcbiAgLy8gdXNlZCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHRhYnMgaW4gdGhlIGluZGVudGF0aW9uXG4gIHRoaXMuZmlyc3RUYWJJbkxpbmUgPSAtMTtcblxuICB0aGlzLmRvY3VtZW50cyA9IFtdO1xuXG4gIC8qXG4gIHRoaXMudmVyc2lvbjtcbiAgdGhpcy5jaGVja0xpbmVCcmVha3M7XG4gIHRoaXMudGFnTWFwO1xuICB0aGlzLmFuY2hvck1hcDtcbiAgdGhpcy50YWc7XG4gIHRoaXMuYW5jaG9yO1xuICB0aGlzLmtpbmQ7XG4gIHRoaXMucmVzdWx0OyovXG5cbn1cblxuXG5mdW5jdGlvbiBnZW5lcmF0ZUVycm9yKHN0YXRlLCBtZXNzYWdlKSB7XG4gIHZhciBtYXJrID0ge1xuICAgIG5hbWU6ICAgICBzdGF0ZS5maWxlbmFtZSxcbiAgICBidWZmZXI6ICAgc3RhdGUuaW5wdXQuc2xpY2UoMCwgLTEpLCAvLyBvbWl0IHRyYWlsaW5nIFxcMFxuICAgIHBvc2l0aW9uOiBzdGF0ZS5wb3NpdGlvbixcbiAgICBsaW5lOiAgICAgc3RhdGUubGluZSxcbiAgICBjb2x1bW46ICAgc3RhdGUucG9zaXRpb24gLSBzdGF0ZS5saW5lU3RhcnRcbiAgfTtcblxuICBtYXJrLnNuaXBwZXQgPSBzbmlwcGV0KG1hcmspO1xuXG4gIHJldHVybiBuZXcgZXhjZXB0aW9uKG1lc3NhZ2UsIG1hcmspO1xufVxuXG5mdW5jdGlvbiB0aHJvd0Vycm9yKHN0YXRlLCBtZXNzYWdlKSB7XG4gIHRocm93IGdlbmVyYXRlRXJyb3Ioc3RhdGUsIG1lc3NhZ2UpO1xufVxuXG5mdW5jdGlvbiB0aHJvd1dhcm5pbmcoc3RhdGUsIG1lc3NhZ2UpIHtcbiAgaWYgKHN0YXRlLm9uV2FybmluZykge1xuICAgIHN0YXRlLm9uV2FybmluZy5jYWxsKG51bGwsIGdlbmVyYXRlRXJyb3Ioc3RhdGUsIG1lc3NhZ2UpKTtcbiAgfVxufVxuXG5cbnZhciBkaXJlY3RpdmVIYW5kbGVycyA9IHtcblxuICBZQU1MOiBmdW5jdGlvbiBoYW5kbGVZYW1sRGlyZWN0aXZlKHN0YXRlLCBuYW1lLCBhcmdzKSB7XG5cbiAgICB2YXIgbWF0Y2gsIG1ham9yLCBtaW5vcjtcblxuICAgIGlmIChzdGF0ZS52ZXJzaW9uICE9PSBudWxsKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnZHVwbGljYXRpb24gb2YgJVlBTUwgZGlyZWN0aXZlJyk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnWUFNTCBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IG9uZSBhcmd1bWVudCcpO1xuICAgIH1cblxuICAgIG1hdGNoID0gL14oWzAtOV0rKVxcLihbMC05XSspJC8uZXhlYyhhcmdzWzBdKTtcblxuICAgIGlmIChtYXRjaCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2lsbC1mb3JtZWQgYXJndW1lbnQgb2YgdGhlIFlBTUwgZGlyZWN0aXZlJyk7XG4gICAgfVxuXG4gICAgbWFqb3IgPSBwYXJzZUludChtYXRjaFsxXSwgMTApO1xuICAgIG1pbm9yID0gcGFyc2VJbnQobWF0Y2hbMl0sIDEwKTtcblxuICAgIGlmIChtYWpvciAhPT0gMSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuYWNjZXB0YWJsZSBZQU1MIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50Jyk7XG4gICAgfVxuXG4gICAgc3RhdGUudmVyc2lvbiA9IGFyZ3NbMF07XG4gICAgc3RhdGUuY2hlY2tMaW5lQnJlYWtzID0gKG1pbm9yIDwgMik7XG5cbiAgICBpZiAobWlub3IgIT09IDEgJiYgbWlub3IgIT09IDIpIHtcbiAgICAgIHRocm93V2FybmluZyhzdGF0ZSwgJ3Vuc3VwcG9ydGVkIFlBTUwgdmVyc2lvbiBvZiB0aGUgZG9jdW1lbnQnKTtcbiAgICB9XG4gIH0sXG5cbiAgVEFHOiBmdW5jdGlvbiBoYW5kbGVUYWdEaXJlY3RpdmUoc3RhdGUsIG5hbWUsIGFyZ3MpIHtcblxuICAgIHZhciBoYW5kbGUsIHByZWZpeDtcblxuICAgIGlmIChhcmdzLmxlbmd0aCAhPT0gMikge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ1RBRyBkaXJlY3RpdmUgYWNjZXB0cyBleGFjdGx5IHR3byBhcmd1bWVudHMnKTtcbiAgICB9XG5cbiAgICBoYW5kbGUgPSBhcmdzWzBdO1xuICAgIHByZWZpeCA9IGFyZ3NbMV07XG5cbiAgICBpZiAoIVBBVFRFUk5fVEFHX0hBTkRMRS50ZXN0KGhhbmRsZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdpbGwtZm9ybWVkIHRhZyBoYW5kbGUgKGZpcnN0IGFyZ3VtZW50KSBvZiB0aGUgVEFHIGRpcmVjdGl2ZScpO1xuICAgIH1cblxuICAgIGlmIChfaGFzT3duUHJvcGVydHkkMS5jYWxsKHN0YXRlLnRhZ01hcCwgaGFuZGxlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RoZXJlIGlzIGEgcHJldmlvdXNseSBkZWNsYXJlZCBzdWZmaXggZm9yIFwiJyArIGhhbmRsZSArICdcIiB0YWcgaGFuZGxlJyk7XG4gICAgfVxuXG4gICAgaWYgKCFQQVRURVJOX1RBR19VUkkudGVzdChwcmVmaXgpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnaWxsLWZvcm1lZCB0YWcgcHJlZml4IChzZWNvbmQgYXJndW1lbnQpIG9mIHRoZSBUQUcgZGlyZWN0aXZlJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHByZWZpeCA9IGRlY29kZVVSSUNvbXBvbmVudChwcmVmaXgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBwcmVmaXggaXMgbWFsZm9ybWVkOiAnICsgcHJlZml4KTtcbiAgICB9XG5cbiAgICBzdGF0ZS50YWdNYXBbaGFuZGxlXSA9IHByZWZpeDtcbiAgfVxufTtcblxuXG5mdW5jdGlvbiBjYXB0dXJlU2VnbWVudChzdGF0ZSwgc3RhcnQsIGVuZCwgY2hlY2tKc29uKSB7XG4gIHZhciBfcG9zaXRpb24sIF9sZW5ndGgsIF9jaGFyYWN0ZXIsIF9yZXN1bHQ7XG5cbiAgaWYgKHN0YXJ0IDwgZW5kKSB7XG4gICAgX3Jlc3VsdCA9IHN0YXRlLmlucHV0LnNsaWNlKHN0YXJ0LCBlbmQpO1xuXG4gICAgaWYgKGNoZWNrSnNvbikge1xuICAgICAgZm9yIChfcG9zaXRpb24gPSAwLCBfbGVuZ3RoID0gX3Jlc3VsdC5sZW5ndGg7IF9wb3NpdGlvbiA8IF9sZW5ndGg7IF9wb3NpdGlvbiArPSAxKSB7XG4gICAgICAgIF9jaGFyYWN0ZXIgPSBfcmVzdWx0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcbiAgICAgICAgaWYgKCEoX2NoYXJhY3RlciA9PT0gMHgwOSB8fFxuICAgICAgICAgICAgICAoMHgyMCA8PSBfY2hhcmFjdGVyICYmIF9jaGFyYWN0ZXIgPD0gMHgxMEZGRkYpKSkge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdleHBlY3RlZCB2YWxpZCBKU09OIGNoYXJhY3RlcicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChQQVRURVJOX05PTl9QUklOVEFCTEUudGVzdChfcmVzdWx0KSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RoZSBzdHJlYW0gY29udGFpbnMgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuXG4gICAgc3RhdGUucmVzdWx0ICs9IF9yZXN1bHQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VNYXBwaW5ncyhzdGF0ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3ZlcnJpZGFibGVLZXlzKSB7XG4gIHZhciBzb3VyY2VLZXlzLCBrZXksIGluZGV4LCBxdWFudGl0eTtcblxuICBpZiAoIWNvbW1vbi5pc09iamVjdChzb3VyY2UpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2Nhbm5vdCBtZXJnZSBtYXBwaW5nczsgdGhlIHByb3ZpZGVkIHNvdXJjZSBvYmplY3QgaXMgdW5hY2NlcHRhYmxlJyk7XG4gIH1cblxuICBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcblxuICBmb3IgKGluZGV4ID0gMCwgcXVhbnRpdHkgPSBzb3VyY2VLZXlzLmxlbmd0aDsgaW5kZXggPCBxdWFudGl0eTsgaW5kZXggKz0gMSkge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaW5kZXhdO1xuXG4gICAgaWYgKCFfaGFzT3duUHJvcGVydHkkMS5jYWxsKGRlc3RpbmF0aW9uLCBrZXkpKSB7XG4gICAgICBkZXN0aW5hdGlvbltrZXldID0gc291cmNlW2tleV07XG4gICAgICBvdmVycmlkYWJsZUtleXNba2V5XSA9IHRydWU7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCB2YWx1ZU5vZGUsXG4gIHN0YXJ0TGluZSwgc3RhcnRMaW5lU3RhcnQsIHN0YXJ0UG9zKSB7XG5cbiAgdmFyIGluZGV4LCBxdWFudGl0eTtcblxuICAvLyBUaGUgb3V0cHV0IGlzIGEgcGxhaW4gb2JqZWN0IGhlcmUsIHNvIGtleXMgY2FuIG9ubHkgYmUgc3RyaW5ncy5cbiAgLy8gV2UgbmVlZCB0byBjb252ZXJ0IGtleU5vZGUgdG8gYSBzdHJpbmcsIGJ1dCBkb2luZyBzbyBjYW4gaGFuZyB0aGUgcHJvY2Vzc1xuICAvLyAoZGVlcGx5IG5lc3RlZCBhcnJheXMgdGhhdCBleHBsb2RlIGV4cG9uZW50aWFsbHkgdXNpbmcgYWxpYXNlcykuXG4gIGlmIChBcnJheS5pc0FycmF5KGtleU5vZGUpKSB7XG4gICAga2V5Tm9kZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGtleU5vZGUpO1xuXG4gICAgZm9yIChpbmRleCA9IDAsIHF1YW50aXR5ID0ga2V5Tm9kZS5sZW5ndGg7IGluZGV4IDwgcXVhbnRpdHk7IGluZGV4ICs9IDEpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGtleU5vZGVbaW5kZXhdKSkge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAnbmVzdGVkIGFycmF5cyBhcmUgbm90IHN1cHBvcnRlZCBpbnNpZGUga2V5cycpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGtleU5vZGUgPT09ICdvYmplY3QnICYmIF9jbGFzcyhrZXlOb2RlW2luZGV4XSkgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICAgIGtleU5vZGVbaW5kZXhdID0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQXZvaWQgY29kZSBleGVjdXRpb24gaW4gbG9hZCgpIHZpYSB0b1N0cmluZyBwcm9wZXJ0eVxuICAvLyAoc3RpbGwgdXNlIGl0cyBvd24gdG9TdHJpbmcgZm9yIGFycmF5cywgdGltZXN0YW1wcyxcbiAgLy8gYW5kIHdoYXRldmVyIHVzZXIgc2NoZW1hIGV4dGVuc2lvbnMgaGFwcGVuIHRvIGhhdmUgQEB0b1N0cmluZ1RhZylcbiAgaWYgKHR5cGVvZiBrZXlOb2RlID09PSAnb2JqZWN0JyAmJiBfY2xhc3Moa2V5Tm9kZSkgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAga2V5Tm9kZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuICB9XG5cblxuICBrZXlOb2RlID0gU3RyaW5nKGtleU5vZGUpO1xuXG4gIGlmIChfcmVzdWx0ID09PSBudWxsKSB7XG4gICAgX3Jlc3VsdCA9IHt9O1xuICB9XG5cbiAgaWYgKGtleVRhZyA9PT0gJ3RhZzp5YW1sLm9yZywyMDAyOm1lcmdlJykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlTm9kZSkpIHtcbiAgICAgIGZvciAoaW5kZXggPSAwLCBxdWFudGl0eSA9IHZhbHVlTm9kZS5sZW5ndGg7IGluZGV4IDwgcXVhbnRpdHk7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgbWVyZ2VNYXBwaW5ncyhzdGF0ZSwgX3Jlc3VsdCwgdmFsdWVOb2RlW2luZGV4XSwgb3ZlcnJpZGFibGVLZXlzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWVyZ2VNYXBwaW5ncyhzdGF0ZSwgX3Jlc3VsdCwgdmFsdWVOb2RlLCBvdmVycmlkYWJsZUtleXMpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoIXN0YXRlLmpzb24gJiZcbiAgICAgICAgIV9oYXNPd25Qcm9wZXJ0eSQxLmNhbGwob3ZlcnJpZGFibGVLZXlzLCBrZXlOb2RlKSAmJlxuICAgICAgICBfaGFzT3duUHJvcGVydHkkMS5jYWxsKF9yZXN1bHQsIGtleU5vZGUpKSB7XG4gICAgICBzdGF0ZS5saW5lID0gc3RhcnRMaW5lIHx8IHN0YXRlLmxpbmU7XG4gICAgICBzdGF0ZS5saW5lU3RhcnQgPSBzdGFydExpbmVTdGFydCB8fCBzdGF0ZS5saW5lU3RhcnQ7XG4gICAgICBzdGF0ZS5wb3NpdGlvbiA9IHN0YXJ0UG9zIHx8IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0ZWQgbWFwcGluZyBrZXknKTtcbiAgICB9XG5cbiAgICAvLyB1c2VkIGZvciB0aGlzIHNwZWNpZmljIGtleSBvbmx5IGJlY2F1c2UgT2JqZWN0LmRlZmluZVByb3BlcnR5IGlzIHNsb3dcbiAgICBpZiAoa2V5Tm9kZSA9PT0gJ19fcHJvdG9fXycpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfcmVzdWx0LCBrZXlOb2RlLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZU5vZGVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBfcmVzdWx0W2tleU5vZGVdID0gdmFsdWVOb2RlO1xuICAgIH1cbiAgICBkZWxldGUgb3ZlcnJpZGFibGVLZXlzW2tleU5vZGVdO1xuICB9XG5cbiAgcmV0dXJuIF9yZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHJlYWRMaW5lQnJlYWsoc3RhdGUpIHtcbiAgdmFyIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoID09PSAweDBBLyogTEYgKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICB9IGVsc2UgaWYgKGNoID09PSAweDBELyogQ1IgKi8pIHtcbiAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgIGlmIChzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSA9PT0gMHgwQS8qIExGICovKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAnYSBsaW5lIGJyZWFrIGlzIGV4cGVjdGVkJyk7XG4gIH1cblxuICBzdGF0ZS5saW5lICs9IDE7XG4gIHN0YXRlLmxpbmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uO1xuICBzdGF0ZS5maXJzdFRhYkluTGluZSA9IC0xO1xufVxuXG5mdW5jdGlvbiBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBhbGxvd0NvbW1lbnRzLCBjaGVja0luZGVudCkge1xuICB2YXIgbGluZUJyZWFrcyA9IDAsXG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgIGlmIChjaCA9PT0gMHgwOS8qIFRhYiAqLyAmJiBzdGF0ZS5maXJzdFRhYkluTGluZSA9PT0gLTEpIHtcbiAgICAgICAgc3RhdGUuZmlyc3RUYWJJbkxpbmUgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgIH1cbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoYWxsb3dDb21tZW50cyAmJiBjaCA9PT0gMHgyMy8qICMgKi8pIHtcbiAgICAgIGRvIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfSB3aGlsZSAoY2ggIT09IDB4MEEvKiBMRiAqLyAmJiBjaCAhPT0gMHgwRC8qIENSICovICYmIGNoICE9PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG5cbiAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgICBsaW5lQnJlYWtzKys7XG4gICAgICBzdGF0ZS5saW5lSW5kZW50ID0gMDtcblxuICAgICAgd2hpbGUgKGNoID09PSAweDIwLyogU3BhY2UgKi8pIHtcbiAgICAgICAgc3RhdGUubGluZUluZGVudCsrO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjaGVja0luZGVudCAhPT0gLTEgJiYgbGluZUJyZWFrcyAhPT0gMCAmJiBzdGF0ZS5saW5lSW5kZW50IDwgY2hlY2tJbmRlbnQpIHtcbiAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICdkZWZpY2llbnQgaW5kZW50YXRpb24nKTtcbiAgfVxuXG4gIHJldHVybiBsaW5lQnJlYWtzO1xufVxuXG5mdW5jdGlvbiB0ZXN0RG9jdW1lbnRTZXBhcmF0b3Ioc3RhdGUpIHtcbiAgdmFyIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbik7XG5cbiAgLy8gQ29uZGl0aW9uIHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgaXMgdGVzdGVkXG4gIC8vIGluIHBhcmVudCBvbiBlYWNoIGNhbGwsIGZvciBlZmZpY2llbmN5LiBObyBuZWVkcyB0byB0ZXN0IGhlcmUgYWdhaW4uXG4gIGlmICgoY2ggPT09IDB4MkQvKiAtICovIHx8IGNoID09PSAweDJFLyogLiAqLykgJiZcbiAgICAgIGNoID09PSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KF9wb3NpdGlvbiArIDEpICYmXG4gICAgICBjaCA9PT0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChfcG9zaXRpb24gKyAyKSkge1xuXG4gICAgX3Bvc2l0aW9uICs9IDM7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoX3Bvc2l0aW9uKTtcblxuICAgIGlmIChjaCA9PT0gMCB8fCBpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIGNvdW50KSB7XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHN0YXRlLnJlc3VsdCArPSAnICc7XG4gIH0gZWxzZSBpZiAoY291bnQgPiAxKSB7XG4gICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGNvdW50IC0gMSk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiByZWFkUGxhaW5TY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQsIHdpdGhpbkZsb3dDb2xsZWN0aW9uKSB7XG4gIHZhciBwcmVjZWRpbmcsXG4gICAgICBmb2xsb3dpbmcsXG4gICAgICBjYXB0dXJlU3RhcnQsXG4gICAgICBjYXB0dXJlRW5kLFxuICAgICAgaGFzUGVuZGluZ0NvbnRlbnQsXG4gICAgICBfbGluZSxcbiAgICAgIF9saW5lU3RhcnQsXG4gICAgICBfbGluZUluZGVudCxcbiAgICAgIF9raW5kID0gc3RhdGUua2luZCxcbiAgICAgIF9yZXN1bHQgPSBzdGF0ZS5yZXN1bHQsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChpc19XU19PUl9FT0woY2gpICAgICAgfHxcbiAgICAgIGlzX0ZMT1dfSU5ESUNBVE9SKGNoKSB8fFxuICAgICAgY2ggPT09IDB4MjMvKiAjICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyNi8qICYgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDJBLyogKiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjEvKiAhICovICAgIHx8XG4gICAgICBjaCA9PT0gMHg3Qy8qIHwgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDNFLyogPiAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4MjcvKiAnICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyMi8qIFwiICovICAgIHx8XG4gICAgICBjaCA9PT0gMHgyNS8qICUgKi8gICAgfHxcbiAgICAgIGNoID09PSAweDQwLyogQCAqLyAgICB8fFxuICAgICAgY2ggPT09IDB4NjAvKiBgICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGNoID09PSAweDNGLyogPyAqLyB8fCBjaCA9PT0gMHgyRC8qIC0gKi8pIHtcbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICBpZiAoaXNfV1NfT1JfRU9MKGZvbGxvd2luZykgfHxcbiAgICAgICAgd2l0aGluRmxvd0NvbGxlY3Rpb24gJiYgaXNfRkxPV19JTkRJQ0FUT1IoZm9sbG93aW5nKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGlmIChpc19XU19PUl9FT0woZm9sbG93aW5nKSB8fFxuICAgICAgICAgIHdpdGhpbkZsb3dDb2xsZWN0aW9uICYmIGlzX0ZMT1dfSU5ESUNBVE9SKGZvbGxvd2luZykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgcHJlY2VkaW5nID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiAtIDEpO1xuXG4gICAgICBpZiAoaXNfV1NfT1JfRU9MKHByZWNlZGluZykpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHx8XG4gICAgICAgICAgICAgICB3aXRoaW5GbG93Q29sbGVjdGlvbiAmJiBpc19GTE9XX0lORElDQVRPUihjaCkpIHtcbiAgICAgIGJyZWFrO1xuXG4gICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgICBfbGluZVN0YXJ0ID0gc3RhdGUubGluZVN0YXJ0O1xuICAgICAgX2xpbmVJbmRlbnQgPSBzdGF0ZS5saW5lSW5kZW50O1xuICAgICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgZmFsc2UsIC0xKTtcblxuICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPj0gbm9kZUluZGVudCkge1xuICAgICAgICBoYXNQZW5kaW5nQ29udGVudCA9IHRydWU7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucG9zaXRpb24gPSBjYXB0dXJlRW5kO1xuICAgICAgICBzdGF0ZS5saW5lID0gX2xpbmU7XG4gICAgICAgIHN0YXRlLmxpbmVTdGFydCA9IF9saW5lU3RhcnQ7XG4gICAgICAgIHN0YXRlLmxpbmVJbmRlbnQgPSBfbGluZUluZGVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGhhc1BlbmRpbmdDb250ZW50KSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBzdGF0ZS5saW5lIC0gX2xpbmUpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgaGFzUGVuZGluZ0NvbnRlbnQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uICsgMTtcbiAgICB9XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gIH1cblxuICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCBmYWxzZSk7XG5cbiAgaWYgKHN0YXRlLnJlc3VsdCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9IF9raW5kO1xuICBzdGF0ZS5yZXN1bHQgPSBfcmVzdWx0O1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNoLFxuICAgICAgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoICE9PSAweDI3LyogJyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmtpbmQgPSAnc2NhbGFyJztcbiAgc3RhdGUucmVzdWx0ID0gJyc7XG4gIHN0YXRlLnBvc2l0aW9uKys7XG4gIGNhcHR1cmVTdGFydCA9IGNhcHR1cmVFbmQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoKGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikpICE9PSAwKSB7XG4gICAgaWYgKGNoID09PSAweDI3LyogJyAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gICAgICBpZiAoY2ggPT09IDB4MjcvKiAnICovKSB7XG4gICAgICAgIGNhcHR1cmVTdGFydCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoaXNfRU9MKGNoKSkge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgY2FwdHVyZUVuZCwgdHJ1ZSk7XG4gICAgICB3cml0ZUZvbGRlZExpbmVzKHN0YXRlLCBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCBmYWxzZSwgbm9kZUluZGVudCkpO1xuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gc3RhdGUubGluZVN0YXJ0ICYmIHRlc3REb2N1bWVudFNlcGFyYXRvcihzdGF0ZSkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgZG9jdW1lbnQgd2l0aGluIGEgc2luZ2xlIHF1b3RlZCBzY2FsYXInKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIHNpbmdsZSBxdW90ZWQgc2NhbGFyJyk7XG59XG5cbmZ1bmN0aW9uIHJlYWREb3VibGVRdW90ZWRTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNhcHR1cmVTdGFydCxcbiAgICAgIGNhcHR1cmVFbmQsXG4gICAgICBoZXhMZW5ndGgsXG4gICAgICBoZXhSZXN1bHQsXG4gICAgICB0bXAsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyMi8qIFwiICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcbiAgc3RhdGUucG9zaXRpb24rKztcbiAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIHdoaWxlICgoY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBpZiAoY2ggPT09IDB4MjIvKiBcIiAqLykge1xuICAgICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIHRydWUpO1xuICAgICAgc3RhdGUucG9zaXRpb24rKztcbiAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHg1Qy8qIFxcICovKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBzdGF0ZS5wb3NpdGlvbiwgdHJ1ZSk7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgIGlmIChpc19FT0woY2gpKSB7XG4gICAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KTtcblxuICAgICAgICAvLyBUT0RPOiByZXdvcmsgdG8gaW5saW5lIGZuIHdpdGggbm8gdHlwZSBjYXN0P1xuICAgICAgfSBlbHNlIGlmIChjaCA8IDI1NiAmJiBzaW1wbGVFc2NhcGVDaGVja1tjaF0pIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IHNpbXBsZUVzY2FwZU1hcFtjaF07XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG5cbiAgICAgIH0gZWxzZSBpZiAoKHRtcCA9IGVzY2FwZWRIZXhMZW4oY2gpKSA+IDApIHtcbiAgICAgICAgaGV4TGVuZ3RoID0gdG1wO1xuICAgICAgICBoZXhSZXN1bHQgPSAwO1xuXG4gICAgICAgIGZvciAoOyBoZXhMZW5ndGggPiAwOyBoZXhMZW5ndGgtLSkge1xuICAgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICAgICAgICAgIGlmICgodG1wID0gZnJvbUhleENvZGUoY2gpKSA+PSAwKSB7XG4gICAgICAgICAgICBoZXhSZXN1bHQgPSAoaGV4UmVzdWx0IDw8IDQpICsgdG1wO1xuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdleHBlY3RlZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY2hhckZyb21Db2RlcG9pbnQoaGV4UmVzdWx0KTtcblxuICAgICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5rbm93biBlc2NhcGUgc2VxdWVuY2UnKTtcbiAgICAgIH1cblxuICAgICAgY2FwdHVyZVN0YXJ0ID0gY2FwdHVyZUVuZCA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgfSBlbHNlIGlmIChpc19FT0woY2gpKSB7XG4gICAgICBjYXB0dXJlU2VnbWVudChzdGF0ZSwgY2FwdHVyZVN0YXJ0LCBjYXB0dXJlRW5kLCB0cnVlKTtcbiAgICAgIHdyaXRlRm9sZGVkTGluZXMoc3RhdGUsIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIGZhbHNlLCBub2RlSW5kZW50KSk7XG4gICAgICBjYXB0dXJlU3RhcnQgPSBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG5cbiAgICB9IGVsc2UgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBkb2N1bWVudCB3aXRoaW4gYSBkb3VibGUgcXVvdGVkIHNjYWxhcicpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICBjYXB0dXJlRW5kID0gc3RhdGUucG9zaXRpb247XG4gICAgfVxuICB9XG5cbiAgdGhyb3dFcnJvcihzdGF0ZSwgJ3VuZXhwZWN0ZWQgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aGluIGEgZG91YmxlIHF1b3RlZCBzY2FsYXInKTtcbn1cblxuZnVuY3Rpb24gcmVhZEZsb3dDb2xsZWN0aW9uKHN0YXRlLCBub2RlSW5kZW50KSB7XG4gIHZhciByZWFkTmV4dCA9IHRydWUsXG4gICAgICBfbGluZSxcbiAgICAgIF9saW5lU3RhcnQsXG4gICAgICBfcG9zLFxuICAgICAgX3RhZyAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBfcmVzdWx0LFxuICAgICAgX2FuY2hvciAgPSBzdGF0ZS5hbmNob3IsXG4gICAgICBmb2xsb3dpbmcsXG4gICAgICB0ZXJtaW5hdG9yLFxuICAgICAgaXNQYWlyLFxuICAgICAgaXNFeHBsaWNpdFBhaXIsXG4gICAgICBpc01hcHBpbmcsXG4gICAgICBvdmVycmlkYWJsZUtleXMgPSBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAga2V5Tm9kZSxcbiAgICAgIGtleVRhZyxcbiAgICAgIHZhbHVlTm9kZSxcbiAgICAgIGNoO1xuXG4gIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgaWYgKGNoID09PSAweDVCLyogWyAqLykge1xuICAgIHRlcm1pbmF0b3IgPSAweDVEOy8qIF0gKi9cbiAgICBpc01hcHBpbmcgPSBmYWxzZTtcbiAgICBfcmVzdWx0ID0gW107XG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4N0IvKiB7ICovKSB7XG4gICAgdGVybWluYXRvciA9IDB4N0Q7LyogfSAqL1xuICAgIGlzTWFwcGluZyA9IHRydWU7XG4gICAgX3Jlc3VsdCA9IHt9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IF9yZXN1bHQ7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgd2hpbGUgKGNoICE9PSAwKSB7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSB0ZXJtaW5hdG9yKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbisrO1xuICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgIHN0YXRlLmFuY2hvciA9IF9hbmNob3I7XG4gICAgICBzdGF0ZS5raW5kID0gaXNNYXBwaW5nID8gJ21hcHBpbmcnIDogJ3NlcXVlbmNlJztcbiAgICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKCFyZWFkTmV4dCkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ21pc3NlZCBjb21tYSBiZXR3ZWVuIGZsb3cgY29sbGVjdGlvbiBlbnRyaWVzJyk7XG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyQy8qICwgKi8pIHtcbiAgICAgIC8vIFwiZmxvdyBjb2xsZWN0aW9uIGVudHJpZXMgY2FuIG5ldmVyIGJlIGNvbXBsZXRlbHkgZW1wdHlcIiwgYXMgcGVyIFlBTUwgMS4yLCBzZWN0aW9uIDcuNFxuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgXCJleHBlY3RlZCB0aGUgbm9kZSBjb250ZW50LCBidXQgZm91bmQgJywnXCIpO1xuICAgIH1cblxuICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgIGlzUGFpciA9IGlzRXhwbGljaXRQYWlyID0gZmFsc2U7XG5cbiAgICBpZiAoY2ggPT09IDB4M0YvKiA/ICovKSB7XG4gICAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICAgIGlmIChpc19XU19PUl9FT0woZm9sbG93aW5nKSkge1xuICAgICAgICBpc1BhaXIgPSBpc0V4cGxpY2l0UGFpciA9IHRydWU7XG4gICAgICAgIHN0YXRlLnBvc2l0aW9uKys7XG4gICAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIG5vZGVJbmRlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9saW5lID0gc3RhdGUubGluZTsgLy8gU2F2ZSB0aGUgY3VycmVudCBsaW5lLlxuICAgIF9saW5lU3RhcnQgPSBzdGF0ZS5saW5lU3RhcnQ7XG4gICAgX3BvcyA9IHN0YXRlLnBvc2l0aW9uO1xuICAgIGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0ZMT1dfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICBrZXlUYWcgPSBzdGF0ZS50YWc7XG4gICAga2V5Tm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoKGlzRXhwbGljaXRQYWlyIHx8IHN0YXRlLmxpbmUgPT09IF9saW5lKSAmJiBjaCA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgIGlzUGFpciA9IHRydWU7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCBub2RlSW5kZW50KTtcbiAgICAgIGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0ZMT1dfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICAgIHZhbHVlTm9kZSA9IHN0YXRlLnJlc3VsdDtcbiAgICB9XG5cbiAgICBpZiAoaXNNYXBwaW5nKSB7XG4gICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBfbGluZSwgX2xpbmVTdGFydCwgX3Bvcyk7XG4gICAgfSBlbHNlIGlmIChpc1BhaXIpIHtcbiAgICAgIF9yZXN1bHQucHVzaChzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBudWxsLCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBfbGluZSwgX2xpbmVTdGFydCwgX3BvcykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBfcmVzdWx0LnB1c2goa2V5Tm9kZSk7XG4gICAgfVxuXG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgbm9kZUluZGVudCk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKGNoID09PSAweDJDLyogLCAqLykge1xuICAgICAgcmVhZE5leHQgPSB0cnVlO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFkTmV4dCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRocm93RXJyb3Ioc3RhdGUsICd1bmV4cGVjdGVkIGVuZCBvZiB0aGUgc3RyZWFtIHdpdGhpbiBhIGZsb3cgY29sbGVjdGlvbicpO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tTY2FsYXIoc3RhdGUsIG5vZGVJbmRlbnQpIHtcbiAgdmFyIGNhcHR1cmVTdGFydCxcbiAgICAgIGZvbGRpbmcsXG4gICAgICBjaG9tcGluZyAgICAgICA9IENIT01QSU5HX0NMSVAsXG4gICAgICBkaWRSZWFkQ29udGVudCA9IGZhbHNlLFxuICAgICAgZGV0ZWN0ZWRJbmRlbnQgPSBmYWxzZSxcbiAgICAgIHRleHRJbmRlbnQgICAgID0gbm9kZUluZGVudCxcbiAgICAgIGVtcHR5TGluZXMgICAgID0gMCxcbiAgICAgIGF0TW9yZUluZGVudGVkID0gZmFsc2UsXG4gICAgICB0bXAsXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHg3Qy8qIHwgKi8pIHtcbiAgICBmb2xkaW5nID0gZmFsc2U7XG4gIH0gZWxzZSBpZiAoY2ggPT09IDB4M0UvKiA+ICovKSB7XG4gICAgZm9sZGluZyA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGUua2luZCA9ICdzY2FsYXInO1xuICBzdGF0ZS5yZXN1bHQgPSAnJztcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICBpZiAoY2ggPT09IDB4MkIvKiArICovIHx8IGNoID09PSAweDJELyogLSAqLykge1xuICAgICAgaWYgKENIT01QSU5HX0NMSVAgPT09IGNob21waW5nKSB7XG4gICAgICAgIGNob21waW5nID0gKGNoID09PSAweDJCLyogKyAqLykgPyBDSE9NUElOR19LRUVQIDogQ0hPTVBJTkdfU1RSSVA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLCAncmVwZWF0IG9mIGEgY2hvbXBpbmcgbW9kZSBpZGVudGlmaWVyJyk7XG4gICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKCh0bXAgPSBmcm9tRGVjaW1hbENvZGUoY2gpKSA+PSAwKSB7XG4gICAgICBpZiAodG1wID09PSAwKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdiYWQgZXhwbGljaXQgaW5kZW50YXRpb24gd2lkdGggb2YgYSBibG9jayBzY2FsYXI7IGl0IGNhbm5vdCBiZSBsZXNzIHRoYW4gb25lJyk7XG4gICAgICB9IGVsc2UgaWYgKCFkZXRlY3RlZEluZGVudCkge1xuICAgICAgICB0ZXh0SW5kZW50ID0gbm9kZUluZGVudCArIHRtcCAtIDE7XG4gICAgICAgIGRldGVjdGVkSW5kZW50ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdyZXBlYXQgb2YgYW4gaW5kZW50YXRpb24gd2lkdGggaWRlbnRpZmllcicpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICBkbyB7IGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTsgfVxuICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpO1xuXG4gICAgaWYgKGNoID09PSAweDIzLyogIyAqLykge1xuICAgICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICAgIHdoaWxlICghaXNfRU9MKGNoKSAmJiAoY2ggIT09IDApKTtcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICByZWFkTGluZUJyZWFrKHN0YXRlKTtcbiAgICBzdGF0ZS5saW5lSW5kZW50ID0gMDtcblxuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICB3aGlsZSAoKCFkZXRlY3RlZEluZGVudCB8fCBzdGF0ZS5saW5lSW5kZW50IDwgdGV4dEluZGVudCkgJiZcbiAgICAgICAgICAgKGNoID09PSAweDIwLyogU3BhY2UgKi8pKSB7XG4gICAgICBzdGF0ZS5saW5lSW5kZW50Kys7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCFkZXRlY3RlZEluZGVudCAmJiBzdGF0ZS5saW5lSW5kZW50ID4gdGV4dEluZGVudCkge1xuICAgICAgdGV4dEluZGVudCA9IHN0YXRlLmxpbmVJbmRlbnQ7XG4gICAgfVxuXG4gICAgaWYgKGlzX0VPTChjaCkpIHtcbiAgICAgIGVtcHR5TGluZXMrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIEVuZCBvZiB0aGUgc2NhbGFyLlxuICAgIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgdGV4dEluZGVudCkge1xuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBjaG9tcGluZy5cbiAgICAgIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfS0VFUCkge1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZGlkUmVhZENvbnRlbnQgPyAxICsgZW1wdHlMaW5lcyA6IGVtcHR5TGluZXMpO1xuICAgICAgfSBlbHNlIGlmIChjaG9tcGluZyA9PT0gQ0hPTVBJTkdfQ0xJUCkge1xuICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHsgLy8gaS5lLiBvbmx5IGlmIHRoZSBzY2FsYXIgaXMgbm90IGVtcHR5LlxuICAgICAgICAgIHN0YXRlLnJlc3VsdCArPSAnXFxuJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBCcmVhayB0aGlzIGB3aGlsZWAgY3ljbGUgYW5kIGdvIHRvIHRoZSBmdW5jaXRvbidzIGVwaWxvZ3VlLlxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gRm9sZGVkIHN0eWxlOiB1c2UgZmFuY3kgcnVsZXMgdG8gaGFuZGxlIGxpbmUgYnJlYWtzLlxuICAgIGlmIChmb2xkaW5nKSB7XG5cbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggd2hpdGUgc3BhY2UgY2hhcmFjdGVycyAobW9yZS1pbmRlbnRlZCBsaW5lcykgYXJlIG5vdCBmb2xkZWQuXG4gICAgICBpZiAoaXNfV0hJVEVfU1BBQ0UoY2gpKSB7XG4gICAgICAgIGF0TW9yZUluZGVudGVkID0gdHJ1ZTtcbiAgICAgICAgLy8gZXhjZXB0IGZvciB0aGUgZmlyc3QgY29udGVudCBsaW5lIChjZi4gRXhhbXBsZSA4LjEpXG4gICAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG5cbiAgICAgIC8vIEVuZCBvZiBtb3JlLWluZGVudGVkIGJsb2NrLlxuICAgICAgfSBlbHNlIGlmIChhdE1vcmVJbmRlbnRlZCkge1xuICAgICAgICBhdE1vcmVJbmRlbnRlZCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5yZXN1bHQgKz0gY29tbW9uLnJlcGVhdCgnXFxuJywgZW1wdHlMaW5lcyArIDEpO1xuXG4gICAgICAvLyBKdXN0IG9uZSBsaW5lIGJyZWFrIC0gcGVyY2VpdmUgYXMgdGhlIHNhbWUgbGluZS5cbiAgICAgIH0gZWxzZSBpZiAoZW1wdHlMaW5lcyA9PT0gMCkge1xuICAgICAgICBpZiAoZGlkUmVhZENvbnRlbnQpIHsgLy8gaS5lLiBvbmx5IGlmIHdlIGhhdmUgYWxyZWFkeSByZWFkIHNvbWUgc2NhbGFyIGNvbnRlbnQuXG4gICAgICAgICAgc3RhdGUucmVzdWx0ICs9ICcgJztcbiAgICAgICAgfVxuXG4gICAgICAvLyBTZXZlcmFsIGxpbmUgYnJlYWtzIC0gcGVyY2VpdmUgYXMgZGlmZmVyZW50IGxpbmVzLlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVzdWx0ICs9IGNvbW1vbi5yZXBlYXQoJ1xcbicsIGVtcHR5TGluZXMpO1xuICAgICAgfVxuXG4gICAgLy8gTGl0ZXJhbCBzdHlsZToganVzdCBhZGQgZXhhY3QgbnVtYmVyIG9mIGxpbmUgYnJlYWtzIGJldHdlZW4gY29udGVudCBsaW5lcy5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gS2VlcCBhbGwgbGluZSBicmVha3MgZXhjZXB0IHRoZSBoZWFkZXIgbGluZSBicmVhay5cbiAgICAgIHN0YXRlLnJlc3VsdCArPSBjb21tb24ucmVwZWF0KCdcXG4nLCBkaWRSZWFkQ29udGVudCA/IDEgKyBlbXB0eUxpbmVzIDogZW1wdHlMaW5lcyk7XG4gICAgfVxuXG4gICAgZGlkUmVhZENvbnRlbnQgPSB0cnVlO1xuICAgIGRldGVjdGVkSW5kZW50ID0gdHJ1ZTtcbiAgICBlbXB0eUxpbmVzID0gMDtcbiAgICBjYXB0dXJlU3RhcnQgPSBzdGF0ZS5wb3NpdGlvbjtcblxuICAgIHdoaWxlICghaXNfRU9MKGNoKSAmJiAoY2ggIT09IDApKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgY2FwdHVyZVNlZ21lbnQoc3RhdGUsIGNhcHR1cmVTdGFydCwgc3RhdGUucG9zaXRpb24sIGZhbHNlKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbm9kZUluZGVudCkge1xuICB2YXIgX2xpbmUsXG4gICAgICBfdGFnICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBfYW5jaG9yICAgPSBzdGF0ZS5hbmNob3IsXG4gICAgICBfcmVzdWx0ICAgPSBbXSxcbiAgICAgIGZvbGxvd2luZyxcbiAgICAgIGRldGVjdGVkICA9IGZhbHNlLFxuICAgICAgY2g7XG5cbiAgLy8gdGhlcmUgaXMgYSBsZWFkaW5nIHRhYiBiZWZvcmUgdGhpcyB0b2tlbiwgc28gaXQgY2FuJ3QgYmUgYSBibG9jayBzZXF1ZW5jZS9tYXBwaW5nO1xuICAvLyBpdCBjYW4gc3RpbGwgYmUgZmxvdyBzZXF1ZW5jZS9tYXBwaW5nIG9yIGEgc2NhbGFyXG4gIGlmIChzdGF0ZS5maXJzdFRhYkluTGluZSAhPT0gLTEpIHJldHVybiBmYWxzZTtcblxuICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBfcmVzdWx0O1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICBpZiAoc3RhdGUuZmlyc3RUYWJJbkxpbmUgIT09IC0xKSB7XG4gICAgICBzdGF0ZS5wb3NpdGlvbiA9IHN0YXRlLmZpcnN0VGFiSW5MaW5lO1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhYiBjaGFyYWN0ZXJzIG11c3Qgbm90IGJlIHVzZWQgaW4gaW5kZW50YXRpb24nKTtcbiAgICB9XG5cbiAgICBpZiAoY2ggIT09IDB4MkQvKiAtICovKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBmb2xsb3dpbmcgPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uICsgMSk7XG5cbiAgICBpZiAoIWlzX1dTX09SX0VPTChmb2xsb3dpbmcpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgc3RhdGUucG9zaXRpb24rKztcblxuICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgIGlmIChzdGF0ZS5saW5lSW5kZW50IDw9IG5vZGVJbmRlbnQpIHtcbiAgICAgICAgX3Jlc3VsdC5wdXNoKG51bGwpO1xuICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7XG4gICAgY29tcG9zZU5vZGUoc3RhdGUsIG5vZGVJbmRlbnQsIENPTlRFWFRfQkxPQ0tfSU4sIGZhbHNlLCB0cnVlKTtcbiAgICBfcmVzdWx0LnB1c2goc3RhdGUucmVzdWx0KTtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKChzdGF0ZS5saW5lID09PSBfbGluZSB8fCBzdGF0ZS5saW5lSW5kZW50ID4gbm9kZUluZGVudCkgJiYgKGNoICE9PSAwKSkge1xuICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2JhZCBpbmRlbnRhdGlvbiBvZiBhIHNlcXVlbmNlIGVudHJ5Jyk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgbm9kZUluZGVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKGRldGVjdGVkKSB7XG4gICAgc3RhdGUudGFnID0gX3RhZztcbiAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgIHN0YXRlLmtpbmQgPSAnc2VxdWVuY2UnO1xuICAgIHN0YXRlLnJlc3VsdCA9IF9yZXN1bHQ7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiByZWFkQmxvY2tNYXBwaW5nKHN0YXRlLCBub2RlSW5kZW50LCBmbG93SW5kZW50KSB7XG4gIHZhciBmb2xsb3dpbmcsXG4gICAgICBhbGxvd0NvbXBhY3QsXG4gICAgICBfbGluZSxcbiAgICAgIF9rZXlMaW5lLFxuICAgICAgX2tleUxpbmVTdGFydCxcbiAgICAgIF9rZXlQb3MsXG4gICAgICBfdGFnICAgICAgICAgID0gc3RhdGUudGFnLFxuICAgICAgX2FuY2hvciAgICAgICA9IHN0YXRlLmFuY2hvcixcbiAgICAgIF9yZXN1bHQgICAgICAgPSB7fSxcbiAgICAgIG92ZXJyaWRhYmxlS2V5cyA9IE9iamVjdC5jcmVhdGUobnVsbCksXG4gICAgICBrZXlUYWcgICAgICAgID0gbnVsbCxcbiAgICAgIGtleU5vZGUgICAgICAgPSBudWxsLFxuICAgICAgdmFsdWVOb2RlICAgICA9IG51bGwsXG4gICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2UsXG4gICAgICBkZXRlY3RlZCAgICAgID0gZmFsc2UsXG4gICAgICBjaDtcblxuICAvLyB0aGVyZSBpcyBhIGxlYWRpbmcgdGFiIGJlZm9yZSB0aGlzIHRva2VuLCBzbyBpdCBjYW4ndCBiZSBhIGJsb2NrIHNlcXVlbmNlL21hcHBpbmc7XG4gIC8vIGl0IGNhbiBzdGlsbCBiZSBmbG93IHNlcXVlbmNlL21hcHBpbmcgb3IgYSBzY2FsYXJcbiAgaWYgKHN0YXRlLmZpcnN0VGFiSW5MaW5lICE9PSAtMSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IF9yZXN1bHQ7XG4gIH1cblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIHdoaWxlIChjaCAhPT0gMCkge1xuICAgIGlmICghYXRFeHBsaWNpdEtleSAmJiBzdGF0ZS5maXJzdFRhYkluTGluZSAhPT0gLTEpIHtcbiAgICAgIHN0YXRlLnBvc2l0aW9uID0gc3RhdGUuZmlyc3RUYWJJbkxpbmU7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFiIGNoYXJhY3RlcnMgbXVzdCBub3QgYmUgdXNlZCBpbiBpbmRlbnRhdGlvbicpO1xuICAgIH1cblxuICAgIGZvbGxvd2luZyA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24gKyAxKTtcbiAgICBfbGluZSA9IHN0YXRlLmxpbmU7IC8vIFNhdmUgdGhlIGN1cnJlbnQgbGluZS5cblxuICAgIC8vXG4gICAgLy8gRXhwbGljaXQgbm90YXRpb24gY2FzZS4gVGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBibG9ja3M6XG4gICAgLy8gZmlyc3QgZm9yIHRoZSBrZXkgKGRlbm90ZWQgYnkgXCI/XCIpIGFuZCBzZWNvbmQgZm9yIHRoZSB2YWx1ZSAoZGVub3RlZCBieSBcIjpcIilcbiAgICAvL1xuICAgIGlmICgoY2ggPT09IDB4M0YvKiA/ICovIHx8IGNoID09PSAweDNBLyogOiAqLykgJiYgaXNfV1NfT1JfRU9MKGZvbGxvd2luZykpIHtcblxuICAgICAgaWYgKGNoID09PSAweDNGLyogPyAqLykge1xuICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgIHN0b3JlTWFwcGluZ1BhaXIoc3RhdGUsIF9yZXN1bHQsIG92ZXJyaWRhYmxlS2V5cywga2V5VGFnLCBrZXlOb2RlLCBudWxsLCBfa2V5TGluZSwgX2tleUxpbmVTdGFydCwgX2tleVBvcyk7XG4gICAgICAgICAga2V5VGFnID0ga2V5Tm9kZSA9IHZhbHVlTm9kZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBkZXRlY3RlZCA9IHRydWU7XG4gICAgICAgIGF0RXhwbGljaXRLZXkgPSB0cnVlO1xuICAgICAgICBhbGxvd0NvbXBhY3QgPSB0cnVlO1xuXG4gICAgICB9IGVsc2UgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICAgICAgLy8gaS5lLiAweDNBLyogOiAqLyA9PT0gY2hhcmFjdGVyIGFmdGVyIHRoZSBleHBsaWNpdCBrZXkuXG4gICAgICAgIGF0RXhwbGljaXRLZXkgPSBmYWxzZTtcbiAgICAgICAgYWxsb3dDb21wYWN0ID0gdHJ1ZTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2luY29tcGxldGUgZXhwbGljaXQgbWFwcGluZyBwYWlyOyBhIGtleSBub2RlIGlzIG1pc3NlZDsgb3IgZm9sbG93ZWQgYnkgYSBub24tdGFidWxhdGVkIGVtcHR5IGxpbmUnKTtcbiAgICAgIH1cblxuICAgICAgc3RhdGUucG9zaXRpb24gKz0gMTtcbiAgICAgIGNoID0gZm9sbG93aW5nO1xuXG4gICAgLy9cbiAgICAvLyBJbXBsaWNpdCBub3RhdGlvbiBjYXNlLiBGbG93LXN0eWxlIG5vZGUgYXMgdGhlIGtleSBmaXJzdCwgdGhlbiBcIjpcIiwgYW5kIHRoZSB2YWx1ZS5cbiAgICAvL1xuICAgIH0gZWxzZSB7XG4gICAgICBfa2V5TGluZSA9IHN0YXRlLmxpbmU7XG4gICAgICBfa2V5TGluZVN0YXJ0ID0gc3RhdGUubGluZVN0YXJ0O1xuICAgICAgX2tleVBvcyA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgICBpZiAoIWNvbXBvc2VOb2RlKHN0YXRlLCBmbG93SW5kZW50LCBDT05URVhUX0ZMT1dfT1VULCBmYWxzZSwgdHJ1ZSkpIHtcbiAgICAgICAgLy8gTmVpdGhlciBpbXBsaWNpdCBub3IgZXhwbGljaXQgbm90YXRpb24uXG4gICAgICAgIC8vIFJlYWRpbmcgaXMgZG9uZS4gR28gdG8gdGhlIGVwaWxvZ3VlLlxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlLmxpbmUgPT09IF9saW5lKSB7XG4gICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgICAgd2hpbGUgKGlzX1dISVRFX1NQQUNFKGNoKSkge1xuICAgICAgICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaCA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgICAgICAgICBpZiAoIWlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGlzIGV4cGVjdGVkIGFmdGVyIHRoZSBrZXktdmFsdWUgc2VwYXJhdG9yIHdpdGhpbiBhIGJsb2NrIG1hcHBpbmcnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgICAgc3RvcmVNYXBwaW5nUGFpcihzdGF0ZSwgX3Jlc3VsdCwgb3ZlcnJpZGFibGVLZXlzLCBrZXlUYWcsIGtleU5vZGUsIG51bGwsIF9rZXlMaW5lLCBfa2V5TGluZVN0YXJ0LCBfa2V5UG9zKTtcbiAgICAgICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRldGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBhdEV4cGxpY2l0S2V5ID0gZmFsc2U7XG4gICAgICAgICAgYWxsb3dDb21wYWN0ID0gZmFsc2U7XG4gICAgICAgICAga2V5VGFnID0gc3RhdGUudGFnO1xuICAgICAgICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG5cbiAgICAgICAgfSBlbHNlIGlmIChkZXRlY3RlZCkge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW4gbm90IHJlYWQgYW4gaW1wbGljaXQgbWFwcGluZyBwYWlyOyBhIGNvbG9uIGlzIG1pc3NlZCcpO1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgICAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBLZWVwIHRoZSByZXN1bHQgb2YgYGNvbXBvc2VOb2RlYC5cbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2UgaWYgKGRldGVjdGVkKSB7XG4gICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW4gbm90IHJlYWQgYSBibG9jayBtYXBwaW5nIGVudHJ5OyBhIG11bHRpbGluZSBrZXkgbWF5IG5vdCBiZSBhbiBpbXBsaWNpdCBrZXknKTtcblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUudGFnID0gX3RhZztcbiAgICAgICAgc3RhdGUuYW5jaG9yID0gX2FuY2hvcjtcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIEtlZXAgdGhlIHJlc3VsdCBvZiBgY29tcG9zZU5vZGVgLlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vXG4gICAgLy8gQ29tbW9uIHJlYWRpbmcgY29kZSBmb3IgYm90aCBleHBsaWNpdCBhbmQgaW1wbGljaXQgbm90YXRpb25zLlxuICAgIC8vXG4gICAgaWYgKHN0YXRlLmxpbmUgPT09IF9saW5lIHx8IHN0YXRlLmxpbmVJbmRlbnQgPiBub2RlSW5kZW50KSB7XG4gICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICBfa2V5TGluZSA9IHN0YXRlLmxpbmU7XG4gICAgICAgIF9rZXlMaW5lU3RhcnQgPSBzdGF0ZS5saW5lU3RhcnQ7XG4gICAgICAgIF9rZXlQb3MgPSBzdGF0ZS5wb3NpdGlvbjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbXBvc2VOb2RlKHN0YXRlLCBub2RlSW5kZW50LCBDT05URVhUX0JMT0NLX09VVCwgdHJ1ZSwgYWxsb3dDb21wYWN0KSkge1xuICAgICAgICBpZiAoYXRFeHBsaWNpdEtleSkge1xuICAgICAgICAgIGtleU5vZGUgPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWVOb2RlID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYXRFeHBsaWNpdEtleSkge1xuICAgICAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgdmFsdWVOb2RlLCBfa2V5TGluZSwgX2tleUxpbmVTdGFydCwgX2tleVBvcyk7XG4gICAgICAgIGtleVRhZyA9IGtleU5vZGUgPSB2YWx1ZU5vZGUgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIGlmICgoc3RhdGUubGluZSA9PT0gX2xpbmUgfHwgc3RhdGUubGluZUluZGVudCA+IG5vZGVJbmRlbnQpICYmIChjaCAhPT0gMCkpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdiYWQgaW5kZW50YXRpb24gb2YgYSBtYXBwaW5nIGVudHJ5Jyk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgbm9kZUluZGVudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy9cbiAgLy8gRXBpbG9ndWUuXG4gIC8vXG5cbiAgLy8gU3BlY2lhbCBjYXNlOiBsYXN0IG1hcHBpbmcncyBub2RlIGNvbnRhaW5zIG9ubHkgdGhlIGtleSBpbiBleHBsaWNpdCBub3RhdGlvbi5cbiAgaWYgKGF0RXhwbGljaXRLZXkpIHtcbiAgICBzdG9yZU1hcHBpbmdQYWlyKHN0YXRlLCBfcmVzdWx0LCBvdmVycmlkYWJsZUtleXMsIGtleVRhZywga2V5Tm9kZSwgbnVsbCwgX2tleUxpbmUsIF9rZXlMaW5lU3RhcnQsIF9rZXlQb3MpO1xuICB9XG5cbiAgLy8gRXhwb3NlIHRoZSByZXN1bHRpbmcgbWFwcGluZy5cbiAgaWYgKGRldGVjdGVkKSB7XG4gICAgc3RhdGUudGFnID0gX3RhZztcbiAgICBzdGF0ZS5hbmNob3IgPSBfYW5jaG9yO1xuICAgIHN0YXRlLmtpbmQgPSAnbWFwcGluZyc7XG4gICAgc3RhdGUucmVzdWx0ID0gX3Jlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBkZXRlY3RlZDtcbn1cblxuZnVuY3Rpb24gcmVhZFRhZ1Byb3BlcnR5KHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sXG4gICAgICBpc1ZlcmJhdGltID0gZmFsc2UsXG4gICAgICBpc05hbWVkICAgID0gZmFsc2UsXG4gICAgICB0YWdIYW5kbGUsXG4gICAgICB0YWdOYW1lLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MjEvKiAhICovKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCkge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdkdXBsaWNhdGlvbiBvZiBhIHRhZyBwcm9wZXJ0eScpO1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCA9PT0gMHgzQy8qIDwgKi8pIHtcbiAgICBpc1ZlcmJhdGltID0gdHJ1ZTtcbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG5cbiAgfSBlbHNlIGlmIChjaCA9PT0gMHgyMS8qICEgKi8pIHtcbiAgICBpc05hbWVkID0gdHJ1ZTtcbiAgICB0YWdIYW5kbGUgPSAnISEnO1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcblxuICB9IGVsc2Uge1xuICAgIHRhZ0hhbmRsZSA9ICchJztcbiAgfVxuXG4gIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gIGlmIChpc1ZlcmJhdGltKSB7XG4gICAgZG8geyBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7IH1cbiAgICB3aGlsZSAoY2ggIT09IDAgJiYgY2ggIT09IDB4M0UvKiA+ICovKTtcblxuICAgIGlmIChzdGF0ZS5wb3NpdGlvbiA8IHN0YXRlLmxlbmd0aCkge1xuICAgICAgdGFnTmFtZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5leHBlY3RlZCBlbmQgb2YgdGhlIHN0cmVhbSB3aXRoaW4gYSB2ZXJiYXRpbSB0YWcnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG5cbiAgICAgIGlmIChjaCA9PT0gMHgyMS8qICEgKi8pIHtcbiAgICAgICAgaWYgKCFpc05hbWVkKSB7XG4gICAgICAgICAgdGFnSGFuZGxlID0gc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uIC0gMSwgc3RhdGUucG9zaXRpb24gKyAxKTtcblxuICAgICAgICAgIGlmICghUEFUVEVSTl9UQUdfSEFORExFLnRlc3QodGFnSGFuZGxlKSkge1xuICAgICAgICAgICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWVkIHRhZyBoYW5kbGUgY2Fubm90IGNvbnRhaW4gc3VjaCBjaGFyYWN0ZXJzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaXNOYW1lZCA9IHRydWU7XG4gICAgICAgICAgX3Bvc2l0aW9uID0gc3RhdGUucG9zaXRpb24gKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd0YWcgc3VmZml4IGNhbm5vdCBjb250YWluIGV4Y2xhbWF0aW9uIG1hcmtzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIH1cblxuICAgIHRhZ05hbWUgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcblxuICAgIGlmIChQQVRURVJOX0ZMT1dfSU5ESUNBVE9SUy50ZXN0KHRhZ05hbWUpKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIHN1ZmZpeCBjYW5ub3QgY29udGFpbiBmbG93IGluZGljYXRvciBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHRhZ05hbWUgJiYgIVBBVFRFUk5fVEFHX1VSSS50ZXN0KHRhZ05hbWUpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ3RhZyBuYW1lIGNhbm5vdCBjb250YWluIHN1Y2ggY2hhcmFjdGVyczogJyArIHRhZ05hbWUpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICB0YWdOYW1lID0gZGVjb2RlVVJJQ29tcG9uZW50KHRhZ05hbWUpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAndGFnIG5hbWUgaXMgbWFsZm9ybWVkOiAnICsgdGFnTmFtZSk7XG4gIH1cblxuICBpZiAoaXNWZXJiYXRpbSkge1xuICAgIHN0YXRlLnRhZyA9IHRhZ05hbWU7XG5cbiAgfSBlbHNlIGlmIChfaGFzT3duUHJvcGVydHkkMS5jYWxsKHN0YXRlLnRhZ01hcCwgdGFnSGFuZGxlKSkge1xuICAgIHN0YXRlLnRhZyA9IHN0YXRlLnRhZ01hcFt0YWdIYW5kbGVdICsgdGFnTmFtZTtcblxuICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gJyEnKSB7XG4gICAgc3RhdGUudGFnID0gJyEnICsgdGFnTmFtZTtcblxuICB9IGVsc2UgaWYgKHRhZ0hhbmRsZSA9PT0gJyEhJykge1xuICAgIHN0YXRlLnRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjonICsgdGFnTmFtZTtcblxuICB9IGVsc2Uge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmRlY2xhcmVkIHRhZyBoYW5kbGUgXCInICsgdGFnSGFuZGxlICsgJ1wiJyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVhZEFuY2hvclByb3BlcnR5KHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sXG4gICAgICBjaDtcblxuICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gIGlmIChjaCAhPT0gMHgyNi8qICYgKi8pIHJldHVybiBmYWxzZTtcblxuICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2R1cGxpY2F0aW9uIG9mIGFuIGFuY2hvciBwcm9wZXJ0eScpO1xuICB9XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkgJiYgIWlzX0ZMT1dfSU5ESUNBVE9SKGNoKSkge1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gX3Bvc2l0aW9uKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWUgb2YgYW4gYW5jaG9yIG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXInKTtcbiAgfVxuXG4gIHN0YXRlLmFuY2hvciA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVhZEFsaWFzKHN0YXRlKSB7XG4gIHZhciBfcG9zaXRpb24sIGFsaWFzLFxuICAgICAgY2g7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoY2ggIT09IDB4MkEvKiAqICovKSByZXR1cm4gZmFsc2U7XG5cbiAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICBfcG9zaXRpb24gPSBzdGF0ZS5wb3NpdGlvbjtcblxuICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkgJiYgIWlzX0ZMT1dfSU5ESUNBVE9SKGNoKSkge1xuICAgIGNoID0gc3RhdGUuaW5wdXQuY2hhckNvZGVBdCgrK3N0YXRlLnBvc2l0aW9uKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5wb3NpdGlvbiA9PT0gX3Bvc2l0aW9uKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ25hbWUgb2YgYW4gYWxpYXMgbm9kZSBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGNoYXJhY3RlcicpO1xuICB9XG5cbiAgYWxpYXMgPSBzdGF0ZS5pbnB1dC5zbGljZShfcG9zaXRpb24sIHN0YXRlLnBvc2l0aW9uKTtcblxuICBpZiAoIV9oYXNPd25Qcm9wZXJ0eSQxLmNhbGwoc3RhdGUuYW5jaG9yTWFwLCBhbGlhcykpIHtcbiAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5pZGVudGlmaWVkIGFsaWFzIFwiJyArIGFsaWFzICsgJ1wiJyk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bHQgPSBzdGF0ZS5hbmNob3JNYXBbYWxpYXNdO1xuICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb21wb3NlTm9kZShzdGF0ZSwgcGFyZW50SW5kZW50LCBub2RlQ29udGV4dCwgYWxsb3dUb1NlZWssIGFsbG93Q29tcGFjdCkge1xuICB2YXIgYWxsb3dCbG9ja1N0eWxlcyxcbiAgICAgIGFsbG93QmxvY2tTY2FsYXJzLFxuICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zLFxuICAgICAgaW5kZW50U3RhdHVzID0gMSwgLy8gMTogdGhpcz5wYXJlbnQsIDA6IHRoaXM9cGFyZW50LCAtMTogdGhpczxwYXJlbnRcbiAgICAgIGF0TmV3TGluZSAgPSBmYWxzZSxcbiAgICAgIGhhc0NvbnRlbnQgPSBmYWxzZSxcbiAgICAgIHR5cGVJbmRleCxcbiAgICAgIHR5cGVRdWFudGl0eSxcbiAgICAgIHR5cGVMaXN0LFxuICAgICAgdHlwZSxcbiAgICAgIGZsb3dJbmRlbnQsXG4gICAgICBibG9ja0luZGVudDtcblxuICBpZiAoc3RhdGUubGlzdGVuZXIgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5saXN0ZW5lcignb3BlbicsIHN0YXRlKTtcbiAgfVxuXG4gIHN0YXRlLnRhZyAgICA9IG51bGw7XG4gIHN0YXRlLmFuY2hvciA9IG51bGw7XG4gIHN0YXRlLmtpbmQgICA9IG51bGw7XG4gIHN0YXRlLnJlc3VsdCA9IG51bGw7XG5cbiAgYWxsb3dCbG9ja1N0eWxlcyA9IGFsbG93QmxvY2tTY2FsYXJzID0gYWxsb3dCbG9ja0NvbGxlY3Rpb25zID1cbiAgICBDT05URVhUX0JMT0NLX09VVCA9PT0gbm9kZUNvbnRleHQgfHxcbiAgICBDT05URVhUX0JMT0NLX0lOICA9PT0gbm9kZUNvbnRleHQ7XG5cbiAgaWYgKGFsbG93VG9TZWVrKSB7XG4gICAgaWYgKHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKSkge1xuICAgICAgYXROZXdMaW5lID0gdHJ1ZTtcblxuICAgICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgaW5kZW50U3RhdHVzID0gMTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gcGFyZW50SW5kZW50KSB7XG4gICAgICAgIGluZGVudFN0YXR1cyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPCBwYXJlbnRJbmRlbnQpIHtcbiAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSkge1xuICAgIHdoaWxlIChyZWFkVGFnUHJvcGVydHkoc3RhdGUpIHx8IHJlYWRBbmNob3JQcm9wZXJ0eShzdGF0ZSkpIHtcbiAgICAgIGlmIChza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSkpIHtcbiAgICAgICAgYXROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgYWxsb3dCbG9ja0NvbGxlY3Rpb25zID0gYWxsb3dCbG9ja1N0eWxlcztcblxuICAgICAgICBpZiAoc3RhdGUubGluZUluZGVudCA+IHBhcmVudEluZGVudCkge1xuICAgICAgICAgIGluZGVudFN0YXR1cyA9IDE7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gcGFyZW50SW5kZW50KSB7XG4gICAgICAgICAgaW5kZW50U3RhdHVzID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS5saW5lSW5kZW50IDwgcGFyZW50SW5kZW50KSB7XG4gICAgICAgICAgaW5kZW50U3RhdHVzID0gLTE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFsbG93QmxvY2tDb2xsZWN0aW9ucyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChhbGxvd0Jsb2NrQ29sbGVjdGlvbnMpIHtcbiAgICBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgPSBhdE5ld0xpbmUgfHwgYWxsb3dDb21wYWN0O1xuICB9XG5cbiAgaWYgKGluZGVudFN0YXR1cyA9PT0gMSB8fCBDT05URVhUX0JMT0NLX09VVCA9PT0gbm9kZUNvbnRleHQpIHtcbiAgICBpZiAoQ09OVEVYVF9GTE9XX0lOID09PSBub2RlQ29udGV4dCB8fCBDT05URVhUX0ZMT1dfT1VUID09PSBub2RlQ29udGV4dCkge1xuICAgICAgZmxvd0luZGVudCA9IHBhcmVudEluZGVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgZmxvd0luZGVudCA9IHBhcmVudEluZGVudCArIDE7XG4gICAgfVxuXG4gICAgYmxvY2tJbmRlbnQgPSBzdGF0ZS5wb3NpdGlvbiAtIHN0YXRlLmxpbmVTdGFydDtcblxuICAgIGlmIChpbmRlbnRTdGF0dXMgPT09IDEpIHtcbiAgICAgIGlmIChhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgJiZcbiAgICAgICAgICAocmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIGJsb2NrSW5kZW50KSB8fFxuICAgICAgICAgICByZWFkQmxvY2tNYXBwaW5nKHN0YXRlLCBibG9ja0luZGVudCwgZmxvd0luZGVudCkpIHx8XG4gICAgICAgICAgcmVhZEZsb3dDb2xsZWN0aW9uKHN0YXRlLCBmbG93SW5kZW50KSkge1xuICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgoYWxsb3dCbG9ja1NjYWxhcnMgJiYgcmVhZEJsb2NrU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSkgfHxcbiAgICAgICAgICAgIHJlYWRTaW5nbGVRdW90ZWRTY2FsYXIoc3RhdGUsIGZsb3dJbmRlbnQpIHx8XG4gICAgICAgICAgICByZWFkRG91YmxlUXVvdGVkU2NhbGFyKHN0YXRlLCBmbG93SW5kZW50KSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVhZEFsaWFzKHN0YXRlKSkge1xuICAgICAgICAgIGhhc0NvbnRlbnQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCB8fCBzdGF0ZS5hbmNob3IgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdhbGlhcyBub2RlIHNob3VsZCBub3QgaGF2ZSBhbnkgcHJvcGVydGllcycpO1xuICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2UgaWYgKHJlYWRQbGFpblNjYWxhcihzdGF0ZSwgZmxvd0luZGVudCwgQ09OVEVYVF9GTE9XX0lOID09PSBub2RlQ29udGV4dCkpIHtcbiAgICAgICAgICBoYXNDb250ZW50ID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChzdGF0ZS50YWcgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHN0YXRlLnRhZyA9ICc/JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUuYW5jaG9yICE9PSBudWxsKSB7XG4gICAgICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGluZGVudFN0YXR1cyA9PT0gMCkge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlOiBibG9jayBzZXF1ZW5jZXMgYXJlIGFsbG93ZWQgdG8gaGF2ZSBzYW1lIGluZGVudGF0aW9uIGxldmVsIGFzIHRoZSBwYXJlbnQuXG4gICAgICAvLyBodHRwOi8vd3d3LnlhbWwub3JnL3NwZWMvMS4yL3NwZWMuaHRtbCNpZDI3OTk3ODRcbiAgICAgIGhhc0NvbnRlbnQgPSBhbGxvd0Jsb2NrQ29sbGVjdGlvbnMgJiYgcmVhZEJsb2NrU2VxdWVuY2Uoc3RhdGUsIGJsb2NrSW5kZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUudGFnID09PSBudWxsKSB7XG4gICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgc3RhdGUuYW5jaG9yTWFwW3N0YXRlLmFuY2hvcl0gPSBzdGF0ZS5yZXN1bHQ7XG4gICAgfVxuXG4gIH0gZWxzZSBpZiAoc3RhdGUudGFnID09PSAnPycpIHtcbiAgICAvLyBJbXBsaWNpdCByZXNvbHZpbmcgaXMgbm90IGFsbG93ZWQgZm9yIG5vbi1zY2FsYXIgdHlwZXMsIGFuZCAnPydcbiAgICAvLyBub24tc3BlY2lmaWMgdGFnIGlzIG9ubHkgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0byBwbGFpbiBzY2FsYXJzLlxuICAgIC8vXG4gICAgLy8gV2Ugb25seSBuZWVkIHRvIGNoZWNrIGtpbmQgY29uZm9ybWl0eSBpbiBjYXNlIHVzZXIgZXhwbGljaXRseSBhc3NpZ25zICc/J1xuICAgIC8vIHRhZywgZm9yIGV4YW1wbGUgbGlrZSB0aGlzOiBcIiE8Pz4gWzBdXCJcbiAgICAvL1xuICAgIGlmIChzdGF0ZS5yZXN1bHQgIT09IG51bGwgJiYgc3RhdGUua2luZCAhPT0gJ3NjYWxhcicpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmFjY2VwdGFibGUgbm9kZSBraW5kIGZvciAhPD8+IHRhZzsgaXQgc2hvdWxkIGJlIFwic2NhbGFyXCIsIG5vdCBcIicgKyBzdGF0ZS5raW5kICsgJ1wiJyk7XG4gICAgfVxuXG4gICAgZm9yICh0eXBlSW5kZXggPSAwLCB0eXBlUXVhbnRpdHkgPSBzdGF0ZS5pbXBsaWNpdFR5cGVzLmxlbmd0aDsgdHlwZUluZGV4IDwgdHlwZVF1YW50aXR5OyB0eXBlSW5kZXggKz0gMSkge1xuICAgICAgdHlwZSA9IHN0YXRlLmltcGxpY2l0VHlwZXNbdHlwZUluZGV4XTtcblxuICAgICAgaWYgKHR5cGUucmVzb2x2ZShzdGF0ZS5yZXN1bHQpKSB7IC8vIGBzdGF0ZS5yZXN1bHRgIHVwZGF0ZWQgaW4gcmVzb2x2ZXIgaWYgbWF0Y2hlZFxuICAgICAgICBzdGF0ZS5yZXN1bHQgPSB0eXBlLmNvbnN0cnVjdChzdGF0ZS5yZXN1bHQpO1xuICAgICAgICBzdGF0ZS50YWcgPSB0eXBlLnRhZztcbiAgICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICAgIHN0YXRlLmFuY2hvck1hcFtzdGF0ZS5hbmNob3JdID0gc3RhdGUucmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChzdGF0ZS50YWcgIT09ICchJykge1xuICAgIGlmIChfaGFzT3duUHJvcGVydHkkMS5jYWxsKHN0YXRlLnR5cGVNYXBbc3RhdGUua2luZCB8fCAnZmFsbGJhY2snXSwgc3RhdGUudGFnKSkge1xuICAgICAgdHlwZSA9IHN0YXRlLnR5cGVNYXBbc3RhdGUua2luZCB8fCAnZmFsbGJhY2snXVtzdGF0ZS50YWddO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsb29raW5nIGZvciBtdWx0aSB0eXBlXG4gICAgICB0eXBlID0gbnVsbDtcbiAgICAgIHR5cGVMaXN0ID0gc3RhdGUudHlwZU1hcC5tdWx0aVtzdGF0ZS5raW5kIHx8ICdmYWxsYmFjayddO1xuXG4gICAgICBmb3IgKHR5cGVJbmRleCA9IDAsIHR5cGVRdWFudGl0eSA9IHR5cGVMaXN0Lmxlbmd0aDsgdHlwZUluZGV4IDwgdHlwZVF1YW50aXR5OyB0eXBlSW5kZXggKz0gMSkge1xuICAgICAgICBpZiAoc3RhdGUudGFnLnNsaWNlKDAsIHR5cGVMaXN0W3R5cGVJbmRleF0udGFnLmxlbmd0aCkgPT09IHR5cGVMaXN0W3R5cGVJbmRleF0udGFnKSB7XG4gICAgICAgICAgdHlwZSA9IHR5cGVMaXN0W3R5cGVJbmRleF07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICd1bmtub3duIHRhZyAhPCcgKyBzdGF0ZS50YWcgKyAnPicpO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5yZXN1bHQgIT09IG51bGwgJiYgdHlwZS5raW5kICE9PSBzdGF0ZS5raW5kKSB7XG4gICAgICB0aHJvd0Vycm9yKHN0YXRlLCAndW5hY2NlcHRhYmxlIG5vZGUga2luZCBmb3IgITwnICsgc3RhdGUudGFnICsgJz4gdGFnOyBpdCBzaG91bGQgYmUgXCInICsgdHlwZS5raW5kICsgJ1wiLCBub3QgXCInICsgc3RhdGUua2luZCArICdcIicpO1xuICAgIH1cblxuICAgIGlmICghdHlwZS5yZXNvbHZlKHN0YXRlLnJlc3VsdCwgc3RhdGUudGFnKSkgeyAvLyBgc3RhdGUucmVzdWx0YCB1cGRhdGVkIGluIHJlc29sdmVyIGlmIG1hdGNoZWRcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdjYW5ub3QgcmVzb2x2ZSBhIG5vZGUgd2l0aCAhPCcgKyBzdGF0ZS50YWcgKyAnPiBleHBsaWNpdCB0YWcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucmVzdWx0ID0gdHlwZS5jb25zdHJ1Y3Qoc3RhdGUucmVzdWx0LCBzdGF0ZS50YWcpO1xuICAgICAgaWYgKHN0YXRlLmFuY2hvciAhPT0gbnVsbCkge1xuICAgICAgICBzdGF0ZS5hbmNob3JNYXBbc3RhdGUuYW5jaG9yXSA9IHN0YXRlLnJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUubGlzdGVuZXIgIT09IG51bGwpIHtcbiAgICBzdGF0ZS5saXN0ZW5lcignY2xvc2UnLCBzdGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLnRhZyAhPT0gbnVsbCB8fCAgc3RhdGUuYW5jaG9yICE9PSBudWxsIHx8IGhhc0NvbnRlbnQ7XG59XG5cbmZ1bmN0aW9uIHJlYWREb2N1bWVudChzdGF0ZSkge1xuICB2YXIgZG9jdW1lbnRTdGFydCA9IHN0YXRlLnBvc2l0aW9uLFxuICAgICAgX3Bvc2l0aW9uLFxuICAgICAgZGlyZWN0aXZlTmFtZSxcbiAgICAgIGRpcmVjdGl2ZUFyZ3MsXG4gICAgICBoYXNEaXJlY3RpdmVzID0gZmFsc2UsXG4gICAgICBjaDtcblxuICBzdGF0ZS52ZXJzaW9uID0gbnVsbDtcbiAgc3RhdGUuY2hlY2tMaW5lQnJlYWtzID0gc3RhdGUubGVnYWN5O1xuICBzdGF0ZS50YWdNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBzdGF0ZS5hbmNob3JNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIHdoaWxlICgoY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KHN0YXRlLnBvc2l0aW9uKSkgIT09IDApIHtcbiAgICBza2lwU2VwYXJhdGlvblNwYWNlKHN0YXRlLCB0cnVlLCAtMSk7XG5cbiAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pO1xuXG4gICAgaWYgKHN0YXRlLmxpbmVJbmRlbnQgPiAwIHx8IGNoICE9PSAweDI1LyogJSAqLykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaGFzRGlyZWN0aXZlcyA9IHRydWU7XG4gICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgd2hpbGUgKGNoICE9PSAwICYmICFpc19XU19PUl9FT0woY2gpKSB7XG4gICAgICBjaCA9IHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoKytzdGF0ZS5wb3NpdGlvbik7XG4gICAgfVxuXG4gICAgZGlyZWN0aXZlTmFtZSA9IHN0YXRlLmlucHV0LnNsaWNlKF9wb3NpdGlvbiwgc3RhdGUucG9zaXRpb24pO1xuICAgIGRpcmVjdGl2ZUFyZ3MgPSBbXTtcblxuICAgIGlmIChkaXJlY3RpdmVOYW1lLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRocm93RXJyb3Ioc3RhdGUsICdkaXJlY3RpdmUgbmFtZSBtdXN0IG5vdCBiZSBsZXNzIHRoYW4gb25lIGNoYXJhY3RlciBpbiBsZW5ndGgnKTtcbiAgICB9XG5cbiAgICB3aGlsZSAoY2ggIT09IDApIHtcbiAgICAgIHdoaWxlIChpc19XSElURV9TUEFDRShjaCkpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ggPT09IDB4MjMvKiAjICovKSB7XG4gICAgICAgIGRvIHsgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pOyB9XG4gICAgICAgIHdoaWxlIChjaCAhPT0gMCAmJiAhaXNfRU9MKGNoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNfRU9MKGNoKSkgYnJlYWs7XG5cbiAgICAgIF9wb3NpdGlvbiA9IHN0YXRlLnBvc2l0aW9uO1xuXG4gICAgICB3aGlsZSAoY2ggIT09IDAgJiYgIWlzX1dTX09SX0VPTChjaCkpIHtcbiAgICAgICAgY2ggPSBzdGF0ZS5pbnB1dC5jaGFyQ29kZUF0KCsrc3RhdGUucG9zaXRpb24pO1xuICAgICAgfVxuXG4gICAgICBkaXJlY3RpdmVBcmdzLnB1c2goc3RhdGUuaW5wdXQuc2xpY2UoX3Bvc2l0aW9uLCBzdGF0ZS5wb3NpdGlvbikpO1xuICAgIH1cblxuICAgIGlmIChjaCAhPT0gMCkgcmVhZExpbmVCcmVhayhzdGF0ZSk7XG5cbiAgICBpZiAoX2hhc093blByb3BlcnR5JDEuY2FsbChkaXJlY3RpdmVIYW5kbGVycywgZGlyZWN0aXZlTmFtZSkpIHtcbiAgICAgIGRpcmVjdGl2ZUhhbmRsZXJzW2RpcmVjdGl2ZU5hbWVdKHN0YXRlLCBkaXJlY3RpdmVOYW1lLCBkaXJlY3RpdmVBcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3dXYXJuaW5nKHN0YXRlLCAndW5rbm93biBkb2N1bWVudCBkaXJlY3RpdmUgXCInICsgZGlyZWN0aXZlTmFtZSArICdcIicpO1xuICAgIH1cbiAgfVxuXG4gIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICBpZiAoc3RhdGUubGluZUluZGVudCA9PT0gMCAmJlxuICAgICAgc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbikgICAgID09PSAweDJELyogLSAqLyAmJlxuICAgICAgc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDEpID09PSAweDJELyogLSAqLyAmJlxuICAgICAgc3RhdGUuaW5wdXQuY2hhckNvZGVBdChzdGF0ZS5wb3NpdGlvbiArIDIpID09PSAweDJELyogLSAqLykge1xuICAgIHN0YXRlLnBvc2l0aW9uICs9IDM7XG4gICAgc2tpcFNlcGFyYXRpb25TcGFjZShzdGF0ZSwgdHJ1ZSwgLTEpO1xuXG4gIH0gZWxzZSBpZiAoaGFzRGlyZWN0aXZlcykge1xuICAgIHRocm93RXJyb3Ioc3RhdGUsICdkaXJlY3RpdmVzIGVuZCBtYXJrIGlzIGV4cGVjdGVkJyk7XG4gIH1cblxuICBjb21wb3NlTm9kZShzdGF0ZSwgc3RhdGUubGluZUluZGVudCAtIDEsIENPTlRFWFRfQkxPQ0tfT1VULCBmYWxzZSwgdHJ1ZSk7XG4gIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcblxuICBpZiAoc3RhdGUuY2hlY2tMaW5lQnJlYWtzICYmXG4gICAgICBQQVRURVJOX05PTl9BU0NJSV9MSU5FX0JSRUFLUy50ZXN0KHN0YXRlLmlucHV0LnNsaWNlKGRvY3VtZW50U3RhcnQsIHN0YXRlLnBvc2l0aW9uKSkpIHtcbiAgICB0aHJvd1dhcm5pbmcoc3RhdGUsICdub24tQVNDSUkgbGluZSBicmVha3MgYXJlIGludGVycHJldGVkIGFzIGNvbnRlbnQnKTtcbiAgfVxuXG4gIHN0YXRlLmRvY3VtZW50cy5wdXNoKHN0YXRlLnJlc3VsdCk7XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uID09PSBzdGF0ZS5saW5lU3RhcnQgJiYgdGVzdERvY3VtZW50U2VwYXJhdG9yKHN0YXRlKSkge1xuXG4gICAgaWYgKHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pID09PSAweDJFLyogLiAqLykge1xuICAgICAgc3RhdGUucG9zaXRpb24gKz0gMztcbiAgICAgIHNraXBTZXBhcmF0aW9uU3BhY2Uoc3RhdGUsIHRydWUsIC0xKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHN0YXRlLnBvc2l0aW9uIDwgKHN0YXRlLmxlbmd0aCAtIDEpKSB7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ2VuZCBvZiB0aGUgc3RyZWFtIG9yIGEgZG9jdW1lbnQgc2VwYXJhdG9yIGlzIGV4cGVjdGVkJyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuO1xuICB9XG59XG5cblxuZnVuY3Rpb24gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucykge1xuICBpbnB1dCA9IFN0cmluZyhpbnB1dCk7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGlmIChpbnB1dC5sZW5ndGggIT09IDApIHtcblxuICAgIC8vIEFkZCB0YWlsaW5nIGBcXG5gIGlmIG5vdCBleGlzdHNcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChpbnB1dC5sZW5ndGggLSAxKSAhPT0gMHgwQS8qIExGICovICYmXG4gICAgICAgIGlucHV0LmNoYXJDb2RlQXQoaW5wdXQubGVuZ3RoIC0gMSkgIT09IDB4MEQvKiBDUiAqLykge1xuICAgICAgaW5wdXQgKz0gJ1xcbic7XG4gICAgfVxuXG4gICAgLy8gU3RyaXAgQk9NXG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZSgxKTtcbiAgICB9XG4gIH1cblxuICB2YXIgc3RhdGUgPSBuZXcgU3RhdGUkMShpbnB1dCwgb3B0aW9ucyk7XG5cbiAgdmFyIG51bGxwb3MgPSBpbnB1dC5pbmRleE9mKCdcXDAnKTtcblxuICBpZiAobnVsbHBvcyAhPT0gLTEpIHtcbiAgICBzdGF0ZS5wb3NpdGlvbiA9IG51bGxwb3M7XG4gICAgdGhyb3dFcnJvcihzdGF0ZSwgJ251bGwgYnl0ZSBpcyBub3QgYWxsb3dlZCBpbiBpbnB1dCcpO1xuICB9XG5cbiAgLy8gVXNlIDAgYXMgc3RyaW5nIHRlcm1pbmF0b3IuIFRoYXQgc2lnbmlmaWNhbnRseSBzaW1wbGlmaWVzIGJvdW5kcyBjaGVjay5cbiAgc3RhdGUuaW5wdXQgKz0gJ1xcMCc7XG5cbiAgd2hpbGUgKHN0YXRlLmlucHV0LmNoYXJDb2RlQXQoc3RhdGUucG9zaXRpb24pID09PSAweDIwLyogU3BhY2UgKi8pIHtcbiAgICBzdGF0ZS5saW5lSW5kZW50ICs9IDE7XG4gICAgc3RhdGUucG9zaXRpb24gKz0gMTtcbiAgfVxuXG4gIHdoaWxlIChzdGF0ZS5wb3NpdGlvbiA8IChzdGF0ZS5sZW5ndGggLSAxKSkge1xuICAgIHJlYWREb2N1bWVudChzdGF0ZSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGUuZG9jdW1lbnRzO1xufVxuXG5cbmZ1bmN0aW9uIGxvYWRBbGwkMShpbnB1dCwgaXRlcmF0b3IsIG9wdGlvbnMpIHtcbiAgaWYgKGl0ZXJhdG9yICE9PSBudWxsICYmIHR5cGVvZiBpdGVyYXRvciA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9wdGlvbnMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgb3B0aW9ucyA9IGl0ZXJhdG9yO1xuICAgIGl0ZXJhdG9yID0gbnVsbDtcbiAgfVxuXG4gIHZhciBkb2N1bWVudHMgPSBsb2FkRG9jdW1lbnRzKGlucHV0LCBvcHRpb25zKTtcblxuICBpZiAodHlwZW9mIGl0ZXJhdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50cztcbiAgfVxuXG4gIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gZG9jdW1lbnRzLmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBpdGVyYXRvcihkb2N1bWVudHNbaW5kZXhdKTtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGxvYWQkMShpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgZG9jdW1lbnRzID0gbG9hZERvY3VtZW50cyhpbnB1dCwgb3B0aW9ucyk7XG5cbiAgaWYgKGRvY3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAvKmVzbGludC1kaXNhYmxlIG5vLXVuZGVmaW5lZCovXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSBlbHNlIGlmIChkb2N1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50c1swXTtcbiAgfVxuICB0aHJvdyBuZXcgZXhjZXB0aW9uKCdleHBlY3RlZCBhIHNpbmdsZSBkb2N1bWVudCBpbiB0aGUgc3RyZWFtLCBidXQgZm91bmQgbW9yZScpO1xufVxuXG5cbnZhciBsb2FkQWxsXzEgPSBsb2FkQWxsJDE7XG52YXIgbG9hZF8xICAgID0gbG9hZCQxO1xuXG52YXIgbG9hZGVyID0ge1xuXHRsb2FkQWxsOiBsb2FkQWxsXzEsXG5cdGxvYWQ6IGxvYWRfMVxufTtcblxuLyplc2xpbnQtZGlzYWJsZSBuby11c2UtYmVmb3JlLWRlZmluZSovXG5cblxuXG5cblxudmFyIF90b1N0cmluZyAgICAgICA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgX2hhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIENIQVJfQk9NICAgICAgICAgICAgICAgICAgPSAweEZFRkY7XG52YXIgQ0hBUl9UQUIgICAgICAgICAgICAgICAgICA9IDB4MDk7IC8qIFRhYiAqL1xudmFyIENIQVJfTElORV9GRUVEICAgICAgICAgICAgPSAweDBBOyAvKiBMRiAqL1xudmFyIENIQVJfQ0FSUklBR0VfUkVUVVJOICAgICAgPSAweDBEOyAvKiBDUiAqL1xudmFyIENIQVJfU1BBQ0UgICAgICAgICAgICAgICAgPSAweDIwOyAvKiBTcGFjZSAqL1xudmFyIENIQVJfRVhDTEFNQVRJT04gICAgICAgICAgPSAweDIxOyAvKiAhICovXG52YXIgQ0hBUl9ET1VCTEVfUVVPVEUgICAgICAgICA9IDB4MjI7IC8qIFwiICovXG52YXIgQ0hBUl9TSEFSUCAgICAgICAgICAgICAgICA9IDB4MjM7IC8qICMgKi9cbnZhciBDSEFSX1BFUkNFTlQgICAgICAgICAgICAgID0gMHgyNTsgLyogJSAqL1xudmFyIENIQVJfQU1QRVJTQU5EICAgICAgICAgICAgPSAweDI2OyAvKiAmICovXG52YXIgQ0hBUl9TSU5HTEVfUVVPVEUgICAgICAgICA9IDB4Mjc7IC8qICcgKi9cbnZhciBDSEFSX0FTVEVSSVNLICAgICAgICAgICAgID0gMHgyQTsgLyogKiAqL1xudmFyIENIQVJfQ09NTUEgICAgICAgICAgICAgICAgPSAweDJDOyAvKiAsICovXG52YXIgQ0hBUl9NSU5VUyAgICAgICAgICAgICAgICA9IDB4MkQ7IC8qIC0gKi9cbnZhciBDSEFSX0NPTE9OICAgICAgICAgICAgICAgID0gMHgzQTsgLyogOiAqL1xudmFyIENIQVJfRVFVQUxTICAgICAgICAgICAgICAgPSAweDNEOyAvKiA9ICovXG52YXIgQ0hBUl9HUkVBVEVSX1RIQU4gICAgICAgICA9IDB4M0U7IC8qID4gKi9cbnZhciBDSEFSX1FVRVNUSU9OICAgICAgICAgICAgID0gMHgzRjsgLyogPyAqL1xudmFyIENIQVJfQ09NTUVSQ0lBTF9BVCAgICAgICAgPSAweDQwOyAvKiBAICovXG52YXIgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUICA9IDB4NUI7IC8qIFsgKi9cbnZhciBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUID0gMHg1RDsgLyogXSAqL1xudmFyIENIQVJfR1JBVkVfQUNDRU5UICAgICAgICAgPSAweDYwOyAvKiBgICovXG52YXIgQ0hBUl9MRUZUX0NVUkxZX0JSQUNLRVQgICA9IDB4N0I7IC8qIHsgKi9cbnZhciBDSEFSX1ZFUlRJQ0FMX0xJTkUgICAgICAgID0gMHg3QzsgLyogfCAqL1xudmFyIENIQVJfUklHSFRfQ1VSTFlfQlJBQ0tFVCAgPSAweDdEOyAvKiB9ICovXG5cbnZhciBFU0NBUEVfU0VRVUVOQ0VTID0ge307XG5cbkVTQ0FQRV9TRVFVRU5DRVNbMHgwMF0gICA9ICdcXFxcMCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MDddICAgPSAnXFxcXGEnO1xuRVNDQVBFX1NFUVVFTkNFU1sweDA4XSAgID0gJ1xcXFxiJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwOV0gICA9ICdcXFxcdCc7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MEFdICAgPSAnXFxcXG4nO1xuRVNDQVBFX1NFUVVFTkNFU1sweDBCXSAgID0gJ1xcXFx2JztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgwQ10gICA9ICdcXFxcZic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4MERdICAgPSAnXFxcXHInO1xuRVNDQVBFX1NFUVVFTkNFU1sweDFCXSAgID0gJ1xcXFxlJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgyMl0gICA9ICdcXFxcXCInO1xuRVNDQVBFX1NFUVVFTkNFU1sweDVDXSAgID0gJ1xcXFxcXFxcJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHg4NV0gICA9ICdcXFxcTic7XG5FU0NBUEVfU0VRVUVOQ0VTWzB4QTBdICAgPSAnXFxcXF8nO1xuRVNDQVBFX1NFUVVFTkNFU1sweDIwMjhdID0gJ1xcXFxMJztcbkVTQ0FQRV9TRVFVRU5DRVNbMHgyMDI5XSA9ICdcXFxcUCc7XG5cbnZhciBERVBSRUNBVEVEX0JPT0xFQU5TX1NZTlRBWCA9IFtcbiAgJ3knLCAnWScsICd5ZXMnLCAnWWVzJywgJ1lFUycsICdvbicsICdPbicsICdPTicsXG4gICduJywgJ04nLCAnbm8nLCAnTm8nLCAnTk8nLCAnb2ZmJywgJ09mZicsICdPRkYnXG5dO1xuXG52YXIgREVQUkVDQVRFRF9CQVNFNjBfU1lOVEFYID0gL15bLStdP1swLTlfXSsoPzo6WzAtOV9dKykrKD86XFwuWzAtOV9dKik/JC87XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdHlsZU1hcChzY2hlbWEsIG1hcCkge1xuICB2YXIgcmVzdWx0LCBrZXlzLCBpbmRleCwgbGVuZ3RoLCB0YWcsIHN0eWxlLCB0eXBlO1xuXG4gIGlmIChtYXAgPT09IG51bGwpIHJldHVybiB7fTtcblxuICByZXN1bHQgPSB7fTtcbiAga2V5cyA9IE9iamVjdC5rZXlzKG1hcCk7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGtleXMubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHRhZyA9IGtleXNbaW5kZXhdO1xuICAgIHN0eWxlID0gU3RyaW5nKG1hcFt0YWddKTtcblxuICAgIGlmICh0YWcuc2xpY2UoMCwgMikgPT09ICchIScpIHtcbiAgICAgIHRhZyA9ICd0YWc6eWFtbC5vcmcsMjAwMjonICsgdGFnLnNsaWNlKDIpO1xuICAgIH1cbiAgICB0eXBlID0gc2NoZW1hLmNvbXBpbGVkVHlwZU1hcFsnZmFsbGJhY2snXVt0YWddO1xuXG4gICAgaWYgKHR5cGUgJiYgX2hhc093blByb3BlcnR5LmNhbGwodHlwZS5zdHlsZUFsaWFzZXMsIHN0eWxlKSkge1xuICAgICAgc3R5bGUgPSB0eXBlLnN0eWxlQWxpYXNlc1tzdHlsZV07XG4gICAgfVxuXG4gICAgcmVzdWx0W3RhZ10gPSBzdHlsZTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGVuY29kZUhleChjaGFyYWN0ZXIpIHtcbiAgdmFyIHN0cmluZywgaGFuZGxlLCBsZW5ndGg7XG5cbiAgc3RyaW5nID0gY2hhcmFjdGVyLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuXG4gIGlmIChjaGFyYWN0ZXIgPD0gMHhGRikge1xuICAgIGhhbmRsZSA9ICd4JztcbiAgICBsZW5ndGggPSAyO1xuICB9IGVsc2UgaWYgKGNoYXJhY3RlciA8PSAweEZGRkYpIHtcbiAgICBoYW5kbGUgPSAndSc7XG4gICAgbGVuZ3RoID0gNDtcbiAgfSBlbHNlIGlmIChjaGFyYWN0ZXIgPD0gMHhGRkZGRkZGRikge1xuICAgIGhhbmRsZSA9ICdVJztcbiAgICBsZW5ndGggPSA4O1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBleGNlcHRpb24oJ2NvZGUgcG9pbnQgd2l0aGluIGEgc3RyaW5nIG1heSBub3QgYmUgZ3JlYXRlciB0aGFuIDB4RkZGRkZGRkYnKTtcbiAgfVxuXG4gIHJldHVybiAnXFxcXCcgKyBoYW5kbGUgKyBjb21tb24ucmVwZWF0KCcwJywgbGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59XG5cblxudmFyIFFVT1RJTkdfVFlQRV9TSU5HTEUgPSAxLFxuICAgIFFVT1RJTkdfVFlQRV9ET1VCTEUgPSAyO1xuXG5mdW5jdGlvbiBTdGF0ZShvcHRpb25zKSB7XG4gIHRoaXMuc2NoZW1hICAgICAgICA9IG9wdGlvbnNbJ3NjaGVtYSddIHx8IF9kZWZhdWx0O1xuICB0aGlzLmluZGVudCAgICAgICAgPSBNYXRoLm1heCgxLCAob3B0aW9uc1snaW5kZW50J10gfHwgMikpO1xuICB0aGlzLm5vQXJyYXlJbmRlbnQgPSBvcHRpb25zWydub0FycmF5SW5kZW50J10gfHwgZmFsc2U7XG4gIHRoaXMuc2tpcEludmFsaWQgICA9IG9wdGlvbnNbJ3NraXBJbnZhbGlkJ10gfHwgZmFsc2U7XG4gIHRoaXMuZmxvd0xldmVsICAgICA9IChjb21tb24uaXNOb3RoaW5nKG9wdGlvbnNbJ2Zsb3dMZXZlbCddKSA/IC0xIDogb3B0aW9uc1snZmxvd0xldmVsJ10pO1xuICB0aGlzLnN0eWxlTWFwICAgICAgPSBjb21waWxlU3R5bGVNYXAodGhpcy5zY2hlbWEsIG9wdGlvbnNbJ3N0eWxlcyddIHx8IG51bGwpO1xuICB0aGlzLnNvcnRLZXlzICAgICAgPSBvcHRpb25zWydzb3J0S2V5cyddIHx8IGZhbHNlO1xuICB0aGlzLmxpbmVXaWR0aCAgICAgPSBvcHRpb25zWydsaW5lV2lkdGgnXSB8fCA4MDtcbiAgdGhpcy5ub1JlZnMgICAgICAgID0gb3B0aW9uc1snbm9SZWZzJ10gfHwgZmFsc2U7XG4gIHRoaXMubm9Db21wYXRNb2RlICA9IG9wdGlvbnNbJ25vQ29tcGF0TW9kZSddIHx8IGZhbHNlO1xuICB0aGlzLmNvbmRlbnNlRmxvdyAgPSBvcHRpb25zWydjb25kZW5zZUZsb3cnXSB8fCBmYWxzZTtcbiAgdGhpcy5xdW90aW5nVHlwZSAgID0gb3B0aW9uc1sncXVvdGluZ1R5cGUnXSA9PT0gJ1wiJyA/IFFVT1RJTkdfVFlQRV9ET1VCTEUgOiBRVU9USU5HX1RZUEVfU0lOR0xFO1xuICB0aGlzLmZvcmNlUXVvdGVzICAgPSBvcHRpb25zWydmb3JjZVF1b3RlcyddIHx8IGZhbHNlO1xuICB0aGlzLnJlcGxhY2VyICAgICAgPSB0eXBlb2Ygb3B0aW9uc1sncmVwbGFjZXInXSA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnNbJ3JlcGxhY2VyJ10gOiBudWxsO1xuXG4gIHRoaXMuaW1wbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkSW1wbGljaXQ7XG4gIHRoaXMuZXhwbGljaXRUeXBlcyA9IHRoaXMuc2NoZW1hLmNvbXBpbGVkRXhwbGljaXQ7XG5cbiAgdGhpcy50YWcgPSBudWxsO1xuICB0aGlzLnJlc3VsdCA9ICcnO1xuXG4gIHRoaXMuZHVwbGljYXRlcyA9IFtdO1xuICB0aGlzLnVzZWREdXBsaWNhdGVzID0gbnVsbDtcbn1cblxuLy8gSW5kZW50cyBldmVyeSBsaW5lIGluIGEgc3RyaW5nLiBFbXB0eSBsaW5lcyAoXFxuIG9ubHkpIGFyZSBub3QgaW5kZW50ZWQuXG5mdW5jdGlvbiBpbmRlbnRTdHJpbmcoc3RyaW5nLCBzcGFjZXMpIHtcbiAgdmFyIGluZCA9IGNvbW1vbi5yZXBlYXQoJyAnLCBzcGFjZXMpLFxuICAgICAgcG9zaXRpb24gPSAwLFxuICAgICAgbmV4dCA9IC0xLFxuICAgICAgcmVzdWx0ID0gJycsXG4gICAgICBsaW5lLFxuICAgICAgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHtcbiAgICBuZXh0ID0gc3RyaW5nLmluZGV4T2YoJ1xcbicsIHBvc2l0aW9uKTtcbiAgICBpZiAobmV4dCA9PT0gLTEpIHtcbiAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24pO1xuICAgICAgcG9zaXRpb24gPSBsZW5ndGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmUgPSBzdHJpbmcuc2xpY2UocG9zaXRpb24sIG5leHQgKyAxKTtcbiAgICAgIHBvc2l0aW9uID0gbmV4dCArIDE7XG4gICAgfVxuXG4gICAgaWYgKGxpbmUubGVuZ3RoICYmIGxpbmUgIT09ICdcXG4nKSByZXN1bHQgKz0gaW5kO1xuXG4gICAgcmVzdWx0ICs9IGxpbmU7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCkge1xuICByZXR1cm4gJ1xcbicgKyBjb21tb24ucmVwZWF0KCcgJywgc3RhdGUuaW5kZW50ICogbGV2ZWwpO1xufVxuXG5mdW5jdGlvbiB0ZXN0SW1wbGljaXRSZXNvbHZpbmcoc3RhdGUsIHN0cikge1xuICB2YXIgaW5kZXgsIGxlbmd0aCwgdHlwZTtcblxuICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gc3RhdGUuaW1wbGljaXRUeXBlcy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdHlwZSA9IHN0YXRlLmltcGxpY2l0VHlwZXNbaW5kZXhdO1xuXG4gICAgaWYgKHR5cGUucmVzb2x2ZShzdHIpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIFszM10gcy13aGl0ZSA6Oj0gcy1zcGFjZSB8IHMtdGFiXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UoYykge1xuICByZXR1cm4gYyA9PT0gQ0hBUl9TUEFDRSB8fCBjID09PSBDSEFSX1RBQjtcbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjaGFyYWN0ZXIgY2FuIGJlIHByaW50ZWQgd2l0aG91dCBlc2NhcGluZy5cbi8vIEZyb20gWUFNTCAxLjI6IFwiYW55IGFsbG93ZWQgY2hhcmFjdGVycyBrbm93biB0byBiZSBub24tcHJpbnRhYmxlXG4vLyBzaG91bGQgYWxzbyBiZSBlc2NhcGVkLiBbSG93ZXZlcixdIFRoaXMgaXNuXHUyMDE5dCBtYW5kYXRvcnlcIlxuLy8gRGVyaXZlZCBmcm9tIG5iLWNoYXIgLSBcXHQgLSAjeDg1IC0gI3hBMCAtICN4MjAyOCAtICN4MjAyOS5cbmZ1bmN0aW9uIGlzUHJpbnRhYmxlKGMpIHtcbiAgcmV0dXJuICAoMHgwMDAyMCA8PSBjICYmIGMgPD0gMHgwMDAwN0UpXG4gICAgICB8fCAoKDB4MDAwQTEgPD0gYyAmJiBjIDw9IDB4MDBEN0ZGKSAmJiBjICE9PSAweDIwMjggJiYgYyAhPT0gMHgyMDI5KVxuICAgICAgfHwgKCgweDBFMDAwIDw9IGMgJiYgYyA8PSAweDAwRkZGRCkgJiYgYyAhPT0gQ0hBUl9CT00pXG4gICAgICB8fCAgKDB4MTAwMDAgPD0gYyAmJiBjIDw9IDB4MTBGRkZGKTtcbn1cblxuLy8gWzM0XSBucy1jaGFyIDo6PSBuYi1jaGFyIC0gcy13aGl0ZVxuLy8gWzI3XSBuYi1jaGFyIDo6PSBjLXByaW50YWJsZSAtIGItY2hhciAtIGMtYnl0ZS1vcmRlci1tYXJrXG4vLyBbMjZdIGItY2hhciAgOjo9IGItbGluZS1mZWVkIHwgYi1jYXJyaWFnZS1yZXR1cm5cbi8vIEluY2x1ZGluZyBzLXdoaXRlIChmb3Igc29tZSByZWFzb24sIGV4YW1wbGVzIGRvZXNuJ3QgbWF0Y2ggc3BlY3MgaW4gdGhpcyBhc3BlY3QpXG4vLyBucy1jaGFyIDo6PSBjLXByaW50YWJsZSAtIGItbGluZS1mZWVkIC0gYi1jYXJyaWFnZS1yZXR1cm4gLSBjLWJ5dGUtb3JkZXItbWFya1xuZnVuY3Rpb24gaXNOc0NoYXJPcldoaXRlc3BhY2UoYykge1xuICByZXR1cm4gaXNQcmludGFibGUoYylcbiAgICAmJiBjICE9PSBDSEFSX0JPTVxuICAgIC8vIC0gYi1jaGFyXG4gICAgJiYgYyAhPT0gQ0hBUl9DQVJSSUFHRV9SRVRVUk5cbiAgICAmJiBjICE9PSBDSEFSX0xJTkVfRkVFRDtcbn1cblxuLy8gWzEyN10gIG5zLXBsYWluLXNhZmUoYykgOjo9IGMgPSBmbG93LW91dCAgXHUyMUQyIG5zLXBsYWluLXNhZmUtb3V0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGZsb3ctaW4gICBcdTIxRDIgbnMtcGxhaW4tc2FmZS1pblxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBibG9jay1rZXkgXHUyMUQyIG5zLXBsYWluLXNhZmUtb3V0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGZsb3cta2V5ICBcdTIxRDIgbnMtcGxhaW4tc2FmZS1pblxuLy8gWzEyOF0gbnMtcGxhaW4tc2FmZS1vdXQgOjo9IG5zLWNoYXJcbi8vIFsxMjldICBucy1wbGFpbi1zYWZlLWluIDo6PSBucy1jaGFyIC0gYy1mbG93LWluZGljYXRvclxuLy8gWzEzMF0gIG5zLXBsYWluLWNoYXIoYykgOjo9ICAoIG5zLXBsYWluLXNhZmUoYykgLSBcdTIwMUM6XHUyMDFEIC0gXHUyMDFDI1x1MjAxRCApXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICggLyogQW4gbnMtY2hhciBwcmVjZWRpbmcgKi8gXHUyMDFDI1x1MjAxRCApXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICggXHUyMDFDOlx1MjAxRCAvKiBGb2xsb3dlZCBieSBhbiBucy1wbGFpbi1zYWZlKGMpICovIClcbmZ1bmN0aW9uIGlzUGxhaW5TYWZlKGMsIHByZXYsIGluYmxvY2spIHtcbiAgdmFyIGNJc05zQ2hhck9yV2hpdGVzcGFjZSA9IGlzTnNDaGFyT3JXaGl0ZXNwYWNlKGMpO1xuICB2YXIgY0lzTnNDaGFyID0gY0lzTnNDaGFyT3JXaGl0ZXNwYWNlICYmICFpc1doaXRlc3BhY2UoYyk7XG4gIHJldHVybiAoXG4gICAgLy8gbnMtcGxhaW4tc2FmZVxuICAgIGluYmxvY2sgPyAvLyBjID0gZmxvdy1pblxuICAgICAgY0lzTnNDaGFyT3JXaGl0ZXNwYWNlXG4gICAgICA6IGNJc05zQ2hhck9yV2hpdGVzcGFjZVxuICAgICAgICAvLyAtIGMtZmxvdy1pbmRpY2F0b3JcbiAgICAgICAgJiYgYyAhPT0gQ0hBUl9DT01NQVxuICAgICAgICAmJiBjICE9PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVRcbiAgICAgICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVFxuICAgICAgICAmJiBjICE9PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0tFVFxuICAgICAgICAmJiBjICE9PSBDSEFSX1JJR0hUX0NVUkxZX0JSQUNLRVRcbiAgKVxuICAgIC8vIG5zLXBsYWluLWNoYXJcbiAgICAmJiBjICE9PSBDSEFSX1NIQVJQIC8vIGZhbHNlIG9uICcjJ1xuICAgICYmICEocHJldiA9PT0gQ0hBUl9DT0xPTiAmJiAhY0lzTnNDaGFyKSAvLyBmYWxzZSBvbiAnOiAnXG4gICAgfHwgKGlzTnNDaGFyT3JXaGl0ZXNwYWNlKHByZXYpICYmICFpc1doaXRlc3BhY2UocHJldikgJiYgYyA9PT0gQ0hBUl9TSEFSUCkgLy8gY2hhbmdlIHRvIHRydWUgb24gJ1teIF0jJ1xuICAgIHx8IChwcmV2ID09PSBDSEFSX0NPTE9OICYmIGNJc05zQ2hhcik7IC8vIGNoYW5nZSB0byB0cnVlIG9uICc6W14gXSdcbn1cblxuLy8gU2ltcGxpZmllZCB0ZXN0IGZvciB2YWx1ZXMgYWxsb3dlZCBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHBsYWluIHN0eWxlLlxuZnVuY3Rpb24gaXNQbGFpblNhZmVGaXJzdChjKSB7XG4gIC8vIFVzZXMgYSBzdWJzZXQgb2YgbnMtY2hhciAtIGMtaW5kaWNhdG9yXG4gIC8vIHdoZXJlIG5zLWNoYXIgPSBuYi1jaGFyIC0gcy13aGl0ZS5cbiAgLy8gTm8gc3VwcG9ydCBvZiAoICggXHUyMDFDP1x1MjAxRCB8IFx1MjAxQzpcdTIwMUQgfCBcdTIwMUMtXHUyMDFEICkgLyogRm9sbG93ZWQgYnkgYW4gbnMtcGxhaW4tc2FmZShjKSkgKi8gKSBwYXJ0XG4gIHJldHVybiBpc1ByaW50YWJsZShjKSAmJiBjICE9PSBDSEFSX0JPTVxuICAgICYmICFpc1doaXRlc3BhY2UoYykgLy8gLSBzLXdoaXRlXG4gICAgLy8gLSAoYy1pbmRpY2F0b3IgOjo9XG4gICAgLy8gXHUyMDFDLVx1MjAxRCB8IFx1MjAxQz9cdTIwMUQgfCBcdTIwMUM6XHUyMDFEIHwgXHUyMDFDLFx1MjAxRCB8IFx1MjAxQ1tcdTIwMUQgfCBcdTIwMUNdXHUyMDFEIHwgXHUyMDFDe1x1MjAxRCB8IFx1MjAxQ31cdTIwMURcbiAgICAmJiBjICE9PSBDSEFSX01JTlVTXG4gICAgJiYgYyAhPT0gQ0hBUl9RVUVTVElPTlxuICAgICYmIGMgIT09IENIQVJfQ09MT05cbiAgICAmJiBjICE9PSBDSEFSX0NPTU1BXG4gICAgJiYgYyAhPT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVFxuICAgICYmIGMgIT09IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUXG4gICAgJiYgYyAhPT0gQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUXG4gICAgLy8gfCBcdTIwMUMjXHUyMDFEIHwgXHUyMDFDJlx1MjAxRCB8IFx1MjAxQypcdTIwMUQgfCBcdTIwMUMhXHUyMDFEIHwgXHUyMDFDfFx1MjAxRCB8IFx1MjAxQz1cdTIwMUQgfCBcdTIwMUM+XHUyMDFEIHwgXHUyMDFDJ1x1MjAxRCB8IFx1MjAxQ1wiXHUyMDFEXG4gICAgJiYgYyAhPT0gQ0hBUl9TSEFSUFxuICAgICYmIGMgIT09IENIQVJfQU1QRVJTQU5EXG4gICAgJiYgYyAhPT0gQ0hBUl9BU1RFUklTS1xuICAgICYmIGMgIT09IENIQVJfRVhDTEFNQVRJT05cbiAgICAmJiBjICE9PSBDSEFSX1ZFUlRJQ0FMX0xJTkVcbiAgICAmJiBjICE9PSBDSEFSX0VRVUFMU1xuICAgICYmIGMgIT09IENIQVJfR1JFQVRFUl9USEFOXG4gICAgJiYgYyAhPT0gQ0hBUl9TSU5HTEVfUVVPVEVcbiAgICAmJiBjICE9PSBDSEFSX0RPVUJMRV9RVU9URVxuICAgIC8vIHwgXHUyMDFDJVx1MjAxRCB8IFx1MjAxQ0BcdTIwMUQgfCBcdTIwMUNgXHUyMDFEKVxuICAgICYmIGMgIT09IENIQVJfUEVSQ0VOVFxuICAgICYmIGMgIT09IENIQVJfQ09NTUVSQ0lBTF9BVFxuICAgICYmIGMgIT09IENIQVJfR1JBVkVfQUNDRU5UO1xufVxuXG4vLyBTaW1wbGlmaWVkIHRlc3QgZm9yIHZhbHVlcyBhbGxvd2VkIGFzIHRoZSBsYXN0IGNoYXJhY3RlciBpbiBwbGFpbiBzdHlsZS5cbmZ1bmN0aW9uIGlzUGxhaW5TYWZlTGFzdChjKSB7XG4gIC8vIGp1c3Qgbm90IHdoaXRlc3BhY2Ugb3IgY29sb24sIGl0IHdpbGwgYmUgY2hlY2tlZCB0byBiZSBwbGFpbiBjaGFyYWN0ZXIgbGF0ZXJcbiAgcmV0dXJuICFpc1doaXRlc3BhY2UoYykgJiYgYyAhPT0gQ0hBUl9DT0xPTjtcbn1cblxuLy8gU2FtZSBhcyAnc3RyaW5nJy5jb2RlUG9pbnRBdChwb3MpLCBidXQgd29ya3MgaW4gb2xkZXIgYnJvd3NlcnMuXG5mdW5jdGlvbiBjb2RlUG9pbnRBdChzdHJpbmcsIHBvcykge1xuICB2YXIgZmlyc3QgPSBzdHJpbmcuY2hhckNvZGVBdChwb3MpLCBzZWNvbmQ7XG4gIGlmIChmaXJzdCA+PSAweEQ4MDAgJiYgZmlyc3QgPD0gMHhEQkZGICYmIHBvcyArIDEgPCBzdHJpbmcubGVuZ3RoKSB7XG4gICAgc2Vjb25kID0gc3RyaW5nLmNoYXJDb2RlQXQocG9zICsgMSk7XG4gICAgaWYgKHNlY29uZCA+PSAweERDMDAgJiYgc2Vjb25kIDw9IDB4REZGRikge1xuICAgICAgLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmcjc3Vycm9nYXRlLWZvcm11bGFlXG4gICAgICByZXR1cm4gKGZpcnN0IC0gMHhEODAwKSAqIDB4NDAwICsgc2Vjb25kIC0gMHhEQzAwICsgMHgxMDAwMDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZpcnN0O1xufVxuXG4vLyBEZXRlcm1pbmVzIHdoZXRoZXIgYmxvY2sgaW5kZW50YXRpb24gaW5kaWNhdG9yIGlzIHJlcXVpcmVkLlxuZnVuY3Rpb24gbmVlZEluZGVudEluZGljYXRvcihzdHJpbmcpIHtcbiAgdmFyIGxlYWRpbmdTcGFjZVJlID0gL15cXG4qIC87XG4gIHJldHVybiBsZWFkaW5nU3BhY2VSZS50ZXN0KHN0cmluZyk7XG59XG5cbnZhciBTVFlMRV9QTEFJTiAgID0gMSxcbiAgICBTVFlMRV9TSU5HTEUgID0gMixcbiAgICBTVFlMRV9MSVRFUkFMID0gMyxcbiAgICBTVFlMRV9GT0xERUQgID0gNCxcbiAgICBTVFlMRV9ET1VCTEUgID0gNTtcblxuLy8gRGV0ZXJtaW5lcyB3aGljaCBzY2FsYXIgc3R5bGVzIGFyZSBwb3NzaWJsZSBhbmQgcmV0dXJucyB0aGUgcHJlZmVycmVkIHN0eWxlLlxuLy8gbGluZVdpZHRoID0gLTEgPT4gbm8gbGltaXQuXG4vLyBQcmUtY29uZGl0aW9uczogc3RyLmxlbmd0aCA+IDAuXG4vLyBQb3N0LWNvbmRpdGlvbnM6XG4vLyAgICBTVFlMRV9QTEFJTiBvciBTVFlMRV9TSU5HTEUgPT4gbm8gXFxuIGFyZSBpbiB0aGUgc3RyaW5nLlxuLy8gICAgU1RZTEVfTElURVJBTCA9PiBubyBsaW5lcyBhcmUgc3VpdGFibGUgZm9yIGZvbGRpbmcgKG9yIGxpbmVXaWR0aCBpcyAtMSkuXG4vLyAgICBTVFlMRV9GT0xERUQgPT4gYSBsaW5lID4gbGluZVdpZHRoIGFuZCBjYW4gYmUgZm9sZGVkIChhbmQgbGluZVdpZHRoICE9IC0xKS5cbmZ1bmN0aW9uIGNob29zZVNjYWxhclN0eWxlKHN0cmluZywgc2luZ2xlTGluZU9ubHksIGluZGVudFBlckxldmVsLCBsaW5lV2lkdGgsXG4gIHRlc3RBbWJpZ3VvdXNUeXBlLCBxdW90aW5nVHlwZSwgZm9yY2VRdW90ZXMsIGluYmxvY2spIHtcblxuICB2YXIgaTtcbiAgdmFyIGNoYXIgPSAwO1xuICB2YXIgcHJldkNoYXIgPSBudWxsO1xuICB2YXIgaGFzTGluZUJyZWFrID0gZmFsc2U7XG4gIHZhciBoYXNGb2xkYWJsZUxpbmUgPSBmYWxzZTsgLy8gb25seSBjaGVja2VkIGlmIHNob3VsZFRyYWNrV2lkdGhcbiAgdmFyIHNob3VsZFRyYWNrV2lkdGggPSBsaW5lV2lkdGggIT09IC0xO1xuICB2YXIgcHJldmlvdXNMaW5lQnJlYWsgPSAtMTsgLy8gY291bnQgdGhlIGZpcnN0IGxpbmUgY29ycmVjdGx5XG4gIHZhciBwbGFpbiA9IGlzUGxhaW5TYWZlRmlyc3QoY29kZVBvaW50QXQoc3RyaW5nLCAwKSlcbiAgICAgICAgICAmJiBpc1BsYWluU2FmZUxhc3QoY29kZVBvaW50QXQoc3RyaW5nLCBzdHJpbmcubGVuZ3RoIC0gMSkpO1xuXG4gIGlmIChzaW5nbGVMaW5lT25seSB8fCBmb3JjZVF1b3Rlcykge1xuICAgIC8vIENhc2U6IG5vIGJsb2NrIHN0eWxlcy5cbiAgICAvLyBDaGVjayBmb3IgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzIHRvIHJ1bGUgb3V0IHBsYWluIGFuZCBzaW5nbGUuXG4gICAgZm9yIChpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGNoYXIgPj0gMHgxMDAwMCA/IGkgKz0gMiA6IGkrKykge1xuICAgICAgY2hhciA9IGNvZGVQb2ludEF0KHN0cmluZywgaSk7XG4gICAgICBpZiAoIWlzUHJpbnRhYmxlKGNoYXIpKSB7XG4gICAgICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gICAgICB9XG4gICAgICBwbGFpbiA9IHBsYWluICYmIGlzUGxhaW5TYWZlKGNoYXIsIHByZXZDaGFyLCBpbmJsb2NrKTtcbiAgICAgIHByZXZDaGFyID0gY2hhcjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gQ2FzZTogYmxvY2sgc3R5bGVzIHBlcm1pdHRlZC5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgY2hhciA+PSAweDEwMDAwID8gaSArPSAyIDogaSsrKSB7XG4gICAgICBjaGFyID0gY29kZVBvaW50QXQoc3RyaW5nLCBpKTtcbiAgICAgIGlmIChjaGFyID09PSBDSEFSX0xJTkVfRkVFRCkge1xuICAgICAgICBoYXNMaW5lQnJlYWsgPSB0cnVlO1xuICAgICAgICAvLyBDaGVjayBpZiBhbnkgbGluZSBjYW4gYmUgZm9sZGVkLlxuICAgICAgICBpZiAoc2hvdWxkVHJhY2tXaWR0aCkge1xuICAgICAgICAgIGhhc0ZvbGRhYmxlTGluZSA9IGhhc0ZvbGRhYmxlTGluZSB8fFxuICAgICAgICAgICAgLy8gRm9sZGFibGUgbGluZSA9IHRvbyBsb25nLCBhbmQgbm90IG1vcmUtaW5kZW50ZWQuXG4gICAgICAgICAgICAoaSAtIHByZXZpb3VzTGluZUJyZWFrIC0gMSA+IGxpbmVXaWR0aCAmJlxuICAgICAgICAgICAgIHN0cmluZ1twcmV2aW91c0xpbmVCcmVhayArIDFdICE9PSAnICcpO1xuICAgICAgICAgIHByZXZpb3VzTGluZUJyZWFrID0gaTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghaXNQcmludGFibGUoY2hhcikpIHtcbiAgICAgICAgcmV0dXJuIFNUWUxFX0RPVUJMRTtcbiAgICAgIH1cbiAgICAgIHBsYWluID0gcGxhaW4gJiYgaXNQbGFpblNhZmUoY2hhciwgcHJldkNoYXIsIGluYmxvY2spO1xuICAgICAgcHJldkNoYXIgPSBjaGFyO1xuICAgIH1cbiAgICAvLyBpbiBjYXNlIHRoZSBlbmQgaXMgbWlzc2luZyBhIFxcblxuICAgIGhhc0ZvbGRhYmxlTGluZSA9IGhhc0ZvbGRhYmxlTGluZSB8fCAoc2hvdWxkVHJhY2tXaWR0aCAmJlxuICAgICAgKGkgLSBwcmV2aW91c0xpbmVCcmVhayAtIDEgPiBsaW5lV2lkdGggJiZcbiAgICAgICBzdHJpbmdbcHJldmlvdXNMaW5lQnJlYWsgKyAxXSAhPT0gJyAnKSk7XG4gIH1cbiAgLy8gQWx0aG91Z2ggZXZlcnkgc3R5bGUgY2FuIHJlcHJlc2VudCBcXG4gd2l0aG91dCBlc2NhcGluZywgcHJlZmVyIGJsb2NrIHN0eWxlc1xuICAvLyBmb3IgbXVsdGlsaW5lLCBzaW5jZSB0aGV5J3JlIG1vcmUgcmVhZGFibGUgYW5kIHRoZXkgZG9uJ3QgYWRkIGVtcHR5IGxpbmVzLlxuICAvLyBBbHNvIHByZWZlciBmb2xkaW5nIGEgc3VwZXItbG9uZyBsaW5lLlxuICBpZiAoIWhhc0xpbmVCcmVhayAmJiAhaGFzRm9sZGFibGVMaW5lKSB7XG4gICAgLy8gU3RyaW5ncyBpbnRlcnByZXRhYmxlIGFzIGFub3RoZXIgdHlwZSBoYXZlIHRvIGJlIHF1b3RlZDtcbiAgICAvLyBlLmcuIHRoZSBzdHJpbmcgJ3RydWUnIHZzLiB0aGUgYm9vbGVhbiB0cnVlLlxuICAgIGlmIChwbGFpbiAmJiAhZm9yY2VRdW90ZXMgJiYgIXRlc3RBbWJpZ3VvdXNUeXBlKHN0cmluZykpIHtcbiAgICAgIHJldHVybiBTVFlMRV9QTEFJTjtcbiAgICB9XG4gICAgcmV0dXJuIHF1b3RpbmdUeXBlID09PSBRVU9USU5HX1RZUEVfRE9VQkxFID8gU1RZTEVfRE9VQkxFIDogU1RZTEVfU0lOR0xFO1xuICB9XG4gIC8vIEVkZ2UgY2FzZTogYmxvY2sgaW5kZW50YXRpb24gaW5kaWNhdG9yIGNhbiBvbmx5IGhhdmUgb25lIGRpZ2l0LlxuICBpZiAoaW5kZW50UGVyTGV2ZWwgPiA5ICYmIG5lZWRJbmRlbnRJbmRpY2F0b3Ioc3RyaW5nKSkge1xuICAgIHJldHVybiBTVFlMRV9ET1VCTEU7XG4gIH1cbiAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IGJsb2NrIHN0eWxlcyBhcmUgdmFsaWQuXG4gIC8vIFByZWZlciBsaXRlcmFsIHN0eWxlIHVubGVzcyB3ZSB3YW50IHRvIGZvbGQuXG4gIGlmICghZm9yY2VRdW90ZXMpIHtcbiAgICByZXR1cm4gaGFzRm9sZGFibGVMaW5lID8gU1RZTEVfRk9MREVEIDogU1RZTEVfTElURVJBTDtcbiAgfVxuICByZXR1cm4gcXVvdGluZ1R5cGUgPT09IFFVT1RJTkdfVFlQRV9ET1VCTEUgPyBTVFlMRV9ET1VCTEUgOiBTVFlMRV9TSU5HTEU7XG59XG5cbi8vIE5vdGU6IGxpbmUgYnJlYWtpbmcvZm9sZGluZyBpcyBpbXBsZW1lbnRlZCBmb3Igb25seSB0aGUgZm9sZGVkIHN0eWxlLlxuLy8gTkIuIFdlIGRyb3AgdGhlIGxhc3QgdHJhaWxpbmcgbmV3bGluZSAoaWYgYW55KSBvZiBhIHJldHVybmVkIGJsb2NrIHNjYWxhclxuLy8gIHNpbmNlIHRoZSBkdW1wZXIgYWRkcyBpdHMgb3duIG5ld2xpbmUuIFRoaXMgYWx3YXlzIHdvcmtzOlxuLy8gICAgXHUyMDIyIE5vIGVuZGluZyBuZXdsaW5lID0+IHVuYWZmZWN0ZWQ7IGFscmVhZHkgdXNpbmcgc3RyaXAgXCItXCIgY2hvbXBpbmcuXG4vLyAgICBcdTIwMjIgRW5kaW5nIG5ld2xpbmUgICAgPT4gcmVtb3ZlZCB0aGVuIHJlc3RvcmVkLlxuLy8gIEltcG9ydGFudGx5LCB0aGlzIGtlZXBzIHRoZSBcIitcIiBjaG9tcCBpbmRpY2F0b3IgZnJvbSBnYWluaW5nIGFuIGV4dHJhIGxpbmUuXG5mdW5jdGlvbiB3cml0ZVNjYWxhcihzdGF0ZSwgc3RyaW5nLCBsZXZlbCwgaXNrZXksIGluYmxvY2spIHtcbiAgc3RhdGUuZHVtcCA9IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHN0cmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBzdGF0ZS5xdW90aW5nVHlwZSA9PT0gUVVPVElOR19UWVBFX0RPVUJMRSA/ICdcIlwiJyA6IFwiJydcIjtcbiAgICB9XG4gICAgaWYgKCFzdGF0ZS5ub0NvbXBhdE1vZGUpIHtcbiAgICAgIGlmIChERVBSRUNBVEVEX0JPT0xFQU5TX1NZTlRBWC5pbmRleE9mKHN0cmluZykgIT09IC0xIHx8IERFUFJFQ0FURURfQkFTRTYwX1NZTlRBWC50ZXN0KHN0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLnF1b3RpbmdUeXBlID09PSBRVU9USU5HX1RZUEVfRE9VQkxFID8gKCdcIicgKyBzdHJpbmcgKyAnXCInKSA6IChcIidcIiArIHN0cmluZyArIFwiJ1wiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaW5kZW50ID0gc3RhdGUuaW5kZW50ICogTWF0aC5tYXgoMSwgbGV2ZWwpOyAvLyBubyAwLWluZGVudCBzY2FsYXJzXG4gICAgLy8gQXMgaW5kZW50YXRpb24gZ2V0cyBkZWVwZXIsIGxldCB0aGUgd2lkdGggZGVjcmVhc2UgbW9ub3RvbmljYWxseVxuICAgIC8vIHRvIHRoZSBsb3dlciBib3VuZCBtaW4oc3RhdGUubGluZVdpZHRoLCA0MCkuXG4gICAgLy8gTm90ZSB0aGF0IHRoaXMgaW1wbGllc1xuICAgIC8vICBzdGF0ZS5saW5lV2lkdGggXHUyMjY0IDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBpcyBmaXhlZCBhdCB0aGUgbG93ZXIgYm91bmQuXG4gICAgLy8gIHN0YXRlLmxpbmVXaWR0aCA+IDQwICsgc3RhdGUuaW5kZW50OiB3aWR0aCBkZWNyZWFzZXMgdW50aWwgdGhlIGxvd2VyIGJvdW5kLlxuICAgIC8vIFRoaXMgYmVoYXZlcyBiZXR0ZXIgdGhhbiBhIGNvbnN0YW50IG1pbmltdW0gd2lkdGggd2hpY2ggZGlzYWxsb3dzIG5hcnJvd2VyIG9wdGlvbnMsXG4gICAgLy8gb3IgYW4gaW5kZW50IHRocmVzaG9sZCB3aGljaCBjYXVzZXMgdGhlIHdpZHRoIHRvIHN1ZGRlbmx5IGluY3JlYXNlLlxuICAgIHZhciBsaW5lV2lkdGggPSBzdGF0ZS5saW5lV2lkdGggPT09IC0xXG4gICAgICA/IC0xIDogTWF0aC5tYXgoTWF0aC5taW4oc3RhdGUubGluZVdpZHRoLCA0MCksIHN0YXRlLmxpbmVXaWR0aCAtIGluZGVudCk7XG5cbiAgICAvLyBXaXRob3V0IGtub3dpbmcgaWYga2V5cyBhcmUgaW1wbGljaXQvZXhwbGljaXQsIGFzc3VtZSBpbXBsaWNpdCBmb3Igc2FmZXR5LlxuICAgIHZhciBzaW5nbGVMaW5lT25seSA9IGlza2V5XG4gICAgICAvLyBObyBibG9jayBzdHlsZXMgaW4gZmxvdyBtb2RlLlxuICAgICAgfHwgKHN0YXRlLmZsb3dMZXZlbCA+IC0xICYmIGxldmVsID49IHN0YXRlLmZsb3dMZXZlbCk7XG4gICAgZnVuY3Rpb24gdGVzdEFtYmlndWl0eShzdHJpbmcpIHtcbiAgICAgIHJldHVybiB0ZXN0SW1wbGljaXRSZXNvbHZpbmcoc3RhdGUsIHN0cmluZyk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjaG9vc2VTY2FsYXJTdHlsZShzdHJpbmcsIHNpbmdsZUxpbmVPbmx5LCBzdGF0ZS5pbmRlbnQsIGxpbmVXaWR0aCxcbiAgICAgIHRlc3RBbWJpZ3VpdHksIHN0YXRlLnF1b3RpbmdUeXBlLCBzdGF0ZS5mb3JjZVF1b3RlcyAmJiAhaXNrZXksIGluYmxvY2spKSB7XG5cbiAgICAgIGNhc2UgU1RZTEVfUExBSU46XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICBjYXNlIFNUWUxFX1NJTkdMRTpcbiAgICAgICAgcmV0dXJuIFwiJ1wiICsgc3RyaW5nLnJlcGxhY2UoLycvZywgXCInJ1wiKSArIFwiJ1wiO1xuICAgICAgY2FzZSBTVFlMRV9MSVRFUkFMOlxuICAgICAgICByZXR1cm4gJ3wnICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpXG4gICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoc3RyaW5nLCBpbmRlbnQpKTtcbiAgICAgIGNhc2UgU1RZTEVfRk9MREVEOlxuICAgICAgICByZXR1cm4gJz4nICsgYmxvY2tIZWFkZXIoc3RyaW5nLCBzdGF0ZS5pbmRlbnQpXG4gICAgICAgICAgKyBkcm9wRW5kaW5nTmV3bGluZShpbmRlbnRTdHJpbmcoZm9sZFN0cmluZyhzdHJpbmcsIGxpbmVXaWR0aCksIGluZGVudCkpO1xuICAgICAgY2FzZSBTVFlMRV9ET1VCTEU6XG4gICAgICAgIHJldHVybiAnXCInICsgZXNjYXBlU3RyaW5nKHN0cmluZykgKyAnXCInO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IGV4Y2VwdGlvbignaW1wb3NzaWJsZSBlcnJvcjogaW52YWxpZCBzY2FsYXIgc3R5bGUnKTtcbiAgICB9XG4gIH0oKSk7XG59XG5cbi8vIFByZS1jb25kaXRpb25zOiBzdHJpbmcgaXMgdmFsaWQgZm9yIGEgYmxvY2sgc2NhbGFyLCAxIDw9IGluZGVudFBlckxldmVsIDw9IDkuXG5mdW5jdGlvbiBibG9ja0hlYWRlcihzdHJpbmcsIGluZGVudFBlckxldmVsKSB7XG4gIHZhciBpbmRlbnRJbmRpY2F0b3IgPSBuZWVkSW5kZW50SW5kaWNhdG9yKHN0cmluZykgPyBTdHJpbmcoaW5kZW50UGVyTGV2ZWwpIDogJyc7XG5cbiAgLy8gbm90ZSB0aGUgc3BlY2lhbCBjYXNlOiB0aGUgc3RyaW5nICdcXG4nIGNvdW50cyBhcyBhIFwidHJhaWxpbmdcIiBlbXB0eSBsaW5lLlxuICB2YXIgY2xpcCA9ICAgICAgICAgIHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMV0gPT09ICdcXG4nO1xuICB2YXIga2VlcCA9IGNsaXAgJiYgKHN0cmluZ1tzdHJpbmcubGVuZ3RoIC0gMl0gPT09ICdcXG4nIHx8IHN0cmluZyA9PT0gJ1xcbicpO1xuICB2YXIgY2hvbXAgPSBrZWVwID8gJysnIDogKGNsaXAgPyAnJyA6ICctJyk7XG5cbiAgcmV0dXJuIGluZGVudEluZGljYXRvciArIGNob21wICsgJ1xcbic7XG59XG5cbi8vIChTZWUgdGhlIG5vdGUgZm9yIHdyaXRlU2NhbGFyLilcbmZ1bmN0aW9uIGRyb3BFbmRpbmdOZXdsaW5lKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nW3N0cmluZy5sZW5ndGggLSAxXSA9PT0gJ1xcbicgPyBzdHJpbmcuc2xpY2UoMCwgLTEpIDogc3RyaW5nO1xufVxuXG4vLyBOb3RlOiBhIGxvbmcgbGluZSB3aXRob3V0IGEgc3VpdGFibGUgYnJlYWsgcG9pbnQgd2lsbCBleGNlZWQgdGhlIHdpZHRoIGxpbWl0LlxuLy8gUHJlLWNvbmRpdGlvbnM6IGV2ZXJ5IGNoYXIgaW4gc3RyIGlzUHJpbnRhYmxlLCBzdHIubGVuZ3RoID4gMCwgd2lkdGggPiAwLlxuZnVuY3Rpb24gZm9sZFN0cmluZyhzdHJpbmcsIHdpZHRoKSB7XG4gIC8vIEluIGZvbGRlZCBzdHlsZSwgJGskIGNvbnNlY3V0aXZlIG5ld2xpbmVzIG91dHB1dCBhcyAkaysxJCBuZXdsaW5lc1x1MjAxNFxuICAvLyB1bmxlc3MgdGhleSdyZSBiZWZvcmUgb3IgYWZ0ZXIgYSBtb3JlLWluZGVudGVkIGxpbmUsIG9yIGF0IHRoZSB2ZXJ5XG4gIC8vIGJlZ2lubmluZyBvciBlbmQsIGluIHdoaWNoIGNhc2UgJGskIG1hcHMgdG8gJGskLlxuICAvLyBUaGVyZWZvcmUsIHBhcnNlIGVhY2ggY2h1bmsgYXMgbmV3bGluZShzKSBmb2xsb3dlZCBieSBhIGNvbnRlbnQgbGluZS5cbiAgdmFyIGxpbmVSZSA9IC8oXFxuKykoW15cXG5dKikvZztcblxuICAvLyBmaXJzdCBsaW5lIChwb3NzaWJseSBhbiBlbXB0eSBsaW5lKVxuICB2YXIgcmVzdWx0ID0gKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbmV4dExGID0gc3RyaW5nLmluZGV4T2YoJ1xcbicpO1xuICAgIG5leHRMRiA9IG5leHRMRiAhPT0gLTEgPyBuZXh0TEYgOiBzdHJpbmcubGVuZ3RoO1xuICAgIGxpbmVSZS5sYXN0SW5kZXggPSBuZXh0TEY7XG4gICAgcmV0dXJuIGZvbGRMaW5lKHN0cmluZy5zbGljZSgwLCBuZXh0TEYpLCB3aWR0aCk7XG4gIH0oKSk7XG4gIC8vIElmIHdlIGhhdmVuJ3QgcmVhY2hlZCB0aGUgZmlyc3QgY29udGVudCBsaW5lIHlldCwgZG9uJ3QgYWRkIGFuIGV4dHJhIFxcbi5cbiAgdmFyIHByZXZNb3JlSW5kZW50ZWQgPSBzdHJpbmdbMF0gPT09ICdcXG4nIHx8IHN0cmluZ1swXSA9PT0gJyAnO1xuICB2YXIgbW9yZUluZGVudGVkO1xuXG4gIC8vIHJlc3Qgb2YgdGhlIGxpbmVzXG4gIHZhciBtYXRjaDtcbiAgd2hpbGUgKChtYXRjaCA9IGxpbmVSZS5leGVjKHN0cmluZykpKSB7XG4gICAgdmFyIHByZWZpeCA9IG1hdGNoWzFdLCBsaW5lID0gbWF0Y2hbMl07XG4gICAgbW9yZUluZGVudGVkID0gKGxpbmVbMF0gPT09ICcgJyk7XG4gICAgcmVzdWx0ICs9IHByZWZpeFxuICAgICAgKyAoIXByZXZNb3JlSW5kZW50ZWQgJiYgIW1vcmVJbmRlbnRlZCAmJiBsaW5lICE9PSAnJ1xuICAgICAgICA/ICdcXG4nIDogJycpXG4gICAgICArIGZvbGRMaW5lKGxpbmUsIHdpZHRoKTtcbiAgICBwcmV2TW9yZUluZGVudGVkID0gbW9yZUluZGVudGVkO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR3JlZWR5IGxpbmUgYnJlYWtpbmcuXG4vLyBQaWNrcyB0aGUgbG9uZ2VzdCBsaW5lIHVuZGVyIHRoZSBsaW1pdCBlYWNoIHRpbWUsXG4vLyBvdGhlcndpc2Ugc2V0dGxlcyBmb3IgdGhlIHNob3J0ZXN0IGxpbmUgb3ZlciB0aGUgbGltaXQuXG4vLyBOQi4gTW9yZS1pbmRlbnRlZCBsaW5lcyAqY2Fubm90KiBiZSBmb2xkZWQsIGFzIHRoYXQgd291bGQgYWRkIGFuIGV4dHJhIFxcbi5cbmZ1bmN0aW9uIGZvbGRMaW5lKGxpbmUsIHdpZHRoKSB7XG4gIGlmIChsaW5lID09PSAnJyB8fCBsaW5lWzBdID09PSAnICcpIHJldHVybiBsaW5lO1xuXG4gIC8vIFNpbmNlIGEgbW9yZS1pbmRlbnRlZCBsaW5lIGFkZHMgYSBcXG4sIGJyZWFrcyBjYW4ndCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlLlxuICB2YXIgYnJlYWtSZSA9IC8gW14gXS9nOyAvLyBub3RlOiB0aGUgbWF0Y2ggaW5kZXggd2lsbCBhbHdheXMgYmUgPD0gbGVuZ3RoLTIuXG4gIHZhciBtYXRjaDtcbiAgLy8gc3RhcnQgaXMgYW4gaW5jbHVzaXZlIGluZGV4LiBlbmQsIGN1cnIsIGFuZCBuZXh0IGFyZSBleGNsdXNpdmUuXG4gIHZhciBzdGFydCA9IDAsIGVuZCwgY3VyciA9IDAsIG5leHQgPSAwO1xuICB2YXIgcmVzdWx0ID0gJyc7XG5cbiAgLy8gSW52YXJpYW50czogMCA8PSBzdGFydCA8PSBsZW5ndGgtMS5cbiAgLy8gICAwIDw9IGN1cnIgPD0gbmV4dCA8PSBtYXgoMCwgbGVuZ3RoLTIpLiBjdXJyIC0gc3RhcnQgPD0gd2lkdGguXG4gIC8vIEluc2lkZSB0aGUgbG9vcDpcbiAgLy8gICBBIG1hdGNoIGltcGxpZXMgbGVuZ3RoID49IDIsIHNvIGN1cnIgYW5kIG5leHQgYXJlIDw9IGxlbmd0aC0yLlxuICB3aGlsZSAoKG1hdGNoID0gYnJlYWtSZS5leGVjKGxpbmUpKSkge1xuICAgIG5leHQgPSBtYXRjaC5pbmRleDtcbiAgICAvLyBtYWludGFpbiBpbnZhcmlhbnQ6IGN1cnIgLSBzdGFydCA8PSB3aWR0aFxuICAgIGlmIChuZXh0IC0gc3RhcnQgPiB3aWR0aCkge1xuICAgICAgZW5kID0gKGN1cnIgPiBzdGFydCkgPyBjdXJyIDogbmV4dDsgLy8gZGVyaXZlIGVuZCA8PSBsZW5ndGgtMlxuICAgICAgcmVzdWx0ICs9ICdcXG4nICsgbGluZS5zbGljZShzdGFydCwgZW5kKTtcbiAgICAgIC8vIHNraXAgdGhlIHNwYWNlIHRoYXQgd2FzIG91dHB1dCBhcyBcXG5cbiAgICAgIHN0YXJ0ID0gZW5kICsgMTsgICAgICAgICAgICAgICAgICAgIC8vIGRlcml2ZSBzdGFydCA8PSBsZW5ndGgtMVxuICAgIH1cbiAgICBjdXJyID0gbmV4dDtcbiAgfVxuXG4gIC8vIEJ5IHRoZSBpbnZhcmlhbnRzLCBzdGFydCA8PSBsZW5ndGgtMSwgc28gdGhlcmUgaXMgc29tZXRoaW5nIGxlZnQgb3Zlci5cbiAgLy8gSXQgaXMgZWl0aGVyIHRoZSB3aG9sZSBzdHJpbmcgb3IgYSBwYXJ0IHN0YXJ0aW5nIGZyb20gbm9uLXdoaXRlc3BhY2UuXG4gIHJlc3VsdCArPSAnXFxuJztcbiAgLy8gSW5zZXJ0IGEgYnJlYWsgaWYgdGhlIHJlbWFpbmRlciBpcyB0b28gbG9uZyBhbmQgdGhlcmUgaXMgYSBicmVhayBhdmFpbGFibGUuXG4gIGlmIChsaW5lLmxlbmd0aCAtIHN0YXJ0ID4gd2lkdGggJiYgY3VyciA+IHN0YXJ0KSB7XG4gICAgcmVzdWx0ICs9IGxpbmUuc2xpY2Uoc3RhcnQsIGN1cnIpICsgJ1xcbicgKyBsaW5lLnNsaWNlKGN1cnIgKyAxKTtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgKz0gbGluZS5zbGljZShzdGFydCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnNsaWNlKDEpOyAvLyBkcm9wIGV4dHJhIFxcbiBqb2luZXJcbn1cblxuLy8gRXNjYXBlcyBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLlxuZnVuY3Rpb24gZXNjYXBlU3RyaW5nKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHZhciBjaGFyID0gMDtcbiAgdmFyIGVzY2FwZVNlcTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7IGNoYXIgPj0gMHgxMDAwMCA/IGkgKz0gMiA6IGkrKykge1xuICAgIGNoYXIgPSBjb2RlUG9pbnRBdChzdHJpbmcsIGkpO1xuICAgIGVzY2FwZVNlcSA9IEVTQ0FQRV9TRVFVRU5DRVNbY2hhcl07XG5cbiAgICBpZiAoIWVzY2FwZVNlcSAmJiBpc1ByaW50YWJsZShjaGFyKSkge1xuICAgICAgcmVzdWx0ICs9IHN0cmluZ1tpXTtcbiAgICAgIGlmIChjaGFyID49IDB4MTAwMDApIHJlc3VsdCArPSBzdHJpbmdbaSArIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgKz0gZXNjYXBlU2VxIHx8IGVuY29kZUhleChjaGFyKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiB3cml0ZUZsb3dTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwsIG9iamVjdCkge1xuICB2YXIgX3Jlc3VsdCA9ICcnLFxuICAgICAgX3RhZyAgICA9IHN0YXRlLnRhZyxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoLFxuICAgICAgdmFsdWU7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdC5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgdmFsdWUgPSBvYmplY3RbaW5kZXhdO1xuXG4gICAgaWYgKHN0YXRlLnJlcGxhY2VyKSB7XG4gICAgICB2YWx1ZSA9IHN0YXRlLnJlcGxhY2VyLmNhbGwob2JqZWN0LCBTdHJpbmcoaW5kZXgpLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gV3JpdGUgb25seSB2YWxpZCBlbGVtZW50cywgcHV0IG51bGwgaW5zdGVhZCBvZiBpbnZhbGlkIGVsZW1lbnRzLlxuICAgIGlmICh3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCB2YWx1ZSwgZmFsc2UsIGZhbHNlKSB8fFxuICAgICAgICAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgbnVsbCwgZmFsc2UsIGZhbHNlKSkpIHtcblxuICAgICAgaWYgKF9yZXN1bHQgIT09ICcnKSBfcmVzdWx0ICs9ICcsJyArICghc3RhdGUuY29uZGVuc2VGbG93ID8gJyAnIDogJycpO1xuICAgICAgX3Jlc3VsdCArPSBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSAnWycgKyBfcmVzdWx0ICsgJ10nO1xufVxuXG5mdW5jdGlvbiB3cml0ZUJsb2NrU2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBvYmplY3QsIGNvbXBhY3QpIHtcbiAgdmFyIF9yZXN1bHQgPSAnJyxcbiAgICAgIF90YWcgICAgPSBzdGF0ZS50YWcsXG4gICAgICBpbmRleCxcbiAgICAgIGxlbmd0aCxcbiAgICAgIHZhbHVlO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIHZhbHVlID0gb2JqZWN0W2luZGV4XTtcblxuICAgIGlmIChzdGF0ZS5yZXBsYWNlcikge1xuICAgICAgdmFsdWUgPSBzdGF0ZS5yZXBsYWNlci5jYWxsKG9iamVjdCwgU3RyaW5nKGluZGV4KSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFdyaXRlIG9ubHkgdmFsaWQgZWxlbWVudHMsIHB1dCBudWxsIGluc3RlYWQgb2YgaW52YWxpZCBlbGVtZW50cy5cbiAgICBpZiAod3JpdGVOb2RlKHN0YXRlLCBsZXZlbCArIDEsIHZhbHVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkgfHxcbiAgICAgICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgIHdyaXRlTm9kZShzdGF0ZSwgbGV2ZWwgKyAxLCBudWxsLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSkpKSB7XG5cbiAgICAgIGlmICghY29tcGFjdCB8fCBfcmVzdWx0ICE9PSAnJykge1xuICAgICAgICBfcmVzdWx0ICs9IGdlbmVyYXRlTmV4dExpbmUoc3RhdGUsIGxldmVsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkge1xuICAgICAgICBfcmVzdWx0ICs9ICctJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF9yZXN1bHQgKz0gJy0gJztcbiAgICAgIH1cblxuICAgICAgX3Jlc3VsdCArPSBzdGF0ZS5kdW1wO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSBfcmVzdWx0IHx8ICdbXSc7IC8vIEVtcHR5IHNlcXVlbmNlIGlmIG5vIHZhbGlkIHZhbHVlcy5cbn1cblxuZnVuY3Rpb24gd3JpdGVGbG93TWFwcGluZyhzdGF0ZSwgbGV2ZWwsIG9iamVjdCkge1xuICB2YXIgX3Jlc3VsdCAgICAgICA9ICcnLFxuICAgICAgX3RhZyAgICAgICAgICA9IHN0YXRlLnRhZyxcbiAgICAgIG9iamVjdEtleUxpc3QgPSBPYmplY3Qua2V5cyhvYmplY3QpLFxuICAgICAgaW5kZXgsXG4gICAgICBsZW5ndGgsXG4gICAgICBvYmplY3RLZXksXG4gICAgICBvYmplY3RWYWx1ZSxcbiAgICAgIHBhaXJCdWZmZXI7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuXG4gICAgcGFpckJ1ZmZlciA9ICcnO1xuICAgIGlmIChfcmVzdWx0ICE9PSAnJykgcGFpckJ1ZmZlciArPSAnLCAnO1xuXG4gICAgaWYgKHN0YXRlLmNvbmRlbnNlRmxvdykgcGFpckJ1ZmZlciArPSAnXCInO1xuXG4gICAgb2JqZWN0S2V5ID0gb2JqZWN0S2V5TGlzdFtpbmRleF07XG4gICAgb2JqZWN0VmFsdWUgPSBvYmplY3Rbb2JqZWN0S2V5XTtcblxuICAgIGlmIChzdGF0ZS5yZXBsYWNlcikge1xuICAgICAgb2JqZWN0VmFsdWUgPSBzdGF0ZS5yZXBsYWNlci5jYWxsKG9iamVjdCwgb2JqZWN0S2V5LCBvYmplY3RWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3RLZXksIGZhbHNlLCBmYWxzZSkpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQga2V5O1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5kdW1wLmxlbmd0aCA+IDEwMjQpIHBhaXJCdWZmZXIgKz0gJz8gJztcblxuICAgIHBhaXJCdWZmZXIgKz0gc3RhdGUuZHVtcCArIChzdGF0ZS5jb25kZW5zZUZsb3cgPyAnXCInIDogJycpICsgJzonICsgKHN0YXRlLmNvbmRlbnNlRmxvdyA/ICcnIDogJyAnKTtcblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCwgb2JqZWN0VmFsdWUsIGZhbHNlLCBmYWxzZSkpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQgdmFsdWUuXG4gICAgfVxuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wO1xuXG4gICAgLy8gQm90aCBrZXkgYW5kIHZhbHVlIGFyZSB2YWxpZC5cbiAgICBfcmVzdWx0ICs9IHBhaXJCdWZmZXI7XG4gIH1cblxuICBzdGF0ZS50YWcgPSBfdGFnO1xuICBzdGF0ZS5kdW1wID0gJ3snICsgX3Jlc3VsdCArICd9Jztcbn1cblxuZnVuY3Rpb24gd3JpdGVCbG9ja01hcHBpbmcoc3RhdGUsIGxldmVsLCBvYmplY3QsIGNvbXBhY3QpIHtcbiAgdmFyIF9yZXN1bHQgICAgICAgPSAnJyxcbiAgICAgIF90YWcgICAgICAgICAgPSBzdGF0ZS50YWcsXG4gICAgICBvYmplY3RLZXlMaXN0ID0gT2JqZWN0LmtleXMob2JqZWN0KSxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoLFxuICAgICAgb2JqZWN0S2V5LFxuICAgICAgb2JqZWN0VmFsdWUsXG4gICAgICBleHBsaWNpdFBhaXIsXG4gICAgICBwYWlyQnVmZmVyO1xuXG4gIC8vIEFsbG93IHNvcnRpbmcga2V5cyBzbyB0aGF0IHRoZSBvdXRwdXQgZmlsZSBpcyBkZXRlcm1pbmlzdGljXG4gIGlmIChzdGF0ZS5zb3J0S2V5cyA9PT0gdHJ1ZSkge1xuICAgIC8vIERlZmF1bHQgc29ydGluZ1xuICAgIG9iamVjdEtleUxpc3Quc29ydCgpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBzdGF0ZS5zb3J0S2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEN1c3RvbSBzb3J0IGZ1bmN0aW9uXG4gICAgb2JqZWN0S2V5TGlzdC5zb3J0KHN0YXRlLnNvcnRLZXlzKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5zb3J0S2V5cykge1xuICAgIC8vIFNvbWV0aGluZyBpcyB3cm9uZ1xuICAgIHRocm93IG5ldyBleGNlcHRpb24oJ3NvcnRLZXlzIG11c3QgYmUgYSBib29sZWFuIG9yIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3RLZXlMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBwYWlyQnVmZmVyID0gJyc7XG5cbiAgICBpZiAoIWNvbXBhY3QgfHwgX3Jlc3VsdCAhPT0gJycpIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gZ2VuZXJhdGVOZXh0TGluZShzdGF0ZSwgbGV2ZWwpO1xuICAgIH1cblxuICAgIG9iamVjdEtleSA9IG9iamVjdEtleUxpc3RbaW5kZXhdO1xuICAgIG9iamVjdFZhbHVlID0gb2JqZWN0W29iamVjdEtleV07XG5cbiAgICBpZiAoc3RhdGUucmVwbGFjZXIpIHtcbiAgICAgIG9iamVjdFZhbHVlID0gc3RhdGUucmVwbGFjZXIuY2FsbChvYmplY3QsIG9iamVjdEtleSwgb2JqZWN0VmFsdWUpO1xuICAgIH1cblxuICAgIGlmICghd3JpdGVOb2RlKHN0YXRlLCBsZXZlbCArIDEsIG9iamVjdEtleSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQga2V5LlxuICAgIH1cblxuICAgIGV4cGxpY2l0UGFpciA9IChzdGF0ZS50YWcgIT09IG51bGwgJiYgc3RhdGUudGFnICE9PSAnPycpIHx8XG4gICAgICAgICAgICAgICAgICAgKHN0YXRlLmR1bXAgJiYgc3RhdGUuZHVtcC5sZW5ndGggPiAxMDI0KTtcblxuICAgIGlmIChleHBsaWNpdFBhaXIpIHtcbiAgICAgIGlmIChzdGF0ZS5kdW1wICYmIENIQVJfTElORV9GRUVEID09PSBzdGF0ZS5kdW1wLmNoYXJDb2RlQXQoMCkpIHtcbiAgICAgICAgcGFpckJ1ZmZlciArPSAnPyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYWlyQnVmZmVyICs9ICc/ICc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGFpckJ1ZmZlciArPSBzdGF0ZS5kdW1wO1xuXG4gICAgaWYgKGV4cGxpY2l0UGFpcikge1xuICAgICAgcGFpckJ1ZmZlciArPSBnZW5lcmF0ZU5leHRMaW5lKHN0YXRlLCBsZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKCF3cml0ZU5vZGUoc3RhdGUsIGxldmVsICsgMSwgb2JqZWN0VmFsdWUsIHRydWUsIGV4cGxpY2l0UGFpcikpIHtcbiAgICAgIGNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgcGFpciBiZWNhdXNlIG9mIGludmFsaWQgdmFsdWUuXG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLmR1bXAgJiYgQ0hBUl9MSU5FX0ZFRUQgPT09IHN0YXRlLmR1bXAuY2hhckNvZGVBdCgwKSkge1xuICAgICAgcGFpckJ1ZmZlciArPSAnOic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhaXJCdWZmZXIgKz0gJzogJztcbiAgICB9XG5cbiAgICBwYWlyQnVmZmVyICs9IHN0YXRlLmR1bXA7XG5cbiAgICAvLyBCb3RoIGtleSBhbmQgdmFsdWUgYXJlIHZhbGlkLlxuICAgIF9yZXN1bHQgKz0gcGFpckJ1ZmZlcjtcbiAgfVxuXG4gIHN0YXRlLnRhZyA9IF90YWc7XG4gIHN0YXRlLmR1bXAgPSBfcmVzdWx0IHx8ICd7fSc7IC8vIEVtcHR5IG1hcHBpbmcgaWYgbm8gdmFsaWQgcGFpcnMuXG59XG5cbmZ1bmN0aW9uIGRldGVjdFR5cGUoc3RhdGUsIG9iamVjdCwgZXhwbGljaXQpIHtcbiAgdmFyIF9yZXN1bHQsIHR5cGVMaXN0LCBpbmRleCwgbGVuZ3RoLCB0eXBlLCBzdHlsZTtcblxuICB0eXBlTGlzdCA9IGV4cGxpY2l0ID8gc3RhdGUuZXhwbGljaXRUeXBlcyA6IHN0YXRlLmltcGxpY2l0VHlwZXM7XG5cbiAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHR5cGVMaXN0Lmxlbmd0aDsgaW5kZXggPCBsZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICB0eXBlID0gdHlwZUxpc3RbaW5kZXhdO1xuXG4gICAgaWYgKCh0eXBlLmluc3RhbmNlT2YgIHx8IHR5cGUucHJlZGljYXRlKSAmJlxuICAgICAgICAoIXR5cGUuaW5zdGFuY2VPZiB8fCAoKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSAmJiAob2JqZWN0IGluc3RhbmNlb2YgdHlwZS5pbnN0YW5jZU9mKSkpICYmXG4gICAgICAgICghdHlwZS5wcmVkaWNhdGUgIHx8IHR5cGUucHJlZGljYXRlKG9iamVjdCkpKSB7XG5cbiAgICAgIGlmIChleHBsaWNpdCkge1xuICAgICAgICBpZiAodHlwZS5tdWx0aSAmJiB0eXBlLnJlcHJlc2VudE5hbWUpIHtcbiAgICAgICAgICBzdGF0ZS50YWcgPSB0eXBlLnJlcHJlc2VudE5hbWUob2JqZWN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZS50YWcgPSB0eXBlLnRhZztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUudGFnID0gJz8nO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZS5yZXByZXNlbnQpIHtcbiAgICAgICAgc3R5bGUgPSBzdGF0ZS5zdHlsZU1hcFt0eXBlLnRhZ10gfHwgdHlwZS5kZWZhdWx0U3R5bGU7XG5cbiAgICAgICAgaWYgKF90b1N0cmluZy5jYWxsKHR5cGUucmVwcmVzZW50KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJykge1xuICAgICAgICAgIF9yZXN1bHQgPSB0eXBlLnJlcHJlc2VudChvYmplY3QsIHN0eWxlKTtcbiAgICAgICAgfSBlbHNlIGlmIChfaGFzT3duUHJvcGVydHkuY2FsbCh0eXBlLnJlcHJlc2VudCwgc3R5bGUpKSB7XG4gICAgICAgICAgX3Jlc3VsdCA9IHR5cGUucmVwcmVzZW50W3N0eWxlXShvYmplY3QsIHN0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKCchPCcgKyB0eXBlLnRhZyArICc+IHRhZyByZXNvbHZlciBhY2NlcHRzIG5vdCBcIicgKyBzdHlsZSArICdcIiBzdHlsZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUuZHVtcCA9IF9yZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gU2VyaWFsaXplcyBgb2JqZWN0YCBhbmQgd3JpdGVzIGl0IHRvIGdsb2JhbCBgcmVzdWx0YC5cbi8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBvciBmYWxzZSBvbiBpbnZhbGlkIG9iamVjdC5cbi8vXG5mdW5jdGlvbiB3cml0ZU5vZGUoc3RhdGUsIGxldmVsLCBvYmplY3QsIGJsb2NrLCBjb21wYWN0LCBpc2tleSwgaXNibG9ja3NlcSkge1xuICBzdGF0ZS50YWcgPSBudWxsO1xuICBzdGF0ZS5kdW1wID0gb2JqZWN0O1xuXG4gIGlmICghZGV0ZWN0VHlwZShzdGF0ZSwgb2JqZWN0LCBmYWxzZSkpIHtcbiAgICBkZXRlY3RUeXBlKHN0YXRlLCBvYmplY3QsIHRydWUpO1xuICB9XG5cbiAgdmFyIHR5cGUgPSBfdG9TdHJpbmcuY2FsbChzdGF0ZS5kdW1wKTtcbiAgdmFyIGluYmxvY2sgPSBibG9jaztcbiAgdmFyIHRhZ1N0cjtcblxuICBpZiAoYmxvY2spIHtcbiAgICBibG9jayA9IChzdGF0ZS5mbG93TGV2ZWwgPCAwIHx8IHN0YXRlLmZsb3dMZXZlbCA+IGxldmVsKTtcbiAgfVxuXG4gIHZhciBvYmplY3RPckFycmF5ID0gdHlwZSA9PT0gJ1tvYmplY3QgT2JqZWN0XScgfHwgdHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICAgIGR1cGxpY2F0ZUluZGV4LFxuICAgICAgZHVwbGljYXRlO1xuXG4gIGlmIChvYmplY3RPckFycmF5KSB7XG4gICAgZHVwbGljYXRlSW5kZXggPSBzdGF0ZS5kdXBsaWNhdGVzLmluZGV4T2Yob2JqZWN0KTtcbiAgICBkdXBsaWNhdGUgPSBkdXBsaWNhdGVJbmRleCAhPT0gLTE7XG4gIH1cblxuICBpZiAoKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/JykgfHwgZHVwbGljYXRlIHx8IChzdGF0ZS5pbmRlbnQgIT09IDIgJiYgbGV2ZWwgPiAwKSkge1xuICAgIGNvbXBhY3QgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChkdXBsaWNhdGUgJiYgc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdKSB7XG4gICAgc3RhdGUuZHVtcCA9ICcqcmVmXycgKyBkdXBsaWNhdGVJbmRleDtcbiAgfSBlbHNlIHtcbiAgICBpZiAob2JqZWN0T3JBcnJheSAmJiBkdXBsaWNhdGUgJiYgIXN0YXRlLnVzZWREdXBsaWNhdGVzW2R1cGxpY2F0ZUluZGV4XSkge1xuICAgICAgc3RhdGUudXNlZER1cGxpY2F0ZXNbZHVwbGljYXRlSW5kZXhdID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICBpZiAoYmxvY2sgJiYgKE9iamVjdC5rZXlzKHN0YXRlLmR1bXApLmxlbmd0aCAhPT0gMCkpIHtcbiAgICAgICAgd3JpdGVCbG9ja01hcHBpbmcoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wLCBjb21wYWN0KTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyBzdGF0ZS5kdW1wO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3cml0ZUZsb3dNYXBwaW5nKHN0YXRlLCBsZXZlbCwgc3RhdGUuZHVtcCk7XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgJyAnICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgaWYgKGJsb2NrICYmIChzdGF0ZS5kdW1wLmxlbmd0aCAhPT0gMCkpIHtcbiAgICAgICAgaWYgKHN0YXRlLm5vQXJyYXlJbmRlbnQgJiYgIWlzYmxvY2tzZXEgJiYgbGV2ZWwgPiAwKSB7XG4gICAgICAgICAgd3JpdGVCbG9ja1NlcXVlbmNlKHN0YXRlLCBsZXZlbCAtIDEsIHN0YXRlLmR1bXAsIGNvbXBhY3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHdyaXRlQmxvY2tTZXF1ZW5jZShzdGF0ZSwgbGV2ZWwsIHN0YXRlLmR1bXAsIGNvbXBhY3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkdXBsaWNhdGUpIHtcbiAgICAgICAgICBzdGF0ZS5kdW1wID0gJyZyZWZfJyArIGR1cGxpY2F0ZUluZGV4ICsgc3RhdGUuZHVtcDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JpdGVGbG93U2VxdWVuY2Uoc3RhdGUsIGxldmVsLCBzdGF0ZS5kdW1wKTtcbiAgICAgICAgaWYgKGR1cGxpY2F0ZSkge1xuICAgICAgICAgIHN0YXRlLmR1bXAgPSAnJnJlZl8nICsgZHVwbGljYXRlSW5kZXggKyAnICcgKyBzdGF0ZS5kdW1wO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnW29iamVjdCBTdHJpbmddJykge1xuICAgICAgaWYgKHN0YXRlLnRhZyAhPT0gJz8nKSB7XG4gICAgICAgIHdyaXRlU2NhbGFyKHN0YXRlLCBzdGF0ZS5kdW1wLCBsZXZlbCwgaXNrZXksIGluYmxvY2spO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgVW5kZWZpbmVkXScpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRlLnNraXBJbnZhbGlkKSByZXR1cm4gZmFsc2U7XG4gICAgICB0aHJvdyBuZXcgZXhjZXB0aW9uKCd1bmFjY2VwdGFibGUga2luZCBvZiBhbiBvYmplY3QgdG8gZHVtcCAnICsgdHlwZSk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbCAmJiBzdGF0ZS50YWcgIT09ICc/Jykge1xuICAgICAgLy8gTmVlZCB0byBlbmNvZGUgYWxsIGNoYXJhY3RlcnMgZXhjZXB0IHRob3NlIGFsbG93ZWQgYnkgdGhlIHNwZWM6XG4gICAgICAvL1xuICAgICAgLy8gWzM1XSBucy1kZWMtZGlnaXQgICAgOjo9ICBbI3gzMC0jeDM5XSAvKiAwLTkgKi9cbiAgICAgIC8vIFszNl0gbnMtaGV4LWRpZ2l0ICAgIDo6PSAgbnMtZGVjLWRpZ2l0XG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB8IFsjeDQxLSN4NDZdIC8qIEEtRiAqLyB8IFsjeDYxLSN4NjZdIC8qIGEtZiAqL1xuICAgICAgLy8gWzM3XSBucy1hc2NpaS1sZXR0ZXIgOjo9ICBbI3g0MS0jeDVBXSAvKiBBLVogKi8gfCBbI3g2MS0jeDdBXSAvKiBhLXogKi9cbiAgICAgIC8vIFszOF0gbnMtd29yZC1jaGFyICAgIDo6PSAgbnMtZGVjLWRpZ2l0IHwgbnMtYXNjaWktbGV0dGVyIHwgXHUyMDFDLVx1MjAxRFxuICAgICAgLy8gWzM5XSBucy11cmktY2hhciAgICAgOjo9ICBcdTIwMUMlXHUyMDFEIG5zLWhleC1kaWdpdCBucy1oZXgtZGlnaXQgfCBucy13b3JkLWNoYXIgfCBcdTIwMUMjXHUyMDFEXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB8IFx1MjAxQztcdTIwMUQgfCBcdTIwMUMvXHUyMDFEIHwgXHUyMDFDP1x1MjAxRCB8IFx1MjAxQzpcdTIwMUQgfCBcdTIwMUNAXHUyMDFEIHwgXHUyMDFDJlx1MjAxRCB8IFx1MjAxQz1cdTIwMUQgfCBcdTIwMUMrXHUyMDFEIHwgXHUyMDFDJFx1MjAxRCB8IFx1MjAxQyxcdTIwMURcbiAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHwgXHUyMDFDX1x1MjAxRCB8IFx1MjAxQy5cdTIwMUQgfCBcdTIwMUMhXHUyMDFEIHwgXHUyMDFDflx1MjAxRCB8IFx1MjAxQypcdTIwMUQgfCBcdTIwMUMnXHUyMDFEIHwgXHUyMDFDKFx1MjAxRCB8IFx1MjAxQylcdTIwMUQgfCBcdTIwMUNbXHUyMDFEIHwgXHUyMDFDXVx1MjAxRFxuICAgICAgLy9cbiAgICAgIC8vIEFsc28gbmVlZCB0byBlbmNvZGUgJyEnIGJlY2F1c2UgaXQgaGFzIHNwZWNpYWwgbWVhbmluZyAoZW5kIG9mIHRhZyBwcmVmaXgpLlxuICAgICAgLy9cbiAgICAgIHRhZ1N0ciA9IGVuY29kZVVSSShcbiAgICAgICAgc3RhdGUudGFnWzBdID09PSAnIScgPyBzdGF0ZS50YWcuc2xpY2UoMSkgOiBzdGF0ZS50YWdcbiAgICAgICkucmVwbGFjZSgvIS9nLCAnJTIxJyk7XG5cbiAgICAgIGlmIChzdGF0ZS50YWdbMF0gPT09ICchJykge1xuICAgICAgICB0YWdTdHIgPSAnIScgKyB0YWdTdHI7XG4gICAgICB9IGVsc2UgaWYgKHRhZ1N0ci5zbGljZSgwLCAxOCkgPT09ICd0YWc6eWFtbC5vcmcsMjAwMjonKSB7XG4gICAgICAgIHRhZ1N0ciA9ICchIScgKyB0YWdTdHIuc2xpY2UoMTgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFnU3RyID0gJyE8JyArIHRhZ1N0ciArICc+JztcbiAgICAgIH1cblxuICAgICAgc3RhdGUuZHVtcCA9IHRhZ1N0ciArICcgJyArIHN0YXRlLmR1bXA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGdldER1cGxpY2F0ZVJlZmVyZW5jZXMob2JqZWN0LCBzdGF0ZSkge1xuICB2YXIgb2JqZWN0cyA9IFtdLFxuICAgICAgZHVwbGljYXRlc0luZGV4ZXMgPSBbXSxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGluc3BlY3ROb2RlKG9iamVjdCwgb2JqZWN0cywgZHVwbGljYXRlc0luZGV4ZXMpO1xuXG4gIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBkdXBsaWNhdGVzSW5kZXhlcy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgc3RhdGUuZHVwbGljYXRlcy5wdXNoKG9iamVjdHNbZHVwbGljYXRlc0luZGV4ZXNbaW5kZXhdXSk7XG4gIH1cbiAgc3RhdGUudXNlZER1cGxpY2F0ZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdE5vZGUob2JqZWN0LCBvYmplY3RzLCBkdXBsaWNhdGVzSW5kZXhlcykge1xuICB2YXIgb2JqZWN0S2V5TGlzdCxcbiAgICAgIGluZGV4LFxuICAgICAgbGVuZ3RoO1xuXG4gIGlmIChvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcpIHtcbiAgICBpbmRleCA9IG9iamVjdHMuaW5kZXhPZihvYmplY3QpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIGlmIChkdXBsaWNhdGVzSW5kZXhlcy5pbmRleE9mKGluZGV4KSA9PT0gLTEpIHtcbiAgICAgICAgZHVwbGljYXRlc0luZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iamVjdHMucHVzaChvYmplY3QpO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7XG4gICAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGluc3BlY3ROb2RlKG9iamVjdFtpbmRleF0sIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JqZWN0S2V5TGlzdCA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IG9iamVjdEtleUxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgIGluc3BlY3ROb2RlKG9iamVjdFtvYmplY3RLZXlMaXN0W2luZGV4XV0sIG9iamVjdHMsIGR1cGxpY2F0ZXNJbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkdW1wJDEoaW5wdXQsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgdmFyIHN0YXRlID0gbmV3IFN0YXRlKG9wdGlvbnMpO1xuXG4gIGlmICghc3RhdGUubm9SZWZzKSBnZXREdXBsaWNhdGVSZWZlcmVuY2VzKGlucHV0LCBzdGF0ZSk7XG5cbiAgdmFyIHZhbHVlID0gaW5wdXQ7XG5cbiAgaWYgKHN0YXRlLnJlcGxhY2VyKSB7XG4gICAgdmFsdWUgPSBzdGF0ZS5yZXBsYWNlci5jYWxsKHsgJyc6IHZhbHVlIH0sICcnLCB2YWx1ZSk7XG4gIH1cblxuICBpZiAod3JpdGVOb2RlKHN0YXRlLCAwLCB2YWx1ZSwgdHJ1ZSwgdHJ1ZSkpIHJldHVybiBzdGF0ZS5kdW1wICsgJ1xcbic7XG5cbiAgcmV0dXJuICcnO1xufVxuXG52YXIgZHVtcF8xID0gZHVtcCQxO1xuXG52YXIgZHVtcGVyID0ge1xuXHRkdW1wOiBkdW1wXzFcbn07XG5cbmZ1bmN0aW9uIHJlbmFtZWQoZnJvbSwgdG8pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Z1bmN0aW9uIHlhbWwuJyArIGZyb20gKyAnIGlzIHJlbW92ZWQgaW4ganMteWFtbCA0LiAnICtcbiAgICAgICdVc2UgeWFtbC4nICsgdG8gKyAnIGluc3RlYWQsIHdoaWNoIGlzIG5vdyBzYWZlIGJ5IGRlZmF1bHQuJyk7XG4gIH07XG59XG5cblxudmFyIFR5cGUgICAgICAgICAgICAgICAgPSB0eXBlO1xudmFyIFNjaGVtYSAgICAgICAgICAgICAgPSBzY2hlbWE7XG52YXIgRkFJTFNBRkVfU0NIRU1BICAgICA9IGZhaWxzYWZlO1xudmFyIEpTT05fU0NIRU1BICAgICAgICAgPSBqc29uO1xudmFyIENPUkVfU0NIRU1BICAgICAgICAgPSBjb3JlO1xudmFyIERFRkFVTFRfU0NIRU1BICAgICAgPSBfZGVmYXVsdDtcbnZhciBsb2FkICAgICAgICAgICAgICAgID0gbG9hZGVyLmxvYWQ7XG52YXIgbG9hZEFsbCAgICAgICAgICAgICA9IGxvYWRlci5sb2FkQWxsO1xudmFyIGR1bXAgICAgICAgICAgICAgICAgPSBkdW1wZXIuZHVtcDtcbnZhciBZQU1MRXhjZXB0aW9uICAgICAgID0gZXhjZXB0aW9uO1xuXG4vLyBSZS1leHBvcnQgYWxsIHR5cGVzIGluIGNhc2UgdXNlciB3YW50cyB0byBjcmVhdGUgY3VzdG9tIHNjaGVtYVxudmFyIHR5cGVzID0ge1xuICBiaW5hcnk6ICAgIGJpbmFyeSxcbiAgZmxvYXQ6ICAgICBmbG9hdCxcbiAgbWFwOiAgICAgICBtYXAsXG4gIG51bGw6ICAgICAgX251bGwsXG4gIHBhaXJzOiAgICAgcGFpcnMsXG4gIHNldDogICAgICAgc2V0LFxuICB0aW1lc3RhbXA6IHRpbWVzdGFtcCxcbiAgYm9vbDogICAgICBib29sLFxuICBpbnQ6ICAgICAgIGludCxcbiAgbWVyZ2U6ICAgICBtZXJnZSxcbiAgb21hcDogICAgICBvbWFwLFxuICBzZXE6ICAgICAgIHNlcSxcbiAgc3RyOiAgICAgICBzdHJcbn07XG5cbi8vIFJlbW92ZWQgZnVuY3Rpb25zIGZyb20gSlMtWUFNTCAzLjAueFxudmFyIHNhZmVMb2FkICAgICAgICAgICAgPSByZW5hbWVkKCdzYWZlTG9hZCcsICdsb2FkJyk7XG52YXIgc2FmZUxvYWRBbGwgICAgICAgICA9IHJlbmFtZWQoJ3NhZmVMb2FkQWxsJywgJ2xvYWRBbGwnKTtcbnZhciBzYWZlRHVtcCAgICAgICAgICAgID0gcmVuYW1lZCgnc2FmZUR1bXAnLCAnZHVtcCcpO1xuXG52YXIganNZYW1sID0ge1xuXHRUeXBlOiBUeXBlLFxuXHRTY2hlbWE6IFNjaGVtYSxcblx0RkFJTFNBRkVfU0NIRU1BOiBGQUlMU0FGRV9TQ0hFTUEsXG5cdEpTT05fU0NIRU1BOiBKU09OX1NDSEVNQSxcblx0Q09SRV9TQ0hFTUE6IENPUkVfU0NIRU1BLFxuXHRERUZBVUxUX1NDSEVNQTogREVGQVVMVF9TQ0hFTUEsXG5cdGxvYWQ6IGxvYWQsXG5cdGxvYWRBbGw6IGxvYWRBbGwsXG5cdGR1bXA6IGR1bXAsXG5cdFlBTUxFeGNlcHRpb246IFlBTUxFeGNlcHRpb24sXG5cdHR5cGVzOiB0eXBlcyxcblx0c2FmZUxvYWQ6IHNhZmVMb2FkLFxuXHRzYWZlTG9hZEFsbDogc2FmZUxvYWRBbGwsXG5cdHNhZmVEdW1wOiBzYWZlRHVtcFxufTtcblxuZXhwb3J0IGRlZmF1bHQganNZYW1sO1xuZXhwb3J0IHsgQ09SRV9TQ0hFTUEsIERFRkFVTFRfU0NIRU1BLCBGQUlMU0FGRV9TQ0hFTUEsIEpTT05fU0NIRU1BLCBTY2hlbWEsIFR5cGUsIFlBTUxFeGNlcHRpb24sIGR1bXAsIGxvYWQsIGxvYWRBbGwsIHNhZmVEdW1wLCBzYWZlTG9hZCwgc2FmZUxvYWRBbGwsIHR5cGVzIH07XG4iLCAiaW1wb3J0IHsgTW9kYWwsIFNldHRpbmcgfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlS2V5IH0gZnJvbSAnLi9pMThuJztcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb3BlblBvc3RQdWJsaXNoZWRNb2RhbChcclxuICBwbHVnaW46IFdvcmRwcmVzc1BsdWdpbixcclxuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIG5ldyBQb3N0UHVibGlzaGVkTW9kYWwocGx1Z2luLCAobW9kYWwpID0+IHtcclxuICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICBtb2RhbC5jbG9zZSgpO1xyXG4gICAgfSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBXb3JkUHJlc3MgcG9zdCBwdWJsaXNoZWQgbW9kYWwuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUG9zdFB1Ymxpc2hlZE1vZGFsIGV4dGVuZHMgTW9kYWwge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uT3BlbkNsaWNrZWQ6IChtb2RhbDogTW9kYWwpID0+IHZvaWRcclxuICApIHtcclxuICAgIHN1cGVyKGFwcCk7XHJcbiAgfVxyXG5cclxuICBvbk9wZW4oKSB7XHJcbiAgICBjb25zdCB0ID0gKGtleTogVHJhbnNsYXRlS2V5LCB2YXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBsdWdpbi5pMThuLnQoa2V5LCB2YXJzKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcblxyXG4gICAgY29udGVudEVsLmNyZWF0ZUVsKCdoMScsIHsgdGV4dDogdCgncHVibGlzaGVkTW9kYWxfdGl0bGUnKSB9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ3B1Ymxpc2hlZE1vZGFsX2NvbmZpcm1FZGl0SW5XUCcpKTtcclxuICAgIG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcclxuICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgLnNldEJ1dHRvblRleHQodCgncHVibGlzaGVkTW9kYWxfY2FuY2VsJykpXHJcbiAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgLnNldEJ1dHRvblRleHQodCgncHVibGlzaGVkTW9kYWxfb3BlbicpKVxyXG4gICAgICAgIC5zZXRDdGEoKVxyXG4gICAgICAgIC5vbkNsaWNrKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25PcGVuQ2xpY2tlZCh0aGlzKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG4gICAgY29udGVudEVsLmVtcHR5KCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgQXBwLCBNb2RhbCwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IFdvcmRwcmVzc1BsdWdpbiBmcm9tICcuL21haW4nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVLZXkgfSBmcm9tICcuL2kxOG4nO1xyXG5cclxuXHJcbmV4cG9ydCBlbnVtIENvbmZpcm1Db2RlIHtcclxuICBDYW5jZWwsXHJcbiAgQ29uZmlybVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1Nb2RhbE1lc3NhZ2VzIHtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgY2FuY2VsVGV4dD86IHN0cmluZztcclxuICBjb25maXJtVGV4dD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5Db25maXJtTW9kYWwoXHJcbiAgbWVzc2FnZXM6IENvbmZpcm1Nb2RhbE1lc3NhZ2VzLFxyXG4gIHBsdWdpbjogV29yZHByZXNzUGx1Z2luXHJcbik6IFByb21pc2U8eyBjb2RlOiBDb25maXJtQ29kZSB9PiB7XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIGNvbnN0IG1vZGFsID0gbmV3IENvbmZpcm1Nb2RhbChcclxuICAgICAgbWVzc2FnZXMsXHJcbiAgICAgIHBsdWdpbixcclxuICAgICAgKGNvZGUsIG1vZGFsKSA9PiB7XHJcbiAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICBjb2RlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbW9kYWwuY2xvc2UoKTtcclxuICAgICAgfSk7XHJcbiAgICBtb2RhbC5vcGVuKCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb25maXJtIG1vZGFsLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENvbmZpcm1Nb2RhbCBleHRlbmRzIE1vZGFsIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VzOiBDb25maXJtTW9kYWxNZXNzYWdlcyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uQWN0aW9uOiAoY29kZTogQ29uZmlybUNvZGUsIG1vZGFsOiBNb2RhbCkgPT4gdm9pZFxyXG4gICkge1xyXG4gICAgc3VwZXIoYXBwKTtcclxuICB9XHJcblxyXG4gIG9uT3BlbigpIHtcclxuICAgIGNvbnN0IHQgPSAoa2V5OiBUcmFuc2xhdGVLZXksIHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmkxOG4udChrZXksIHZhcnMpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuXHJcbiAgICBjb250ZW50RWwuY3JlYXRlRWwoJ2gxJywgeyB0ZXh0OiB0KCdjb25maXJtTW9kYWxfdGl0bGUnKSB9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHRoaXMubWVzc2FnZXMubWVzc2FnZSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgICAuYWRkQnV0dG9uKGJ1dHRvbiA9PiBidXR0b25cclxuICAgICAgICAuc2V0QnV0dG9uVGV4dCh0aGlzLm1lc3NhZ2VzLmNhbmNlbFRleHQgPz8gdCgnY29uZmlybU1vZGFsX2NhbmNlbCcpKVxyXG4gICAgICAgIC5vbkNsaWNrKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMub25BY3Rpb24oQ29uZmlybUNvZGUuQ2FuY2VsLCB0aGlzKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5hZGRCdXR0b24oYnV0dG9uID0+IGJ1dHRvblxyXG4gICAgICAgIC5zZXRCdXR0b25UZXh0KHRoaXMubWVzc2FnZXMuY29uZmlybVRleHQgPz8gdCgnY29uZmlybU1vZGFsX2NvbmZpcm0nKSlcclxuICAgICAgICAuc2V0Q3RhKClcclxuICAgICAgICAub25DbGljaygoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uQWN0aW9uKENvbmZpcm1Db2RlLkNvbmZpcm0sIHRoaXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuICB9XHJcblxyXG59XHJcbiIsICJpbXBvcnQgeyByZXF1ZXN0VXJsIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5cclxuaW50ZXJmYWNlIFJlc3RPcHRpb25zIHtcclxuICB1cmw6IFVSTDtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlc3RDbGllbnQge1xyXG5cclxuICAvKipcclxuICAgKiBIcmVmIHdpdGhvdXQgJy8nIGF0IHRoZSB2ZXJ5IGVuZC5cclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaHJlZjogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogUmVzdE9wdGlvbnNcclxuICApIHtcclxuICAgIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cclxuICAgIHRoaXMuaHJlZiA9IHRoaXMub3B0aW9ucy51cmwuaHJlZjtcclxuICAgIGlmICh0aGlzLmhyZWYuZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICB0aGlzLmhyZWYgPSB0aGlzLmhyZWYuc3Vic3RyaW5nKDAsIHRoaXMuaHJlZi5sZW5ndGggLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGh0dHBHZXQoXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgICB9XHJcbiAgKTogUHJvbWlzZTx1bmtub3duPiB7XHJcbiAgICBsZXQgcmVhbFBhdGggPSBwYXRoO1xyXG4gICAgaWYgKHJlYWxQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xyXG4gICAgICByZWFsUGF0aCA9IHJlYWxQYXRoLnN1YnN0cmluZygxKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke3RoaXMuaHJlZn0vJHtyZWFsUGF0aH1gO1xyXG4gICAgY29uc3Qgb3B0cyA9IHtcclxuICAgICAgaGVhZGVyczoge30sXHJcbiAgICAgIC4uLm9wdGlvbnNcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdSRVNUIEdFVCcsIGVuZHBvaW50LCBvcHRzKTtcclxuICAgIHJldHVybiByZXF1ZXN0VXJsKHtcclxuICAgICAgdXJsOiBlbmRwb2ludCxcclxuICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2JzaWRpYW4ubWQnLFxyXG4gICAgICAgIC4uLm9wdHMuaGVhZGVyc1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0dFVCByZXNwb25zZScsIHJlc3BvbnNlKTtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbjtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBodHRwUG9zdChcclxuICAgIHBhdGg6IHN0cmluZyxcclxuICAgIGJvZHk6IHVua25vd24sXHJcbiAgICBvcHRpb25zPzoge1xyXG4gICAgICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgICB9KTogUHJvbWlzZTx1bmtub3duPiB7XHJcbiAgICBsZXQgcmVhbFBhdGggPSBwYXRoO1xyXG4gICAgaWYgKHJlYWxQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xyXG4gICAgICByZWFsUGF0aCA9IHJlYWxQYXRoLnN1YnN0cmluZygxKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke3RoaXMuaHJlZn0vJHtyZWFsUGF0aH1gO1xyXG4gICAgY29uc3Qgb3B0cyA9IHtcclxuICAgICAgaGVhZGVyczoge30sXHJcbiAgICAgIC4uLm9wdGlvbnNcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdSRVNUIFBPU1QnLCBlbmRwb2ludCwgb3B0cyk7XHJcbiAgICByZXR1cm4gcmVxdWVzdFVybCh7XHJcbiAgICAgIHVybDogZW5kcG9pbnQsXHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAnVXNlci1BZ2VudCc6ICdvYnNpZGlhbi5tZCcsXHJcbiAgICAgICAgLi4ub3B0cy5oZWFkZXJzXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGJvZHkpXHJcbiAgICB9KVxyXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1BPU1QgcmVzcG9uc2UnLCByZXNwb25zZSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb247XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwgImltcG9ydCB7XHJcbiAgV29yZFByZXNzQXV0aFBhcmFtcyxcclxuICBXb3JkUHJlc3NDbGllbnRSZXN1bHQsXHJcbiAgV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZSxcclxuICBXb3JkUHJlc3NQb3N0UGFyYW1zXHJcbn0gZnJvbSAnLi93cC1jbGllbnQnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdFdvcmRQcmVzc0NsaWVudCB9IGZyb20gJy4vYWJzdHJhY3Qtd3AtY2xpZW50JztcclxuaW1wb3J0IFdvcmRwcmVzc1BsdWdpbiBmcm9tICcuL21haW4nO1xyXG5pbXBvcnQgeyBUZXJtIH0gZnJvbSAnLi93cC1hcGknO1xyXG5pbXBvcnQgeyBSZXN0Q2xpZW50IH0gZnJvbSAnLi9yZXN0LWNsaWVudCc7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzRnVuY3Rpb24sIGlzU3RyaW5nLCB0ZW1wbGF0ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IFNhZmVBbnkgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgV3BSZXN0Q2xpZW50IGV4dGVuZHMgQWJzdHJhY3RXb3JkUHJlc3NDbGllbnQge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudDogUmVzdENsaWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICByZWFkb25seSBwbHVnaW46IFdvcmRwcmVzc1BsdWdpbixcclxuICAgIHJlYWRvbmx5IHByb2ZpbGU6IFdwUHJvZmlsZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dDogV3BSZXN0Q2xpZW50Q29udGV4dFxyXG4gICkge1xyXG4gICAgc3VwZXIocGx1Z2luLCBwcm9maWxlKTtcclxuICAgIHRoaXMuY2xpZW50ID0gbmV3IFJlc3RDbGllbnQoe1xyXG4gICAgICB1cmw6IG5ldyBVUkwoZ2V0VXJsKHRoaXMuY29udGV4dC5lbmRwb2ludHM/LmJhc2UsIHByb2ZpbGUuZW5kcG9pbnQpKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgb3BlbkxvZ2luTW9kYWwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5jb250ZXh0Lm9wZW5Mb2dpbk1vZGFsICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5vcGVuTG9naW5Nb2RhbDtcclxuICAgIH1cclxuICAgIHJldHVybiAgc3VwZXIub3BlbkxvZ2luTW9kYWwoKTtcclxuICB9XHJcblxyXG4gIHB1Ymxpc2goXHJcbiAgICB0aXRsZTogc3RyaW5nLFxyXG4gICAgY29udGVudDogc3RyaW5nLFxyXG4gICAgcG9zdFBhcmFtczogV29yZFByZXNzUG9zdFBhcmFtcyxcclxuICAgIGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zXHJcbiAgKTogUHJvbWlzZTxXb3JkUHJlc3NDbGllbnRSZXN1bHQ+IHtcclxuICAgIGxldCB1cmw6IHN0cmluZztcclxuICAgIGlmIChwb3N0UGFyYW1zLnBvc3RJZCkge1xyXG4gICAgICB1cmwgPSBnZXRVcmwodGhpcy5jb250ZXh0LmVuZHBvaW50cz8uZWRpdFBvc3QsICd3cC1qc29uL3dwL3YyL3Bvc3RzLzwlPSBwb3N0SWQgJT4nLCB7XHJcbiAgICAgICAgcG9zdElkOiBwb3N0UGFyYW1zLnBvc3RJZFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCA9IGdldFVybCh0aGlzLmNvbnRleHQuZW5kcG9pbnRzPy5uZXdQb3N0LCAnd3AtanNvbi93cC92Mi9wb3N0cycpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuY2xpZW50Lmh0dHBQb3N0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZSxcclxuICAgICAgICBjb250ZW50LFxyXG4gICAgICAgIHN0YXR1czogcG9zdFBhcmFtcy5zdGF0dXMsXHJcbiAgICAgICAgY29tbWVudF9zdGF0dXM6IHBvc3RQYXJhbXMuY29tbWVudFN0YXR1cyxcclxuICAgICAgICBjYXRlZ29yaWVzOiBwb3N0UGFyYW1zLmNhdGVnb3JpZXMsXHJcbiAgICAgICAgdGFnczogcG9zdFBhcmFtcy50YWdzID8/IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbnRleHQuZ2V0SGVhZGVycyhjZXJ0aWZpY2F0ZSlcclxuICAgICAgfSlcclxuICAgICAgLnRoZW4oKHJlc3A6IFNhZmVBbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygnV3BSZXN0Q2xpZW50IHJlc3BvbnNlJywgcmVzcCk7XHJcbiAgICAgICAgaWYgKHJlc3AuY29kZSAmJiByZXNwLm1lc3NhZ2UpIHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvZGU6IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuRXJyb3IsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICBjb2RlOiByZXNwLmNvZGUsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogcmVzcC5tZXNzYWdlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzcC5pZCB8fCByZXNwLklEKSB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLk9LLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgcG9zdElkOiBwb3N0UGFyYW1zLnBvc3RJZCA/PyAocmVzcC5pZCA/PyByZXNwLklEKSxcclxuICAgICAgICAgICAgICBjYXRlZ29yaWVzOiBwb3N0UGFyYW1zLmNhdGVnb3JpZXMgPz8gcmVzcC5jYXRlZ29yaWVzXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLkVycm9yLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgY29kZTogNTAwLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucGx1Z2luLmkxOG4udCgnZXJyb3JfY2Fubm90UGFyc2VSZXNwb25zZScpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yaWVzKGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUHJvbWlzZTxUZXJtW10+IHtcclxuICAgIHJldHVybiB0aGlzLmNsaWVudC5odHRwR2V0KFxyXG4gICAgICBnZXRVcmwodGhpcy5jb250ZXh0LmVuZHBvaW50cz8uZ2V0Q2F0ZWdvcmllcywgJ3dwLWpzb24vd3AvdjIvY2F0ZWdvcmllcycpLFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb250ZXh0LmdldEhlYWRlcnMoY2VydGlmaWNhdGUpXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgIGlmIChpc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgICByZXR1cm4gZGF0YSBhcyBUZXJtW10gPz8gW107XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICgoZGF0YSBhcyBTYWZlQW55KS5oYXNPd25Qcm9wZXJ0eSgnZm91bmQnKSkge1xyXG4gICAgICAgICAgICAvLyByZXR1cm5zIGJ5IHdvcmRwcmVzcy5jb21cclxuICAgICAgICAgICAgcmV0dXJuIChkYXRhIGFzIFNhZmVBbnkpXHJcbiAgICAgICAgICAgICAgLmNhdGVnb3JpZXNcclxuICAgICAgICAgICAgICAubWFwKChpdDogVGVybSAmIHsgSUQ6IG51bWJlciB9KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgLi4uaXQsXHJcbiAgICAgICAgICAgICAgICBpZDogU3RyaW5nKGl0LklEKVxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlVXNlcihjZXJ0aWZpY2F0ZTogV29yZFByZXNzQXV0aFBhcmFtcyk6IFByb21pc2U8V29yZFByZXNzQ2xpZW50UmVzdWx0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuaHR0cEdldChcclxuICAgICAgZ2V0VXJsKHRoaXMuY29udGV4dC5lbmRwb2ludHM/LnZhbGlkYXRlVXNlciwgYHdwLWpzb24vd3AvdjIvdXNlcnM/c2VhcmNoPXh4eGApLFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb250ZXh0LmdldEhlYWRlcnMoY2VydGlmaWNhdGUpXHJcbiAgICAgIH0pXHJcbiAgICAgIC50aGVuKGRhdGEgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLk9LLFxyXG4gICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgIHJlc3BvbnNlOiBkYXRhXHJcbiAgICAgICAgfTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGNvZGU6IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuRXJyb3IsXHJcbiAgICAgICAgICBkYXRhOiB0aGlzLnBsdWdpbi5pMThuLnQoJ2Vycm9yX2ludmFsaWRVc2VyJylcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRhZyhuYW1lOiBzdHJpbmcsIGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUHJvbWlzZTxUZXJtPiB7XHJcbiAgICBjb25zdCBleGlzdHM6IFRlcm1bXSA9IGF3YWl0IHRoaXMuY2xpZW50Lmh0dHBHZXQoXHJcbiAgICAgIGdldFVybCh0aGlzLmNvbnRleHQuZW5kcG9pbnRzPy5nZXRUYWcsICd3cC1qc29uL3dwL3YyL3RhZ3M/bnVtYmVyPTEmc2VhcmNoPTwlPSBuYW1lICU+Jywge1xyXG4gICAgICAgIG5hbWVcclxuICAgICAgfSksXHJcbiAgICApXHJcbiAgICAgIC50aGVuKChkYXRhOiBTYWZlQW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1dwUmVzdENsaWVudCBnZXRUYWdzIHJlc3BvbnNlJywgZGF0YSk7XHJcbiAgICAgICAgaWYgKGlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICAgIHJldHVybiBkYXRhIGFzIFRlcm1bXSA/PyBbXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKChkYXRhIGFzIFNhZmVBbnkpLmhhc093blByb3BlcnR5KCdmb3VuZCcpKSB7XHJcbiAgICAgICAgICAgIC8vIHJldHVybnMgYnkgd29yZHByZXNzLmNvbVxyXG4gICAgICAgICAgICByZXR1cm4gKGRhdGEgYXMgU2FmZUFueSlcclxuICAgICAgICAgICAgICAudGFnc1xyXG4gICAgICAgICAgICAgIC5tYXAoKGl0OiBUZXJtICYgeyBJRDogbnVtYmVyIH0pID0+ICh7XHJcbiAgICAgICAgICAgICAgICAuLi5pdCxcclxuICAgICAgICAgICAgICAgIGlkOiBTdHJpbmcoaXQuSUQpXHJcbiAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKGV4aXN0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY2xpZW50Lmh0dHBQb3N0KFxyXG4gICAgICAgIGdldFVybCh0aGlzLmNvbnRleHQuZW5kcG9pbnRzPy5uZXdUYWcsICd3cC1qc29uL3dwL3YyL3RhZ3MnKSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbnRleHQuZ2V0SGVhZGVycyhjZXJ0aWZpY2F0ZSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50aGVuKChyZXNwOiBTYWZlQW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnV3BSZXN0Q2xpZW50IG5ld1RhZyByZXNwb25zZScsIHJlc3ApO1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4ucmVzcCxcclxuICAgICAgICAgICAgaWQ6IHJlc3AuaWQgPz8gcmVzcC5JRFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBleGlzdHNbMF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxudHlwZSBVcmxHZXR0ZXIgPSAoKSA9PiBzdHJpbmc7XHJcblxyXG5mdW5jdGlvbiBnZXRVcmwoXHJcbiAgdXJsOiBzdHJpbmcgfCBVcmxHZXR0ZXIgfCB1bmRlZmluZWQsXHJcbiAgZGVmYXVsdFZhbHVlOiBzdHJpbmcsXHJcbiAgcGFyYW1zPzogeyBbcDogc3RyaW5nXTogc3RyaW5nIH1cclxuKTogc3RyaW5nIHtcclxuICBsZXQgcmVzdWx0VXJsOiBzdHJpbmc7XHJcbiAgaWYgKGlzU3RyaW5nKHVybCkpIHtcclxuICAgIHJlc3VsdFVybCA9IHVybDtcclxuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24odXJsKSkge1xyXG4gICAgcmVzdWx0VXJsID0gdXJsKCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJlc3VsdFVybCA9IGRlZmF1bHRWYWx1ZTtcclxuICB9XHJcbiAgaWYgKHBhcmFtcykge1xyXG4gICAgY29uc3QgY29tcGlsZWQgPSB0ZW1wbGF0ZShyZXN1bHRVcmwpO1xyXG4gICAgcmV0dXJuIGNvbXBpbGVkKHBhcmFtcyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiByZXN1bHRVcmw7XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgV3BSZXN0Q2xpZW50Q29udGV4dCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG5cclxuICBlbmRwb2ludHM/OiB7XHJcbiAgICBiYXNlPzogc3RyaW5nIHwgVXJsR2V0dGVyO1xyXG4gICAgbmV3UG9zdD86IHN0cmluZyB8IFVybEdldHRlcjtcclxuICAgIGVkaXRQb3N0Pzogc3RyaW5nIHwgVXJsR2V0dGVyO1xyXG4gICAgZ2V0Q2F0ZWdvcmllcz86IHN0cmluZyB8IFVybEdldHRlcjtcclxuICAgIG5ld1RhZz86IHN0cmluZyB8IFVybEdldHRlcjtcclxuICAgIGdldFRhZz86IHN0cmluZyB8IFVybEdldHRlcjtcclxuICAgIHZhbGlkYXRlVXNlcj86IHN0cmluZyB8IFVybEdldHRlcjtcclxuICB9O1xyXG5cclxuICBvcGVuTG9naW5Nb2RhbD86IGJvb2xlYW47XHJcblxyXG4gIGdldEhlYWRlcnMod3A6IFdvcmRQcmVzc0F1dGhQYXJhbXMpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdwUmVzdENsaWVudE1pbmlPcmFuZ2VDb250ZXh0IGltcGxlbWVudHMgV3BSZXN0Q2xpZW50Q29udGV4dCB7XHJcbiAgbmFtZSA9ICdXcFJlc3RDbGllbnRNaW5pT3JhbmdlQ29udGV4dCc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc29sZS5sb2coYCR7dGhpcy5uYW1lfSBsb2FkZWRgKTtcclxuICB9XHJcblxyXG4gIGdldEhlYWRlcnMod3A6IFdvcmRQcmVzc0F1dGhQYXJhbXMpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJhc2ljICR7QnVmZmVyLmZyb20oYCR7d3AudXNlcm5hbWV9OiR7d3AucGFzc3dvcmR9YCkudG9TdHJpbmcoJ2Jhc2U2NCcpfWBcclxuICAgIH07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV3BSZXN0Q2xpZW50QXBwUGFzc3dvcmRDb250ZXh0IGltcGxlbWVudHMgV3BSZXN0Q2xpZW50Q29udGV4dCB7XHJcbiAgbmFtZSA9ICdXcFJlc3RDbGllbnRBcHBQYXNzd29yZENvbnRleHQnO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGNvbnNvbGUubG9nKGAke3RoaXMubmFtZX0gbG9hZGVkYCk7XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJzKHdwOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCYXNpYyAke0J1ZmZlci5mcm9tKGAke3dwLnVzZXJuYW1lfToke3dwLnBhc3N3b3JkfWAsICd1dGYtOCcpLnRvU3RyaW5nKCdiYXNlNjQnKX1gXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdwUmVzdENsaWVudFdwQ29tT0F1dGgyQ29udGV4dCBpbXBsZW1lbnRzIFdwUmVzdENsaWVudENvbnRleHQge1xyXG4gIG5hbWUgPSAnV3BSZXN0Q2xpZW50V3BDb21PQXV0aDJDb250ZXh0JztcclxuXHJcbiAgb3BlbkxvZ2luTW9kYWwgPSBmYWxzZTtcclxuXHJcbiAgZW5kcG9pbnRzID0ge1xyXG4gICAgYmFzZTogJ2h0dHBzOi8vcHVibGljLWFwaS53b3JkcHJlc3MuY29tJyxcclxuICAgIG5ld1Bvc3Q6ICgpID0+IGAvcmVzdC92MS9zaXRlcy8ke3RoaXMuc2l0ZX0vcG9zdHMvbmV3YCxcclxuICAgIGVkaXRQb3N0OiAoKSA9PiBgL3Jlc3QvdjEvc2l0ZXMvJHt0aGlzLnNpdGV9L3Bvc3RzLzwlPSBwb3N0SWQgJT5gLFxyXG4gICAgZ2V0Q2F0ZWdvcmllczogKCkgPT4gYC9yZXN0L3YxL3NpdGVzLyR7dGhpcy5zaXRlfS9jYXRlZ29yaWVzYCxcclxuICAgIG5ld1RhZzogKCkgPT4gYC9yZXN0L3YxL3NpdGVzLyR7dGhpcy5zaXRlfS90YWdzL25ld2AsXHJcbiAgICBnZXRUYWc6ICgpID0+IGAvcmVzdC92MS9zaXRlcy8ke3RoaXMuc2l0ZX0vdGFncz9udW1iZXI9MSZzZWFyY2g9PCU9IG5hbWUgJT5gLFxyXG4gICAgdmFsaWRhdGVVc2VyOiAoKSA9PiBgL3Jlc3QvdjEvc2l0ZXMvJHt0aGlzLnNpdGV9L3Bvc3RzP251bWJlcj0xYCxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2l0ZTogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY2Nlc3NUb2tlbjogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBjb25zb2xlLmxvZyhgJHt0aGlzLm5hbWV9IGxvYWRlZGApO1xyXG4gIH1cclxuXHJcbiAgZ2V0SGVhZGVycyh3cDogV29yZFByZXNzQXV0aFBhcmFtcyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQkVBUkVSICR7dGhpcy5hY2Nlc3NUb2tlbn1gXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHsgZ2VuZXJhdGVRdWVyeVN0cmluZywgb3BlbldpdGhCcm93c2VyIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IHJlcXVlc3RVcmwgfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCB7IFdvcmRQcmVzc0NsaWVudFJlc3VsdCwgV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZSB9IGZyb20gJy4vd3AtY2xpZW50JztcclxuaW1wb3J0IFdvcmRwcmVzc1BsdWdpbiBmcm9tICcuL21haW4nO1xyXG5pbXBvcnQge1xyXG4gIFdQX09BVVRIMl9BVVRIT1JJWkVfRU5EUE9JTlQsXHJcbiAgV1BfT0FVVEgyX0NMSUVOVF9JRCxcclxuICBXUF9PQVVUSDJfQ0xJRU5UX1NFQ1JFVCxcclxuICBXUF9PQVVUSDJfVE9LRU5fRU5EUE9JTlQsXHJcbiAgV1BfT0FVVEgyX1ZBTElEQVRFX1RPS0VOX0VORFBPSU5UXHJcbn0gZnJvbSAnLi9jb25zdHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPQXV0aDJUb2tlbiB7XHJcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3JkUHJlc3NPQXV0aDJUb2tlbiBleHRlbmRzIE9BdXRoMlRva2VuIHtcclxuICB0b2tlblR5cGU6IHN0cmluZztcclxuICBibG9nSWQ6IHN0cmluZztcclxuICBibG9nVXJsOiBzdHJpbmc7XHJcbiAgc2NvcGU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHZXRBdXRob3JpemVDb2RlUGFyYW1zIHtcclxuICByZWRpcmVjdFVyaTogc3RyaW5nO1xyXG4gIHNjb3BlPzogc3RyaW5nW107XHJcbiAgYmxvZz86IHN0cmluZztcclxuICBjb2RlVmVyaWZpZXI/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0VG9rZW5QYXJhbXMge1xyXG4gIGNvZGU6IHN0cmluZztcclxuICByZWRpcmVjdFVyaTogc3RyaW5nO1xyXG4gIGNvZGVWZXJpZmllcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0ZVRva2VuUGFyYW1zIHtcclxuICB0b2tlbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoMk9wdGlvbnMge1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgY2xpZW50U2VjcmV0OiBzdHJpbmc7XHJcbiAgdG9rZW5FbmRwb2ludDogc3RyaW5nO1xyXG4gIGF1dGhvcml6ZUVuZHBvaW50OiBzdHJpbmc7XHJcbiAgdmFsaWRhdGVUb2tlbkVuZHBvaW50Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT0F1dGgyQ2xpZW50IHtcclxuXHJcbiAgc3RhdGljIGdldFdwT0F1dGgyQ2xpZW50KHBsdWdpbjogV29yZHByZXNzUGx1Z2luKTogT0F1dGgyQ2xpZW50IHtcclxuICAgIHJldHVybiBuZXcgT0F1dGgyQ2xpZW50KHtcclxuICAgICAgY2xpZW50SWQ6IFdQX09BVVRIMl9DTElFTlRfSUQsXHJcbiAgICAgIGNsaWVudFNlY3JldDogV1BfT0FVVEgyX0NMSUVOVF9TRUNSRVQsXHJcbiAgICAgIHRva2VuRW5kcG9pbnQ6IFdQX09BVVRIMl9UT0tFTl9FTkRQT0lOVCxcclxuICAgICAgYXV0aG9yaXplRW5kcG9pbnQ6IFdQX09BVVRIMl9BVVRIT1JJWkVfRU5EUE9JTlQsXHJcbiAgICAgIHZhbGlkYXRlVG9rZW5FbmRwb2ludDogV1BfT0FVVEgyX1ZBTElEQVRFX1RPS0VOX0VORFBPSU5UXHJcbiAgICB9LCBwbHVnaW4pO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IE9BdXRoMk9wdGlvbnMsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbjogV29yZHByZXNzUGx1Z2luXHJcbiAgKSB7XHJcbiAgICBjb25zb2xlLmxvZyhvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldEF1dGhvcml6ZUNvZGUocGFyYW1zOiBHZXRBdXRob3JpemVDb2RlUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBxdWVyeToge1xyXG4gICAgICBjbGllbnRfaWQ6IHN0cmluZztcclxuICAgICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnO1xyXG4gICAgICByZWRpcmVjdF91cmk6IHN0cmluZztcclxuICAgICAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kPzogJ3BsYWluJyB8ICdTMjU2JztcclxuICAgICAgY29kZV9jaGFsbGVuZ2U/OiBzdHJpbmc7XHJcbiAgICAgIGJsb2c/OiBzdHJpbmc7XHJcbiAgICAgIHNjb3BlPzogc3RyaW5nO1xyXG4gICAgfSA9IHtcclxuICAgICAgY2xpZW50X2lkOiB0aGlzLm9wdGlvbnMuY2xpZW50SWQsXHJcbiAgICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJyxcclxuICAgICAgcmVkaXJlY3RfdXJpOiBwYXJhbXMucmVkaXJlY3RVcmksXHJcbiAgICAgIGJsb2c6IHBhcmFtcy5ibG9nLFxyXG4gICAgICBzY29wZTogdW5kZWZpbmVkXHJcbiAgICB9O1xyXG4gICAgaWYgKHBhcmFtcy5zY29wZSkge1xyXG4gICAgICBxdWVyeS5zY29wZSA9IHBhcmFtcy5zY29wZS5qb2luKCcgJyk7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyYW1zLmNvZGVWZXJpZmllcikge1xyXG4gICAgICBjb25zdCBjb2RlQ2hhbGxlbmdlID0gYXdhaXQgZ2V0Q29kZUNoYWxsZW5nZShwYXJhbXMuY29kZVZlcmlmaWVyKTtcclxuICAgICAgcXVlcnkuY29kZV9jaGFsbGVuZ2VfbWV0aG9kID0gY29kZUNoYWxsZW5nZT8uWzBdO1xyXG4gICAgICBxdWVyeS5jb2RlX2NoYWxsZW5nZSA9IGNvZGVDaGFsbGVuZ2U/LlsxXTtcclxuICAgIH1cclxuICAgIG9wZW5XaXRoQnJvd3Nlcih0aGlzLm9wdGlvbnMuYXV0aG9yaXplRW5kcG9pbnQsIHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIGdldFRva2VuKHBhcmFtczogR2V0VG9rZW5QYXJhbXMpOiBQcm9taXNlPFdvcmRQcmVzc09BdXRoMlRva2VuPiB7XHJcbiAgICBjb25zdCBib2R5OiB7XHJcbiAgICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnO1xyXG4gICAgICBjbGllbnRfaWQ6IHN0cmluZztcclxuICAgICAgY29kZTogc3RyaW5nO1xyXG4gICAgICByZWRpcmVjdF91cmk6IHN0cmluZztcclxuICAgIH0gPSB7XHJcbiAgICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxyXG4gICAgICBjbGllbnRfaWQ6IHRoaXMub3B0aW9ucy5jbGllbnRJZCxcclxuICAgICAgY29kZTogcGFyYW1zLmNvZGUsXHJcbiAgICAgIHJlZGlyZWN0X3VyaTogcGFyYW1zLnJlZGlyZWN0VXJpXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHJlcXVlc3RVcmwoe1xyXG4gICAgICB1cmw6IHRoaXMub3B0aW9ucy50b2tlbkVuZHBvaW50LFxyXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcclxuICAgICAgICAnVXNlci1BZ2VudCc6ICdvYnNpZGlhbi5tZCdcclxuICAgICAgfSxcclxuICAgICAgYm9keTogZ2VuZXJhdGVRdWVyeVN0cmluZyhib2R5KVxyXG4gICAgfSlcclxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdnZXRUb2tlbiByZXNwb25zZScsIHJlc3BvbnNlKTtcclxuICAgICAgICBjb25zdCByZXNwID0gcmVzcG9uc2UuanNvbjtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgYWNjZXNzVG9rZW46IHJlc3AuYWNjZXNzX3Rva2VuLFxyXG4gICAgICAgICAgdG9rZW5UeXBlOiByZXNwLnRva2VuX3R5cGUsXHJcbiAgICAgICAgICBibG9nSWQ6IHJlc3AuYmxvZ19pZCxcclxuICAgICAgICAgIGJsb2dVcmw6IHJlc3AuYmxvZ191cmwsXHJcbiAgICAgICAgICBzY29wZTogcmVzcC5zY29wZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVUb2tlbihwYXJhbXM6IFZhbGlkYXRlVG9rZW5QYXJhbXMpOiBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdD4ge1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMudmFsaWRhdGVUb2tlbkVuZHBvaW50KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gdmFsaWRhdGUgdG9rZW4gZW5kcG9pbnQgc2V0LicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcXVlc3RVcmwoe1xyXG4gICAgICB1cmw6IGAke3RoaXMub3B0aW9ucy52YWxpZGF0ZVRva2VuRW5kcG9pbnR9P2NsaWVudF9pZD0ke3RoaXMub3B0aW9ucy5jbGllbnRJZH0mdG9rZW49JHtwYXJhbXMudG9rZW59YCxcclxuICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2JzaWRpYW4ubWQnXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZygndmFsaWRhdGVUb2tlbiByZXNwb25zZScsIHJlc3BvbnNlKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5PSyxcclxuICAgICAgICAgIGRhdGE6ICdkb25lJ1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGNvZGU6IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuRXJyb3IsXHJcbiAgICAgICAgICBkYXRhOiB0aGlzLnBsdWdpbi5pMThuLnQoJ2Vycm9yX2ludmFsaWRXcENvbVRva2VuJylcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNvZGVWZXJpZmllcigpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGFyciA9IG5ldyBVaW50OEFycmF5KDMyKTtcclxuICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7XHJcbiAgcmV0dXJuIGJhc2U2NFVybChhcnIpO1xyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBnZXRDb2RlQ2hhbGxlbmdlKGNvZGVWZXJpZmllcjogc3RyaW5nKTogUHJvbWlzZTxbJ3BsYWluJyB8ICdTMjU2Jywgc3RyaW5nXT4ge1xyXG4gIHJldHVybiBbJ1MyNTYnLCBiYXNlNjRVcmwoYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ1NIQS0yNTYnLCBzdHJpbmdUb0J1ZmZlcihjb2RlVmVyaWZpZXIpKSldO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzdHJpbmdUb0J1ZmZlcihpbnB1dDogc3RyaW5nKTogQXJyYXlCdWZmZXIge1xyXG4gIGNvbnN0IGJ1ZiA9IG5ldyBVaW50OEFycmF5KGlucHV0Lmxlbmd0aCk7XHJcbiAgZm9yKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICBidWZbaV0gPSBpbnB1dC5jaGFyQ29kZUF0KGkpICYgMHhGRjtcclxuICB9XHJcbiAgcmV0dXJuIGJ1ZjtcclxufVxyXG5cclxuZnVuY3Rpb24gYmFzZTY0VXJsKGJ1ZjogQXJyYXlCdWZmZXIpOiBzdHJpbmcge1xyXG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUoLi4ubmV3IFVpbnQ4QXJyYXkoYnVmKSkpXHJcbiAgICAucmVwbGFjZSgvXFwrL2csICctJylcclxuICAgIC5yZXBsYWNlKC9cXC8vZywgJ18nKVxyXG4gICAgLnJlcGxhY2UoLz0rJC8sICcnKTtcclxufVxyXG4iLCAiaW1wb3J0IHsgYWRkSWNvbiB9IGZyb20gJ29ic2lkaWFuJztcclxuXHJcbmNvbnN0IGljb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xyXG4gICd3cC1sb2dvJzogYFxyXG48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDEwMCAxMDBcIj5cclxuICA8ZyBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICA8cGF0aCBkPVwiTSA3LjEwOTM3NSA1MCBDIDcuMTA5Mzc1IDY2Ljk3NjU2MiAxNi45NzY1NjIgODEuNjQ4NDM4IDMxLjI4MTI1IDg4LjYwMTU2MiBMIDEwLjgyMDMxMiAzMi41NDI5NjkgQyA4LjQ0MTQwNiAzNy44Nzg5MDYgNy4xMDkzNzUgNDMuNzgxMjUgNy4xMDkzNzUgNTAgWiBNIDcuMTA5Mzc1IDUwIFwiLz5cclxuICAgIDxwYXRoIGQ9XCJNIDc4Ljk1NzAzMSA0Ny44MzU5MzggQyA3OC45NTcwMzEgNDIuNTM1MTU2IDc3LjA1NDY4OCAzOC44NjMyODEgNzUuNDIxODc1IDM2LjAwMzkwNiBDIDczLjI0NjA5NCAzMi40NzI2NTYgNzEuMjA3MDMxIDI5LjQ4MDQ2OSA3MS4yMDcwMzEgMjUuOTQ1MzEyIEMgNzEuMjA3MDMxIDIyLjAwMzkwNiA3NC4xOTkyMTkgMTguMzMyMDMxIDc4LjQxMDE1NiAxOC4zMzIwMzEgQyA3OC42MDE1NjIgMTguMzMyMDMxIDc4Ljc4MTI1IDE4LjM1NTQ2OSA3OC45Njg3NSAxOC4zNjcxODggQyA3MS4zMzU5MzggMTEuMzc1IDYxLjE2Nzk2OSA3LjEwNTQ2OSA1MCA3LjEwNTQ2OSBDIDM1LjAxNTYyNSA3LjEwNTQ2OSAyMS44MzIwMzEgMTQuNzk2ODc1IDE0LjE2NDA2MiAyNi40NDE0MDYgQyAxNS4xNjc5NjkgMjYuNDcyNjU2IDE2LjExNzE4OCAyNi40OTIxODggMTYuOTIxODc1IDI2LjQ5MjE4OCBDIDIxLjQxMDE1NiAyNi40OTIxODggMjguMzU1NDY5IDI1Ljk0OTIxOSAyOC4zNTU0NjkgMjUuOTQ5MjE5IEMgMzAuNjY3OTY5IDI1LjgxMjUgMzAuOTQxNDA2IDI5LjIwNzAzMSAyOC42Mjg5MDYgMjkuNDgwNDY5IEMgMjguNjI4OTA2IDI5LjQ4MDQ2OSAyNi4zMDQ2ODggMjkuNzUzOTA2IDIzLjcyMjY1NiAyOS44OTA2MjUgTCAzOS4zMzk4NDQgNzYuMzUxNTYyIEwgNDguNzI2NTYyIDQ4LjE5OTIxOSBMIDQyLjA0Mjk2OSAyOS44ODY3MTkgQyAzOS43MzQzNzUgMjkuNzUzOTA2IDM3LjU0Njg3NSAyOS40ODA0NjkgMzcuNTQ2ODc1IDI5LjQ4MDQ2OSBDIDM1LjIzNDM3NSAyOS4zNDM3NSAzNS41MDc4MTIgMjUuODA4NTk0IDM3LjgxNjQwNiAyNS45NDUzMTIgQyAzNy44MTY0MDYgMjUuOTQ1MzEyIDQ0LjkwMjM0NCAyNi40OTIxODggNDkuMTE3MTg4IDI2LjQ5MjE4OCBDIDUzLjYwMTU2MiAyNi40OTIxODggNjAuNTQ2ODc1IDI1Ljk0NTMxMiA2MC41NDY4NzUgMjUuOTQ1MzEyIEMgNjIuODU5Mzc1IDI1LjgwODU5NCA2My4xMzI4MTIgMjkuMjA3MDMxIDYwLjgyNDIxOSAyOS40ODA0NjkgQyA2MC44MjQyMTkgMjkuNDgwNDY5IDU4LjQ5MjE4OCAyOS43NTM5MDYgNTUuOTE0MDYyIDI5Ljg4NjcxOSBMIDcxLjQxNDA2MiA3NS45OTYwOTQgTCA3NS42OTE0MDYgNjEuNjk5MjE5IEMgNzcuNTQ2ODc1IDU1Ljc2NTYyNSA3OC45NTcwMzEgNTEuNTA3ODEyIDc4Ljk1NzAzMSA0Ny44MzU5MzggWiBNIDc4Ljk1NzAzMSA0Ny44MzU5MzggXCIvPlxyXG4gICAgPHBhdGggZD1cIk0gNTAuNzUzOTA2IDUzLjc1IEwgMzcuODgyODEyIDkxLjE0ODQzOCBDIDQxLjcyNjU2MiA5Mi4yNzczNDQgNDUuNzg5MDYyIDkyLjg5NDUzMSA1MCA5Mi44OTQ1MzEgQyA1NC45OTYwOTQgOTIuODk0NTMxIDU5Ljc4NTE1NiA5Mi4wMzEyNSA2NC4yNDYwOTQgOTAuNDY0ODQ0IEMgNjQuMTI4OTA2IDkwLjI4MTI1IDY0LjAyNzM0NCA5MC4wODU5MzggNjMuOTQxNDA2IDg5Ljg3MTA5NCBaIE0gNTAuNzUzOTA2IDUzLjc1IFwiLz5cclxuICAgIDxwYXRoIGQ9XCJNIDg3LjYzNjcxOSAyOS40MTc5NjkgQyA4Ny44MjQyMTkgMzAuNzg1MTU2IDg3LjkyNTc4MSAzMi4yNTM5MDYgODcuOTI1NzgxIDMzLjgzMjAzMSBDIDg3LjkyNTc4MSAzOC4xODM1OTQgODcuMTEzMjgxIDQzLjA3NDIxOSA4NC42Njc5NjkgNDkuMTk1MzEyIEwgNzEuNTYyNSA4Ny4wNzQyMTkgQyA4NC4zMTY0MDYgNzkuNjQwNjI1IDkyLjg5NDUzMSA2NS44MjQyMTkgOTIuODk0NTMxIDUwIEMgOTIuODk0NTMxIDQyLjU0Mjk2OSA5MC45ODgyODEgMzUuNTMxMjUgODcuNjM2NzE5IDI5LjQxNzk2OSBaIE0gODcuNjM2NzE5IDI5LjQxNzk2OSBcIi8+XHJcbiAgICA8cGF0aCBkPVwiTSA1MCAwIEMgMjIuNDMzNTk0IDAgMCAyMi40Mjk2ODggMCA1MCBDIDAgNzcuNTcwMzEyIDIyLjQzMzU5NCAxMDAgNTAgMTAwIEMgNzcuNTcwMzEyIDEwMCAxMDAuMDAzOTA2IDc3LjU3MDMxMiAxMDAuMDAzOTA2IDUwIEMgMTAwLjAwMzkwNiAyMi40Mjk2ODggNzcuNTcwMzEyIDAgNTAgMCBaIE0gNTAgOTcuNzA3MDMxIEMgMjMuNjk1MzEyIDk3LjcwNzAzMSAyLjI5Mjk2OSA3Ni4zMDQ2ODggMi4yOTI5NjkgNTAgQyAyLjI5Mjk2OSAyMy42OTUzMTIgMjMuNjk1MzEyIDIuMjkyOTY5IDUwIDIuMjkyOTY5IEMgNzYuMzA0Njg4IDIuMjkyOTY5IDk3LjcwNzAzMSAyMy42OTUzMTIgOTcuNzA3MDMxIDUwIEMgOTcuNzA3MDMxIDc2LjMwNDY4OCA3Ni4zMDQ2ODggOTcuNzA3MDMxIDUwIDk3LjcwNzAzMSBaIE0gNTAgOTcuNzA3MDMxIFwiLz5cclxuICA8L2c+XHJcbjwvc3ZnPmBcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhZGRJY29ucyA9ICgpOiB2b2lkID0+IHtcclxuICBPYmplY3Qua2V5cyhpY29ucykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICBhZGRJY29uKGtleSwgaWNvbnNba2V5XSk7XHJcbiAgfSk7XHJcbn07XHJcbiIsICJpbXBvcnQgKiBhcyBlbiBmcm9tICcuL2VuLmpzb24nO1xyXG5pbXBvcnQgKiBhcyB6aF9jbiBmcm9tICcuL3poLWNuLmpzb24nO1xyXG5cclxuZXhwb3J0IGNvbnN0IExBTkdVQUdFUyA9IHtcclxuICBlbixcclxuICB6aF9jblxyXG59O1xyXG4iLCAiaW1wb3J0IHsgTEFOR1VBR0VTIH0gZnJvbSAnLi9pMThuL2xhbmdzJztcclxuaW1wb3J0IHsgbW9tZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgeyB0ZW1wbGF0ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcblxyXG5leHBvcnQgdHlwZSBMYW5ndWFnZSA9IGtleW9mIHR5cGVvZiBMQU5HVUFHRVM7XHJcbmV4cG9ydCB0eXBlIExhbmd1YWdlV2l0aEF1dG8gPSBMYW5ndWFnZSB8ICdhdXRvJztcclxuZXhwb3J0IHR5cGUgVHJhbnNsYXRlS2V5ID0ga2V5b2YgdHlwZW9mIExBTkdVQUdFU1snZW4nXTtcclxuXHJcbmV4cG9ydCBjbGFzcyBJMThuIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxhbmc6IExhbmd1YWdlV2l0aEF1dG8gPSAnYXV0bydcclxuICApIHtcclxuICAgIHRoaXMubGFuZyA9IGxhbmc7XHJcbiAgfVxyXG5cclxuICB0KGtleTogVHJhbnNsYXRlS2V5LCB2YXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLiNnZXQoa2V5KTtcclxuICAgIGlmICh2YXJzKSB7XHJcbiAgICAgIGNvbnN0IGNvbXBpbGVkID0gdGVtcGxhdGUoc3RyaW5nKTtcclxuICAgICAgcmV0dXJuIGNvbXBpbGVkKHZhcnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHN0cmluZztcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNnZXQoa2V5OiBUcmFuc2xhdGVLZXkpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhbmc6IExhbmd1YWdlO1xyXG4gICAgaWYgKHRoaXMubGFuZyA9PT0gJ2F1dG8nICYmIG1vbWVudC5sb2NhbGUoKS5yZXBsYWNlKCctJywgJ18nKSBpbiBMQU5HVUFHRVMpIHtcclxuICAgICAgbGFuZyA9IG1vbWVudC5sb2NhbGUoKS5yZXBsYWNlKCctJywgJ18nKSBhcyBMYW5ndWFnZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxhbmcgPSAnZW4nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIExBTkdVQUdFU1tsYW5nXVtrZXldIHx8IExBTkdVQUdFU1snZW4nXVtrZXldIHx8IGtleTtcclxuICB9XHJcblxyXG59XHJcbiIsICJpbXBvcnQgeyBNb2RhbCwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IFdvcmRwcmVzc1BsdWdpbiBmcm9tICcuL21haW4nO1xyXG5pbXBvcnQgeyBXcFByb2ZpbGUgfSBmcm9tICcuL3dwLXByb2ZpbGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVLZXkgfSBmcm9tICcuL2kxOG4nO1xyXG5pbXBvcnQgeyByZW5kZXJlclByb2ZpbGUgfSBmcm9tICcuL3V0aWxzJztcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb3BlblByb2ZpbGVDaG9vc2VyTW9kYWwoXHJcbiAgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW5cclxuKTogUHJvbWlzZTxXcFByb2ZpbGU+IHtcclxuICByZXR1cm4gbmV3IFByb21pc2U8V3BQcm9maWxlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBXcFByb2ZpbGVDaG9vc2VyTW9kYWwocGx1Z2luLCAocHJvZmlsZSkgPT4ge1xyXG4gICAgICByZXNvbHZlKHByb2ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICBtb2RhbC5vcGVuKCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBXb3JkUHJlc3MgcHJvZmlsZXMgY2hvb3NlciBtb2RhbC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBXcFByb2ZpbGVDaG9vc2VyTW9kYWwgZXh0ZW5kcyBNb2RhbCB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZXM6IFdwUHJvZmlsZVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uQ2hvb3NlOiAocHJvZmlsZTogV3BQcm9maWxlKSA9PiB2b2lkXHJcbiAgKSB7XHJcbiAgICBzdXBlcihhcHApO1xyXG5cclxuICAgIHRoaXMucHJvZmlsZXMgPSBwbHVnaW4uc2V0dGluZ3MucHJvZmlsZXM7XHJcbiAgfVxyXG5cclxuICBvbk9wZW4oKSB7XHJcbiAgICBjb25zdCB0ID0gKGtleTogVHJhbnNsYXRlS2V5LCB2YXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBsdWdpbi5pMThuLnQoa2V5LCB2YXJzKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY2hvb3NlUHJvZmlsZSA9IChwcm9maWxlOiBXcFByb2ZpbGUpOiB2b2lkID0+IHtcclxuICAgICAgdGhpcy5vbkNob29zZShwcm9maWxlKTtcclxuICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlbmRlclByb2ZpbGVzID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICBjb250ZW50LmVtcHR5KCk7XHJcbiAgICAgIHRoaXMucHJvZmlsZXMuZm9yRWFjaCgocHJvZmlsZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmcgPSByZW5kZXJlclByb2ZpbGUocHJvZmlsZSwgY29udGVudCk7XHJcbiAgICAgICAgc2V0dGluZy5zZXR0aW5nRWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICBjaG9vc2VQcm9maWxlKHByb2ZpbGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuXHJcbiAgICBjb250ZW50RWwuY3JlYXRlRWwoJ2gxJywgeyB0ZXh0OiB0KCdwcm9maWxlc0Nob29zZXJNb2RhbF90aXRsZScpIH0pO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcclxuICAgICAgLnNldE5hbWUodCgncHJvZmlsZXNDaG9vc2VyTW9kYWxfcGlja09uZScpKTtcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50RWwuY3JlYXRlRWwoJ2RpdicpO1xyXG4gICAgcmVuZGVyUHJvZmlsZXMoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUtBLFlBQU8sVUFBVTtBQUFBO0FBQUE7OztBQ0xqQjtBQUFBO0FBQUEsWUFBTyxVQUFRO0FBQUE7QUFBQTs7O0FDQWY7QUFBQTtBQUFBO0FBSUEsUUFBSSxjQUFjLENBQUM7QUFNbkIsNEJBQXdCLFNBQVM7QUFDL0IsVUFBSSxJQUFHLElBQUksUUFBUSxZQUFZO0FBQy9CLFVBQUksT0FBTztBQUFFLGVBQU87QUFBQSxNQUFP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LE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxJQUFJLEVBQUMsU0FBUyxNQUFNLFdBQVcsS0FBSSxDQUFDO01BQ3JFLE1BQVksTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEdBQUc7TUFDcEMsTUFBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsR0FBRztNQUNwQyxPQUFZLE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxHQUFHO01BQ3BDLE1BQVksTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEdBQUc7TUFDcEMsU0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLFVBQVUsS0FBSSxDQUFDO01BQ3RELE9BQVksTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssRUFBQyxTQUFTLE1BQU0sZUFBZSxLQUFJLENBQUM7TUFDMUUsS0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsR0FBRztNQUNwQyxNQUFZLE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsVUFBVSxLQUFJLENBQUM7TUFDdEQsTUFBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsR0FBRztNQUNwQyxZQUFZLE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsVUFBVSxLQUFJLENBQUM7TUFDdEQsV0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLFFBQVEsS0FBSSxDQUFDO01BQ3BELFNBQVksTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssRUFBQyxRQUFRLE1BQU0sVUFBVSxLQUFJLENBQUM7TUFDcEUsTUFBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsTUFBTSxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7TUFDckYsT0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsT0FBTyxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7TUFDdEYsT0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSztNQUN0QyxPQUFZLE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLO01BQ3RDLFFBQVksTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssRUFBQyxRQUFRLEtBQUksQ0FBQztNQUNwRCxZQUFZLE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsUUFBUSxNQUFNLFVBQVUsS0FBSSxDQUFDOztBQU16RCxhQUFBLFNBQXFCO01BQ2hDLENBQUMsSUFBUSxLQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxLQUFRLEtBQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLEtBQVEsS0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsS0FBUSxLQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxLQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsTUFBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsTUFBUSxNQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxNQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsTUFBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsTUFBUSxNQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxNQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsTUFBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsTUFBUSxNQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxNQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsTUFBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsTUFBUSxNQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxNQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssT0FBTztNQUN0QyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssTUFBTSxRQUFRO01BQzdDLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssTUFBTSxRQUFRO01BQzdDLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLE1BQU0sUUFBUTtNQUM3QyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVMsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNwQyxDQUFDLE9BQVMsT0FBUyxhQUFBLFNBQVMsS0FBSyxJQUFJ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QUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLEtBQUksQ0FBQztRQUM1RCxVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRzs7TUFFZixTQUFTO1FBQ1AsTUFBTSxNQUFNLEdBQUcsQ0FBQztRQUNoQixLQUFLLENBQUMsR0FBRyxHQUFHLGFBQUEsU0FBUyxPQUFPLElBQUk7UUFDaEMsS0FBSyxTQUFBLEdBQUc7UUFDUixLQUFLLFNBQUEsR0FBRztRQUNSLEtBQUssU0FBQSxHQUFHO1FBQ1IsTUFBTSxNQUFNLEdBQUcsQ0FBQztRQUNoQixNQUFNLE1BQU0sR0FBRyxDQUFDO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLENBQUM7UUFDaEIsT0FBTyxTQUFBLEdBQUc7UUFDVixLQUFNLFNBQUEsR0FBRztRQUNULEtBQUssU0FBQSxHQUFHO1FBQ1IsS0FBSyxTQUFBLEdBQUc7UUFDUixLQUFLLFNBQUEsR0FBRztRQUNSLEtBQUssU0FBQSxHQUFHO1FBQ1IsS0FBSyxTQUFBLEdBQUc7UUFDUixLQUFLLFNBQUEsR0FBRztRQUNSLEtBQUssU0FBQSxHQUFHO1FBQ1IsTUFBTSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7UUFDekUsT0FBTyxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7UUFDMUUsUUFBVSxTQUFBLEdBQUc7UUFDYixRQUFVLFNBQUEsR0FBRztRQUNiLFFBQVUsU0FBQSxHQUFHO1FBQ2IsUUFBVSxTQUFBLEdBQUc7UUFDYixRQUFVLFNBQUEsR0FBRztRQUNiLFFBQVUsU0FBQSxHQUFHO1FBQ2IsUUFBVSxTQUFBLEdBQUc7UUFDYixRQUFVLFNBQUEsR0FBRztRQUNiLFFBQVUsU0FBQSxHQUFHO1FBQ2IsUUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLENBQUMsR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsT0FBTyxNQUFNLFVBQVUsS0FBSSxDQUFDO1FBQzVELFVBQVUsQ0FBQyxHQUFHLEdBQUcsYUFBQSxTQUFTLE9BQU8sRUFBQyxPQUFPLEtBQUksQ0FBQztRQUM5QyxVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsT0FBTyxFQUFDLE9BQU8sS0FBSSxDQUFDO1FBQzlDLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLEtBQUksQ0FBQztRQUM1RCxVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7O01BRWYsT0FBTztRQUNMLE1BQU0sU0FBQSxHQUFHO1FBQ1QsS0FBSyxTQUFBLEdBQUc7UUFDUixLQUFLLFNBQUEsR0FBRztRQUNSLEtBQUssQ0FBQyxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssSUFBSTtRQUM5QixNQUFNLFNBQUEsR0FBRztRQUNULElBQUksU0FBQSxHQUFHO1FBQ1AsS0FBSyxTQUFBLEdBQUc7UUFDUixNQUFNLE1BQU0sR0FBRyxDQUFDO1FBQ2hCLE1BQU0sU0FBQSxHQUFHO1FBQ1QsS0FBSyxTQUFBLEdBQUc7UUFDUixNQUFNLFNBQUEsR0FBRztRQUNULEtBQUssQ0FBQyxHQUFHLEdBQUcsYUFBQSxTQUFTLE9BQU8sRUFBQyxnQkFBZ0IsU0FBUyxXQUFXLEtBQUksQ0FBQztRQUN0RSxLQUFLLFNBQUEsR0FBRztRQUNSLE1BQU0sU0FBQSxHQUFHO1FBQ1QsTUFBTSxTQUFBLEdBQUc7UUFDVCxLQUFLLENBQUMsR0FBRyxHQUFHLGFBQUEsU0FBUyxPQUFPLEVBQUMsV0FBVyxLQUFJLENBQUM7UUFDN0MsS0FBSyxTQUFBLEdBQUc7UUFDUixNQUFNLE1BQU0sR0FBRyxDQUFDO1FBQ2hCLE1BQU0sU0FBQSxHQUFHO1FBQ1QsS0FBSyxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxJQUFJO1FBQzlCLE1BQU0sU0FBQSxHQUFHO1FBQ1QsS0FBSyxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsT0FBTyxFQUFDLGdCQUFnQixTQUFTLFdBQVcsS0FBSSxDQUFDO1FBQ3RFLEtBQUssU0FBQSxHQUFHO1FBQ1IsTUFBTSxTQUFBLEdBQUc7UUFDVCxNQUFNLE1BQU0sR0FBRyxDQUFDO1FBQ2hCLEtBQUssU0FBQSxHQUFHO1FBQ1IsTUFBTSxTQUFBLEdBQUc7UUFDVCxLQUFLLFNBQUEsR0FBRztRQUNSLE1BQU0sU0FBQSxHQUFHO1FBQ1QsS0FBSyxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsT0FBTyxJQUFJO1FBQ2hDLEtBQUssU0FBQSxHQUFHO1FBQ1IsTUFBTSxTQUFBLEdBQUc7UUFDVCxLQUFLLFNBQUEsR0FBRztRQUNSLEtBQUssU0FBQSxHQUFHO1FBQ1IsS0FBSyxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7UUFDeEUsTUFBTSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7UUFDekUsT0FBTyxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7UUFDMUUsUUFBVSxTQUFBLEdBQUc7UUFDYixRQUFVLFNBQUEsR0FBRztRQUNiLFFBQVUsU0FBQSxHQUFHO1FBQ2IsUUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLFVBQVUsS0FBSSxDQUFDO1FBQy9DLFVBQVUsQ0FBQyxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssRUFBQyxVQUFVLEtBQUksQ0FBQztRQUMvQyxVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsTUFBTSxFQUFDLGdCQUFnQixTQUFTLFdBQVcsS0FBSSxDQUFDO1FBQzFFLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsR0FBRztRQUNsQyxVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCLFNBQUEsR0FBRztRQUNuQixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCLFNBQUEsR0FBRztRQUNuQixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCLFNBQUEsR0FBRztRQUNuQixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCLFNBQUEsR0FBRztRQUNuQixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLGdCQUFnQixTQUFBLEdBQUc7UUFDbkIsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLGdCQUFnQixTQUFBLEdBQUc7UUFDbkIsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLGdCQUFnQixTQUFBLEdBQUc7UUFDbkIsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLENBQUMsR0FBRyxHQUFHLGFBQUEsU0FBUyxPQUFPLElBQUk7UUFDckMsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLFVBQVUsS0FBSSxDQUFDO1FBQy9DLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLGdCQUFnQixTQUFBLEdBQUc7UUFDbkIsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLGdCQUFnQixTQUFBLEdBQUc7UUFDbkIsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCLFNBQUEsR0FBRztRQUNuQixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLGdCQUFnQixTQUFBLEdBQUc7UUFDbkIsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixnQkFBZ0IsU0FBQSxHQUFHO1FBQ25CLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxTQUFBLEdBQUc7UUFDYixVQUFVLFNBQUEsR0FBRztRQUNiLFVBQVUsU0FBQSxHQUFHO1FBQ2IsVUFBVSxT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QWM7TUFDZCxTQUFjO01BQ2QsS0FBYztNQUNkLEtBQWM7TUFDZCxLQUFjO01BQ2QsT0FBYztNQUNkLFlBQWM7TUFDZCxVQUFjO01BQ2QsT0FBYztNQUNkLFFBQWM7TUFDZCxVQUFjO01BQ2QsUUFBYztNQUdkLEdBQWMsQ0FBQyxRQUFVLEVBQUMsYUFBYSxrQkFBQSxZQUFZLFFBQVEsT0FBTSxDQUFDO01BQ2xFLE9BQWMsQ0FBQyxVQUFVLEVBQUMsYUFBYSxrQkFBQSxZQUFZLFFBQVEsT0FBTSxDQUFDO01BQ2xFLE1BQWMsQ0FBQyxVQUFVLEVBQUMsYUFBYSxLQUFJLENBQUM7TUFDNUMsT0FBYztNQUNkLE9BQWM7TUFDZCxLQUFjO01BQ2QsSUFBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsSUFBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsSUFBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsU0FBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsT0FBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsT0FBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLEtBQUksQ0FBQztNQUM1QyxVQUFjLENBQUMsVUFBVSxFQUFDLGFBQWEsa0JBQUEsWUFBWSxRQUFRLE9BQU0sQ0FBQztNQUNsRSxPQUFjLENBQUMsVUFBVSxFQUFDLGFBQWEsa0JBQUEsWUFBWSxRQUFRLE9BQU0sQ0FBQztNQUNsRSxLQUFjLENBQUMsVUFBVSxFQUFDLGFBQWEsa0JBQUEsWUFBWSxRQUFRLE9BQU0sQ0FBQztNQUNsRSxLQUFjLENBQUMsVUFBVSxFQUFDLGFBQWEsa0JBQUEsWUFBWSxRQUFRLE9BQU0sQ0FBQztNQUNsRSxPQUFjLENBQUMsVUFBVSxFQUFDLGFBQWEsa0JBQUEsWUFBWSxRQUFRLE9B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ckQsY0FBbUIsQ0FBQyxVQUFVLGFBQUEsVUFBVSxxQkFBcUI7TUFFN0QsT0FBb0I7TUFDcEIsUUFBb0I7TUFDcEIsTUFBb0I7TUFDcEIsT0FBb0I7TUFDcEIsUUFBb0I7TUFDcEIsT0FBb0I7TUFDcEIsTUFBb0I7TUFDcEIsTUFBbUIsQ0FBQyxNQUFNO01BQzFCLE9BQW1CLENBQUMsUUFBUSxPQUFPO01BQ25DLFdBQW9CO01BRXBCLEtBQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ2pELEtBQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ2pELE1BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ2pELE1BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ2pELE1BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsTUFBTSxJQUFJO01BQ2xELE1BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsTUFBTSxJQUFJO01BQ2xELE9BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsTUFBTSxJQUFJO01BQ2xELE9BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsTUFBTSxJQUFJO01BQ2xELE1BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsT0FBTyxJQUFJO01BQ25ELE1BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsT0FBTyxJQUFJO01BQ25ELE9BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsT0FBTyxJQUFJO01BQ25ELE9BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsT0FBTyxJQUFJO01BQ25ELE1BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ2pELE1BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ2pELE9BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ2pELE9BQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BRWpELFNBQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsR0FBRztNQUMzQyxRQUFt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Q3hDLEdBQUMsTUFBTSxTQUFTLFVBQVUsUUFBTyxNQUFNLFVBQ3ZDLEdBQUMsTUFBTSxTQUFTLFVBQVUsUUFBTyxNQUFNLFVBQ3ZDLEdBQUMsTUFBTSxVQUFVLFVBQVUsUUFBTyxNQUFNLFdBQ3hDLEdBQUMsTUFBTSxVQUFVLFVBQVUsUUFBTyxNQUFNLFdBQ3hDLEdBQUMsTUFBTSxXQUFXLFVBQVUsUUFBTyxNQUFNLFlBQ3pDLEdBQUMsTUFBTSxTQUFTLFVBQVUsUUFBTyxNQUFNLFVBQ3ZDLEdBQUMsTUFBTSxTQUFTLFVBQVUsUUFBTyxNQUFNLFVBQ3ZDLEdBQUMsTUFBTSxPQUFPLFVBQVUsUUFBTyxNQUFNLFFBQ3JDLEdBQUMsTUFBTSxVQUFVLFVBQVUsUUFBTyxNQUFNLFdBQ3hDLEdBQUMsTUFBTSxVQUFVLFVBQVUsUUFBTyxNQUFNLFdBQ3hDLEdBQUMsTUFBTSxRQUFRLFVBQVUsUUFBTyxNQUFNLFNBQ3RDLEdBQUMsTUFBTSxVQUFVLFVBQVUsUUFBTyxNQUFNLFdBQ3hDLEdBQUMsTUFBTSxhQUFhLFVBQVUsUUFBTyxNQUFNLGNBQzNDLEdBQUMsTUFBTSxTQUFTLFVBQVUsUUFBTyxNQUFNLFVBQ3ZDLEdBQUMsTUFBTSxRQUFRLFVBQVUsUUFBTyxNQUFNLFNBQ3RDLEdBQUMsTUFBTSxPQUFPLFVBQVUsUUFBTyxNQUFNLFFBQ3JDLEdBQUMsTUFBTSxRQUFRLFVBQVUsUUFBTyxNQUFNLFNBQ3RDLEdBQUMsTUFBTSxjQUFjLFVBQVUsUUFBTyxNQUFNLGVBQzVDLEdBQUMsTUFBTSxTQUFTLFVBQVUsUUFBTyxNQUFNLFVBQ3ZDLEdBQUMsTUFBTSxVQUFVLFVBQVUsUUFBTyxNQUFNLFdBQ3hDLEdBQUMsTUFBTSxhQUFhLFVBQVUsUUFBTyxNQUFNLGNBQzNDLEdBQUMsTUFBTSxhQUFhLFVBQVUsUUFBTyxNQUFNO01BRTdDLFNBQVM7UUFDUCxXQUFXO1FBQ1gsU0FBVSxPQUFPLGFBQWMsZUFDckIsU0FBUyxxQkFBcUIsTUFBTSxFQUFFLFdBQVcsSUFDakQsS0FBSyxPQUFPLFNBQVMsUUFBUSxFQUFFLFFBQVEs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QUFVLFFBQVE7TUFDMUMsb0JBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLGdCQUF1QixDQUFDLFVBQVUsV0FBVztNQUM3QyxpQkFBdUIsQ0FBQyxVQUFVLE1BQVE7TUFDMUMsa0JBQXVCLENBQUMsVUFBVSxNQUFRO01BQzFDLG1CQUF1QixDQUFDLFVBQVUsUUFBUTtNQUMxQyxpQkFBdUIsQ0FBQyxVQUFVLFFBQVE7TUFHMUMsY0FBdUIsQ0FBQyxVQUFVLFFBQVE7TUFDMUMsaUJBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLGFBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLGlCQUF1QixDQUFDLFVBQVUsTUFBUTtNQUMxQyxnQkFBdUIsQ0FBQyxVQUFVLFFBQVE7TUFDMUMsaUJBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLG1CQUF1QixDQUFDLFVBQVUsUUFBUTtNQUMxQyx1QkFBdUIsQ0FBQyxVQUFVLFFBQVE7TUFDMUMsbUJBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLGNBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLGtCQUF1QixDQUFDLFVBQVUsUUFBUTtNQUMxQyxzQkFBdUIsQ0FBQyxVQUFVLFFBQVE7TUFDMUMsbUJBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLGNBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLHFCQUF1QixDQUFDLFVBQVUsUUFBUTtNQUsxQyxjQUF1QixDQUFDLFVBQVUsUUFBUTtNQUMxQyxjQUF1QixDQUFDLFVBQVUsUUFBUTtNQUMxQyxpQkFBdUIsQ0FBQyxVQUFVLFFBQVE7TUFDMUMsaUJBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLGNBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLGNBQXVCLENBQUMsVUFBVSxRQUFRO01BRzFDLGVBQXVCLENBQUMsVUFBVSxRQUFRO01BQzFDLGNBQXVCLENBQUMsVUFBVSxNQUFRO01BQzFDLFdBQXVCLENBQUMsVUFBVSxNQUFRO01BQzFDLGlCQUF1QixDQUFDLFVBQVUsUUFBUTtNQUMxQyx1QkFBdUIsQ0FBQyxVQUFVLFFBQVE7TUFDMUMs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QUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxNQUFLLElBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxJQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE1BQVEsQ0FBQyxPQUFNLE1BQUssSUFBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFPLElBQUk7TUFDMUIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU8sSUFBSTtNQUMxQixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssSUFBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLElBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxJQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsTUFBSyxNQUFLLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxNQUFRLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsTUFBSyxPQUFNLENBQUM7TUFDckIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFLO01BQzVCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSztNQUM1QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxJQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsSUFBSTtNQUMzQixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSztNQUN2QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUs7TUFDdkIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxLQUFJLE1BQUssS0FBSztNQUN2QixNQUFRLENBQUMsS0FBSSxNQUFLLEtBQUs7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixPQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixPQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsT0FBUSxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3BCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTs7Ozs7Ozs7Ozs7QUNsUTVCLFFBQUEsZ0JBQUE7QUFDQSxRQUFBLFlBQUE7QUFFYSxhQUFBLE9BQW1CLElBQUEsY0FBQSxVQUFTLFVBQUEsTUFBTTtNQUMzQyxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7T0FDVjtNQUNFLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixN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QUFNLE1BQUssR0FBRyxFQUFDLElBQUksS0FBRyxDQUFDO01BQ2hDLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsTUFBUSxDQUFDLE1BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsTUFBUSxDQUFDLE1BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsTUFBUSxDQUFDLE1BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFLO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSztNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUs7TUFDekIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFLO01BQ3pCLE1BQVEsQ0FBQyxNQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsTUFBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxNQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsTUFBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE1BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxNQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixPQUFRLENBQUMsTUFBSyxPQUFNLEtBQUs7TUFDekIsT0FBUSxDQUFDLE1BQUssTUFBSyxLQUFLO01BQ3hCLE9BQVEs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QUcsS0FBSTtNQUNqQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3hCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMxQixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLE9BQU8sQ0FBQztNQUN0QixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sTUFBTSxDQUFDO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN2QixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FB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QUcsS0FBSTtNQUNuQixJQUFNLENBQUMsTUFBSyxNQUFLLEdBQUU7TUFDbkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3JCLElBQU0sQ0FBQyxPQUFNLEdBQUcsR0FBRTtNQUNsQixJQUFNLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDbEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3JCLElBQU0sQ0FBQyxPQUFNLEdBQUcsR0FBRTtNQUNsQixJQUFNLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDckIsSUFBTSxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3JCLElBQU0sQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUNyQixJQUFNLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDckIsSUFBTSxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3JCLElBQU0sQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUNuQixJQUFNLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDdEIsSUFBTSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3JCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDckIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLElBQUc7TUFDbkIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE1BQUssR0FBRyxLQUFJO01BQ25CLElBQU0sQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUNuQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ25CLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sR0FB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S0FBTSxDQUFDLE1BQUssUUFBUSxHQUFFO01BQ3RCLEtBQU0sQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN2QixLQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsS0FBTSxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3ZCLEtBQU0sQ0FBQyxNQUFLLE9BQU8sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFRLEtBQUk7TUFDekIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNsQyxLQUFPLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNyQyxLQUFPLENBQUMsTUFBSyxRQUFRLEtBQUk7TUFDekIsS0FBTyxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3hCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN4QixLQUFPLENBQUMsTUFBSyxRQUFRLEdBQUU7TUFDdkIsS0FBTyxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3hCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN4QixLQUFPLENBQUMsT0FBTSxRQUFRLEdBQUU7TUFDeEIsS0FBTyxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3hCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN4QixLQUFPLENBQUMsT0FBTSxRQUFRLEdBQUU7TUFDeEIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxNQUFLLFFBQVEsQ0FBQztNQUN0QixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sT0FBTyxDQUFDO01BQ3RCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ3BCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDcEIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUNwQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ3BCLEtBQU8sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN4QixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ3BCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDeEIsS0FBTyxDQUFDLE1BQUssR0FBRyxJQUFHO01BQ25CLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ3BCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsTUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFF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TSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3BDLE1BQVEsQ0FBQyxNQUFLLE1BQUssR0FBRTtNQUNyQixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUksRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsTUFBUSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsTUFBUSxDQUFDLE9BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsTUFBUSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sT0FBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsTUFBSyxRQUFRLEtBQUk7TUFDMUIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxDQUFDO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sQ0FBQztNQUN0QixNQUFRLENBQUMsTUFBSyxNQUFLLEdBQUU7TUFDckIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUs7TUFDNUIs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QVEsQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN4QixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEdBQUU7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxNQUFNLEdBQUU7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxLQUFJLE9BQU0sS0FBSTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLEtBQUksT0FBTSxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBTSxHQUFFO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixPQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsTUFBSyxNQUFLLEtBQUs7TUFDeEIsT0FBUSxDQUFDLE1BQUssTUFBSyxLQUFLO01BQ3hCLE9BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSztNQUN4QixPQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLE9BQVEsQ0FBQyxPQUFNLE9BQVEsS0FBSTtNQUMzQixPQUFRLENBQUMsT0FBTSxHQUFHLElBQUc7TUFDckIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU8sT0FBTSxLQUFJO01BQzFCLE9BQVEsQ0FBQyxPQUFPLE9BQU0sS0FBSTtNQUMxQixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixPQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsT0FBUSxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDcEMsT0FBUSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDdEIsUUFBUyxDQUFDLE1BQUssR0FBRyxLQUFJO01BQ3RCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDckIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSztNQUN4QixRQUFTLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDckIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDckIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUs7TUFDM0IsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsS0FBSSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxLQUFJLEtBQUk7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDdEIsUUFBUyxDQUFDLE1BQUssR0FBRyxLQUFJO01BQ3RCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDekIsUUFBUyxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUN0QixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE1BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxLQUFJLEtBQUk7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsTUFBSyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2xDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUNqRCxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsTUFBSyxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDN0MsUUFBUyxDQUFDLE1BQUssR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDNUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSyxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsT0FBTSxHQUFHLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUNqRCxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBSyxNQUFLLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxNQUFLLEVBQUMsSUFBSSxNQUFLLElBQUksTUFBSSxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQ2pELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE1BQUssT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sTUFBSyxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksS0FBRyxDQUFDO01BQ2xDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUNqRCxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsTUFBSyxHQUFHLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDNUMsUUFBUyxDQUFDLE1BQUssR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksT0FBSyxDQUFDO01BQzVDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU8sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDL0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUMvQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU8sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE1BQUssRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNyQyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDaEQsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxRQUFPLENBQUM7TUFDekMsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFLO01BQzNCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDaEQsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxLQUFHLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2pELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSyxJQUFJLE1BQUksQ0FBQztNQUMvQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDaEQsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTyxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNqRCxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDaEQsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksTUFBSyxJQUFJLEtBQUcsQ0FBQztNQUM1QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDaEQsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksS0FBRyxDQUFDO01BQy9DLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDL0MsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNyQyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDM0IsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxPQUFNLEdBQUU7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQUssSUFBRztNQUN4QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE1BQUssTUFBSyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN4QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sQ0FBQztNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDM0IsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzNCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQUssTUFBSyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksS0FBRyxDQUFDO01BQ3JDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUs7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE9BQU0sSUFBRztNQUN4QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLElBQUc7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDeEIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN4QixRQUFTLENBQUMsT0FB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QUFNLEdBQUcsT0FBTSxFQUFDLElBQUksS0FBRyxDQUFDO01BQ2xDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksS0FBRyxDQUFDO01BQ2xDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsUUFBUyxDQUFDLE9BQU0sTUFBSyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsUUFBUyxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxNQUFLLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2xDLFFBQVMsQ0FBQyxNQUFLLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sTUFBSyxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE1BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE1BQUssTUFBTSxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE1BQUssTUFBTSxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNyQyxRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE1BQUssTUFBTSxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUN0QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE1BQUssR0FBRyxLQUFJO01BQ3RCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDckIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSztNQUN4QixRQUFTLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDckIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsTUFBSyxHQUFHLEdBQUU7TUFDcEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDckIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxNQUFLLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsUUFBUyxDQUFDLE1BQUssR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxNQUFLLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUssSUFBSSxPQUFLLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsTUFBSyxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUM1QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUssSUFBSSxPQUFLLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE1BQUssR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxNQUFLLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBSyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sTUFBSyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUNqRCxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksT0FBSyxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE1BQUssTUFBSyxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3JDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksS0FBRyxDQUFDO01BQ2xDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxNQUFLLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSyxJQUFJLE9BQUssQ0FBQztNQUM1QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsTUFBSyxHQUFHLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDNUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTyxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUMvQyxRQUFTLENBQUMsT0FBTSxHQUFHLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxNQUFLLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sTUFBSyxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sTUFBSyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLFFBQVMsQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUNqRCxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUksRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNyQyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQ2pELFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN4QixRQUFTLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDckIsUUFBUyxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3JCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN4QixRQUFTLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDckIsUUFBUyxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3hCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN4QixRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3hCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN4QixRQUFTLENBQUMsT0FBTSxPQUFNLElBQUc7TUFDekIsUUFBUyxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ3RCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsSUFBRztNQUN0QixRQUFTLENBQUMsT0FBTSxPQUFNLElBQUc7TUFDekIsUUFBUyxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ3RCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLElBQUc7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLElBQUc7TUFDekIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJOzs7Ozs7Ozs7OztBQ3J4QzlCLFFBQUEsZ0JBQUE7QUFDQSxRQUFBLGNBQUE7QUFFYSxhQUFBLFNBQXFCLElBQUEsY0FBQSxVQUFTLFlBQUEsUUFBTTtNQUM3QyxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFD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QUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNoQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUksRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNyQyxNQUFRLENBQUMsT0FBTSxRQUFRLEdBQUcsRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxNQUFRLENBQUMsT0FBTSxRQUFRLEdBQUcsRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxNQUFRLENBQUMsUUFBUSxPQUFNLEtBQUksRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNyQyxNQUFRLENBQUMsT0FBTSxRQUFRLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN2QyxNQUFRLENBQUMsT0FB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ckIsSUFBTSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3JCLElBQU0sQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN2QixJQUFNLENBQUMsUUFBUSxPQUFNLEdBQUU7TUFDdkIsS0FBTSxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDeEIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE1BQUssUUFBUSxDQUFDO01BQ3RCLEtBQU8sQ0FBQyxNQUFLLFFBQVEsQ0FBQztNQUN0QixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3hCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNy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QU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUMzQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbkMsSUFBTSxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sTUFBSyxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxLQUFHLENBQUM7TUFDNUMsSUFBTSxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQy9DLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLEtBQUcsQ0FBQztNQUN6QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsSUFBTSxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksS0FBRyxDQUFDO01BQ3pDLEtBQU8sQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3JDLEtBQU8sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDOzs7Ozs7Ozs7OztBQy9CekMsUUFBQSxnQkFBQTtBQUNBLFFBQUEsNkJBQUE7QUFFYSxhQUFBLHNCQUFrQyxJQUFBLGNBQUEsVUFBUywyQkFBQSxxQkFBTTtNQUMxRCxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLEtBQU87TUFDUCxLQUFPO09BQ1QsQ0FBQSxDQUNEOzs7Ozs7Ozs7O0FDOUJZLGFBQUEsa0JBQXdDO01BQ2pELElBQU0sQ0FBQyxPQUFNLE1BQUssT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUM1QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNqQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksTUFBSSxDQUFDO01BQzVDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUMzQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxNQUFLLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbEMsSUFBTSxDQUFDLE9BQU0sTUFBSyxPQUFPLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsSUFBTSxDQUFDLE9BQU0sTUFBSyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzVDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUMxQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsSUFBTSxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDOzs7Ozs7Ozs7OztBQzdCOUMsUUFBQSxnQkFBQTtBQUNBLFFBQUEsd0JBQUE7QUFFYSxhQUFBLGtCQUE4QixJQUFBLGNBQUEsVUFBUyxzQkFBQSxpQkFBTTtNQUN0RCxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtPQUNSLENBQUEsQ0FDRDs7Ozs7Ozs7OztBQzVCWSxhQUFBLFlBQWtDO01BQzNDLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDbkIsSUFBTSxDQUFDLE1BQUssR0FBRyxLQUFJO01BQ25CLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN0QixJQUFNLENBQUMsT0FBTSxNQUFLLElBQUc7TUFDckIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE1BQUssSUFBRztNQUNyQixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3RCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDdEIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN0QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN0QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sTUFBSyxJQUFHO01BQ3JCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTs7Ozs7Ozs7Ozs7QUN2RDNCLFFBQUEsZ0JBQUE7QUFDQSxRQUFBLGtCQUFBO0FBRWEsYUFBQSxZQUF3QixJQUFBLGNBQUEsVUFBUyxnQkFBQSxXQUFNO01BQ2hELElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07T0FDUixDQUFBLENBQ0Q7Ozs7Ozs7Ozs7QUN0RFksYUFBQSxrQkFBd0M7TUFDakQsSUFBTSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3RCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDbkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3RCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3RCLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUM3QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxJQUFNLENBQUMsT0FBTSxNQUFLLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNqQyxJQUFNLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNqQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUssSUFBSSxNQUFJLENBQUM7TUFDNUMsSUFBTSxDQUFDLE9BQU0sTUFBSyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQzVDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUMzQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbkMsSUFBTSxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sTUFBSyxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxLQUFHLENBQUM7TUFDNUMsSUFBTSxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxJQUFNLENB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TUFBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVEsRUFBQyxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsS0FBSSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFLLE1BQUssS0FBSSxFQUFDO01BQ3hGLE9BQVEsRUFBQyxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsS0FBSSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFLLE1BQUssS0FBSSxFQUFDO01BQ3hGLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVEsRUFBQyxLQUFLLGNBQUEsR0FBRyxTQUFTLENBQUMsTUFBUSxNQUFRLElBQU0sR0FBRyxLQUFLLFNBQUEsTUFBTSxLQUFLLEVBQUM7TUFDckUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUssU0FBQSxNQUFNLEtBQUssTUFBSztNQUN6RSxPQUFRLEVBQUMsS0FBSyxjQUFBLEdBQUcsU0FBUyxDQUFDLE1BQVEsTUFBUSxJQUFNLEdBQUcsS0FBSyxTQUFBLE1BQU0sS0FBSyxFQUFDO01BQ3JFLE9BQVEsRUFBQyxLQUFLLGNBQUEsR0FBRyxTQUFTLENBQUMsTUFBUSxNQUFRLElBQU0sR0FBRyxLQUFLLFNBQUEsTUFBTSxLQUFLLElBQUU7TUFDdEUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUssU0FBQSxNQUFNLEtBQUssTUFBSztNQUN6RSxPQUFRLEVBQUMsS0FBSyxjQUFBLEdBQUcsU0FBUyxDQUFDLE1BQVEsTUFBUSxJQUFNLEdBQUcsS0FBSyxTQUFBLE1BQU0sS0FBSyxNQUFLO01BQ3pFLE9B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RyxLQUFJLElBQUksUUFBUSxNQUFLO0FBQ2pDLFlBQUksSUFBRyxNQUFNLElBQUksS0FBSSxHQUFHLEtBQUs7O0FBRWpDLGFBQU87SUFDWDtBQUdBLGFBQUEsVUFBZSxJQUFJLElBQTBDLDRCQUFZLENBQUMsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsWUFBVyxHQUFFLE1BQUssR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEtBQUksUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxhQUFhLEdBQUUsQ0FBQyxLQUFJLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLE1BQUssUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUseUJBQXlCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsaUJBQWdCLEdBQUUsTUFBSyxHQUFFLGVBQWMsQ0FBQyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLHdCQUF3QixHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsdUJBQXVCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsdUJBQXVCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsNEJBQTRCLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE1BQUssR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGFBQVksR0FBRSxLQUFJLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsYUFBWSxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGVBQWMsR0FBRSxNQUFLLEdBQUUsWUFBVyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLGNBQWEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxJQUFJLElBQWtDLDRCQUFZLENBQUMsQ0FBQyxLQUFJLFFBQVEsR0FBRSxDQUFDLE1BQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxJQUFJLElBQWtDLDRCQUFZLENBQUMsQ0FBQyxLQUFJLFFBQVEsR0FBRSxDQUFDLE1BQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLHFCQUFvQixDQUFDLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE1BQUssR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsZ0JBQWUsQ0FBQyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsaUJBQWdCLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsaUJBQWdCLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLG9CQUFtQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLHNCQUFxQixDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLE9BQU0sR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLHVCQUFzQixHQUFFLE1BQUssR0FBRSxZQUFXLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLHdCQUF1QixHQUFFLE1BQUssR0FBRSxZQUFXLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSx5QkFBeUIsR0FBRSxDQUFDLEdBQUUseUJBQXlCLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSwwQkFBMEIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLHlCQUF5QixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxhQUFZLEdBQUUsS0FBSSxHQUFFLGFBQVksQ0FBQyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsV0FBVyxHQUFFLENBQUMsSUFBRyxjQUFjLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLElBQUcsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEtBQUksWUFBWSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsS0FBSSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxJQUFHLHFCQUFxQixHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxJQUFHLHFCQUFxQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsdUJBQXVCLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSw0QkFBNEIsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxLQUFJLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUscUJBQW9CLEdBQUUsS0FBSSxHQUFFLHVCQUFzQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxzQkFBcUIsR0FBRSxLQUFJLEdBQUUsd0JBQXVCLENBQUMsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsSUFBRyxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsYUFBWSxHQUFFLEtBQUksR0FBRSxhQUFZLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsS0FBSSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGNBQWEsR0FBRSxLQUFJLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxjQUFhLEdBQUUsS0FBSSxHQUFFLGNBQWEsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGNBQWEsR0FBRSxLQUFJLEdBQUUsc0JBQXFCLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLG9CQUFtQixHQUFFLEtBQUksR0FBRSw0QkFBMkIsQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxPQUFNLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsT0FBTSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxtQkFBa0IsR0FBRSxLQUFJLEdBQUUscUJBQW9CLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxLQUFJLEdBQUUscUJBQW9CLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsa0JBQWlCLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsa0JBQWlCLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxNQUFLLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxPQUFNLEVBQUMsR0FBRSxJQUFJLElBQWtDLDRCQUFZLENBQUMsQ0FBQyxPQUFNLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsSUFBRyxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxD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QUFBLFVBQUEsY0FBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBVSxFQUFBLENBQUE7QUFHZCxRQUFBLGNBQUE7QUFDSSxXQUFBLGVBQUEsVUFBQSxjQUFBLEVBQUEsWUFBQSxNQUFBLEtBQUEsV0FBQTtBQUFBLGFBQUEsWUFBQTtJQUFVLEVBQUEsQ0FBQTtBQUNWLFdBQUEsZUFBQSxVQUFBLHNCQUFBLEVBQUEsWUFBQSxNQUFBLEtBQUEsV0FBQTtBQUFBLGFBQUEsWUFBQTtJQUFrQixFQUFBLENBQUE7QUFFbEIsV0FBQSxlQUFBLFVBQUEsZUFBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBVSxFQUFBLENBQUE7QUFDVixXQUFBLGVBQUEsVUFBQSxlQUFBLEVBQUEsWUFBQSxNQUFBLEtBQUEsV0FBQTtBQUFBLGFBQUEsWUFBQTtJQUFVLEVBQUEsQ0FBQTtBQUdkLFFBQUEsY0FBQTtBQUNJLFdBQUEsZUFBQSxVQUFBLGFBQUEsRUFBQSxZQUFBLE1BQUEsS0FBQSxXQUFBO0FBQUEsYUFBQSxZQUFBO0lBQVMsRUFBQSxDQUFBO0FBQ1QsV0FBQSxlQUFBLFVBQUEsY0FBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBVSxFQUFBLENBQUE7QUFDVixXQUFBLGVBQUEsVUFBQSxvQkFBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBZ0IsRUFBQSxDQUFBO0FBRWhCLFdBQUEsZUFBQSxVQUFBLGVBQUEsRUFBQSxZQUFBLE1BQUEsS0FBQSxXQUFBO0FBQUEsYUFBQSxZQUFBO0lBQVUsRUFBQSxDQUFBO0FBQ1YsV0FBQSxlQUFBLFVBQUEsZUFBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBVSxFQUFBLENBQUE7QUFDVixXQUFBLGVBQUEsVUFBQSxxQkFBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBZ0IsRUFB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QyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxLQUFJLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsYUFBYSxHQUFFLENBQUMsS0FBSSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxNQUFLLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSx1QkFBdUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHlCQUF5QixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGlCQUFnQixHQUFFLE1BQUssR0FBRSxlQUFjLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLDRCQUE0QixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxhQUFZLEdBQUUsS0FBSSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGFBQVksR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxlQUFjLEdBQUUsTUFBSyxHQUFFLFlBQVcsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsSUFBSSxJQUFrQyw0QkFBWSxDQUFDLENBQUMsS0FBSSxRQUFRLEdBQUUsQ0FBQyxNQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsSUFBSSxJQUFrQyw0QkFBWSxDQUFDLENBQUMsS0FBSSxRQUFRLEdBQUUsQ0FBQyxNQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxxQkFBb0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsTUFBSyxHQUFFLGdCQUFlLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGlCQUFnQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGlCQUFnQixDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxvQkFBbUIsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxzQkFBcUIsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSx1QkFBc0IsR0FBRSxNQUFLLEdBQUUsWUFBVyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSx3QkFBdUIsR0FBRSxNQUFLLEdBQUUsWUFBVyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUseUJBQXlCLEdBQUUsQ0FBQyxHQUFFLHlCQUF5QixHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsMEJBQTBCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSx5QkFBeUIsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsYUFBWSxHQUFFLEtBQUksR0FBRSxhQUFZLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLFdBQVcsR0FBRSxDQUFDLElBQUcsY0FBYyxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxJQUFHLG1CQUFtQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxLQUFJLFlBQVksR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEtBQUksU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsSUFBRyxxQkFBcUIsR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsSUFBRyxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsNEJBQTRCLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsS0FBSSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSx1QkFBdUIsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLHFCQUFvQixHQUFFLEtBQUksR0FBRSx1QkFBc0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsc0JBQXFCLEdBQUUsS0FBSSxHQUFFLHdCQUF1QixDQUFDLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLElBQUcsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGFBQVksR0FBRSxLQUFJLEdBQUUsYUFBWSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLEtBQUksR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxjQUFhLEdBQUUsS0FBSSxHQUFFLGNBQWEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsY0FBYSxHQUFFLEtBQUksR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxjQUFhLEdBQUUsS0FBSSxHQUFFLHNCQUFxQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxvQkFBbUIsR0FBRSxLQUFJLEdBQUUsNEJBQTJCLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsT0FBTSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLE9BQU0sR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsbUJBQWtCLEdBQUUsS0FBSSxHQUFFLHFCQUFvQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsS0FBSSxHQUFFLHFCQUFvQixDQUFDLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGtCQUFpQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGtCQUFpQixDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsTUFBSyxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsT0FBTSxFQUFDLEdBQUUsSUFBSSxJQUFrQyw0QkFBWSxDQUFDLENBQUMsT0FBTSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLElBQUcsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFB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QyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxLQUFJLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsYUFBYSxHQUFFLENBQUMsS0FBSSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxNQUFLLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSx1QkFBdUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHlCQUF5QixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGlCQUFnQixHQUFFLE1BQUssR0FBRSxlQUFjLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLDRCQUE0QixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxhQUFZLEdBQUUsS0FBSSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGFBQVksR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxlQUFjLEdBQUUsTUFBSyxHQUFFLFlBQVcsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsSUFBSSxJQUFrQyw0QkFBWSxDQUFDLENBQUMsS0FBSSxRQUFRLEdBQUUsQ0FBQyxNQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsSUFBSSxJQUFrQyw0QkFBWSxDQUFDLENBQUMsS0FBSSxRQUFRLEdBQUUsQ0FBQyxNQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxxQkFBb0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsTUFBSyxHQUFFLGdCQUFlLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGlCQUFnQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGlCQUFnQixDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxvQkFBbUIsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxzQkFBcUIsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSx1QkFBc0IsR0FBRSxNQUFLLEdBQUUsWUFBVyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSx3QkFBdUIsR0FBRSxNQUFLLEdBQUUsWUFBVyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUseUJBQXlCLEdBQUUsQ0FBQyxHQUFFLHlCQUF5QixHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsMEJBQTBCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSx5QkFBeUIsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsYUFBWSxHQUFFLEtBQUksR0FBRSxhQUFZLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLFdBQVcsR0FBRSxDQUFDLElBQUcsY0FBYyxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxJQUFHLG1CQUFtQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxLQUFJLFlBQVksR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEtBQUksU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsSUFBRyxxQkFBcUIsR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsSUFBRyxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsNEJBQTRCLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsS0FBSSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSx1QkFBdUIsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLHFCQUFvQixHQUFFLEtBQUksR0FBRSx1QkFBc0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsc0JBQXFCLEdBQUUsS0FBSSxHQUFFLHdCQUF1QixDQUFDLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLElBQUcsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGFBQVksR0FBRSxLQUFJLEdBQUUsYUFBWSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLEtBQUksR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxjQUFhLEdBQUUsS0FBSSxHQUFFLGNBQWEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsY0FBYSxHQUFFLEtBQUksR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxjQUFhLEdBQUUsS0FBSSxHQUFFLHNCQUFxQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxvQkFBbUIsR0FBRSxLQUFJLEdBQUUsNEJBQTJCLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsT0FBTSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLE9BQU0sR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsbUJBQWtCLEdBQUUsS0FBSSxHQUFFLHFCQUFvQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsS0FBSSxHQUFFLHFCQUFvQixDQUFDLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGtCQUFpQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGtCQUFpQixDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsTUFBSyxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsT0FBTSxFQUFDLEdBQUUsSUFBSSxJQUFrQyw0QkFBWSxDQUFDLENBQUMsT0FBTSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLElBQUcsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFB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QWlCLG9CQUFJLElBQUk7QUFBQSxNQUMzQixDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7QUFBQSxNQUN0QixDQUFDLFVBQVUsU0FBUyxPQUFPLE9BQU87QUFBQSxNQUNsQyxDQUFDLFVBQVUsZ0JBQWdCLE9BQU8sY0FBYztBQUFBLE1BQ2hELENBQUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQzVCLENBQUMsVUFBVSxTQUFTLE9BQU8sT0FBTztBQUFBLE1BQ2xDLENBQUMsVUFBVSxPQUFPLE9BQU8sS0FBSztBQUFBLE1BQzlCLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUFBLE1BQ3RCLENBQUMsVUFBVSxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQzVCLENBQUMsVUFBVSxVQUFVLE9BQU8sUUFBUTtBQUFBLE1BQ3BDLENBQUMsVUFBVSxTQUFTLE9BQU8sT0FBTztBQUFBLE1BQ2xDLENBQUMsVUFBVSxLQUFLLE9BQU8sR0FBRztBQUFBLE1BQzFCLENBQUMsVUFBVSxZQUFZLE9BQU8sVUFBVTtBQUFBLE1BQ3hDLENBQUMsVUFBVSxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQzVCLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUFBLE1BQ3hCLENBQUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxTQUFTLE9BQU8sT0FBTztBQUFBLE1BQ2xDLENBQUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQzVCLENBQUMsVUFBVSxLQUFLLE9BQU8sR0FBRztBQUFBLE1BQzFCLENBQUMsVUFBVSxVQUFVLE9BQU8sUUFBUTtBQUFBLE1BQ3BDLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUFBLE1BQ3hCLENBQUMsVUFBVSxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQzVCLENBQUMsVUFBVSxTQUFTLE9BQU8sT0FBTztBQUFBLE1BQ2xDLENBQUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxLQUFLLE9BQU8sR0FBRztBQUFBLE1BQzFCLENBQUMsVUFBVSxLQUFLLE9BQU8sR0FBRztBQUFBLE1BQzFCLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUFBLE1BQ3hCLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUFBLE1BQ3hCLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUFBLE1BQ3hCLENBQUMsVUFBVSxPQUFPLE9BQU8sS0FBSztBQUFBLE1BQzlCLENBQUMsVUFBVSxVQUFVLE9BQU8sUUFBUTtBQUFBLE1BQ3BDLENBQUMsVUFBVSxZQUFZLE9BQU8sVUFBVTtBQUFBLE1BQ3hDLENBQUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQzVCLENBQUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxnQkFBZ0IsT0FBTyxjQUFjO0FBQUEsTUFDaEQsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsTUFDdEIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFlBQVksT0FBTyxVQUFVO0FBQUEsTUFDeEMsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsTUFDdEIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLFdBQVcsT0FBTyxTQUFTO0FBQUEsTUFDdEMsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsTUFDdEIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsTUFDdEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsSUFDOUIsQ0FBQztBQUNELHNCQUFrQixTQUFTO0FBQ3ZCLFVBQUk7QUFDSixhQUFRLE1BQUssZUFBZSxJQUFJLE9BQU8sT0FBTyxRQUFRLE9BQU8sU0FBUyxLQUFLLE9BQU87QUFBQSxJQUN0RjtBQUNBLGFBQVEsV0FBVztBQUNuQixRQUFNLElBQUk7QUFDVixhQUFRLG1CQUFtQjtBQUFBLE1BQ3ZCLENBQUMsR0FBRyxPQUFPLG9CQUFJLElBQUk7QUFBQSxRQUNmLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNGLEVBQUU7QUFBQSxRQUNG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QUFNLHdCQUF3QixvQkFBSSxJQUFJO0FBQUEsTUFDbEMsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxPQUFPO0FBQUEsTUFDakIsVUFBVSxP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R0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFlBQVcsR0FBRSxNQUFLLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxLQUFJLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsYUFBYSxHQUFFLENBQUMsS0FBSSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxNQUFLLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSx1QkFBdUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHlCQUF5QixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGlCQUFnQixHQUFFLE1BQUssR0FBRSxlQUFjLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLDRCQUE0QixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxhQUFZLEdBQUUsS0FBSSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGFBQVksR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxlQUFjLEdBQUUsTUFBSyxHQUFFLFlBQVcsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsSUFBSSxJQUFrQyw0QkFBWSxDQUFDLENBQUMsS0FBSSxRQUFRLEdBQUUsQ0FBQyxNQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsSUFBSSxJQUFrQyw0QkFBWSxDQUFDLENBQUMsS0FBSSxRQUFRLEdBQUUsQ0FBQyxNQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxxQkFBb0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsTUFBSyxHQUFFLGdCQUFlLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGlCQUFnQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGlCQUFnQixDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxvQkFBbUIsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxzQkFBcUIsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSx1QkFBc0IsR0FBRSxNQUFLLEdBQUUsWUFBVyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSx3QkFBdUIsR0FBRSxNQUFLLEdBQUUsWUFBVyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUseUJBQXlCLEdBQUUsQ0FBQyxHQUFFLHlCQUF5QixHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsMEJBQTBCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSx5QkFBeUIsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsYUFBWSxHQUFFLEtBQUksR0FBRSxhQUFZLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLFdBQVcsR0FBRSxDQUFDLElBQUcsY0FBYyxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxJQUFHLG1CQUFtQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxLQUFJLFlBQVksR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEtBQUksU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsSUFBRyxxQkFBcUIsR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsSUFBRyxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsNEJBQTRCLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsS0FBSSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSx1QkFBdUIsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLHFCQUFvQixHQUFFLEtBQUksR0FBRSx1QkFBc0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsc0JBQXFCLEdBQUUsS0FBSSxHQUFFLHdCQUF1QixDQUFDLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLElBQUcsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGFBQVksR0FBRSxLQUFJLEdBQUUsYUFBWSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLEtBQUksR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxjQUFhLEdBQUUsS0FBSSxHQUFFLGNBQWEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsY0FBYSxHQUFFLEtBQUksR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxjQUFhLEdBQUUsS0FBSSxHQUFFLHNCQUFxQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxvQkFBbUIsR0FBRSxLQUFJLEdBQUUsNEJBQTJCLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsT0FBTSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLE9BQU0sR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsbUJBQWtCLEdBQUUsS0FBSSxHQUFFLHFCQUFvQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsS0FBSSxHQUFFLHFCQUFvQixDQUFDLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGtCQUFpQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLGtCQUFpQixDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsTUFBSyxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsT0FBTSxFQUFDLEdBQUUsSUFBSSxJQUFrQyw0QkFBWSxDQUFDLENBQUMsT0FBTSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLElBQUcsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFFLENBQUMsTUFBSyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FB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QSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBVSxFQUFBLENBQUE7QUFDVixXQUFBLGVBQUEsVUFBQSxzQkFBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBa0IsRUFBQSxDQUFBO0FBRWxCLFdBQUEsZUFBQSxVQUFBLGVBQUEsRUFBQSxZQUFBLE1BQUEsS0FBQSxXQUFBO0FBQUEsYUFBQSxZQUFBO0lBQVUsRUFBQSxDQUFBO0FBQ1YsV0FBQSxlQUFBLFVBQUEsZUFBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBVSxFQUFBLENBQUE7QUFHZCxRQUFBLGNBQUE7QUFDSSxXQUFBLGVBQUEsVUFBQSxhQUFBLEVBQUEsWUFBQSxNQUFBLEtBQUEsV0FBQTtBQUFBLGFBQUEsWUFBQTtJQUFTLEVBQUEsQ0FBQTtBQUNULFdBQUEsZUFBQSxVQUFBLGNBQUEsRUFBQSxZQUFBLE1BQUEsS0FBQSxXQUFBO0FBQUEsYUFBQSxZQUFBO0lBQVUsRUFBQSxDQUFBO0FBQ1YsV0FBQSxlQUFBLFVBQUEsb0JBQUEsRUFBQSxZQUFBLE1BQUEsS0FBQSxXQUFBO0FBQUEsYUFBQSxZQUFBO0lBQWdCLEVBQUEsQ0FBQTtBQUVoQixXQUFBLGVBQUEsVUFBQSxlQUFBLEVBQUEsWUFBQSxNQUFBLEtBQUEsV0FBQTtBQUFBLGFBQUEsWUFBQTtJQUFVLEVBQUEsQ0FBQTtBQUNWLFdBQUEsZUFBQSxVQUFBLGVBQUEsRUFBQSxZQUFBLE1BQUEsS0FBQSxXQUFBO0FBQUEsYUFBQSxZQUFBO0lBQVUsRUFBQSxDQUFBO0FBQ1YsV0FBQSxlQUFBLFVBQUEscUJBQUEsRUFBQSxZQUFBLE1BQUEsS0FBQSxXQUFBO0FBQUEsYUFBQSxZQUFBO0lBQWdCLEVBQUEsQ0FBQTtBQUNoQixXQUFBLGVBQUEsVUFBQSxxQkFBQSxFQUFBLFlBQUEsTUFBQSxLQUFBLFdBQUE7QUFBQSxhQUFBLFlBQUE7SUFBZ0IsRUFBQSxDQUFBO0FBQ2hCLFdBQUEsZUFBQSxVQUFBLG1CQUFBLEVBQUEs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 diff --git a/src/app-state.ts b/src/app-state.ts index cebf261..19ed8ae 100644 --- a/src/app-state.ts +++ b/src/app-state.ts @@ -1,6 +1,7 @@ import { Events } from 'obsidian'; import MarkdownIt from 'markdown-it'; + export class AppState { private static instance: AppState; diff --git a/src/i18n/en.json b/src/i18n/en.json index c1b83f2..ca31f79 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -64,7 +64,9 @@ "settings_mathJaxOutputTypeTeX": "TeX", "settings_MathJaxOutputTypeTeXDesc": "Convert MathJax to TeX directly. WordPress needs install MathJax related plugin, such as simple-mathjax.", "settings_mathJaxOutputTypeSVG": "SVG", - "settings_MathJaxOutputTypeSVGDesc": "Convert MathJax to SVG. Browser render SVG, no plugin needed for WordPress", + "settings_MathJaxOutputTypeSVGDesc": "Convert MathJax to SVG. Browser render SVG, no plugin needed for WordPress.", + "settings_enableHtml": "Enable HTML", + "settings_enableHtmlDesc": "Enable HTML tags in notes. This might cause XSS attack to your WordPress.", "loginModal_title": "WordPress Login", "loginModal_username": "Username", "loginModal_usernameDesc": "Username for <%= url %>", diff --git a/src/i18n/zh-cn.json b/src/i18n/zh-cn.json index 75e8c1f..f518bd0 100644 --- a/src/i18n/zh-cn.json +++ b/src/i18n/zh-cn.json @@ -65,6 +65,8 @@ "settings_MathJaxOutputTypeTeXDesc": "将 MathJax 公式输出为 TeX 格式。WordPress 需要安装 MathJax 相关插件,例如 simple-mathjax", "settings_mathJaxOutputTypeSVG": "SVG", "settings_MathJaxOutputTypeSVGDesc": "将 MathJax 公式输出为 SVG 格式。浏览器可以直接显示 SVG 矢量图,WordPress 无需任何处理", + "settings_enableHtml": "启用 HTML", + "settings_enableHtmlDesc": "启用笔记中的 HTML 标签。这可能导致针对 WordPress 的 XSS 攻击", "loginModal_title": "WordPress 登录", "loginModal_username": "用户名", "loginModal_usernameDesc": "<%= url %> 用户名", diff --git a/src/main.ts b/src/main.ts index e91d830..d944a33 100644 --- a/src/main.ts +++ b/src/main.ts @@ -80,8 +80,11 @@ export default class WordpressPlugin extends Plugin { async loadSettings() { this.#settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); - this.#settings = await upgradeSettings(this.#settings, SettingsVersion.V2, this); - await this.saveSettings(); + const { needUpgrade, settings } = await upgradeSettings(this.#settings, SettingsVersion.V2); + this.#settings = settings; + if (needUpgrade) { + await this.saveSettings(); + } const crypto = new PassCrypto(); const count = this.#settings?.profiles.length ?? 0; @@ -92,6 +95,10 @@ export default class WordpressPlugin extends Plugin { profile.password = await crypto.decrypt(enPass.encrypted, enPass.key, enPass.vector); } } + + AppState.getInstance().markdownParser.set({ + html: this.#settings?.enableHtml ?? false + }); } async saveSettings() { diff --git a/src/plugin-settings.ts b/src/plugin-settings.ts index ed3114a..b06131d 100644 --- a/src/plugin-settings.ts +++ b/src/plugin-settings.ts @@ -61,6 +61,8 @@ export interface WordpressPluginSettings { showWordPressEditConfirm: boolean; mathJaxOutputType: MathJaxOutputType; + + enableHtml: boolean; } export const DEFAULT_SETTINGS: WordpressPluginSettings = { @@ -71,14 +73,14 @@ export const DEFAULT_SETTINGS: WordpressPluginSettings = { defaultCommentStatus: CommentStatus.Open, rememberLastSelectedCategories: true, showWordPressEditConfirm: false, - mathJaxOutputType: MathJaxOutputType.SVG + mathJaxOutputType: MathJaxOutputType.SVG, + enableHtml: false } export async function upgradeSettings( existingSettings: SafeAny, - to: SettingsVersion, - plugin: WordpressPlugin -): Promise { + to: SettingsVersion +): Promise<{ needUpgrade: boolean, settings: WordpressPluginSettings }> { console.log(existingSettings, to); if (isUndefined(existingSettings.version)) { // V1 @@ -120,8 +122,14 @@ export async function upgradeSettings( } else { newSettings.profiles = []; } - return newSettings; + return { + needUpgrade: true, + settings: newSettings + }; } } - return existingSettings; + return { + needUpgrade: false, + settings: existingSettings + }; } diff --git a/src/settings.ts b/src/settings.ts index 0cb4b30..af8eadb 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -6,6 +6,7 @@ import { WpProfileManageModal } from './wp-profile-manage-modal'; import { MathJaxOutputType } from './plugin-settings'; import { WpProfile } from './wp-profile'; import { setupMarkdownParser } from './utils'; +import { AppState } from './app-state'; export class WordpressSettingTab extends PluginSettingTab { @@ -38,7 +39,6 @@ export class WordpressSettingTab extends PluginSettingTab { containerEl.createEl('h1', { text: t('settings_title') }); - // let apiDesc = getApiTypeDesc(this.plugin.settings.apiType); let mathJaxOutputTypeDesc = getMathJaxOutputTypeDesc(this.plugin.settings.mathJaxOutputType); new Setting(containerEl) @@ -146,6 +146,22 @@ export class WordpressSettingTab extends PluginSettingTab { text: mathJaxOutputTypeDesc, cls: 'setting-item-description' }); + + new Setting(containerEl) + .setName(t('settings_enableHtml')) + .setDesc(t('settings_enableHtmlDesc')) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.enableHtml) + .onChange(async (value) => { + this.plugin.settings.enableHtml = value; + await this.plugin.saveSettings(); + + AppState.getInstance().markdownParser.set({ + html: this.plugin.settings.enableHtml + }); + }), + ); } } diff --git a/src/wp-rest-client.ts b/src/wp-rest-client.ts index ea94a2d..2b372cc 100644 --- a/src/wp-rest-client.ts +++ b/src/wp-rest-client.ts @@ -133,7 +133,6 @@ export class WpRestClient extends AbstractWordPressClient { }; }) .catch(error => { - console.log(error); return { code: WordPressClientReturnCode.Error, data: this.plugin.i18n.t('error_invalidUser')